@tequila99/githuman 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -3
- package/dist/server/app.js +1 -0
- package/dist/server/db/migrations.js +6 -0
- package/dist/server/errors/note-assets.js +3 -0
- package/dist/server/repositories/notes-catalog.repo.js +4 -3
- package/dist/server/repositories/notes.repo.js +69 -27
- package/dist/server/routes/agent.js +1 -0
- package/dist/server/routes/notes.js +48 -2
- package/dist/server/services/agent/context-builder.js +13 -0
- package/dist/server/services/notes-external-assets.service.js +177 -0
- package/dist/server/services/notes-identity.service.js +112 -27
- package/dist/server/services/notes-operations.service.js +3 -5
- package/dist/server/services/notes.service.js +29 -4
- package/dist/server/utils/note-asset-format.js +1 -1
- package/dist/server/utils/remote-asset-request.js +193 -0
- package/dist/server/utils/request-abort.js +20 -0
- package/dist/shared/agents/schemas.js +14 -0
- package/dist/shared/notes/asset-formats.js +19 -1
- package/dist/shared/notes/constants.js +5 -0
- package/dist/shared/notes/external-assets.js +153 -0
- package/dist/shared/notes/note-path.js +17 -0
- package/dist/shared/notes/reference-path.js +2 -1
- package/dist/shared/notes/references.js +1 -1
- package/dist/shared/notes/schemas.js +60 -2
- package/dist/shared/utils/web-url.js +15 -0
- package/dist/web/assets/AppPage-DdmqiV2R.js +1 -0
- package/dist/web/assets/{ClosePopup-D2_HzWXW.js → ClosePopup-lpH_1Ju2.js} +1 -1
- package/dist/web/assets/{CreateButton-pmDRGwna.js → CreateButton-Dnpwobd9.js} +2 -2
- package/dist/web/assets/{CreateReviewFabButton-CcXWnmSN.js → CreateReviewFabButton-KvKPEJzI.js} +1 -1
- package/dist/web/assets/IndexPage-DE-IkAhK.js +1 -0
- package/dist/web/assets/IndexPage-F8MMAAkn.css +1 -0
- package/dist/web/assets/{MainLayout-DOGoQ-1m.js → MainLayout-wWA8ckBg.js} +4 -4
- package/dist/web/assets/NoteVisualEditor-Bj13_oEl.js +1054 -0
- package/dist/web/assets/{NoteVisualEditor-CClIKW0X.css → NoteVisualEditor-IH3s3d3W.css} +1 -1
- package/dist/web/assets/NotesPage-FidBg83M.js +4 -0
- package/dist/web/assets/NotesPage-KaCEnfdz.css +1 -0
- package/dist/web/assets/PanelResize-C51WwwLD.css +1 -0
- package/dist/web/assets/PanelResize-DY0Nzmql.js +1 -0
- package/dist/web/assets/{PdfPreview-CdgeqqEv.js → PdfPreview-C7HomxEg.js} +1 -1
- package/dist/web/assets/{QFab-DyUFgj0W.js → QFab-C-YZWgmW.js} +1 -1
- package/dist/web/assets/{QForm-BiRkV9BY.js → QForm-DpEhYVCa.js} +1 -1
- package/dist/web/assets/QResizeObserver-DeRFR_WF.js +1 -0
- package/dist/web/assets/{QScrollArea-DfPW35JQ.js → QScrollArea-BSSZoaV5.js} +1 -1
- package/dist/web/assets/{QSelect-BpZ5KfWP.js → QSelect-2iOBkp1K.js} +1 -1
- package/dist/web/assets/QSpace-B5NneHAd.js +1 -0
- package/dist/web/assets/QVirtualScroll-CZJMBpmR.js +1 -0
- package/dist/web/assets/ReviewDetailPage-BI1iAhSf.js +1 -0
- package/dist/web/assets/{ReviewsPage-BaxUZzUZ.js → ReviewsPage-RyST0FlH.js} +1 -1
- package/dist/web/assets/StatusSwitcher-DAeNzNP7.js +1 -0
- package/dist/web/assets/{TerminalView-DMJTXE-G.js → TerminalView-BAzJgUTq.js} +2 -2
- package/dist/web/assets/{abnfDiagram-O67JEVCF-CiOkMSRz.js → abnfDiagram-O67JEVCF-BNZQ7duT.js} +1 -1
- package/dist/web/assets/agent-store-DP6Vrw6L.js +113 -0
- package/dist/web/assets/app-info-store-u6ZVFjv5.js +1 -0
- package/dist/web/assets/architecture-7GRP2DOG-BSdnjp9Z.js +1 -0
- package/dist/web/assets/{architectureDiagram-NJMV4G6O-BexHJffj.js → architectureDiagram-NJMV4G6O-Bkj0kfFn.js} +1 -1
- package/dist/web/assets/{blockDiagram-BEXU5L5S-CEyB_5a1.js → blockDiagram-BEXU5L5S-CXO3zN2c.js} +1 -1
- package/dist/web/assets/{c4Diagram-YGBWAQC7-BRNWA7xI.js → c4Diagram-YGBWAQC7-BHfMeZNf.js} +1 -1
- package/dist/web/assets/channel-DmoOM6AB.js +1 -0
- package/dist/web/assets/{chunk-3FUC2YCW-BcQR1JDF.js → chunk-3FUC2YCW-z1WbH7Gi.js} +1 -1
- package/dist/web/assets/{chunk-5DYCD2WN-D6aQ1hFt.js → chunk-5DYCD2WN-K9HPch97.js} +1 -1
- package/dist/web/assets/{chunk-742MDFTN-BRgrFtkf.js → chunk-742MDFTN-Bhjp9fC-.js} +1 -1
- package/dist/web/assets/{chunk-7INBJB4K-3RBjXeq6.js → chunk-7INBJB4K-Do0EmU14.js} +1 -1
- package/dist/web/assets/{chunk-7M6MHVWA-Malugc_N.js → chunk-7M6MHVWA-veeEjsOh.js} +1 -1
- package/dist/web/assets/{chunk-7PRAP22T-Bb3gaISA.js → chunk-7PRAP22T-CPqB5tCK.js} +1 -1
- package/dist/web/assets/{chunk-GTNCS2PH-Cps7XhUC.js → chunk-GTNCS2PH-Civ1V52P.js} +1 -1
- package/dist/web/assets/{chunk-GWA4HPMP-Bfp2Tg3_.js → chunk-GWA4HPMP-C7LzAlyZ.js} +1 -1
- package/dist/web/assets/{chunk-MBY4JIJT-IfXbX1Ur.js → chunk-MBY4JIJT-DfmJy0o_.js} +1 -1
- package/dist/web/assets/{chunk-NETBCI7D-r2fmahwk.js → chunk-NETBCI7D-BZIKmMvL.js} +1 -1
- package/dist/web/assets/{chunk-O7XYJQB3-sadsiWmA.js → chunk-O7XYJQB3-DcHeu6b7.js} +1 -1
- package/dist/web/assets/{chunk-UA2S7LBM-DibfwtDn.js → chunk-UA2S7LBM-0SR2og6x.js} +1 -1
- package/dist/web/assets/{chunk-WEXAMYUT-DBouMgEO.js → chunk-WEXAMYUT-CJMSoM-Z.js} +1 -1
- package/dist/web/assets/{chunk-Z7XXMR3K-fAHToON5.js → chunk-Z7XXMR3K-q6fce66x.js} +1 -1
- package/dist/web/assets/{chunk-ZIGJFQKS-CJG1UIHO.js → chunk-ZIGJFQKS-DsPzen4Y.js} +1 -1
- package/dist/web/assets/{classDiagram-v2-NBCMYWYE-CPHP5ynj.js → classDiagram-v2-NBCMYWYE-Cpm_bvzb.js} +1 -1
- package/dist/web/assets/{cynefin-OW5HDTMX-BU7_LYGR.js → cynefin-OW5HDTMX-ZTr5XZMW.js} +1 -1
- package/dist/web/assets/{cynefinDiagram-VND7K2PF-BXFEy9Io.js → cynefinDiagram-VND7K2PF-ByUmUx58.js} +1 -1
- package/dist/web/assets/{dagre-6A5THRUB-aKpdpQ18.js → dagre-6A5THRUB-mQOy0E3r.js} +1 -1
- package/dist/web/assets/{diagram-22UHCM2B-ddbRgIQ9.js → diagram-22UHCM2B-BW0LPtyk.js} +1 -1
- package/dist/web/assets/{diagram-3UASUU5V-vNYy6WP_.js → diagram-3UASUU5V-jo148ec5.js} +1 -1
- package/dist/web/assets/{diagram-ATOU4E4O-B9Z3zFfp.js → diagram-ATOU4E4O-CJt4F0i4.js} +1 -1
- package/dist/web/assets/{diagram-CDSNMT55-D3TaDPXU.js → diagram-CDSNMT55-DEShJv56.js} +1 -1
- package/dist/web/assets/{diagram-MLGK6HIB-DOXcXm2Y.js → diagram-MLGK6HIB-DOFOADfs.js} +1 -1
- package/dist/web/assets/{diagram-MPIPVDR6-B5E2J8pO.js → diagram-MPIPVDR6-ux537BMl.js} +1 -1
- package/dist/web/assets/{dist-DSPzgfNo.js → dist-7xWvOKEv.js} +1 -1
- package/dist/web/assets/{dist-C9cJQvJH.js → dist-BThMRW5U.js} +1 -1
- package/dist/web/assets/{dist-BXUopzfH.js → dist-BWa3ecCV.js} +1 -1
- package/dist/web/assets/{dist-BX8UA0fl.js → dist-BbdrgL5V.js} +1 -1
- package/dist/web/assets/{dist-Kd0W7Y_b.js → dist-Bo7anpPj.js} +1 -1
- package/dist/web/assets/{dist-BFbA030x.js → dist-Bu9yRqTU.js} +1 -1
- package/dist/web/assets/{dist-Cxd9qKh7.js → dist-Bvnostf5.js} +1 -1
- package/dist/web/assets/{dist-C9STut2J.js → dist-CK1va5C_.js} +1 -1
- package/dist/web/assets/{dist-BGzvKGEu.js → dist-CLv-grWO.js} +1 -1
- package/dist/web/assets/{dist-CRoJr3t6.js → dist-D1EUrS6y.js} +1 -1
- package/dist/web/assets/{dist-PDsGXJi3.js → dist-DL0dBIkt.js} +1 -1
- package/dist/web/assets/{ebnfDiagram-ZINNZB2B-D-OCB_ud.js → ebnfDiagram-ZINNZB2B-DEybuZle.js} +1 -1
- package/dist/web/assets/{elk-276RUBZZ-CzjP8RHy.js → elk-276RUBZZ-CZXZRpGb.js} +1 -1
- package/dist/web/assets/{erDiagram-OPXOYQCR-Clohps7p.js → erDiagram-OPXOYQCR-BgRqGAt5.js} +1 -1
- package/dist/web/assets/eventmodeling-NTZA5JFV-ZuRq6Sae.js +1 -0
- package/dist/web/assets/flowDiagram-KWPJA3E3-DRyHAdLb.js +1 -0
- package/dist/web/assets/{ganttDiagram-FUAMR5RP-ZWH4HYq5.js → ganttDiagram-FUAMR5RP-CBJwX1gk.js} +1 -1
- package/dist/web/assets/{gitGraph-4MIJSDKK-C3AfRnC8.js → gitGraph-4MIJSDKK-Dw-XA3G1.js} +1 -1
- package/dist/web/assets/{gitGraphDiagram-X574FWY7-BobkQARX.js → gitGraphDiagram-X574FWY7-BpGccoWp.js} +1 -1
- package/dist/web/assets/i18n-sfJvmpVb.js +1 -0
- package/dist/web/assets/index-B2CzafCr.js +2 -0
- package/dist/web/assets/{info-A6RAGUB7-Dh_SAe09.js → info-A6RAGUB7-Dj5RfJsg.js} +1 -1
- package/dist/web/assets/{infoDiagram-VRGFBTTK-izDlhNTw.js → infoDiagram-VRGFBTTK-DyVSH991.js} +1 -1
- package/dist/web/assets/{init-app-C1a6BWWN.js → init-app-DSS44aRI.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-OU5B5YK6-BJ89XzVJ.js → ishikawaDiagram-OU5B5YK6-Cu0n2oqT.js} +1 -1
- package/dist/web/assets/{journeyDiagram-ZHPQQLJL-poV-f08K.js → journeyDiagram-ZHPQQLJL-Bz1Ot6Zg.js} +1 -1
- package/dist/web/assets/{kanban-definition-PNTS6WVX-Cn3FEnH7.js → kanban-definition-PNTS6WVX-C42vuY7H.js} +1 -1
- package/dist/web/assets/{line-bE9Mqcqy.js → line-C5WKurbS.js} +1 -1
- package/dist/web/assets/markdown-DBTEhbhQ.js +15 -0
- package/dist/web/assets/{mermaid-parser.core-Cua7H5pF.js → mermaid-parser.core-B7l8qh8B.js} +3 -3
- package/dist/web/assets/{mermaid.core-BMPOA8T-.js → mermaid.core-Drs2mjGg.js} +4 -4
- package/dist/web/assets/{mindmap-definition-NLK3R4M7-DaTGr8Fs.js → mindmap-definition-NLK3R4M7-BV1FNwCn.js} +1 -1
- package/dist/web/assets/{packet-AYTQ26CC-DmLfghd9.js → packet-AYTQ26CC-BPmUY1Ig.js} +1 -1
- package/dist/web/assets/{pegDiagram-GJSIUBJH-CTlxXcbf.js → pegDiagram-GJSIUBJH-D6NPxPdr.js} +1 -1
- package/dist/web/assets/{pie-WAS4IAKB-52oNsEtc.js → pie-WAS4IAKB-CTp2jNAc.js} +1 -1
- package/dist/web/assets/{pieDiagram-5QR66LMP-CbJtB1te.js → pieDiagram-5QR66LMP-BVkABrg7.js} +1 -1
- package/dist/web/assets/pinia-BVWaJ8NX.js +1 -0
- package/dist/web/assets/{quadrantDiagram-O4NWA36T-DCg-uD08.js → quadrantDiagram-O4NWA36T-LZCjVd08.js} +1 -1
- package/dist/web/assets/{radar-RG4KPBEZ-9uA3AOZR.js → radar-RG4KPBEZ-CCiUrmsg.js} +1 -1
- package/dist/web/assets/{railroad-74A4TZTK-BPxQfpxv.js → railroad-74A4TZTK-CZn8VJbK.js} +1 -1
- package/dist/web/assets/railroad-abnf-HS5TGJTU-B-9tG9pW.js +1 -0
- package/dist/web/assets/railroad-ebnf-LZEXJU2U-D7lUyGOq.js +1 -0
- package/dist/web/assets/railroad-peg-WCYAUIDC-ja94t32K.js +1 -0
- package/dist/web/assets/{railroadDiagram-XR7U4H2S-CwBNr6fr.js → railroadDiagram-XR7U4H2S-nopy-mdw.js} +1 -1
- package/dist/web/assets/{requirementDiagram-PLB6GJNP-BbtZt0St.js → requirementDiagram-PLB6GJNP-BOeMzf-x.js} +1 -1
- package/dist/web/assets/{safe-storage-Bn-sHAYw.js → safe-storage-aRoyeFxv.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-IPEJSGJF-DRWdMnFl.js → sankeyDiagram-IPEJSGJF-Bbk0AQUe.js} +1 -1
- package/dist/web/assets/{sequenceDiagram-PO4LG4MO-C4tWeWpt.js → sequenceDiagram-PO4LG4MO-ZpubjKFc.js} +1 -1
- package/dist/web/assets/{stateDiagram-v2-GCMORJYK-pE0T1U5E.js → stateDiagram-v2-GCMORJYK-DNjDh9yZ.js} +1 -1
- package/dist/web/assets/{swimlanes-2SLR337P-DKky6E3p.js → swimlanes-2SLR337P-C-_UzZF_.js} +1 -1
- package/dist/web/assets/swimlanesDiagram-TC7HE7FX-CVSZNvS2.js +8 -0
- package/dist/web/assets/theme-CeQhGDjh.js +1 -0
- package/dist/web/assets/{timeline-definition-EJHVYXUP-CsRzcMLr.js → timeline-definition-EJHVYXUP-BiaJyHdJ.js} +1 -1
- package/dist/web/assets/{treeView-Q6P3EWNA-CQYqoPG3.js → treeView-Q6P3EWNA-CENjlerX.js} +1 -1
- package/dist/web/assets/{treemap-WGGIJYW6-BzFw4gFs.js → treemap-WGGIJYW6-CBpdf3L2.js} +1 -1
- package/dist/web/assets/use-add-agent-context-SApxn9fW.js +1 -0
- package/dist/web/assets/{use-app-theme-9qFZUBqz.js → use-app-theme-DP8Ymwwb.js} +1 -1
- package/dist/web/assets/use-panel-width-CTXD_csP.js +1 -0
- package/dist/web/assets/use-server-events-C13Sw-rU.js +1 -0
- package/dist/web/assets/{usecaseDiagram-POWQR4AR-IMfiBw6h.js → usecaseDiagram-POWQR4AR-CcJ83_Ve.js} +1 -1
- package/dist/web/assets/{vennDiagram-UO4OBE2U-JKdzpNy2.js → vennDiagram-UO4OBE2U-DBjzpbFr.js} +1 -1
- package/dist/web/assets/{wardley-WFR3VGLG-B9Yiwlp8.js → wardley-WFR3VGLG-DmlbUWUM.js} +1 -1
- package/dist/web/assets/{wardleyDiagram-VNRHLVJA-BVoc2hGS.js → wardleyDiagram-VNRHLVJA-CWSZCqf4.js} +1 -1
- package/dist/web/assets/window-store-DNnKUhxs.js +1 -0
- package/dist/web/assets/{xychartDiagram-PMCCYNJV-B_XV1aim.js → xychartDiagram-PMCCYNJV-CMnNSaZv.js} +1 -1
- package/dist/web/index.html +1 -1
- package/package.json +3 -1
- package/dist/web/assets/AppPage-cl-3VfAl.js +0 -1
- package/dist/web/assets/IndexPage-CYFIGWy9.css +0 -1
- package/dist/web/assets/IndexPage-CmBmgu4A.js +0 -1
- package/dist/web/assets/NoteVisualEditor-zjZr9aod.js +0 -1056
- package/dist/web/assets/NotesPage-C5VXA9Bb.css +0 -1
- package/dist/web/assets/NotesPage-Jeva3Jta.js +0 -114
- package/dist/web/assets/QSpace-BRLIXkHB.js +0 -1
- package/dist/web/assets/ReviewDetailPage-CpJPrSKO.js +0 -1
- package/dist/web/assets/StatusSwitcher-D5UG_YWP.js +0 -1
- package/dist/web/assets/agent-icon-Dx8WBYX_.js +0 -1
- package/dist/web/assets/agent-store-B1VK6S0D.js +0 -1
- package/dist/web/assets/app-info-store-D76h_OdJ.js +0 -1
- package/dist/web/assets/architecture-7GRP2DOG-Byc4Oz95.js +0 -1
- package/dist/web/assets/channel-DbRAFIx1.js +0 -1
- package/dist/web/assets/equal-arrays-GA_7ZCAb.js +0 -1
- package/dist/web/assets/eventmodeling-NTZA5JFV-FWK4tnN_.js +0 -1
- package/dist/web/assets/flowDiagram-KWPJA3E3-C10B5_6J.js +0 -1
- package/dist/web/assets/i18n-CC_rvfan.js +0 -1
- package/dist/web/assets/index-Ic8yFbJg.js +0 -2
- package/dist/web/assets/markdown-D85iiL_9.js +0 -15
- package/dist/web/assets/pinia-BlCzIRX-.js +0 -1
- package/dist/web/assets/railroad-abnf-HS5TGJTU-CPVHNg05.js +0 -1
- package/dist/web/assets/railroad-ebnf-LZEXJU2U-DAjTaOUg.js +0 -1
- package/dist/web/assets/railroad-peg-WCYAUIDC-DkxyKsj4.js +0 -1
- package/dist/web/assets/swimlanesDiagram-TC7HE7FX-CPhibEqM.js +0 -8
- package/dist/web/assets/theme-B-g7wQEs.js +0 -1
- package/dist/web/assets/use-panel-width-Dyh49bod.js +0 -1
- package/dist/web/assets/use-server-events-24_soFuj.js +0 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { MAX_NOTE_ASSET_BYTES, MAX_NOTE_PDF_BYTES } from "./constants.js";
|
|
1
2
|
// Keep upload policy, response MIME types and asset identifiers in agreement.
|
|
2
3
|
export const NOTE_ASSET_FORMATS = [
|
|
3
4
|
// Animated PNG retains the same storage extension as existing PNG attachments.
|
|
@@ -6,6 +7,7 @@ export const NOTE_ASSET_FORMATS = [
|
|
|
6
7
|
mime: 'image/png',
|
|
7
8
|
label: 'PNG',
|
|
8
9
|
display: 'image',
|
|
10
|
+
maxBytes: MAX_NOTE_ASSET_BYTES,
|
|
9
11
|
aliases: ['apng']
|
|
10
12
|
},
|
|
11
13
|
{
|
|
@@ -13,13 +15,15 @@ export const NOTE_ASSET_FORMATS = [
|
|
|
13
15
|
mime: 'image/jpeg',
|
|
14
16
|
label: 'JPEG',
|
|
15
17
|
display: 'image',
|
|
16
|
-
|
|
18
|
+
maxBytes: MAX_NOTE_ASSET_BYTES,
|
|
19
|
+
aliases: ['jpeg']
|
|
17
20
|
},
|
|
18
21
|
{
|
|
19
22
|
extension: 'gif',
|
|
20
23
|
mime: 'image/gif',
|
|
21
24
|
label: 'GIF',
|
|
22
25
|
display: 'image',
|
|
26
|
+
maxBytes: MAX_NOTE_ASSET_BYTES,
|
|
23
27
|
aliases: []
|
|
24
28
|
},
|
|
25
29
|
{
|
|
@@ -27,6 +31,15 @@ export const NOTE_ASSET_FORMATS = [
|
|
|
27
31
|
mime: 'image/webp',
|
|
28
32
|
label: 'WebP',
|
|
29
33
|
display: 'image',
|
|
34
|
+
maxBytes: MAX_NOTE_ASSET_BYTES,
|
|
35
|
+
aliases: []
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
extension: 'pdf',
|
|
39
|
+
mime: 'application/pdf',
|
|
40
|
+
label: 'PDF',
|
|
41
|
+
display: 'link',
|
|
42
|
+
maxBytes: MAX_NOTE_PDF_BYTES,
|
|
30
43
|
aliases: []
|
|
31
44
|
}
|
|
32
45
|
];
|
|
@@ -34,6 +47,11 @@ export const NOTE_ASSET_FORMATS = [
|
|
|
34
47
|
export const NOTE_ASSET_ID_PATTERN = `^[a-f0-9]{64}\\.(${NOTE_ASSET_FORMATS.map(format => format.extension).join('|')})$`;
|
|
35
48
|
// Error messages follow the same allowlist as upload validation.
|
|
36
49
|
export const SUPPORTED_NOTE_ASSETS = NOTE_ASSET_FORMATS.map(format => format.label).join(', ');
|
|
50
|
+
// Extensions that identify an image attachment, including accepted aliases.
|
|
51
|
+
export const NOTE_IMAGE_EXTENSIONS = NOTE_ASSET_FORMATS.filter(format => format.display === 'image').flatMap(format => [format.extension, ...format.aliases]);
|
|
37
52
|
export function noteAssetFormat(extension) {
|
|
38
53
|
return NOTE_ASSET_FORMATS.find(format => format.extension === extension);
|
|
39
54
|
}
|
|
55
|
+
export function maxNoteAssetBytes(kind) {
|
|
56
|
+
return kind === 'pdf' ? MAX_NOTE_PDF_BYTES : MAX_NOTE_ASSET_BYTES;
|
|
57
|
+
}
|
|
@@ -1,2 +1,7 @@
|
|
|
1
1
|
// Bound image uploads in both the browser and the multipart parser.
|
|
2
2
|
export const MAX_NOTE_ASSET_BYTES = 10_000_000;
|
|
3
|
+
// PDF imports require confirmation above the smaller threshold.
|
|
4
|
+
export const NOTE_PDF_WARNING_BYTES = 50_000_000;
|
|
5
|
+
export const MAX_NOTE_PDF_BYTES = 100_000_000;
|
|
6
|
+
// This bounds useful downloads in one client operation.
|
|
7
|
+
export const MAX_NOTE_IMPORT_BYTES = 200_000_000;
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { fromMarkdown } from 'mdast-util-from-markdown';
|
|
2
|
+
import { splitNote } from "./document.js";
|
|
3
|
+
import { destinationRange } from "./references.js";
|
|
4
|
+
import { NOTE_IMAGE_EXTENSIONS } from "./asset-formats.js";
|
|
5
|
+
import { isCredentialFreeWebUrl, webUrlFileName, webUrlLastSegment } from "../utils/web-url.js";
|
|
6
|
+
/** Edits that undo `edits` when applied to the text they produced. */
|
|
7
|
+
export function invertExternalAssetEdits(text, edits) {
|
|
8
|
+
let delta = 0;
|
|
9
|
+
return [...edits]
|
|
10
|
+
.sort((a, b) => a.start - b.start)
|
|
11
|
+
.map(edit => {
|
|
12
|
+
const start = edit.start + delta;
|
|
13
|
+
delta += edit.value.length - (edit.end - edit.start);
|
|
14
|
+
return {
|
|
15
|
+
start,
|
|
16
|
+
end: start + edit.value.length,
|
|
17
|
+
value: text.slice(edit.start, edit.end)
|
|
18
|
+
};
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
export function externalAssetOffset(offset, edits) {
|
|
22
|
+
let delta = 0;
|
|
23
|
+
for (const edit of [...edits].sort((a, b) => a.start - b.start)) {
|
|
24
|
+
if (offset < edit.start)
|
|
25
|
+
break;
|
|
26
|
+
if (offset < edit.end) {
|
|
27
|
+
return (edit.start + delta + Math.min(offset - edit.start, edit.value.length));
|
|
28
|
+
}
|
|
29
|
+
delta += edit.value.length - (edit.end - edit.start);
|
|
30
|
+
}
|
|
31
|
+
return offset + delta;
|
|
32
|
+
}
|
|
33
|
+
function assetDestinations(text, protocol) {
|
|
34
|
+
const { body } = splitNote(text);
|
|
35
|
+
const offset = text.length - body.length;
|
|
36
|
+
const tree = fromMarkdown(body);
|
|
37
|
+
const uses = new Map();
|
|
38
|
+
const walk = (node) => {
|
|
39
|
+
if (node.type === 'imageReference' || node.type === 'linkReference') {
|
|
40
|
+
const group = uses.get(node.identifier) ?? [];
|
|
41
|
+
group.push(node.type === 'imageReference');
|
|
42
|
+
uses.set(node.identifier, group);
|
|
43
|
+
}
|
|
44
|
+
if ('children' in node)
|
|
45
|
+
for (const child of node.children)
|
|
46
|
+
walk(child);
|
|
47
|
+
};
|
|
48
|
+
walk(tree);
|
|
49
|
+
const result = [];
|
|
50
|
+
const visit = (node) => {
|
|
51
|
+
if (node.type === 'image' ||
|
|
52
|
+
node.type === 'link' ||
|
|
53
|
+
node.type === 'definition') {
|
|
54
|
+
const references = node.type === 'definition' ? uses.get(node.identifier) : undefined;
|
|
55
|
+
const image = node.type === 'image' || references?.some(Boolean);
|
|
56
|
+
const count = node.type === 'definition' ? (references?.length ?? 0) : 1;
|
|
57
|
+
const start = node.position?.start.offset;
|
|
58
|
+
const end = node.position?.end.offset;
|
|
59
|
+
if (count && start !== undefined && end !== undefined) {
|
|
60
|
+
try {
|
|
61
|
+
const url = new URL(node.url.startsWith('//') ? protocol + node.url : node.url);
|
|
62
|
+
if (!isCredentialFreeWebUrl(url))
|
|
63
|
+
return;
|
|
64
|
+
const extension = webUrlLastSegment(url)
|
|
65
|
+
.split('.')
|
|
66
|
+
.at(-1)
|
|
67
|
+
?.toLowerCase();
|
|
68
|
+
const kind = image
|
|
69
|
+
? 'image'
|
|
70
|
+
: extension === 'pdf'
|
|
71
|
+
? 'pdf'
|
|
72
|
+
: NOTE_IMAGE_EXTENSIONS.includes(extension ?? '')
|
|
73
|
+
? 'image'
|
|
74
|
+
: null;
|
|
75
|
+
const range = destinationRange(body.slice(start, end), node.type === 'definition');
|
|
76
|
+
if (kind && range) {
|
|
77
|
+
const fragment = url.hash;
|
|
78
|
+
url.hash = '';
|
|
79
|
+
result.push({
|
|
80
|
+
url: url.href,
|
|
81
|
+
fragment,
|
|
82
|
+
kind,
|
|
83
|
+
start: offset + start + range[0],
|
|
84
|
+
end: offset + start + range[1],
|
|
85
|
+
occurrences: count
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// Invalid destinations are not download candidates.
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if ('children' in node)
|
|
95
|
+
for (const child of node.children)
|
|
96
|
+
visit(child);
|
|
97
|
+
};
|
|
98
|
+
visit(tree);
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
101
|
+
export function externalNoteAssets(text, protocol = 'https:') {
|
|
102
|
+
const assets = new Map();
|
|
103
|
+
for (const item of assetDestinations(text, protocol)) {
|
|
104
|
+
const existing = assets.get(item.url);
|
|
105
|
+
if (existing) {
|
|
106
|
+
existing.occurrences += item.occurrences;
|
|
107
|
+
if (item.kind === 'image')
|
|
108
|
+
existing.kind = 'image';
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
assets.set(item.url, {
|
|
112
|
+
url: item.url,
|
|
113
|
+
kind: item.kind,
|
|
114
|
+
name: webUrlFileName(new URL(item.url)),
|
|
115
|
+
occurrences: item.occurrences
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return [...assets.values()];
|
|
120
|
+
}
|
|
121
|
+
export function replaceExternalNoteAssets(text, replacements, protocol = 'https:') {
|
|
122
|
+
let result = text;
|
|
123
|
+
let count = 0;
|
|
124
|
+
const edits = assetDestinations(text, protocol)
|
|
125
|
+
.filter(item => replacements.has(item.url))
|
|
126
|
+
.sort((a, b) => b.start - a.start);
|
|
127
|
+
for (const item of edits) {
|
|
128
|
+
result =
|
|
129
|
+
result.slice(0, item.start) +
|
|
130
|
+
replacements.get(item.url) +
|
|
131
|
+
item.fragment +
|
|
132
|
+
result.slice(item.end);
|
|
133
|
+
count += item.occurrences;
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
text: result,
|
|
137
|
+
count,
|
|
138
|
+
edits: edits.map(item => ({
|
|
139
|
+
start: item.start,
|
|
140
|
+
end: item.end,
|
|
141
|
+
value: replacements.get(item.url) + item.fragment
|
|
142
|
+
}))
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
export function isNoteAssetShortcut(event) {
|
|
146
|
+
return (event.code === 'KeyD' &&
|
|
147
|
+
event.ctrlKey &&
|
|
148
|
+
event.shiftKey &&
|
|
149
|
+
!event.metaKey &&
|
|
150
|
+
!event.altKey &&
|
|
151
|
+
!event.repeat &&
|
|
152
|
+
!event.isComposing);
|
|
153
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// Note paths use "/" on every platform and have no leading or trailing slash.
|
|
2
|
+
/** Last path segment: the file or folder name. */
|
|
3
|
+
export function noteBasename(path) {
|
|
4
|
+
return path.split('/').at(-1) ?? '';
|
|
5
|
+
}
|
|
6
|
+
/** Folder that contains the entry; empty string for the notes root. */
|
|
7
|
+
export function noteParentPath(path) {
|
|
8
|
+
return path.split('/').slice(0, -1).join('/');
|
|
9
|
+
}
|
|
10
|
+
/** Joins a folder and an entry name; an empty folder means the notes root. */
|
|
11
|
+
export function noteChildPath(parent, name) {
|
|
12
|
+
return parent ? parent + '/' + name : name;
|
|
13
|
+
}
|
|
14
|
+
/** Name of a note without its Markdown extension. */
|
|
15
|
+
export function noteTitle(path) {
|
|
16
|
+
return noteBasename(path).replace(/\.md$/i, '');
|
|
17
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { noteBasename } from "./note-path.js";
|
|
1
2
|
export function localReference(from, href) {
|
|
2
3
|
if (/^[a-z][a-z\d+.-]*:/i.test(href) ||
|
|
3
4
|
href.startsWith('/') ||
|
|
@@ -37,7 +38,7 @@ export function wikiReference(value, from, paths) {
|
|
|
37
38
|
const [name = '', anchor = ''] = match[1].split('#');
|
|
38
39
|
const target = /\.md$/i.test(name) ? name : name + '.md';
|
|
39
40
|
const local = localReference(from, target.split('/').map(encodeURIComponent).join('/'))?.path;
|
|
40
|
-
const candidates = paths.filter(path => path
|
|
41
|
+
const candidates = paths.filter(path => noteBasename(path) === target);
|
|
41
42
|
const path = local && paths.includes(local)
|
|
42
43
|
? local
|
|
43
44
|
: paths.includes(target)
|
|
@@ -6,7 +6,7 @@ import { splitNote } from "./document.js";
|
|
|
6
6
|
import { noteLink } from "./links.js";
|
|
7
7
|
import { safeDecodeURIComponent } from "../utils/safe-decode.js";
|
|
8
8
|
// The AST excludes code and HTML; this scanner locates only a parsed destination.
|
|
9
|
-
function destinationRange(source, definition) {
|
|
9
|
+
export function destinationRange(source, definition) {
|
|
10
10
|
let depth = 0;
|
|
11
11
|
let cursor = source.startsWith('!') ? 1 : 0;
|
|
12
12
|
for (; cursor < source.length; cursor++) {
|
|
@@ -155,10 +155,68 @@ export const NoteAssetSchema = Type.Object({
|
|
|
155
155
|
export const NoteAssetParams = Type.Object({
|
|
156
156
|
id: Type.String({
|
|
157
157
|
pattern: NOTE_ASSET_ID_PATTERN,
|
|
158
|
-
description: 'Content hash and
|
|
158
|
+
description: 'Content hash and attachment extension.'
|
|
159
159
|
})
|
|
160
160
|
}, { description: 'Stored attachment identifier.' });
|
|
161
161
|
export const NoteAssetContentSchema = Type.String({
|
|
162
|
-
description: '
|
|
162
|
+
description: 'Image or PDF attachment bytes.',
|
|
163
163
|
format: 'binary'
|
|
164
164
|
});
|
|
165
|
+
// External resources use bounded URLs and a fixed format class.
|
|
166
|
+
const ExternalAssetUrl = Type.String({
|
|
167
|
+
minLength: 1,
|
|
168
|
+
maxLength: 8192,
|
|
169
|
+
description: 'Public HTTP or HTTPS resource URL.'
|
|
170
|
+
});
|
|
171
|
+
const ExternalAssetKind = Type.Union([Type.Literal('image'), Type.Literal('pdf')], { description: 'Expected attachment class.' });
|
|
172
|
+
export const InspectExternalAssetBody = Type.Object({ url: ExternalAssetUrl }, {
|
|
173
|
+
additionalProperties: false,
|
|
174
|
+
description: 'Inspect a remote attachment without downloading its body.'
|
|
175
|
+
});
|
|
176
|
+
export const PreviewExternalAssetBody = Type.Object({ url: ExternalAssetUrl }, {
|
|
177
|
+
additionalProperties: false,
|
|
178
|
+
description: 'Read a bounded remote image preview.'
|
|
179
|
+
});
|
|
180
|
+
export const ExternalAssetInspectionSchema = Type.Object({
|
|
181
|
+
size: Nullable(Type.Integer({
|
|
182
|
+
minimum: 0,
|
|
183
|
+
description: 'Size reported by the source, or null when unknown.'
|
|
184
|
+
}))
|
|
185
|
+
}, { description: 'Optional remote size information.' });
|
|
186
|
+
export const ImportExternalAssetBody = Type.Object({
|
|
187
|
+
url: ExternalAssetUrl,
|
|
188
|
+
kind: ExternalAssetKind,
|
|
189
|
+
allowLargePdf: Type.Boolean({
|
|
190
|
+
description: 'User confirmed this PDF may exceed 50 MB.'
|
|
191
|
+
}),
|
|
192
|
+
remainingBytes: Type.Integer({
|
|
193
|
+
minimum: 1,
|
|
194
|
+
maximum: 200000000,
|
|
195
|
+
description: 'Remaining useful bytes in the current operation.'
|
|
196
|
+
})
|
|
197
|
+
}, {
|
|
198
|
+
additionalProperties: false,
|
|
199
|
+
description: 'Import one selected external attachment.'
|
|
200
|
+
});
|
|
201
|
+
export const ExternalAssetResultSchema = Type.Union([
|
|
202
|
+
Type.Object({
|
|
203
|
+
status: Type.Literal('stored', {
|
|
204
|
+
description: 'Resource stored successfully.'
|
|
205
|
+
}),
|
|
206
|
+
url: Type.String({ description: 'Permanent internal attachment URL.' }),
|
|
207
|
+
bytes: Type.Integer({ description: 'Actual stored byte count.' }),
|
|
208
|
+
format: Type.String({ description: 'Detected storage extension.' })
|
|
209
|
+
}, { description: 'Successful attachment import.' }),
|
|
210
|
+
Type.Object({
|
|
211
|
+
status: Type.Literal('confirmation-required', {
|
|
212
|
+
description: 'User must confirm a large PDF.'
|
|
213
|
+
}),
|
|
214
|
+
size: Nullable(Type.Integer({ description: 'Advertised size, or null.' }))
|
|
215
|
+
}, { description: 'Import paused for a large PDF confirmation.' }),
|
|
216
|
+
Type.Object({
|
|
217
|
+
status: Type.Literal('rejected', {
|
|
218
|
+
description: 'Resource exceeded a limit.'
|
|
219
|
+
}),
|
|
220
|
+
reason: Type.Union([Type.Literal('operation-limit'), Type.Literal('file-too-large')], { description: 'The limit that prevented this download.' })
|
|
221
|
+
}, { description: 'Import rejected without storing a file.' })
|
|
222
|
+
], { description: 'Outcome of importing one external attachment.' });
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { safeDecodeURIComponent } from "./safe-decode.js";
|
|
2
|
+
/** True for `http:`/`https:` URLs without embedded credentials. */
|
|
3
|
+
export function isCredentialFreeWebUrl(url) {
|
|
4
|
+
return ((url.protocol === 'http:' || url.protocol === 'https:') &&
|
|
5
|
+
!url.username &&
|
|
6
|
+
!url.password);
|
|
7
|
+
}
|
|
8
|
+
/** Decoded last path segment; empty for a path that ends with a slash. */
|
|
9
|
+
export function webUrlLastSegment(url) {
|
|
10
|
+
return safeDecodeURIComponent(url.pathname.split('/').at(-1) ?? '');
|
|
11
|
+
}
|
|
12
|
+
/** Decoded file name of the URL path, or the host name when the path has none. */
|
|
13
|
+
export function webUrlFileName(url) {
|
|
14
|
+
return webUrlLastSegment(url) || url.hostname;
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{J as e,L as t,P as n,S as r,_ as i,b as a,l as o,s}from"./runtime-core.esm-bundler-BKFI1w28.js";import{_ as c,m as l,o as u,p as d}from"./use-router-link-BGc0noIO.js";import{t as f}from"./create-BSmXD9Zr.js";function p(e,t,n){let r=new Map,i=0;function a(e){let t=r.get(e);if(t)return r.delete(e),r.set(e,t),t.value}function o(a,o){s(a);let c=t(o);r.set(a,{value:o,weight:c}),i+=c;for(let[t,a]of r){if(i<=e||r.size<=1)break;r.delete(t),i-=a.weight,n?.(t,a.value)}}function s(e){let t=r.get(e);t&&(r.delete(e),i-=t.weight,n?.(e,t.value))}function c(){for(let e of r.keys())s(e)}return{get:a,set:o,remove:s,clear:c,size:()=>r.size}}var m=f({name:`QPage`,props:{padding:Boolean,styleFn:Function},setup(e,{slots:t}){let n=d(),i=r(c,l);if(i===l)return console.error(`QPage needs to be a deep child of QLayout`),l;if(r(`_q_pc_`,l)===l)return console.error(`QPage needs to be child of QPageContainer`),l;let o=s(()=>{let t=(i.header.space?i.header.size:0)+(i.footer.space?i.footer.size:0);if(typeof e.styleFn==`function`){let r=i.isContainer.value?i.containerHeight.value:n.screen.height;return e.styleFn(t,r)}return{minHeight:i.isContainer.value?i.containerHeight.value-t+`px`:n.screen.height===0?t===0?`100vh`:`calc(100vh - ${t}px)`:n.screen.height-t+`px`}}),f=s(()=>`q-page${e.padding?` q-layout-padding`:``}`);return()=>a(`main`,{class:f.value,style:o.value},u(t.default))}}),h=i({__name:`AppPage`,setup(r){function i(e,t){return{height:`${t-e}px`}}return(r,a)=>(n(),o(m,{"style-fn":i},{default:e(()=>[t(r.$slots,`default`)]),_:3}))}});export{p as n,h as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{F as e,K as t,O as n,S as r,b as i,ct as a,ot as o,s,v as c}from"./runtime-core.esm-bundler-BKFI1w28.js";import{l,o as u,p as ee,r as d,s as f,t as p,v as m,w as te,x as h}from"./use-router-link-BGc0noIO.js";import{a as g,c as _,i as v,l as y,o as b,r as x,s as S,u as C}from"./event-rR76ioXz.js";import{s as w}from"./is-CE4jkrGQ.js";import{n as T,t as E}from"./create-BSmXD9Zr.js";import{p as ne}from"./QInput-DJgTh2Qy.js";import{p as re}from"./QBtn-DoggJe1Q.js";import{n as D,t as ie}from"./use-dark-BHObfh0O.js";import{$ as ae,B as oe,F as O,G as se,H as ce,I as le,J as ue,K as de,L as fe,M as pe,N as me,P as he,Q as ge,R as _e,U as ve,V as ye,W as k,X as be,Y as A,Z as xe,et as j,l as Se,q as Ce,tt as M,u as we,x as Te,z as N}from"./index-Ic8yFbJg.js";var P=E({name:`QItemSection`,props:{avatar:Boolean,thumbnail:Boolean,side:Boolean,top:Boolean,noWrap:Boolean},setup(e,{slots:t}){let n=s(()=>`q-item__section column q-item__section--${e.avatar||e.side||e.thumbnail?`side`:`main`}`+(e.top?` q-item__section--top justify-start`:` justify-center`)+(e.avatar?` q-item__section--avatar`:``)+(e.thumbnail?` q-item__section--thumbnail`:``)+(e.noWrap?` q-item__section--nowrap`:``));return()=>i(`div`,{class:n.value},u(t.default))}}),Ee=E({name:`QItem`,props:{...D,...d,tag:{type:String,default:`div`},active:{type:Boolean,default:null},clickable:{type:Boolean,default:null},onClick:Function,dense:Boolean,insetLevel:Number,role:String,tabindex:[String,Number],focused:Boolean,manualFocus:Boolean},emits:[`keyup`],setup(e,{slots:t,emit:n}){let o=ee(),c=ie(e,o),{hasLink:l,linkAttrs:u,linkClass:d,linkTag:te,navigateOnClick:g}=p(),_=a(null),v=a(null),y=s(()=>(e.clickable===null?e.onClick!==void 0:e.clickable)||l.value||e.tag===`label`),b=s(()=>!e.disable&&y.value),x=r(m,null),S=s(()=>{if(e.role!==void 0)return e.role;let t=x===null?null:x.value;if(t===`menu`||t===`menubar`)return y.value?`menuitem`:void 0;if(!l.value)return b.value?`button`:t===`list`?`listitem`:void 0}),w=s(()=>`q-item q-item-type row no-wrap`+(e.dense?` q-item--dense`:``)+(c()?` q-item--dark`:``)+(l.value&&e.active===null?d.value:e.active?` q-item--active${e.activeClass===void 0?``:` ${e.activeClass}`}`:``)+(e.disable?` disabled`:``)+(b.value?` q-item--clickable q-link cursor-pointer `+(e.manualFocus?`q-manual-focusable`:`q-focusable q-hoverable`)+(e.focused?` q-manual-focusable--focused`:``):``)),T=s(()=>e.insetLevel===void 0?null:{[`padding`+(o.lang.rtl?`Right`:`Left`)]:16+e.insetLevel*56+`px`});function E(e){b.value&&(v.value!==null&&!e.qAvoidFocus&&(!e.qKeyEvent&&document.activeElement===_.value?v.value.focus({preventScroll:!0}):document.activeElement===v.value&&_.value.focus({preventScroll:!0})),g(e))}function ne(e){if(b.value&&h(e,[13,32])){C(e),e.qKeyEvent=!0;let t=new MouseEvent(`click`,e);t.qKeyEvent=!0,_.value.dispatchEvent(t)}n(`keyup`,e)}function re(e){b.value&&e.keyCode===32&&C(e)}function D(){let e=f(t.default,[]);return b.value&&e.unshift(i(`div`,{class:`q-focus-helper`,tabindex:-1,ref:v})),e}return()=>{let t={ref:_,class:w.value,style:T.value,role:S.value,onKeyup:ne};return b.value?(t.onClick=E,t.onKeydown=re,t.tabindex=e.tabindex||`0`,Object.assign(t,u.value)):y.value&&(t[`aria-disabled`]=`true`),i(te.value,t,D())}}}),De=[`ul`,`ol`],F=E({name:`QList`,props:{...D,bordered:Boolean,dense:Boolean,separator:Boolean,padding:Boolean,role:String,tag:{type:String,default:`div`}},setup(t,{slots:n}){let r=ee(),a=ie(t,r),o=s(()=>t.role===void 0?De.includes(t.tag)?null:`list`:t.role);e(m,s(()=>t.role===void 0?`list`:t.role));let c=s(()=>`q-list`+(t.bordered?` q-list--bordered`:``)+(t.dense?` q-list--dense`:``)+(t.separator?` q-list--separator`:``)+(a()?` q-list--dark`:``)+(t.padding?` q-list--padding`:``));return()=>i(t.tag,{class:c.value,role:o.value},u(n.default))}}),I={left:!0,right:!0,up:!0,down:!0,horizontal:!0,vertical:!0},Oe=Object.keys(I);I.all=!0;function ke(e){let t={};for(let n of Oe)e[n]&&(t[n]=!0);return Object.keys(t).length===0?I:(t.horizontal?t.left=t.right=!0:t.left&&t.right&&(t.horizontal=!0),t.vertical?t.up=t.down=!0:t.up&&t.down&&(t.vertical=!0),t.horizontal&&t.vertical&&(t.all=!0),t)}var L=[`INPUT`,`TEXTAREA`];function R(e,t){return t.event===void 0&&e.target!==void 0&&!e.target.draggable&&typeof t.handler==`function`&&!L.includes(e.target.nodeName.toUpperCase())&&(e.qClonedBy===void 0||!e.qClonedBy.includes(t.uid))}var{passive:z,passiveCapture:B,notPassiveCapture:V}=v,Ae=0;function H(e,t,n){let r=b(e),i,a=r.left-t.event.x,o=r.top-t.event.y,s=Math.abs(a),c=Math.abs(o),l=t.direction;l.horizontal&&!l.vertical?i=a<0?`left`:`right`:!l.horizontal&&l.vertical?i=o<0?`up`:`down`:l.up&&o<0?(i=`up`,s>c&&(l.left&&a<0?i=`left`:l.right&&a>0&&(i=`right`))):l.down&&o>0?(i=`down`,s>c&&(l.left&&a<0?i=`left`:l.right&&a>0&&(i=`right`))):l.left&&a<0?(i=`left`,s<c&&(l.up&&o<0?i=`up`:l.down&&o>0&&(i=`down`))):l.right&&a>0&&(i=`right`,s<c&&(l.up&&o<0?i=`up`:l.down&&o>0&&(i=`down`)));let u=!1;if(i===void 0&&n===!1){if(t.event.isFirst||t.event.lastDir===void 0)return{};i=t.event.lastDir,u=!0,i===`left`||i===`right`?(r.left-=a,s=0,a=0):(r.top-=o,c=0,o=0)}return{synthetic:u,payload:{evt:e,touch:t.event.mouse!==!0,mouse:t.event.mouse===!0,position:r,direction:i,isFirst:t.event.isFirst,isFinal:n===!0,duration:Date.now()-t.event.time,distance:{x:s,y:c},offset:{x:a,y:o},delta:{x:r.left-t.event.lastX,y:r.top-t.event.lastY}}}}function U(e,t,n){t.modifiers=n,t.direction=ke(n),t.stop=n.stop===!0,t.prevent=n.prevent===!0,t.mouseAllDir=n.mouseAllDir===!0||n.mousealldir===!0,t.preserveCursor=n.preserveCursor===!0||n.preservecursor===!0;let r=n.mouse?n.mouseCapture||n.mousecapture?B:z:null;r!==t.mouseOpts&&(t.mouseOpts!==null&&e.removeEventListener(`mousedown`,W,t.mouseOpts),r!==null&&e.addEventListener(`mousedown`,W,r),t.mouseOpts=r);let i=w.has.touch?n.capture?B:z:null;i!==t.touchOpts&&(t.touchOpts!==null&&e.removeEventListener(`touchstart`,G,t.touchOpts),i!==null&&e.addEventListener(`touchstart`,G,i),t.touchOpts=i)}function W(e){let t=e.currentTarget.__qtouchpan;R(e,t)&&x(e)&&(t.target=document,document.addEventListener(`mousemove`,t,V),document.addEventListener(`mouseup`,t,B),Ne(t,e,!0))}function G(e){let t=e.currentTarget.__qtouchpan;if(R(e,t)){let{target:n}=e;t.target=n,n.addEventListener(`touchmove`,t,V),n.addEventListener(`touchcancel`,t,B),n.addEventListener(`touchend`,t,B),Ne(t,e,!1)}}function je(e){e.type===`mousemove`||e.type===`touchmove`?q(this,e):J(this,e)}function Me(e,t,n){n?C(t):(e.stop&&y(t),e.prevent&&S(t))}function Ne(e,t,n){if(w.is.firefox&&_(e.el,!0),e.lastEvt=t,n||e.stop){if(!e.direction.all&&(!n||!e.mouseAllDir)){let n=t.type.includes(`mouse`)?new MouseEvent(t.type,t):new TouchEvent(t.type,t);t.defaultPrevented&&S(n),t.cancelBubble&&y(n),Object.assign(n,{qKeyEvent:t.qKeyEvent,qClickOutside:t.qClickOutside,qAnchorHandled:t.qAnchorHandled,qClonedBy:t.qClonedBy===void 0?[e.uid]:t.qClonedBy.concat(e.uid)}),e.initialEvent={target:t.target,event:n}}y(t)}let{left:r,top:i}=b(t);e.event={x:r,y:i,time:Date.now(),mouse:n,detected:!1,isFirst:!0,isFinal:!1,lastX:r,lastY:i,lastDir:void 0}}function K(e,t,n){Me(e,t,n),e.styled=!0,e.preserveCursor||(e.cursor=document.documentElement.style.cursor||``,document.documentElement.style.cursor=`grabbing`),n&&document.body.classList.add(`no-pointer-events--children`),document.body.classList.add(`non-selectable`),M()}function Pe(e,t){e.styled=!1,e.cursor!==void 0&&(document.documentElement.style.cursor=e.cursor,e.cursor=void 0),document.body.classList.remove(`non-selectable`),t&&document.body.classList.remove(`no-pointer-events--children`)}function q(e,t){let{event:n}=e;if(n===void 0)return;let r=b(t),i=r.left-n.x,a=r.top-n.y;if(i===0&&a===0)return;e.lastEvt=t;let{mouse:o}=n;if(n.detected){n.isFirst||Me(e,t,o);let{payload:r,synthetic:i}=H(t,e,!1);r!==void 0&&(e.handler(r)===!1?J(e,t):(!e.styled&&n.isFirst&&K(e,t,o),n.lastX=r.position.left,n.lastY=r.position.top,n.lastDir=i?void 0:r.direction,n.isFirst=!1));return}let{direction:s}=e;if(s.all||o&&e.mouseAllDir){K(e,t,o),n.detected=!0,q(e,t);return}let c=Math.abs(i),l=Math.abs(a);c!==l&&(s.horizontal&&c>l||s.vertical&&c<l||s.up&&c<l&&a<0||s.down&&c<l&&a>0||s.left&&c>l&&i<0||s.right&&c>l&&i>0?(n.detected=!0,q(e,t)):J(e,t,!0))}function J(e,t,n){let{event:r,target:i}=e;if(r===void 0)return;let{mouse:a}=r;if(a?(i.removeEventListener(`mousemove`,e,V),i.removeEventListener(`mouseup`,e,B)):(i.removeEventListener(`touchmove`,e,V),i.removeEventListener(`touchcancel`,e,B),i.removeEventListener(`touchend`,e,B)),w.is.firefox&&_(e.el,!1),n)e.styled&&Pe(e,a),!r.detected&&e.initialEvent!==void 0&&e.initialEvent.target.dispatchEvent(e.initialEvent.event);else if(r.detected){t===void 0&&(t=e.lastEvt),r.isFirst&&e.handler(H(t,e).payload);let{payload:n}=H(t,e,!0),{handler:i}=e;e.styled?(Pe(e,a),a?setTimeout(i,50,n):i(n)):i(n)}e.event=void 0,e.initialEvent=void 0,e.lastEvt=void 0,e.target=null}var Fe=T({name:`touch-pan`,beforeMount(e,{value:t,modifiers:n}){let r={handleEvent:je,el:e,uid:`qvtp_`+Ae++,handler:t,modifiers:void 0,direction:void 0,stop:!1,prevent:!1,mouseAllDir:!1,preserveCursor:!1,mouseOpts:null,touchOpts:null,target:null,event:void 0,initialEvent:void 0,lastEvt:void 0,styled:!1,cursor:void 0};e.__qtouchpan=r,U(e,r,n),r.touchOpts!==null&&e.addEventListener(`touchmove`,g,V)},updated(e,{oldValue:t,value:n,modifiers:r}){let i=e.__qtouchpan;i!==void 0&&(t!==n&&(typeof n!=`function`&&J(i),i.handler=n),r!==i.modifiers&&U(e,i,r))},beforeUnmount(e){let t=e.__qtouchpan;t!==void 0&&(J(t),t.mouseOpts!==null&&e.removeEventListener(`mousedown`,W,t.mouseOpts),t.touchOpts!==null&&(e.removeEventListener(`touchstart`,G,t.touchOpts),e.removeEventListener(`touchmove`,g,V)),e.__qtouchpan=void 0)}}),Ie={hover:Boolean,hoverDelay:{type:Number,default:0},hoverHideDelay:{type:Number,default:150}};function Le({props:e,canShow:t,show:n,canHide:r,hide:i}){let{removeTimeout:a,registerTimeout:o}=ye();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 Y=null,{notPassiveCapture:X,passiveCapture:Re}=v,Z=[];function Q(e){Y!==null&&(clearTimeout(Y),Y=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=A.length-1;e>=0;e--){let t=A[e].$,i=t.type.name;if(i!==`QTooltip`){if(i===`QDialog`){if(t.props.seamless!==!0){if(r===!1)return;n=new Set(A.slice(e+1).map(e=>e.contentEl));break}continue}r=!0}}for(let r=Z.length-1;r>=0;r--){let i=Z[r];if(n!==null&&!n.has(i.innerRef.value))return;if((i.anchorEl.value===null||!i.anchorEl.value.contains(t)&&!O(i.anchorEl.value,t))&&(t===document.body||i.innerRef.value!==null&&!i.innerRef.value.contains(t)&&!O(i.innerRef.value,t)))e.qClickOutside=!0,i.onClickOutside(e);else return}}function ze(e){e.pointerType!==`touch`&&(Y!==null&&clearTimeout(Y),Y=setTimeout(()=>{Y=null,Q(e)},0))}function Be(e){Z.push(e),Z.length===1&&(document.addEventListener(`pointerdown`,ze,Re),document.addEventListener(`mousedown`,Q,X),document.addEventListener(`touchstart`,Q,X))}function Ve(e){let t=Z.indexOf(e);t!==-1&&(Z.splice(t,1),Z.length===0&&(Y!==null&&(clearTimeout(Y),Y=null),document.removeEventListener(`pointerdown`,ze,Re),document.removeEventListener(`mousedown`,Q,X),document.removeEventListener(`touchstart`,Q,X)))}var He=`a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex^="-"])`,Ue=E({name:`QMenu`,inheritAttrs:!1,props:{...j,...ge,...D,...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:N},self:{type:String,validator:N},offset:{type:Array,validator:_e},touchPosition:Boolean,...Ie,maxHeight:{type:String,default:null},maxWidth:{type:String,default:null}},emits:[...xe,`click`,`escapeKey`],setup(e,{slots:r,emit:d,attrs:f}){let p,m=!1,h=c(),{proxy:g}=h,_=ee(),v=a(null),y=o(!1),b=s(()=>!e.persistent&&!e.noRouteDismiss),x=ie(e,_),{registerTick:S,removeTick:w}=ce(),{registerTransitionEnd:T}=oe(e),{transitionProps:E,transitionStyle:D}=ve(e),{anchorEl:O,canShow:ge,anchorEvents:_e}=ae({showing:y,getPopupRole:()=>f.role}),{show:ye,hide:k}=be({showing:y,canShow:ge,canHide(e){return m&&P()?e?.type!==`click`:!0},handleShow:je,handleHide:Me,handleRouteChange:Ne,hideOnRouteChange:b,processOnMount:!0}),{clearHoverTimer:A,hoverShow:xe,scheduleHoverHide:j,onHoverContentEnter:Ce}=Le({props:e,canShow:()=>!y.value,show:ye,canHide:e=>y.value&&!W(e.relatedTarget),hide:k});Object.assign(_e,{hoverShow:xe,hoverHide:G});let{showPortal:M,hidePortal:N,portalIsOpening:P,renderPortal:Ee}=se(h,v,Ie,`menu`),{captureRefocusTarget:De,clearRefocusTarget:F,restoreFocus:I,restoreFocusSync:Oe,adoptRefocusTarget:ke}=Te(e,()=>!e.noFocus&&!m&&P()),L={anchorEl:O,innerRef:v,onClickOutside(t){if(!e.persistent&&y.value)return k(t),(t.type===`touchstart`||t.target.classList.contains(`q-dialog__backdrop`))&&C(t),!0}},R=s(()=>fe(e.anchor||(e.cover?`center middle`:`bottom start`),_.lang.rtl)),z=s(()=>e.cover?R.value:fe(e.self||`top start`,_.lang.rtl)),B=he({props:e,$q:_,anchorEl:O,innerRef:v,showing:y,anchorOrigin:R,selfOrigin:z}),V=s(()=>`q-menu scroll`+(B.viaCssAnchor?``:` q-position-engine`)+(e.square?` q-menu--square`:``)+(x()?` q-menu--dark q-dark`:``)),Ae=s(()=>e.autoClose?{onClick:Pe}:{}),H=s(()=>y.value&&!e.persistent);t(H,e=>{e?(pe(J),Be(L)):(me(J),Ve(L))});function U(){ne(()=>{let e=v.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 W(e){if(e==null)return!1;if(O.value!==null&&O.value.contains(e)||v.value!==null&&v.value.contains(e))return!0;let t=ue(e);for(;t!=null;){if(t===g)return!0;t=l(t)}return!1}function G(e){if(e.pointerType===`touch`)return;j(e);let t=l(g);for(;t!=null;)t.$options.name===`QMenu`&&t.$props.hover===!0&&t.__qHoverHide?.(e),t=l(t)}function je(t){m=e.hover&&t?.type===`pointerenter`,A(),De(m),Se(q),M(!1,m),B.handleShow(!m&&(e.touchPosition||e.contextMenu)?t:void 0),!e.noFocus&&!m&&document.activeElement.blur(),S(()=>{B.handleTick(),!e.noFocus&&!m&&U()}),T(()=>{_.platform.is.ios&&(p=e.autoClose,v.value.click()),B.viaCssAnchor||B.track(),M(!0),d(`show`,t)})}function Me(e){m=!1,w(),N(),K(!0),e===void 0||!e.qClickOutside?I(e):F(),T(()=>{N(!0),B.releaseAnchor(!1),d(`hide`,e)})}function Ne(){F()}function K(e){A(),B.releaseAnchor(e),(e||y.value)&&(we(q),Ve(L),me(J)),e||F()}function Pe(e){p?p=!1:(de(g,e),d(`click`,e))}function q(t){H.value&&!e.noFocus&&!m&&!re(v.value,t.target)&&!le(v.value,t.target)&&U()}function J(t){e.noEscDismiss||(d(`escapeKey`),k(t))}function Fe(e){if(e.keyCode!==9||e.defaultPrevented||!H.value||v.value===null)return;let t=v.value,n=t.querySelectorAll(He),r=n.length===0?null:n[e.shiftKey?0:n.length-1];(r===null||document.activeElement===r||e.shiftKey&&document.activeElement===t)&&(we(q),Oe(e),k(e))}function Ie(){return i(te,E(),()=>y.value?i(`div`,{...f,ref:v,tabindex:-1,onKeydown:[].concat(f.onKeydown||[],Fe),...e.hover?{onPointerenter:[].concat(f.onPointerenter||[],Ce),onPointerleave:[].concat(f.onPointerleave||[],G)}:{},class:[V.value,f.class],style:[f.style,D(),B.positionStyle.value],...Ae.value},u(r.default)):null)}return n(()=>{K(!1)}),Object.assign(g,{focus:U,updatePosition:B.updatePosition,__adoptRefocusTarget:ke}),g.__qHoverHide=j,Ee}});function We(e){return e===!1?0:e===!0||e===void 0?1:Number.parseInt(e,10)||0}function $(e){let t=e.currentTarget,n=t.__qclosepopup;n!==0&&setTimeout(()=>{let r=ue(t);r!==void 0&&Ce(r,e,n)},0)}function Ge(e){h(e,13)&&$(e)}var Ke=T({name:`close-popup`,beforeMount(e,{value:t}){e.__qclosepopup=We(t),e.addEventListener(`click`,$),e.addEventListener(`keyup`,Ge)},updated(e,{value:t,oldValue:n}){t!==n&&e.__qclosepopup!==void 0&&(e.__qclosepopup=We(t))},beforeUnmount(e){e.__qclosepopup!==void 0&&(e.removeEventListener(`click`,$),e.removeEventListener(`keyup`,Ge),e.__qclosepopup=void 0)}});export{Fe as a,P as c,Ie as i,Ue as n,F as o,Le as r,Ee as s,Ke as t};
|
|
1
|
+
import{F as e,K as t,O as n,S as r,b as i,ct as a,ot as o,s,v as c}from"./runtime-core.esm-bundler-BKFI1w28.js";import{l,o as u,p as ee,r as d,s as f,t as p,v as m,w as te,x as h}from"./use-router-link-BGc0noIO.js";import{a as g,c as _,i as v,l as y,o as b,r as x,s as S,u as C}from"./event-rR76ioXz.js";import{s as w}from"./is-CE4jkrGQ.js";import{n as T,t as E}from"./create-BSmXD9Zr.js";import{p as ne}from"./QInput-DJgTh2Qy.js";import{p as re}from"./QBtn-DoggJe1Q.js";import{n as D,t as ie}from"./use-dark-BHObfh0O.js";import{$ as ae,B as oe,F as O,G as se,H as ce,I as le,J as ue,K as de,L as fe,M as pe,N as me,P as he,Q as ge,R as _e,U as ve,V as ye,W as k,X as be,Y as A,Z as xe,et as j,l as Se,q as Ce,tt as M,u as we,x as Te,z as N}from"./index-B2CzafCr.js";var P=E({name:`QItemSection`,props:{avatar:Boolean,thumbnail:Boolean,side:Boolean,top:Boolean,noWrap:Boolean},setup(e,{slots:t}){let n=s(()=>`q-item__section column q-item__section--${e.avatar||e.side||e.thumbnail?`side`:`main`}`+(e.top?` q-item__section--top justify-start`:` justify-center`)+(e.avatar?` q-item__section--avatar`:``)+(e.thumbnail?` q-item__section--thumbnail`:``)+(e.noWrap?` q-item__section--nowrap`:``));return()=>i(`div`,{class:n.value},u(t.default))}}),Ee=E({name:`QItem`,props:{...D,...d,tag:{type:String,default:`div`},active:{type:Boolean,default:null},clickable:{type:Boolean,default:null},onClick:Function,dense:Boolean,insetLevel:Number,role:String,tabindex:[String,Number],focused:Boolean,manualFocus:Boolean},emits:[`keyup`],setup(e,{slots:t,emit:n}){let o=ee(),c=ie(e,o),{hasLink:l,linkAttrs:u,linkClass:d,linkTag:te,navigateOnClick:g}=p(),_=a(null),v=a(null),y=s(()=>(e.clickable===null?e.onClick!==void 0:e.clickable)||l.value||e.tag===`label`),b=s(()=>!e.disable&&y.value),x=r(m,null),S=s(()=>{if(e.role!==void 0)return e.role;let t=x===null?null:x.value;if(t===`menu`||t===`menubar`)return y.value?`menuitem`:void 0;if(!l.value)return b.value?`button`:t===`list`?`listitem`:void 0}),w=s(()=>`q-item q-item-type row no-wrap`+(e.dense?` q-item--dense`:``)+(c()?` q-item--dark`:``)+(l.value&&e.active===null?d.value:e.active?` q-item--active${e.activeClass===void 0?``:` ${e.activeClass}`}`:``)+(e.disable?` disabled`:``)+(b.value?` q-item--clickable q-link cursor-pointer `+(e.manualFocus?`q-manual-focusable`:`q-focusable q-hoverable`)+(e.focused?` q-manual-focusable--focused`:``):``)),T=s(()=>e.insetLevel===void 0?null:{[`padding`+(o.lang.rtl?`Right`:`Left`)]:16+e.insetLevel*56+`px`});function E(e){b.value&&(v.value!==null&&!e.qAvoidFocus&&(!e.qKeyEvent&&document.activeElement===_.value?v.value.focus({preventScroll:!0}):document.activeElement===v.value&&_.value.focus({preventScroll:!0})),g(e))}function ne(e){if(b.value&&h(e,[13,32])){C(e),e.qKeyEvent=!0;let t=new MouseEvent(`click`,e);t.qKeyEvent=!0,_.value.dispatchEvent(t)}n(`keyup`,e)}function re(e){b.value&&e.keyCode===32&&C(e)}function D(){let e=f(t.default,[]);return b.value&&e.unshift(i(`div`,{class:`q-focus-helper`,tabindex:-1,ref:v})),e}return()=>{let t={ref:_,class:w.value,style:T.value,role:S.value,onKeyup:ne};return b.value?(t.onClick=E,t.onKeydown=re,t.tabindex=e.tabindex||`0`,Object.assign(t,u.value)):y.value&&(t[`aria-disabled`]=`true`),i(te.value,t,D())}}}),De=[`ul`,`ol`],F=E({name:`QList`,props:{...D,bordered:Boolean,dense:Boolean,separator:Boolean,padding:Boolean,role:String,tag:{type:String,default:`div`}},setup(t,{slots:n}){let r=ee(),a=ie(t,r),o=s(()=>t.role===void 0?De.includes(t.tag)?null:`list`:t.role);e(m,s(()=>t.role===void 0?`list`:t.role));let c=s(()=>`q-list`+(t.bordered?` q-list--bordered`:``)+(t.dense?` q-list--dense`:``)+(t.separator?` q-list--separator`:``)+(a()?` q-list--dark`:``)+(t.padding?` q-list--padding`:``));return()=>i(t.tag,{class:c.value,role:o.value},u(n.default))}}),I={left:!0,right:!0,up:!0,down:!0,horizontal:!0,vertical:!0},Oe=Object.keys(I);I.all=!0;function ke(e){let t={};for(let n of Oe)e[n]&&(t[n]=!0);return Object.keys(t).length===0?I:(t.horizontal?t.left=t.right=!0:t.left&&t.right&&(t.horizontal=!0),t.vertical?t.up=t.down=!0:t.up&&t.down&&(t.vertical=!0),t.horizontal&&t.vertical&&(t.all=!0),t)}var L=[`INPUT`,`TEXTAREA`];function R(e,t){return t.event===void 0&&e.target!==void 0&&!e.target.draggable&&typeof t.handler==`function`&&!L.includes(e.target.nodeName.toUpperCase())&&(e.qClonedBy===void 0||!e.qClonedBy.includes(t.uid))}var{passive:z,passiveCapture:B,notPassiveCapture:V}=v,Ae=0;function H(e,t,n){let r=b(e),i,a=r.left-t.event.x,o=r.top-t.event.y,s=Math.abs(a),c=Math.abs(o),l=t.direction;l.horizontal&&!l.vertical?i=a<0?`left`:`right`:!l.horizontal&&l.vertical?i=o<0?`up`:`down`:l.up&&o<0?(i=`up`,s>c&&(l.left&&a<0?i=`left`:l.right&&a>0&&(i=`right`))):l.down&&o>0?(i=`down`,s>c&&(l.left&&a<0?i=`left`:l.right&&a>0&&(i=`right`))):l.left&&a<0?(i=`left`,s<c&&(l.up&&o<0?i=`up`:l.down&&o>0&&(i=`down`))):l.right&&a>0&&(i=`right`,s<c&&(l.up&&o<0?i=`up`:l.down&&o>0&&(i=`down`)));let u=!1;if(i===void 0&&n===!1){if(t.event.isFirst||t.event.lastDir===void 0)return{};i=t.event.lastDir,u=!0,i===`left`||i===`right`?(r.left-=a,s=0,a=0):(r.top-=o,c=0,o=0)}return{synthetic:u,payload:{evt:e,touch:t.event.mouse!==!0,mouse:t.event.mouse===!0,position:r,direction:i,isFirst:t.event.isFirst,isFinal:n===!0,duration:Date.now()-t.event.time,distance:{x:s,y:c},offset:{x:a,y:o},delta:{x:r.left-t.event.lastX,y:r.top-t.event.lastY}}}}function U(e,t,n){t.modifiers=n,t.direction=ke(n),t.stop=n.stop===!0,t.prevent=n.prevent===!0,t.mouseAllDir=n.mouseAllDir===!0||n.mousealldir===!0,t.preserveCursor=n.preserveCursor===!0||n.preservecursor===!0;let r=n.mouse?n.mouseCapture||n.mousecapture?B:z:null;r!==t.mouseOpts&&(t.mouseOpts!==null&&e.removeEventListener(`mousedown`,W,t.mouseOpts),r!==null&&e.addEventListener(`mousedown`,W,r),t.mouseOpts=r);let i=w.has.touch?n.capture?B:z:null;i!==t.touchOpts&&(t.touchOpts!==null&&e.removeEventListener(`touchstart`,G,t.touchOpts),i!==null&&e.addEventListener(`touchstart`,G,i),t.touchOpts=i)}function W(e){let t=e.currentTarget.__qtouchpan;R(e,t)&&x(e)&&(t.target=document,document.addEventListener(`mousemove`,t,V),document.addEventListener(`mouseup`,t,B),Ne(t,e,!0))}function G(e){let t=e.currentTarget.__qtouchpan;if(R(e,t)){let{target:n}=e;t.target=n,n.addEventListener(`touchmove`,t,V),n.addEventListener(`touchcancel`,t,B),n.addEventListener(`touchend`,t,B),Ne(t,e,!1)}}function je(e){e.type===`mousemove`||e.type===`touchmove`?q(this,e):J(this,e)}function Me(e,t,n){n?C(t):(e.stop&&y(t),e.prevent&&S(t))}function Ne(e,t,n){if(w.is.firefox&&_(e.el,!0),e.lastEvt=t,n||e.stop){if(!e.direction.all&&(!n||!e.mouseAllDir)){let n=t.type.includes(`mouse`)?new MouseEvent(t.type,t):new TouchEvent(t.type,t);t.defaultPrevented&&S(n),t.cancelBubble&&y(n),Object.assign(n,{qKeyEvent:t.qKeyEvent,qClickOutside:t.qClickOutside,qAnchorHandled:t.qAnchorHandled,qClonedBy:t.qClonedBy===void 0?[e.uid]:t.qClonedBy.concat(e.uid)}),e.initialEvent={target:t.target,event:n}}y(t)}let{left:r,top:i}=b(t);e.event={x:r,y:i,time:Date.now(),mouse:n,detected:!1,isFirst:!0,isFinal:!1,lastX:r,lastY:i,lastDir:void 0}}function K(e,t,n){Me(e,t,n),e.styled=!0,e.preserveCursor||(e.cursor=document.documentElement.style.cursor||``,document.documentElement.style.cursor=`grabbing`),n&&document.body.classList.add(`no-pointer-events--children`),document.body.classList.add(`non-selectable`),M()}function Pe(e,t){e.styled=!1,e.cursor!==void 0&&(document.documentElement.style.cursor=e.cursor,e.cursor=void 0),document.body.classList.remove(`non-selectable`),t&&document.body.classList.remove(`no-pointer-events--children`)}function q(e,t){let{event:n}=e;if(n===void 0)return;let r=b(t),i=r.left-n.x,a=r.top-n.y;if(i===0&&a===0)return;e.lastEvt=t;let{mouse:o}=n;if(n.detected){n.isFirst||Me(e,t,o);let{payload:r,synthetic:i}=H(t,e,!1);r!==void 0&&(e.handler(r)===!1?J(e,t):(!e.styled&&n.isFirst&&K(e,t,o),n.lastX=r.position.left,n.lastY=r.position.top,n.lastDir=i?void 0:r.direction,n.isFirst=!1));return}let{direction:s}=e;if(s.all||o&&e.mouseAllDir){K(e,t,o),n.detected=!0,q(e,t);return}let c=Math.abs(i),l=Math.abs(a);c!==l&&(s.horizontal&&c>l||s.vertical&&c<l||s.up&&c<l&&a<0||s.down&&c<l&&a>0||s.left&&c>l&&i<0||s.right&&c>l&&i>0?(n.detected=!0,q(e,t)):J(e,t,!0))}function J(e,t,n){let{event:r,target:i}=e;if(r===void 0)return;let{mouse:a}=r;if(a?(i.removeEventListener(`mousemove`,e,V),i.removeEventListener(`mouseup`,e,B)):(i.removeEventListener(`touchmove`,e,V),i.removeEventListener(`touchcancel`,e,B),i.removeEventListener(`touchend`,e,B)),w.is.firefox&&_(e.el,!1),n)e.styled&&Pe(e,a),!r.detected&&e.initialEvent!==void 0&&e.initialEvent.target.dispatchEvent(e.initialEvent.event);else if(r.detected){t===void 0&&(t=e.lastEvt),r.isFirst&&e.handler(H(t,e).payload);let{payload:n}=H(t,e,!0),{handler:i}=e;e.styled?(Pe(e,a),a?setTimeout(i,50,n):i(n)):i(n)}e.event=void 0,e.initialEvent=void 0,e.lastEvt=void 0,e.target=null}var Fe=T({name:`touch-pan`,beforeMount(e,{value:t,modifiers:n}){let r={handleEvent:je,el:e,uid:`qvtp_`+Ae++,handler:t,modifiers:void 0,direction:void 0,stop:!1,prevent:!1,mouseAllDir:!1,preserveCursor:!1,mouseOpts:null,touchOpts:null,target:null,event:void 0,initialEvent:void 0,lastEvt:void 0,styled:!1,cursor:void 0};e.__qtouchpan=r,U(e,r,n),r.touchOpts!==null&&e.addEventListener(`touchmove`,g,V)},updated(e,{oldValue:t,value:n,modifiers:r}){let i=e.__qtouchpan;i!==void 0&&(t!==n&&(typeof n!=`function`&&J(i),i.handler=n),r!==i.modifiers&&U(e,i,r))},beforeUnmount(e){let t=e.__qtouchpan;t!==void 0&&(J(t),t.mouseOpts!==null&&e.removeEventListener(`mousedown`,W,t.mouseOpts),t.touchOpts!==null&&(e.removeEventListener(`touchstart`,G,t.touchOpts),e.removeEventListener(`touchmove`,g,V)),e.__qtouchpan=void 0)}}),Ie={hover:Boolean,hoverDelay:{type:Number,default:0},hoverHideDelay:{type:Number,default:150}};function Le({props:e,canShow:t,show:n,canHide:r,hide:i}){let{removeTimeout:a,registerTimeout:o}=ye();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 Y=null,{notPassiveCapture:X,passiveCapture:Re}=v,Z=[];function Q(e){Y!==null&&(clearTimeout(Y),Y=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=A.length-1;e>=0;e--){let t=A[e].$,i=t.type.name;if(i!==`QTooltip`){if(i===`QDialog`){if(t.props.seamless!==!0){if(r===!1)return;n=new Set(A.slice(e+1).map(e=>e.contentEl));break}continue}r=!0}}for(let r=Z.length-1;r>=0;r--){let i=Z[r];if(n!==null&&!n.has(i.innerRef.value))return;if((i.anchorEl.value===null||!i.anchorEl.value.contains(t)&&!O(i.anchorEl.value,t))&&(t===document.body||i.innerRef.value!==null&&!i.innerRef.value.contains(t)&&!O(i.innerRef.value,t)))e.qClickOutside=!0,i.onClickOutside(e);else return}}function ze(e){e.pointerType!==`touch`&&(Y!==null&&clearTimeout(Y),Y=setTimeout(()=>{Y=null,Q(e)},0))}function Be(e){Z.push(e),Z.length===1&&(document.addEventListener(`pointerdown`,ze,Re),document.addEventListener(`mousedown`,Q,X),document.addEventListener(`touchstart`,Q,X))}function Ve(e){let t=Z.indexOf(e);t!==-1&&(Z.splice(t,1),Z.length===0&&(Y!==null&&(clearTimeout(Y),Y=null),document.removeEventListener(`pointerdown`,ze,Re),document.removeEventListener(`mousedown`,Q,X),document.removeEventListener(`touchstart`,Q,X)))}var He=`a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex^="-"])`,Ue=E({name:`QMenu`,inheritAttrs:!1,props:{...j,...ge,...D,...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:N},self:{type:String,validator:N},offset:{type:Array,validator:_e},touchPosition:Boolean,...Ie,maxHeight:{type:String,default:null},maxWidth:{type:String,default:null}},emits:[...xe,`click`,`escapeKey`],setup(e,{slots:r,emit:d,attrs:f}){let p,m=!1,h=c(),{proxy:g}=h,_=ee(),v=a(null),y=o(!1),b=s(()=>!e.persistent&&!e.noRouteDismiss),x=ie(e,_),{registerTick:S,removeTick:w}=ce(),{registerTransitionEnd:T}=oe(e),{transitionProps:E,transitionStyle:D}=ve(e),{anchorEl:O,canShow:ge,anchorEvents:_e}=ae({showing:y,getPopupRole:()=>f.role}),{show:ye,hide:k}=be({showing:y,canShow:ge,canHide(e){return m&&P()?e?.type!==`click`:!0},handleShow:je,handleHide:Me,handleRouteChange:Ne,hideOnRouteChange:b,processOnMount:!0}),{clearHoverTimer:A,hoverShow:xe,scheduleHoverHide:j,onHoverContentEnter:Ce}=Le({props:e,canShow:()=>!y.value,show:ye,canHide:e=>y.value&&!W(e.relatedTarget),hide:k});Object.assign(_e,{hoverShow:xe,hoverHide:G});let{showPortal:M,hidePortal:N,portalIsOpening:P,renderPortal:Ee}=se(h,v,Ie,`menu`),{captureRefocusTarget:De,clearRefocusTarget:F,restoreFocus:I,restoreFocusSync:Oe,adoptRefocusTarget:ke}=Te(e,()=>!e.noFocus&&!m&&P()),L={anchorEl:O,innerRef:v,onClickOutside(t){if(!e.persistent&&y.value)return k(t),(t.type===`touchstart`||t.target.classList.contains(`q-dialog__backdrop`))&&C(t),!0}},R=s(()=>fe(e.anchor||(e.cover?`center middle`:`bottom start`),_.lang.rtl)),z=s(()=>e.cover?R.value:fe(e.self||`top start`,_.lang.rtl)),B=he({props:e,$q:_,anchorEl:O,innerRef:v,showing:y,anchorOrigin:R,selfOrigin:z}),V=s(()=>`q-menu scroll`+(B.viaCssAnchor?``:` q-position-engine`)+(e.square?` q-menu--square`:``)+(x()?` q-menu--dark q-dark`:``)),Ae=s(()=>e.autoClose?{onClick:Pe}:{}),H=s(()=>y.value&&!e.persistent);t(H,e=>{e?(pe(J),Be(L)):(me(J),Ve(L))});function U(){ne(()=>{let e=v.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 W(e){if(e==null)return!1;if(O.value!==null&&O.value.contains(e)||v.value!==null&&v.value.contains(e))return!0;let t=ue(e);for(;t!=null;){if(t===g)return!0;t=l(t)}return!1}function G(e){if(e.pointerType===`touch`)return;j(e);let t=l(g);for(;t!=null;)t.$options.name===`QMenu`&&t.$props.hover===!0&&t.__qHoverHide?.(e),t=l(t)}function je(t){m=e.hover&&t?.type===`pointerenter`,A(),De(m),Se(q),M(!1,m),B.handleShow(!m&&(e.touchPosition||e.contextMenu)?t:void 0),!e.noFocus&&!m&&document.activeElement.blur(),S(()=>{B.handleTick(),!e.noFocus&&!m&&U()}),T(()=>{_.platform.is.ios&&(p=e.autoClose,v.value.click()),B.viaCssAnchor||B.track(),M(!0),d(`show`,t)})}function Me(e){m=!1,w(),N(),K(!0),e===void 0||!e.qClickOutside?I(e):F(),T(()=>{N(!0),B.releaseAnchor(!1),d(`hide`,e)})}function Ne(){F()}function K(e){A(),B.releaseAnchor(e),(e||y.value)&&(we(q),Ve(L),me(J)),e||F()}function Pe(e){p?p=!1:(de(g,e),d(`click`,e))}function q(t){H.value&&!e.noFocus&&!m&&!re(v.value,t.target)&&!le(v.value,t.target)&&U()}function J(t){e.noEscDismiss||(d(`escapeKey`),k(t))}function Fe(e){if(e.keyCode!==9||e.defaultPrevented||!H.value||v.value===null)return;let t=v.value,n=t.querySelectorAll(He),r=n.length===0?null:n[e.shiftKey?0:n.length-1];(r===null||document.activeElement===r||e.shiftKey&&document.activeElement===t)&&(we(q),Oe(e),k(e))}function Ie(){return i(te,E(),()=>y.value?i(`div`,{...f,ref:v,tabindex:-1,onKeydown:[].concat(f.onKeydown||[],Fe),...e.hover?{onPointerenter:[].concat(f.onPointerenter||[],Ce),onPointerleave:[].concat(f.onPointerleave||[],G)}:{},class:[V.value,f.class],style:[f.style,D(),B.positionStyle.value],...Ae.value},u(r.default)):null)}return n(()=>{K(!1)}),Object.assign(g,{focus:U,updatePosition:B.updatePosition,__adoptRefocusTarget:ke}),g.__qHoverHide=j,Ee}});function We(e){return e===!1?0:e===!0||e===void 0?1:Number.parseInt(e,10)||0}function $(e){let t=e.currentTarget,n=t.__qclosepopup;n!==0&&setTimeout(()=>{let r=ue(t);r!==void 0&&Ce(r,e,n)},0)}function Ge(e){h(e,13)&&$(e)}var Ke=T({name:`close-popup`,beforeMount(e,{value:t}){e.__qclosepopup=We(t),e.addEventListener(`click`,$),e.addEventListener(`keyup`,Ge)},updated(e,{value:t,oldValue:n}){t!==n&&e.__qclosepopup!==void 0&&(e.__qclosepopup=We(t))},beforeUnmount(e){e.__qclosepopup!==void 0&&(e.removeEventListener(`click`,$),e.removeEventListener(`keyup`,Ge),e.__qclosepopup=void 0)}});export{Fe as a,P as c,Ie as i,Ue as n,F as o,Le as r,Ee as s,Ke as t};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/typescript-Utq2Cl8c.js","assets/typescript-j_1H8WHN.js","assets/javascript-Yelw-5ZN.js","assets/javascript-BzbQS41l.js","assets/vue-CSBlZ1UP.js","assets/css-LbU1hoFO.js","assets/html-BcACZWSP.js","assets/json-B88Oqtu5.js","assets/json-CaljABEy.js","assets/css-CdtkT07m.js","assets/scss-DHtrkMkT.js","assets/html-DDNsd9lV.js","assets/core-Bumj8M77.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/ccount-CcG1m-Yh.js","assets/engine-oniguruma-B4iNeJbd.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{P as e,_ as t,ct as n,l as r,ot as i,pt as a,s as o,w as s}from"./runtime-core.esm-bundler-BKFI1w28.js";import{t as c}from"./QBtn-DoggJe1Q.js";import{O as l}from"./index-
|
|
2
|
+
import{P as e,_ as t,ct as n,l as r,ot as i,pt as a,s as o,w as s}from"./runtime-core.esm-bundler-BKFI1w28.js";import{t as c}from"./QBtn-DoggJe1Q.js";import{O as l}from"./index-B2CzafCr.js";import{n as u}from"./vue-i18n.runtime-BpRrzZrT.js";import{n as d}from"./pinia-DCsnCHsH.js";import{d as f,f as p,l as m,o as h,s as g,u as _}from"./use-server-events-C13Sw-rU.js";import{n as v}from"./AppPage-DdmqiV2R.js";function y(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 b(e){return e.newPath||e.oldPath}function x(e,t){return`${e}:${t}`}var S={typescript:()=>l(()=>import(`./typescript-Utq2Cl8c.js`),__vite__mapDeps([0,1])),tsx:()=>l(()=>import(`./tsx-udAQXfEw.js`),[]),javascript:()=>l(()=>import(`./javascript-Yelw-5ZN.js`),__vite__mapDeps([2,3])),jsx:()=>l(()=>import(`./jsx-Bz0zcwM4.js`),[]),vue:()=>l(()=>import(`./vue-CSBlZ1UP.js`),__vite__mapDeps([4,5,3,6,7,1])),json:()=>l(()=>import(`./json-CaljABEy.js`),__vite__mapDeps([8,7])),markdown:()=>l(()=>import(`./markdown-BYOwaDjH.js`),[]),css:()=>l(()=>import(`./css-CdtkT07m.js`),__vite__mapDeps([9,5])),scss:()=>l(()=>import(`./scss-DHtrkMkT.js`),__vite__mapDeps([10,5])),html:()=>l(()=>import(`./html-DDNsd9lV.js`),__vite__mapDeps([11,6,5,3])),yaml:()=>l(()=>import(`./yaml-rwi0_p6S.js`),[]),bash:()=>l(()=>import(`./bash-CLZ0U2zV.js`),[]),python:()=>l(()=>import(`./python-gzcpVVnB.js`),[]),go:()=>l(()=>import(`./go-rLFTqkRN.js`),[]),rust:()=>l(()=>import(`./rust-Cfkwpbl8.js`),[]),java:()=>l(()=>import(`./java-BXcb2rRD.js`),[]),kotlin:()=>l(()=>import(`./kotlin-DhhofPvG.js`),[])},C={light:()=>l(()=>import(`./github-light-EUqPIrTm.js`),[]),dark:()=>l(()=>import(`./github-dark-C-LZuMrd.js`),[])},w={light:`github-light`,dark:`github-dark`},T=null,E=new Set,D=new Map;function O(e){return S[e]!==void 0}async function k(e,t){try{await e.loadLanguage(S[t]()),E.add(t)}finally{D.delete(t)}}async function A(e){T||=(async()=>{let[{createHighlighterCore:e},{createOnigurumaEngine:t}]=await Promise.all([l(()=>import(`./core-Bumj8M77.js`),__vite__mapDeps([12,13,14])),l(()=>import(`./engine-oniguruma-B4iNeJbd.js`),__vite__mapDeps([15,13]))]);return e({themes:[C.light(),C.dark()],langs:[],engine:t(()=>l(()=>import(`./wasm-BnjxR4X6.js`),[]))})})();let t=await T;if(!E.has(e)){let n=D.get(e);n||(n=k(t,e),D.set(e,n)),await n}return t}async function ee(e,t,n={}){if(!O(e)||t.length===0)return`failed`;let r=n.documents??[{length:t.length,skip:0}];if(r.reduce((e,t)=>e+t.length,0)!==t.length)return`failed`;let{signal:i}=n;try{let a=await A(e),o=0,s=0,c=!0;for(let l of r){let r,u=Math.max(1,n.sliceSize??l.length);for(let d=0;d<l.length;d+=u){if(c||await n.yieldBetween?.(),c=!1,i?.aborted)return`aborted`;let f=Math.min(d+u,l.length),p=a.codeToTokensWithThemes(t.slice(o+d,o+f).join(`
|
|
3
3
|
`),{lang:e,themes:w,...r?{grammarState:r}:{}});r=a.getLastGrammarState(p);let m=Math.max(d,l.skip);f<=m||(n.onSlice?.(p.slice(m-d).map(e=>e.map(e=>({content:e.content,colorLight:e.variants.light?.color,colorDark:e.variants.dark?.color}))),s),s+=f-m)}o+=l.length}return`done`}catch{return`failed`}}var j=null,M=!1,N=1,P=new Map;function F(){return typeof Worker<`u`&&!M}function I(){let e=new Worker(new URL(`/assets/highlight.worker-BHCdEX06.js`,``+import.meta.url),{type:`module`});return e.addEventListener(`message`,e=>{let t=e.data,n=P.get(t.id);n&&(t.type===`slice`?n.onSlice(t.tokens,t.start):(P.delete(t.id),n.finish(t.ok?`done`:`failed`)))}),e.addEventListener(`error`,t=>{console.error(`The highlight worker failed, the main thread does the work now`,t),M=!0;for(let e of P.values())e.finish(`failed`);P.clear(),e.terminate(),j=null}),e}function L(e,t){e.postMessage(t)}function te(e,t,n){let{signal:r}=n;if(r?.aborted)return Promise.resolve(`aborted`);if(!j)try{j=I()}catch(e){return console.error(`The highlight worker did not start`,e),M=!0,Promise.resolve(`unsent`)}let i=j;return new Promise(a=>{let o=N++,s=()=>{P.delete(o)&&(j&&L(j,{type:`cancel`,id:o}),a(`aborted`))};P.set(o,{onSlice:(e,t)=>n.onSlice?.(e,t),finish:e=>{r?.removeEventListener(`abort`,s),a(e)}});try{L(i,{type:`tokenize`,id:o,lang:e,lines:Array.from(t),...n.documents?{documents:n.documents.map(e=>({...e}))}:{},sliceSize:n.sliceSize})}catch(e){console.error(`The highlight worker did not get the request`,e),P.delete(o),a(`unsent`);return}r?.addEventListener(`abort`,s,{once:!0})})}function R(){return typeof MessageChannel>`u`?new Promise(e=>setTimeout(e,0)):new Promise(e=>{let{port1:t,port2:n}=new MessageChannel;t.addEventListener(`message`,()=>{t.close(),e()},{once:!0}),t.start(),n.postMessage(null)})}var z=`import { ref, type Ref } from 'vue'
|
|
4
4
|
import * as path from 'node:path'
|
|
5
5
|
// A comment with a TODO and a URL: https://example.com
|
|
@@ -90,4 +90,4 @@ Some *emphasis*, **strong** text, \`inline code\` and a [link](https://example.c
|
|
|
90
90
|
const answer: number = 42
|
|
91
91
|
\`\`\`
|
|
92
92
|
`,typescript:z,javascript:z,tsx:z,jsx:z};function ne(e){return(V[e]??`x`).split(`
|
|
93
|
-
`)}var re=2e4,H=100,ie={ts:`typescript`,tsx:`tsx`,js:`javascript`,jsx:`jsx`,mjs:`javascript`,cjs:`javascript`,vue:`vue`,json:`json`,md:`markdown`,css:`css`,scss:`scss`,html:`html`,yml:`yaml`,yaml:`yaml`,sh:`bash`,py:`python`,go:`go`,rs:`rust`,java:`java`,kt:`kotlin`,kts:`kotlin`};function U(e){let t=e.split(`.`);return t.length<2?`text`:ie[t.pop().toLowerCase()]??`text`}function ae(e){return O(U(e))}function W(e,t,n,r,i){return ee(e,t,{documents:n,sliceSize:H,yieldBetween:R,signal:r,onSlice:i})}async function G(e,t,n,r,i){let a=[],o=(e,t)=>{a.splice(t,e.length,...e),r?.(a.slice())};if(!F())return K(await W(e,t,i,n,o),a);let s=await te(e,t,{sliceSize:H,documents:i,signal:n,onSlice:o});return(s===`unsent`||s===`failed`&&!F())&&(s=await W(e,t,i,n,o)),K(s,a)}function K(e,t){return e===`done`?t:e===`aborted`?void 0:null}var q=new Set;async function oe(e){await G(e,ne(e)).catch(()=>null)===null&&q.delete(e)}function se(e){if(!F())return;let t=new Set(e.map(U).filter(O));for(let e of t)q.has(e)||(q.add(e),oe(e))}var J=
|
|
93
|
+
`)}var re=2e4,H=100,ie={ts:`typescript`,tsx:`tsx`,js:`javascript`,jsx:`jsx`,mjs:`javascript`,cjs:`javascript`,vue:`vue`,json:`json`,md:`markdown`,css:`css`,scss:`scss`,html:`html`,yml:`yaml`,yaml:`yaml`,sh:`bash`,py:`python`,go:`go`,rs:`rust`,java:`java`,kt:`kotlin`,kts:`kotlin`};function U(e){let t=e.split(`.`);return t.length<2?`text`:ie[t.pop().toLowerCase()]??`text`}function ae(e){return O(U(e))}function W(e,t,n,r,i){return ee(e,t,{documents:n,sliceSize:H,yieldBetween:R,signal:r,onSlice:i})}async function G(e,t,n,r,i){let a=[],o=(e,t)=>{a.splice(t,e.length,...e),r?.(a.slice())};if(!F())return K(await W(e,t,i,n,o),a);let s=await te(e,t,{sliceSize:H,documents:i,signal:n,onSlice:o});return(s===`unsent`||s===`failed`&&!F())&&(s=await W(e,t,i,n,o)),K(s,a)}function K(e,t){return e===`done`?t:e===`aborted`?void 0:null}var q=new Set;async function oe(e){await G(e,ne(e)).catch(()=>null)===null&&q.delete(e)}function se(e){if(!F())return;let t=new Set(e.map(U).filter(O));for(let e of t)q.has(e)||(q.add(e),oe(e))}var J=v(re,e=>e?.length??1),Y=Promise.resolve();function ce(e){let t=Y.then(()=>new Promise(e=>setTimeout(e,0))).then(e);return Y=t.catch(()=>void 0),t}function le(e,t,n,r,i,a){return ce(async()=>{let o=J.get(e);if(o!==void 0)return o;if(r?.aborted)return;let s=n(),c=await G(U(t),s,r,i,a?.());if(c!==void 0)return J.set(e,c),c})}function ue(e){return J.get(e)}function X(e){return{...e,oldPath:y(e.oldPath),newPath:y(e.newPath)}}function de(e){let{signature:t,...n}=e;return{...n,hunks:[]}}function Z(e,t,n){let r=new Map(e.map(e=>[b(e),e])),i=new Map;return{files:n.map(e=>{let n=b(e);i.set(n,e.signature);let a=r.get(n);return a&&t.get(n)===e.signature?a:de(e)}),signatures:i}}var Q=d(`diff`,()=>{let e=i([]),t=i([]),r=new Map,a=new Map,s=i(!1),c=i(!1),l=i(null),u=o(()=>s.value&&!c.value),d=o(()=>[...e.value,...t.value].map(e=>e.newPath||e.oldPath)),f=n(new Map),p=n(new Map),m=new Map;function v(n){return n===`staged`?e.value:t.value}function y(e,t){return f.value.get(x(e,b(t)))?.file}function S(e,t){return f.value.get(x(e,b(t)))?.for===t}function C(e,t){let n=p.value.get(x(e,b(t)));return n?.for===t?n.message:void 0}function w(e,t){let n=x(e,b(t));if(!p.value.has(n))return;let r=new Map(p.value);r.delete(n),p.value=r}function T(e,t){return w(e,t),E(e,t)}async function E(e,t){let n=x(e,b(t));if(S(e,t)||m.get(n)===t)return;m.set(n,t);let r=new URLSearchParams({path:t.newPath,oldPath:t.oldPath,status:t.status});try{let i=X(await _(`/api/diff/${e}/file?${r}`));if(!v(e).includes(t))return;f.value=new Map(f.value).set(n,{file:i,for:t}),w(e,t)}catch(r){if(!v(e).includes(t))return;p.value=new Map(p.value).set(n,{message:g(r),for:t})}finally{m.get(n)===t&&m.delete(n)}}function D(){let n=new Set([...e.value.map(e=>x(`staged`,b(e))),...t.value.map(e=>x(`unstaged`,b(e)))]),r=new Map([...f.value].filter(([e])=>n.has(e)));r.size!==f.value.size&&(f.value=r);let i=new Map([...p.value].filter(([e])=>n.has(e)));i.size!==p.value.size&&(p.value=i)}let O=h(k);async function k(){s.value=!0;try{let[n,i]=await Promise.all([_(`/api/diff/staged/files`),_(`/api/diff/unstaged/files`)]),o=Z(e.value,r,n.map(X)),s=Z(t.value,a,i.map(X));e.value=o.files,r=o.signatures,t.value=s.files,a=s.signatures,D(),se([...o.files,...s.files].map(b)),l.value=null}catch(n){c.value||(e.value=[],t.value=[],r=new Map,a=new Map),l.value=g(n)}finally{s.value=!1,c.value=!0}}return{stagedFiles:e,unstagedFiles:t,loading:s,loaded:c,initialLoading:u,error:l,changedPaths:d,hunksOf:y,hunksFresh:S,hunksError:C,clearHunksError:w,ensureHunks:E,retryHunks:T,fetchDiff:O}});function $(e){let{snapshotData:t,...n}=e;return n}var fe=d(`active-review`,()=>{let e=i(null),t=i([]),n=i(!1),r=o(()=>{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 a(){n.value=!0;try{let n=(await _(`/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 _(`/api/reviews/${e.value.id}/comments`):[]}finally{n.value=!1}}function s(n){e.value=$(n),t.value=[]}async function c(t){e.value&&(await f(`/api/reviews/${e.value.id}`,{status:t}),await a())}async function l(n){if(!e.value)throw Error(`No active review`);let r=await p(`/api/reviews/${e.value.id}/comments`,n);return t.value=[...t.value,r],r}async function u(e,n){let r=await f(`/api/comments/${e}`,{content:n});t.value=t.value.map(t=>t.id===e?r:t)}async function d(e){await m(`/api/comments/${e}`),t.value=t.value.filter(t=>t.id!==e)}async function h(e){let n=await f(`/api/comments/${e}/resolve`);t.value=t.value.map(t=>t.id===e?n:t)}async function g(e){let n=await f(`/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:a,setActiveReview:s,setStatus:c,createComment:l,editComment:u,deleteComment:d,resolveComment:h,unresolveComment:g}}),pe=t({__name:`CancelButton`,setup(t){let{t:n}=u();return(t,i)=>(e(),r(c,s({padding:`2px 8px`},t.$attrs,{dense:``,flat:``,color:`warning`,label:a(n)(`reviews.comments.cancel`)}),null,16,[`label`]))}}),me=t({__name:`CreateButton`,setup(t){let{t:n}=u();return(t,i)=>(e(),r(c,s({padding:`2px 8px`,label:a(n)(`reviews.create.submit`)},t.$attrs,{unelevated:``,dense:``,color:`accent`}),null,16,[`label`]))}});export{Q as a,le as c,b as d,y as f,$ as i,U as l,pe as n,ue as o,fe as r,ae as s,me as t,x as u};
|
package/dist/web/assets/{CreateReviewFabButton-CcXWnmSN.js → CreateReviewFabButton-KvKPEJzI.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as e,J as t,P as n,S as r,U as i,Y as a,_ as o,b as s,c,d as l,h as u,kt as d,l as f,ot as p,pt as m,r as h,s as g,v as _,w as v}from"./runtime-core.esm-bundler-BKFI1w28.js";import{O as y,_ as b,m as x,o as S,p as C}from"./use-router-link-BGc0noIO.js";import{t as w}from"./create-BSmXD9Zr.js";import{t as T}from"./QInput-DJgTh2Qy.js";import{l as E}from"./QBtn-DoggJe1Q.js";import{a as D,c as O,o as k,s as A}from"./index-
|
|
1
|
+
import{C as e,J as t,P as n,S as r,U as i,Y as a,_ as o,b as s,c,d as l,h as u,kt as d,l as f,ot as p,pt as m,r as h,s as g,v as _,w as v}from"./runtime-core.esm-bundler-BKFI1w28.js";import{O as y,_ as b,m as x,o as S,p as C}from"./use-router-link-BGc0noIO.js";import{t as w}from"./create-BSmXD9Zr.js";import{t as T}from"./QInput-DJgTh2Qy.js";import{l as E}from"./QBtn-DoggJe1Q.js";import{a as D,c as O,o as k,s as A}from"./index-B2CzafCr.js";import{n as j}from"./vue-i18n.runtime-BpRrzZrT.js";import{n as M,r as N}from"./pinia-DCsnCHsH.js";import{f as P,s as F,u as I}from"./use-server-events-C13Sw-rU.js";import{a as L,t as R}from"./ClosePopup-lpH_1Ju2.js";import{t as z}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{a as B,i as V,n as H,r as U,t as W}from"./CreateButton-Dnpwobd9.js";import{t as G}from"./QFab-C-YZWgmW.js";var K=o({__name:`SearchInput`,props:{modelValue:{},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let r=i(e,`modelValue`);return(e,i)=>(n(),f(T,v({modelValue:r.value,"onUpdate:modelValue":i[0]||=e=>r.value=e},e.$attrs,{dense:``,outlined:``,clearable:``}),{prepend:t(()=>[u(E,{name:`search`,size:`xs`})]),_:1},16,[`modelValue`]))}}),q={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 J(){let{props:e}=_(),t=C(),n=r(b,x);if(n===x)return console.error(`QPageSticky needs to be child of QLayout`),x;let i=g(()=>{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`}}),a=g(()=>n.header.offset),o=g(()=>n.right.offset),c=g(()=>n.footer.offset),l=g(()=>n.left.offset),u=g(()=>{let n=0,r=0,s=i.value,u=t.lang.rtl?-1:1;s.top&&a.value!==0?r=`${a.value}px`:s.bottom&&c.value!==0&&(r=`${-c.value}px`),s.left&&l.value!==0?n=`${u*l.value}px`:s.right&&o.value!==0&&(n=`${-u*o.value}px`);let d={transform:`translate(${n}, ${r})`};return e.offset&&(d.margin=`${e.offset[1]}px ${e.offset[0]}px`),s.vertical?(l.value!==0&&(d[t.lang.rtl?`right`:`left`]=`${l.value}px`),o.value!==0&&(d[t.lang.rtl?`left`:`right`]=`${o.value}px`)):s.horizontal&&(a.value!==0&&(d.top=`${a.value}px`),c.value!==0&&(d.bottom=`${c.value}px`)),d}),d=g(()=>`q-page-sticky row flex-center fixed-${e.position} q-page-sticky--${e.expand?`expand`:`shrink`}`);function f(t){let n=S(t.default);return s(`div`,{class:d.value,style:u.value},e.expand?n:[s(`div`,n)])}return{$layout:n,getStickyContent:f}}var Y=w({name:`QPageSticky`,props:q,setup(e,{slots:t}){let{getStickyContent:n}=J();return()=>n(t)}});function X(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 Z=M(`reviews`,()=>{let e=p([]),t=p(!1),n=p(null);async function r(r={}){t.value=!0,n.value=null;try{e.value=await I(`/api/reviews${X(r)}`)}catch(t){e.value=[],n.value=F(t)}finally{t.value=!1}}async function i(t){let n=await P(`/api/reviews`,t);return e.value=[V(n),...e.value],n}return{reviews:e,loading:t,error:n,fetchReviews:r,createReview:i}}),Q={class:`text-h6`},$=z(o({__name:`ReviewCreateDialog`,props:{modelValue:{type:Boolean,required:!0},modelModifiers:{}},emits:e([`created`,`hide`],[`update:modelValue`]),setup(e,{emit:r}){let o=i(e,`modelValue`),s=r,{t:l}=j(),h=Z(),g=p(``),_=p(!1),v=p(null);function b(){g.value=``,_.value=!1,v.value=null}async function x(){_.value=!0,v.value=null;try{let e=g.value.trim(),t=await h.createReview(e?{name:e}:{});o.value=!1,b(),s(`created`,t)}catch(e){v.value=F(e)}finally{_.value=!1}}function S(){b(),s(`hide`)}return(e,r)=>(n(),f(O,{modelValue:o.value,"onUpdate:modelValue":r[1]||=e=>o.value=e,onHide:S},{default:t(()=>[u(A,{class:`review-create-dialog`},{default:t(()=>[u(k,null,{default:t(()=>[c(`div`,Q,d(m(l)(`reviews.create.title`)),1)]),_:1}),u(k,{class:`q-gutter-y-md`},{default:t(()=>[u(T,{modelValue:g.value,"onUpdate:modelValue":r[0]||=e=>g.value=e,dense:``,outlined:``,label:m(l)(`reviews.create.nameLabel`),hint:m(l)(`reviews.create.nameHint`),error:!!v.value,"error-message":v.value??void 0,onKeyup:y(x,[`enter`])},null,8,[`modelValue`,`label`,`hint`,`error`,`error-message`])]),_:1}),u(D,{align:`right`},{default:t(()=>[a(u(H,null,null,512),[[R]]),u(W,{loading:_.value,onClick:x},null,8,[`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]))}}),[[`__scopeId`,`data-v-095646d6`]]),ee=o({__name:`CreateReviewFabButton`,emits:[`created`],setup(e,{emit:r}){let i=r,o=U(),s=B(),{activeReview:c}=N(o),{changedPaths:d}=N(s),f=p(!1),m=p(!1),_=p([18,18]),v=p(!1),y=g(()=>d.value.length===0||c.value!==null);function b(e){v.value=e.isFirst!==!0&&e.isFinal!==!0,_.value=[_.value[0]-(e.delta?.x??0),_.value[1]-(e.delta?.y??0)]}function x(e){o.setActiveReview(e),i(`created`,e)}return(e,r)=>(n(),l(h,null,[u(Y,{position:`bottom-right`,offset:_.value},{default:t(()=>[a(u(G,{modelValue:m.value,"onUpdate:modelValue":r[0]||=e=>m.value=e,icon:`add`,color:`accent`,disable:y.value||v.value,onClick:r[1]||=e=>f.value=!0},null,8,[`modelValue`,`disable`]),[[L,b,void 0,{prevent:!0,mouse:!0}]])]),_:1},8,[`offset`]),u($,{modelValue:f.value,"onUpdate:modelValue":r[2]||=e=>f.value=e,onCreated:x,onHide:r[3]||=e=>m.value=!1},null,8,[`modelValue`])],64))}});export{Z as n,K as r,ee as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,Dt as t,F as n,I as r,J as i,K as a,M as o,O as s,Ot as c,P as l,R as u,T as d,U as f,W as p,Y as m,_ as h,c as g,ct as _,d as v,ft as y,h as b,j as x,kt as S,l as C,m as w,ot as T,pt as E,r as D,rt as O,s as k,tt as A,u as j}from"./runtime-core.esm-bundler-BKFI1w28.js";import{O as M,k as N,p as P}from"./use-router-link-BGc0noIO.js";import{a as F,i as I,l as L,t as R}from"./QBtn-DoggJe1Q.js";import{i as z,j as B,t as V}from"./index-B2CzafCr.js";import{n as H}from"./vue-i18n.runtime-BpRrzZrT.js";import{n as ee,r as U}from"./pinia-DCsnCHsH.js";import{f as te,n as W,o as ne,s as G,u as re}from"./use-server-events-C13Sw-rU.js";import{t as ie}from"./safe-storage-aRoyeFxv.js";import{f as ae,t as oe}from"./agent-store-DP6Vrw6L.js";import{c as se,n as ce,t as le}from"./QSpace-B5NneHAd.js";import{r as ue}from"./use-virtual-scroll-BSXYZjZ5.js";import{c as K,s as q}from"./ClosePopup-lpH_1Ju2.js";import{t as J}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{n as de,t as fe}from"./QScrollArea-BSSZoaV5.js";import{n as pe,r as me,t as he}from"./QVirtualScroll-CZJMBpmR.js";import{a as Y,d as X,f as ge,r as Z,u as _e}from"./CreateButton-Dnpwobd9.js";import{t as ve}from"./AppPage-DdmqiV2R.js";import{_ as ye,a as be,b as xe,c as Se,d as Ce,f as we,g as Te,h as Ee,i as De,l as Oe,m as ke,n as Ae,o as je,p as Me,r as Ne,s as Pe,t as Fe,u as Ie,v as Le,x as Re,y as ze}from"./StatusSwitcher-DAeNzNP7.js";import{t as Be}from"./PanelResize-DY0Nzmql.js";import{r as Ve,t as He}from"./CreateReviewFabButton-KvKPEJzI.js";import{t as Ue}from"./use-add-agent-context-SApxn9fW.js";var We=8,Ge=12,Ke=20;function Q(e,t){return We+e*Ge+(t?Ke:0)}function qe(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?qe(e.children):void 0}))}function Je(e,t){let n=[],r=new Map,i=e=>{let t=r.get(e);return t||(t=new Map,r.set(e,t)),t};for(let r of e){let e=r.split(`/`),a=n,o=``;for(let n=0;n<e.length;n++){let s=e[n];if(!s)continue;let c=n===e.length-1;o=o===``?s:`${o}/${s}`;let l=`${c?`f`:`d`}:${s}`,u=i(a),d=u.get(l);d||(d={name:s,path:c?r:o,type:c?`file`:`directory`,isChanged:c?t.has(r):!1,children:c?void 0:[]},a.push(d),u.set(l,d)),!c&&d.children&&(a=d.children)}}return qe(n)}function Ye(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 Xe(e,t,n){let r=[],i=(e,a)=>{for(let o of e){if(o.type===`file`){r.push({kind:`file`,path:o.path,name:o.name,depth:a});continue}let e=o,s=[e.path],c=[e.name];for(;e.children?.length===1&&e.children[0]?.type===`directory`;)e=e.children[0],s.push(e.path),c.push(e.name);let l=n||!s.some(e=>t.has(e));r.push({kind:`folder`,path:e.path,paths:s,name:c.join(`/`),depth:a,expanded:l}),l&&i(e.children??[],a+1)}};return i(e,0),r}function Ze(){let e=T([]),t=T(!1),n=T(!1),r=T(null),i=k(()=>!n.value),a=0;async function o(i,o=[]){let s=++a;t.value=!0;try{let t=await re(`/api/git/tree/${encodeURIComponent(i)}`);if(s!==a)return;e.value=Je(t.files.map(ge),new Set(o)),r.value=null}catch(e){if(s!==a)return;r.value=G(e)}finally{s===a&&(t.value=!1,n.value=!0)}}function s(){++a,e.value=[],t.value=!1,n.value=!1,r.value=null}return{tree:e,loading:t,initialLoading:i,error:r,fetchTree:o,reset:s}}var Qe=`githuman.diffListMode`;function $e(){return ie.get(Qe)===`tree`?`tree`:`list`}function et(e,t=new Set){for(let n of e)n.type===`directory`&&(t.add(n.path),et(n.children??[],t));return t}function tt(e){return e.type===`file`?e.isChanged:e.children?.some(tt)??!1}var $=ee(`file-explorer`,()=>{let e=Y(),{tree:t,initialLoading:n,error:r,fetchTree:i,reset:o}=Ze(),{lines:s,isBinary:c,loading:l,error:u,fetchContent:d,reset:f}=Re(),p=T(`unstaged`),m=T(!1),h=T(``),g=T(null),_=T(new Set),v=T(new Set),y=T($e()),b=T(new Set),x=T(null),S=T(0),C=k(()=>p.value===`staged`?e.stagedFiles:e.unstagedFiles),w=k(()=>new Map(C.value.map(e=>[X(e),e]))),E=k(()=>y.value===`tree`?Je(C.value.map(X),new Set):[]),D=k(()=>{let e=C.value;if(y.value===`list`)return e;let t=w.value,n=Xe(E.value,new Set,!0).flatMap(e=>e.kind===`file`?t.get(e.path)??[]:[]),r=new Set(n);return[...n,...e.filter(e=>!r.has(e))]}),O=k(()=>D.value.some(e=>v.value.has(X(e)))),A=k(()=>(h.value??``).trim()!==``),j=k(()=>{let e=(h.value??``).trim().toLowerCase();return e?D.value.filter(t=>X(t).toLowerCase().includes(e)):D.value}),M=k(()=>{let e=w.value;return Xe(Ye(E.value,(h.value??``).trim()),b.value,A.value).flatMap(t=>{if(t.kind===`folder`)return[t];let n=e.get(t.path);return n?[{...t,file:n}]:[]})}),N=k(()=>Ye(t.value,h.value??``)),P=k(()=>{let e=0,n=t=>{for(let r of t)r.type===`file`?e++:r.children&&n(r.children)};return n(t.value),e});a(t,e=>{let t=new Set,n=e=>{for(let r of e)r.type===`directory`&&r.children&&(tt(r)&&t.add(r.path),n(r.children))};n(e),_.value=t},{immediate:!0}),a(p,()=>{g.value=null,v.value=new Set,b.value=new Set,x.value=null,S.value++}),a(E,e=>{if(y.value!==`tree`||b.value.size===0)return;let t=et(e),n=[...b.value].filter(e=>t.has(e));n.length<b.value.size&&(b.value=new Set(n))}),a(g,e=>{if(m.value){if(!e){f();return}d(e,`WORKTREE`)}}),a(y,e=>{ie.set(Qe,e),g.value&&!m.value&&U(g.value)});function F(e){let t=new Set(b.value),n=e.some(e=>t.has(e));for(let r of e)n?t.delete(r):t.add(r);b.value=t}function I(e){let t=new Set(_.value);t.has(e)?t.delete(e):t.add(e),_.value=t}function L(e){let t=new Set(v.value);t.has(e)?t.delete(e):t.add(e),v.value=t}function R(e){g.value=e,L(e)}function z(e){g.value=e,v.value.has(e)||(v.value=new Set(v.value).add(e))}function B(){v.value=new Set(D.value.map(X)),S.value++}function V(){v.value=new Set,S.value++}function H(){D.value.length&&(O.value?V():B())}function ee(e){g.value=e,!m.value&&(v.value.has(e)||(v.value=new Set(v.value).add(e)),U(e))}function U(e){let t=D.value.findIndex(t=>X(t)===e);t<0||(x.value={path:e,index:t,seq:(x.value?.seq??0)+1})}let te=0,W=T(!1),G=ne(async()=>{W.value=!0;try{await e.fetchDiff(),m.value&&(await i(`WORKTREE`,e.changedPaths),g.value&&await d(g.value,`WORKTREE`))}finally{W.value=!1}});a(m,e=>{h.value=``,g.value=null,e?G():(o(),f())});async function re(){te=Date.now(),await G()}async function ae(){Date.now()-te<400||await G()}return{source:p,browseMode:m,filter:h,selectedPath:g,expandedFolders:_,expandedFiles:v,diffListMode:y,collapsedDiffFolders:b,scrollRequest:x,layoutVersion:S,tree:t,treeInitialLoading:n,treeError:r,refreshing:W,browseFileLines:s,browseFileIsBinary:c,browseFileLoading:l,browseFileError:u,diffFiles:D,hasExpandedFiles:O,filtering:A,filteredDiffFiles:j,diffTreeRows:M,filteredTree:N,totalTreeFiles:P,toggleFolder:I,toggleDiffFolder:F,toggleFileCard:L,handleCardToggle:R,expandFile:z,expandAllFiles:B,collapseAllFiles:V,toggleAllFiles:H,selectFile:ee,refresh:re,refreshFromServerEvent:ae}}),nt={class:`row items-center no-wrap q-gutter-x-xs`},rt={class:`row items-center no-wrap q-gutter-x-xs`},it=h({__name:`FileExplorerTabs`,props:e({stagedFilesLength:{},unstagedFilesLength:{}},{modelValue:{default:`unstaged`},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=f(e,`modelValue`),{t:n}=H();return(r,a)=>(l(),C(pe,{modelValue:t.value,"onUpdate:modelValue":a[0]||=e=>t.value=e,dense:``,"no-caps":``,align:`left`,"narrow-indicator":``,class:`text-primary q-mb-sm`},{default:i(()=>[b(me,{name:`unstaged`},{default:i(()=>[g(`div`,nt,[g(`span`,null,S(E(n)(`changes.unstaged`)),1),b(de,{color:`warning`,rounded:``},{default:i(()=>[w(S(e.unstagedFilesLength),1)]),_:1})])]),_:1}),b(me,{name:`staged`},{default:i(()=>[g(`div`,rt,[g(`span`,null,S(E(n)(`changes.staged`)),1),b(de,{color:`positive`,rounded:``},{default:i(()=>[w(S(e.stagedFilesLength),1)]),_:1})])]),_:1})]),_:1},8,[`modelValue`]))}}),at={class:`file-tree-node`},ot={class:`row items-center no-wrap q-gutter-x-xs`},st=[`data-tooltip`],ct=[`data-tooltip`],lt={key:2},ut=J(h({__name:`FileTreeNode`,props:{node:{},selectedPath:{},expandedFolders:{},level:{}},emits:[`toggle-folder`,`file-select`],setup(e,{emit:n}){let a=n;return(n,o)=>{let s=u(`FileTreeNode`,!0);return l(),v(`div`,at,[e.node.type===`directory`?m((l(),C(q,{key:0,clickable:``,dense:``,style:c({paddingLeft:`${E(Q)(e.level,!1)}px`}),onClick:o[0]||=t=>a(`toggle-folder`,e.node.path)},{default:i(()=>[b(K,{avatar:``,class:`file-tree-node__icon-section`},{default:i(()=>[g(`div`,ot,[b(L,{name:`chevron_right`,size:`xs`,class:t([`file-tree-node__chevron`,{"file-tree-node__chevron--expanded":e.expandedFolders.has(e.node.path)}])},null,8,[`class`]),b(L,{name:e.expandedFolders.has(e.node.path)?`folder_open`:`folder`,size:`xs`,color:`warning`},null,8,[`name`])])]),_:1}),b(K,{class:`text-mono`},{default:i(()=>[g(`div`,{class:`ellipsis file-tree-node__label`,"data-tooltip":e.node.path},S(e.node.name),9,st)]),_:1}),e.node.children?(l(),C(K,{key:0,side:``,class:`text-caption text-grey-6`},{default:i(()=>[w(S(e.node.children.length),1)]),_:1})):j(``,!0)]),_:1},8,[`style`])),[[I]]):m((l(),C(q,{key:1,clickable:``,dense:``,active:e.node.path===e.selectedPath,"active-class":`file-tree-node--selected`,style:c({paddingLeft:`${E(Q)(e.level,!0)}px`}),onClick:o[1]||=t=>a(`file-select`,e.node.path)},{default:i(()=>[b(K,{avatar:``,class:`file-tree-node__icon-section`},{default:i(()=>[b(L,{name:`insert_drive_file`,size:`xs`,color:`grey-6`})]),_:1}),b(K,{class:`text-mono`},{default:i(()=>[g(`div`,{class:`ellipsis file-tree-node__label`,"data-tooltip":e.node.path},S(e.node.name),9,ct)]),_:1}),e.node.isChanged?(l(),C(K,{key:0,side:``},{default:i(()=>[b(L,{name:`fiber_manual_record`,size:`8px`,color:`warning`})]),_:1})):j(``,!0)]),_:1},8,[`active`,`style`])),[[I]]),e.node.type===`directory`&&e.expandedFolders.has(e.node.path)&&e.node.children?(l(),v(`div`,lt,[(l(!0),v(D,null,r(e.node.children,t=>(l(),C(s,{key:t.path,node:t,"selected-path":e.selectedPath,"expanded-folders":e.expandedFolders,level:e.level+1,onToggleFolder:o[2]||=e=>a(`toggle-folder`,e),onFileSelect:o[3]||=e=>a(`file-select`,e)},null,8,[`node`,`selected-path`,`expanded-folders`,`level`]))),128))])):j(``,!0)])}}}),[[`__scopeId`,`data-v-ef4a1d44`]]);function dt(){let e=P(),{t}=H(),n=se(),r=$(),i=Z();async function a(e,i,a){try{await te(i,{paths:[e]}),await r.refresh()}catch(e){n(t(a),e)}}function o(n){let r=(i.commentsByFile.get(n)??[]).filter(e=>!e.resolved).length;if(r===0)return a(n,`/api/git/stage`,`changes.actions.stageError`);e.dialog({title:t(`changes.actions.stageUnresolvedTitle`),message:t(`changes.actions.stageUnresolvedMessage`,{path:n,count:r}),persistent:!0,ok:{label:t(`changes.actions.stageUnresolvedOk`),flat:!0},cancel:{label:t(`changes.actions.discardConfirmCancel`),flat:!0}}).onOk(()=>{a(n,`/api/git/stage`,`changes.actions.stageError`)})}function s(e){return a(e,`/api/git/unstage`,`changes.actions.unstageError`)}function c(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(()=>{a(n,`/api/git/discard`,`changes.actions.discardError`)})}return{stage:o,unstage:s,discard:c}}var ft={class:`file-list-item__path-row row no-wrap items-center`},pt=[`data-tooltip`],mt={class:`text-caption`},ht={class:`text-positive`},gt={class:`text-negative q-ml-xs`},_t=J(h({__name:`FileListItem`,props:{file:{},selected:{type:Boolean},source:{},label:{},depth:{}},emits:[`click`],setup(e){let n={added:`A`,modified:`M`,deleted:`D`,renamed:`R`},r={added:`positive`,modified:`warning`,deleted:`negative`,renamed:`purple`},a=e,{t:o}=H(),{stage:s,unstage:u,discard:d}=dt(),f=Z(),p=k(()=>X(a.file)),h=k(()=>f.commentsByFile.get(p.value)?.length??0);return(a,f)=>m((l(),C(q,{clickable:``,dense:``,class:`file-list-item`,active:e.selected,"active-class":`file-list-item--selected`,"aria-label":e.label===void 0?void 0:p.value,style:c(e.depth===void 0?void 0:{paddingLeft:`${E(Q)(e.depth,!0)}px`}),onClick:f[3]||=e=>a.$emit(`click`)},{default:i(()=>[b(K,{avatar:``,class:`file-list-item__icon-section`},{default:i(()=>[g(`span`,{class:t([`text-caption text-weight-bold text-mono`,`text-${r[e.file.status]}`])},S(n[e.file.status]),3)]),_:1}),b(K,{class:`text-mono`},{default:i(()=>[g(`div`,ft,[g(`span`,{class:`ellipsis file-list-item__path-label`,"data-tooltip":p.value},S(e.label??p.value),9,pt),h.value>0?(l(),C(xe,{key:0,compact:``,class:`file-list-item__badge`,count:h.value},null,8,[`count`])):j(``,!0)])]),_:1}),b(K,{side:``,class:`file-list-item__stats`},{default:i(()=>[g(`span`,mt,[g(`span`,ht,`+`+S(e.file.additions),1),g(`span`,gt,`-`+S(e.file.deletions),1)])]),_:1}),b(K,{side:``,class:`file-list-item__actions`},{default:i(()=>[e.source===`unstaged`?(l(),v(D,{key:0},[m(b(R,{flat:``,dense:``,round:``,size:`sm`,icon:`undo`,"aria-label":E(o)(`changes.actions.discard`),"data-tooltip":E(o)(`changes.actions.discard`),onClick:f[0]||=N(e=>E(d)(p.value),[`stop`])},null,8,[`aria-label`,`data-tooltip`]),[[I]]),m(b(R,{flat:``,dense:``,round:``,size:`sm`,icon:`add`,"aria-label":E(o)(`changes.actions.stage`),"data-tooltip":E(o)(`changes.actions.stage`),onClick:f[1]||=N(e=>E(s)(p.value),[`stop`])},null,8,[`aria-label`,`data-tooltip`]),[[I]])],64)):m((l(),C(R,{key:1,flat:``,dense:``,round:``,size:`sm`,icon:`remove`,"aria-label":E(o)(`changes.actions.unstage`),"data-tooltip":E(o)(`changes.actions.unstage`),onClick:f[2]||=N(e=>E(u)(p.value),[`stop`])},null,8,[`aria-label`,`data-tooltip`])),[[I]])]),_:1})]),_:1},8,[`active`,`aria-label`,`style`])),[[I]])}}),[[`__scopeId`,`data-v-a94df6a5`]]),vt=h({__name:`BrowseModeToggle`,props:{modelValue:{type:Boolean,default:!1},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=f(e,`modelValue`),{t:n}=H();return(e,r)=>(l(),C(q,null,{default:i(()=>[b(K,null,{default:i(()=>[b(ue,null,{default:i(()=>[w(S(E(n)(`browse.toggle`)),1)]),_:1})]),_:1}),b(K,{side:``},{default:i(()=>[b(V,{modelValue:t.value,"onUpdate:modelValue":r[0]||=e=>t.value=e,dense:``,size:`xs`},null,8,[`modelValue`])]),_:1})]),_:1}))}}),yt={class:`row items-center no-wrap q-gutter-x-xs`},bt=[`data-tooltip`],xt=J(h({__name:`DiffTreeFolderRow`,props:{name:{},path:{},depth:{},expanded:{type:Boolean},locked:{type:Boolean}},emits:[`toggle`],setup(e){let{t:n}=H();return(r,a)=>m((l(),C(q,{clickable:!e.locked,dense:``,class:`file-list-item diff-tree-folder-row`,style:c({paddingLeft:`${E(Q)(e.depth,!1)}px`}),"aria-expanded":e.locked?void 0:e.expanded,"aria-label":e.locked?void 0:E(n)(`changes.listMode.folder`,{path:e.path}),onClick:a[0]||=e=>r.$emit(`toggle`)},{default:i(()=>[b(K,{avatar:``,class:`diff-tree-folder-row__icons`},{default:i(()=>[g(`div`,yt,[b(L,{name:`chevron_right`,size:`xs`,class:t([`diff-tree-folder-row__chevron`,{"diff-tree-folder-row__chevron--expanded":e.expanded,invisible:e.locked}])},null,8,[`class`]),b(L,{name:e.expanded?`folder_open`:`folder`,size:`xs`,color:`warning`},null,8,[`name`])])]),_:1}),b(K,{class:`text-mono`},{default:i(()=>[g(`span`,{class:`ellipsis`,"data-tooltip":e.path},S(e.name),9,bt)]),_:1})]),_:1},8,[`clickable`,`style`,`aria-expanded`,`aria-label`])),[[I,!e.locked]])}}),[[`__scopeId`,`data-v-e82c6cd4`]]),St={class:`file-list-panel__header q-pa-sm`},Ct={key:1,class:`text-subtitle2 q-mb-sm`},wt={key:0,class:`text-primary`},Tt={class:`row no-wrap items-center q-gutter-x-xs`},Et={key:0,class:`row justify-center q-pa-lg`},Dt={key:0,class:`text-caption text-grey-6 q-px-md q-py-sm`},Ot={key:0,class:`text-caption text-grey-6 q-px-md q-py-sm`},kt=32,At=J(h({__name:`FileListPanel`,setup(e){let{t}=H(),{stagedFiles:n,unstagedFiles:a,initialLoading:o,error:s}=U(Y()),c=$(),{source:u,browseMode:d,filter:f,selectedPath:p,expandedFolders:m,treeInitialLoading:h,treeError:_,filteredDiffFiles:y,diffTreeRows:x,diffListMode:O,filtering:M,filteredTree:N,totalTreeFiles:P}=U(c),I=T(null),L=k(()=>I.value?.getScrollTarget()??null);return(e,T)=>(l(),v(D,null,[g(`div`,St,[E(d)?(l(),v(`div`,Ct,[w(S(E(t)(`browse.allFiles`))+` `,1),E(P)>0||!E(_)?(l(),v(`span`,wt,`(`+S(E(P))+`)`,1)):j(``,!0)])):(l(),C(it,{key:0,modelValue:E(u),"onUpdate:modelValue":T[0]||=e=>A(u)?u.value=e:null,"staged-files-length":E(n).length,"unstaged-files-length":E(a).length},null,8,[`modelValue`,`staged-files-length`,`unstaged-files-length`])),g(`div`,Tt,[b(Ve,{modelValue:E(f),"onUpdate:modelValue":T[1]||=e=>A(f)?f.value=e:null,class:`col`,placeholder:E(d)?E(t)(`browse.searchPlaceholder`):E(t)(`changes.filterPlaceholder`)},null,8,[`modelValue`,`placeholder`]),E(d)?j(``,!0):(l(),C(R,{key:0,flat:``,dense:``,round:``,size:`sm`,icon:`account_tree`,color:E(O)===`tree`?`primary`:void 0,"aria-label":E(t)(`changes.listMode.tree`),"aria-pressed":E(O)===`tree`,onClick:T[2]||=e=>O.value=E(O)===`tree`?`list`:`tree`},{default:i(()=>[b(B,{delay:E(500)},{default:i(()=>[w(S(E(t)(`changes.listMode.tree`)),1)]),_:1},8,[`delay`])]),_:1},8,[`color`,`aria-label`,`aria-pressed`]))])]),b(z),b(fe,{ref_key:`scrollArea`,ref:I,class:`col file-list-panel__scroll`,"content-style":`padding: 4px 0`,"content-active-style":`padding: 4px 0`},{default:i(()=>[(E(d)?E(h):E(o))?(l(),v(`div`,Et,[b(F,{color:`primary`,size:`2em`})])):E(d)?(l(),v(D,{key:1},[E(N).length===0&&(!E(_)||E(f)&&E(P)>0)?(l(),v(`p`,Dt,S(E(f)?E(t)(`browse.noMatchingFiles`):E(t)(`browse.noFiles`)),1)):j(``,!0),(l(!0),v(D,null,r(E(N),e=>(l(),C(ut,{key:e.path,node:e,"selected-path":E(p),"expanded-folders":E(m),level:0,onToggleFolder:E(c).toggleFolder,onFileSelect:E(c).selectFile},null,8,[`node`,`selected-path`,`expanded-folders`,`onToggleFolder`,`onFileSelect`]))),128))],64)):(l(),v(D,{key:2},[E(y).length===0&&(E(f)||!E(s))?(l(),v(`p`,Ot,S(E(f)?E(t)(`browse.noMatchingFiles`):E(t)(`changes.emptyFileList`)),1)):j(``,!0),L.value&&E(O)===`tree`?(l(),C(he,{key:`${E(u)}:tree`,"scroll-target":L.value,items:E(x),"virtual-scroll-item-size":kt},{default:i(({item:e})=>[e.kind===`folder`?(l(),C(xt,{key:`d:${e.path}`,name:e.name,path:e.path,depth:e.depth,expanded:e.expanded,locked:E(M),onToggle:t=>E(c).toggleDiffFolder(e.paths)},null,8,[`name`,`path`,`depth`,`expanded`,`locked`,`onToggle`])):(l(),C(_t,{key:`f:${e.path}`,file:e.file,label:e.name,depth:e.depth,selected:E(p)===e.path,source:E(u),onClick:t=>E(c).selectFile(e.path)},null,8,[`file`,`label`,`depth`,`selected`,`source`,`onClick`]))]),_:1},8,[`scroll-target`,`items`])):L.value?(l(),C(he,{key:`${E(u)}:list`,"scroll-target":L.value,items:E(y),"virtual-scroll-item-size":kt},{default:i(({item:e})=>[(l(),C(_t,{key:E(X)(e),file:e,selected:E(p)===E(X)(e),source:E(u),onClick:t=>E(c).selectFile(E(X)(e))},null,8,[`file`,`selected`,`source`,`onClick`]))]),_:1},8,[`scroll-target`,`items`])):j(``,!0)],64))]),_:1},512),b(z),b(vt,{modelValue:E(d),"onUpdate:modelValue":T[3]||=e=>A(d)?d.value=e:null},null,8,[`modelValue`])],64))}}),[[`__scopeId`,`data-v-bdc095b7`]]),jt=[`wheel`,`pointerdown`,`keydown`,`touchstart`];function Mt(e){let t=e.inputTarget??(typeof document>`u`?null:document),n=e.follow??ye,r=null,i;function o(){r=y(e.request),i?.(),i=void 0}for(let e of jt)t?.addEventListener(e,o,{capture:!0,passive:!0});let s=a([()=>y(e.request),()=>y(e.list),()=>y(e.root)],([t,a,o],s,c)=>{if(!t||t===r||!a||!o)return;let l=!1,u,f=()=>{l=!0,u?.(),u=void 0};i=f,c(()=>{f(),y(e.request)===t&&(r=t),i===f&&(i=void 0)}),d().then(()=>{l||t===r||(a.scrollTo(t.index,`start`),u=n({root:o,target:()=>e.target?e.target(t):document.getElementById(`diff-file-${t.path}`)}))})},{immediate:!0,flush:`post`});O(()=>{s(),i?.();for(let e of jt)t?.removeEventListener(e,o,!0)})}var Nt=[`aria-label`,`aria-expanded`],Pt={class:`text-weight-medium`},Ft={class:`text-positive`},It={class:`text-negative`},Lt={key:0,class:`text-grey-6`},Rt={key:1,class:`text-grey-6`},zt={key:2,class:`text-grey-6`},Bt={key:3,class:`text-grey-6`},Vt=J(h({__name:`DiffStatusBar`,props:{files:{},anyExpanded:{type:Boolean}},emits:[`toggle-all`],setup(e,{emit:t}){let n=e,r=t,{t:a}=H(),o=k(()=>{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(t,n)=>(l(),v(`div`,{class:`diff-status-bar row items-center q-gutter-x-md q-pa-sm text-body2 non-selectable`,role:`button`,tabindex:`0`,"aria-label":E(a)(e.anyExpanded?`changes.collapseAll`:`changes.expandAll`),"aria-expanded":e.anyExpanded,onDblclick:n[0]||=e=>r(`toggle-all`),onKeydown:[n[1]||=M(N(e=>!e.repeat&&r(`toggle-all`),[`prevent`]),[`enter`]),n[2]||=M(N(e=>!e.repeat&&r(`toggle-all`),[`prevent`]),[`space`])]},[g(`span`,Pt,S(E(a)(`changes.filesChanged`,{count:o.value.total})),1),g(`span`,Ft,` +`+S(o.value.additions)+` `+S(E(a)(`changes.additions`)),1),g(`span`,It,` -`+S(o.value.deletions)+` `+S(E(a)(`changes.deletions`)),1),o.value.added?(l(),v(`span`,Lt,S(o.value.added)+` `+S(E(a)(`changes.added`)),1)):j(``,!0),o.value.modified?(l(),v(`span`,Rt,S(o.value.modified)+` `+S(E(a)(`changes.modified`)),1)):j(``,!0),o.value.deleted?(l(),v(`span`,zt,S(o.value.deleted)+` `+S(E(a)(`changes.deletedPlural`)),1)):j(``,!0),o.value.renamed?(l(),v(`span`,Bt,S(o.value.renamed)+` `+S(E(a)(`changes.renamed`)),1)):j(``,!0),b(B,{delay:E(500)},{default:i(()=>[w(S(E(a)(e.anyExpanded?`changes.collapseAllHint`:`changes.expandAllHint`)),1)]),_:1},8,[`delay`])],40,Nt))}}),[[`__scopeId`,`data-v-2de87982`]]),Ht=6e3,Ut=40;function Wt(e,t,n){let r=_(n(t())?.clientWidth??0),i=k(()=>JSON.stringify([e.version,r.value])),a=we({get minHeight(){return e.minHeight},get heightOwner(){return e.owner},heightKey:`card-reserve`,get heightVersion(){return i.value},get cacheHeight(){return e.cacheHeight},get keep(){return e.keep},cost:Ut,mountMargin:Ht},t),o;function s(){let e=n(t());e&&(r.value=e.clientWidth,o=Me(e,()=>{r.value=e.clientWidth})),a.start(e)}function c(){a.stop(),o?.(),o=void 0}return O(c),{mounted:a.mounted,height:a.height,start:s,stop:c}}var Gt={key:1,class:`card-shell-placeholder__title text-mono`,"aria-busy":`true`},Kt=J(h({__name:`ChangesFileCard`,props:{file:{}},setup(e){let n=e,r=$(),i=Y(),a=Z(),{expandedFiles:o}=U(r),{activeReview:u,commentsByFile:d}=U(a),f=k(()=>X(n.file)),m=k(()=>_e(r.source,f.value)),h=k(()=>i.hunksOf(r.source,n.file)),g=k(()=>i.hunksFresh(r.source,n.file)),_=k(()=>i.hunksError(r.source,n.file)),y=k(()=>o.value.has(f.value)),b=k(()=>d.value.get(f.value)),w=k(()=>!!u.value),T={key:m.value},D=Ce(`wrap`,()=>Se(f.value),T),O=Ce(`viewMode`,()=>`diff`,T),A=Ie(T),j=Oe(T),M=k(()=>O.value===`full`?j.value:A.value),N=k(()=>46+(y.value?Te(n.file,h.value)+Ee(b.value??[],O.value)+(M.value?90:0):0)),P=k(()=>JSON.stringify([y.value,O.value,D.value,w.value,M.value?[M.value.column,M.value.startKey,M.value.endKey]:null,b.value?.map(e=>[e.id,e.lineType,e.lineNumberEnd,e.content,e.suggestion,e.resolved])])),F=p(`el`),{mounted:I,height:L,start:R,stop:z}=Wt({get minHeight(){return N.value},get owner(){return h.value??n.file},get version(){return P.value},get cacheHeight(){return y.value&&g.value&&O.value===`diff`&&!D.value&&!b.value?.length&&!M.value},get keep(){return!!M.value}},()=>F.value,ze());x(R),s(z);function B(){i.ensureHunks(r.source,n.file)}function V(){i.retryHunks(r.source,n.file)}return(n,a)=>(l(),v(`div`,{ref_key:`el`,ref:F,class:t({"card-shell-placeholder":!E(I)}),style:c(E(I)?void 0:{height:`${E(L)}px`})},[E(I)?(l(),C(Ae,{key:0,file:e.file,"state-key":m.value,detail:h.value,"hunks-loaded":g.value,"hunks-error":_.value,expanded:y.value,"agent-source":E(r).source,commentable:w.value,"comments-editable":w.value,comments:b.value,onLoadHunks:B,onRetryHunks:V,onClearHunksError:a[0]||=t=>E(i).clearHunksError(E(r).source,e.file),onToggle:a[1]||=e=>E(r).handleCardToggle(f.value),onExpand:a[2]||=e=>E(r).expandFile(f.value)},null,8,[`file`,`state-key`,`detail`,`hunks-loaded`,`hunks-error`,`expanded`,`agent-source`,`commentable`,`comments-editable`,`comments`])):(l(),v(`div`,Gt,S(f.value),1))],6))}}),[[`__scopeId`,`data-v-c1bd4d06`]]),qt={key:0,class:`active-review-bar row items-center q-gutter-x-sm q-px-sm no-wrap`},Jt={class:`text-body2 ellipsis`},Yt=J(h({__name:`ActiveReviewBar`,setup(e){let{t}=H(),n=se(),r=Z(),{activeReview:i}=U(r),a=oe(),o=Ue();function s(e){r.setStatus(e).catch(e=>{n(t(`reviews.comments.error`),e)})}return(e,n)=>E(i)?(l(),v(`div`,qt,[b(L,{name:`rate_review`,size:`18px`,color:`primary`}),g(`span`,Jt,S(E(i).name??E(t)(`reviews.list.unnamed`)),1),b(le),E(a).enabled?(l(),C(R,{key:0,flat:``,dense:``,"no-caps":``,size:`sm`,icon:E(ce),label:E(t)(`agent.context.addReview`),onClick:n[0]||=e=>E(o)({kind:`review`,reviewId:E(i).id})},null,8,[`icon`,`label`])):j(``,!0),b(Fe,{status:E(i).status,onChange:s},null,8,[`status`])])):j(``,!0)}}),[[`__scopeId`,`data-v-2b6e4bdd`]]),Xt={key:1,class:`q-pa-md text-grey-6`},Zt=12,Qt=1.5,$t=2,en=J(h({__name:`DiffPanel`,setup(e){let{t}=H(),r=$(),{diffFiles:o}=U(r),{error:s,loading:c}=U(Y()),u=Z(),{activeReview:f}=U(u);ke({create:e=>u.createComment(e),edit:(e,t)=>u.editComment(e,t),remove:e=>u.deleteComment(e),resolve:e=>u.resolveComment(e),unresolve:e=>u.unresolveComment(e)});let p=T(null),m=k(()=>p.value?.getScrollTarget()??null);n(Le,()=>m.value);let h=T(null);return Mt({request:()=>r.scrollRequest,list:h,root:m}),a(()=>r.layoutVersion,async()=>{await d(),h.value?.reset()}),a(o,async(e,t)=>{ae(e,t,(e,t)=>X(e)===X(t))||(await d(),h.value?.reset())}),(e,n)=>(l(),v(D,null,[E(s)?(l(),C(je,{key:0,title:E(t)(`changes.loadError`),message:E(s),loading:E(c),onRetry:n[0]||=e=>E(r).refresh()},null,8,[`title`,`message`,`loading`])):j(``,!0),E(o).length===0&&!E(s)?(l(),v(`div`,Xt,S(E(t)(`changes.emptyDiffPanel`)),1)):E(o).length>0?(l(),v(D,{key:2},[b(Yt),E(f)?(l(),C(z,{key:0})):j(``,!0),b(Vt,{files:E(o),"any-expanded":E(r).hasExpandedFiles,onToggleAll:E(r).toggleAllFiles},null,8,[`files`,`any-expanded`,`onToggleAll`]),b(z),b(fe,{ref_key:`scrollArea`,ref:p,class:`col sticky-header-scroll`,"content-style":`padding: 8px; width: 100%; max-width: 100%`,"content-active-style":`padding: 8px; width: 100%; max-width: 100%`},{default:i(()=>[m.value?(l(),C(he,{key:E(r).source,ref_key:`virtualScroll`,ref:h,"scroll-target":m.value,items:E(o),"virtual-scroll-item-size":E(46),"virtual-scroll-slice-size":Zt,"virtual-scroll-slice-ratio-before":Qt,"virtual-scroll-slice-ratio-after":$t},{default:i(({item:e})=>[(l(),v(`div`,{key:E(X)(e),class:`diff-virtual-slot`},[b(Kt,{file:e},null,8,[`file`])]))]),_:1},8,[`scroll-target`,`items`,`virtual-scroll-item-size`])):j(``,!0)]),_:1},512)],64)):j(``,!0),!E(f)&&E(o).length>0?(l(),C(He,{key:3})):j(``,!0)],64))}}),[[`__scopeId`,`data-v-30baafc5`]]),tn={key:1,class:`q-pa-md text-grey-6`},nn={key:0,class:`row justify-center q-pa-lg`},rn={key:1,class:`q-pa-md text-grey-6`},an={class:`text-caption`},on={key:2,class:`q-pa-md text-grey-6`},sn=h({__name:`FileContentPanel`,setup(e){let{t}=H(),n=$(),{selectedPath:r,browseFileLines:o,browseFileIsBinary:s,browseFileLoading:c,browseFileError:u,treeError:d,refreshing:f}=U(n),{error:p}=U(Y()),m=k(()=>p.value?{title:t(`changes.loadError`),message:p.value}:d.value?{title:t(`browse.treeLoadError`),message:d.value}:null),h=T(!1);return a(r,e=>{h.value=e?Se(e):!1},{immediate:!0}),(e,a)=>(l(),v(D,null,[m.value?(l(),C(je,{key:0,title:m.value.title,message:m.value.message,loading:E(f),onRetry:a[0]||=e=>E(n).refresh()},null,8,[`title`,`message`,`loading`])):j(``,!0),E(r)?(l(),C(Ne,{key:2,class:`col`},{header:i(()=>[b(be,{path:E(r)},{default:i(()=>[b(De,{modelValue:h.value,"onUpdate:modelValue":a[1]||=e=>h.value=e,path:E(r)},null,8,[`modelValue`,`path`])]),_:1},8,[`path`])]),default:i(()=>[E(c)&&E(o).length===0&&!E(u)?(l(),v(`div`,nn,[b(F,{color:`primary`,size:`2em`})])):E(u)?(l(),v(`div`,rn,[w(S(E(t)(`changes.fullFileLoadError`))+` `,1),g(`div`,an,S(E(u)),1),b(R,{flat:``,dense:``,color:`primary`,class:`q-mt-sm`,label:E(t)(`changes.retry`),loading:E(f),onClick:a[2]||=e=>E(n).refresh()},null,8,[`label`,`loading`])])):E(s)?(l(),v(`div`,on,S(E(t)(`changes.binaryFile`)),1)):(l(),C(fe,{key:3,class:`col`,"content-style":`padding: 8px`,"content-active-style":`padding: 8px`},{default:i(()=>[b(Pe,{path:E(r),lines:E(o),wrap:h.value},null,8,[`path`,`lines`,`wrap`])]),_:1}))]),_:1})):(l(),v(`div`,tn,S(E(t)(`browse.selectFile`)),1))],64))}}),cn=h({__name:`FileExplorer`,setup(e){let t=$(),n=Z(),{browseMode:r}=U(t);x(()=>{t.refresh(),n.refresh()});let a=W([`files:changed`],()=>void t.refreshFromServerEvent());o(()=>a.close());let s=W([`review:created`,`review:updated`,`review:deleted`,`comment:created`,`comment:updated`,`comment:deleted`],()=>void n.refresh());return o(()=>s.close()),(e,t)=>(l(),C(Be,null,{panel:i(()=>[b(At)]),content:i(()=>[E(r)?(l(),C(sn,{key:0})):(l(),C(en,{key:1}))]),_:1}))}}),ln=h({__name:`IndexPage`,setup(e){return(e,t)=>(l(),C(ve,null,{default:i(()=>[b(cn)]),_:1}))}});export{ln as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.file-tree-node__icon-section[data-v-ef4a1d44]{min-width:0!important;padding-right:6px!important}.file-tree-node__label[data-v-ef4a1d44]{width:100%;min-width:0}.file-tree-node__chevron[data-v-ef4a1d44]{transition:transform .15s}.file-tree-node__chevron--expanded[data-v-ef4a1d44]{transform:rotate(90deg)}.file-tree-node--selected[data-v-ef4a1d44]{font-weight:500}.file-list-item__icon-section[data-v-a94df6a5]{min-width:0!important;padding-right:6px!important}.file-list-item__path-row[data-v-a94df6a5]{width:100%;min-width:0}.file-list-item__path-label[data-v-a94df6a5]{flex:0 auto;min-width:0}.file-list-item__badge[data-v-a94df6a5]{flex:none}.file-list-item--selected[data-v-a94df6a5],[data-v-a94df6a5] .file-list-item--selected{font-weight:500}.file-list-item__actions[data-v-a94df6a5]{gap:2px;flex-direction:row!important;padding:0 0 0 6px!important}.file-list-item__stats[data-v-a94df6a5]{padding-right:0!important}.diff-tree-folder-row__icons[data-v-e82c6cd4]{min-width:0!important;padding-right:6px!important}.diff-tree-folder-row__chevron[data-v-e82c6cd4]{transition:transform .15s}.diff-tree-folder-row__chevron--expanded[data-v-e82c6cd4]{transform:rotate(90deg)}.file-list-panel__scroll[data-v-bdc095b7] .q-scrollarea__content{width:100%}.diff-status-bar[data-v-2de87982]{cursor:pointer}.diff-status-bar[data-v-2de87982]:focus-visible{outline:2px solid var(--q-primary);outline-offset:-2px}.diff-status-bar>span[data-v-2de87982]{white-space:nowrap}.card-shell-placeholder[data-v-c1bd4d06]{border:1px solid #80808033;border-radius:4px}.card-shell-placeholder__title[data-v-c1bd4d06]{background:var(--diff-header-bg);text-overflow:ellipsis;white-space:nowrap;height:44px;padding:6px 12px;overflow:hidden}.active-review-bar[data-v-2b6e4bdd]{min-height:36px}.diff-virtual-slot[data-v-30baafc5]{padding-bottom:8px}.diff-virtual-slot[data-v-30baafc5] .diff-file-card{margin-bottom:0}
|