@tequila99/githuman 0.2.0 → 0.2.2
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/cli/index.js +2 -0
- package/dist/server/app-version.js +11 -0
- package/dist/server/app.js +2 -0
- package/dist/server/routes/app-info.js +6 -0
- package/dist/server/services/diff.service.js +30 -12
- package/dist/server/services/git.service.js +102 -10
- package/dist/web/assets/AppPage-BeqKILJT.js +1 -0
- package/dist/web/assets/CreateReviewFabButton-wjxKeOL1.js +1 -0
- package/dist/web/assets/IndexPage-CSaToIzA.js +1 -0
- package/dist/web/assets/MainLayout-BRPoh8y0.css +1 -0
- package/dist/web/assets/MainLayout-xQ92tgGe.js +1 -0
- package/dist/web/assets/{QTooltip-DAb5vBzv.js → QTooltip-IUM54Nhj.js} +1 -1
- package/dist/web/assets/{ReviewDetailPage-BlTGnC8d.js → ReviewDetailPage-DdufL7Rh.js} +1 -1
- package/dist/web/assets/ReviewsPage-D8u1IeQ4.js +1 -0
- package/dist/web/assets/StatusSwitcher-7Yqs8azq.css +1 -0
- package/dist/web/assets/StatusSwitcher-CUOMaD34.js +3 -0
- package/dist/web/assets/{repository-store-CBxek7MZ.js → app-info-store-BpeVVjNB.js} +1 -1
- package/dist/web/assets/format-BWCY39oA.js +1 -0
- package/dist/web/assets/i18n-DHrLpaJV.js +1 -0
- package/dist/web/assets/index-DphTOTJs.js +2 -0
- package/dist/web/assets/init-app-5wT4mURp.js +1 -0
- package/dist/web/assets/pinia-CrBjT8X4.js +1 -0
- package/dist/web/assets/theme-CrTbazqt.js +1 -0
- package/dist/web/assets/{use-app-theme-DvzGyhQd.js → use-app-theme-CsAmLZfp.js} +1 -1
- package/dist/web/index.html +1 -1
- package/package.json +1 -1
- package/dist/web/assets/AppPage-VD8mwL62.js +0 -1
- package/dist/web/assets/CreateReviewFabButton-B4Ut5O1Z.js +0 -1
- package/dist/web/assets/IndexPage-_YmeSrRQ.js +0 -1
- package/dist/web/assets/MainLayout-CC5JJvA9.css +0 -1
- package/dist/web/assets/MainLayout-D2-McXhW.js +0 -1
- package/dist/web/assets/QItemSection-DA4jtl1i.js +0 -1
- package/dist/web/assets/QList-BeOKfebe.js +0 -1
- package/dist/web/assets/ReviewsPage-Cu0NzNHQ.js +0 -1
- package/dist/web/assets/StatusSwitcher-BQBbWZPW.js +0 -3
- package/dist/web/assets/StatusSwitcher-CZVJtHnr.css +0 -1
- package/dist/web/assets/format-B_1hRYcb.js +0 -1
- package/dist/web/assets/i18n-D0uDA2bL.js +0 -1
- package/dist/web/assets/index-Dl3zmXcR.js +0 -2
- package/dist/web/assets/init-app-DDJ8U-8D.js +0 -1
- package/dist/web/assets/pinia-C3vnQv9G.js +0 -1
- package/dist/web/assets/theme-CQChVMvK.js +0 -1
package/dist/cli/index.js
CHANGED
|
@@ -6,12 +6,14 @@ import { formatStartupMessage } from "./startup-message.js";
|
|
|
6
6
|
import { parseListArgs, runList } from "./commands/list.js";
|
|
7
7
|
import { parseExportArgs, runExport } from "./commands/export.js";
|
|
8
8
|
import { createFileDatabase } from "../server/db/index.js";
|
|
9
|
+
import { getAppVersion } from "../server/app-version.js";
|
|
9
10
|
/** Opens the reviews DB for the repo at cwd, shared by `list` and `export`. */
|
|
10
11
|
async function openReviewsDb(dbPrefix) {
|
|
11
12
|
const repositoryPath = await resolveRepositoryPath(process.cwd());
|
|
12
13
|
return createFileDatabase(resolveReviewsDbPath(repositoryPath, dbPrefix));
|
|
13
14
|
}
|
|
14
15
|
async function main(argv) {
|
|
16
|
+
console.log(`githuman v${getAppVersion()}`);
|
|
15
17
|
const [command, ...rest] = argv;
|
|
16
18
|
switch (command) {
|
|
17
19
|
case 'serve': {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { fileURLToPath } from 'node:url';
|
|
3
|
+
let cachedVersion;
|
|
4
|
+
export function getAppVersion() {
|
|
5
|
+
if (cachedVersion === undefined) {
|
|
6
|
+
const pkgPath = fileURLToPath(new URL('../../package.json', import.meta.url));
|
|
7
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
8
|
+
cachedVersion = pkg.version;
|
|
9
|
+
}
|
|
10
|
+
return cachedVersion;
|
|
11
|
+
}
|
package/dist/server/app.js
CHANGED
|
@@ -7,6 +7,7 @@ import fastifyStatic from '@fastify/static';
|
|
|
7
7
|
// namespace under NodeNext — cast it back to the plugin function type.
|
|
8
8
|
import fastifySseImport from '@fastify/sse';
|
|
9
9
|
import { healthRoutes } from "./routes/health.js";
|
|
10
|
+
import { appInfoRoutes } from "./routes/app-info.js";
|
|
10
11
|
import { diffRoutes } from "./routes/diff.js";
|
|
11
12
|
import { gitRoutes } from "./routes/git.js";
|
|
12
13
|
import { reviewRoutes } from "./routes/reviews.js";
|
|
@@ -25,6 +26,7 @@ export function buildApp(options = {}) {
|
|
|
25
26
|
const eventBus = options.eventBus ?? createEventBus();
|
|
26
27
|
app.register(fastifySse);
|
|
27
28
|
app.register(healthRoutes);
|
|
29
|
+
app.register(appInfoRoutes);
|
|
28
30
|
app.register(diffRoutes, { repositoryPath });
|
|
29
31
|
app.register(gitRoutes, { repositoryPath });
|
|
30
32
|
app.register(reviewRoutes, { repositoryPath, db, eventBus });
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { diffLines } from 'diff';
|
|
2
|
-
import { assertSafeRef, getFileAtRef, listChangedPaths, listUntrackedPaths } from "./git.service.js";
|
|
2
|
+
import { assertSafeRef, getFileAtRef, getFilesAtRefBatch, listChangedPaths, listUntrackedPaths } from "./git.service.js";
|
|
3
3
|
function splitLines(text) {
|
|
4
4
|
if (text === '')
|
|
5
5
|
return [];
|
|
@@ -99,19 +99,37 @@ export function computeFileDiff(oldContent, newContent, meta) {
|
|
|
99
99
|
const hunks = windowHunks(lines);
|
|
100
100
|
return { ...base, additions, deletions, hunks };
|
|
101
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Reads one diff side's content for every changed path, batching all
|
|
104
|
+
* git-ref reads into a single `git cat-file --batch` process instead of one
|
|
105
|
+
* `git show` per file (see ADR 0019) — `WORKTREE` still reads straight off
|
|
106
|
+
* disk (already process-free) since it isn't a git object. Falls back to
|
|
107
|
+
* per-file `getFileAtRef` if the batch process fails to spawn or crashes
|
|
108
|
+
* mid-read, so a batching problem degrades performance rather than
|
|
109
|
+
* correctness.
|
|
110
|
+
*/
|
|
111
|
+
async function readDiffSide(repoPath, ref, paths) {
|
|
112
|
+
if (ref === 'WORKTREE' || paths.length === 0) {
|
|
113
|
+
return Promise.all(paths.map(path => getFileAtRef(repoPath, ref, path)));
|
|
114
|
+
}
|
|
115
|
+
try {
|
|
116
|
+
return await getFilesAtRefBatch(repoPath, paths.map(path => ({ ref, path })));
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
return Promise.all(paths.map(path => getFileAtRef(repoPath, ref, path)));
|
|
120
|
+
}
|
|
121
|
+
}
|
|
102
122
|
async function buildDiffFiles(repoPath, diffArgs, oldRef, newRef) {
|
|
103
123
|
const changes = await listChangedPaths(repoPath, diffArgs);
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
isBinary: oldFile.isBinary || newFile.isBinary
|
|
114
|
-
});
|
|
124
|
+
const [oldFiles, newFiles] = await Promise.all([
|
|
125
|
+
readDiffSide(repoPath, oldRef, changes.map(change => change.oldPath)),
|
|
126
|
+
readDiffSide(repoPath, newRef, changes.map(change => change.newPath))
|
|
127
|
+
]);
|
|
128
|
+
return changes.map((change, i) => computeFileDiff(oldFiles[i].content, newFiles[i].content, {
|
|
129
|
+
oldPath: change.oldPath,
|
|
130
|
+
newPath: change.newPath,
|
|
131
|
+
status: change.status,
|
|
132
|
+
isBinary: oldFiles[i].isBinary || newFiles[i].isBinary
|
|
115
133
|
}));
|
|
116
134
|
}
|
|
117
135
|
export async function getStagedDiff(repoPath) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { execFile } from 'node:child_process';
|
|
1
|
+
import { execFile, spawn } from 'node:child_process';
|
|
2
2
|
import { promisify } from 'node:util';
|
|
3
3
|
import { readFile } from 'node:fs/promises';
|
|
4
4
|
import { basename, resolve, sep } from 'node:path';
|
|
@@ -30,6 +30,23 @@ export function assertSafeRef(ref) {
|
|
|
30
30
|
throw new Error(`Invalid git ref "${ref}": refs may not start with "-"`);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Builds the `git show`/`cat-file` object spec for a file at a ref (e.g.
|
|
35
|
+
* `HEAD:src/foo.ts`, or `:src/foo.ts` for the INDEX/staged form). Shared by
|
|
36
|
+
* `getFileAtRef` and `getFilesAtRefBatch` so both single-file and batched
|
|
37
|
+
* reads resolve refs identically.
|
|
38
|
+
*/
|
|
39
|
+
function objectSpecFor(ref, path) {
|
|
40
|
+
if (ref !== 'INDEX') {
|
|
41
|
+
assertSafeRef(ref);
|
|
42
|
+
}
|
|
43
|
+
// No `--` before the spec: for the INDEX form (`:path`) it would make git
|
|
44
|
+
// treat the pathspec-looking `:path` as a plain path instead of the
|
|
45
|
+
// special "file staged in the index" syntax, silently changing meaning
|
|
46
|
+
// (falls back to showing HEAD). assertSafeRef above already rules out
|
|
47
|
+
// the injection this would otherwise guard against.
|
|
48
|
+
return ref === 'INDEX' ? `:${path}` : `${ref}:${path}`;
|
|
49
|
+
}
|
|
33
50
|
/**
|
|
34
51
|
* Reads a file's content at a given git ref.
|
|
35
52
|
*
|
|
@@ -54,16 +71,8 @@ export async function getFileAtRef(repoPath, ref, path) {
|
|
|
54
71
|
return { content: '', isBinary: false };
|
|
55
72
|
}
|
|
56
73
|
}
|
|
57
|
-
|
|
58
|
-
assertSafeRef(ref);
|
|
59
|
-
}
|
|
60
|
-
const gitRef = ref === 'INDEX' ? `:${path}` : `${ref}:${path}`;
|
|
74
|
+
const gitRef = objectSpecFor(ref, path);
|
|
61
75
|
try {
|
|
62
|
-
// No `--` before gitRef: for the INDEX form (`:path`) it would make git
|
|
63
|
-
// treat the pathspec-looking `:path` as a plain path instead of the
|
|
64
|
-
// special "file staged in the index" syntax, silently changing meaning
|
|
65
|
-
// (falls back to showing HEAD). assertSafeRef above already rules out
|
|
66
|
-
// the injection this would otherwise guard against.
|
|
67
76
|
const { stdout } = await execFileAsync('git', ['show', gitRef], {
|
|
68
77
|
cwd: repoPath,
|
|
69
78
|
encoding: 'buffer',
|
|
@@ -79,6 +88,89 @@ export async function getFileAtRef(repoPath, ref, path) {
|
|
|
79
88
|
return { content: '', isBinary: false };
|
|
80
89
|
}
|
|
81
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Parses `git cat-file --batch`'s output for `count` requested objects, in
|
|
93
|
+
* request order. Each entry is either `<sha> SP <type> SP <size> LF`
|
|
94
|
+
* followed by exactly `size` bytes of content and a trailing LF, or
|
|
95
|
+
* `<object> SP missing LF` (or another non-numeric-size error line, e.g.
|
|
96
|
+
* `ambiguous`/`notdir`) for a request that didn't resolve — treated the
|
|
97
|
+
* same as a missing file, matching `getFileAtRef`'s catch-all behavior.
|
|
98
|
+
*
|
|
99
|
+
* Parses by the announced byte size, not line-by-line — file content can
|
|
100
|
+
* itself contain arbitrary bytes, including `\n`.
|
|
101
|
+
*/
|
|
102
|
+
function parseCatFileBatchOutput(buffer, count) {
|
|
103
|
+
const results = [];
|
|
104
|
+
let offset = 0;
|
|
105
|
+
for (let i = 0; i < count; i++) {
|
|
106
|
+
const headerEnd = buffer.indexOf(0x0a, offset);
|
|
107
|
+
if (headerEnd === -1) {
|
|
108
|
+
throw new Error('git cat-file --batch: truncated output (missing header)');
|
|
109
|
+
}
|
|
110
|
+
const header = buffer.toString('utf-8', offset, headerEnd);
|
|
111
|
+
offset = headerEnd + 1;
|
|
112
|
+
const size = Number(header.slice(header.lastIndexOf(' ') + 1));
|
|
113
|
+
if (!Number.isInteger(size) || size < 0) {
|
|
114
|
+
results.push({ content: '', isBinary: false });
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
const content = buffer.subarray(offset, offset + size);
|
|
118
|
+
if (content.length < size) {
|
|
119
|
+
throw new Error('git cat-file --batch: truncated output (short content)');
|
|
120
|
+
}
|
|
121
|
+
offset += size + 1; // skip content + its trailing LF
|
|
122
|
+
const isBinary = content.includes(0);
|
|
123
|
+
results.push({
|
|
124
|
+
content: isBinary ? '' : content.toString('utf-8'),
|
|
125
|
+
isBinary
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
return results;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Reads many files' content at git refs in one `git cat-file --batch`
|
|
132
|
+
* process, instead of one `git show` process per file (see ADR 0019) —
|
|
133
|
+
* used by `buildDiffFiles` to avoid spawning `2 × changed files` processes
|
|
134
|
+
* for a single diff. Results come back in the same order as `requests`.
|
|
135
|
+
*
|
|
136
|
+
* Does not accept `ref: 'WORKTREE'` — worktree content isn't a git object;
|
|
137
|
+
* callers read it directly off disk instead (as `getFileAtRef` already
|
|
138
|
+
* does for that ref).
|
|
139
|
+
*/
|
|
140
|
+
export async function getFilesAtRefBatch(repoPath, requests) {
|
|
141
|
+
if (requests.length === 0)
|
|
142
|
+
return [];
|
|
143
|
+
const specs = requests.map(({ ref, path }) => {
|
|
144
|
+
if (ref === 'WORKTREE') {
|
|
145
|
+
throw new Error("getFilesAtRefBatch does not support ref 'WORKTREE' — read worktree files directly instead");
|
|
146
|
+
}
|
|
147
|
+
return objectSpecFor(ref, path);
|
|
148
|
+
});
|
|
149
|
+
return new Promise((resolvePromise, reject) => {
|
|
150
|
+
const child = spawn('git', ['cat-file', '--batch'], { cwd: repoPath });
|
|
151
|
+
const chunks = [];
|
|
152
|
+
let stderr = '';
|
|
153
|
+
child.stdout.on('data', (chunk) => chunks.push(chunk));
|
|
154
|
+
child.stderr.on('data', (chunk) => {
|
|
155
|
+
stderr += chunk.toString('utf-8');
|
|
156
|
+
});
|
|
157
|
+
child.on('error', reject);
|
|
158
|
+
child.on('close', code => {
|
|
159
|
+
if (code !== 0) {
|
|
160
|
+
reject(new Error(`git cat-file --batch exited with code ${code}: ${stderr}`));
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
resolvePromise(parseCatFileBatchOutput(Buffer.concat(chunks), requests.length));
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
reject(err instanceof Error ? err : new Error(String(err)));
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
child.stdin.write(specs.join('\n') + '\n');
|
|
171
|
+
child.stdin.end();
|
|
172
|
+
});
|
|
173
|
+
}
|
|
82
174
|
/**
|
|
83
175
|
* Lists every file path visible at a git ref, for browsing the whole
|
|
84
176
|
* codebase rather than just a diff. `'WORKTREE'` lists the working directory
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,E as t,F as n,H as r,M as i,O as a,S as o,U as s,V as c,Z as l,b as u,g as ee,h as d,l as f,rt as p,s as m,v as h,w as g}from"./runtime-core.esm-bundler-Wxr8ezGp.js";import{D as _,P as te,S as v,f as ne,g as y,j as b,m as x,t as S,w as C,y as w}from"./QBtn-Cf6WtiKt.js";import{d as T,f as E,i as D,u as re}from"./event-BQt_DXaR.js";import{B as ie,D as ae,E as O,G as k,H as A,I as j,J as M,K as N,L as oe,R as se,S as ce,T as P,U as F,V as I,W as le,X as ue,Y as de,Z as fe,_ as pe,ot as L,q as me,v as R,w as he,x as z,z as ge}from"./index-DphTOTJs.js";import{n as _e}from"./vue-i18n.runtime-DSeWNwrW.js";import{_ as ve,c as ye,d as be,f as B,g as V,l as xe,r as H,s as Se,t as U,u as Ce}from"./format-BWCY39oA.js";function W(e){if(e.length<2||e[0]!==`"`||e[e.length-1]!==`"`)return e;let t=e.slice(1,-1),n=[];for(let e=0;e<t.length;e++){let r=t[e];r===`\\`&&/^[0-7]{3}$/.test(t.slice(e+1,e+4))?(n.push(parseInt(t.slice(e+1,e+4),8)),e+=3):r===`\\`&&t[e+1]===`"`?(n.push(34),e+=1):r===`\\`&&t[e+1]===`\\`?(n.push(92),e+=1):n.push((r??``).charCodeAt(0))}return new TextDecoder(`utf-8`).decode(new Uint8Array(n))}function G(e,t){let n=new EventSource(`/api/events`);for(let r of e)n.addEventListener(r,()=>t());return n.addEventListener(`open`,()=>t()),{close:()=>n.close()}}var we=T({props:[`store`,`barStyle`,`verticalBarStyle`,`horizontalBarStyle`],setup(e){return()=>[h(`div`,{class:e.store.scroll.vertical.barClass.value,style:[e.barStyle,e.verticalBarStyle],"aria-hidden":`true`,onMousedown:e.store.onVerticalMousedown}),h(`div`,{class:e.store.scroll.horizontal.barClass.value,style:[e.barStyle,e.horizontalBarStyle],"aria-hidden":`true`,onMousedown:e.store.onHorizontalMousedown}),s(h(`div`,{ref:e.store.scroll.vertical.ref,class:e.store.scroll.vertical.thumbClass.value,style:e.store.scroll.vertical.style.value,"aria-hidden":`true`}),e.store.thumbVertDir),s(h(`div`,{ref:e.store.scroll.horizontal.ref,class:e.store.scroll.horizontal.thumbClass.value,style:e.store.scroll.horizontal.style.value,"aria-hidden":`true`}),e.store.thumbHorizDir)]}}),Te=[`vertical`,`horizontal`],K={vertical:{offset:`offsetY`,scroll:`scrollTop`,dir:`down`,dist:`y`},horizontal:{offset:`offsetX`,scroll:`scrollLeft`,dir:`right`,dist:`x`}},Ee={prevent:!0,mouse:!0,mouseAllDir:!0},De=e=>e>=250?50:Math.ceil(e/5),q=(e,t)=>t?-e:e;function Oe(e,t){return Te.includes(e)?!0:(console.error(`[QScrollArea]: wrong first param of ${t} (vertical/horizontal)`),!1)}var J=T({name:`QScrollArea`,props:{...R,thumbStyle:Object,verticalThumbStyle:Object,horizontalThumbStyle:Object,barStyle:[Array,String,Object],verticalBarStyle:[Array,String,Object],horizontalBarStyle:[Array,String,Object],verticalOffset:{type:Array,default:()=>[0,0]},horizontalOffset:{type:Array,default:()=>[0,0]},contentStyle:[Array,String,Object],contentActiveStyle:[Array,String,Object],delay:{type:[String,Number],default:1e3},visible:{type:Boolean,default:null},tabindex:[String,Number],onScroll:Function},setup(n,{slots:r,emit:i}){let o=l(!1),s=l(!1),u=l(!1),d={vertical:l(0),horizontal:l(0)},f={vertical:{ref:e(null),position:l(0),size:l(0)},horizontal:{ref:e(null),position:l(0),size:l(0)}},{proxy:p}=ee(),_=v(),te=pe(n,_),y=null,b,x=e(null),S=m(()=>`q-scrollarea`+(te()?` q-scrollarea--dark`:``));Object.assign(d,{verticalInner:m(()=>d.vertical.value-n.verticalOffset[0]-n.verticalOffset[1]),horizontalInner:m(()=>d.horizontal.value-n.horizontalOffset[0]-n.horizontalOffset[1])}),f.vertical.percentage=m(()=>{let e=f.vertical.size.value-d.vertical.value;if(e<=0)return 0;let t=U(f.vertical.position.value/e,0,1);return Math.round(t*1e4)/1e4}),f.vertical.thumbHidden=m(()=>!(n.visible===null?u.value:n.visible)&&!o.value&&!s.value||f.vertical.size.value<=d.vertical.value+1),f.vertical.thumbStart=m(()=>n.verticalOffset[0]+f.vertical.percentage.value*(d.verticalInner.value-f.vertical.thumbSize.value)),f.vertical.thumbSize=m(()=>Math.round(U(d.verticalInner.value*d.verticalInner.value/f.vertical.size.value,De(d.verticalInner.value),d.verticalInner.value))),f.vertical.style=m(()=>({...n.thumbStyle,...n.verticalThumbStyle,top:`${f.vertical.thumbStart.value}px`,height:`${f.vertical.thumbSize.value}px`,[_.lang.rtl?`left`:`right`]:`${n.horizontalOffset[+!_.lang.rtl]}px`})),f.vertical.thumbClass=m(()=>`q-scrollarea__thumb q-scrollarea__thumb--v absolute-right`+(f.vertical.thumbHidden.value?` q-scrollarea__thumb--invisible`:``)),f.vertical.barClass=m(()=>`q-scrollarea__bar q-scrollarea__bar--v absolute-right`+(f.vertical.thumbHidden.value?` q-scrollarea__bar--invisible`:``)),f.horizontal.percentage=m(()=>{let e=f.horizontal.size.value-d.horizontal.value;if(e<=0)return 0;let t=U(q(f.horizontal.position.value,_.lang.rtl)/e,0,1);return Math.round(t*1e4)/1e4}),f.horizontal.thumbHidden=m(()=>!(n.visible===null?u.value:n.visible)&&!o.value&&!s.value||f.horizontal.size.value<=d.horizontal.value+1),f.horizontal.thumbStart=m(()=>n.horizontalOffset[+!!_.lang.rtl]+f.horizontal.percentage.value*(d.horizontalInner.value-f.horizontal.thumbSize.value)),f.horizontal.thumbSize=m(()=>Math.round(U(d.horizontalInner.value*d.horizontalInner.value/f.horizontal.size.value,De(d.horizontalInner.value),d.horizontalInner.value))),f.horizontal.style=m(()=>({...n.thumbStyle,...n.horizontalThumbStyle,[_.lang.rtl?`right`:`left`]:`${f.horizontal.thumbStart.value}px`,width:`${f.horizontal.thumbSize.value}px`,bottom:`${n.verticalOffset[1]}px`})),f.horizontal.thumbClass=m(()=>`q-scrollarea__thumb q-scrollarea__thumb--h absolute-bottom`+(f.horizontal.thumbHidden.value?` q-scrollarea__thumb--invisible`:``)),f.horizontal.barClass=m(()=>`q-scrollarea__bar q-scrollarea__bar--h absolute-bottom`+(f.horizontal.thumbHidden.value?` q-scrollarea__bar--invisible`:``));let C=m(()=>n.tabindex===void 0?f.vertical.size.value>d.vertical.value+1||f.horizontal.size.value>d.horizontal.value+1?0:void 0:n.tabindex),w=m(()=>f.vertical.thumbHidden.value&&f.horizontal.thumbHidden.value?n.contentStyle:n.contentActiveStyle);function T(){return{verticalPosition:f.vertical.position.value,verticalPercentage:f.vertical.percentage.value,verticalSize:f.vertical.size.value,verticalContainerSize:d.vertical.value,verticalContainerInnerSize:d.verticalInner.value,horizontalPosition:f.horizontal.position.value,horizontalPercentage:f.horizontal.percentage.value,horizontalSize:f.horizontal.size.value,horizontalContainerSize:d.horizontal.value,horizontalContainerInnerSize:d.horizontalInner.value}}let E=L(()=>{let e=T();e.ref=p,i(`scroll`,e)},0);function D(e,t,n){Oe(e,`setScrollPosition`)&&(e===`vertical`?oe:j)(x.value,t,n)}function re({height:e,width:t}){let n=!1;d.vertical.value!==e&&(d.vertical.value=e,n=!0),d.horizontal.value!==t&&(d.horizontal.value=t,n=!0),n&&A()}function ie({position:e}){let t=!1;f.vertical.position.value!==e.top&&(f.vertical.position.value=e.top,t=!0),f.horizontal.position.value!==e.left&&(f.horizontal.position.value=e.left,t=!0),t&&A()}function ae({height:e,width:t}){f.horizontal.size.value!==t&&(f.horizontal.size.value=t,A()),f.vertical.size.value!==e&&(f.vertical.size.value=e,A())}function O(e,t){let n=f[t];if(e.isFirst){if(n.thumbHidden.value)return;b=t===`horizontal`?q(n.position.value,_.lang.rtl):n.position.value,s.value=!0}else if(!s.value)return;e.isFinal&&(s.value=!1);let r=K[t],i=(n.size.value-d[t].value)/(d[t+`Inner`].value-n.thumbSize.value),a=e.distance[r.dist],o=(e.direction===r.dir?1:-1)*(t===`horizontal`&&_.lang.rtl?-1:1),c=b+o*a*i;M(t===`horizontal`?q(c,_.lang.rtl):c,t)}function k(e,t){let r=f[t];if(!r.thumbHidden.value){let i=t===`horizontal`&&_.lang.rtl,a=t===`vertical`?n.verticalOffset[0]:n.horizontalOffset[+!!i],o=(i?d.horizontal.value-e.offsetX:e[K[t].offset])-a,s=r.thumbStart.value-a;if(o<s||o>s+r.thumbSize.value){let e=o-r.thumbSize.value/2,n=U(e/(d[t+`Inner`].value-r.thumbSize.value),0,1);M(i?q(n*Math.max(0,r.size.value-d[t].value),_.lang.rtl):n*Math.max(0,r.size.value-d[t].value),t)}r.ref.value!==null&&r.ref.value.dispatchEvent(new MouseEvent(e.type,e))}}function A(){o.value=!0,y!==null&&clearTimeout(y),y=setTimeout(()=>{y=null,o.value=!1},n.delay),n.onScroll!==void 0&&E()}function M(e,t){x.value[K[t].scroll]=e}let N=null;function se(){N!==null&&clearTimeout(N),N=setTimeout(()=>{N=null,u.value=!0},_.platform.is.ios?50:0)}function ce(){N!==null&&(clearTimeout(N),N=null),u.value=!1}let P=null;c(()=>_.lang.rtl,(e,t)=>{x.value!==null&&j(x.value,q(q(f.horizontal.position.value,t),e))}),a(()=>{P={top:f.vertical.position.value,left:f.horizontal.position.value}}),g(()=>{if(P===null)return;let e=x.value;e!==null&&(j(e,P.left),oe(e,P.top))}),t(E.cancel),Object.assign(p,{getScrollTarget:()=>x.value,getScroll:T,getScrollPosition:()=>({top:f.vertical.position.value,left:f.horizontal.position.value}),getScrollPercentage:()=>({top:f.vertical.percentage.value,left:f.horizontal.percentage.value}),setScrollPosition:D,setScrollPercentage(e,t,n){if(!Oe(e,`setScrollPercentage`))return;let r=t*(f[e].size.value-d[e].value);D(e,e===`horizontal`?q(r,_.lang.rtl):r,n)}});let F={scroll:f,thumbVertDir:[[H,e=>{O(e,`vertical`)},void 0,{vertical:!0,...Ee}]],thumbHorizDir:[[H,e=>{O(e,`horizontal`)},void 0,{horizontal:!0,...Ee}]],onVerticalMousedown(e){k(e,`vertical`)},onHorizontalMousedown(e){k(e,`horizontal`)}};return()=>h(`div`,{class:S.value,onMouseenter:se,onMouseleave:ce},[h(`div`,{ref:x,class:`q-scrollarea__container scroll relative-position fit hide-scrollbar`,tabindex:C.value},[h(`div`,{class:`q-scrollarea__content absolute`,style:w.value},ne(r.default,[h(V,{debounce:0,onResize:ae})])),h(ve,{axis:`both`,onScroll:ie})]),h(V,{debounce:0,onResize:re}),h(we,{store:F,barStyle:n.barStyle,verticalBarStyle:n.verticalBarStyle,horizontalBarStyle:n.horizontalBarStyle})])}}),Y=d({__name:`CancelButton`,setup(e){let{t}=_e();return(e,n)=>(i(),f(S,o({padding:`2px 8px`},e.$attrs,{dense:``,flat:``,color:`warning`,label:p(t)(`reviews.comments.cancel`)}),null,16,[`label`]))}}),ke=d({__name:`CreateButton`,setup(e){let{t}=_e();return(e,n)=>(i(),f(S,o({padding:`2px 8px`,label:p(t)(`reviews.create.submit`)},e.$attrs,{unelevated:``,dense:``,color:`accent`}),null,16,[`label`]))}}),Ae={hover:Boolean,hoverDelay:{type:Number,default:0},hoverHideDelay:{type:Number,default:150}};function je({props:e,canShow:t,show:n,canHide:r,hide:i}){let{removeTimeout:a,registerTimeout:o}=fe();function s(r){e.hover===!0&&r.pointerType!==`touch`&&(a(),t(r)&&(e.hoverDelay>0?o(()=>{n(r)},e.hoverDelay):n(r)))}function c(t){a(),r(t)&&o(()=>{i(t)},e.hoverHideDelay)}function l(t){e.hover===!0&&t.pointerType!==`touch`&&c(t)}function u(e){e.pointerType!==`touch`&&a()}return{clearHoverTimer:a,hoverShow:s,hoverHide:l,scheduleHoverHide:c,onHoverContentEnter:u}}var X=null,{notPassiveCapture:Z,passiveCapture:Me}=D,Q=[];function $(e){X!==null&&(clearTimeout(X),X=null);let t=e.target;if(t===void 0||t.nodeType===8||t.classList.contains(`no-pointer-events`))return;let n=null,r=!1;for(let e=F.length-1;e>=0;e--){let t=F[e].$,i=t.type.name;if(i!==`QTooltip`){if(i===`QDialog`){if(t.props.seamless!==!0){if(r===!1)return;n=new Set(F.slice(e+1).map(e=>e.contentEl));break}continue}r=!0}}for(let r=Q.length-1;r>=0;r--){let i=Q[r];if(n!==null&&!n.has(i.innerRef.value))return;if((i.anchorEl.value===null||!i.anchorEl.value.contains(t)&&!z(i.anchorEl.value,t))&&(t===document.body||i.innerRef.value!==null&&!i.innerRef.value.contains(t)&&!z(i.innerRef.value,t)))e.qClickOutside=!0,i.onClickOutside(e);else return}}function Ne(e){e.pointerType!==`touch`&&(X!==null&&clearTimeout(X),X=setTimeout(()=>{X=null,$(e)},0))}function Pe(e){Q.push(e),Q.length===1&&(document.addEventListener(`pointerdown`,Ne,Me),document.addEventListener(`mousedown`,$,Z),document.addEventListener(`touchstart`,$,Z))}function Fe(e){let t=Q.indexOf(e);t!==-1&&(Q.splice(t,1),Q.length===0&&(X!==null&&(clearTimeout(X),X=null),document.removeEventListener(`pointerdown`,Ne,Me),document.removeEventListener(`mousedown`,$,Z),document.removeEventListener(`touchstart`,$,Z)))}var Ie=`a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex^="-"])`,Le=T({name:`QMenu`,inheritAttrs:!1,props:{...B,...M,...R,...k,persistent:Boolean,autoClose:Boolean,separateClosePopup:Boolean,noEscDismiss:Boolean,noRouteDismiss:Boolean,noRefocus:Boolean,noFocus:Boolean,fit:Boolean,cover:Boolean,square:Boolean,anchor:{type:String,validator:Ce},self:{type:String,validator:Ce},offset:{type:Array,validator:xe},touchPosition:Boolean,...Ae,maxHeight:{type:String,default:null},maxWidth:{type:String,default:null}},emits:[...me,`click`,`escapeKey`],setup(n,{slots:r,emit:i,attrs:a}){let o=null,s,u=!1,d=ee(),{proxy:f}=d,p=v(),g=e(null),_=l(!1),ne=m(()=>!n.persistent&&!n.noRouteDismiss),b=pe(n,p),{registerTick:S,removeTick:C}=de(),{registerTransitionEnd:T}=ue(n),{transitionProps:E,transitionStyle:D}=le(n),{anchorEl:k,canShow:j,anchorEvents:M}=be({showing:_,getPopupRole:()=>a.role}),{show:oe,hide:F}=N({showing:_,canShow:j,canHide(e){return u&&!_e.value?e?.type!==`click`:!0},handleShow:K,handleHide:Ee,handleRouteChange:De,hideOnRouteChange:ne,processOnMount:!0}),{clearHoverTimer:I,hoverShow:fe,scheduleHoverHide:L,onHoverContentEnter:me}=je({props:n,canShow:()=>!_.value,show:oe,canHide:e=>_.value&&!we(e.relatedTarget),hide:F});Object.assign(M,{hoverShow:fe,hoverHide:Te});let{showPortal:R,hidePortal:z,portalIsAccessible:_e,renderPortal:ve}=se(d,g,Ae,`menu`),B={anchorEl:k,innerRef:g,onClickOutside(e){if(!n.persistent&&_.value)return F(e),(e.type===`touchstart`||e.target.classList.contains(`q-dialog__backdrop`))&&re(e),!0}},V=m(()=>ye(n.anchor||(n.cover?`center middle`:`bottom start`),p.lang.rtl)),xe=m(()=>n.cover?V.value:ye(n.self||`top start`,p.lang.rtl)),H=Se({props:n,$q:p,anchorEl:k,innerRef:g,showing:_,anchorOrigin:V,selfOrigin:xe}),U=m(()=>`q-menu scroll`+(H.viaCssAnchor?``:` q-position-engine`)+(n.square?` q-menu--square`:``)+(b()?` q-menu--dark q-dark`:``)),Ce=m(()=>n.autoClose?{onClick:Oe}:{}),W=m(()=>_.value&&!n.persistent);c(W,e=>{e?(O(Y),Pe(B)):(ae(Y),Fe(B))});function G(){ge(()=>{let e=g.value;e&&e.contains!==void 0&&!e.contains(document.activeElement)&&(e=e.querySelector(`[autofocus][tabindex], [data-autofocus][tabindex]`)||e.querySelector(`[autofocus] [tabindex], [data-autofocus] [tabindex]`)||e.querySelector(`[autofocus], [data-autofocus]`)||e,e.focus({preventScroll:!0}))})}function we(e){if(e==null)return!1;if(k.value!==null&&k.value.contains(e)||g.value!==null&&g.value.contains(e))return!0;let t=A(e);for(;t!=null;){if(t===f)return!0;t=w(t)}return!1}function Te(e){if(e.pointerType===`touch`)return;L(e);let t=w(f);for(;t!=null;)t.$options.name===`QMenu`&&t.$props.hover===!0&&t.__qHoverHide?.(e),t=w(t)}function K(e){u=n.hover&&e?.type===`pointerenter`,I(),o=n.noRefocus||u?null:document.activeElement,he(J),R(!1,u),H.handleShow(!u&&(n.touchPosition||n.contextMenu)?e:void 0),!n.noFocus&&!u&&document.activeElement.blur(),S(()=>{H.handleTick(),!n.noFocus&&!u&&G()}),T(()=>{p.platform.is.ios&&(s=n.autoClose,g.value.click()),H.viaCssAnchor||H.track(),R(!0),i(`show`,e)})}function Ee(e){if(u=!1,C(),z(),q(!0),o!==null&&(e===void 0||!e.qClickOutside)){let t=(e?.type.indexOf(`key`)===0?o.closest(`[tabindex]:not([tabindex^="-"])`):void 0)||o;o=null,ge(()=>{t.isConnected&&t.focus({preventScroll:!0})})}T(()=>{z(!0),H.releaseAnchor(!1),i(`hide`,e)})}function De(){o=null}function q(e){I(),H.releaseAnchor(e),(e||_.value)&&(P(J),Fe(B),ae(Y)),e||(o=null)}function Oe(e){s?s=!1:(ie(f,e),i(`click`,e))}function J(e){W.value&&!n.noFocus&&!u&&!y(g.value,e.target)&&!ce(g.value,e.target)&&G()}function Y(e){n.noEscDismiss||(i(`escapeKey`),F(e))}function ke(e){if(e.keyCode!==9||e.defaultPrevented||!W.value||g.value===null)return;let t=g.value,n=t.querySelectorAll(Ie),r=n.length===0?null:n[e.shiftKey?0:n.length-1];(r===null||document.activeElement===r||e.shiftKey&&document.activeElement===t)&&(P(J),o!==null&&o.isConnected&&(o.closest(`[tabindex]:not([tabindex^="-"])`)||o).focus({preventScroll:!0}),o=null,F(e))}function Ae(){return h(te,E(),()=>_.value?h(`div`,{...a,ref:g,tabindex:-1,onKeydown:[].concat(a.onKeydown||[],ke),...n.hover?{onPointerenter:[].concat(a.onPointerenter||[],me),onPointerleave:[].concat(a.onPointerleave||[],Te)}:{},class:[U.value,a.class],style:[a.style,D(),H.positionStyle.value],...Ce.value},x(r.default)):null)}return t(()=>{q(!1)}),Object.assign(f,{focus:G,updatePosition:H.updatePosition}),f.__qHoverHide=L,ve}});function Re(e){return e===!1?0:e===!0||e===void 0?1:Number.parseInt(e,10)||0}function ze(e){let t=e.currentTarget,n=t.__qclosepopup;n!==0&&setTimeout(()=>{let r=A(t);r!==void 0&&I(r,e,n)},0)}function Be(e){b(e,13)&&ze(e)}var Ve=E({name:`close-popup`,beforeMount(e,{value:t}){e.__qclosepopup=Re(t),e.addEventListener(`click`,ze),e.addEventListener(`keyup`,Be)},updated(e,{value:t,oldValue:n}){t!==n&&e.__qclosepopup!==void 0&&(e.__qclosepopup=Re(t))},beforeUnmount(e){e.__qclosepopup!==void 0&&(e.removeEventListener(`click`,ze),e.removeEventListener(`keyup`,Be),e.__qclosepopup=void 0)}}),He=T({name:`QPage`,props:{padding:Boolean,styleFn:Function},setup(e,{slots:t}){let n=v(),r=u(_,C);if(r===C)return console.error(`QPage needs to be a deep child of QLayout`),C;if(u(`_q_pc_`,C)===C)return console.error(`QPage needs to be child of QPageContainer`),C;let i=m(()=>{let t=(r.header.space?r.header.size:0)+(r.footer.space?r.footer.size:0);if(typeof e.styleFn==`function`){let i=r.isContainer.value?r.containerHeight.value:n.screen.height;return e.styleFn(t,i)}return{minHeight:r.isContainer.value?r.containerHeight.value-t+`px`:n.screen.height===0?t===0?`100vh`:`calc(100vh - ${t}px)`:n.screen.height-t+`px`}}),a=m(()=>`q-page${e.padding?` q-layout-padding`:``}`);return()=>h(`main`,{class:a.value,style:i.value},x(t.default))}}),Ue=d({__name:`AppPage`,setup(e){function t(e,t){return{height:`${t-e}px`}}return(e,a)=>(i(),f(He,{"style-fn":t},{default:r(()=>[n(e.$slots,`default`)]),_:3}))}});export{Ae as a,J as c,je as i,G as l,Ve as n,ke as o,Le as r,Y as s,Ue as t,W as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,A as t,H as n,M as r,N as i,S as a,U as o,V as s,Z as c,b as l,c as u,d,g as f,h as p,k as m,l as h,m as g,r as _,rt as v,s as y,v as b,x,yt as S,z as C}from"./runtime-core.esm-bundler-Wxr8ezGp.js";import{C as w,D as T,L as E,S as D,T as ee,c as O,f as te,m as k,t as A,w as j}from"./QBtn-Cf6WtiKt.js";import{d as M}from"./event-BQt_DXaR.js";import{J as N,K as ne,d as re,g as P,h as F,m as ie,n as I,q as ae,y as oe}from"./index-DphTOTJs.js";import{n as se}from"./vue-i18n.runtime-DSeWNwrW.js";import{n as L,r as R}from"./pinia-DK4OjQ7o.js";import{a as z,i as B,n as ce,r as V,t as H}from"./client-De34x_P_.js";import{r as U}from"./format-BWCY39oA.js";import{a as W,i as G,l as le,n as ue,o as de,s as fe,u as K}from"./AppPage-BeqKILJT.js";function q(e){return{...e,oldPath:K(e.oldPath),newPath:K(e.newPath)}}function J(e,t){let n=new Map(e.map(e=>[e.newPath||e.oldPath,e]));return t.map(e=>{let t=n.get(e.newPath||e.oldPath);return t&&JSON.stringify(t)===JSON.stringify(e)?t:e})}var Y=L(`diff`,()=>{let e=c([]),t=c([]),n=c(!1),r=c(null),i=y(()=>[...e.value,...t.value].map(e=>e.newPath||e.oldPath));async function a(){n.value=!0,r.value=null;try{let[n,r]=await Promise.all([V(`/api/diff/staged`),V(`/api/diff/unstaged`)]);e.value=J(e.value,n.map(q)),t.value=J(t.value,r.map(q))}catch(n){e.value=[],t.value=[],r.value=n instanceof Error?n.message:String(n)}finally{n.value=!1}}return{stagedFiles:e,unstagedFiles:t,loading:n,error:r,changedPaths:i,fetchDiff:a}}),X=L(`active-review`,()=>{let e=c(null),t=c([]),n=c(!1),r=y(()=>{let e=new Map;for(let n of t.value){let t=e.get(n.filePath);t?t.push(n):e.set(n.filePath,[n])}return e});async function i(){n.value=!0;try{let n=(await V(`/api/reviews`)).filter(e=>e.status===`in_progress`).sort((e,t)=>t.createdAt.localeCompare(e.createdAt));e.value=n[0]??null,t.value=e.value?await V(`/api/reviews/${e.value.id}/comments`):[]}finally{n.value=!1}}function a(n){e.value=n,t.value=[]}async function o(t){e.value&&(await B(`/api/reviews/${e.value.id}`,{status:t}),await i())}async function s(n){if(!e.value)throw Error(`No active review`);let r=await z(`/api/reviews/${e.value.id}/comments`,n);return t.value=[...t.value,r],r}async function l(e,n){let r=await B(`/api/comments/${e}`,{content:n});t.value=t.value.map(t=>t.id===e?r:t)}async function u(e){await ce(`/api/comments/${e}`),t.value=t.value.filter(t=>t.id!==e)}async function d(e){let n=await B(`/api/comments/${e}/resolve`);t.value=t.value.map(t=>t.id===e?n:t)}async function f(e){let n=await B(`/api/comments/${e}/unresolve`);t.value=t.value.map(t=>t.id===e?n:t)}return{activeReview:e,comments:t,loading:n,commentsByFile:r,refresh:i,setActiveReview:a,setStatus:o,createComment:s,editComment:l,deleteComment:u,resolveComment:d,unresolveComment:f}}),pe=p({__name:`SearchInput`,props:{modelValue:{},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=C(e,`modelValue`);return(e,i)=>(r(),h(I,a({modelValue:t.value,"onUpdate:modelValue":i[0]||=e=>t.value=e},e.$attrs,{dense:``,outlined:``,clearable:``}),{prepend:n(()=>[g(O,{name:`search`,size:`xs`})]),_:1},16,[`modelValue`]))}}),me=M({name:`QItemLabel`,props:{overline:Boolean,caption:Boolean,header:Boolean,lines:[Number,String]},setup(e,{slots:t}){let n=y(()=>Number.parseInt(e.lines,10)),r=y(()=>`q-item__label`+(e.overline?` q-item__label--overline text-overline`:``)+(e.caption?` q-item__label--caption text-caption`:``)+(e.header?` q-item__label--header`:``)+(n.value===1?` ellipsis`:``)),i=y(()=>e.lines!==void 0&&n.value>1?{overflow:`hidden`,display:`-webkit-box`,"-webkit-box-orient":`vertical`,"-webkit-line-clamp":n.value}:null);return()=>b(`div`,{style:i.value,class:r.value},k(t.default))}}),he=[`top`,`right`,`bottom`,`left`],Z={type:{type:String,default:`a`},outline:Boolean,push:Boolean,flat:Boolean,unelevated:Boolean,color:String,textColor:String,glossy:Boolean,square:Boolean,padding:String,label:{type:[String,Number],default:``},labelPosition:{type:String,default:`right`,validator:e=>he.includes(e)},externalLabel:Boolean,hideLabel:{type:Boolean},labelClass:[Array,String,Object],labelStyle:[Array,String,Object],disable:Boolean,tabindex:[Number,String]},ge=[`label`],_e=Object.keys(Z).filter(e=>!ge.includes(e)&&A.props[e]!==void 0);function ve(e){let t={};for(let n of _e)t[n]=e[n];return t}function ye(e,t){return{formClass:y(()=>`q-fab--form-${e.square?`square`:`rounded`}`),stacked:y(()=>!e.externalLabel&&[`top`,`bottom`].includes(e.labelPosition)),labelProps:y(()=>{if(e.externalLabel){let n=e.hideLabel===null?!t.value:e.hideLabel;return{action:`push`,data:{class:[e.labelClass,`q-fab__label q-tooltip--style q-fab__label--external q-fab__label--external-${e.labelPosition}`+(n?` q-fab__label--external-hidden`:``)],style:e.labelStyle}}}return{action:[`left`,`top`].includes(e.labelPosition)?`unshift`:`push`,data:{class:[e.labelClass,`q-fab__label q-fab__label--internal q-fab__label--internal-${e.labelPosition}`+(e.hideLabel?` q-fab__label--internal-hidden`:``)],style:e.labelStyle}}})}}var be=[`up`,`right`,`down`,`left`],xe=[`left`,`center`,`right`],Q=180,Se=M({name:`QFab`,props:{...Z,...N,icon:String,activeIcon:String,hideIcon:Boolean,hideLabel:{...Z.hideLabel,default:null},direction:{type:String,default:`right`,validator:e=>be.includes(e)},...W,persistent:Boolean,stagger:{type:Number,default:40},verticalActionsAlign:{type:String,default:`center`,validator:e=>xe.includes(e)}},emits:ae,setup(t,{slots:n}){let r=e(null),a=c(t.modelValue===!0),o=re(),l=D(),{formClass:u,stacked:d,labelProps:f}=ye(t,a),p=y(()=>!t.persistent),{show:m,hide:h,toggle:g}=ne({showing:a,hideOnRouteChange:p}),_=0,{clearHoverTimer:v,hoverShow:x,hoverHide:S}=G({props:t,canShow:()=>!a.value,show:e=>{_=Date.now(),m(e)},canHide:()=>a.value,hide:h});s(a,v);function C(e){a.value&&Date.now()-_<Q||g(e)}let w=y(()=>({opened:a.value})),T=y(()=>`q-fab z-fab row inline justify-center q-fab--align-${t.verticalActionsAlign} ${u.value}`+(a.value?` q-fab--opened`:` q-fab--closed`)),E=y(()=>`q-fab__actions flex no-wrap inline q-fab__actions--${t.direction} q-fab__actions--${a.value?`opened`:`closed`}`),j=y(()=>t.hover?{onPointerenter:x,onPointerleave:S}:{}),M=y(()=>{let e={id:o.value,style:`--q-fab-stagger: ${t.stagger}ms`};return a.value||(e[`aria-hidden`]=`true`),e}),N=y(()=>`q-fab__icon-holder q-fab__icon-holder--${a.value?`opened`:`closed`}`);function P(e,r){let i=n[e],a=`q-fab__${e} absolute-full`;return i===void 0?b(O,{class:a,name:t[r]||l.iconSet.fab[r]}):b(`div`,{class:a},i(w.value))}function F(){let e=[];return t.hideIcon||e.push(b(`div`,{class:N.value},[P(`icon`,`icon`),P(`active-icon`,`activeIcon`)])),(t.label!==``||n.label!==void 0)&&e[f.value.action](b(`div`,f.value.data,n.label===void 0?[t.label]:n.label(w.value))),te(n.tooltip,e)}return i(ee,{showing:a,onChildClick(e){h(e),e?.qAvoidFocus!==!0&&r.value?.$el.focus()}}),()=>b(`div`,{class:T.value,...j.value},[b(A,{ref:r,class:u.value,...ve(t),noWrap:!0,stack:d.value,noCaps:!0,fab:!0,"aria-expanded":a.value?`true`:`false`,"aria-controls":o.value,onClick:C},F),b(`div`,{class:E.value,...M.value},k(n.default))])}}),Ce={position:{type:String,default:`bottom-right`,validator:e=>[`top-right`,`top-left`,`bottom-right`,`bottom-left`,`top`,`right`,`bottom`,`left`].includes(e)},offset:{type:Array,validator:e=>e.length===2},expand:Boolean};function we(){let{props:e}=f(),t=D(),n=l(T,j);if(n===j)return console.error(`QPageSticky needs to be child of QLayout`),j;let r=y(()=>{let t=e.position;return{top:t.includes(`top`),right:t.includes(`right`),bottom:t.includes(`bottom`),left:t.includes(`left`),vertical:t===`top`||t===`bottom`,horizontal:t===`left`||t===`right`}}),i=y(()=>n.header.offset),a=y(()=>n.right.offset),o=y(()=>n.footer.offset),s=y(()=>n.left.offset),c=y(()=>{let n=0,c=0,l=r.value,u=t.lang.rtl?-1:1;l.top&&i.value!==0?c=`${i.value}px`:l.bottom&&o.value!==0&&(c=`${-o.value}px`),l.left&&s.value!==0?n=`${u*s.value}px`:l.right&&a.value!==0&&(n=`${-u*a.value}px`);let d={transform:`translate(${n}, ${c})`};return e.offset&&(d.margin=`${e.offset[1]}px ${e.offset[0]}px`),l.vertical?(s.value!==0&&(d[t.lang.rtl?`right`:`left`]=`${s.value}px`),a.value!==0&&(d[t.lang.rtl?`left`:`right`]=`${a.value}px`)):l.horizontal&&(i.value!==0&&(d.top=`${i.value}px`),o.value!==0&&(d.bottom=`${o.value}px`)),d}),u=y(()=>`q-page-sticky row flex-center fixed-${e.position} q-page-sticky--${e.expand?`expand`:`shrink`}`);function d(t){let n=k(t.default);return b(`div`,{class:u.value,style:c.value},e.expand?n:[b(`div`,n)])}return{$layout:n,getStickyContent:d}}var Te=M({name:`QPageSticky`,props:Ce,setup(e,{slots:t}){let{getStickyContent:n}=we();return()=>n(t)}});function Ee(e){let t=new URLSearchParams;e.search&&t.set(`search`,e.search),e.createdFrom&&t.set(`createdFrom`,e.createdFrom),e.createdTo&&t.set(`createdTo`,e.createdTo),e.files&&e.files.length>0&&t.set(`files`,e.files.join(`,`));let n=t.toString();return n?`?${n}`:``}var $=L(`reviews`,()=>{let e=c([]),t=c(!1),n=c(null);async function r(r={}){t.value=!0,n.value=null;try{e.value=await V(`/api/reviews${Ee(r)}`)}catch(t){e.value=[],n.value=t instanceof Error?t.message:String(t)}finally{t.value=!1}}async function i(t){let n=await z(`/api/reviews`,t);return e.value=[n,...e.value],n}return{reviews:e,loading:t,error:n,fetchReviews:r,createReview:i}}),De={class:`text-h6`},Oe=w(p({__name:`ReviewCreateDialog`,props:{modelValue:{type:Boolean,required:!0},modelModifiers:{}},emits:x([`created`,`hide`],[`update:modelValue`]),setup(e,{emit:t}){let i=C(e,`modelValue`),a=t,{t:s}=se(),l=$(),d=c(``),f=c(!1),p=c(null);function m(){d.value=``,f.value=!1,p.value=null}async function _(){f.value=!0,p.value=null;try{let e=d.value.trim(),t=await l.createReview(e?{name:e}:{});i.value=!1,m(),a(`created`,t)}catch(e){p.value=e instanceof H||e instanceof Error?e.message:String(e)}finally{f.value=!1}}function y(){m(),a(`hide`)}return(e,t)=>(r(),h(oe,{modelValue:i.value,"onUpdate:modelValue":t[1]||=e=>i.value=e,onHide:y},{default:n(()=>[g(P,{class:`review-create-dialog`},{default:n(()=>[g(F,null,{default:n(()=>[u(`div`,De,S(v(s)(`reviews.create.title`)),1)]),_:1}),g(F,{class:`q-gutter-y-md`},{default:n(()=>[g(I,{modelValue:d.value,"onUpdate:modelValue":t[0]||=e=>d.value=e,dense:``,outlined:``,label:v(s)(`reviews.create.nameLabel`),hint:v(s)(`reviews.create.nameHint`),error:!!p.value,"error-message":p.value??void 0,onKeyup:E(_,[`enter`])},null,8,[`modelValue`,`label`,`hint`,`error`,`error-message`])]),_:1}),g(ie,{align:`right`},{default:n(()=>[o(g(fe,null,null,512),[[ue]]),g(de,{loading:f.value,onClick:_},null,8,[`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]))}}),[[`__scopeId`,`data-v-c9b736c2`]]),ke=p({__name:`CreateReviewFabButton`,emits:[`created`],setup(e,{emit:i}){let a=i,s=X(),l=Y(),{activeReview:u}=R(s),{changedPaths:f}=R(l),p=c(!1),h=c(!1),v=c([18,18]),b=c(!1),x=y(()=>f.value.length===0||u.value!==null);function S(){l.fetchDiff(),s.refresh()}m(S);let C=le([`files:changed`,`review:created`,`review:updated`,`review:deleted`],S);t(()=>C.close());function w(e){b.value=e.isFirst!==!0&&e.isFinal!==!0,v.value=[v.value[0]-(e.delta?.x??0),v.value[1]-(e.delta?.y??0)]}function T(e){s.setActiveReview(e),a(`created`,e)}return(e,t)=>(r(),d(_,null,[g(Te,{position:`bottom-right`,offset:v.value},{default:n(()=>[o(g(Se,{modelValue:h.value,"onUpdate:modelValue":t[0]||=e=>h.value=e,icon:`add`,color:`accent`,disable:x.value||b.value,onClick:t[1]||=e=>p.value=!0},null,8,[`modelValue`,`disable`]),[[U,w,void 0,{prevent:!0,mouse:!0}]])]),_:1},8,[`offset`]),g(Oe,{modelValue:p.value,"onUpdate:modelValue":t[2]||=e=>p.value=e,onCreated:T,onHide:t[3]||=e=>h.value=!1},null,8,[`modelValue`])],64))}});export{X as a,pe as i,$ as n,Y as o,me as r,ke as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,A as t,C as n,E as r,F as i,H as a,I as o,M as s,N as c,O as l,P as u,U as d,V as f,Z as p,_t as m,b as h,c as g,d as _,g as v,h as y,k as b,l as x,m as S,p as C,q as w,r as T,rt as E,s as D,u as O,v as k,vt as A,w as ee,x as j,yt as M,z as N}from"./runtime-core.esm-bundler-Wxr8ezGp.js";import{A as te,C as P,N as ne,R as re,S as F,c as I,f as ie,j as ae,m as oe,o as L,s as R,t as z,w as B}from"./QBtn-Cf6WtiKt.js";import{d as V,u as se}from"./event-BQt_DXaR.js";import{Y as ce,Z as le,_ as H,d as U,f as ue,it as de,p as W,t as G,v as fe}from"./index-DphTOTJs.js";import{n as K}from"./vue-i18n.runtime-DSeWNwrW.js";import{n as pe,r as q}from"./pinia-DK4OjQ7o.js";import{a as me,r as he}from"./client-De34x_P_.js";import{a as J,g as ge,h as _e,o as Y,r as ve}from"./format-BWCY39oA.js";import{n as ye,t as X}from"./QTooltip-IUM54Nhj.js";import{c as Z,l as Q,t as be,u as xe}from"./AppPage-BeqKILJT.js";import{a as Se,i as Ce,o as we,r as Te,t as Ee}from"./CreateReviewFabButton-wjxKeOL1.js";import{a as De,c as $,i as Oe,l as ke,n as Ae,o as je,r as Me,s as Ne,t as Pe}from"./StatusSwitcher-CUOMaD34.js";function Fe(e){return e.toSorted((e,t)=>e.type===t.type?e.name.localeCompare(t.name):e.type===`directory`?-1:1).map(e=>({...e,children:e.children?Fe(e.children):void 0}))}function Ie(e,t){let n=[];for(let r of e){let e=r.split(`/`),i=n;for(let n=0;n<e.length;n++){let a=e[n];if(!a)continue;let o=n===e.length-1,s=e.slice(0,n+1).join(`/`),c=i.find(e=>e.name===a);c||(c={name:a,path:s,type:o?`file`:`directory`,isChanged:o?t.has(r):!1,children:o?void 0:[]},i.push(c)),!o&&c.children&&(i=c.children)}}return Fe(n)}function Le(e,t){if(!t.trim())return e;let n=t.toLowerCase(),r=e=>{if(e.type===`file`)return e.path.toLowerCase().includes(n)?e:null;let t=e.children?.map(r).filter(e=>e!==null);return t&&t.length>0?{...e,children:t}:e.name.toLowerCase().includes(n)?e:null};return e.map(r).filter(e=>e!==null)}function Re(){let e=p([]),t=p(!1),n=p(null);async function r(r,i=[]){t.value=!0,n.value=null;try{let t=await he(`/api/git/tree/${encodeURIComponent(r)}`);e.value=Ie(t.files.map(xe),new Set(i))}catch(t){n.value=t instanceof Error?t.message:String(t),e.value=[]}finally{t.value=!1}}return{tree:e,loading:t,error:n,fetchTree:r}}function ze(e){return e.type===`file`?e.isChanged:e.children?.some(ze)??!1}var Be=pe(`file-explorer`,()=>{let e=we(),{tree:t,loading:r,fetchTree:i}=Re(),{lines:a,isBinary:o,loading:s,fetchContent:c,reset:l}=ke(),u=p(`staged`),d=p(!1),m=p(``),h=p(null),g=p(new Set),_=p(new Set),v=D(()=>u.value===`staged`?e.stagedFiles:e.unstagedFiles),y=D(()=>{let e=(m.value??``).trim().toLowerCase();return e?v.value.filter(t=>$(t).toLowerCase().includes(e)):v.value}),b=D(()=>Le(t.value,m.value??``)),x=D(()=>{let e=0,n=t=>{for(let r of t)r.type===`file`?e++:r.children&&n(r.children)};return n(t.value),e});f(t,e=>{let t=new Set,n=e=>{for(let r of e)r.type===`directory`&&r.children&&(ze(r)&&t.add(r.path),n(r.children))};n(e),g.value=t},{immediate:!0}),f(d,t=>{m.value=``,h.value=null,t&&i(`WORKTREE`,e.changedPaths)}),f(u,()=>{h.value=null,_.value=new Set}),f(h,e=>{if(d.value){if(!e){l();return}c(e,`WORKTREE`)}});function S(e){let t=new Set(g.value);t.has(e)?t.delete(e):t.add(e),g.value=t}function C(e){let t=new Set(_.value);t.has(e)?t.delete(e):t.add(e),_.value=t}function w(e){h.value=e,C(e)}function T(e){h.value=e,_.value.has(e)||(_.value=new Set(_.value).add(e))}function E(){_.value=new Set(v.value.map($))}function O(){_.value=new Set}function k(e){h.value=e,!d.value&&(_.value.has(e)||(_.value=new Set(_.value).add(e)),n(()=>{document.getElementById(`diff-file-${e}`)?.scrollIntoView({block:`nearest`})}))}let A=null,ee=0;function j(){return A??=(async()=>{await e.fetchDiff(),d.value&&(await i(`WORKTREE`,e.changedPaths),h.value&&await c(h.value,`WORKTREE`))})().finally(()=>{A=null})}async function M(){ee=Date.now(),await j()}async function N(){Date.now()-ee<400||await j()}return{source:u,browseMode:d,filter:m,selectedPath:h,expandedFolders:g,expandedFiles:_,tree:t,treeLoading:r,browseFileLines:a,browseFileIsBinary:o,browseFileLoading:s,diffFiles:v,filteredDiffFiles:y,filteredTree:b,totalTreeFiles:x,toggleFolder:S,toggleFileCard:C,handleCardToggle:w,expandFile:T,expandAllFiles:E,collapseAllFiles:O,selectFile:k,refresh:M,refreshFromServerEvent:N}}),Ve=V({name:`QSplitter`,props:{...fe,modelValue:{type:Number,required:!0},reverse:Boolean,unit:{type:String,default:`%`,validator:e=>[`%`,`px`].includes(e)},limits:{type:Array,validator:e=>e.length!==2||typeof e[0]!=`number`||typeof e[1]!=`number`?!1:e[0]>=0&&e[0]<=e[1]},emitImmediately:Boolean,horizontal:Boolean,disable:Boolean,beforeClass:[Array,String,Object],afterClass:[Array,String,Object],separatorClass:[Array,String,Object],separatorStyle:[Array,String,Object],separatorAriaLabel:String},emits:[`update:modelValue`],setup(t,{slots:r,emit:i}){let a=F(),o=H(t,a),s=e(null),c={before:e(null),after:e(null)},l=U(),u=D(()=>`q-splitter no-wrap ${t.horizontal?`q-splitter--horizontal column`:`q-splitter--vertical row`} q-splitter--${t.disable?`disabled`:`workable`}`+(o()?` q-splitter--dark`:``)),p=D(()=>t.horizontal?`height`:`width`),m=D(()=>t.reverse?`after`:`before`),h=D(()=>t.limits===void 0?t.unit===`%`?[10,90]:[50,1/0]:t.limits);function g(e){return(t.unit===`%`?e:Math.round(e))+t.unit}let _=D(()=>({[m.value]:{[p.value]:g(t.modelValue)}})),v,y,b,x,S;function C(e){if(e.isFirst){let e=s.value.getBoundingClientRect()[p.value];v=t.horizontal?`up`:`left`,y=t.unit===`%`?100:e,b=Math.min(y,h.value[1],Math.max(h.value[0],t.modelValue)),x=(t.reverse?-1:1)*(t.horizontal?1:a.lang.rtl?-1:1)*(t.unit===`%`?e===0?0:100/e:1),s.value.classList.add(`q-splitter--active`);return}if(e.isFinal){S!==t.modelValue&&i(`update:modelValue`,S),s.value.classList.remove(`q-splitter--active`);return}let n=b+x*(e.direction===v?-1:1)*e.distance[t.horizontal?`y`:`x`];S=Math.min(y,h.value[1],Math.max(h.value[0],n)),c[m.value].value.style[p.value]=g(S),t.emitImmediately&&t.modelValue!==S&&i(`update:modelValue`,S)}let w=D(()=>[[ve,t.disable?void 0:C,void 0,{[t.horizontal?`vertical`:`horizontal`]:!0,prevent:!0,stop:!0,mouse:!0,mouseAllDir:!0}]]),T=D(()=>{let e={role:`separator`,"aria-orientation":t.horizontal?`horizontal`:`vertical`,"aria-label":t.separatorAriaLabel||a.lang.label.resize};if(t.disable)e[`aria-disabled`]=`true`;else{let n=h.value;e.tabindex=0,e[`aria-controls`]=l.value,e[`aria-valuemin`]=n[0],n[1]!==1/0&&(e[`aria-valuemax`]=n[1]),e[`aria-valuenow`]=Math.round(t.modelValue*100)/100}return e}),E=null;function O(e){let{keyCode:n}=e,r=t.horizontal?[38,40]:[37,39];if(n!==13&&n!==36&&n!==35&&!r.includes(n))return;se(e);let o=h.value,c=t.unit===`%`?100:s.value.getBoundingClientRect()[p.value],l;if(n===13)t.modelValue===o[0]?l=E===null?t.modelValue:E:(E=t.modelValue,l=o[0]);else if(n===36)l=o[0];else if(n===35)l=o[1];else{let e=(n===r[0]?-1:1)*(t.reverse?-1:1)*(t.horizontal?1:a.lang.rtl?-1:1);l=t.modelValue+e*(t.unit===`%`?1:10)}let u=Math.min(c,o[1],Math.max(o[0],l));u!==t.modelValue&&i(`update:modelValue`,u)}function A(e,t){e<t[0]?i(`update:modelValue`,t[0]):e>t[1]&&i(`update:modelValue`,t[1])}return f(()=>t.modelValue,e=>{A(e,h.value)}),f(()=>t.limits,()=>{n(()=>{A(t.modelValue,h.value)})}),()=>{let e=[k(`div`,{ref:c.before,id:m.value===`before`?l.value:void 0,class:[`q-splitter__panel q-splitter__before`+(t.reverse?` col`:``),t.beforeClass],style:_.value.before},oe(r.before)),k(`div`,{class:[`q-splitter__separator`,t.separatorClass],style:t.separatorStyle,...T.value,onKeydown:t.disable?void 0:O},[d(k(`div`,{class:`q-splitter__separator-area absolute-full`},oe(r.separator)),w.value)]),k(`div`,{ref:c.after,id:m.value===`after`?l.value:void 0,class:[`q-splitter__panel q-splitter__after`+(t.reverse?``:` col`),t.afterClass],style:_.value.after},oe(r.after))];return k(`div`,{class:u.value,ref:s},ie(r.default,e))}}}),He=260,Ue=220,We=600,Ge=P(y({__name:`PanelResize`,setup(e){let t=p(He),n=D(()=>[Ue,We]);return(e,r)=>(s(),x(Ve,{modelValue:t.value,"onUpdate:modelValue":r[0]||=e=>t.value=e,limits:n.value,unit:`px`,class:`file-explorer`,"before-class":`file-explorer__panel`,"after-class":`file-explorer__content`},{before:a(()=>[i(e.$slots,`panel`,{},void 0,!0)]),after:a(()=>[i(e.$slots,`content`,{},void 0,!0)]),_:3},8,[`modelValue`,`limits`]))}}),[[`__scopeId`,`data-v-1ce1b104`]]),Ke=0,qe=[`click`,`keydown`],Je={icon:String,label:[Number,String],alert:[Boolean,String],alertIcon:String,name:{type:[Number,String],default:()=>`t_${Ke++}`},noCaps:Boolean,tabindex:[String,Number],disable:Boolean,contentClass:String,ripple:{type:[Boolean,Object],default:!0}},Ye=[13,32];function Xe(t,n,i,a){let o=h(te,B);if(o===B)return console.error(`QTab/QRouteTab component needs to be child of QTabs`),B;let{proxy:s}=v(),c=e(null),l=e(null),u=e(null);function f(){return t.disable||t.ripple===!1?!1:{keyCodes:Ye,early:!0,...t.ripple===!0?{}:t.ripple}}function p(e){let n=o.tabProps.value;return`q-tab relative-position self-stretch flex flex-center text-center`+(e?` q-tab--active`+(n.activeClass?` `+n.activeClass:``)+(n.activeColor?` text-${n.activeColor}`:``)+(n.activeBgColor?` bg-${n.activeBgColor}`:``):` q-tab--inactive`)+(t.icon&&t.label&&!n.inlineLabel?` q-tab--full`:``)+(t.noCaps||n.noCaps?` q-tab--no-caps`:``)+(t.disable?` disabled`:` q-focusable q-hoverable cursor-pointer`)+(a===void 0?``:a.linkClass.value)}function m(){return`q-tab__content self-stretch flex-center relative-position q-anchor--skip non-selectable `+(o.tabProps.value.inlineLabel?`row no-wrap q-tab__content--inline`:`column`)+(t.contentClass===void 0?``:` ${t.contentClass}`)}let g=D(()=>o.currentModel.value===t.name),_=D(()=>{if(t.disable||o.hasFocus.value)return-1;let e=o.tabStopName.value;return e===null||e===t.name?t.tabindex||0:-1});function y(e,n){if(!n&&!e?.qAvoidFocus&&c.value?.focus({preventScroll:!0}),t.disable){a?.hasRouterLink.value===!0&&se(e);return}if(a===void 0){o.updateModel({name:t.name}),i(`click`,e);return}if(a.hasRouterLink.value){let n=(n={})=>{let r,i=n.to===void 0||de(n.to,t.to)?o.avoidRouteWatcher=ue():null;return a.navigateToRouterLink(e,{...n,returnRouterError:!0}).catch(e=>{r=e}).then(e=>{if(i===o.avoidRouteWatcher&&(o.avoidRouteWatcher=!1,r===void 0&&(e===void 0||e.message?.startsWith(`Avoided redundant navigation`)===!0)&&o.updateModel({name:t.name})),n.returnRouterError)return r===void 0?e:Promise.reject(r)})};i(`click`,e,n),e.defaultPrevented||n();return}i(`click`,e)}function x(e){i(`keydown`,e),!e.defaultPrevented&&(ae(e,[13,32])?y(e,!0):e.keyCode>=35&&e.keyCode<=40&&!e.altKey&&!e.metaKey&&!ne(e)&&o.onKbdNavigate(e.keyCode,s.$el)&&se(e))}function S(){let e=o.tabProps.value,r=e.narrowIndicator,i=[],a=k(`div`,{ref:u,class:[`q-tab__indicator`,e.indicatorClass]});t.icon!==void 0&&i.push(k(I,{class:`q-tab__icon`,name:t.icon})),t.label!==void 0&&i.push(k(`div`,{class:`q-tab__label`},t.label)),t.alert&&i.push(t.alertIcon===void 0?k(`div`,{class:`q-tab__alert`+(t.alert===!0?``:` text-${t.alert}`)}):k(I,{class:`q-tab__alert-icon`,color:t.alert===!0?void 0:t.alert,name:t.alertIcon})),r&&i.push(a);let s=[k(`div`,{class:`q-focus-helper`,tabindex:-1,ref:c}),k(`div`,{class:m()},ie(n.default,i))];return r||s.push(a),s}let C={name:D(()=>t.name),disable:D(()=>t.disable),rootRef:l,tabIndicatorRef:u,routeData:a};r(()=>{o.unregisterTab(C)}),b(()=>{o.registerTab(C)});function w(e,n){let r={ref:l,class:p(g.value),tabindex:_.value,role:`tab`,"aria-selected":g.value?`true`:`false`,"aria-disabled":t.disable?`true`:void 0,onClick:y,onKeydown:x,...n};return d(k(e,r,S()),[[L,f()]])}return{renderTab:w,$tabs:o}}var Ze=V({name:`QTab`,props:Je,emits:qe,setup(e,{slots:t,emit:n}){let{renderTab:r}=Xe(e,t,n);return()=>r(`div`)}});function Qe(e,t,n){let r=n?[`left`,`right`]:[`top`,`bottom`];return`absolute-${t?r[0]:r[1]}${e?` text-${e}`:``}`}function $e(e,t){for(let n in e)if(e[n]!==t[n])return!1;return!0}var et=[`left`,`center`,`right`,`justify`],tt=V({name:`QTabs`,props:{modelValue:[Number,String],align:{type:String,default:`center`,validator:e=>et.includes(e)},breakpoint:{type:[String,Number],default:600},vertical:Boolean,shrink:Boolean,stretch:Boolean,activeClass:String,activeColor:String,activeBgColor:String,indicatorColor:String,leftIcon:String,rightIcon:String,outsideArrows:Boolean,mobileArrows:Boolean,switchIndicator:Boolean,narrowIndicator:Boolean,inlineLabel:Boolean,noCaps:Boolean,dense:Boolean,contentClass:String,"onUpdate:modelValue":[Function,Array]},setup(t,{slots:n,emit:i}){let{proxy:a}=v(),o=F(),{registerTick:s}=ce(),{registerTick:u}=ce(),{registerTick:d}=ce(),{registerTimeout:m,removeTimeout:h}=le(),{registerTimeout:g,removeTimeout:_}=le(),y=e(null),b=e(null),x=p(t.modelValue),S=p(!1),C=p(!0),w=p(!1),T=p(!1),E=[],O=p(0),A=p(!1),j=null,M=null,N,P=D(()=>({activeClass:t.activeClass,activeColor:t.activeColor,activeBgColor:t.activeBgColor,indicatorClass:Qe(t.indicatorColor,t.switchIndicator,t.vertical),narrowIndicator:t.narrowIndicator,inlineLabel:t.inlineLabel,noCaps:t.noCaps})),ne=D(()=>{let e=O.value,t=x.value,n=null;for(let r=0;r<e;r++){let e=E[r];if(!e.disable.value){if(e.name.value===t)return t;n===null&&(n=e.name.value)}}return n}),re=D(()=>`q-tabs__content--align-${S.value?`left`:T.value?`justify`:t.align}`),ie=D(()=>`q-tabs row no-wrap items-center q-tabs--${S.value?``:`not-`}scrollable q-tabs--${t.vertical?`vertical`:`horizontal`} q-tabs__arrows--${t.outsideArrows?`outside`:`inside`} q-tabs--mobile-with${t.mobileArrows?``:`out`}-arrows`+(t.dense?` q-tabs--dense`:``)+(t.shrink?` col-shrink`:``)+(t.stretch?` self-stretch`:``)),ae=D(()=>`q-tabs__content row no-wrap items-center self-stretch hide-scrollbar relative-position `+re.value+(t.contentClass===void 0?``:` ${t.contentClass}`)),L=D(()=>t.vertical?`height`:`width`),R=D(()=>!t.vertical&&o.lang.rtl===!0);f(R,U),f(()=>t.modelValue,e=>{z({name:e,setCurrent:!0,skipEmit:!0})}),f(()=>t.outsideArrows,B);function z({name:e,setCurrent:n,skipEmit:r}){x.value!==e&&(!r&&t[`onUpdate:modelValue`]!==void 0&&i(`update:modelValue`,e),(n||t[`onUpdate:modelValue`]===void 0)&&(se(x.value,e),x.value=e))}function B(){s(()=>{y.value&&V({width:y.value.offsetWidth,height:y.value.offsetHeight})})}function V(e){if(b.value===null)return;let n=e[L.value],r=Array.prototype.reduce.call(b.value.children,(e,t)=>e+t.getBoundingClientRect()[L.value],0),i=n>0&&r-n>1;S.value=i,i&&u(U),T.value=n<Number.parseInt(t.breakpoint,10)}function se(e,n){let r=e!=null&&e!==``?E.find(t=>t.name.value===e):null,i=n!=null&&n!==``?E.find(e=>e.name.value===n):null;if(Q)Q=!1;else if(r&&i){let e=r.tabIndicatorRef.value,n=i.tabIndicatorRef.value;j!==null&&(clearTimeout(j),j=null),e.style.transition=`none`,e.style.transform=`none`,n.style.transition=`none`,n.style.transform=`none`;let a=e.getBoundingClientRect(),o=n.getBoundingClientRect();n.style.transform=t.vertical?`translate3d(0,${a.top-o.top}px,0) scale3d(1,${o.height?a.height/o.height:1},1)`:`translate3d(${a.left-o.left}px,0,0) scale3d(${o.width?a.width/o.width:1},1,1)`,d(()=>{j=setTimeout(()=>{j=null,n.style.transition=`transform .25s cubic-bezier(.4, 0, .2, 1)`,n.style.transform=`none`},70)})}i&&S.value&&H(i.rootRef.value)}function H(e){let{left:n,width:r,top:i,height:a}=b.value.getBoundingClientRect(),o=e.getBoundingClientRect(),s=t.vertical?o.top-i:o.left-n;if(s<0){b.value[t.vertical?`scrollTop`:`scrollLeft`]+=Math.floor(s),U();return}s+=t.vertical?o.height-a:o.width-r,s>0&&(b.value[t.vertical?`scrollTop`:`scrollLeft`]+=Math.ceil(s),U())}function U(){let e=b.value;if(e===null)return;let n=e.getBoundingClientRect(),r=t.vertical?e.scrollTop:Math.abs(e.scrollLeft);R.value?(C.value=Math.ceil(r+n.width)<e.scrollWidth-1,w.value=r>0):(C.value=r>0,w.value=t.vertical?Math.ceil(r+n.height)<e.scrollHeight:Math.ceil(r+n.width)<e.scrollWidth)}function ue(e){M!==null&&clearInterval(M),M=setInterval(()=>{pe(e)&&G()},5)}function de(){ue(R.value?2**53-1:0)}function W(){ue(R.value?0:2**53-1)}function G(){M!==null&&(clearInterval(M),M=null)}function fe(e,n){let r=Array.prototype.filter.call(b.value.children,e=>e===n||e.matches?.(`.q-tab.q-focusable`)),i=r.length;if(i===0)return;if(e===36)return H(r[0]),r[0].focus(),!0;if(e===35)return H(r[i-1]),r[i-1].focus(),!0;let a=e===(t.vertical?38:37),o=e===(t.vertical?40:39),s=a?-1:o?1:void 0;if(s!==void 0){let e=t.vertical!==!0&&R.value?-1:1,a=(r.indexOf(n)+s*e+i)%i;return H(r[a]),r[a].focus({preventScroll:!0}),!0}}let K=D(()=>R.value?{get:e=>Math.abs(e.scrollLeft),set:(e,t)=>{e.scrollLeft=-t}}:t.vertical?{get:e=>e.scrollTop,set:(e,t)=>{e.scrollTop=t}}:{get:e=>e.scrollLeft,set:(e,t)=>{e.scrollLeft=t}});function pe(e){let t=b.value,{get:n,set:r}=K.value,i=!1,a=n(t),o=e<a?-1:1;return a+=o*5,a<0?(i=!0,a=0):(o===-1&&a<=e||o===1&&a>=e)&&(i=!0,a=e),r(t,a),U(),i}function q(){let e=null,t={matchedLen:0,queryDiff:9999,hrefLen:0},n=E.filter(e=>e.routeData?.hasRouterLink.value===!0),{hash:r,query:i}=a.$route,o=Object.keys(i).length;for(let a of n){let n=a.routeData.exact.value===!0;if(!a.routeData[n?`linkIsExactActive`:`linkIsActive`].value)continue;let{hash:s,query:c,matched:l,href:u}=a.routeData.resolvedLink.value,d=Object.keys(c).length;if(n){if(s!==r||d!==o||!$e(i,c))continue;e=a.name.value;break}if(s!==``&&s!==r||d!==0&&!$e(c,i))continue;let f={matchedLen:l.length,queryDiff:o-d,hrefLen:u.length-s.length};if(f.matchedLen>t.matchedLen){e=a.name.value,t=f;continue}if(f.matchedLen===t.matchedLen){if(f.queryDiff<t.queryDiff)e=a.name.value,t=f;else if(f.queryDiff!==t.queryDiff)continue;f.hrefLen>t.hrefLen&&(e=a.name.value,t=f)}}if(e===null&&E.some(e=>e.routeData===void 0&&e.name.value===x.value)){Q=!1;return}z({name:e,setCurrent:!0})}function me(e){if(h(),!A.value&&y.value!==null&&e.target&&typeof e.target.closest==`function`){let t=e.target.closest(`.q-tab`);t&&y.value.contains(t)&&(A.value=!0,S.value&&H(t))}}function he(){m(()=>{A.value=!1},30)}function J(){ye.avoidRouteWatcher===!1?g(q):_()}function _e(){if(N===void 0){let e=f(()=>a.$route.fullPath,J);N=()=>{e(),N=void 0}}}function Y(e){E.push(e),O.value++,B(),e.routeData===void 0||a.$route===void 0?g(()=>{if(S.value){let e=x.value,t=e!=null&&e!==``?E.find(t=>t.name.value===e):null;t&&H(t.rootRef.value)}}):(_e(),e.routeData.hasRouterLink.value&&J())}function ve(e){E.splice(E.indexOf(e),1),O.value--,B(),N!==void 0&&e.routeData!==void 0&&(E.every(e=>e.routeData===void 0)&&N(),J())}let ye={currentModel:x,tabProps:P,hasFocus:A,tabStopName:ne,registerTab:Y,unregisterTab:ve,verifyRouteModel:J,updateModel:z,onKbdNavigate:fe,avoidRouteWatcher:!1};c(te,ye);function X(){j!==null&&clearTimeout(j),G(),N?.()}let Z=!1,Q=!1;return r(X),l(()=>{Z=N!==void 0,X()}),ee(()=>{Z&&(_e(),Q=!0,J()),B()}),()=>k(`div`,{ref:y,class:ie.value,role:`tablist`,"aria-orientation":t.vertical?`vertical`:`horizontal`,onFocusin:me,onFocusout:he},[k(ge,{onResize:V}),k(`div`,{ref:b,class:ae.value,onScroll:U},oe(n.default)),k(I,{class:`q-tabs__arrow q-tabs__arrow--left absolute q-tab__icon`+(C.value?``:` q-tabs__arrow--faded`),name:t.leftIcon||o.iconSet.tabs[t.vertical?`up`:`left`],onMousedownPassive:de,onTouchstartPassive:de,onMouseupPassive:G,onMouseleavePassive:G,onTouchendPassive:G}),k(I,{class:`q-tabs__arrow q-tabs__arrow--right absolute q-tab__icon`+(w.value?``:` q-tabs__arrow--faded`),name:t.rightIcon||o.iconSet.tabs[t.vertical?`down`:`right`],onMousedownPassive:W,onTouchstartPassive:W,onMouseupPassive:G,onMouseleavePassive:G,onTouchendPassive:G})])}}),nt={class:`row items-center no-wrap q-gutter-x-xs`},rt={class:`row items-center no-wrap q-gutter-x-xs`},it=y({__name:`FileExplorerTabs`,props:j({stagedFilesLength:{},unstagedFilesLength:{}},{modelValue:{default:`staged`},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=N(e,`modelValue`),{t:n}=K();return(r,i)=>(s(),x(tt,{modelValue:t.value,"onUpdate:modelValue":i[0]||=e=>t.value=e,dense:``,"no-caps":``,align:`left`,"narrow-indicator":``,class:`text-primary q-mb-sm`},{default:a(()=>[S(Ze,{name:`staged`},{default:a(()=>[g(`div`,nt,[g(`span`,null,M(E(n)(`changes.staged`)),1),S(_e,{color:`positive`,rounded:``},{default:a(()=>[C(M(e.stagedFilesLength),1)]),_:1})])]),_:1}),S(Ze,{name:`unstaged`},{default:a(()=>[g(`div`,rt,[g(`span`,null,M(E(n)(`changes.unstaged`)),1),S(_e,{color:`warning`,rounded:``},{default:a(()=>[C(M(e.unstagedFilesLength),1)]),_:1})])]),_:1})]),_:1},8,[`modelValue`]))}}),at={class:`file-tree-node`},ot={class:`row items-center no-wrap q-gutter-x-xs`},st={class:`ellipsis file-tree-node__label`},ct={class:`ellipsis file-tree-node__label`},lt={key:2},ut=P(y({__name:`FileTreeNode`,props:{node:{},selectedPath:{},expandedFolders:{},level:{}},emits:[`toggle-folder`,`file-select`],setup(e,{emit:t}){let n=e,r=t,i=8+n.level*12;return(t,n)=>{let c=o(`FileTreeNode`,!0);return s(),_(`div`,at,[e.node.type===`directory`?d((s(),x(J,{key:0,clickable:``,dense:``,style:A({paddingLeft:`${i}px`}),onClick:n[0]||=t=>r(`toggle-folder`,e.node.path)},{default:a(()=>[S(Y,{avatar:``,class:`file-tree-node__icon-section`},{default:a(()=>[g(`div`,ot,[S(I,{name:`chevron_right`,size:`xs`,class:m([`file-tree-node__chevron`,{"file-tree-node__chevron--expanded":e.expandedFolders.has(e.node.path)}])},null,8,[`class`]),S(I,{name:e.expandedFolders.has(e.node.path)?`folder_open`:`folder`,size:`xs`,color:`warning`},null,8,[`name`])])]),_:1}),S(Y,{class:`text-mono`},{default:a(()=>[g(`div`,st,[C(M(e.node.name)+` `,1),S(X,{anchor:`top middle`,self:`bottom middle`},{default:a(()=>[C(M(e.node.path),1)]),_:1})])]),_:1}),e.node.children?(s(),x(Y,{key:0,side:``,class:`text-caption text-grey-6`},{default:a(()=>[C(M(e.node.children.length),1)]),_:1})):O(``,!0)]),_:1},8,[`style`])),[[L]]):d((s(),x(J,{key:1,clickable:``,dense:``,active:e.node.path===e.selectedPath,"active-class":`file-tree-node--selected`,style:A({paddingLeft:`${i+20}px`}),onClick:n[1]||=t=>r(`file-select`,e.node.path)},{default:a(()=>[S(Y,{avatar:``,class:`file-tree-node__icon-section`},{default:a(()=>[S(I,{name:`insert_drive_file`,size:`xs`,color:`grey-6`})]),_:1}),S(Y,{class:`text-mono`},{default:a(()=>[g(`div`,ct,[C(M(e.node.name)+` `,1),S(X,{anchor:`top middle`,self:`bottom middle`},{default:a(()=>[C(M(e.node.path),1)]),_:1})])]),_:1}),e.node.isChanged?(s(),x(Y,{key:0,side:``},{default:a(()=>[S(I,{name:`fiber_manual_record`,size:`8px`,color:`warning`})]),_:1})):O(``,!0)]),_:1},8,[`active`,`style`])),[[L]]),e.node.type===`directory`&&e.expandedFolders.has(e.node.path)&&e.node.children?(s(),_(`div`,lt,[(s(!0),_(T,null,u(e.node.children,t=>(s(),x(c,{key:t.path,node:t,"selected-path":e.selectedPath,"expanded-folders":e.expandedFolders,level:e.level+1,onToggleFolder:n[2]||=e=>r(`toggle-folder`,e),onFileSelect:n[3]||=e=>r(`file-select`,e)},null,8,[`node`,`selected-path`,`expanded-folders`,`level`]))),128))])):O(``,!0)])}}}),[[`__scopeId`,`data-v-43168dd7`]]);function dt(){let e=F(),{t}=K(),n=Be();async function r(r,i,a){try{await me(i,{paths:[r]}),await n.refresh()}catch(n){e.notify({type:`negative`,message:t(a),caption:n instanceof Error?n.message:String(n)})}}function i(e){return r(e,`/api/git/stage`,`changes.actions.stageError`)}function a(e){return r(e,`/api/git/unstage`,`changes.actions.unstageError`)}function o(n){e.dialog({title:t(`changes.actions.discardConfirmTitle`),message:t(`changes.actions.discardConfirmMessage`,{path:n}),persistent:!0,ok:{label:t(`changes.actions.discardConfirmOk`),color:`negative`,flat:!0},cancel:{label:t(`changes.actions.discardConfirmCancel`),flat:!0}}).onOk(()=>{r(n,`/api/git/discard`,`changes.actions.discardError`)})}return{stage:i,unstage:a,discard:o}}var ft={class:`ellipsis file-list-item__path-label`},pt={class:`text-caption`},mt={class:`text-positive`},ht={class:`text-negative q-ml-xs`},gt=P(y({__name:`FileListItem`,props:{file:{},selected:{type:Boolean},source:{}},emits:[`click`],setup(e){let{t}=K(),{stage:n,unstage:r,discard:i}=dt(),o={added:`A`,modified:`M`,deleted:`D`,renamed:`R`},c={added:`positive`,modified:`warning`,deleted:`negative`,renamed:`purple`};return(l,u)=>d((s(),x(J,{clickable:``,dense:``,active:e.selected,"active-class":`file-list-item--selected`,onClick:u[3]||=e=>l.$emit(`click`)},{default:a(()=>[S(Y,{avatar:``,class:`file-list-item__icon-section`},{default:a(()=>[g(`span`,{class:m([`text-caption text-weight-bold text-mono`,`text-${c[e.file.status]}`])},M(o[e.file.status]),3)]),_:1}),S(Y,{class:`text-mono`},{default:a(()=>[g(`div`,ft,[C(M(E($)(e.file))+` `,1),S(X,{anchor:`top middle`,self:`bottom middle`},{default:a(()=>[C(M(E($)(e.file)),1)]),_:1})])]),_:1}),S(Y,{side:``,class:`file-list-item__stats`},{default:a(()=>[g(`span`,pt,[g(`span`,mt,`+`+M(e.file.additions),1),g(`span`,ht,`-`+M(e.file.deletions),1)])]),_:1}),S(Y,{side:``,class:`file-list-item__actions`},{default:a(()=>[e.source===`unstaged`?(s(),_(T,{key:0},[d((s(),x(z,{flat:``,dense:``,round:``,size:`sm`,icon:`undo`,"aria-label":E(t)(`changes.actions.discard`),onClick:u[0]||=re(t=>E(i)(E($)(e.file)),[`stop`])},{default:a(()=>[S(X,null,{default:a(()=>[C(M(E(t)(`changes.actions.discard`)),1)]),_:1})]),_:1},8,[`aria-label`])),[[L]]),d((s(),x(z,{flat:``,dense:``,round:``,size:`sm`,icon:`add`,"aria-label":E(t)(`changes.actions.stage`),onClick:u[1]||=re(t=>E(n)(E($)(e.file)),[`stop`])},{default:a(()=>[S(X,null,{default:a(()=>[C(M(E(t)(`changes.actions.stage`)),1)]),_:1})]),_:1},8,[`aria-label`])),[[L]])],64)):d((s(),x(z,{key:1,flat:``,dense:``,round:``,size:`sm`,icon:`remove`,"aria-label":E(t)(`changes.actions.unstage`),onClick:u[2]||=re(t=>E(r)(E($)(e.file)),[`stop`])},{default:a(()=>[S(X,null,{default:a(()=>[C(M(E(t)(`changes.actions.unstage`)),1)]),_:1})]),_:1},8,[`aria-label`])),[[L]])]),_:1})]),_:1},8,[`active`])),[[L]])}}),[[`__scopeId`,`data-v-77d2a0e7`]]),_t=y({__name:`BrowseModeToggle`,props:{modelValue:{type:Boolean,default:!1},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=N(e,`modelValue`),{t:n}=K();return(e,r)=>(s(),x(J,null,{default:a(()=>[S(Y,null,{default:a(()=>[S(Te,null,{default:a(()=>[C(M(E(n)(`browse.toggle`)),1)]),_:1})]),_:1}),S(Y,{side:``},{default:a(()=>[S(G,{modelValue:t.value,"onUpdate:modelValue":r[0]||=e=>t.value=e,dense:``,size:`xs`},null,8,[`modelValue`])]),_:1})]),_:1}))}}),vt={class:`file-list-panel__header q-pa-sm`},yt={key:1,class:`text-subtitle2 q-mb-sm`},bt={class:`text-primary`},xt={key:0,class:`row justify-center q-pa-lg`},St={key:0,class:`text-caption text-grey-6 q-px-md q-py-sm`},Ct={key:0,class:`text-caption text-grey-6 q-px-md q-py-sm`},wt=P(y({__name:`FileListPanel`,setup(e){let{t}=K(),{stagedFiles:n,unstagedFiles:r,loading:i}=q(we()),o=Be(),{source:c,browseMode:l,filter:d,selectedPath:f,expandedFolders:p,treeLoading:m,filteredDiffFiles:h,filteredTree:v,totalTreeFiles:y}=q(o);return(e,b)=>(s(),_(T,null,[g(`div`,vt,[E(l)?(s(),_(`div`,yt,[C(M(E(t)(`browse.allFiles`))+` `,1),g(`span`,bt,`(`+M(E(y))+`)`,1)])):(s(),x(it,{key:0,modelValue:E(c),"onUpdate:modelValue":b[0]||=e=>w(c)?c.value=e:null,"staged-files-length":E(n).length,"unstaged-files-length":E(r).length},null,8,[`modelValue`,`staged-files-length`,`unstaged-files-length`])),S(Ce,{modelValue:E(d),"onUpdate:modelValue":b[1]||=e=>w(d)?d.value=e:null,placeholder:E(l)?E(t)(`browse.searchPlaceholder`):E(t)(`changes.filterPlaceholder`)},null,8,[`modelValue`,`placeholder`])]),S(W),S(Z,{class:`col file-list-panel__scroll`,"content-style":`padding: 4px 0`,"content-active-style":`padding: 4px 0`},{default:a(()=>[(E(l)?E(m):E(i))?(s(),_(`div`,xt,[S(R,{color:`primary`,size:`2em`})])):E(l)?(s(),_(T,{key:1},[E(v).length===0?(s(),_(`p`,St,M(E(d)?E(t)(`browse.noMatchingFiles`):E(t)(`browse.noFiles`)),1)):O(``,!0),(s(!0),_(T,null,u(E(v),e=>(s(),x(ut,{key:e.path,node:e,"selected-path":E(f),"expanded-folders":E(p),level:0,onToggleFolder:E(o).toggleFolder,onFileSelect:E(o).selectFile},null,8,[`node`,`selected-path`,`expanded-folders`,`onToggleFolder`,`onFileSelect`]))),128))],64)):(s(),_(T,{key:2},[E(h).length===0?(s(),_(`p`,Ct,M(E(d)?E(t)(`browse.noMatchingFiles`):E(t)(`changes.emptyFileList`)),1)):O(``,!0),(s(!0),_(T,null,u(E(h),e=>(s(),x(gt,{key:E($)(e),file:e,selected:E(f)===E($)(e),source:E(c),onClick:t=>E(o).selectFile(E($)(e))},null,8,[`file`,`selected`,`source`,`onClick`]))),128))],64))]),_:1}),S(W),S(_t,{modelValue:E(l),"onUpdate:modelValue":b[2]||=e=>w(l)?l.value=e:null},null,8,[`modelValue`])],64))}}),[[`__scopeId`,`data-v-704ed3e1`]]),Tt={class:`diff-status-bar row items-center q-gutter-x-md q-pa-sm text-body2`},Et={class:`text-weight-medium`},Dt={class:`text-positive`},Ot={class:`text-negative`},kt={key:0,class:`text-grey-6`},At={key:1,class:`text-grey-6`},jt={key:2,class:`text-grey-6`},Mt={key:3,class:`text-grey-6`},Nt=y({__name:`DiffStatusBar`,props:{files:{}},emits:[`expand-all`,`collapse-all`],setup(e,{emit:t}){let n=e,r=t,{t:i}=K(),a=D(()=>{let e=n.files.reduce((e,t)=>e+t.additions,0),t=n.files.reduce((e,t)=>e+t.deletions,0),r=n.files.filter(e=>e.status===`added`).length,i=n.files.filter(e=>e.status===`modified`).length,a=n.files.filter(e=>e.status===`deleted`).length,o=n.files.filter(e=>e.status===`renamed`).length;return{total:n.files.length,additions:e,deletions:t,added:r,modified:i,deleted:a,renamed:o}});return(e,t)=>(s(),_(`div`,Tt,[g(`span`,Et,M(E(i)(`changes.filesChanged`,{count:a.value.total})),1),g(`span`,Dt,` +`+M(a.value.additions)+` `+M(E(i)(`changes.additions`)),1),g(`span`,Ot,` -`+M(a.value.deletions)+` `+M(E(i)(`changes.deletions`)),1),a.value.added?(s(),_(`span`,kt,M(a.value.added)+` `+M(E(i)(`changes.added`)),1)):O(``,!0),a.value.modified?(s(),_(`span`,At,M(a.value.modified)+` `+M(E(i)(`changes.modified`)),1)):O(``,!0),a.value.deleted?(s(),_(`span`,jt,M(a.value.deleted)+` `+M(E(i)(`changes.deletedPlural`)),1)):O(``,!0),a.value.renamed?(s(),_(`span`,Mt,M(a.value.renamed)+` `+M(E(i)(`changes.renamed`)),1)):O(``,!0),S(ye),S(z,{dense:``,flat:``,"no-caps":``,size:`sm`,icon:`unfold_more`,label:E(i)(`changes.expandAll`),onClick:t[0]||=e=>r(`expand-all`)},null,8,[`label`]),S(z,{dense:``,flat:``,"no-caps":``,size:`sm`,icon:`unfold_less`,label:E(i)(`changes.collapseAll`),onClick:t[1]||=e=>r(`collapse-all`)},null,8,[`label`])]))}}),Pt={key:0,class:`active-review-bar row items-center q-gutter-x-sm q-px-sm no-wrap`},Ft={class:`text-body2 ellipsis`},It=P(y({__name:`ActiveReviewBar`,setup(e){let{t}=K(),n=F(),r=Se(),{activeReview:i}=q(r);function a(e){r.setStatus(e).catch(e=>{n.notify({type:`negative`,message:t(`reviews.comments.error`),caption:e instanceof Error?e.message:String(e)})})}return(e,n)=>E(i)?(s(),_(`div`,Pt,[S(I,{name:`rate_review`,size:`18px`,color:`primary`}),g(`span`,Ft,M(E(i).name??E(t)(`reviews.list.unnamed`)),1),S(ye),S(Pe,{status:E(i).status,onChange:a},null,8,[`status`])])):O(``,!0)}}),[[`__scopeId`,`data-v-725a73f5`]]),Lt={key:0,class:`q-pa-md text-grey-6`},Rt=y({__name:`DiffPanel`,setup(e){let{t}=K(),n=F(),r=Be(),i=Se(),{source:o,diffFiles:c,expandedFiles:l}=q(r),{activeReview:d,commentsByFile:f}=q(i);async function p(e){try{await e()}catch(e){n.notify({type:`negative`,message:t(`reviews.comments.error`),caption:e instanceof Error?e.message:String(e)})}}function m(e){p(()=>i.createComment(e))}function h(e,t){p(()=>i.editComment(e,t))}function g(e){p(()=>i.deleteComment(e))}function v(e){p(()=>i.resolveComment(e))}function y(e){p(()=>i.unresolveComment(e))}return(e,n)=>(s(),_(T,null,[E(c).length===0?(s(),_(`div`,Lt,M(E(t)(`changes.emptyDiffPanel`)),1)):(s(),_(T,{key:1},[S(It),E(d)?(s(),x(W,{key:0})):O(``,!0),S(Nt,{files:E(c),onExpandAll:E(r).expandAllFiles,onCollapseAll:E(r).collapseAllFiles},null,8,[`files`,`onExpandAll`,`onCollapseAll`]),S(W),S(Z,{class:`col`,"content-style":`padding: 8px; width: 100%; max-width: 100%`,"content-active-style":`padding: 8px; width: 100%; max-width: 100%`},{default:a(()=>[(s(!0),_(T,null,u(E(c),e=>(s(),x(Ae,{key:E($)(e),file:e,source:E(o),expanded:E(l).has(E($)(e)),commentable:!!E(d),"comments-editable":!!E(d),comments:E(f).get(E($)(e))??[],onToggle:t=>E(r).handleCardToggle(E($)(e)),onExpand:t=>E(r).expandFile(E($)(e)),onCreateComment:m,onEditComment:h,onDeleteComment:g,onResolveComment:v,onUnresolveComment:y},null,8,[`file`,`source`,`expanded`,`commentable`,`comments-editable`,`comments`,`onToggle`,`onExpand`]))),128))]),_:1})],64)),!E(d)&&E(c).length>0?(s(),x(Ee,{key:2})):O(``,!0)],64))}}),zt={key:0,class:`q-pa-md text-grey-6`},Bt={key:0,class:`row justify-center q-pa-lg`},Vt={key:1,class:`q-pa-md text-grey-6`},Ht=y({__name:`FileContentPanel`,setup(e){let{t}=K(),n=Be(),{selectedPath:r,browseFileLines:i,browseFileIsBinary:o,browseFileLoading:c}=q(n),l=p(!1);return f(r,e=>{l.value=e?Me(e):!1},{immediate:!0}),(e,n)=>E(r)?(s(),x(je,{key:1,class:`col`},{header:a(()=>[S(De,{path:E(r)},{default:a(()=>[S(Oe,{modelValue:l.value,"onUpdate:modelValue":n[0]||=e=>l.value=e},null,8,[`modelValue`])]),_:1},8,[`path`])]),default:a(()=>[E(c)?(s(),_(`div`,Bt,[S(R,{color:`primary`,size:`2em`})])):E(o)?(s(),_(`div`,Vt,M(E(t)(`changes.binaryFile`)),1)):(s(),x(Z,{key:2,class:`col`,"content-style":`padding: 8px`,"content-active-style":`padding: 8px`},{default:a(()=>[S(Ne,{path:E(r),lines:E(i),wrap:l.value},null,8,[`path`,`lines`,`wrap`])]),_:1}))]),_:1})):(s(),_(`div`,zt,M(E(t)(`browse.selectFile`)),1))}}),Ut=y({__name:`FileExplorer`,setup(e){let n=Be(),r=Se(),{browseMode:i}=q(n);b(()=>{n.refresh(),r.refresh()});let o=Q([`files:changed`],()=>void n.refreshFromServerEvent());t(()=>o.close());let c=Q([`review:created`,`review:updated`,`review:deleted`,`comment:created`,`comment:updated`,`comment:deleted`],()=>void r.refresh());return t(()=>c.close()),(e,t)=>(s(),x(Ge,null,{panel:a(()=>[S(wt)]),content:a(()=>[E(i)?(s(),x(Ht,{key:0})):(s(),x(Rt,{key:1}))]),_:1}))}}),Wt=y({__name:`IndexPage`,setup(e){return(e,t)=>(s(),x(be,null,{default:a(()=>[S(Ut)]),_:1}))}});export{Wt as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.repo-info[data-v-a2aececf]{line-height:1}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,A as t,C as n,E as r,H as i,I as a,M as o,N as s,U as c,V as l,X as u,Z as d,_t as f,b as p,c as m,d as h,g as ee,h as g,k as te,l as _,m as v,p as y,r as b,rt as x,s as S,u as C,v as w,yt as T,z as E}from"./runtime-core.esm-bundler-Wxr8ezGp.js";import{C as D,D as ne,S as re,c as O,f as k,h as ie,k as ae,m as A,o as j,t as M,w as N}from"./QBtn-Cf6WtiKt.js";import{d as P}from"./event-BQt_DXaR.js";import{r as oe}from"./Platform-CEDL_PgC.js";import{A as se,D as ce,E as le,J as F,K as ue,N as I,O as de,Q as fe,Z as pe,_ as me,k as L,q as R,v as z}from"./index-DphTOTJs.js";import{n as B}from"./vue-i18n.runtime-DSeWNwrW.js";import{r as V}from"./pinia-DK4OjQ7o.js";import{n as H,t as he}from"./app-info-store-BpeVVjNB.js";import{n as U}from"./use-app-theme-CsAmLZfp.js";import{_ as W,a as G,g as ge,h as K,i as _e,o as q,r as ve,t as J}from"./format-BWCY39oA.js";import{n as ye,t as be}from"./QTooltip-IUM54Nhj.js";var xe=P({name:`QPageContainer`,setup(e,{slots:t}){let n=re(),r=p(ne,N);if(r===N)return console.error(`QPageContainer needs to be child of QLayout`),N;s(ae,!0);let i=S(()=>{let e={};return r.header.space&&(e.paddingTop=`${r.header.size}px`),r.right.space&&(e[`padding${n.lang.rtl?`Left`:`Right`}`]=`${r.right.size}px`),r.footer.space&&(e.paddingBottom=`${r.footer.size}px`),r.left.space&&(e[`padding${n.lang.rtl?`Right`:`Left`}`]=`${r.left.size}px`),e});return()=>w(`div`,{class:`q-page-container`,style:i.value},A(t.default))}}),Se=/^(h|l)h(h|r) lpr (f|l)f(f|r)$/,Ce=P({name:`QLayout`,props:{container:Boolean,view:{type:String,default:`hhh lpr fff`,validator:e=>Se.test(e.toLowerCase())},onScroll:Function,onScrollHeight:Function,onResize:Function},setup(n,{slots:r,emit:i}){let a=re(),o=e(null),c=d(a.screen.height),f=d(n.container?0:a.screen.width),p=d({position:0,direction:`down`,inflectionPoint:0}),m=d(0),h=d(oe.value?0:I()),ee=S(()=>`q-layout q-layout--`+(n.container?`containerized`:`standard`)),g=S(()=>n.container?null:{minHeight:a.screen.height+`px`}),te=S(()=>h.value===0?null:{[a.lang.rtl?`left`:`right`]:`${h.value}px`}),_=S(()=>h.value===0?null:{[a.lang.rtl?`right`:`left`]:0,[a.lang.rtl?`left`:`right`]:`-${h.value}px`,width:`calc(100% + ${h.value}px)`}),v=null;function y(e){let t={position:e.position.top,direction:e.direction,directionChanged:e.directionChanged,inflectionPoint:e.inflectionPoint.top,delta:e.delta.top};n.container||!document.qScrollPrevented?(v=null,b(t)):v=t}function b(e){p.value=e,n.onScroll!==void 0&&i(`scroll`,e)}function x(e){let{height:t,width:r}=e,a=!1;c.value!==t&&(a=!0,c.value=t,n.onScrollHeight!==void 0&&i(`scrollHeight`,t),T()),f.value!==r&&(a=!0,f.value=r),a&&n.onResize!==void 0&&i(`resize`,e)}function C({height:e}){m.value!==e&&(m.value=e,T())}function T(){if(n.container){let e=c.value>m.value?I():0;h.value!==e&&(h.value=e)}}let E=null,D={instances:{},view:S(()=>n.view),isContainer:S(()=>n.container),rootRef:o,height:c,containerHeight:m,scrollbarWidth:h,totalWidth:S(()=>n.container?f.value+h.value:a.screen.width),rows:S(()=>{let e=n.view.toLowerCase().split(` `);return{top:[...e[0]],middle:[...e[1]],bottom:[...e[2]]}}),header:u({size:0,offset:0,space:!1}),right:u({size:300,offset:0,space:!1}),footer:u({size:0,offset:0,space:!1}),left:u({size:300,offset:0,space:!1}),scroll:p,animate(){E===null?document.body.classList.add(`q-body--layout-animate`):clearTimeout(E),E=setTimeout(()=>{E=null,document.body.classList.remove(`q-body--layout-animate`)},155)},update(e,t,n){D[e][t]=n}};s(ne,D);{let e=()=>{if(v!==null){let e=v;v=null,b(e)}};L(e),t(()=>{se(e)})}if(I()>0){let e=null,r=document.documentElement,i=()=>{e=null,r.classList.remove(`hide-scrollbar`)},o=()=>{if(e===null){if(r.scrollHeight>a.screen.height)return;r.classList.add(`hide-scrollbar`)}else clearTimeout(e);e=setTimeout(i,300)},s=t=>{e!==null&&t===`remove`&&(clearTimeout(e),i()),window[`${t}EventListener`](`resize`,o)};l(()=>n.container?`remove`:`add`,s),n.container||s(`add`),t(()=>{s(`remove`)})}return()=>{let e=k(r.default,[w(W,{onScroll:y}),w(ge,{onResize:x})]),t=w(`div`,{class:ee.value,style:g.value,ref:n.container?void 0:o,tabindex:-1},e);return n.container?w(`div`,{class:`q-layout-container overflow-hidden`,ref:o},[w(ge,{onResize:C}),w(`div`,{class:`absolute-full`,style:te.value},[w(`div`,{class:`scroll`,style:_.value},[t])])]):t}}}),we=P({name:`QToolbarTitle`,props:{shrink:Boolean},setup(e,{slots:t}){return()=>w(`div`,{class:`q-toolbar__title ellipsis`+(e.shrink?` col-shrink`:``)},A(t.default))}}),Y=P({name:`QToolbar`,props:{inset:Boolean},setup(e,{slots:t}){let n=S(()=>`q-toolbar row no-wrap items-center`+(e.inset?` q-toolbar--inset`:``));return()=>w(`div`,{class:n.value,role:`toolbar`},A(t.default))}});function X(e,t){e.value!==t&&(e.value=t)}var Z=P({name:`QHeader`,props:{modelValue:{type:Boolean,default:!0},reveal:Boolean,revealOffset:{type:Number,default:250},bordered:Boolean,elevated:Boolean,heightHint:{type:[String,Number],default:50}},emits:[`reveal`,`focusin`],setup(e,{slots:t,emit:n}){let i=re(),a=p(ne,N);if(a===N)return console.error(`QHeader needs to be child of QLayout`),N;let o=d(Number.parseInt(e.heightHint,10)),s=d(!0),c=S(()=>e.reveal||a.view.value.includes(`H`)||i.platform.is.ios&&a.isContainer.value),u=S(()=>{if(!e.modelValue)return 0;if(c.value)return s.value?o.value:0;let t=o.value-a.scroll.value.position;return Math.max(t,0)}),f=S(()=>!e.modelValue||c.value&&!s.value),m=S(()=>e.modelValue&&f.value&&e.reveal),h=S(()=>`q-header q-layout__section--marginal `+(c.value?`fixed`:`absolute`)+`-top`+(e.bordered?` q-header--bordered`:``)+(f.value?` q-header--hidden`:``)+(e.modelValue?``:` q-layout--prevent-focus`)),ee=S(()=>{let e=a.rows.value.top,t={};return e[0]===`l`&&a.left.space&&(t[i.lang.rtl?`right`:`left`]=`${a.left.size}px`),e[2]===`r`&&a.right.space&&(t[i.lang.rtl?`left`:`right`]=`${a.right.size}px`),t});function g(e,t){a.update(`header`,e,t)}function te({height:e}){X(o,e),g(`size`,e)}function _(e){m.value&&X(s,!0),n(`focusin`,e)}l(()=>e.modelValue,e=>{g(`space`,e),X(s,!0),a.animate()}),l(u,e=>{g(`offset`,e)}),l(()=>e.reveal,t=>{t||X(s,e.modelValue)}),l(s,e=>{a.animate(),n(`reveal`,e)}),l(a.scroll,t=>{e.reveal&&X(s,t.direction===`up`||t.position<=e.revealOffset||t.position-t.inflectionPoint<100)});let v={};return a.instances.header=v,e.modelValue&&g(`size`,o.value),g(`space`,e.modelValue),g(`offset`,u.value),r(()=>{a.instances.header===v&&(a.instances.header=void 0,g(`size`,0),g(`offset`,0),g(`space`,!1))}),()=>{let n=ie(t.default,[]);return e.elevated&&n.push(w(`div`,{class:`q-layout__shadow absolute-full overflow-hidden no-pointer-events`})),n.push(w(ge,{debounce:0,onResize:te})),w(`header`,{class:h.value,style:ee.value,onFocusin:_},n)}}}),Te={class:`text-weight-medium`},Ee={class:`row items-center gt-sm`},De=D(g({__name:`MainHeader`,emits:[`toggle-drawer`],setup(e,{emit:t}){let n=t,{t:r}=B(),{info:a}=V(H()),{version:s}=V(he()),{isDark:l,toggleTheme:u}=U();return(e,t)=>(o(),_(Z,{class:f(x(l)?`bg-dark text-white`:`bg-white text-dark`),bordered:``},{default:i(()=>[v(Y,null,{default:i(()=>[c(v(M,{flat:``,dense:``,round:``,icon:`menu`,"aria-label":x(r)(`nav.menu`),class:`q-mr-sm`,onClick:t[0]||=e=>n(`toggle-drawer`)},null,8,[`aria-label`]),[[j]]),v(we,{shrink:``,class:`text-weight-bold gt-xs`},{default:i(()=>[y(T(x(r)(`app.title`)),1)]),_:1}),x(s)?(o(),_(K,{key:0,outline:``,rounded:``,class:`text-primary q-ml-xs`},{default:i(()=>[y(` v`+T(x(s)),1)]),_:1})):C(``,!0),x(a)?(o(),h(`div`,{key:1,class:f([`row items-center q-gutter-x-sm text-body2 q-ml-md gt-sm repo-info`,x(l)?`text-grey-5`:`text-grey-7`])},[m(`span`,Te,T(x(a).name),1),x(a).branch?(o(),h(b,{key:0},[t[1]||=m(`span`,null,`/`,-1),v(K,{outline:``,class:`text-body2 text-primary`,rounded:``},{default:i(()=>[y(T(x(a).branch),1)]),_:1})],64)):C(``,!0)],2)):C(``,!0),v(ye),m(`div`,Ee,[v(M,{to:{path:`/`},flat:``,"no-caps":``,label:x(r)(`nav.changes`)},null,8,[`label`]),v(M,{to:{path:`/reviews`},flat:``,"no-caps":``,label:x(r)(`nav.reviews`)},null,8,[`label`])]),c((o(),_(M,{flat:``,round:``,dense:``,size:`sm`,icon:x(l)?`light_mode`:`dark_mode`,"aria-label":x(l)?x(r)(`theme.switchToLight`):x(r)(`theme.switchToDark`),class:`q-ml-xs gt-xs`,onClick:x(u)},{default:i(()=>[v(be,null,{default:i(()=>[y(T(x(l)?x(r)(`theme.switchToLight`):x(r)(`theme.switchToDark`)),1)]),_:1})]),_:1},8,[`icon`,`aria-label`,`onClick`])),[[j]])]),_:1})]),_:1},8,[`class`]))}}),[[`__scopeId`,`data-v-a2aececf`]]),Oe=150;function ke(e,t){e.value!==t&&(e.value=t)}var Ae=P({name:`QDrawer`,inheritAttrs:!1,props:{...F,...z,side:{type:String,default:`left`,validator:e=>[`left`,`right`].includes(e)},width:{type:Number,default:300},mini:Boolean,miniToOverlay:Boolean,miniWidth:{type:Number,default:57},noMiniAnimation:Boolean,breakpoint:{type:Number,default:1023},showIfAbove:Boolean,behavior:{type:String,validator:e=>[`default`,`desktop`,`mobile`].includes(e),default:`default`},bordered:Boolean,elevated:Boolean,overlay:Boolean,persistent:Boolean,noSwipeOpen:Boolean,noSwipeClose:Boolean,noSwipeBackdrop:Boolean},emits:[...R,`onLayout`,`miniState`,`escapeKey`],setup(e,{slots:t,emit:i,attrs:a}){let o=ee(),s=re(),u=me(e,s),{preventBodyScroll:f}=de(),{registerTimeout:m,removeTimeout:h}=pe(),g=p(ne,N);if(g===N)return console.error(`QDrawer needs to be child of QLayout`),N;let _,v=null,y,b=d(e.behavior===`mobile`||e.behavior!==`desktop`&&g.totalWidth.value<=e.breakpoint),x=S(()=>e.mini&&!b.value),C=S(()=>x.value?e.miniWidth:e.width),T=S(()=>e.overlay||e.miniToOverlay||g.view.value.includes(R.value?`R`:`L`)||s.platform.is.ios&&g.isContainer.value),E=d(e.showIfAbove&&!b.value||e.modelValue===!0),D=S(()=>!e.overlay&&E.value&&!b.value),O=S(()=>e.overlay&&E.value&&!b.value),k=S(()=>!e.persistent&&(b.value||O.value));function ie(e,t){if(P(),e!==!1&&g.animate(),X(0),b.value){let e=g.instances[U.value];e?.belowBreakpoint.value&&e.hide(!1),Z(1),g.isContainer.value||f(!0)}else Z(0),e!==!1&&Te(!1);m(()=>{e!==!1&&Te(!0),t||i(`show`,e)},Oe)}function ae(e,t){oe(),e!==!1&&g.animate(),Z(0),X(z.value*C.value),je(),t?h():m(()=>{i(`hide`,e)},Oe)}let{show:j,hide:M}=ue({showing:E,hideOnRouteChange:k,handleShow:ie,handleHide:ae}),{addToHistory:P,removeFromHistory:oe}=fe(E,M,k),se=S(()=>E.value&&k.value);function F(e){i(`escapeKey`),M(e)}function I(e){e?le(F):ce(F)}let L={belowBreakpoint:b,hide:M},R=S(()=>e.side===`right`),z=S(()=>(s.lang.rtl?-1:1)*(R.value?1:-1)),B=d(0),V=d(!1),H=d(!1),he=d(C.value*z.value),U=S(()=>R.value?`left`:`right`),W=S(()=>E.value&&!b.value&&!e.overlay?e.miniToOverlay?e.miniWidth:C.value:0),G=S(()=>`fullscreen q-drawer__backdrop`+(!E.value&&!V.value?` hidden`:``)),ge=S(()=>({backgroundColor:`rgba(0,0,0,${B.value*.4})`})),K=S(()=>R.value?g.rows.value.top[2]===`r`:g.rows.value.top[0]===`l`),_e=S(()=>R.value?g.rows.value.bottom[2]===`r`:g.rows.value.bottom[0]===`l`),q=S(()=>{let e={};return g.header.space&&!K.value&&(T.value?e.top=`${g.header.offset}px`:g.header.space&&(e.top=`${g.header.size}px`)),g.footer.space&&!_e.value&&(T.value?e.bottom=`${g.footer.offset}px`:g.footer.space&&(e.bottom=`${g.footer.size}px`)),e}),ye=S(()=>{let e={width:`${C.value}px`,transform:`translateX(${he.value}px)`};return b.value?e:Object.assign(e,q.value)}),be=S(()=>`q-drawer__content fit `+(g.isContainer.value?`overflow-auto`:`scroll`)),xe=S(()=>`q-drawer q-drawer--${e.side}`+(H.value?` q-drawer--mini-animate`:``)+(e.bordered?` q-drawer--bordered`:``)+(u()?` q-drawer--dark q-dark`:``)+(V.value?` no-transition`:E.value?``:` q-layout--prevent-focus`)+(b.value?` fixed q-drawer--on-top q-drawer--mobile q-drawer--top-padding`:` q-drawer--${x.value?`mini`:`standard`}`+(T.value||!D.value?` fixed`:``)+(e.overlay||e.miniToOverlay?` q-drawer--on-top`:``)+(K.value?` q-drawer--top-padding`:``))),Se=S(()=>{let t=s.lang.rtl?e.side:U.value;return[[ve,De,void 0,{[t]:!0,mouse:!0}]]}),Ce=S(()=>{let t=s.lang.rtl?U.value:e.side;return[[ve,b.value&&!e.noSwipeClose?Ae:void 0,void 0,{[t]:!0,mouse:!0}]]}),we=S(()=>{let t=s.lang.rtl?U.value:e.side;return[[ve,E.value&&!e.noSwipeBackdrop?Ae:void 0,void 0,{[t]:!0,mouse:!0,mouseAllDir:!0}]]});function Y(){ke(b,e.behavior===`mobile`||e.behavior!==`desktop`&&g.totalWidth.value<=e.breakpoint)}l(b,t=>{t?(_=E.value,E.value&&M(!1)):E.value?(X(0),Z(0),je()):!e.overlay&&e.behavior!==`mobile`&&_!==!1&&j(!1)}),l(()=>e.side,(e,t)=>{g.instances[t]===L&&(g.instances[t]=void 0,g[t].space=!1,g[t].offset=0),g.instances[e]=L,g[e].size=C.value,g[e].space=D.value,g[e].offset=W.value}),l(g.totalWidth,()=>{(g.isContainer.value||!document.qScrollPrevented)&&Y()}),l(()=>e.behavior+e.breakpoint,Y),l(g.isContainer,e=>{E.value&&f(!e),e&&Y()}),l(g.scrollbarWidth,()=>{X(E.value?0:void 0)}),l(W,e=>{Q(`offset`,e)}),l(D,e=>{i(`onLayout`,e),Q(`space`,e)}),l(R,()=>{X()}),l(C,t=>{X(),$(e.miniToOverlay,t)}),l(()=>e.miniToOverlay,e=>{$(e,C.value)}),l(()=>s.lang.rtl,()=>{X()}),l(()=>e.mini,()=>{e.noMiniAnimation||e.modelValue&&(Ee(),g.animate())}),l(x,e=>{i(`miniState`,e)});function X(e){e===void 0?n(()=>{e=E.value?0:C.value,X(z.value*e)}):(g.isContainer.value&&R.value&&(b.value||Math.abs(e)===C.value)&&(e+=z.value*g.scrollbarWidth.value),he.value=e)}function Z(e){B.value=e}function Te(e){let t=e?`remove`:g.isContainer.value?``:`add`;t!==``&&document.body.classList[t](`q-body--drawer-toggle`)}function Ee(){v!==null&&clearTimeout(v),o.proxy&&o.proxy.$el&&o.proxy.$el.classList.add(`q-drawer--mini-animate`),H.value=!0,v=setTimeout(()=>{v=null,H.value=!1,o?.proxy?.$el?.classList.remove(`q-drawer--mini-animate`)},150)}function De(e){if(E.value)return;let t=C.value,n=J(e.distance.x,0,t);if(e.isFinal){n>=Math.min(75,t)?j():(g.animate(),Z(0),X(z.value*t)),V.value=!1;return}X((s.lang.rtl?!R.value:R.value)?Math.max(t-n,0):Math.min(0,n-t)),Z(J(n/t,0,1)),e.isFirst&&(V.value=!0)}function Ae(t){if(!E.value)return;let n=C.value,r=t.direction===e.side,i=(s.lang.rtl?!r:r)?J(t.distance.x,0,n):0;if(t.isFinal){Math.abs(i)<Math.min(75,n)?(g.animate(),Z(1),X(0)):M(),V.value=!1;return}X(z.value*i),Z(J(1-i/n,0,1)),t.isFirst&&(V.value=!0)}function je(){f(!1),Te(!0)}function Q(t,n){g.update(e.side,t,n)}function $(t,n){Q(`size`,t?e.miniWidth:n)}return g.instances[e.side]=L,$(e.miniToOverlay,C.value),Q(`space`,D.value),Q(`offset`,W.value),e.showIfAbove&&!e.modelValue&&E.value&&e[`onUpdate:modelValue`]!==void 0&&i(`update:modelValue`,!0),te(()=>{i(`onLayout`,D.value),i(`miniState`,x.value),l(se,I,{immediate:!0}),_=e.showIfAbove;let t=()=>{(E.value?ie:ae)(!1,!0)};if(g.totalWidth.value!==0){n(t);return}y=l(g.totalWidth,()=>{y(),y=void 0,!E.value&&e.showIfAbove&&!b.value?j(!1):t()})}),r(()=>{y?.(),ce(F),v!==null&&(clearTimeout(v),v=null),E.value&&je(),g.instances[e.side]===L&&(g.instances[e.side]=void 0,Q(`size`,0),Q(`offset`,0),Q(`space`,!1))}),()=>{let n=[];b.value&&(e.noSwipeOpen||n.push(c(w(`div`,{key:`open`,class:`q-drawer__opener fixed-${e.side}`,"aria-hidden":`true`}),Se.value)),n.push(c(w(`div`,{ref:`backdrop`,class:G.value,style:ge.value,"aria-hidden":`true`,onClick:M}),we.value)));let r={},i={};for(let e in a)e===`role`||e.startsWith(`aria-`)?r[e]=a[e]:i[e]=a[e];let o=x.value&&t.mini!==void 0,s=[w(`div`,{...i,key:String(o),class:[be.value,a.class]},o?t.mini():A(t.default))];return e.elevated&&E.value&&s.push(w(`div`,{class:`q-layout__shadow absolute-full overflow-hidden no-pointer-events`})),n.push(c(w(`aside`,{ref:`content`,class:xe.value,style:ye.value,...r},s),Ce.value)),w(`div`,{class:`q-drawer-container`},n)}}}),je={class:`fit column no-wrap`},Q=g({__name:`MainMenu`,props:{modelValue:{type:[Boolean,null],required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=E(e,`modelValue`),{t:n}=B(),{isDark:r,toggleTheme:a}=U();return(e,s)=>(o(),_(Ae,{modelValue:t.value,"onUpdate:modelValue":s[0]||=e=>t.value=e,"show-if-above":``,bordered:``,width:220,dark:x(r)},{default:i(()=>[m(`div`,je,[v(_e,{class:`col scroll`},{default:i(()=>[c((o(),_(G,{clickable:``,to:{path:`/`}},{default:i(()=>[v(q,{avatar:``},{default:i(()=>[v(O,{name:`compare_arrows`})]),_:1}),v(q,null,{default:i(()=>[y(T(x(n)(`nav.changes`)),1)]),_:1})]),_:1})),[[j]]),c((o(),_(G,{clickable:``,to:{path:`/reviews`}},{default:i(()=>[v(q,{avatar:``},{default:i(()=>[v(O,{name:`rate_review`})]),_:1}),v(q,null,{default:i(()=>[y(T(x(n)(`nav.reviews`)),1)]),_:1})]),_:1})),[[j]])]),_:1}),v(_e,{bordered:``,dark:x(r)},{default:i(()=>[c((o(),_(G,{clickable:``,onClick:x(a)},{default:i(()=>[v(q,{avatar:``},{default:i(()=>[v(O,{name:x(r)?`light_mode`:`dark_mode`},null,8,[`name`])]),_:1}),v(q,null,{default:i(()=>[y(T(x(r)?x(n)(`theme.switchToLight`):x(n)(`theme.switchToDark`)),1)]),_:1})]),_:1},8,[`onClick`])),[[j]])]),_:1},8,[`dark`])])]),_:1},8,[`modelValue`,`dark`]))}}),$=g({__name:`MainLayout`,setup(e){let t=d(!1);function n(){t.value=!t.value}return(e,r)=>{let s=a(`router-view`);return o(),_(Ce,{view:`hHh lpr fFf`},{default:i(()=>[v(De,{onToggleDrawer:n}),v(Q,{modelValue:t.value,"onUpdate:modelValue":r[0]||=e=>t.value=e},null,8,[`modelValue`]),v(xe,null,{default:i(()=>[v(s)]),_:1})]),_:1})}}});export{$ as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,E as t,V as n,Z as r,g as i,s as a,v as o}from"./runtime-core.esm-bundler-Wxr8ezGp.js";import{P as ee,S as te,m as s}from"./QBtn-Cf6WtiKt.js";import{d as c,n as l,o as u,t as d}from"./event-BQt_DXaR.js";import{D as f,E as p,G as m,J as h,K as ne,R as re,W as ie,X as ae,Y as oe,d as se,q as g}from"./index-
|
|
1
|
+
import{$ as e,E as t,V as n,Z as r,g as i,s as a,v as o}from"./runtime-core.esm-bundler-Wxr8ezGp.js";import{P as ee,S as te,m as s}from"./QBtn-Cf6WtiKt.js";import{d as c,n as l,o as u,t as d}from"./event-BQt_DXaR.js";import{D as f,E as p,G as m,J as h,K as ne,R as re,W as ie,X as ae,Y as oe,d as se,q as g}from"./index-DphTOTJs.js";import{c as _,d as ce,l as v,m as y,p as b,s as x,u as S}from"./format-BWCY39oA.js";var C=c({name:`QSpace`,setup(){let e=o(`div`,{class:`q-space`});return()=>e}}),w=0,le=100,T=4;function ue(e){return e.pointerType===`touch`||e.pointerType===`pen`&&e.buttons!==0}var E=c({name:`QTooltip`,inheritAttrs:!1,props:{...b,...h,...m,maxHeight:{type:String,default:null},maxWidth:{type:String,default:null},transitionShow:{...m.transitionShow,default:`jump-down`},transitionHide:{...m.transitionHide,default:`jump-up`},anchor:{type:String,default:`bottom middle`,validator:S},self:{type:String,default:`top middle`,validator:S},offset:{type:Array,default:()=>[14,14],validator:v},cursorPosition:Boolean,delay:{type:Number,default:0},hideDelay:{type:Number,default:0},persistent:Boolean},emits:[...g],setup(c,{slots:m,emit:h,attrs:g}){let v,b=!1,S=null,C=null,E,D=i(),O=te(),k=e(null),A=r(!1),de=se();function j(){return g.id||de.value}let M=a(()=>_(c.anchor,O.lang.rtl)),N=a(()=>_(c.self,O.lang.rtl)),P=a(()=>!c.persistent),{registerTimeout:F,registerTransitionEnd:I}=ae(c),{transitionProps:L,transitionStyle:R}=ie(c),{anchorEl:z,canShow:B,anchorEvents:V}=ce({showing:A,configureAnchorEl:be}),{show:H,hide:U}=ne({showing:A,canShow:B,handleShow:he,handleHide:ge,hideOnRouteChange:P,processOnMount:!0});Object.assign(V,{delayShow:J,delayHide:ve,onFocusin:ye,onPointerdown:_e,onCursorMove:X});let{showPortal:W,hidePortal:G,renderPortal:fe}=re(D,k,we,`tooltip`),{registerTick:pe,removeTick:me}=oe(),K=x({props:c,$q:O,anchorEl:z,innerRef:k,showing:A,anchorOrigin:M,selfOrigin:N,trackContent:!0});n(()=>(c.modelValue===null||c[`onUpdate:modelValue`])&&A.value===!0&&c.persistent!==!0,e=>{(e===!0?p:f)(Q)});function he(e){l(V,`cursorTemp`),W(),xe(),K.handleShow(c.cursorPosition?e:void 0),pe(K.handleTick),I(()=>{W(!0),h(`show`,e)})}function ge(e){me(),G(),q(!0),I(()=>{G(!0),K.releaseAnchor(!1),h(`hide`,e)})}function q(e){K.releaseAnchor(e),f(Q),S=null,l(V,`tooltipTemp`),l(V,`cursorTemp`),Se(),$(!1)}function J(e){if(e.pointerType===`touch`&&e.isPrimary===!1)return;let t=ue(e);if(t&&Z(e),c.cursorPosition&&!t){let t=u(e);if(t.left!==void 0){C=t,d(V,`cursorTemp`,[[z.value,`pointermove`,`onCursorMove`,`passive`]]),Y(e);return}}F(()=>{H(e)},c.delay)}function Y(e){F(()=>{H(e)},Math.max(c.delay,le))}function X(e){let t=u(e);Math.abs(t.left-C.left)<=T&&Math.abs(t.top-C.top)<=T||(C=t,Y(e))}function Z(e){S=e.pointerType,v!==void 0&&(clearTimeout(v),v=void 0),y(),$(!0);let t=z.value,n=[`touchmove`,`touchcancel`,`touchend`,`click`].map(e=>[t,e,`delayHide`,`passiveCapture`]);d(V,`tooltipTemp`,n)}function _e(e){e.pointerType===`pen`&&S===null&&Z(e)}function ve(e){if((e.pointerType!==`touch`||e.isPrimary!==!1)&&!(e.type===`focusout`&&z.value!==null&&z.value.contains(e.relatedTarget))){if(l(V,`cursorTemp`),S!==null){let t=S===`pen`&&(e.type===`click`||e.type===`touchend`);if(S=null,l(V,`tooltipTemp`),y(),v=setTimeout(()=>{v=void 0,$(!1)},10),t)return}F(()=>{U(e)},c.hideDelay)}}function ye(e){let t=e.target;t&&t.matches(`:focus-visible`)&&J(e)}function Q(e){U(e)}function be(){if(c.noParentEvent||z.value===null)return;let e=[[z.value,`pointerenter`,`delayShow`,`passive`],[z.value,`pointerdown`,`onPointerdown`,`passive`],[z.value,`pointerleave`,`delayHide`,`passive`],[z.value,`focusin`,`onFocusin`,`passive`],[z.value,`focusout`,`delayHide`,`passive`]];d(V,`anchor`,e)}function $(e){b!==e&&(b=e,w+=e?1:-1,document.body.classList.toggle(`non-selectable`,w>0),!e&&v!==void 0&&(clearTimeout(v),v=void 0))}function xe(){let e=z.value,t=j();if(e===null||t===void 0)return;let n=(e.getAttribute(`aria-describedby`)||``).split(/\s+/).filter(Boolean);E={el:e,id:t,added:!n.includes(t)},E.added&&(n.push(t),e.setAttribute(`aria-describedby`,n.join(` `)))}function Se(){if(E?.added===!0){let{el:e,id:t}=E,n=(e.getAttribute(`aria-describedby`)||``).split(/\s+/).filter(e=>e!==``&&e!==t);n.length===0?e.removeAttribute(`aria-describedby`):e.setAttribute(`aria-describedby`,n.join(` `))}E=void 0}function Ce(){return A.value?o(`div`,{...g,id:j(),ref:k,class:[`q-tooltip q-tooltip--style no-pointer-events`+(K.viaCssAnchor?``:` q-position-engine`),g.class],style:[g.style,R(),K.positionStyle.value],role:`tooltip`},s(m.default)):null}function we(){return o(ee,L(),Ce)}return t(()=>{q(!1)}),Object.assign(D.proxy,{updatePosition:K.updatePosition}),fe}});export{C as n,E as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,H as t,M as n,P as r,S as i,V as a,Z as o,c as s,d as c,h as l,k as u,l as d,m as f,p,r as m,rt as h,s as g,u as _,yt as v}from"./runtime-core.esm-bundler-Wxr8ezGp.js";import{C as y,R as b,S as x,c as ee,s as te,t as S}from"./QBtn-Cf6WtiKt.js";import{et as C,p as w,tt as T}from"./index-
|
|
1
|
+
import{A as e,H as t,M as n,P as r,S as i,V as a,Z as o,c as s,d as c,h as l,k as u,l as d,m as f,p,r as m,rt as h,s as g,u as _,yt as v}from"./runtime-core.esm-bundler-Wxr8ezGp.js";import{C as y,R as b,S as x,c as ee,s as te,t as S}from"./QBtn-Cf6WtiKt.js";import{et as C,p as w,tt as T}from"./index-DphTOTJs.js";import{n as E}from"./vue-i18n.runtime-DSeWNwrW.js";import{n as D,r as O}from"./pinia-DK4OjQ7o.js";import{i as k,n as A,r as j}from"./client-De34x_P_.js";import{n as M,t as N}from"./QTooltip-IUM54Nhj.js";import{c as P,l as ne,t as F,u as I}from"./AppPage-BeqKILJT.js";import{c as L,n as R,t as z}from"./StatusSwitcher-CUOMaD34.js";function B(e){return{...e,oldPath:I(e.oldPath),newPath:I(e.newPath)}}var V=D(`review-detail`,()=>{let e=o(null),t=o([]),n=o(!1),r=o(null),i=g(()=>e.value?JSON.parse(e.value.snapshotData).map(B):[]),a=g(()=>{let e=new Map;for(let n of t.value){let t=e.get(n.filePath);t?t.push(n):e.set(n.filePath,[n])}return e});async function s(i){n.value=!0,r.value=null;try{let[n,r]=await Promise.all([j(`/api/reviews/${i}`),j(`/api/reviews/${i}/comments`)]);e.value=n,t.value=r}catch(n){e.value=null,t.value=[],r.value=n instanceof Error?n.message:String(n)}finally{n.value=!1}}async function c(){e.value&&(t.value=await j(`/api/reviews/${e.value.id}/comments`))}async function l(t){e.value&&=await k(`/api/reviews/${e.value.id}`,{status:t})}async function u(e,n){let r=await k(`/api/comments/${e}`,{content:n});t.value=t.value.map(t=>t.id===e?r:t)}async function d(e){await A(`/api/comments/${e}`),t.value=t.value.filter(t=>t.id!==e)}async function f(e){let n=await k(`/api/comments/${e}/resolve`);t.value=t.value.map(t=>t.id===e?n:t)}async function p(e){let n=await k(`/api/comments/${e}/unresolve`);t.value=t.value.map(t=>t.id===e?n:t)}return{review:e,comments:t,loading:n,error:r,files:i,commentsByFile:a,load:s,refreshComments:c,setStatus:l,editComment:u,deleteComment:d,resolveComment:f,unresolveComment:p}}),H=l({__name:`DownloadButton`,props:{url:{},filename:{},tooltip:{}},setup(e){let r=e,a=x(),{t:s}=E(),c=o(!1);async function l(){c.value=!0;try{let e=await fetch(r.url);if(!e.ok)throw Error(`Request failed with status ${e.status}`);let t=await e.text(),n=URL.createObjectURL(new Blob([t],{type:`text/markdown`})),i=document.createElement(`a`);i.href=n,i.download=r.filename,i.click(),URL.revokeObjectURL(n)}catch(e){a.notify({type:`negative`,message:s(`reviews.detail.downloadError`),caption:e instanceof Error?e.message:String(e)})}finally{c.value=!1}}return(r,a)=>(n(),d(S,i(r.$attrs,{padding:`4px`,flat:``,dense:``,round:``,loading:c.value,icon:`download`,"aria-label":e.tooltip,onClick:b(l,[`stop`])}),{default:t(()=>[e.tooltip?(n(),d(N,{key:0},{default:t(()=>[p(v(e.tooltip),1)]),_:1})):_(``,!0)]),_:1},16,[`loading`,`aria-label`]))}}),U={class:`review-detail-page__header q-pa-sm`},W={class:`row items-center q-gutter-x-sm`},G={class:`text-h6 ellipsis`},K={class:`row items-center q-gutter-x-sm q-mt-xs`},q={class:`text-caption text-grey-6`},J={key:0,class:`q-pa-md text-grey-6`},Y=y(l({__name:`ReviewDetailPage`,setup(i){let{t:l}=E(),y=x(),b=C(),D=T(),k=V(),{review:A,files:j,commentsByFile:N,loading:I}=O(k),B=g(()=>String(b.params.id)),Y=o(new Set),X=g(()=>j.value.filter(e=>(N.value.get(L(e))??[]).length>0)),re=g(()=>`/api/reviews/${B.value}/export?format=markdown`),ie=g(()=>`${(A.value?.name??A.value?.id??`review`).replace(/[/\\:*?"<>|]/g,`-`)}.md`);function Z(){k.load(B.value),Y.value=new Set}u(Z),a(B,Z);let ae=ne([`comment:created`,`comment:updated`,`comment:deleted`],()=>void k.refreshComments());e(()=>ae.close());function Q(e){let t=new Set(Y.value);t.has(e)?t.delete(e):t.add(e),Y.value=t}function oe(e){Y.value=new Set(Y.value).add(e)}function se(e){k.setStatus(e)}async function $(e){try{await e()}catch(e){y.notify({type:`negative`,message:l(`reviews.comments.error`),caption:e instanceof Error?e.message:String(e)})}}function ce(e,t){$(()=>k.editComment(e,t))}function le(e){$(()=>k.deleteComment(e))}function ue(e){$(()=>k.resolveComment(e))}function de(e){$(()=>k.unresolveComment(e))}function fe(){D.push(`/reviews`)}return(e,i)=>h(I)?(n(),d(F,{key:0,class:`row justify-center q-pa-lg`},{default:t(()=>[f(te,{color:`primary`,size:`2em`})]),_:1})):h(A)?(n(),d(F,{key:2,class:`review-detail-page column no-wrap q-pa-md`},{default:t(()=>[s(`div`,U,[s(`div`,W,[f(S,{flat:``,dense:``,round:``,icon:`arrow_back`,onClick:fe}),s(`div`,G,v(h(A).name??h(l)(`reviews.list.unnamed`)),1),f(M),f(H,{url:re.value,filename:ie.value,tooltip:h(l)(`reviews.detail.download`)},null,8,[`url`,`filename`,`tooltip`])]),s(`div`,K,[s(`span`,q,[f(ee,{name:`account_tree`,size:`14px`}),p(` `+v(h(A).branch??h(l)(`reviews.list.unknownBranch`)),1)]),f(M),f(z,{status:h(A).status,onChange:se},null,8,[`status`])])]),f(w),f(P,{class:`col`,"content-style":`padding: 8px`},{default:t(()=>[X.value.length===0?(n(),c(`p`,J,v(h(l)(`reviews.detail.noComments`)),1)):_(``,!0),(n(!0),c(m,null,r(X.value,e=>(n(),d(R,{key:h(L)(e),file:e,source:`unstaged`,"target-ref":`WORKTREE`,expanded:Y.value.has(h(L)(e)),comments:h(N).get(h(L)(e))??[],"comments-only":``,"comments-editable":``,"no-full-file":``,onToggle:t=>Q(h(L)(e)),onExpand:t=>oe(h(L)(e)),onEditComment:ce,onDeleteComment:le,onResolveComment:ue,onUnresolveComment:de},null,8,[`file`,`expanded`,`comments`,`onToggle`,`onExpand`]))),128))]),_:1})]),_:1})):(n(),d(F,{key:1,class:`q-pa-lg text-grey-6`},{default:t(()=>[p(v(h(l)(`reviews.detail.notFound`)),1)]),_:1}))}}),[[`__scopeId`,`data-v-1bd24089`]]);export{Y as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,A as t,C as n,D as r,E as i,H as a,M as o,O as s,P as c,T as l,U as u,V as d,Z as f,c as p,d as m,g as h,h as g,j as _,k as ee,l as v,m as y,p as b,r as x,rt as S,s as C,u as w,v as T,w as te,yt as E,z as D}from"./runtime-core.esm-bundler-Wxr8ezGp.js";import{C as O,N as ne,S as re,c as k,d as ie,f as ae,j as oe,l as A,o as j,p as M,s as se,t as N,y as ce}from"./QBtn-Cf6WtiKt.js";import{a as P,d as F,l as I,s as L,u as R}from"./event-BQt_DXaR.js";import{H as le,_ as ue,a as de,c as fe,i as pe,it as me,l as z,n as he,o as ge,ot as _e,p as ve,r as ye,s as be,tt as xe,u as Se,v as Ce,y as we}from"./index-DphTOTJs.js";import{n as Te}from"./vue-i18n.runtime-DSeWNwrW.js";import{r as Ee}from"./pinia-DK4OjQ7o.js";import{a as De,h as B,i as V,n as Oe,o as ke}from"./format-BWCY39oA.js";import{a as Ae,c as je,i as Me,l as Ne,r as Pe,t as Fe}from"./AppPage-BeqKILJT.js";import{i as Ie,n as H,r as Le,t as Re}from"./CreateReviewFabButton-wjxKeOL1.js";var ze=F({name:`QField`,inheritAttrs:!1,props:{...z,tag:{type:String,default:`label`}},emits:fe,setup(){return be(Se({tagProp:!0}))}});function Be(e){e.keyCode===32&&R(e)}var Ve=A({xs:8,sm:10,md:14,lg:20,xl:24}),He=F({name:`QChip`,props:{...Ce,...ie,dense:Boolean,icon:String,iconRight:String,iconRemove:String,iconSelected:String,label:[String,Number],color:String,textColor:String,modelValue:{type:Boolean,default:!0},selected:{type:Boolean,default:null},square:Boolean,outline:Boolean,clickable:{type:Boolean,default:null},onClick:Function,removable:Boolean,removeAriaLabel:String,tabindex:[String,Number],disable:Boolean,ripple:{type:[Boolean,Object],default:!0}},emits:[`update:modelValue`,`update:selected`,`remove`],setup(e,{slots:t,emit:n}){let r=re(),i=ue(e,r),a=C(()=>e.selected||e.icon!==void 0),o=C(()=>e.selected?e.iconSelected||r.iconSet.chip.selected:e.icon),s=C(()=>e.iconRemove||r.iconSet.chip.remove),c=C(()=>(e.clickable===null?e.onClick!==void 0:e.clickable)||e.selected!==null),l=C(()=>!e.disable&&c.value),d=C(()=>{let t=e.outline&&e.color||e.textColor;return`q-chip row inline no-wrap items-center`+(!e.outline&&e.color!==void 0?` bg-${e.color}`:``)+(t?` text-${t} q-chip--colored`:``)+(e.disable?` disabled`:``)+(e.dense?` q-chip--dense`:``)+(e.outline?` q-chip--outline`:``)+(e.selected?` q-chip--selected`:``)+(l.value?` q-chip--clickable cursor-pointer non-selectable q-hoverable`:``)+(e.square?` q-chip--square`:``)+(i()?` q-chip--dark q-dark`:``)}),f=C(()=>({chip:e.disable?{role:`button`,tabindex:-1,"aria-disabled":`true`}:{role:`button`,tabindex:e.tabindex||0,...e.selected===null?{}:{"aria-pressed":e.selected?`true`:`false`}},remove:{role:`button`,"aria-hidden":`false`,"aria-label":e.removeAriaLabel||r.lang.label.remove,...e.disable?{tabindex:-1,"aria-disabled":`true`}:{tabindex:e.tabindex||0}}}));function p(e){[13,32].includes(e.keyCode)&&(m(e),R(e))}function m(t){e.disable||(n(`update:selected`,!e.selected),n(`click`,t))}function h(t){(t.keyCode===void 0||[13,32].includes(t.keyCode))&&(R(t),e.disable||(n(`update:modelValue`,!1),n(`remove`)))}function g(){let n=[];l.value&&n.push(T(`div`,{class:`q-focus-helper`})),a.value&&n.push(T(k,{class:`q-chip__icon q-chip__icon--left`,name:o.value}));let r=e.label===void 0?void 0:[T(`div`,{class:`ellipsis`},[e.label])];return n.push(T(`div`,{class:`q-chip__content col row no-wrap items-center q-anchor--skip`},M(t.default,r))),e.iconRight&&n.push(T(k,{class:`q-chip__icon q-chip__icon--right`,name:e.iconRight})),e.removable&&n.push(T(k,{class:`q-chip__icon q-chip__icon--remove cursor-pointer`,name:s.value,...f.value.remove,onClick:h,onKeydown:Be,onKeyup:h})),n}return()=>{if(!e.modelValue)return;let t={class:d.value};return e.size!==void 0&&(t.style=Ve(e.size)),c.value&&Object.assign(t,f.value.chip),l.value&&Object.assign(t,{onClick:m,onKeydown:Be,onKeyup:p}),u(T(`div`,t,g()),[[j,e.disable||e.ripple===!1?!1:e.ripple]])}}}),U=1e3,Ue=[`start`,`center`,`end`,`start-force`,`center-force`,`end-force`],We=Array.prototype.filter,Ge=window.getComputedStyle(document.body).overflowAnchor===void 0?P:function(e,t){e!==null&&(e._qOverflowAnimationFrame!==void 0&&cancelAnimationFrame(e._qOverflowAnimationFrame),e._qOverflowAnimationFrame=requestAnimationFrame(()=>{if(e===null)return;e._qOverflowAnimationFrame=void 0;let n=e.children||[];We.call(n,e=>e.dataset&&e.dataset.qVsAnchor!==void 0).forEach(e=>{delete e.dataset.qVsAnchor});let r=n[t];r?.dataset&&(r.dataset.qVsAnchor=``)}))};function Ke(e,t){return e+t}function qe(e,t,n,r,i,a,o,s){let c=e===window?document.scrollingElement||document.documentElement:e,l=i?`width`:`height`,u={scrollStart:0,scrollViewSize:-o-s,scrollMaxSize:0,offsetStart:-o,offsetEnd:-s};if(i?(e===window?(u.scrollStart=window.scrollX,u.scrollViewSize+=document.documentElement.clientWidth):(u.scrollStart=c.scrollLeft,u.scrollViewSize+=c.clientWidth),u.scrollMaxSize=c.scrollWidth,a&&(u.scrollStart=-u.scrollStart)):(e===window?(u.scrollStart=window.scrollY,u.scrollViewSize+=document.documentElement.clientHeight):(u.scrollStart=c.scrollTop,u.scrollViewSize+=c.clientHeight),u.scrollMaxSize=c.scrollHeight),n!==null)for(let e=n.previousElementSibling;e!==null;e=e.previousElementSibling)e.classList.contains(`q-virtual-scroll--skip`)||(u.offsetStart+=e.getBoundingClientRect()[l]);if(r!==null)for(let e=r.nextElementSibling;e!==null;e=e.nextElementSibling)e.classList.contains(`q-virtual-scroll--skip`)||(u.offsetEnd+=e.getBoundingClientRect()[l]);if(t!==e){let n=c.getBoundingClientRect(),r=t.getBoundingClientRect();i?(u.offsetStart+=r.left-n.left,u.offsetEnd-=r.width):(u.offsetStart+=r.top-n.top,u.offsetEnd-=r.height),e!==window&&(u.offsetStart+=u.scrollStart),u.offsetEnd+=u.scrollMaxSize-u.offsetStart}return u}function Je(e,t,n,r){if(t===`end`&&(t=(e===window?document.body:e)[n?`scrollWidth`:`scrollHeight`]),e===window){let e,i;n?(r&&(t=-t),e=t,i=window.scrollY):(e=window.scrollX,i=t),window.scrollTo({left:e,top:i,behavior:`instant`})}else n?(r&&(t=-t),e.scrollTo({left:t,behavior:`instant`})):e.scrollTo({top:t,behavior:`instant`})}function W(e,t,n,r){if(n>=r)return 0;let i=t.length,a=Math.floor(n/U),o=Math.floor((r-1)/U)+1,s=0;for(let t=a;t<o;t++)s+=e[t];if(n%U!==0)for(let e=a*U;e<n;e++)s-=t[e];if(r%U!==0&&r!==i){let e=Math.min(o*U,i);for(let n=r;n<e;n++)s-=t[n]}return s}var Ye={virtualScrollSliceSize:{type:[Number,String],default:10},virtualScrollSliceRatioBefore:{type:[Number,String],default:1},virtualScrollSliceRatioAfter:{type:[Number,String],default:1},virtualScrollItemSize:{type:[Number,String],default:24},virtualScrollStickySizeStart:{type:[Number,String],default:0},virtualScrollStickySizeEnd:{type:[Number,String],default:0},tableColspan:[Number,String]};Object.keys(Ye);var Xe={virtualScrollHorizontal:Boolean,onVirtualScroll:Function,...Ye};function Ze({virtualScrollLength:t,getVirtualScrollTarget:r,getVirtualScrollEl:a,virtualScrollItemSizeComputed:o}){let{props:c,emit:u,proxy:p}=h(),m=re(),g,_,ee,v=[],y,b=f(0),x=f(0),S=f({}),w=e(null),E=e(null),D=e(null),O=f({from:0,to:0}),ne=C(()=>c.tableColspan===void 0?100:c.tableColspan);o===void 0&&(o=C(()=>c.virtualScrollItemSize));let k=C(()=>o.value+`;`+c.virtualScrollHorizontal),ie=C(()=>k.value+`;`+c.virtualScrollSliceRatioBefore+`;`+c.virtualScrollSliceRatioAfter);d(ie,()=>{P()}),d(k,ae);function ae(){ce(_,!0)}function oe(e){ce(e===void 0?_:e)}function A(e,n){let i=r();if(i==null||i.nodeType===8)return;let o=qe(i,a(),w.value,E.value,c.virtualScrollHorizontal,m.lang.rtl,c.virtualScrollStickySizeStart,c.virtualScrollStickySizeEnd);ee!==o.scrollViewSize&&P(o.scrollViewSize),M(i,o,Math.min(t.value-1,Math.max(0,Number.parseInt(e,10)||0)),0,Ue.includes(n)?n:_!==-1&&e>_?`end`:`start`)}function j(){let e=r();if(e==null||e.nodeType===8)return;let n=qe(e,a(),w.value,E.value,c.virtualScrollHorizontal,m.lang.rtl,c.virtualScrollStickySizeStart,c.virtualScrollStickySizeEnd),i=t.value-1,o=n.scrollMaxSize-n.offsetStart-n.offsetEnd-x.value;if(g===n.scrollStart)return;if(n.scrollMaxSize<=0){M(e,n,0,0);return}ee!==n.scrollViewSize&&P(n.scrollViewSize),se(O.value.from);let s=Math.floor(n.scrollMaxSize-Math.max(n.scrollViewSize,n.offsetEnd)-Math.min(y[i],n.scrollViewSize/2));if(s>0&&Math.ceil(n.scrollStart)>=s){M(e,n,i,n.scrollMaxSize-n.offsetEnd-v.reduce(Ke,0));return}let l=0,u=n.scrollStart-n.offsetStart,d=u;if(u<=o&&u+n.scrollViewSize>=b.value)u-=b.value,l=O.value.from,d=u;else for(let e=0;u>=v[e]&&l<i;e++)u-=v[e],l+=U;for(;u>0&&l<i;)u-=y[l],u>-n.scrollViewSize?(l++,d=u):d=y[l]+u;M(e,n,l,d)}function M(e,n,r,i,a){let o=typeof a==`string`&&a.includes(`-force`),s=o?a.replace(`-force`,``):a,l=s===void 0?`start`:s,u=Math.max(0,r-S.value[l]),d=u+S.value.total;d>t.value&&(d=t.value,u=Math.max(0,d-S.value.total)),g=n.scrollStart;let f=u!==O.value.from||d!==O.value.to;if(!f&&s===void 0){I(r);return}let{activeElement:p}=document,h=D.value;f&&h!==null&&h!==p&&h.contains(p)&&(h.addEventListener(`focusout`,N),setTimeout(()=>{h?.removeEventListener(`focusout`,N)},0)),Ge(h,r-u);let _=s===void 0?0:y.slice(u,r).reduce(Ke,0);if(f){let e=d>=O.value.from&&u<=O.value.to?O.value.to:d;O.value={from:u,to:e},b.value=W(v,y,0,u),x.value=W(v,y,d,t.value),requestAnimationFrame(()=>{O.value.to!==d&&g===n.scrollStart&&(O.value={from:O.value.from,to:d},x.value=W(v,y,d,t.value))})}requestAnimationFrame(()=>{if(g!==n.scrollStart)return;f&&se(u);let t=y.slice(u,r).reduce(Ke,0),a=t+n.offsetStart+b.value,l=a+y[r],d=a+i;if(s!==void 0){let e=t-_,i=n.scrollStart+e;d=!o&&i<a&&l<i+n.scrollViewSize?i:s===`end`?l-n.scrollViewSize:a-(s===`start`?0:Math.round((n.scrollViewSize-y[r])/2))}g=d,Je(e,d,c.virtualScrollHorizontal,m.lang.rtl),I(r)})}function se(e){let t=D.value;if(t){let n=We.call(t.children,e=>e.classList&&!e.classList.contains(`q-virtual-scroll--skip`)),r=n.length,i=c.virtualScrollHorizontal?e=>e.getBoundingClientRect().width:e=>e.getBoundingClientRect().height,a=e,o,s;for(let e=0;e<r;){for(o=i(n[e]),e++;e<r&&n[e].classList.contains(`q-virtual-scroll--with-prev`);)o+=i(n[e]),e++;s=o-y[a],s!==0&&(y[a]+=s,v[Math.floor(a/U)]+=s),a++}}}function N(){D.value?.focus({preventScroll:!0})}function ce(e,r){let i=Number(o.value);(r||!Array.isArray(y))&&(y=[]);let a=y.length;y.length=t.value;for(let e=t.value-1;e>=a;e--)y[e]=i;let s=Math.floor((t.value-1)/U);v=[];for(let e=0;e<=s;e++){let n=0,r=Math.min((e+1)*U,t.value);for(let t=e*U;t<r;t++)n+=y[t];v.push(n)}_=-1,g=void 0,b.value=W(v,y,0,O.value.from),x.value=W(v,y,O.value.to,t.value),e>=0?(se(O.value.from),n(()=>{A(e)})):L()}function P(e){if(e===void 0&&typeof window<`u`){let t=r();t!=null&&t.nodeType!==8&&(e=qe(t,a(),w.value,E.value,c.virtualScrollHorizontal,m.lang.rtl,c.virtualScrollStickySizeStart,c.virtualScrollStickySizeEnd).scrollViewSize)}ee=e;let t=Number.parseFloat(c.virtualScrollSliceRatioBefore)||0,n=Number.parseFloat(c.virtualScrollSliceRatioAfter)||0,i=1+t+n,s=e===void 0||e<=0?1:Math.ceil(e/o.value),l=Math.max(1,s,Math.ceil((c.virtualScrollSliceSize>0?c.virtualScrollSliceSize:10)/i));S.value={total:Math.ceil(l*i),start:Math.ceil(l*t),center:Math.ceil(l*(.5+t)),end:Math.ceil(l*(1+t)),view:s}}function F(e,t,n){let r=c.virtualScrollHorizontal?`width`:`height`,i={[`--q-virtual-scroll-item-`+r]:o.value+`px`};return[e===`tbody`?T(e,{class:`q-virtual-scroll__padding`,key:`before`,ref:w,"aria-hidden":`true`},[T(`tr`,[T(`td`,{style:{[r]:`${b.value}px`,...i},colspan:ne.value})])]):T(e,{class:`q-virtual-scroll__padding`,key:`before`,ref:w,"aria-hidden":`true`,style:{[r]:`${b.value}px`,...i}}),T(e,{class:`q-virtual-scroll__content`,key:`content`,ref:D,tabindex:-1,...n},t.flat()),e===`tbody`?T(e,{class:`q-virtual-scroll__padding`,key:`after`,ref:E,"aria-hidden":`true`},[T(`tr`,[T(`td`,{style:{[r]:`${x.value}px`,...i},colspan:ne.value})])]):T(e,{class:`q-virtual-scroll__padding`,key:`after`,ref:E,"aria-hidden":`true`,style:{[r]:`${x.value}px`,...i}})]}function I(e){_!==e&&(c.onVirtualScroll!==void 0&&u(`virtualScroll`,{index:e,from:O.value.from,to:O.value.to-1,direction:e<_?`decrease`:`increase`,ref:p}),_=e)}P();{let e=Math.min(t.value,S.value.total),n=Number(o.value);O.value={from:0,to:e},x.value=Number.isFinite(n)?Math.max(0,(t.value-e)*n):0}let L=_e(j,m.platform.is.ios?120:35);l(()=>{P()});let R=!1;return s(()=>{R=!0}),te(()=>{if(!R)return;let e=r();g!==void 0&&e!=null&&e.nodeType!==8?Je(e,g,c.virtualScrollHorizontal,m.lang.rtl):A(_)}),i(()=>{L.cancel()}),Object.assign(p,{scrollTo:A,reset:ae,refresh:oe}),{virtualScrollSliceRange:O,virtualScrollSliceSizeComputed:S,setVirtualScrollSize:P,onVirtualScrollEvt:L,localResetVirtualScroll:ce,padVirtualScroll:F,scrollTo:A,reset:ae,refresh:oe}}var Qe=e=>[`add`,`add-unique`,`toggle`].includes(e),$e=".*+?^${}()|[]\\",et=Object.keys(z);function tt(e,t){if(typeof e==`function`)return e;let n=e===void 0?t:e;return e=>typeof e==`object`&&e&&n in e?e[n]:e}var G=F({name:`QSelect`,inheritAttrs:!1,props:{...Xe,...de,...z,modelValue:{required:!0},multiple:Boolean,displayValue:[String,Number],displayValueHtml:Boolean,dropdownIcon:String,options:{type:Array,default:()=>[]},optionValue:[Function,String],optionLabel:[Function,String],optionDisable:[Function,String],hideSelected:Boolean,hideDropdownIcon:Boolean,hideDialogClose:Boolean,fillInput:Boolean,maxValues:[Number,String],optionsDense:Boolean,optionsDark:{type:Boolean,default:null},optionsSelectedClass:String,optionsHtml:Boolean,optionsCover:Boolean,noOptionLabel:String,menuShrink:Boolean,menuAnchor:String,menuSelf:String,menuOffset:Array,popupContentClass:String,popupContentStyle:[String,Array,Object],popupNoRouteDismiss:Boolean,useInput:Boolean,useChips:Boolean,noChipRemove:Boolean,newValueMode:{type:String,validator:Qe},mapOptions:Boolean,emitValue:Boolean,noOptionPrefetch:Boolean,disableTabSelection:Boolean,inputDebounce:{type:[Number,String],default:500},inputClass:[Array,String,Object],inputStyle:[Array,String,Object],tabindex:{type:[String,Number],default:0},autocomplete:String,transitionShow:{},transitionHide:{},transitionDuration:{},behavior:{type:String,validator:e=>[`default`,`menu`,`dialog`].includes(e),default:`default`},...Ae,virtualScrollItemSize:Xe.virtualScrollItemSize.type,onNewValue:Function,onFilter:Function},emits:[...fe,`add`,`remove`,`inputValue`,`keyup`,`keypress`,`keydown`,`popupShow`,`popupHide`,`filterAbort`],setup(t,{slots:a,emit:o}){let{proxy:s}=h(),c=re(),l=f(!1),u=f(!1),p=f(-1),m=f(``),g=f(!1),v=f(!1),y=null,b=null,x=!1,S=0,w,te=!1,E,D,O=null,ie,A,j,M,se=e(null),N=e(null),P=e(null),F=e(null),ue=e(null),de=pe(t),fe=ye(xt),z=C(()=>Array.isArray(t.options)?t.options.length:0),{virtualScrollSliceRange:he,virtualScrollSliceSizeComputed:_e,localResetVirtualScroll:ve,padVirtualScroll:xe,onVirtualScrollEvt:Ce,scrollTo:Te,setVirtualScrollSize:Ee}=Ze({virtualScrollLength:z,getVirtualScrollTarget:_t,getVirtualScrollEl:gt,virtualScrollItemSizeComputed:C(()=>t.virtualScrollItemSize===void 0?t.optionsDense?24:48:t.virtualScrollItemSize)}),B=Se(),V=C(()=>{let e=t.mapOptions&&!t.multiple,n=t.modelValue!==void 0&&(t.modelValue!==null||e)?t.multiple&&Array.isArray(t.modelValue)?t.modelValue:[t.modelValue]:[];if(t.mapOptions&&Array.isArray(t.options)){let r=t.mapOptions&&w!==void 0?w:[],i=n.map(e=>lt(e,r));return t.modelValue===null&&e?i.filter(e=>e!==null):i}return n}),Ae=C(()=>{let e={};return et.forEach(n=>{let r=t[n];r!==void 0&&(e[n]=r)}),e}),je=C(()=>t.optionsDark===null?B.isDark():t.optionsDark),Ne=C(()=>ge(V.value)),Fe=C(()=>{let e=`q-field__input q-placeholder col`;return t.hideSelected||V.value.length===0?[e,t.inputClass]:(e+=` q-field__input--padding`,t.inputClass===void 0?e:[e,t.inputClass])}),Ie=C(()=>(t.virtualScrollHorizontal?`q-virtual-scroll--horizontal`:``)+(t.popupContentClass?` `+t.popupContentClass:``)),H=C(()=>z.value===0);function Re(){return a[`no-option`]!==void 0||t.noOptionLabel!==void 0}let Be=C(()=>V.value.map(e=>K.value(e)).join(`, `)),Ve=C(()=>t.displayValue===void 0?Be.value:t.displayValue),U=C(()=>t.optionsHtml?()=>!0:e=>e?.html===!0),Ue=C(()=>t.displayValueHtml||t.displayValue===void 0&&(t.optionsHtml||V.value.some(U.value))),We=C(()=>B.focused.value?t.tabindex:-1),Ge=C(()=>{let e={tabindex:t.disable===!0?void 0:t.tabindex,role:`combobox`,"aria-label":t.label,"aria-readonly":t.readonly?`true`:`false`,"aria-autocomplete":t.useInput?`list`:`none`,"aria-expanded":l.value?`true`:`false`};return l.value&&!H.value&&(e[`aria-controls`]=`${B.targetUid.value}_lb`),p.value>=0&&(e[`aria-activedescendant`]=`${B.targetUid.value}_${p.value}`),e}),Ke=C(()=>({id:`${B.targetUid.value}_lb`,role:`listbox`,"aria-multiselectable":t.multiple?`true`:`false`})),qe=C(()=>V.value.map((e,t)=>({index:t,opt:e,html:U.value(e),selected:!0,removeAtIndex:at,toggleOption:Y,tabindex:We.value}))),Je=C(()=>{if(z.value===0)return[];let{from:e,to:n}=he.value;return t.options.slice(e,n).map((n,r)=>{let i=q.value(n)===!0,a=ut(n),o=e+r,s={clickable:!0,active:a,activeClass:Xe.value,manualFocus:!0,focused:!1,disable:i,tabindex:-1,dense:t.optionsDense,dark:je.value,role:`option`,"aria-selected":a?`true`:`false`,"aria-setsize":z.value,"aria-posinset":o+1,id:`${B.targetUid.value}_${o}`,onClick:()=>{Y(n)}};return i||(p.value===o&&(s.focused=!0),s.onPointermove=e=>{e.pointerType!==`touch`&&l.value&&st(o)}),{index:o,opt:n,html:U.value(n),label:K.value(n),selected:s.active,focused:s.focused,toggleOption:Y,setOptionIndex:st,itemProps:s}})}),W=C(()=>t.dropdownIcon===void 0?c.iconSet.arrow.dropdown:t.dropdownIcon),Ye=C(()=>!t.optionsCover&&!t.outlined&&!t.standout&&!t.borderless&&!t.rounded),Xe=C(()=>t.optionsSelectedClass===void 0?t.color===void 0?``:`text-${t.color}`:t.optionsSelectedClass),G=C(()=>tt(t.optionValue,`value`)),K=C(()=>tt(t.optionLabel,`label`)),q=C(()=>tt(t.optionDisable,`disable`)),J=C(()=>V.value.map(G.value)),nt=C(()=>{let e={onInput:xt,onChange:fe,onKeydown:ht,onKeyup:pt,onKeypress:mt,onFocus:dt,onClick(e){E&&I(e)}};return e.onCompositionstart=e.onCompositionupdate=e.onCompositionend=fe,e});d(V,e=>{w=e,t.useInput&&t.fillInput&&!t.multiple&&!B.innerLoading.value&&(!u.value&&!l.value||!Ne.value)&&(D||$(),(u.value||l.value)&&X(``)),te&&wt()&&(te=!1)},{immediate:!0}),d(()=>t.fillInput,$),d(l,Vt),d(z,Ht);function rt(e){return t.emitValue?G.value(e):e}function it(e){if(e!==-1&&e<V.value.length){if(t.multiple){let n=[...t.modelValue];o(`remove`,{index:e,value:n.splice(e,1)[0]}),o(`update:modelValue`,n)}else o(`update:modelValue`,null)}}function at(e){it(e),B.focus()}function ot(e,n){let r=rt(e);if(!t.multiple){t.fillInput&&Ct(K.value(e),!0,!0),o(`update:modelValue`,r);return}if(V.value.length===0){o(`add`,{index:0,value:r}),o(`update:modelValue`,t.multiple?[r]:r);return}if(n&&ut(e)||t.maxValues!==void 0&&t.modelValue.length>=t.maxValues)return;let i=[...t.modelValue];o(`add`,{index:i.length,value:r}),i.push(r),o(`update:modelValue`,i)}function Y(e,n){if(!B.editable.value||e===void 0||q.value(e)===!0)return;let r=G.value(e);if(!t.multiple){let i=!n&&u.value;n||(Ct(t.fillInput?K.value(e):``,!0,!0),Q()),i||N.value?.focus(),(V.value.length===0||!me(G.value(V.value[0]),r))&&o(`update:modelValue`,t.emitValue?r:e);return}if((!E||g.value)&&B.focus(),dt(),V.value.length===0){let n=t.emitValue?r:e;o(`add`,{index:0,value:n}),o(`update:modelValue`,t.multiple?[n]:n);return}let i=[...t.modelValue],a=J.value.findIndex(e=>me(e,r));if(a!==-1)o(`remove`,{index:a,value:i.splice(a,1)[0]});else{if(t.maxValues!==void 0&&i.length>=t.maxValues)return;let n=t.emitValue?r:e;o(`add`,{index:i.length,value:n}),i.push(n)}o(`update:modelValue`,i)}function st(e){let t=e!==-1&&e<z.value?e:-1;p.value!==t&&(p.value=t)}function ct(e=1,n){if(l.value){let r=p.value;do r=Oe(r+e,-1,z.value-1);while(r!==-1&&r!==p.value&&q.value(t.options[r])===!0);p.value!==r&&(st(r),Te(r),!n&&t.useInput&&t.fillInput&&St(r>=0?K.value(t.options[r]):ie,!0))}}function lt(e,n){let r=t=>me(G.value(t),e);return t.options.find(r)||n.find(r)||e}function ut(e){let t=G.value(e);return J.value.find(e=>me(e,t))!==void 0}function dt(e){t.useInput&&N.value!==null&&(e===void 0||N.value===e.target&&e.target.value===Be.value)&&N.value.select()}function ft(e){oe(e,27)&&l.value&&(I(e),Q(e),$()),o(`keyup`,e)}function pt(e){let{value:n}=e.target;if(e.keyCode!==void 0){ft(e);return}if(e.target.value=``,y!==null&&(clearTimeout(y),y=null),b!==null&&(clearTimeout(b),b=null),$(),typeof n==`string`&&n.length!==0){let e=n.toLocaleLowerCase(),r=n=>{let r=t.options.find(t=>String(n.value(t)).toLocaleLowerCase()===e);return r!==void 0&&(V.value.includes(r)?Q():Y(r),!0)},i=e=>{!r(G)&&!e&&!r(K)&&X(n,!0,()=>i(!0))};i()}else B.clearValue(e)}function mt(e){o(`keypress`,e)}function ht(e){if(o(`keydown`,e),e.defaultPrevented||ne(e))return;let r=m.value.length!==0&&(t.newValueMode!==void 0||t.onNewValue!==void 0),i=!e.shiftKey&&!t.disableTabSelection&&!t.multiple&&(p.value!==-1||r);if(e.keyCode===27){L(e);return}if(e.keyCode===9&&!i){Pt(e);return}if(e.target===void 0||e.target.id!==B.targetUid.value||!B.editable.value)return;if((e.keyCode===40||e.keyCode===38)&&!B.innerLoading.value&&!l.value){R(e),Z(e);return}if(e.keyCode===8&&(t.useChips&&!t.noChipRemove||t.clearable)&&!t.hideSelected&&m.value.length===0){(t.clearable||q.value(V.value.at(-1))!==!0)&&(t.multiple&&Array.isArray(t.modelValue)?it(t.modelValue.length-1):!t.multiple&&t.modelValue!==null&&o(`update:modelValue`,null));return}(e.keyCode===35||e.keyCode===36)&&(typeof m.value!=`string`||m.value.length===0)&&(R(e),p.value=-1,ct(e.keyCode===36?1:-1,t.multiple)),(e.keyCode===33||e.keyCode===34)&&_e.value!==void 0&&(R(e),p.value=Math.max(-1,Math.min(z.value,p.value+(e.keyCode===33?-1:1)*_e.value.view)),ct(e.keyCode===33?1:-1,t.multiple)),(e.keyCode===38||e.keyCode===40)&&(R(e),ct(e.keyCode===38?-1:1,t.multiple));let a=z.value;if((j===void 0||M<Date.now())&&(j=``),a>0&&!t.useInput&&e.key!==void 0&&e.key.length===1&&!e.altKey&&!e.ctrlKey&&!e.metaKey&&(e.keyCode!==32||j.length!==0)){l.value||Z(e);let r=e.key.toLocaleLowerCase(),i=j.length===1&&j[0]===r;M=Date.now()+1500,i||(R(e),j+=r);let o=RegExp(`^`+[...j].map(e=>$e.includes(e)?`\\`+e:e).join(`.*`),`i`),s=p.value;if(i||s<0||!o.test(K.value(t.options[s])))do s=Oe(s+1,-1,a-1);while(s!==p.value&&(q.value(t.options[s])===!0||!o.test(K.value(t.options[s]))));p.value!==s&&n(()=>{st(s),Te(s),s>=0&&t.useInput&&t.fillInput&&St(K.value(t.options[s]),!0)});return}if(e.keyCode===13||e.keyCode===32&&!t.useInput&&j===``||e.keyCode===9&&i){if(e.keyCode!==9&&R(e),p.value!==-1&&p.value<a){Y(t.options[p.value]);return}if(r){let e=(e,n)=>{if(n){if(!Qe(n))return}else n=t.newValueMode;Ct(``,!t.multiple,!0),e!=null&&((n===`toggle`?Y:ot)(e,n===`add-unique`),t.multiple||(N.value?.focus(),Q()))};if(t.onNewValue===void 0?e(m.value):o(`newValue`,m.value,e),!t.multiple)return}l.value?Pt(e):B.innerLoading.value||Z(e)}}function gt(){return E?ue.value:P.value!==null&&P.value.contentEl!==null?P.value.contentEl:void 0}function _t(){return gt()}function vt(){return t.hideSelected?[]:a[`selected-item`]===void 0?a.selected===void 0?t.useChips?qe.value.map((e,n)=>T(He,{key:`option-`+n,removable:!t.noChipRemove&&B.editable.value&&q.value(e.opt)!==!0,dense:!0,textColor:t.color,tabindex:We.value,onRemove(){e.removeAtIndex(n)}},()=>T(`span`,{class:`ellipsis`,[e.html?`innerHTML`:`textContent`]:K.value(e.opt)}))):[T(`span`,{class:`q-select__selected-value ellipsis`,[Ue.value?`innerHTML`:`textContent`]:Ve.value})]:[a.selected()].flat():qe.value.map(e=>a[`selected-item`](e))}function yt(){if(H.value)return a[`no-option`]===void 0?t.noOptionLabel===void 0?void 0:[T(De,()=>T(ke,{class:`text-grey`},()=>T(Le,()=>t.noOptionLabel)))]:a[`no-option`]({inputValue:m.value});let e=a.option===void 0?e=>T(De,{key:e.index,...e.itemProps},()=>T(ke,()=>T(Le,()=>T(`span`,{[e.html?`innerHTML`:`textContent`]:e.label})))):a.option,n=xe(`div`,Je.value.map(e),Ke.value);return a[`before-options`]!==void 0&&(n=[a[`before-options`](),...n].flat()),ae(a[`after-options`],n)}function bt(e,n){let r=n?{...Ge.value,...B.splitAttrs.attributes.value}:void 0,i={ref:n?N:void 0,key:`i_t`,class:Fe.value,style:t.inputStyle,value:m.value===void 0?``:m.value,type:`search`,...r,id:n?B.targetUid.value:void 0,maxlength:t.maxlength,autocomplete:t.autocomplete,"data-autofocus":e===!0||t.autofocus||void 0,disabled:t.disable,readonly:t.readonly,...nt.value};return n&&Object.assign(i,B.getErrorAriaAttrs(i)),!e&&E&&(Array.isArray(i.class)?i.class=[...i.class,`no-pointer-events`]:i.class+=` no-pointer-events`),T(`input`,i)}function xt(e){y!==null&&(clearTimeout(y),y=null),b!==null&&(clearTimeout(b),b=null),!e?.target?.qComposing&&(St(e.target.value||``),D=!0,ie=m.value,!B.focused.value&&(!E||g.value)&&B.focus(),t.onFilter!==void 0&&(E&&!u.value?Z(e):y=setTimeout(()=>{y=null,X(m.value)},t.inputDebounce)))}function St(e,n){m.value!==e&&(b!==null&&(clearTimeout(b),b=null),m.value=e,n||t.inputDebounce===0||t.inputDebounce===`0`?o(`inputValue`,e):b=setTimeout(()=>{b=null,o(`inputValue`,e)},t.inputDebounce))}function Ct(e,n,r){D=r!==!0,t.useInput&&(St(e,!0),(n||D)&&(ie=e),n||X(e))}function X(e,r,i){if(t.onFilter===void 0||!r&&!B.focused.value&&!x)return;B.innerLoading.value?o(`filterAbort`):(B.innerLoading.value=!0,v.value=!0),e!==``&&!t.multiple&&V.value.length!==0&&!D&&e===K.value(V.value[0])&&(e=``);let a=setTimeout(()=>{l.value&&=!1},10);O!==null&&clearTimeout(O),O=a,o(`filter`,e,(e,t)=>{(r||B.focused.value||x)&&O===a&&(clearTimeout(O),typeof e==`function`&&e(),v.value=!1,n(()=>{B.innerLoading.value=!1,B.editable.value&&(r?l.value&&Q():l.value?Vt(!0):l.value=!0),typeof t==`function`&&n(()=>{t(s)}),typeof i==`function`&&n(()=>{i(s)})}))},()=>{(r||B.focused.value||x)&&O===a&&(clearTimeout(O),B.innerLoading.value=!1,v.value=!1),l.value&&=!1})}function wt(){return z.value!==0||V.value.every(e=>typeof e==`object`&&!!e)?!1:(X(``,!0,$),!0)}function Tt(){return T(Pe,{ref:P,class:Ie.value,style:t.popupContentStyle,modelValue:l.value,fit:!t.menuShrink,cover:t.optionsCover&&!H.value&&!t.useInput,anchor:t.menuAnchor,self:t.menuSelf,offset:t.menuOffset,dark:je.value,noParentEvent:!0,noRefocus:!0,noFocus:!0,noRouteDismiss:t.popupNoRouteDismiss,square:Ye.value,transitionShow:t.transitionShow,transitionHide:t.transitionHide,transitionDuration:t.transitionDuration,separateClosePopup:!0,onScrollPassive:Ce,onBeforeShow:Wt,onBeforeHide:Et,onShow:Dt,...t.hover?{onPointerenter:zt,onPointerleave:Rt}:{}},yt)}function Et(e){Gt(e),Pt()}function Dt(){Ee()}function Ot(e){I(e),N.value?.focus(),g.value=!0,c.platform.is.ios&&window.scrollTo(window.scrollX,0)}function kt(e){I(e),n(()=>{g.value=!1})}function At(){let e=[T(ze,{class:`col-auto ${B.fieldClass.value}`,...Ae.value,for:B.targetUid.value,dark:je.value,square:!0,loading:v.value,itemAligned:!1,filled:!0,stackLabel:m.value.length!==0,...B.splitAttrs.listeners.value,onFocus:Ot,onBlur:kt},{...a,rawControl:()=>B.getControl(!0),before:void 0,after:void 0,append:t.hideDialogClose?a.append:()=>{let e=T(`button`,{class:`q-select__dialog-close`+(t.color===void 0?``:` text-${t.color}`),type:`button`,tabindex:0,onClick:Q},c.lang.label.close);return a.append===void 0?[e]:[...a.append(),e]}})];return l.value&&e.push(T(`div`,{ref:ue,class:Ie.value+` scroll`,style:t.popupContentStyle,onClick:L,onScrollPassive:Ce},yt())),T(we,{ref:F,modelValue:u.value,position:t.useInput?`top`:void 0,noFocus:!0,transitionShow:A,transitionHide:t.transitionHide,transitionDuration:t.transitionDuration,noRouteDismiss:t.popupNoRouteDismiss,onBeforeShow:Wt,onBeforeHide:jt,onHide:Mt,onShow:Nt},()=>T(`div`,{class:`q-select__dialog`+(je.value?` q-select__dialog--dark q-dark`:``)+(g.value?` q-select__dialog--focused`:``)},e))}function jt(e){if(Gt(e),F.value!==null){let n=!c.platform.is.mobile||!t.useInput||e!==void 0&&(e.type.indexOf(`key`)===0||e.type===`click`&&e.detail===0)?B.rootRef.value.querySelector(`.q-field__native > .q-select__focus-target, .q-field__native > .q-field__input`):null;F.value.__updateRefocusTarget(n)}B.focused.value=!1}function Mt(e){Q(),B.focused.value||o(`blur`,e),$()}function Nt(){let e=document.activeElement;(e===null||e.id!==B.targetUid.value)&&N.value!==null&&N.value!==e&&N.value.focus(),Ee()}function Pt(e){u.value||(It(),x=!1,p.value=-1,l.value&&(e!==void 0&&(e.qSelectHandled=!0),l.value=!1,P.value?.hide(e)),B.focused.value||(O!==null&&(clearTimeout(O),O=null),B.innerLoading.value&&(o(`filterAbort`),B.innerLoading.value=!1,v.value=!1)))}function Ft(e){if(e==null)return!1;let t=P.value===null?null:P.value.contentEl;if(B.controlRef.value!==null&&B.controlRef.value.contains(e)||t!==null&&t.contains(e))return!0;let n=le(e);for(;n!=null;){if(n===s)return!0;n=ce(n)}return!1}let{clearHoverTimer:It,hoverShow:Lt,hoverHide:Rt,onHoverContentEnter:zt}=Me({props:t,canShow:()=>!E&&!x&&!l.value&&B.editable.value,show:Bt,canHide:e=>x&&!Ft(e.relatedTarget),hide:Q});function Bt(e){(t.onFilter!==void 0||!H.value||Re())&&(x=!0,S=Date.now(),e.qSelectHandled=!0,t.onFilter===void 0?(l.value=!0,P.value?.show(e)):X(m.value))}function Z(e){B.editable.value&&(It(),x=!1,e!==void 0&&(e.qSelectHandled=!0),E?(B.onControlFocusin(e),B.focus(),u.value=!0,F.value?.show(e),n(()=>{B.focus()})):B.focus(),t.onFilter===void 0?(!H.value||Re())&&(l.value=!0,P.value?.show(e)):X(m.value))}function Q(e){u.value&&(e!==void 0&&(e.qSelectHandled=!0),u.value=!1,F.value?.hide(e)),Pt(e)}function $(){t.useInput&&Ct(!t.multiple&&t.fillInput&&V.value.length!==0?K.value(V.value[0])??``:``,!0,!0)}function Vt(e){let n=-1;if(e){if(V.value.length!==0){let e=G.value(V.value[0]);n=t.options.findIndex(t=>me(G.value(t),e))}ve(n)}st(n)}function Ht(e,t){l.value&&!B.innerLoading.value&&(ve(-1,!0),n(()=>{l.value&&!B.innerLoading.value&&(e>t?ve():Vt(!0))}))}function Ut(){u.value||P.value?.updatePosition()}function Wt(e){e!==void 0&&e.qSelectHandled!==!0&&I(e),o(`popupShow`,e),B.hasPopupOpen=!0,x||B.onControlFocusin(e)}function Gt(e){e!==void 0&&e.qSelectHandled!==!0&&I(e),o(`popupHide`,e),B.hasPopupOpen=!1,B.onControlFocusout(e,$)}function Kt(){E=!c.platform.is.mobile&&t.behavior!==`dialog`?!1:t.behavior!==`menu`&&(!t.useInput||Re()||t.onFilter!==void 0||!H.value),A=c.platform.is.ios&&E&&t.useInput?`fade`:t.transitionShow}return r(Kt),_(Ut),!t.noOptionPrefetch&&t.mapOptions&&t.onFilter!==void 0&&ee(()=>{te=!wt()}),Kt(),i(()=>{y!==null&&clearTimeout(y),b!==null&&clearTimeout(b)}),Object.assign(s,{showPopup:Z,hidePopup:Q,removeAtIndex:it,add:ot,toggleOption:Y,getOptionIndex:()=>p.value,setOptionIndex:st,moveOptionSelection:ct,filter:X,updateMenuPosition:Ut,updateInputValue:Ct,isOptionSelected:ut,getEmittingOptionValue:rt,isOptionDisabled:(...e)=>q.value(...e)===!0,getOptionValue:(...e)=>G.value(...e),getOptionLabel:(...e)=>K.value(...e)}),Object.assign(B,{innerValue:V,fieldClass:C(()=>`q-select q-field--auto-height q-select--with${t.useInput?``:`out`}-input q-select--with${t.useChips?``:`out`}-chips q-select--${t.multiple?`multiple`:`single`}`),inputRef:se,targetRef:N,hasValue:Ne,showPopup:Z,floatingLabel:C(()=>!t.hideSelected&&Ne.value||typeof m.value==`number`||m.value.length!==0||ge(t.displayValue)),getControlChild:()=>{if(B.editable.value&&(u.value||!H.value||Re()))return E?At():Tt();B.hasPopupOpen&&=!1},controlEvents:{onFocusin(e){It(),x=!1,B.onControlFocusin(e)},onFocusout(e){B.onControlFocusout(e,()=>{$(),Pt(e)})},onClick(e){if(L(e),!E&&l.value){if(x&&Date.now()-S<(t.transitionDuration===void 0?300:Number(t.transitionDuration))){x=!1,B.focus();return}Pt(e),N.value?.focus();return}Z(e)},onPointerenter:Lt,onPointerleave:Rt},getControl:e=>{let n=vt(),r=e===!0||!u.value||!E;if(t.useInput)n.push(bt(e,r));else{let i=r?{...Ge.value,...B.splitAttrs.attributes.value}:void 0,a={ref:r?N:void 0,key:`d_t`,class:`q-select__focus-target`,value:Ve.value,readonly:!0,"data-autofocus":e===!0||t.autofocus||void 0,...i,disabled:t.disable,id:r?B.targetUid.value:void 0,onKeydown:ht,onKeyup:ft,onKeypress:mt};r&&Object.assign(a,B.getErrorAriaAttrs(a)),n.push(T(`input`,a)),r&&B.editable.value&&typeof t.autocomplete==`string`&&t.autocomplete.length!==0&&n.push(T(`input`,{class:`q-select__autocomplete-input`,autocomplete:t.autocomplete,tabindex:-1,onKeyup:pt}))}if(!t.disable){let e=de();if(e!==void 0){let r=J.value.map(e=>T(`option`,{value:e,selected:!0}));n.push(T(`select`,{class:`hidden`,name:e,multiple:t.multiple},r))}}return T(`div`,{class:`q-field__native row items-center`,...B.splitAttrs.listeners.value},n)},shouldHideLoadingIndicator:()=>t.hideDropdownIcon===!0,getInnerAppend:()=>!t.loading&&!v.value&&!t.hideDropdownIcon?[T(k,{class:`q-select__dropdown-icon`+(l.value?` rotate-180`:``),name:W.value})]:null}),be(B)}}),K={class:`review-filters q-pa-md q-gutter-y-sm`},q={class:`row q-gutter-x-sm`},J=500,nt=g({__name:`ReviewFilters`,props:{search:{required:!0},searchModifiers:{},createdFrom:{required:!0},createdFromModifiers:{},createdTo:{required:!0},createdToModifiers:{},files:{required:!0},filesModifiers:{}},emits:[`update:search`,`update:createdFrom`,`update:createdTo`,`update:files`],setup(e){let t=D(e,`search`),n=D(e,`createdFrom`),r=D(e,`createdTo`),i=D(e,`files`),{t:a}=Te();return(e,s)=>(o(),m(`div`,K,[y(Ie,{modelValue:t.value,"onUpdate:modelValue":s[0]||=e=>t.value=e,debounce:J,placeholder:S(a)(`reviews.filters.searchPlaceholder`)},null,8,[`modelValue`,`placeholder`]),p(`div`,q,[y(he,{modelValue:n.value,"onUpdate:modelValue":s[1]||=e=>n.value=e,dense:``,outlined:``,type:`date`,class:`col`,debounce:J,label:S(a)(`reviews.filters.from`)},null,8,[`modelValue`,`label`]),y(he,{modelValue:r.value,"onUpdate:modelValue":s[2]||=e=>r.value=e,dense:``,outlined:``,type:`date`,class:`col`,debounce:J,label:S(a)(`reviews.filters.to`)},null,8,[`modelValue`,`label`])]),y(G,{modelValue:i.value,"onUpdate:modelValue":s[3]||=e=>i.value=e,dense:``,outlined:``,multiple:``,"use-input":``,"use-chips":``,"hide-dropdown-icon":``,"new-value-mode":`add-unique`,label:S(a)(`reviews.filters.files`),hint:S(a)(`reviews.filters.filesHint`)},null,8,[`modelValue`,`label`,`hint`])]))}}),rt=g({__name:`ReviewListItem`,props:{review:{}},emits:[`click`],setup(e){let t=e,{t:n}=Te(),r={in_progress:`grey-7`,approved:`positive`,changes_requested:`negative`},i=C(()=>t.review.name??n(`reviews.list.unnamed`)),s=C(()=>t.review.branch??n(`reviews.list.unknownBranch`)),c=C(()=>new Date(t.review.createdAt).toLocaleString());return(t,l)=>u((o(),v(De,{clickable:``,onClick:l[0]||=e=>t.$emit(`click`)},{default:a(()=>[y(ke,{avatar:``},{default:a(()=>[y(k,{color:r[e.review.status],name:`rate_review`},null,8,[`color`])]),_:1}),y(ke,null,{default:a(()=>[y(Le,{class:`text-body2`},{default:a(()=>[b(E(i.value),1)]),_:1}),y(Le,{caption:``},{default:a(()=>[y(k,{name:`account_tree`,size:`14px`,class:`q-mr-xs`}),b(E(s.value)+` `,1),l[1]||=p(`span`,{class:`q-mx-sm`},`·`,-1),b(` `+E(c.value),1)]),_:1})]),_:1}),y(ke,{side:``},{default:a(()=>[y(B,{color:r[e.review.status],outline:``,rounded:``},{default:a(()=>[b(E(S(n)(`reviews.status.${e.review.status}`)),1)]),_:1},8,[`color`])]),_:1})]),_:1})),[[j]])}}),it={class:`text-h6 q-px-sm`},at={key:0,class:`row justify-center q-pa-lg`},ot={key:1,class:`q-pa-lg text-center text-grey-6`},Y=O(g({__name:`ReviewsPage`,setup(e){let{t:n}=Te(),r=xe(),i=H(),{reviews:s,loading:l}=Ee(i),u=f(null),h=f(null),g=f(null),_=f([]);function b(){i.fetchReviews({search:u.value??``,createdFrom:h.value,createdTo:g.value,files:_.value})}ee(b),d([u,h,g,_],b);let C=Ne([`review:created`,`review:updated`,`review:deleted`],b);t(()=>C.close());function T(e){r.push(`/reviews/${e}`)}function te(e){r.push(`/reviews/${e.id}`)}return(e,t)=>(o(),v(Fe,{class:`reviews-page column no-wrap`},{default:a(()=>[p(`div`,it,E(S(n)(`nav.reviews`)),1),y(ve),y(nt,{search:u.value,"onUpdate:search":t[0]||=e=>u.value=e,"created-from":h.value,"onUpdate:createdFrom":t[1]||=e=>h.value=e,"created-to":g.value,"onUpdate:createdTo":t[2]||=e=>g.value=e,files:_.value,"onUpdate:files":t[3]||=e=>_.value=e},null,8,[`search`,`created-from`,`created-to`,`files`]),y(ve),y(je,{class:`col`},{default:a(()=>[S(l)?(o(),m(`div`,at,[y(se,{color:`primary`,size:`2em`})])):S(s).length===0?(o(),m(`div`,ot,[p(`p`,null,E(S(n)(`reviews.list.empty`)),1),y(N,{flat:``,color:`primary`,label:S(n)(`reviews.list.emptyAction`),to:{path:`/`}},null,8,[`label`])])):w(``,!0),y(V,{class:`q-pa-md`,separator:``,padding:``},{default:a(()=>[(o(!0),m(x,null,c(S(s),e=>(o(),v(rt,{key:e.id,review:e,onClick:t=>T(e.id)},null,8,[`review`,`onClick`]))),128))]),_:1})]),_:1}),y(Re,{onCreated:te})]),_:1}))}}),[[`__scopeId`,`data-v-612b9915`]]);export{Y as default};
|