pulls.review 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/client/assets/ActionButton-wEgApzce.js +1 -0
- package/dist/client/assets/ActionIconButton-wh9iuTi4.js +1 -0
- package/dist/client/assets/{ChatMessage-Ccffh_8Z.js → ChatMessage-wZOblr2O.js} +23 -23
- package/dist/client/assets/ChatWidget-Dbic6F6V.js +1 -0
- package/dist/client/assets/DisplayFileIcon-DffhOXN6.js +151 -0
- package/dist/client/assets/GithubAvatar-eLlc5vap.js +1 -0
- package/dist/client/assets/LandingHero-Bb_CGwOP.js +1 -0
- package/dist/client/assets/LocalAgentSettings-CWvSCuNr.js +1 -0
- package/dist/client/assets/ModelPicker-CLoBWotf.js +3 -0
- package/dist/client/assets/SelectViewport-Dt28PIGK.js +1 -0
- package/dist/client/assets/_repo_-BIF9MuRW.js +22 -0
- package/dist/client/assets/analyze-B3YV6_zK.js +1 -0
- package/dist/client/assets/{core-messages-ClW97ZVa.js → core-messages-E0LWb5xA.js} +1 -1
- package/dist/client/assets/de-BfUc2exP.js +1 -0
- package/dist/client/assets/{diagnostics-wATZy2jc.js → diagnostics-DundJi2s.js} +1 -1
- package/dist/client/assets/diff-BwixkBTz.js +1 -0
- package/dist/client/assets/{diff-Cx43r-a6.js → diff-Coo81SbJ.js} +3 -3
- package/dist/client/assets/diffs-store-BPvgHGVY.js +1431 -0
- package/dist/client/assets/en-OkC_9BLh.js +1 -0
- package/dist/client/assets/es-DuVRv3jP.js +1 -0
- package/dist/client/assets/fr-BI5_M_ty.js +1 -0
- package/dist/client/assets/glimmer-js-BheR6Tf0.js +1 -0
- package/dist/client/assets/glimmer-ts-B3Q3-uij.js +1 -0
- package/dist/client/assets/handlebars-qjPKy-PP.js +1 -0
- package/dist/client/assets/i18n-DtZTpAlH.js +2 -0
- package/dist/client/assets/id-BU9INgNZ.js +1 -0
- package/dist/client/assets/{index-KDAJXf4E.js → index-Buksdj5x.js} +2 -2
- package/dist/client/assets/{index-De-UtOit.css → index-m8kW8Q0V.css} +1 -1
- package/dist/client/assets/{install-D-S32JY7.js → install-BrSGg9K8.js} +3 -3
- package/dist/client/assets/it-C2TUiK_A.js +1 -0
- package/dist/client/assets/ja-BQDWzjgo.js +1 -0
- package/dist/client/assets/ko-Ca7kDPia.js +1 -0
- package/dist/client/assets/{llm-Le5CPsNn.js → llm-5e9k-gOP.js} +1 -1
- package/dist/client/assets/llm-store-1j45N-6d.js +1 -0
- package/dist/client/assets/local-agents-0SHBuj0A.js +1 -0
- package/dist/client/assets/{pages-ByEfDjFa.js → pages-hDJHVoGR.js} +1 -1
- package/dist/client/assets/pages-local-0BoMyVi4.js +1 -0
- package/dist/client/assets/pages-web-QiNoFNlt.js +21 -0
- package/dist/client/assets/{portalTarget-DQg8GgWm.js → portalTarget-I9JDQCD2.js} +1 -1
- package/dist/client/assets/pt-BR-DcjGEP2y.js +1 -0
- package/dist/client/assets/{rpc-backends-DYtuJyeF.js → rpc-backends-arDnFRtp.js} +1 -1
- package/dist/client/assets/ru-DhCHBcLb.js +1 -0
- package/dist/client/assets/{ruby-CfFGiaYl.js → ruby-CaMjWH7T.js} +1 -1
- package/dist/client/assets/runtime-dom.esm-bundler-DL194Z-s.js +2 -0
- package/dist/client/assets/upload-Bi-0MPhd.js +1 -0
- package/dist/client/assets/useDocumentTitle-DSsMzDvH.js +92 -0
- package/dist/client/assets/useNonce-DujRSGP5.js +1 -0
- package/dist/client/assets/useTypeahead-CV0JPPYe.js +1 -0
- package/dist/client/assets/utils-bzkWQhBP.js +1 -0
- package/dist/client/assets/vue-i18n-B4RRzKT-.js +5 -0
- package/dist/client/assets/zh-CN-DKqrk-nJ.js +1 -0
- package/dist/client/assets/zh-TW-CXhwUL4C.js +1 -0
- package/dist/client/index.html +7 -7
- package/dist/{devframe-DH2vpasJ.mjs → devframe-Z3sgjlMJ.mjs} +153 -6
- package/dist/devframe.mjs +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
- package/dist/client/assets/ActionButton-V4dY2wPS.js +0 -1
- package/dist/client/assets/ActionIconButton-4b5xelMn.js +0 -1
- package/dist/client/assets/ChatWidget-BFjNWi3R.js +0 -1
- package/dist/client/assets/DisplayFileIcon-DWj5Zxib.js +0 -151
- package/dist/client/assets/GithubAvatar-DGJrpCsX.js +0 -1
- package/dist/client/assets/LandingHero-DWdx6_8g.js +0 -1
- package/dist/client/assets/LocalAgentSettings-COjAszEL.js +0 -1
- package/dist/client/assets/ModelPicker-CDTiUMZ3.js +0 -3
- package/dist/client/assets/SelectViewport-DF4P4Akh.js +0 -1
- package/dist/client/assets/_repo_-D3lApLQL.js +0 -22
- package/dist/client/assets/analyze-BgWIIbl3.js +0 -1
- package/dist/client/assets/de-BoIOg_UW.js +0 -1
- package/dist/client/assets/diff-CNRGXNmw.js +0 -1
- package/dist/client/assets/diffs-store-D3BzIMVi.js +0 -1431
- package/dist/client/assets/en-CbWYrCM5.js +0 -1
- package/dist/client/assets/es-CqEudTln.js +0 -1
- package/dist/client/assets/fr-qiQQ-4AO.js +0 -1
- package/dist/client/assets/i18n-Cx8anq4V.js +0 -2
- package/dist/client/assets/id-BkDzu8gq.js +0 -1
- package/dist/client/assets/it-tZZZbUKN.js +0 -1
- package/dist/client/assets/ja-kGPK4Fmt.js +0 -1
- package/dist/client/assets/ko-CULiae40.js +0 -1
- package/dist/client/assets/llm-store-CzMnTJNa.js +0 -1
- package/dist/client/assets/local-agents-BQLn-Ppw.js +0 -1
- package/dist/client/assets/pages-local-CVPpEWZ_.js +0 -1
- package/dist/client/assets/pages-web-BLxMupU5.js +0 -21
- package/dist/client/assets/pt-BR-BcwoZLSs.js +0 -1
- package/dist/client/assets/ru-DOordgLF.js +0 -1
- package/dist/client/assets/runtime-dom.esm-bundler-Du_ZCcVN.js +0 -2
- package/dist/client/assets/upload-DRO7bkBV.js +0 -1
- package/dist/client/assets/useDocumentTitle-BQJCa6Lm.js +0 -92
- package/dist/client/assets/useNonce-CwUrgryd.js +0 -1
- package/dist/client/assets/vue-i18n-CGHHpbTP.js +0 -5
- package/dist/client/assets/zh-CN-CmTqGY9s.js +0 -1
- package/dist/client/assets/zh-TW-DKGtbJQy.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";var t=e({analyze:()=>l,category:()=>_,chat:()=>y,common:()=>n,default:()=>w,embed:()=>s,errors:()=>S,file:()=>p,fileStatus:()=>h,group:()=>d,guide:()=>i,landing:()=>r,load:()=>a,local:()=>C,note:()=>f,pr:()=>o,prState:()=>g,pulls:()=>c,review:()=>v,reviewProgress:()=>m,rules:()=>x,settings:()=>b,share:()=>u}),n={cancel:`Cancel`,save:`Save`,remove:`Remove`,retry:`Retry`,close:`Close`,dismiss:`Dismiss`,refresh:`Refresh`,settings:`Settings`,you:`you`,loading:`Loading…`,send:`Send`,stop:`Stop`,clear:`Clear`,reply:`Reply`,submit:`Submit`,abort:`Abort`,rerun:`Rerun`,files:`{n} file | {n} files`,subgroups:`{n} subgroup | {n} subgroups`,githubRepository:`GitHub repository`,avatar:`{login}'s avatar`},r={dropHint:`Drop to load your diff / .patch file`,tagline:`Groups changed files, summarizes what matters, review them one scope at a time. Everything works locally in your browser.`,documentTitle:`Pull reviews made clear and organized`,open:`Open`,pasteHint:`Paste any GitHub pull request URL, or pick a demo below.`,recentlyViewed:`// recently viewed`,recentRepositories:`// recently viewed repositories`,tryDemos:`// try some demos`,demoBefore:`// before`,demoAfter:`// after`,moreFiles:`... {n} more files`,demoTitle:`feat: share an AI analysis as a PR comment and load shared results`,demoSummary:`One reviewer with an API key posts their analysis to the PR; everyone else loads it without a token.`,demoGroups:{store:`Shared analysis store & comment contract`,ui:`Share result UI`,refactor:`Store refactor: result to root`,tests:`Tests`,docs:`Docs & deps`},uploadTitle:`Review a diff without a PR`,uploadDescription:`Upload or paste a unified diff, or drop a {diff} / {patch} file anywhere on this page.`,uploadButton:`Upload a diff`,embedTitle:`Use it embedded on github.com`,embedDescription:`With {tampermonkey} or {violentmonkey} installed, a pulls.review drawer appears on every pull request page.`,installUserscript:`Install userscript`,bookmarkletTitle:`Jump between github.com and pulls.review`,bookmarkletDescription:`Can't install extensions? Drag this bookmarklet to your bookmarks bar to open the current pull request on pulls.review, and back.`,bookmarkletDrag:`Drag me to your bookmarks bar`,actionsTitle:`Set up auto analyze with GitHub Actions`,actionsDescription:`Analyze every pull request once in CI and post the result as a PR comment, so reviewers don't each need a model key.`,cliTitle:`Run on local git changes with the CLI`,cliDescription:`Review your working tree, a commit or a branch before you push, grouped and summarized like a PR.`,viewGuide:`View guide`},i={userscript:{title:`Use pulls.review embedded on github.com`,intro:`The userscript adds a pulls.review drawer directly to pull request pages on github.com, with grouped files and summaries, so you don't have to switch tabs.`,manager:`Install a userscript manager: {tampermonkey} or {violentmonkey}.`,install:`Install the pulls.review userscript. Your manager asks you to confirm.`,open:`Open any pull request on github.com and click the {tab} tab next to "Files changed".`,ai:`github.com blocks the requests AI analysis needs, so the drawer shows analyses shared as PR comments. Open the PR on pulls.review to run a new one.`},bookmarklet:{title:`Jump between github.com and pulls.review`,intro:`A bookmarklet is a bookmark that runs a small script. It works in any browser, with no extension to install, and opens the page you are on in the other site.`,bar:`Show your bookmarks bar, for example with {shortcut}.`,drag:`Drag this button onto the bookmarks bar:`,use:`On a pull request, commit or compare page on github.com, click the bookmark to open it on pulls.review. Click it again to go back.`},actions:{title:`Auto analyze with GitHub Actions`,intro:`Let CI analyze each pull request once, as soon as it's opened or updated. Everyone who opens the PR, here or in the github.com drawer, sees the same grouped summary right away. Nobody needs their own model key, and pull requests from forks get it too.`,secret:`Add your model key as a repository secret, for example {name}.`,workflow:`Add this workflow to the repository:`,result:`Open or update a pull request to try it. The analysis arrives as a comment, and re-runs on an unchanged PR skip the model call.`,options:`The {provider} is inferred from the key. Set {provider}, {model} or {locale} to override it. See the {readme} for every option.`},cli:{title:`Review local git changes with the CLI`,intro:`Review your own change before anyone else does. The CLI opens your branch, a commit or your uncommitted work in pulls.review, so you can see how the change reads, grouped and summarized, before you push or open a PR.`,branch:`In a git repository, run this to review your current branch against the default branch:`,target:`Or choose what to review:`,browser:`It opens {url} in your browser to visualize your local changes. Confirm the tab with the one-time code printed in your terminal. From there, you can also pick other branches or commits to compare.`}},a={title:`Load a diff`,description:`Paste or drop a unified diff / .patch file to review it.`,pasteLabel:`Paste a unified diff / .patch`,chooseFile:`Or choose a .diff/.patch file`,loadButton:`Load diff`,parsing:`Parsing diff…`,parseFailed:`Couldn't parse this diff`,noDiff:`No diff loaded`,noDiffHint:`Go to the home page and use the upload button to paste or drop a diff.`,goHome:`Go home`},o={loading:`Loading pull request…`,loadFailed:`Couldn't load this pull request`,somethingWrong:`Something went wrong`,newCommits:`This pull request has new commits since it was cached.`,autoRefreshNextTime:`Auto refresh next time`,endOfDiff:`You have reached the end of the diff.`,analyzeBy:`Analyze by`,rules:`Rules`,ai:`AI`,by:`by`,sharedBy:`Viewing AI analysis shared by`,sharedAnalysis:`Viewing Shared Analysis`,reviewedOf:`/ {total} reviewed`,openInSite:`Open in pulls.review`},s={reviewChanges:`Review Changes`,updateUserscript:`Update userscript`},c={loading:`Loading pull requests…`,loadFailed:`Couldn't load pull requests`,open:`{n} open`,search:`Filter pull requests`,empty:`There aren't any open pull requests`,noMatches:`No pull requests match your search`,searchingAll:`Searching all {n} open pull requests…`,loadingMore:`Loading more…`,openedBy:`opened {time} by {author}`,milestone:`Milestone`,comments:`{n} comment | {n} comments`,linkedIssues:`{n} linked issue | {n} linked issues`,assignedTo:`Assigned to {login}`,groups:`{n} group | {n} groups`,viewedHint:`Viewed in this browser`,aiAvailable:`AI analysis available`,sort:{label:`Sort`,"recently-updated":`Recently updated`,"least-recently-updated":`Least recently updated`,newest:`Newest`,oldest:`Oldest`,"most-commented":`Most commented`,"least-commented":`Least commented`},review:{approved:`Approved`,changes_requested:`Changes requested`,review_required:`Review required`},checks:{success:`All checks have passed`,failure:`Some checks were not successful`,pending:`Some checks haven't completed yet`}},l={setupKeys:`Setup API Keys`,analyzing:`Analyzing…`,failed:`Analysis failed`,failedTitle:`AI analysis failed: {message}`,reanalyze:`Re-analyze`,withAi:`Analyze with AI`,statusTitle:`AI analysis`,starting:`Starting…`,thinking:`Thinking… (step {step})`,reading:`Reading {n} file: {first} | Reading {n} files: {first}`,organizing:`Organizing groups…`,notConfigured:`AI analysis is not configured: add a gateway token or a vendor API key in Settings`,chatFailed:`Chat request failed`,agentSessionLost:`The agent no longer has this conversation. Re-analyze to chat.`},u={button:`Share result`,updateButton:`Update shared comment`,sharing:`Sharing…`,tooltip:`Post this analysis as a comment on the pull request so others can load it`,needsToken:`A GitHub token with write access is required to share`,failed:`Sharing failed: {message}`,titleUpdate:`Update your shared analysis`,titleShare:`Share this analysis on GitHub`,willUpdate:`Your existing {comment} on this pull request will be updated as {user} with your GitHub token.`,willPost:`A public comment will be posted on this pull request as {user} with your GitHub token.`,commentLink:`comment`,contains:`The comment contains:`,containsLink:`a link to open this review on {site}`,containsJson:`the grouping and summaries of this AI analysis as JSON inside a collapsed block`,excludes:`Your chat messages, API keys, or anything else from your settings will not be included.`,anyoneCanLoad:`Anyone viewing the pull request can load the shared analysis.`,englishRecommended:`If you are working on a public project, we recommend sharing the result in English to make it helpful to the community.`,share:`Share`,update:`Update`,shareAnyway:`Share anyway`,updateAnyway:`Update anyway`,loadReplaces:`Load a shared AI analysis? It replaces yours:`,available:`Shared AI analyses of this pull request available:`,staleTitle:`Analyzed before the latest commits`,outdated:`(outdated)`,inLanguage:`Analyzed in {language}`,notShared:`{login} has not shared an analysis of this pull request.`},d={toggle:`Toggle group`,filesReviewed:`{reviewed} / {total} files reviewed`,subgroupsOf:`subgroups of`,hideSubgroups:`Hide subgroups`,showSubgroups:`Show subgroups`,navTabs:`Show groups as tabs`,navSidebar:`Show groups as sidebar`,uncategorized:`Uncategorized`,uncategorizedSummary:`Files not covered by the current analysis.`},f={critical:`Review carefully`},p={layoutTree:`Show files as tree`,layoutList:`Show files as list`,markReviewed:`Mark as reviewed`,markFolderReviewed:`Mark all files in {name} as reviewed`,changedSinceReviewed:`This file was previously reviewed but changed in later commits`,resolved:`{n} resolved`,binary:`Binary file`,binaryNotShown:`Binary file not shown.`,tooLarge:`Diff too large to show.`,loadFailed:`Failed to load`,loadFull:`Load full file content`,expand:`Expand file`,collapse:`Collapse file`,collapseMenu:`Expand or collapse files`,expandAll:`Expand all files`,collapseAll:`Collapse all files`,collapseReviewed:`Collapse reviewed files`,noLongerInDiff:`No longer in this diff`,removed:`removed`},m={title:`Review progress`,markAll:`Mark all as reviewed`,reset:`Reset review state`,invert:`Invert review state`,status:{reviewed:`Reviewed`,changed:`Changed since review`,unreviewed:`Not reviewed`}},h={added:`added`,removed:`removed`,modified:`modified`,renamed:`renamed`,copied:`copied`},g={open:`open`,draft:`draft`,closed:`closed`,merged:`merged`},_={ui:`UI`,api:`API`,core:`core`,data:`data`,cli:`CLI`,security:`security`,tests:`tests`,docs:`docs`,examples:`examples`,deps:`dependencies`,build:`build`,scripts:`scripts`,config:`config`,i18n:`i18n`,assets:`assets`,other:`other`},v={addReview:`Add Review`,hideComments:`Hide review comments`,showComments:`Show review comments`,reviews:`Reviews`,approved:`approved`,changesRequested:`requested changes`,commented:`commented`,dismissed:`review dismissed`,reviewChanges:`Review changes`,includesPending:`Submitting includes your {n} pending comment. | Submitting includes your {n} pending comments.`,summaryPlaceholder:`Leave a summary (optional for Approve)`,comment:`Comment`,approve:`Approve`,requestChanges:`Request changes`,ownPrCommentOnly:`You cannot approve or request changes on your own pull requests.`,discard:`Discard review`,leaveComment:`Leave a comment`,addSingle:`Add single comment`,addToReview:`Add review comment`,startReview:`Start a review`,pending:`Pending`,editComment:`Edit comment`,deleteComment:`Delete comment`,replyPlaceholder:`Reply…`,resolve:`Resolve`},y={title:`Ask about this PR`,collapse:`Collapse`,reanalyzeToEnable:`Re-analyze to enable chat`,thinking:`Thinking…`,placeholder:`Ask about this PR…`,updatedGrouping:`Updated grouping: {n} groups`,readFiles:`Read {n} file | Read {n} files`,updatingGrouping:`Updating grouping…`,submittingGrouping:`Submitting grouping…`,requestFailed:`Request failed`,stopped:`stopped`},b={layout:`Diff layout`,wrapLines:`Wrap lines`,unified:`Unified`,split:`Split`,syntaxTheme:{label:`Syntax theme`,light:`Light mode`,dark:`Dark mode`},cached:`Cached pull requests`,autoRefresh:`Auto refresh when new commits are found`,language:`Language`,token:{label:`GitHub Personal Access Token`,optional:`Optional for public repos; required for private repos, or leaving reviews.`,scopes:`Reviews need the {repo} scope (classic token) or {fineGrained} (fine-grained token)`,storedLocally:`Stored only in this browser.`,generate:`Generate one on GitHub →`,fineGrained:`Fine-grained token (no classic scopes)`,updated:`Updated`,expires:`Expires`,neverExpires:`Never expires`,change:`Change token`,checking:`Checking token…`,couldNotVerify:`Could not verify this token.`},tabs:{appearance:`Appearance`,behavior:`Behavior`,github:`GitHub`,ai:`AI Analysis`,notSetUp:`Not set up yet`},llm:{title:`AI Analysis`,description:`Configure a model provider to enable AI-generated summaries. Stored only in this browser and sent only to the provider you select.`,provider:`Provider`,baseUrl:`Base URL`,baseUrlDescription:`Any OpenAI-compatible chat completions endpoint (OpenAI itself, a local server, etc.).`,apiKey:`API key`,gatewayHint:`A {link} token, reaching any of its supported vendors with a single token.`,anthropicHint:`An {link}, called directly from this browser (no gateway).`,anthropicLink:`Anthropic API key`,openaiHint:`The API key for the endpoint above.`,createKey:`Create one on {provider} →`,configured:`Configured`,changeKey:`Change key`,model:`Model`,modelListFailed:`Could not load the model list ({error}). Enter a model id manually.`,embedUnavailable:`AI features aren't available in embedded mode`,embedReason:`github.com's strict Content Security Policy blocks the requests AI features need here. {link} to use them.`,goToWebsite:`Go to the website`,agent:`Agent`,agentNeedsCli:"Local agents run in the pulls.review CLI: start it in a repository with `npx pulls.review` and pick one there.",agentDetecting:`Looking for agent CLIs…`,agentNone:`No agent CLI found on this machine.`,agentHint:`A coding agent installed on this machine, signed in with its own account: {claude}, {opencode}, or {pi}. It reads the patch and the repository, never writes.`,agentPick:`Pick an agent…`},models:{placeholder:`model id`,loading:`Loading models…`,search:`Search models…`,noMatch:`No matching model`,useCustom:`Use “{id}”`,free:`Free`,priceTitle:`Input {input}/M · Output {output}/M tokens`,agentDefault:`Agent default`}},x={allFiles:`All files`,code:{label:`Code`,summary:`Source changes.`},other:{label:`Other`,summary:`Other changes that don't fit an existing category.`},docs:{label:`Docs`,summary:`Documentation updates.`},tests:{label:`Tests`,summary:`Test coverage for the change.`},config:{label:`Config`,summary:`Configuration changes.`},deps:{label:`Dependencies`,summary:`Dependency version changes.`},generated:{label:`Generated`,summary:`Generated or build output changes.`}},S={tokenRequired:`A GitHub token is required to write to this pull request.`,diffNotLoaded:`The diff has not finished loading yet.`,noViewer:`Could not determine the GitHub user of this token.`,tokenRejected:`GitHub rejected this token (401). Check that it was pasted completely and has not been revoked.`,tooLarge:`The analysis is too large to share as a comment ({n} characters).`},C={loading:`Loading local changes…`,loadFailed:`Couldn't load these changes`,auth:{title:`Enter the code from your terminal`,hint:`pulls.review printed a 6-digit code in the terminal it runs in.`,invalid:`That code didn't work. Check the terminal and try again.`,submit:`Continue`},picker:{tagline:`Review your local branches, ranges and uncommitted changes like a pull request: grouped, summarized, one scope at a time.`,title:`Review local changes`,base:`Base`,head:`Head`,compare:`Compare`,shortcuts:`Shortcuts`,worktree:`Uncommitted changes`,recentCommits:`Recent commits`,branches:`Branches`,against:`against {base}`,current:`Checked out`,github:`Or a GitHub pull request, compare or commit`}},w={common:n,landing:r,guide:i,load:a,pr:o,embed:s,pulls:c,analyze:l,share:u,group:d,note:f,file:p,reviewProgress:m,fileStatus:h,prState:g,category:_,review:v,chat:y,settings:b,rules:x,errors:S,local:C};export{t as n,w as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={cancel:`Cancelar`,save:`Guardar`,remove:`Quitar`,retry:`Reintentar`,close:`Cerrar`,dismiss:`Descartar`,refresh:`Actualizar`,settings:`Ajustes`,you:`tú`,loading:`Cargando…`,send:`Enviar`,stop:`Detener`,clear:`Limpiar`,reply:`Responder`,submit:`Enviar`,abort:`Abortar`,rerun:`Volver a ejecutar`,files:`{n} archivo | {n} archivos`,subgroups:`{n} subgrupo | {n} subgrupos`,githubRepository:`Repositorio de GitHub`,avatar:`Avatar de {login}`},t={dropHint:`Suelta para cargar tu archivo diff / .patch`,tagline:`Agrupa los archivos cambiados, resume lo importante y revísalos ámbito por ámbito. Todo funciona localmente en tu navegador.`,documentTitle:`Revisiones de pull requests claras y organizadas`,open:`Abrir`,pasteHint:`Pega la URL de cualquier pull request de GitHub o elige una demo abajo.`,recentlyViewed:`// vistos recientemente`,recentRepositories:`// repositorios vistos recientemente`,tryDemos:`// prueba algunas demos`,demoBefore:`// antes`,demoAfter:`// después`,moreFiles:`... {n} archivos más`,demoTitle:`feat: compartir un análisis de IA como comentario del PR y cargar resultados compartidos`,demoSummary:`Un revisor con API key publica su análisis en el PR; el resto lo carga sin token.`,demoGroups:{store:`Store de análisis compartidos y contrato del comentario`,ui:`UI para compartir resultados`,refactor:`Refactor del store: resultado a la raíz`,tests:`Pruebas`,docs:`Docs y dependencias`},uploadTitle:`Revisa un diff sin PR`,uploadDescription:`Sube o pega un unified diff, o suelta un archivo {diff} / {patch} en cualquier parte de esta página.`,uploadButton:`Subir un diff`,embedTitle:`Úsalo integrado en github.com`,embedDescription:`Con {tampermonkey} o {violentmonkey} instalado, aparece un panel de pulls.review en cada página de pull request.`,installUserscript:`Instalar userscript`,bookmarkletTitle:`Salta entre github.com y pulls.review`,bookmarkletDescription:`¿No puedes instalar extensiones? Arrastra este bookmarklet a tu barra de marcadores para abrir la pull request actual en pulls.review, y volver.`,bookmarkletDrag:`Arrástrame a tu barra de marcadores`,actionsTitle:`Configura el análisis automático con GitHub Actions`,actionsDescription:`Analiza cada pull request una vez en CI y publica el resultado como comentario, para que cada revisor no necesite su propia clave de modelo.`,cliTitle:`Ejecútalo sobre cambios locales de git con la CLI`,cliDescription:`Revisa tu árbol de trabajo, un commit o una rama antes de hacer push, agrupado y resumido como un PR.`,viewGuide:`Ver guía`},n={userscript:{title:`Usa pulls.review integrado en github.com`,intro:`El userscript añade un panel de pulls.review directamente en las páginas de pull requests de github.com, con archivos agrupados y resúmenes, para que no tengas que cambiar de pestaña.`,manager:`Instala un gestor de userscripts: {tampermonkey} o {violentmonkey}.`,install:`Instala el userscript de pulls.review. Tu gestor te pedirá confirmación.`,open:`Abre cualquier pull request en github.com y haz clic en la pestaña {tab} junto a "Files changed".`,ai:`github.com bloquea las solicitudes que necesita el análisis con IA, así que el panel muestra los análisis compartidos como comentarios del PR. Abre el PR en pulls.review para ejecutar uno nuevo.`},bookmarklet:{title:`Salta entre github.com y pulls.review`,intro:`Un bookmarklet es un marcador que ejecuta un pequeño script. Funciona en cualquier navegador, sin instalar ninguna extensión, y abre la página actual en el otro sitio.`,bar:`Muestra tu barra de marcadores, por ejemplo con {shortcut}.`,drag:`Arrastra este botón a la barra de marcadores:`,use:`En una página de pull request, commit o comparación de github.com, haz clic en el marcador para abrirla en pulls.review. Haz clic otra vez para volver.`},actions:{title:`Análisis automático con GitHub Actions`,intro:`Deja que la CI analice cada pull request una vez, en cuanto se abre o se actualiza. Todos los que abren el PR, aquí o en el panel de github.com, ven al instante el mismo resumen agrupado. Nadie necesita su propia clave de modelo, y los pull requests desde forks también lo reciben.`,secret:`Añade tu clave de modelo como secreto del repositorio, por ejemplo {name}.`,workflow:`Añade este workflow al repositorio:`,result:`Abre o actualiza un pull request para probarlo. El análisis llega como comentario, y las nuevas ejecuciones sobre un PR sin cambios omiten la llamada al modelo.`,options:`El {provider} se deduce de la clave. Define {provider}, {model} o {locale} para cambiarlo. Consulta el {readme} para ver todas las opciones.`},cli:{title:`Revisa cambios locales de git con la CLI`,intro:`Revisa tu propio cambio antes que nadie. La CLI abre tu rama, un commit o tu trabajo sin commit en pulls.review, para que veas cómo se lee el cambio, agrupado y resumido, antes de hacer push o abrir un PR.`,branch:`En un repositorio git, ejecuta esto para revisar tu rama actual contra la rama por defecto:`,target:`O elige qué revisar:`,browser:`Abre {url} en tu navegador para visualizar tus cambios locales. Confirma la pestaña con el código de un solo uso que aparece en tu terminal. Desde ahí también puedes elegir otras ramas o commits para comparar.`}},r={title:`Cargar un diff`,description:`Pega o suelta un archivo unified diff / .patch para revisarlo.`,pasteLabel:`Pega un unified diff / .patch`,chooseFile:`O elige un archivo .diff/.patch`,loadButton:`Cargar diff`,parsing:`Analizando el diff…`,parseFailed:`No se pudo analizar este diff`,noDiff:`Ningún diff cargado`,noDiffHint:`Ve a la página de inicio y usa el botón de subir para pegar o soltar un diff.`,goHome:`Ir al inicio`},i={loading:`Cargando pull request…`,loadFailed:`No se pudo cargar este pull request`,somethingWrong:`Algo salió mal`,newCommits:`Este pull request tiene commits nuevos desde que se guardó en caché.`,autoRefreshNextTime:`Actualizar automáticamente la próxima vez`,endOfDiff:`Has llegado al final del diff.`,analyzeBy:`Analizar con`,rules:`Reglas`,ai:`IA`,by:`por`,sharedBy:`Viendo el análisis de IA compartido por`,sharedAnalysis:`Viendo el análisis compartido`,reviewedOf:`/ {total} revisados`,openInSite:`Abrir en pulls.review`},a={reviewChanges:`Revisar cambios`,updateUserscript:`Actualizar userscript`},o={loading:`Cargando pull requests…`,loadFailed:`No se pudieron cargar los pull requests`,open:`{n} abiertos`,search:`Filtrar pull requests`,empty:`No hay pull requests abiertos`,noMatches:`Ningún pull request coincide con tu búsqueda`,searchingAll:`Buscando en los {n} pull requests abiertos…`,loadingMore:`Cargando más…`,openedBy:`abierto {time} por {author}`,milestone:`Hito`,comments:`{n} comentario | {n} comentarios`,linkedIssues:`{n} issue vinculado | {n} issues vinculados`,assignedTo:`Asignado a {login}`,groups:`{n} grupo | {n} grupos`,viewedHint:`Visto en este navegador`,aiAvailable:`Análisis de IA disponible`,sort:{label:`Ordenar`,"recently-updated":`Actualizados recientemente`,"least-recently-updated":`Actualizados hace más tiempo`,newest:`Más recientes`,oldest:`Más antiguos`,"most-commented":`Más comentados`,"least-commented":`Menos comentados`},review:{approved:`Aprobado`,changes_requested:`Cambios solicitados`,review_required:`Revisión requerida`},checks:{success:`Todas las comprobaciones pasaron`,failure:`Algunas comprobaciones fallaron`,pending:`Algunas comprobaciones aún no han terminado`}},s={setupKeys:`Configurar claves API`,analyzing:`Analizando…`,failed:`El análisis falló`,failedTitle:`El análisis de IA falló: {message}`,reanalyze:`Volver a analizar`,withAi:`Analizar con IA`,statusTitle:`Análisis de IA`,starting:`Iniciando…`,thinking:`Pensando… (paso {step})`,reading:`Leyendo {n} archivo: {first} | Leyendo {n} archivos: {first}`,organizing:`Organizando grupos…`,notConfigured:`El análisis de IA no está configurado: añade un token de gateway o una API key de proveedor en Ajustes`,chatFailed:`La solicitud del chat falló`,agentSessionLost:`El agente ya no tiene esta conversación. Vuelve a analizar para chatear.`},c={button:`Compartir resultado`,updateButton:`Actualizar comentario compartido`,sharing:`Compartiendo…`,tooltip:`Publica este análisis como comentario en el pull request para que otros puedan cargarlo`,needsToken:`Para compartir se necesita un token de GitHub con permiso de escritura`,failed:`Error al compartir: {message}`,titleUpdate:`Actualizar tu análisis compartido`,titleShare:`Compartir este análisis en GitHub`,willUpdate:`Tu {comment} existente en este pull request se actualizará como {user} con tu token de GitHub.`,willPost:`Se publicará un comentario público en este pull request como {user} con tu token de GitHub.`,commentLink:`comentario`,contains:`El comentario contiene:`,containsLink:`un enlace para abrir esta revisión en {site}`,containsJson:`la agrupación y los resúmenes de este análisis de IA como JSON dentro de un bloque plegado`,excludes:`Tus mensajes de chat, claves API o cualquier otro dato de tus ajustes no se incluirán.`,anyoneCanLoad:`Cualquiera que vea el pull request puede cargar el análisis compartido.`,englishRecommended:`Si trabajas en un proyecto público, te recomendamos compartir el resultado en inglés para que sea útil a la comunidad.`,share:`Compartir`,update:`Actualizar`,shareAnyway:`Compartir de todos modos`,updateAnyway:`Actualizar de todos modos`,loadReplaces:`¿Cargar un análisis de IA compartido? Reemplazará el tuyo:`,available:`Hay análisis de IA compartidos de este pull request:`,staleTitle:`Analizado antes de los últimos commits`,outdated:`(desactualizado)`,inLanguage:`Analizado en {language}`,notShared:`{login} no ha compartido un análisis de este pull request.`},l={toggle:`Plegar o desplegar grupo`,filesReviewed:`{reviewed} / {total} archivos revisados`,subgroupsOf:`subgrupos de`,hideSubgroups:`Ocultar subgrupos`,showSubgroups:`Mostrar subgrupos`,navTabs:`Mostrar grupos como pestañas`,navSidebar:`Mostrar grupos como barra lateral`,uncategorized:`Sin categoría`,uncategorizedSummary:`Archivos no cubiertos por el análisis actual.`},u={critical:`Revisar con cuidado`},d={layoutTree:`Mostrar archivos como árbol`,layoutList:`Mostrar archivos como lista`,markReviewed:`Marcar como revisado`,markFolderReviewed:`Marcar todos los archivos de {name} como revisados`,changedSinceReviewed:`Este archivo ya fue revisado, pero cambió en commits posteriores`,resolved:`{n} resueltos`,binary:`Archivo binario`,binaryNotShown:`El archivo binario no se muestra.`,tooLarge:`El diff es demasiado grande para mostrarse.`,loadFailed:`Error al cargar`,loadFull:`Cargar el contenido completo del archivo`,expand:`Desplegar archivo`,collapse:`Plegar archivo`,collapseMenu:`Expandir o plegar archivos`,expandAll:`Expandir todos los archivos`,collapseAll:`Plegar todos los archivos`,collapseReviewed:`Plegar archivos revisados`,noLongerInDiff:`Ya no está en este diff`,removed:`eliminado`},f={title:`Progreso de la revisión`,markAll:`Marcar todos como revisados`,reset:`Restablecer el estado de revisión`,invert:`Invertir el estado de revisión`,status:{reviewed:`Revisado`,changed:`Cambió desde la revisión`,unreviewed:`Sin revisar`}},p={added:`añadido`,removed:`eliminado`,modified:`modificado`,renamed:`renombrado`,copied:`copiado`},m={open:`abierto`,draft:`borrador`,closed:`cerrado`,merged:`fusionado`},h={ui:`UI`,api:`API`,core:`núcleo`,data:`datos`,cli:`CLI`,security:`seguridad`,tests:`pruebas`,docs:`documentación`,examples:`ejemplos`,deps:`dependencias`,build:`build`,scripts:`scripts`,config:`configuración`,i18n:`i18n`,assets:`recursos`,other:`otros`},g={addReview:`Añadir revisión`,hideComments:`Ocultar comentarios de revisión`,showComments:`Mostrar comentarios de revisión`,reviews:`Revisiones`,approved:`aprobó`,changesRequested:`solicitó cambios`,commented:`comentó`,dismissed:`revisión descartada`,reviewChanges:`Revisar cambios`,includesPending:`Al enviar se incluirá tu {n} comentario pendiente. | Al enviar se incluirán tus {n} comentarios pendientes.`,summaryPlaceholder:`Deja un resumen (opcional al aprobar)`,comment:`Comentar`,approve:`Aprobar`,requestChanges:`Solicitar cambios`,discard:`Descartar revisión`,leaveComment:`Deja un comentario`,addSingle:`Añadir comentario único`,addToReview:`Añadir comentario de revisión`,startReview:`Iniciar una revisión`,pending:`Pendiente`,editComment:`Editar comentario`,deleteComment:`Eliminar comentario`,replyPlaceholder:`Responder…`,resolve:`Resolver`},_={title:`Preguntar sobre este PR`,collapse:`Contraer`,reanalyzeToEnable:`Vuelve a analizar para habilitar el chat`,thinking:`Pensando…`,placeholder:`Pregunta sobre este PR…`,updatedGrouping:`Agrupación actualizada: {n} grupos`,readFiles:`Leyó {n} archivo | Leyó {n} archivos`,updatingGrouping:`Actualizando agrupación…`,submittingGrouping:`Enviando agrupación…`,requestFailed:`La solicitud falló`,stopped:`detenido`},v={layout:`Disposición del diff`,wrapLines:`Ajustar líneas`,unified:`Unificada`,split:`Dividida`,syntaxTheme:{label:`Tema de sintaxis`,light:`Modo claro`,dark:`Modo oscuro`},cached:`Pull requests en caché`,autoRefresh:`Actualizar automáticamente al encontrar commits nuevos`,language:`Idioma`,token:{label:`Token de acceso personal de GitHub`,optional:`Opcional para repositorios públicos; necesario para repositorios privados o para dejar revisiones.`,scopes:`Las revisiones necesitan el ámbito {repo} (token clásico) o {fineGrained} (token granular)`,storedLocally:`Se guarda solo en este navegador.`,generate:`Generar uno en GitHub →`,fineGrained:`Token granular (sin ámbitos clásicos)`,updated:`Actualizado`,expires:`Expira`,neverExpires:`No expira`,change:`Cambiar token`,checking:`Comprobando token…`,couldNotVerify:`No se pudo verificar este token.`},tabs:{appearance:`Apariencia`,behavior:`Comportamiento`,github:`GitHub`,ai:`Análisis con IA`,notSetUp:`Aún sin configurar`},llm:{title:`Análisis de IA`,description:`Configura un proveedor de modelos para habilitar resúmenes generados por IA. Se guarda solo en este navegador y se envía únicamente al proveedor que elijas.`,provider:`Proveedor`,baseUrl:`URL base`,baseUrlDescription:`Cualquier endpoint de chat completions compatible con OpenAI (OpenAI, un servidor local, etc.).`,apiKey:`API key`,gatewayHint:`Un token de {link}, que llega a cualquiera de sus proveedores compatibles con un solo token.`,anthropicHint:`Una {link}, llamada directamente desde este navegador (sin gateway).`,anthropicLink:`API key de Anthropic`,openaiHint:`La API key del endpoint anterior.`,createKey:`Crear una en {provider} →`,configured:`Configurada`,changeKey:`Cambiar clave`,model:`Modelo`,modelListFailed:`No se pudo cargar la lista de modelos ({error}). Introduce un id de modelo manualmente.`,embedUnavailable:`Las funciones de IA no están disponibles en modo integrado`,embedReason:`La estricta CSP de github.com bloquea las solicitudes que necesitan las funciones de IA. {link} para usarlas.`,goToWebsite:`Ve al sitio web`,agent:`Agente`,agentNeedsCli:"Los agentes locales se ejecutan en la CLI de pulls.review: iníciala en un repositorio con `npx pulls.review` y elige uno allí.",agentDetecting:`Buscando CLIs de agentes…`,agentNone:`No se encontró ninguna CLI de agente en esta máquina.`,agentHint:`Un agente de código instalado en esta máquina, con su propia cuenta: {claude} u {opencode}. Lee el parche y el repositorio, nunca escribe.`,agentPick:`Elige un agente…`},models:{placeholder:`id del modelo`,loading:`Cargando modelos…`,search:`Buscar modelos…`,noMatch:`Ningún modelo coincide`,useCustom:`Usar «{id}»`,free:`Gratis`,priceTitle:`Entrada {input}/M · Salida {output}/M tokens`,agentDefault:`Predeterminado del agente`}},y={allFiles:`Todos los archivos`,code:{label:`Código`,summary:`Cambios en el código fuente.`},other:{label:`Otros`,summary:`Otros cambios que no encajan en una categoría existente.`},docs:{label:`Documentación`,summary:`Actualizaciones de documentación.`},tests:{label:`Pruebas`,summary:`Cobertura de pruebas del cambio.`},config:{label:`Configuración`,summary:`Cambios de configuración.`},deps:{label:`Dependencias`,summary:`Cambios de versión de dependencias.`},generated:{label:`Generados`,summary:`Cambios en archivos generados o de build.`}},b={tokenRequired:`Se necesita un token de GitHub para escribir en este pull request.`,diffNotLoaded:`El diff aún no ha terminado de cargarse.`,noViewer:`No se pudo determinar el usuario de GitHub de este token.`,tokenRejected:`GitHub rechazó este token (401). Comprueba que se pegó completo y que no ha sido revocado.`,tooLarge:`El análisis es demasiado grande para compartirlo como comentario ({n} caracteres).`},x={loading:`Cargando cambios locales…`,loadFailed:`No se pudieron cargar estos cambios`,auth:{title:`Introduce el código de tu terminal`,hint:`pulls.review mostró un código de 6 dígitos en la terminal donde se ejecuta.`,invalid:`Ese código no funcionó. Revisa la terminal e inténtalo de nuevo.`,submit:`Continuar`},picker:{tagline:`Revisa tus ramas locales, rangos y cambios sin confirmar como un pull request: agrupados, resumidos, un ámbito a la vez.`,title:`Revisar cambios locales`,base:`Base`,head:`Head`,compare:`Comparar`,shortcuts:`Accesos rápidos`,worktree:`Cambios sin confirmar`,recentCommits:`Commits recientes`,branches:`Ramas`,against:`frente a {base}`,current:`Rama actual`,github:`O un pull request, comparación o commit de GitHub`}},S={common:e,landing:t,guide:n,load:r,pr:i,embed:a,pulls:o,analyze:s,share:c,group:l,note:u,file:d,reviewProgress:f,fileStatus:p,prState:m,category:h,review:g,chat:_,settings:v,rules:y,errors:b,local:x};export{s as analyze,h as category,_ as chat,e as common,S as default,a as embed,b as errors,d as file,p as fileStatus,l as group,n as guide,t as landing,r as load,x as local,u as note,i as pr,m as prState,o as pulls,g as review,f as reviewProgress,y as rules,v as settings,c as share};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={cancel:`Annuler`,save:`Enregistrer`,remove:`Supprimer`,retry:`Réessayer`,close:`Fermer`,dismiss:`Ignorer`,refresh:`Actualiser`,settings:`Paramètres`,you:`vous`,loading:`Chargement…`,send:`Envoyer`,stop:`Arrêter`,clear:`Effacer`,reply:`Répondre`,submit:`Envoyer`,abort:`Interrompre`,rerun:`Relancer`,files:`{n} fichier | {n} fichiers`,subgroups:`{n} sous-groupe | {n} sous-groupes`,githubRepository:`Dépôt GitHub`,avatar:`Avatar de {login}`},t={dropHint:`Déposez pour charger votre fichier diff / .patch`,tagline:`Regroupe les fichiers modifiés, résume l'essentiel, et vous les fait relire un périmètre à la fois. Tout fonctionne localement dans votre navigateur.`,documentTitle:`Des revues de pull requests claires et organisées`,open:`Ouvrir`,pasteHint:`Collez l'URL d'une pull request GitHub, ou choisissez une démo ci-dessous.`,recentlyViewed:`// vus récemment`,recentRepositories:`// dépôts consultés récemment`,tryDemos:`// essayez des démos`,demoBefore:`// avant`,demoAfter:`// après`,moreFiles:`... {n} fichiers de plus`,demoTitle:`feat: partager une analyse IA en commentaire de PR et charger les résultats partagés`,demoSummary:`Un relecteur avec une API key publie son analyse sur la PR ; tous les autres la chargent sans token.`,demoGroups:{store:`Store d'analyses partagées et contrat du commentaire`,ui:`UI de partage du résultat`,refactor:`Refactor du store : résultat à la racine`,tests:`Tests`,docs:`Docs et dépendances`},uploadTitle:`Relire un diff sans PR`,uploadDescription:`Importez ou collez un unified diff, ou déposez un fichier {diff} / {patch} n'importe où sur cette page.`,uploadButton:`Importer un diff`,embedTitle:`Utilisez-le intégré à github.com`,embedDescription:`Avec {tampermonkey} ou {violentmonkey} installé, un panneau pulls.review apparaît sur chaque page de pull request.`,installUserscript:`Installer le userscript`,bookmarkletTitle:`Passer de github.com à pulls.review`,bookmarkletDescription:`Impossible d'installer des extensions ? Glissez ce bookmarklet dans votre barre de favoris pour ouvrir la pull request actuelle sur pulls.review, et revenir.`,bookmarkletDrag:`Glissez-moi dans votre barre de favoris`,actionsTitle:`Configurer l'analyse automatique avec GitHub Actions`,actionsDescription:`Analysez chaque pull request une fois en CI et publiez le résultat en commentaire, pour que chaque relecteur n'ait pas besoin de sa propre clé de modèle.`,cliTitle:`Lancez-le sur vos modifications git locales avec la CLI`,cliDescription:`Relisez votre arbre de travail, un commit ou une branche avant de pousser, groupés et résumés comme une PR.`,viewGuide:`Voir le guide`},n={userscript:{title:`Utiliser pulls.review intégré à github.com`,intro:`Le userscript ajoute un panneau pulls.review directement aux pages de pull request sur github.com, avec fichiers groupés et résumés, pour que vous n'ayez pas à changer d'onglet.`,manager:`Installez un gestionnaire de userscripts : {tampermonkey} ou {violentmonkey}.`,install:`Installez le userscript pulls.review. Votre gestionnaire vous demande de confirmer.`,open:`Ouvrez n'importe quelle pull request sur github.com et cliquez sur l'onglet {tab} à côté de "Files changed".`,ai:`github.com bloque les requêtes nécessaires à l'analyse IA : le panneau affiche donc les analyses partagées en commentaire. Ouvrez la PR sur pulls.review pour en lancer une nouvelle.`},bookmarklet:{title:`Passer de github.com à pulls.review`,intro:`Un bookmarklet est un favori qui exécute un petit script. Il fonctionne dans tous les navigateurs, sans extension à installer, et ouvre la page actuelle sur l'autre site.`,bar:`Affichez votre barre de favoris, par exemple avec {shortcut}.`,drag:`Glissez ce bouton dans la barre de favoris :`,use:`Sur une page de pull request, de commit ou de comparaison sur github.com, cliquez sur le favori pour l'ouvrir sur pulls.review. Cliquez à nouveau pour revenir.`},actions:{title:`Analyse automatique avec GitHub Actions`,intro:`Laissez la CI analyser chaque pull request une fois, dès qu'elle est ouverte ou mise à jour. Toute personne qui ouvre la PR, ici ou dans le panneau sur github.com, voit aussitôt le même résumé groupé. Personne n'a besoin de sa propre clé de modèle, et les pull requests venant de forks en profitent aussi.`,secret:`Ajoutez votre clé de modèle comme secret du dépôt, par exemple {name}.`,workflow:`Ajoutez ce workflow au dépôt :`,result:`Ouvrez ou mettez à jour une pull request pour essayer. L'analyse arrive en commentaire, et les relances sur une PR inchangée sautent l'appel au modèle.`,options:`Le {provider} est déduit de la clé. Définissez {provider}, {model} ou {locale} pour le remplacer. Toutes les options sont dans le {readme}.`},cli:{title:`Relire des modifications git locales avec la CLI`,intro:`Relisez votre propre modification avant les autres. La CLI ouvre votre branche, un commit ou votre travail non commité dans pulls.review, pour voir comment la modification se lit, groupée et résumée, avant de pousser ou d'ouvrir une PR.`,branch:`Dans un dépôt git, lancez ceci pour relire votre branche actuelle par rapport à la branche par défaut :`,target:`Ou choisissez quoi relire :`,browser:`Elle ouvre {url} dans votre navigateur pour visualiser vos modifications locales. Confirmez l'onglet avec le code à usage unique affiché dans votre terminal. Vous pouvez aussi y choisir d'autres branches ou commits à comparer.`}},r={title:`Charger un diff`,description:`Collez ou déposez un fichier unified diff / .patch pour le relire.`,pasteLabel:`Collez un unified diff / .patch`,chooseFile:`Ou choisissez un fichier .diff/.patch`,loadButton:`Charger le diff`,parsing:`Analyse du diff…`,parseFailed:`Impossible d'analyser ce diff`,noDiff:`Aucun diff chargé`,noDiffHint:`Retournez à l'accueil et utilisez le bouton d'import pour coller ou déposer un diff.`,goHome:`Accueil`},i={loading:`Chargement de la pull request…`,loadFailed:`Impossible de charger cette pull request`,somethingWrong:`Une erreur est survenue`,newCommits:`Cette pull request a de nouveaux commits depuis sa mise en cache.`,autoRefreshNextTime:`Actualiser automatiquement la prochaine fois`,endOfDiff:`Vous avez atteint la fin du diff.`,analyzeBy:`Analyser par`,rules:`Règles`,ai:`IA`,by:`par`,sharedBy:`Analyse IA partagée par`,sharedAnalysis:`Analyse partagée`,reviewedOf:`/ {total} relus`,openInSite:`Ouvrir dans pulls.review`},a={reviewChanges:`Relire les modifications`,updateUserscript:`Mettre à jour le userscript`},o={loading:`Chargement des pull requests…`,loadFailed:`Impossible de charger les pull requests`,open:`{n} ouvertes`,search:`Filtrer les pull requests`,empty:`Aucune pull request ouverte`,noMatches:`Aucune pull request ne correspond à votre recherche`,searchingAll:`Recherche parmi les {n} pull requests ouvertes…`,loadingMore:`Chargement…`,openedBy:`ouverte {time} par {author}`,milestone:`Jalon`,comments:`{n} commentaire | {n} commentaires`,linkedIssues:`{n} issue liée | {n} issues liées`,assignedTo:`Assignée à {login}`,groups:`{n} groupe | {n} groupes`,viewedHint:`Consultée dans ce navigateur`,aiAvailable:`Analyse IA disponible`,sort:{label:`Trier`,"recently-updated":`Mises à jour récemment`,"least-recently-updated":`Mises à jour le moins récemment`,newest:`Plus récentes`,oldest:`Plus anciennes`,"most-commented":`Plus commentées`,"least-commented":`Moins commentées`},review:{approved:`Approuvée`,changes_requested:`Modifications demandées`,review_required:`Revue requise`},checks:{success:`Toutes les vérifications ont réussi`,failure:`Certaines vérifications ont échoué`,pending:`Certaines vérifications ne sont pas terminées`}},s={setupKeys:`Configurer les clés API`,analyzing:`Analyse…`,failed:`Échec de l'analyse`,failedTitle:`Échec de l'analyse IA : {message}`,reanalyze:`Réanalyser`,withAi:`Analyser avec l'IA`,statusTitle:`Analyse IA`,starting:`Démarrage…`,thinking:`Réflexion… (étape {step})`,reading:`Lecture de {n} fichier : {first} | Lecture de {n} fichiers : {first}`,organizing:`Organisation des groupes…`,notConfigured:`L'analyse IA n'est pas configurée : ajoutez un token gateway ou une API key de fournisseur dans les Paramètres`,chatFailed:`La requête du chat a échoué`,agentSessionLost:`L’agent n’a plus cette conversation. Relancez l’analyse pour discuter.`},c={button:`Partager le résultat`,updateButton:`Mettre à jour le commentaire partagé`,sharing:`Partage…`,tooltip:`Publie cette analyse en commentaire de la pull request pour que d'autres puissent la charger`,needsToken:`Un token GitHub avec accès en écriture est requis pour partager`,failed:`Échec du partage : {message}`,titleUpdate:`Mettre à jour votre analyse partagée`,titleShare:`Partager cette analyse sur GitHub`,willUpdate:`Votre {comment} existant sur cette pull request sera mis à jour en tant que {user} avec votre token GitHub.`,willPost:`Un commentaire public sera publié sur cette pull request en tant que {user} avec votre token GitHub.`,commentLink:`commentaire`,contains:`Le commentaire contient :`,containsLink:`un lien pour ouvrir cette revue sur {site}`,containsJson:`le regroupement et les résumés de cette analyse IA en JSON dans un bloc replié`,excludes:`Vos messages de chat, clés API ou toute autre donnée de vos paramètres ne seront pas inclus.`,anyoneCanLoad:`Toute personne consultant la pull request peut charger l'analyse partagée.`,englishRecommended:`Si vous travaillez sur un projet public, nous recommandons de partager le résultat en anglais pour qu'il soit utile à la communauté.`,share:`Partager`,update:`Mettre à jour`,shareAnyway:`Partager quand même`,updateAnyway:`Mettre à jour quand même`,loadReplaces:`Charger une analyse IA partagée ? Elle remplacera la vôtre :`,available:`Analyses IA partagées disponibles pour cette pull request :`,staleTitle:`Analysée avant les derniers commits`,outdated:`(obsolète)`,inLanguage:`Analysée en {language}`,notShared:`{login} n'a pas partagé d'analyse de cette pull request.`},l={toggle:`Replier ou déplier le groupe`,filesReviewed:`{reviewed} / {total} fichiers relus`,subgroupsOf:`sous-groupes de`,hideSubgroups:`Masquer les sous-groupes`,showSubgroups:`Afficher les sous-groupes`,navTabs:`Afficher les groupes en onglets`,navSidebar:`Afficher les groupes en barre latérale`,uncategorized:`Non classés`,uncategorizedSummary:`Fichiers non couverts par l'analyse actuelle.`},u={critical:`À relire attentivement`},d={layoutTree:`Afficher les fichiers en arborescence`,layoutList:`Afficher les fichiers en liste`,markReviewed:`Marquer comme relu`,markFolderReviewed:`Marquer tous les fichiers de {name} comme relus`,changedSinceReviewed:`Ce fichier avait été relu, mais a changé dans des commits ultérieurs`,resolved:`{n} résolus`,binary:`Fichier binaire`,binaryNotShown:`Fichier binaire non affiché.`,tooLarge:`Diff trop volumineux pour être affiché.`,loadFailed:`Échec du chargement`,loadFull:`Charger le contenu complet du fichier`,expand:`Déplier le fichier`,collapse:`Replier le fichier`,collapseMenu:`Déplier ou replier les fichiers`,expandAll:`Déplier tous les fichiers`,collapseAll:`Replier tous les fichiers`,collapseReviewed:`Replier les fichiers relus`,noLongerInDiff:`N'est plus dans ce diff`,removed:`supprimé`},f={title:`Avancement de la relecture`,markAll:`Tout marquer comme relu`,reset:`Réinitialiser l'état de relecture`,invert:`Inverser l'état de relecture`,status:{reviewed:`Relu`,changed:`Modifié depuis la relecture`,unreviewed:`Non relu`}},p={added:`ajouté`,removed:`supprimé`,modified:`modifié`,renamed:`renommé`,copied:`copié`},m={open:`ouverte`,draft:`brouillon`,closed:`fermée`,merged:`fusionnée`},h={ui:`UI`,api:`API`,core:`cœur`,data:`données`,cli:`CLI`,security:`sécurité`,tests:`tests`,docs:`documentation`,examples:`exemples`,deps:`dépendances`,build:`build`,scripts:`scripts`,config:`configuration`,i18n:`i18n`,assets:`ressources`,other:`autre`},g={addReview:`Ajouter une revue`,hideComments:`Masquer les commentaires de revue`,showComments:`Afficher les commentaires de revue`,reviews:`Revues`,approved:`a approuvé`,changesRequested:`a demandé des modifications`,commented:`a commenté`,dismissed:`revue rejetée`,reviewChanges:`Relire les modifications`,includesPending:`L'envoi inclut votre {n} commentaire en attente. | L'envoi inclut vos {n} commentaires en attente.`,summaryPlaceholder:`Laissez un résumé (facultatif pour approuver)`,comment:`Commenter`,approve:`Approuver`,requestChanges:`Demander des modifications`,discard:`Abandonner la revue`,leaveComment:`Laissez un commentaire`,addSingle:`Ajouter un commentaire seul`,addToReview:`Ajouter un commentaire de revue`,startReview:`Commencer une revue`,pending:`En attente`,editComment:`Modifier le commentaire`,deleteComment:`Supprimer le commentaire`,replyPlaceholder:`Répondre…`,resolve:`Résoudre`},_={title:`Poser une question sur cette PR`,collapse:`Réduire`,reanalyzeToEnable:`Réanalysez pour activer le chat`,thinking:`Réflexion…`,placeholder:`Posez une question sur cette PR…`,updatedGrouping:`Regroupement mis à jour : {n} groupes`,readFiles:`{n} fichier lu | {n} fichiers lus`,updatingGrouping:`Mise à jour du regroupement…`,submittingGrouping:`Envoi du regroupement…`,requestFailed:`La requête a échoué`,stopped:`arrêté`},v={layout:`Disposition du diff`,wrapLines:`Retour à la ligne automatique`,unified:`Unifiée`,split:`Côte à côte`,syntaxTheme:{label:`Thème de syntaxe`,light:`Mode clair`,dark:`Mode sombre`},cached:`Pull requests en cache`,autoRefresh:`Actualiser automatiquement quand de nouveaux commits sont trouvés`,language:`Langue`,token:{label:`Personal Access Token GitHub`,optional:`Facultatif pour les dépôts publics ; requis pour les dépôts privés ou pour laisser des revues.`,scopes:`Les revues nécessitent le scope {repo} (classic token) ou {fineGrained} (fine-grained token)`,storedLocally:`Stocké uniquement dans ce navigateur.`,generate:`En générer un sur GitHub →`,fineGrained:`Fine-grained token (sans scopes classiques)`,updated:`Mis à jour`,expires:`Expire`,neverExpires:`N'expire jamais`,change:`Changer le token`,checking:`Vérification du token…`,couldNotVerify:`Impossible de vérifier ce token.`},tabs:{appearance:`Apparence`,behavior:`Comportement`,github:`GitHub`,ai:`Analyse IA`,notSetUp:`Pas encore configuré`},llm:{title:`Analyse IA`,description:`Configurez un fournisseur de modèles pour activer les résumés générés par l'IA. Stocké uniquement dans ce navigateur et envoyé seulement au fournisseur que vous choisissez.`,provider:`Fournisseur`,baseUrl:`URL de base`,baseUrlDescription:`N'importe quel endpoint de chat completions compatible OpenAI (OpenAI, un serveur local, etc.).`,apiKey:`API key`,gatewayHint:`Un token {link}, donnant accès à tous ses fournisseurs pris en charge avec un seul token.`,anthropicHint:`Une {link}, appelée directement depuis ce navigateur (sans gateway).`,anthropicLink:`API key Anthropic`,openaiHint:`L'API key de l'endpoint ci-dessus.`,createKey:`En créer une sur {provider} →`,configured:`Configurée`,changeKey:`Changer la clé`,model:`Modèle`,modelListFailed:`Impossible de charger la liste des modèles ({error}). Saisissez un id de modèle manuellement.`,embedUnavailable:`Les fonctions IA ne sont pas disponibles en mode intégré`,embedReason:`La CSP stricte de github.com bloque les requêtes nécessaires aux fonctions IA. {link} pour les utiliser.`,goToWebsite:`Rendez-vous sur le site`,agent:`Agent`,agentNeedsCli:"Les agents locaux s’exécutent dans la CLI pulls.review : lancez-la dans un dépôt avec `npx pulls.review` et choisissez-en un là.",agentDetecting:`Recherche des CLI d’agents…`,agentNone:`Aucune CLI d’agent trouvée sur cette machine.`,agentHint:`Un agent de code installé sur cette machine, connecté avec son propre compte : {claude} ou {opencode}. Il lit le patch et le dépôt, n’écrit jamais.`,agentPick:`Choisir un agent…`},models:{placeholder:`id du modèle`,loading:`Chargement des modèles…`,search:`Rechercher des modèles…`,noMatch:`Aucun modèle correspondant`,useCustom:`Utiliser « {id} »`,free:`Gratuit`,priceTitle:`Entrée {input}/M · Sortie {output}/M tokens`,agentDefault:`Défaut de l’agent`}},y={allFiles:`Tous les fichiers`,code:{label:`Code`,summary:`Modifications du code source.`},other:{label:`Autre`,summary:`Autres modifications ne correspondant à aucune catégorie existante.`},docs:{label:`Docs`,summary:`Mises à jour de la documentation.`},tests:{label:`Tests`,summary:`Couverture de tests de la modification.`},config:{label:`Config`,summary:`Modifications de configuration.`},deps:{label:`Dépendances`,summary:`Changements de version des dépendances.`},generated:{label:`Générés`,summary:`Modifications de fichiers générés ou de build.`}},b={tokenRequired:`Un token GitHub est requis pour écrire sur cette pull request.`,diffNotLoaded:`Le diff n'a pas fini de se charger.`,noViewer:`Impossible de déterminer l'utilisateur GitHub de ce token.`,tokenRejected:`GitHub a refusé ce token (401). Vérifiez qu'il a été collé en entier et qu'il n'a pas été révoqué.`,tooLarge:`L'analyse est trop volumineuse pour être partagée en commentaire ({n} caractères).`},x={loading:`Chargement des modifications locales…`,loadFailed:`Impossible de charger ces modifications`,auth:{title:`Saisissez le code affiché dans votre terminal`,hint:`pulls.review a affiché un code à 6 chiffres dans le terminal où il s'exécute.`,invalid:`Ce code n'a pas fonctionné. Vérifiez le terminal et réessayez.`,submit:`Continuer`},picker:{tagline:`Relisez vos branches locales, plages et modifications non commitées comme une pull request : regroupées, résumées, un périmètre à la fois.`,title:`Relire les modifications locales`,base:`Base`,head:`Head`,compare:`Comparer`,shortcuts:`Raccourcis`,worktree:`Modifications non commitées`,recentCommits:`Commits récents`,branches:`Branches`,against:`par rapport à {base}`,current:`Branche actuelle`,github:`Ou une pull request, une comparaison ou un commit GitHub`}},S={common:e,landing:t,guide:n,load:r,pr:i,embed:a,pulls:o,analyze:s,share:c,group:l,note:u,file:d,reviewProgress:f,fileStatus:p,prState:m,category:h,review:g,chat:_,settings:v,rules:y,errors:b,local:x};export{s as analyze,h as category,_ as chat,e as common,S as default,a as embed,b as errors,d as file,p as fileStatus,l as group,n as guide,t as landing,r as load,x as local,u as note,i as pr,m as prState,o as pulls,g as review,f as reviewProgress,y as rules,v as settings,c as share};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./en-CbWYrCM5.js","./rolldown-runtime-Dd_uD5pT.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{d as e,mn as t,t as n}from"./vue-i18n-CGHHpbTP.js";import{n as r,r as i}from"./locales-SpkpwNqX.js";import{t as a}from"./preload-helper-BaNbYf_w.js";import{t as o}from"./en-CbWYrCM5.js";var s=[`claude`,`opencode`,`pi`],c={provider:`gateway`,gatewayToken:``,gatewayModel:`anthropic/claude-sonnet-5`,anthropicApiKey:``,anthropicModel:`claude-sonnet-5`,openaiApiKey:``,openaiBaseUrl:`https://api.openai.com/v1`,openaiModel:`gpt-5.1`,agent:``,agentModel:``};function l(e){return e.gatewayToken?`gateway`:e.anthropicApiKey?`anthropic`:e.openaiApiKey?`openai-compatible`:`gateway`}function u(e,...t){return typeof e==`function`?e(...t):e}var d=Error.captureStackTrace,f=class e extends Error{name;code;docs;fix;sources;data;get why(){return this.message}constructor(t,n=e){super(t.why,{cause:t.cause}),this.code=this.name=t.code,this.fix=t.fix,this.docs=t.docs,this.sources=t.sources,this.data=t.data,d?.(this,n)}toJSON(){return{name:this.name,why:this.why,fix:this.fix,docs:this.docs,sources:this.sources,cause:this.cause,data:this.data,stack:this.stack}}};function p(e,t){return typeof e==`string`?`${e}/${t.toLowerCase()}`:e?.(t)}function m(e){let t=e.reporters??[],n={},{docsBase:r}=e;for(let i of Object.keys(e.codes)){let a=e.codes[i],o=a.docs===!1?void 0:a.docs||p(r,i),s=(e={},n={})=>{let r=new f({code:i,why:u(a.why,e),fix:u(a.fix,e),docs:o,cause:e.cause,sources:e.sources,data:u(a.data,e)},s);for(let e of t)e(r,n);return r};n[i]=s}return n}var h={githubToken:``,llm:c,locale:r()},g=e(`diffs:settings`,h,{mergeDefaults:(e,t)=>{let n={...t.llm,...e?.llm};e?.llm?.provider||(n.provider=l(n));let r=i(e?.locale)?e.locale:t.locale;return{...t,...e,llm:n,locale:r}}});function _(e,t){if(e===0)return 0;let n=e>10&&e<20,r=e%10==1;return t<4?!n&&r?1:2:!n&&r?1:!n&&e%10>=2&&e%10<=4?2:3}var v=n({legacy:!1,locale:`en`,fallbackLocale:`en`,messages:{en:o},pluralizationRules:{ru:_}}),y=Object.assign({"./locales/de.json":()=>a(()=>import(`./de-BoIOg_UW.js`),[],import.meta.url),"./locales/en.json":()=>a(()=>import(`./en-CbWYrCM5.js`).then(e=>e.n),__vite__mapDeps([0,1]),import.meta.url),"./locales/es.json":()=>a(()=>import(`./es-CqEudTln.js`),[],import.meta.url),"./locales/fr.json":()=>a(()=>import(`./fr-qiQQ-4AO.js`),[],import.meta.url),"./locales/id.json":()=>a(()=>import(`./id-BkDzu8gq.js`),[],import.meta.url),"./locales/it.json":()=>a(()=>import(`./it-tZZZbUKN.js`),[],import.meta.url),"./locales/ja.json":()=>a(()=>import(`./ja-kGPK4Fmt.js`),[],import.meta.url),"./locales/ko.json":()=>a(()=>import(`./ko-CULiae40.js`),[],import.meta.url),"./locales/pt-BR.json":()=>a(()=>import(`./pt-BR-BcwoZLSs.js`),[],import.meta.url),"./locales/ru.json":()=>a(()=>import(`./ru-DOordgLF.js`),[],import.meta.url),"./locales/zh-CN.json":()=>a(()=>import(`./zh-CN-CmTqGY9s.js`),[],import.meta.url),"./locales/zh-TW.json":()=>a(()=>import(`./zh-TW-DKGtbJQy.js`),[],import.meta.url)});async function b(e){if(!v.global.availableLocales.includes(e)){let t=await y[`./locales/${e}.json`]();v.global.setLocaleMessage(e,t.default)}v.global.locale.value=e,document.documentElement.lang=e}t(()=>g.value.locale,e=>void b(e),{immediate:!0});var x=v.global.t;export{m as a,f as i,x as n,s as o,g as r,v as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={cancel:`Batal`,save:`Simpan`,remove:`Hapus`,retry:`Coba lagi`,close:`Tutup`,dismiss:`Tutup`,refresh:`Muat ulang`,settings:`Pengaturan`,you:`Anda`,loading:`Memuat…`,send:`Kirim`,stop:`Berhenti`,clear:`Bersihkan`,reply:`Balas`,submit:`Kirim`,abort:`Batalkan`,rerun:`Jalankan ulang`,files:`{n} berkas`,subgroups:`{n} subgrup`,githubRepository:`Repositori GitHub`,avatar:`Avatar {login}`},t={dropHint:`Lepaskan untuk memuat berkas diff / .patch Anda`,tagline:`Mengelompokkan berkas yang berubah, merangkum yang penting, dan meninjaunya satu lingkup sekaligus. Semuanya berjalan lokal di browser Anda.`,documentTitle:`Tinjauan pull request yang jelas dan teratur`,open:`Buka`,pasteHint:`Tempel URL pull request GitHub mana pun, atau pilih demo di bawah.`,recentlyViewed:`// baru dilihat`,recentRepositories:`// repositori yang baru dilihat`,tryDemos:`// coba beberapa demo`,demoBefore:`// sebelum`,demoAfter:`// sesudah`,moreFiles:`... {n} berkas lainnya`,demoTitle:`feat: bagikan analisis AI sebagai komentar PR dan muat hasil yang dibagikan`,demoSummary:`Satu peninjau dengan API key mengirim analisisnya ke PR; semua orang lain memuatnya tanpa token.`,demoGroups:{store:`Store analisis bersama & kontrak komentar`,ui:`UI berbagi hasil`,refactor:`Refactor store: hasil ke root`,tests:`Pengujian`,docs:`Dokumentasi & dependensi`},uploadTitle:`Tinjau diff tanpa PR`,uploadDescription:`Unggah atau tempel unified diff, atau seret berkas {diff} / {patch} ke mana saja di halaman ini.`,uploadButton:`Unggah diff`,embedTitle:`Gunakan tertanam di github.com`,embedDescription:`Dengan {tampermonkey} atau {violentmonkey} terpasang, panel pulls.review muncul di setiap halaman pull request.`,installUserscript:`Pasang userscript`,bookmarkletTitle:`Berpindah antara github.com dan pulls.review`,bookmarkletDescription:`Tidak bisa memasang ekstensi? Seret bookmarklet ini ke bilah bookmark untuk membuka pull request saat ini di pulls.review, dan kembali.`,bookmarkletDrag:`Seret saya ke bilah bookmark`,actionsTitle:`Siapkan analisis otomatis dengan GitHub Actions`,actionsDescription:`Analisis setiap pull request sekali di CI dan kirim hasilnya sebagai komentar PR, jadi setiap reviewer tidak perlu kunci model sendiri.`,cliTitle:`Jalankan pada perubahan git lokal dengan CLI`,cliDescription:`Tinjau working tree, sebuah commit, atau branch sebelum push, dikelompokkan dan diringkas seperti PR.`,viewGuide:`Lihat panduan`},n={userscript:{title:`Gunakan pulls.review tertanam di github.com`,intro:`Userscript menambahkan panel pulls.review langsung ke halaman pull request di github.com, lengkap dengan file yang dikelompokkan dan ringkasan, sehingga Anda tidak perlu berpindah tab.`,manager:`Pasang pengelola userscript: {tampermonkey} atau {violentmonkey}.`,install:`Pasang userscript pulls.review. Pengelola Anda akan meminta konfirmasi.`,open:`Buka pull request apa pun di github.com lalu klik tab {tab} di samping "Files changed".`,ai:`github.com memblokir permintaan yang dibutuhkan analisis AI, jadi panel menampilkan analisis yang dibagikan sebagai komentar PR. Buka PR di pulls.review untuk menjalankan analisis baru.`},bookmarklet:{title:`Berpindah antara github.com dan pulls.review`,intro:`Bookmarklet adalah bookmark yang menjalankan skrip kecil. Bookmarklet bekerja di browser apa pun tanpa perlu memasang ekstensi, dan membuka halaman saat ini di situs lainnya.`,bar:`Tampilkan bilah bookmark, misalnya dengan {shortcut}.`,drag:`Seret tombol ini ke bilah bookmark:`,use:`Di halaman pull request, commit, atau compare di github.com, klik bookmark untuk membukanya di pulls.review. Klik lagi untuk kembali.`},actions:{title:`Analisis otomatis dengan GitHub Actions`,intro:`Biarkan CI menganalisis setiap pull request sekali, begitu dibuka atau diperbarui. Semua yang membuka PR, di sini atau di panel github.com, langsung melihat ringkasan yang sama. Tidak ada yang perlu kunci model sendiri, dan pull request dari fork juga mendapatkannya.`,secret:`Tambahkan kunci model Anda sebagai secret repositori, misalnya {name}.`,workflow:`Tambahkan workflow ini ke repositori:`,result:`Buka atau perbarui pull request untuk mencobanya. Analisis muncul sebagai komentar, dan menjalankan ulang pada PR yang tidak berubah melewati panggilan model.`,options:`{provider} disimpulkan dari kunci. Atur {provider}, {model}, atau {locale} untuk menggantinya. Lihat {readme} untuk semua opsi.`},cli:{title:`Tinjau perubahan git lokal dengan CLI`,intro:`Tinjau perubahan Anda sendiri sebelum orang lain. CLI membuka branch Anda, sebuah commit, atau pekerjaan yang belum di-commit di pulls.review, sehingga Anda bisa melihat perubahan dalam bentuk kelompok dan ringkasan sebelum push atau membuka PR.`,branch:`Di repositori git, jalankan ini untuk meninjau branch saat ini terhadap branch default:`,target:`Atau pilih apa yang ingin ditinjau:`,browser:`CLI membuka {url} di browser untuk menampilkan perubahan lokal Anda. Konfirmasi tab dengan kode sekali pakai yang tercetak di terminal. Di sana Anda juga bisa memilih branch atau commit lain untuk dibandingkan.`}},r={title:`Muat diff`,description:`Tempel atau seret berkas unified diff / .patch untuk meninjaunya.`,pasteLabel:`Tempel unified diff / .patch`,chooseFile:`Atau pilih berkas .diff/.patch`,loadButton:`Muat diff`,parsing:`Mengurai diff…`,parseFailed:`Diff ini tidak dapat diurai`,noDiff:`Belum ada diff yang dimuat`,noDiffHint:`Kembali ke halaman utama dan gunakan tombol unggah untuk menempel atau menyeret diff.`,goHome:`Ke halaman utama`},i={loading:`Memuat pull request…`,loadFailed:`Pull request ini tidak dapat dimuat`,somethingWrong:`Terjadi kesalahan`,newCommits:`Pull request ini memiliki commit baru sejak disimpan di cache.`,autoRefreshNextTime:`Muat ulang otomatis lain kali`,endOfDiff:`Anda telah mencapai akhir diff.`,analyzeBy:`Analisis dengan`,rules:`Aturan`,ai:`AI`,by:`oleh`,sharedBy:`Melihat analisis AI yang dibagikan oleh`,sharedAnalysis:`Melihat analisis bersama`,reviewedOf:`/ {total} ditinjau`,openInSite:`Buka di pulls.review`},a={reviewChanges:`Tinjau Perubahan`,updateUserscript:`Perbarui userscript`},o={loading:`Memuat pull request…`,loadFailed:`Tidak dapat memuat pull request`,open:`{n} terbuka`,search:`Filter pull request`,empty:`Tidak ada pull request yang terbuka`,noMatches:`Tidak ada pull request yang cocok dengan pencarian Anda`,searchingAll:`Mencari di semua {n} pull request terbuka…`,loadingMore:`Memuat lebih banyak…`,openedBy:`dibuka {time} oleh {author}`,milestone:`Milestone`,comments:`{n} komentar | {n} komentar`,linkedIssues:`{n} issue terkait | {n} issue terkait`,assignedTo:`Ditugaskan kepada {login}`,groups:`{n} grup | {n} grup`,viewedHint:`Dilihat di browser ini`,aiAvailable:`Analisis AI tersedia`,sort:{label:`Urutkan`,"recently-updated":`Baru diperbarui`,"least-recently-updated":`Paling lama diperbarui`,newest:`Terbaru`,oldest:`Terlama`,"most-commented":`Paling banyak komentar`,"least-commented":`Paling sedikit komentar`},review:{approved:`Disetujui`,changes_requested:`Perubahan diminta`,review_required:`Perlu review`},checks:{success:`Semua pemeriksaan lolos`,failure:`Beberapa pemeriksaan gagal`,pending:`Beberapa pemeriksaan belum selesai`}},s={setupKeys:`Atur API key`,analyzing:`Menganalisis…`,failed:`Analisis gagal`,failedTitle:`Analisis AI gagal: {message}`,reanalyze:`Analisis ulang`,withAi:`Analisis dengan AI`,statusTitle:`Analisis AI`,starting:`Memulai…`,thinking:`Berpikir… (langkah {step})`,reading:`Membaca {n} berkas: {first}`,organizing:`Menyusun grup…`,notConfigured:`Analisis AI belum dikonfigurasi: tambahkan token gateway atau API key penyedia di Pengaturan`,chatFailed:`Permintaan chat gagal`,agentSessionLost:`Agen tidak lagi memiliki percakapan ini. Analisis ulang untuk mengobrol.`},c={button:`Bagikan hasil`,updateButton:`Perbarui komentar yang dibagikan`,sharing:`Membagikan…`,tooltip:`Kirim analisis ini sebagai komentar di pull request agar orang lain dapat memuatnya`,needsToken:`Membagikan memerlukan token GitHub dengan akses tulis`,failed:`Gagal membagikan: {message}`,titleUpdate:`Perbarui analisis yang Anda bagikan`,titleShare:`Bagikan analisis ini di GitHub`,willUpdate:`{comment} Anda yang sudah ada di pull request ini akan diperbarui sebagai {user} dengan token GitHub Anda.`,willPost:`Komentar publik akan dikirim ke pull request ini sebagai {user} dengan token GitHub Anda.`,commentLink:`Komentar`,contains:`Komentar berisi:`,containsLink:`tautan untuk membuka tinjauan ini di {site}`,containsJson:`pengelompokan dan ringkasan analisis AI ini sebagai JSON di dalam blok yang dilipat`,excludes:`Pesan chat, API key, atau apa pun dari pengaturan Anda tidak akan disertakan.`,anyoneCanLoad:`Siapa pun yang melihat pull request dapat memuat analisis yang dibagikan.`,englishRecommended:`Jika Anda mengerjakan proyek publik, kami menyarankan membagikan hasil dalam bahasa Inggris agar bermanfaat bagi komunitas.`,share:`Bagikan`,update:`Perbarui`,shareAnyway:`Tetap bagikan`,updateAnyway:`Tetap perbarui`,loadReplaces:`Muat analisis AI yang dibagikan? Ini akan menggantikan milik Anda:`,available:`Analisis AI yang dibagikan untuk pull request ini tersedia:`,staleTitle:`Dianalisis sebelum commit terbaru`,outdated:`(usang)`,inLanguage:`Dianalisis dalam {language}`,notShared:`{login} belum membagikan analisis pull request ini.`},l={toggle:`Buka/tutup grup`,filesReviewed:`{reviewed} / {total} berkas ditinjau`,subgroupsOf:`subgrup dari`,hideSubgroups:`Sembunyikan subgrup`,showSubgroups:`Tampilkan subgrup`,navTabs:`Tampilkan grup sebagai tab`,navSidebar:`Tampilkan grup sebagai bilah samping`,uncategorized:`Tanpa kategori`,uncategorizedSummary:`Berkas yang tidak tercakup oleh analisis saat ini.`},u={critical:`Tinjau dengan cermat`},d={layoutTree:`Tampilkan berkas sebagai pohon`,layoutList:`Tampilkan berkas sebagai daftar`,markReviewed:`Tandai sudah ditinjau`,markFolderReviewed:`Tandai semua berkas di {name} sudah ditinjau`,changedSinceReviewed:`Berkas ini sudah pernah ditinjau, tetapi berubah di commit berikutnya`,resolved:`{n} terselesaikan`,binary:`Berkas biner`,binaryNotShown:`Berkas biner tidak ditampilkan.`,tooLarge:`Diff terlalu besar untuk ditampilkan.`,loadFailed:`Gagal memuat`,loadFull:`Muat isi berkas lengkap`,expand:`Buka berkas`,collapse:`Tutup berkas`,collapseMenu:`Buka atau tutup berkas`,expandAll:`Buka semua berkas`,collapseAll:`Tutup semua berkas`,collapseReviewed:`Tutup berkas yang sudah ditinjau`,noLongerInDiff:`Tidak lagi ada di diff ini`,removed:`dihapus`},f={title:`Progres tinjauan`,markAll:`Tandai semua sudah ditinjau`,reset:`Atur ulang status tinjauan`,invert:`Balik status tinjauan`,status:{reviewed:`Sudah ditinjau`,changed:`Berubah sejak ditinjau`,unreviewed:`Belum ditinjau`}},p={added:`ditambahkan`,removed:`dihapus`,modified:`diubah`,renamed:`diganti nama`,copied:`disalin`},m={open:`terbuka`,draft:`draf`,closed:`ditutup`,merged:`digabungkan`},h={ui:`UI`,api:`API`,core:`inti`,data:`data`,cli:`CLI`,security:`keamanan`,tests:`pengujian`,docs:`dokumentasi`,examples:`contoh`,deps:`dependensi`,build:`build`,scripts:`skrip`,config:`konfigurasi`,i18n:`i18n`,assets:`aset`,other:`lainnya`},g={addReview:`Tambah tinjauan`,hideComments:`Sembunyikan komentar tinjauan`,showComments:`Tampilkan komentar tinjauan`,reviews:`Tinjauan`,approved:`menyetujui`,changesRequested:`meminta perubahan`,commented:`berkomentar`,dismissed:`tinjauan dibatalkan`,reviewChanges:`Tinjau perubahan`,includesPending:`Pengiriman menyertakan {n} komentar tertunda Anda.`,summaryPlaceholder:`Tulis ringkasan (opsional untuk menyetujui)`,comment:`Komentar`,approve:`Setujui`,requestChanges:`Minta perubahan`,discard:`Buang tinjauan`,leaveComment:`Tulis komentar`,addSingle:`Tambah satu komentar`,addToReview:`Tambah komentar tinjauan`,startReview:`Mulai tinjauan`,pending:`Tertunda`,editComment:`Edit komentar`,deleteComment:`Hapus komentar`,replyPlaceholder:`Balas…`,resolve:`Selesaikan`},_={title:`Tanya tentang PR ini`,collapse:`Lipat`,reanalyzeToEnable:`Analisis ulang untuk mengaktifkan chat`,thinking:`Berpikir…`,placeholder:`Tanya tentang PR ini…`,updatedGrouping:`Pengelompokan diperbarui: {n} grup`,readFiles:`Membaca {n} berkas`,updatingGrouping:`Memperbarui pengelompokan…`,submittingGrouping:`Mengirim pengelompokan…`,requestFailed:`Permintaan gagal`,stopped:`dihentikan`},v={layout:`Tata letak diff`,wrapLines:`Bungkus baris`,unified:`Gabungan`,split:`Terpisah`,syntaxTheme:{label:`Tema sintaks`,light:`Mode terang`,dark:`Mode gelap`},cached:`Pull request di cache`,autoRefresh:`Muat ulang otomatis saat ada commit baru`,language:`Bahasa`,token:{label:`GitHub Personal Access Token`,optional:`Opsional untuk repositori publik; wajib untuk repositori privat atau untuk memberikan tinjauan.`,scopes:`Tinjauan memerlukan scope {repo} (token klasik) atau {fineGrained} (token fine-grained)`,storedLocally:`Hanya disimpan di browser ini.`,generate:`Buat di GitHub →`,fineGrained:`Token fine-grained (tanpa scope klasik)`,updated:`Diperbarui`,expires:`Berakhir`,neverExpires:`Tidak pernah berakhir`,change:`Ganti token`,checking:`Memeriksa token…`,couldNotVerify:`Token ini tidak dapat diverifikasi.`},tabs:{appearance:`Tampilan`,behavior:`Perilaku`,github:`GitHub`,ai:`Analisis AI`,notSetUp:`Belum diatur`},llm:{title:`Analisis AI`,description:`Konfigurasikan penyedia model untuk mengaktifkan ringkasan buatan AI. Hanya disimpan di browser ini dan hanya dikirim ke penyedia yang Anda pilih.`,provider:`Penyedia`,baseUrl:`URL dasar`,baseUrlDescription:`Endpoint chat completions apa pun yang kompatibel dengan OpenAI (OpenAI sendiri, server lokal, dll.).`,apiKey:`API key`,gatewayHint:`Token {link}, yang menjangkau semua vendor yang didukung dengan satu token.`,anthropicHint:`{link}, dipanggil langsung dari browser ini (tanpa gateway).`,anthropicLink:`API key Anthropic`,openaiHint:`API key untuk endpoint di atas.`,createKey:`Buat di {provider} →`,configured:`Terkonfigurasi`,changeKey:`Ganti kunci`,model:`Model`,modelListFailed:`Daftar model tidak dapat dimuat ({error}). Masukkan id model secara manual.`,embedUnavailable:`Fitur AI tidak tersedia dalam mode tersemat`,embedReason:`CSP github.com yang ketat memblokir permintaan yang dibutuhkan fitur AI di sini. {link} untuk menggunakannya.`,goToWebsite:`Kunjungi situs web`,agent:`Agen`,agentNeedsCli:"Agen lokal berjalan di CLI pulls.review: jalankan di sebuah repositori dengan `npx pulls.review` dan pilih di sana.",agentDetecting:`Mencari CLI agen…`,agentNone:`Tidak ada CLI agen ditemukan di mesin ini.`,agentHint:`Agen pengkodean yang terpasang di mesin ini, masuk dengan akunnya sendiri: {claude} atau {opencode}. Ia membaca patch dan repositori, tidak pernah menulis.`,agentPick:`Pilih agen…`},models:{placeholder:`id model`,loading:`Memuat model…`,search:`Cari model…`,noMatch:`Tidak ada model yang cocok`,useCustom:`Gunakan “{id}”`,free:`Gratis`,priceTitle:`Input {input}/M · Output {output}/M token`,agentDefault:`Bawaan agen`}},y={allFiles:`Semua berkas`,code:{label:`Kode`,summary:`Perubahan kode sumber.`},other:{label:`Lainnya`,summary:`Perubahan lain yang tidak cocok dengan kategori yang ada.`},docs:{label:`Dokumentasi`,summary:`Pembaruan dokumentasi.`},tests:{label:`Pengujian`,summary:`Cakupan pengujian untuk perubahan ini.`},config:{label:`Konfigurasi`,summary:`Perubahan konfigurasi.`},deps:{label:`Dependensi`,summary:`Perubahan versi dependensi.`},generated:{label:`Hasil generate`,summary:`Perubahan berkas hasil generate atau build.`}},b={tokenRequired:`Token GitHub diperlukan untuk menulis ke pull request ini.`,diffNotLoaded:`Diff belum selesai dimuat.`,noViewer:`Pengguna GitHub untuk token ini tidak dapat ditentukan.`,tokenRejected:`GitHub menolak token ini (401). Pastikan token ditempel lengkap dan belum dicabut.`,tooLarge:`Analisis terlalu besar untuk dibagikan sebagai komentar ({n} karakter).`},x={loading:`Memuat perubahan lokal…`,loadFailed:`Tidak dapat memuat perubahan ini`,auth:{title:`Masukkan kode dari terminal Anda`,hint:`pulls.review menampilkan kode 6 digit di terminal tempat ia berjalan.`,invalid:`Kode itu tidak berhasil. Periksa terminal dan coba lagi.`,submit:`Lanjutkan`},picker:{tagline:`Tinjau branch lokal, rentang, dan perubahan yang belum di-commit seperti pull request: dikelompokkan, diringkas, satu cakupan setiap kali.`,title:`Tinjau perubahan lokal`,base:`Basis`,head:`Head`,compare:`Bandingkan`,shortcuts:`Pintasan`,worktree:`Perubahan yang belum di-commit`,recentCommits:`Commit terbaru`,branches:`Branch`,against:`terhadap {base}`,current:`Branch saat ini`,github:`Atau pull request, perbandingan, atau commit GitHub`}},S={common:e,landing:t,guide:n,load:r,pr:i,embed:a,pulls:o,analyze:s,share:c,group:l,note:u,file:d,reviewProgress:f,fileStatus:p,prState:m,category:h,review:g,chat:_,settings:v,rules:y,errors:b,local:x};export{s as analyze,h as category,_ as chat,e as common,S as default,a as embed,b as errors,d as file,p as fileStatus,l as group,n as guide,t as landing,r as load,x as local,u as note,i as pr,m as prState,o as pulls,g as review,f as reviewProgress,y as rules,v as settings,c as share};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={cancel:`Annulla`,save:`Salva`,remove:`Rimuovi`,retry:`Riprova`,close:`Chiudi`,dismiss:`Ignora`,refresh:`Aggiorna`,settings:`Impostazioni`,you:`tu`,loading:`Caricamento…`,send:`Invia`,stop:`Ferma`,clear:`Svuota`,reply:`Rispondi`,submit:`Invia`,abort:`Interrompi`,rerun:`Riesegui`,files:`{n} file | {n} file`,subgroups:`{n} sottogruppo | {n} sottogruppi`,githubRepository:`Repository GitHub`,avatar:`Avatar di {login}`},t={dropHint:`Rilascia per caricare il tuo file diff / .patch`,tagline:`Raggruppa i file modificati, riassume ciò che conta e ti fa revisionare un ambito alla volta. Tutto funziona in locale nel tuo browser.`,documentTitle:`Revisioni delle pull request chiare e organizzate`,open:`Apri`,pasteHint:`Incolla l'URL di una pull request GitHub o scegli una demo qui sotto.`,recentlyViewed:`// visti di recente`,recentRepositories:`// repository visti di recente`,tryDemos:`// prova alcune demo`,demoBefore:`// prima`,demoAfter:`// dopo`,moreFiles:`... altri {n} file`,demoTitle:`feat: condividere un'analisi IA come commento della PR e caricare i risultati condivisi`,demoSummary:`Un revisore con API key pubblica la sua analisi nella PR; tutti gli altri la caricano senza token.`,demoGroups:{store:`Store delle analisi condivise e contratto del commento`,ui:`UI di condivisione del risultato`,refactor:`Refactor dello store: risultato alla radice`,tests:`Test`,docs:`Docs e dipendenze`},uploadTitle:`Revisiona un diff senza PR`,uploadDescription:`Carica o incolla un unified diff, oppure trascina un file {diff} / {patch} ovunque in questa pagina.`,uploadButton:`Carica un diff`,embedTitle:`Usalo integrato su github.com`,embedDescription:`Con {tampermonkey} o {violentmonkey} installato, un pannello pulls.review appare in ogni pagina di pull request.`,installUserscript:`Installa lo userscript`,bookmarkletTitle:`Passa da github.com a pulls.review`,bookmarkletDescription:`Non puoi installare estensioni? Trascina questo bookmarklet nella barra dei preferiti per aprire la pull request corrente su pulls.review, e tornare indietro.`,bookmarkletDrag:`Trascinami nella barra dei preferiti`,actionsTitle:`Configura l'analisi automatica con GitHub Actions`,actionsDescription:`Analizza ogni pull request una volta in CI e pubblica il risultato come commento, così ogni revisore non ha bisogno della propria chiave del modello.`,cliTitle:`Eseguilo sulle modifiche git locali con la CLI`,cliDescription:`Rivedi il working tree, un commit o un branch prima del push, raggruppati e riassunti come una PR.`,viewGuide:`Vedi la guida`},n={userscript:{title:`Usa pulls.review integrato su github.com`,intro:`Lo userscript aggiunge un pannello pulls.review direttamente alle pagine delle pull request su github.com, con file raggruppati e riassunti, così non devi cambiare scheda.`,manager:`Installa un gestore di userscript: {tampermonkey} o {violentmonkey}.`,install:`Installa lo userscript di pulls.review. Il gestore ti chiederà di confermare.`,open:`Apri una qualsiasi pull request su github.com e fai clic sulla scheda {tab} accanto a "Files changed".`,ai:`github.com blocca le richieste necessarie all'analisi IA, quindi il pannello mostra le analisi condivise come commenti della PR. Apri la PR su pulls.review per avviarne una nuova.`},bookmarklet:{title:`Passa da github.com a pulls.review`,intro:`Un bookmarklet è un preferito che esegue un piccolo script. Funziona in qualsiasi browser, senza estensioni da installare, e apre la pagina corrente sull'altro sito.`,bar:`Mostra la barra dei preferiti, ad esempio con {shortcut}.`,drag:`Trascina questo pulsante nella barra dei preferiti:`,use:`Su una pagina di pull request, commit o confronto su github.com, fai clic sul preferito per aprirla su pulls.review. Fai di nuovo clic per tornare indietro.`},actions:{title:`Analisi automatica con GitHub Actions`,intro:`Lascia che la CI analizzi ogni pull request una volta, appena viene aperta o aggiornata. Chiunque apra la PR, qui o nel pannello su github.com, vede subito lo stesso riassunto raggruppato. Nessuno ha bisogno della propria chiave del modello, e anche le pull request dai fork lo ricevono.`,secret:`Aggiungi la chiave del modello come secret del repository, ad esempio {name}.`,workflow:`Aggiungi questo workflow al repository:`,result:`Apri o aggiorna una pull request per provarlo. L'analisi arriva come commento, e le riesecuzioni su una PR invariata saltano la chiamata al modello.`,options:`Il {provider} viene dedotto dalla chiave. Imposta {provider}, {model} o {locale} per cambiarlo. Tutte le opzioni sono nel {readme}.`},cli:{title:`Rivedi le modifiche git locali con la CLI`,intro:`Rivedi la tua modifica prima di chiunque altro. La CLI apre in pulls.review il tuo branch, un commit o il lavoro non ancora committato, così vedi come si legge la modifica, raggruppata e riassunta, prima del push o di aprire una PR.`,branch:`In un repository git, esegui questo per rivedere il branch corrente rispetto al branch predefinito:`,target:`Oppure scegli cosa rivedere:`,browser:`Apre {url} nel browser per visualizzare le tue modifiche locali. Conferma la scheda con il codice monouso stampato nel terminale. Da lì puoi anche scegliere altri branch o commit da confrontare.`}},r={title:`Carica un diff`,description:`Incolla o trascina un file unified diff / .patch per revisionarlo.`,pasteLabel:`Incolla un unified diff / .patch`,chooseFile:`Oppure scegli un file .diff/.patch`,loadButton:`Carica diff`,parsing:`Analisi del diff…`,parseFailed:`Impossibile analizzare questo diff`,noDiff:`Nessun diff caricato`,noDiffHint:`Torna alla home e usa il pulsante di caricamento per incollare o trascinare un diff.`,goHome:`Vai alla home`},i={loading:`Caricamento della pull request…`,loadFailed:`Impossibile caricare questa pull request`,somethingWrong:`Qualcosa è andato storto`,newCommits:`Questa pull request ha nuovi commit da quando è stata memorizzata in cache.`,autoRefreshNextTime:`Aggiorna automaticamente la prossima volta`,endOfDiff:`Hai raggiunto la fine del diff.`,analyzeBy:`Analizza con`,rules:`Regole`,ai:`IA`,by:`di`,sharedBy:`Analisi IA condivisa da`,sharedAnalysis:`Analisi condivisa`,reviewedOf:`/ {total} revisionati`,openInSite:`Apri in pulls.review`},a={reviewChanges:`Revisiona le modifiche`,updateUserscript:`Aggiorna lo userscript`},o={loading:`Caricamento delle pull request…`,loadFailed:`Impossibile caricare le pull request`,open:`{n} aperte`,search:`Filtra le pull request`,empty:`Non ci sono pull request aperte`,noMatches:`Nessuna pull request corrisponde alla ricerca`,searchingAll:`Ricerca tra tutte le {n} pull request aperte…`,loadingMore:`Caricamento…`,openedBy:`aperta {time} da {author}`,milestone:`Milestone`,comments:`{n} commento | {n} commenti`,linkedIssues:`{n} issue collegata | {n} issue collegate`,assignedTo:`Assegnata a {login}`,groups:`{n} gruppo | {n} gruppi`,viewedHint:`Vista in questo browser`,aiAvailable:`Analisi IA disponibile`,sort:{label:`Ordina`,"recently-updated":`Aggiornate di recente`,"least-recently-updated":`Aggiornate meno di recente`,newest:`Più recenti`,oldest:`Più vecchie`,"most-commented":`Più commentate`,"least-commented":`Meno commentate`},review:{approved:`Approvata`,changes_requested:`Modifiche richieste`,review_required:`Revisione richiesta`},checks:{success:`Tutti i controlli superati`,failure:`Alcuni controlli non sono riusciti`,pending:`Alcuni controlli non sono ancora completati`}},s={setupKeys:`Configura le chiavi API`,analyzing:`Analisi in corso…`,failed:`Analisi fallita`,failedTitle:`Analisi IA fallita: {message}`,reanalyze:`Analizza di nuovo`,withAi:`Analizza con l'IA`,statusTitle:`Analisi IA`,starting:`Avvio…`,thinking:`Sto pensando… (passo {step})`,reading:`Lettura di {n} file: {first} | Lettura di {n} file: {first}`,organizing:`Organizzazione dei gruppi…`,notConfigured:`L'analisi IA non è configurata: aggiungi un token gateway o un'API key del fornitore nelle Impostazioni`,chatFailed:`Richiesta della chat fallita`,agentSessionLost:`L’agente non ha più questa conversazione. Rianalizza per chattare.`},c={button:`Condividi risultato`,updateButton:`Aggiorna il commento condiviso`,sharing:`Condivisione…`,tooltip:`Pubblica questa analisi come commento nella pull request così che altri possano caricarla`,needsToken:`Per condividere serve un token GitHub con accesso in scrittura`,failed:`Condivisione fallita: {message}`,titleUpdate:`Aggiorna la tua analisi condivisa`,titleShare:`Condividi questa analisi su GitHub`,willUpdate:`Il tuo {comment} esistente in questa pull request sarà aggiornato come {user} con il tuo token GitHub.`,willPost:`Un commento pubblico sarà pubblicato in questa pull request come {user} con il tuo token GitHub.`,commentLink:`commento`,contains:`Il commento contiene:`,containsLink:`un link per aprire questa revisione su {site}`,containsJson:`il raggruppamento e i riassunti di questa analisi IA come JSON in un blocco ripiegato`,excludes:`I tuoi messaggi di chat, le chiavi API o qualsiasi altro dato delle impostazioni non saranno inclusi.`,anyoneCanLoad:`Chiunque veda la pull request può caricare l'analisi condivisa.`,englishRecommended:`Se lavori a un progetto pubblico, ti consigliamo di condividere il risultato in inglese per renderlo utile alla community.`,share:`Condividi`,update:`Aggiorna`,shareAnyway:`Condividi comunque`,updateAnyway:`Aggiorna comunque`,loadReplaces:`Caricare un'analisi IA condivisa? Sostituirà la tua:`,available:`Analisi IA condivise disponibili per questa pull request:`,staleTitle:`Analizzata prima degli ultimi commit`,outdated:`(obsoleta)`,inLanguage:`Analizzata in {language}`,notShared:`{login} non ha condiviso un'analisi di questa pull request.`},l={toggle:`Espandi o comprimi il gruppo`,filesReviewed:`{reviewed} / {total} file revisionati`,subgroupsOf:`sottogruppi di`,hideSubgroups:`Nascondi sottogruppi`,showSubgroups:`Mostra sottogruppi`,navTabs:`Mostra i gruppi come schede`,navSidebar:`Mostra i gruppi come barra laterale`,uncategorized:`Non categorizzati`,uncategorizedSummary:`File non coperti dall'analisi attuale.`},u={critical:`Rivedere con attenzione`},d={layoutTree:`Mostra i file come albero`,layoutList:`Mostra i file come elenco`,markReviewed:`Segna come revisionato`,markFolderReviewed:`Segna tutti i file in {name} come revisionati`,changedSinceReviewed:`Questo file era già stato revisionato, ma è cambiato in commit successivi`,resolved:`{n} risolti`,binary:`File binario`,binaryNotShown:`File binario non mostrato.`,tooLarge:`Diff troppo grande per essere mostrato.`,loadFailed:`Caricamento fallito`,loadFull:`Carica il contenuto completo del file`,expand:`Espandi file`,collapse:`Comprimi file`,collapseMenu:`Espandi o comprimi file`,expandAll:`Espandi tutti i file`,collapseAll:`Comprimi tutti i file`,collapseReviewed:`Comprimi i file revisionati`,noLongerInDiff:`Non è più in questo diff`,removed:`rimosso`},f={title:`Avanzamento della revisione`,markAll:`Segna tutti come revisionati`,reset:`Reimposta lo stato di revisione`,invert:`Inverti lo stato di revisione`,status:{reviewed:`Revisionato`,changed:`Cambiato dopo la revisione`,unreviewed:`Non revisionato`}},p={added:`aggiunto`,removed:`rimosso`,modified:`modificato`,renamed:`rinominato`,copied:`copiato`},m={open:`aperta`,draft:`bozza`,closed:`chiusa`,merged:`unita`},h={ui:`UI`,api:`API`,core:`core`,data:`dati`,cli:`CLI`,security:`sicurezza`,tests:`test`,docs:`documentazione`,examples:`esempi`,deps:`dipendenze`,build:`build`,scripts:`script`,config:`configurazione`,i18n:`i18n`,assets:`risorse`,other:`altro`},g={addReview:`Aggiungi revisione`,hideComments:`Nascondi i commenti di revisione`,showComments:`Mostra i commenti di revisione`,reviews:`Revisioni`,approved:`ha approvato`,changesRequested:`ha richiesto modifiche`,commented:`ha commentato`,dismissed:`revisione respinta`,reviewChanges:`Revisiona le modifiche`,includesPending:`L'invio include il tuo {n} commento in sospeso. | L'invio include i tuoi {n} commenti in sospeso.`,summaryPlaceholder:`Lascia un riepilogo (facoltativo per approvare)`,comment:`Commenta`,approve:`Approva`,requestChanges:`Richiedi modifiche`,discard:`Scarta revisione`,leaveComment:`Lascia un commento`,addSingle:`Aggiungi commento singolo`,addToReview:`Aggiungi commento di revisione`,startReview:`Inizia una revisione`,pending:`In sospeso`,editComment:`Modifica commento`,deleteComment:`Elimina commento`,replyPlaceholder:`Rispondi…`,resolve:`Risolvi`},_={title:`Chiedi su questa PR`,collapse:`Riduci`,reanalyzeToEnable:`Analizza di nuovo per abilitare la chat`,thinking:`Sto pensando…`,placeholder:`Chiedi su questa PR…`,updatedGrouping:`Raggruppamento aggiornato: {n} gruppi`,readFiles:`Letto {n} file | Letti {n} file`,updatingGrouping:`Aggiornamento del raggruppamento…`,submittingGrouping:`Invio del raggruppamento…`,requestFailed:`Richiesta fallita`,stopped:`fermato`},v={layout:`Layout del diff`,wrapLines:`Vai a capo automaticamente`,unified:`Unificato`,split:`Affiancato`,syntaxTheme:{label:`Tema della sintassi`,light:`Modalità chiara`,dark:`Modalità scura`},cached:`Pull request in cache`,autoRefresh:`Aggiorna automaticamente quando vengono trovati nuovi commit`,language:`Lingua`,token:{label:`Token di accesso personale GitHub`,optional:`Facoltativo per i repository pubblici; necessario per i repository privati o per lasciare revisioni.`,scopes:`Le revisioni richiedono lo scope {repo} (token classico) o {fineGrained} (token granulare)`,storedLocally:`Salvato solo in questo browser.`,generate:`Generane uno su GitHub →`,fineGrained:`Token granulare (senza scope classici)`,updated:`Aggiornato`,expires:`Scade`,neverExpires:`Non scade mai`,change:`Cambia token`,checking:`Verifica del token…`,couldNotVerify:`Impossibile verificare questo token.`},tabs:{appearance:`Aspetto`,behavior:`Comportamento`,github:`GitHub`,ai:`Analisi IA`,notSetUp:`Non ancora configurato`},llm:{title:`Analisi IA`,description:`Configura un fornitore di modelli per abilitare i riassunti generati dall'IA. Salvato solo in questo browser e inviato solo al fornitore che scegli.`,provider:`Fornitore`,baseUrl:`URL base`,baseUrlDescription:`Qualsiasi endpoint chat completions compatibile con OpenAI (OpenAI stessa, un server locale, ecc.).`,apiKey:`API key`,gatewayHint:`Un token {link}, che raggiunge tutti i vendor supportati con un solo token.`,anthropicHint:`Una {link}, chiamata direttamente da questo browser (senza gateway).`,anthropicLink:`API key Anthropic`,openaiHint:`L'API key per l'endpoint indicato sopra.`,createKey:`Creane una su {provider} →`,configured:`Configurata`,changeKey:`Cambia chiave`,model:`Modello`,modelListFailed:`Impossibile caricare l'elenco dei modelli ({error}). Inserisci un id di modello manualmente.`,embedUnavailable:`Le funzioni IA non sono disponibili in modalità incorporata`,embedReason:`La rigida CSP di github.com blocca le richieste necessarie alle funzioni IA. {link} per usarle.`,goToWebsite:`Vai al sito`,agent:`Agente`,agentNeedsCli:"Gli agenti locali girano nella CLI di pulls.review: avviala in un repository con `npx pulls.review` e scegline uno lì.",agentDetecting:`Ricerca delle CLI degli agenti…`,agentNone:`Nessuna CLI di agente trovata su questa macchina.`,agentHint:`Un agente di codice installato su questa macchina, con il proprio account: {claude} o {opencode}. Legge la patch e il repository, non scrive mai.`,agentPick:`Scegli un agente…`},models:{placeholder:`id del modello`,loading:`Caricamento dei modelli…`,search:`Cerca modelli…`,noMatch:`Nessun modello corrispondente`,useCustom:`Usa “{id}”`,free:`Gratis`,priceTitle:`Input {input}/M · Output {output}/M token`,agentDefault:`Predefinito dell’agente`}},y={allFiles:`Tutti i file`,code:{label:`Codice`,summary:`Modifiche al codice sorgente.`},other:{label:`Altro`,summary:`Altre modifiche che non rientrano in una categoria esistente.`},docs:{label:`Documentazione`,summary:`Aggiornamenti della documentazione.`},tests:{label:`Test`,summary:`Copertura dei test per la modifica.`},config:{label:`Configurazione`,summary:`Modifiche di configurazione.`},deps:{label:`Dipendenze`,summary:`Modifiche di versione delle dipendenze.`},generated:{label:`Generati`,summary:`Modifiche a file generati o di build.`}},b={tokenRequired:`Serve un token GitHub per scrivere in questa pull request.`,diffNotLoaded:`Il diff non ha ancora finito di caricarsi.`,noViewer:`Impossibile determinare l'utente GitHub di questo token.`,tokenRejected:`GitHub ha rifiutato questo token (401). Controlla che sia stato incollato per intero e che non sia stato revocato.`,tooLarge:`L'analisi è troppo grande per essere condivisa come commento ({n} caratteri).`},x={loading:`Caricamento delle modifiche locali…`,loadFailed:`Impossibile caricare queste modifiche`,auth:{title:`Inserisci il codice dal terminale`,hint:`pulls.review ha stampato un codice di 6 cifre nel terminale in cui è in esecuzione.`,invalid:`Quel codice non ha funzionato. Controlla il terminale e riprova.`,submit:`Continua`},picker:{tagline:`Revisiona branch locali, intervalli e modifiche non committate come una pull request: raggruppati, riassunti, un ambito alla volta.`,title:`Revisiona le modifiche locali`,base:`Base`,head:`Head`,compare:`Confronta`,shortcuts:`Scorciatoie`,worktree:`Modifiche non committate`,recentCommits:`Commit recenti`,branches:`Branch`,against:`rispetto a {base}`,current:`Branch attuale`,github:`Oppure una pull request, un confronto o un commit GitHub`}},S={common:e,landing:t,guide:n,load:r,pr:i,embed:a,pulls:o,analyze:s,share:c,group:l,note:u,file:d,reviewProgress:f,fileStatus:p,prState:m,category:h,review:g,chat:_,settings:v,rules:y,errors:b,local:x};export{s as analyze,h as category,_ as chat,e as common,S as default,a as embed,b as errors,d as file,p as fileStatus,l as group,n as guide,t as landing,r as load,x as local,u as note,i as pr,m as prState,o as pulls,g as review,f as reviewProgress,y as rules,v as settings,c as share};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={cancel:`キャンセル`,save:`保存`,remove:`削除`,retry:`再試行`,close:`閉じる`,dismiss:`閉じる`,refresh:`更新`,settings:`設定`,you:`あなた`,loading:`読み込み中…`,send:`送信`,stop:`停止`,clear:`クリア`,reply:`返信`,submit:`送信`,abort:`中止`,rerun:`再実行`,files:`{n} ファイル`,subgroups:`{n} サブグループ`,githubRepository:`GitHub リポジトリ`,avatar:`{login} のアバター`},t={dropHint:`ドロップして diff / .patch ファイルを読み込む`,tagline:`変更ファイルをグループ化し、要点を要約して、スコープごとにレビュー。すべてブラウザ内でローカルに動作します。`,documentTitle:`プルリクエストのレビューを、明快に、整理して`,open:`開く`,pasteHint:`GitHub の pull request URL を貼り付けるか、下のデモを選んでください。`,recentlyViewed:`// 最近見たもの`,recentRepositories:`// 最近見たリポジトリ`,tryDemos:`// デモを試す`,demoBefore:`// 変更前`,demoAfter:`// 変更後`,moreFiles:`... 他 {n} ファイル`,demoTitle:`feat: AI 分析を PR コメントとして共有し、共有結果を読み込む`,demoSummary:`API キーを持つレビュアー 1 人が分析を PR に投稿すれば、他の全員がトークンなしで読み込めます。`,demoGroups:{store:`共有分析ストアとコメント契約`,ui:`結果共有 UI`,refactor:`ストア再構成:結果をルートへ`,tests:`テスト`,docs:`ドキュメントと依存関係`},uploadTitle:`PR なしで diff をレビュー`,uploadDescription:`unified diff をアップロードまたは貼り付けるか、{diff} / {patch} ファイルをこのページのどこかにドロップしてください。`,uploadButton:`diff をアップロード`,embedTitle:`github.com に埋め込んで使う`,embedDescription:`{tampermonkey} または {violentmonkey} をインストールすると、すべての pull request ページに pulls.review のドロワーが表示されます。`,installUserscript:`ユーザースクリプトをインストール`,bookmarkletTitle:`github.com と pulls.review を行き来する`,bookmarkletDescription:`拡張機能をインストールできない場合は、このブックマークレットをブックマークバーにドラッグしてください。現在のプルリクエストを pulls.review で開き、また戻れます。`,bookmarkletDrag:`ブックマークバーにドラッグ`,actionsTitle:`GitHub Actions で自動解析を設定する`,actionsDescription:`CI で各プルリクエストを一度だけ解析し、結果を PR コメントとして投稿します。レビュアーごとにモデルのキーを用意する必要はありません。`,cliTitle:`CLI でローカルの git の変更に使う`,cliDescription:`push する前に、ワーキングツリー・コミット・ブランチを PR と同じようにグループ化・要約してレビューできます。`,viewGuide:`ガイドを見る`},n={userscript:{title:`pulls.review を github.com に埋め込んで使う`,intro:`ユーザースクリプトは github.com のプルリクエストページに pulls.review のパネルを直接追加し、グループ化されたファイルと要約を表示します。タブを切り替える必要はありません。`,manager:`ユーザースクリプトマネージャーをインストールします: {tampermonkey} または {violentmonkey}。`,install:`pulls.review のユーザースクリプトをインストールします。マネージャーが確認を求めます。`,open:`github.com で任意のプルリクエストを開き、"Files changed" の隣にある {tab} タブをクリックします。`,ai:`github.com は AI 解析に必要なリクエストをブロックするため、パネルには PR コメントとして共有された解析が表示されます。新しく解析するには pulls.review で PR を開いてください。`},bookmarklet:{title:`github.com と pulls.review を行き来する`,intro:`ブックマークレットは小さなスクリプトを実行するブックマークです。拡張機能なしでどのブラウザでも動作し、表示中のページをもう一方のサイトで開きます。`,bar:`ブックマークバーを表示します(例: {shortcut})。`,drag:`このボタンをブックマークバーにドラッグします:`,use:`github.com のプルリクエスト、コミット、比較ページでブックマークをクリックすると pulls.review で開きます。もう一度クリックすると戻ります。`},actions:{title:`GitHub Actions で自動解析`,intro:`プルリクエストが作成・更新されるたびに、CI が一度だけ解析します。PR を開いた人は、ここでも github.com のパネルでも、同じグループ化された要約をすぐに確認できます。各自のモデルのキーは不要で、フォークからのプルリクエストにも対応します。`,secret:`モデルのキーをリポジトリのシークレットとして追加します (例: {name})。`,workflow:`このワークフローをリポジトリに追加します:`,result:`プルリクエストを作成・更新して試してみましょう。解析結果はコメントとして届き、変更のない PR で再実行してもモデルは呼び出されません。`,options:`{provider} はキーから推定されます。上書きするには {provider}、{model}、{locale} を指定します。すべてのオプションは {readme} を参照してください。`},cli:{title:`CLI でローカルの git の変更をレビュー`,intro:`誰かにレビューされる前に、自分の変更を見直しましょう。CLI はブランチ、コミット、未コミットの作業を pulls.review で開きます。push や PR 作成の前に、変更がグループ化・要約されてどう見えるかを確認できます。`,branch:`git リポジトリ内でこれを実行すると、現在のブランチをデフォルトブランチと比較してレビューできます:`,target:`または、レビューする対象を選べます:`,browser:`ブラウザで {url} が開き、ローカルの変更を可視化します。ターミナルに表示されたワンタイムコードでタブを確認してください。そこから他のブランチやコミットを選んで比較することもできます。`}},r={title:`diff を読み込む`,description:`unified diff / .patch ファイルを貼り付けるかドロップしてレビューします。`,pasteLabel:`unified diff / .patch を貼り付け`,chooseFile:`または .diff/.patch ファイルを選択`,loadButton:`diff を読み込む`,parsing:`diff を解析中…`,parseFailed:`この diff を解析できませんでした`,noDiff:`diff が読み込まれていません`,noDiffHint:`ホームページに戻り、アップロードボタンから diff を貼り付けるかドロップしてください。`,goHome:`ホームへ`},i={loading:`pull request を読み込み中…`,loadFailed:`この pull request を読み込めませんでした`,somethingWrong:`問題が発生しました`,newCommits:`キャッシュ後にこの pull request に新しいコミットがあります。`,autoRefreshNextTime:`次回から自動更新`,endOfDiff:`diff の末尾に到達しました。`,analyzeBy:`分析方法`,rules:`ルール`,ai:`AI`,by:`作成者`,sharedBy:`共有された AI 分析を表示中:`,sharedAnalysis:`共有された分析を表示中`,reviewedOf:`/ {total} レビュー済み`,openInSite:`pulls.review で開く`},a={reviewChanges:`変更をレビュー`,updateUserscript:`ユーザースクリプトを更新`},o={loading:`pull request を読み込み中…`,loadFailed:`pull request を読み込めませんでした`,open:`{n} 件オープン`,search:`pull request を絞り込む`,empty:`オープンな pull request はありません`,noMatches:`検索に一致する pull request はありません`,searchingAll:`{n} 件のオープンな pull request をすべて検索中…`,loadingMore:`さらに読み込み中…`,openedBy:`{author} が {time}に作成`,milestone:`マイルストーン`,comments:`{n} 件のコメント`,linkedIssues:`{n} 件の関連 issue`,assignedTo:`{login} に割り当て`,groups:`{n} グループ`,viewedHint:`このブラウザで閲覧済み`,aiAvailable:`AI 分析あり`,sort:{label:`並べ替え`,"recently-updated":`最近更新された順`,"least-recently-updated":`更新が古い順`,newest:`新しい順`,oldest:`古い順`,"most-commented":`コメントが多い順`,"least-commented":`コメントが少ない順`},review:{approved:`承認済み`,changes_requested:`変更が要求されています`,review_required:`レビューが必要`},checks:{success:`すべてのチェックに合格`,failure:`一部のチェックが失敗`,pending:`一部のチェックが未完了`}},s={setupKeys:`API キーを設定`,analyzing:`分析中…`,failed:`分析に失敗`,failedTitle:`AI 分析に失敗しました:{message}`,reanalyze:`再分析`,withAi:`AI で分析`,statusTitle:`AI 分析`,starting:`開始中…`,thinking:`思考中…(ステップ {step})`,reading:`{n} ファイルを読み取り中:{first}`,organizing:`グループを整理中…`,notConfigured:`AI 分析が設定されていません:設定で gateway トークンまたはベンダーの API キーを追加してください`,chatFailed:`チャットのリクエストに失敗しました`,agentSessionLost:`エージェントはこの会話を保持していません。再分析するとチャットできます。`},c={button:`結果を共有`,updateButton:`共有コメントを更新`,sharing:`共有中…`,tooltip:`この分析を pull request のコメントとして投稿し、他の人が読み込めるようにします`,needsToken:`共有には書き込み権限のある GitHub トークンが必要です`,failed:`共有に失敗しました:{message}`,titleUpdate:`共有した分析を更新`,titleShare:`この分析を GitHub で共有`,willUpdate:`この pull request 上の既存の{comment}を、あなたの GitHub トークンで {user} として更新します。`,willPost:`この pull request に、あなたの GitHub トークンで {user} として公開コメントを投稿します。`,commentLink:`コメント`,contains:`コメントの内容:`,containsLink:`{site} でこのレビューを開くリンク`,containsJson:`この AI 分析のグループ分けと要約(折りたたみブロック内の JSON)`,excludes:`チャットのメッセージ、API キー、その他設定の内容は含まれません。`,anyoneCanLoad:`この pull request を見る誰でも共有された分析を読み込めます。`,englishRecommended:`公開プロジェクトで作業している場合は、コミュニティの役に立つよう英語で結果を共有することをおすすめします。`,share:`共有`,update:`更新`,shareAnyway:`このまま共有`,updateAnyway:`このまま更新`,loadReplaces:`共有された AI 分析を読み込みますか?あなたの分析は置き換えられます:`,available:`この pull request に共有された AI 分析があります:`,staleTitle:`最新のコミットより前に分析`,outdated:`(古い)`,inLanguage:`{language}で分析`,notShared:`{login} はこの pull request の分析を共有していません。`},l={toggle:`グループを開閉`,filesReviewed:`{reviewed} / {total} ファイルをレビュー済み`,subgroupsOf:`サブグループ:`,hideSubgroups:`サブグループを隠す`,showSubgroups:`サブグループを表示`,navTabs:`グループをタブで表示`,navSidebar:`グループをサイドバーで表示`,uncategorized:`未分類`,uncategorizedSummary:`現在の分析に含まれていないファイル。`},u={critical:`慎重にレビュー`},d={layoutTree:`ファイルをツリーで表示`,layoutList:`ファイルをリストで表示`,markReviewed:`レビュー済みにする`,markFolderReviewed:`{name} 内のすべてのファイルをレビュー済みにする`,changedSinceReviewed:`このファイルはレビュー済みでしたが、その後のコミットで変更されました`,resolved:`{n} 件解決済み`,binary:`バイナリファイル`,binaryNotShown:`バイナリファイルは表示されません。`,tooLarge:`差分が大きすぎるため表示できません。`,loadFailed:`読み込み失敗`,loadFull:`ファイル全体を読み込む`,expand:`ファイルを展開`,collapse:`ファイルを折りたたむ`,collapseMenu:`ファイルの展開/折りたたみ`,expandAll:`すべてのファイルを展開`,collapseAll:`すべてのファイルを折りたたむ`,collapseReviewed:`レビュー済みのファイルを折りたたむ`,noLongerInDiff:`この diff にはもう含まれていません`,removed:`削除済み`},f={title:`レビューの進捗`,markAll:`すべてレビュー済みにする`,reset:`レビュー状態をリセット`,invert:`レビュー状態を反転`,status:{reviewed:`レビュー済み`,changed:`レビュー後に変更あり`,unreviewed:`未レビュー`}},p={added:`追加`,removed:`削除`,modified:`変更`,renamed:`リネーム`,copied:`コピー`},m={open:`オープン`,draft:`ドラフト`,closed:`クローズ`,merged:`マージ済み`},h={ui:`UI`,api:`API`,core:`コア`,data:`データ`,cli:`CLI`,security:`セキュリティ`,tests:`テスト`,docs:`ドキュメント`,examples:`サンプル`,deps:`依存関係`,build:`ビルド`,scripts:`スクリプト`,config:`設定`,i18n:`i18n`,assets:`アセット`,other:`その他`},g={addReview:`レビューを追加`,hideComments:`レビューコメントを隠す`,showComments:`レビューコメントを表示`,reviews:`レビュー`,approved:`承認`,changesRequested:`変更をリクエスト`,commented:`コメント`,dismissed:`レビューを取り下げ`,reviewChanges:`変更をレビュー`,includesPending:`送信には保留中のコメント {n} 件が含まれます。`,summaryPlaceholder:`まとめを書く(承認の場合は省略可)`,comment:`コメント`,approve:`承認`,requestChanges:`変更をリクエスト`,discard:`レビューを破棄`,leaveComment:`コメントを書く`,addSingle:`単独コメントを追加`,addToReview:`レビューコメントを追加`,startReview:`レビューを開始`,pending:`保留中`,editComment:`コメントを編集`,deleteComment:`コメントを削除`,replyPlaceholder:`返信…`,resolve:`解決済みにする`},_={title:`この PR について質問`,collapse:`折りたたむ`,reanalyzeToEnable:`チャットを有効にするには再分析してください`,thinking:`思考中…`,placeholder:`この PR について質問…`,updatedGrouping:`グループ分けを更新:{n} グループ`,readFiles:`{n} ファイルを読み取り`,updatingGrouping:`グループ分けを更新中…`,submittingGrouping:`グループ分けを送信中…`,requestFailed:`リクエストに失敗しました`,stopped:`停止`},v={layout:`diff レイアウト`,wrapLines:`行を折り返す`,unified:`統合`,split:`分割`,syntaxTheme:{label:`シンタックステーマ`,light:`ライトモード`,dark:`ダークモード`},cached:`キャッシュされた pull request`,autoRefresh:`新しいコミットが見つかったら自動更新`,language:`言語`,token:{label:`GitHub 個人アクセストークン`,optional:`公開リポジトリでは任意。非公開リポジトリやレビュー投稿には必須です。`,scopes:`レビューには {repo} スコープ(クラシックトークン)または {fineGrained}(fine-grained トークン)が必要です`,storedLocally:`このブラウザにのみ保存されます。`,generate:`GitHub で生成 →`,fineGrained:`fine-grained トークン(クラシックスコープなし)`,updated:`更新`,expires:`有効期限`,neverExpires:`無期限`,change:`トークンを変更`,checking:`トークンを確認中…`,couldNotVerify:`このトークンを検証できませんでした。`},tabs:{appearance:`外観`,behavior:`動作`,github:`GitHub`,ai:`AI 分析`,notSetUp:`未設定`},llm:{title:`AI 分析`,description:`モデルプロバイダーを設定すると AI 生成の要約が有効になります。このブラウザにのみ保存され、選択したプロバイダーにのみ送信されます。`,provider:`プロバイダー`,baseUrl:`Base URL`,baseUrlDescription:`OpenAI 互換の chat completions エンドポイント(OpenAI 本体、ローカルサーバーなど)。`,apiKey:`API キー`,gatewayHint:`{link} のトークン。1 つのトークンで対応するすべてのベンダーにアクセスできます。`,anthropicHint:`{link}。このブラウザから直接呼び出します(gateway なし)。`,anthropicLink:`Anthropic API キー`,openaiHint:`上記エンドポイントの API キー。`,createKey:`{provider} で作成 →`,configured:`設定済み`,changeKey:`キーを変更`,model:`モデル`,modelListFailed:`モデル一覧を読み込めませんでした({error})。モデル id を手動で入力してください。`,embedUnavailable:`埋め込みモードでは AI 機能を利用できません`,embedReason:`github.com の厳しい CSP により、AI 機能に必要なリクエストがブロックされます。利用するには{link}。`,goToWebsite:`ウェブサイトへ`,agent:`エージェント`,agentNeedsCli:"ローカルエージェントは pulls.review CLI で動作します。リポジトリ内で `npx pulls.review` を起動し、そこで選択してください。",agentDetecting:`エージェント CLI を検索中…`,agentNone:`このマシンにエージェント CLI が見つかりません。`,agentHint:`このマシンにインストールされ、自身のアカウントでサインイン済みのコーディングエージェント({claude} または {opencode})。パッチとリポジトリを読むだけで、書き込みはしません。`,agentPick:`エージェントを選択…`},models:{placeholder:`モデル id`,loading:`モデルを読み込み中…`,search:`モデルを検索…`,noMatch:`一致するモデルがありません`,useCustom:`「{id}」を使う`,free:`無料`,priceTitle:`入力 {input}/M · 出力 {output}/M トークン`,agentDefault:`エージェントの既定`}},y={allFiles:`すべてのファイル`,code:{label:`コード`,summary:`ソースコードの変更。`},other:{label:`その他`,summary:`既存の分類に当てはまらないその他の変更。`},docs:{label:`ドキュメント`,summary:`ドキュメントの更新。`},tests:{label:`テスト`,summary:`この変更に対するテスト。`},config:{label:`設定`,summary:`設定の変更。`},deps:{label:`依存関係`,summary:`依存関係のバージョン変更。`},generated:{label:`生成物`,summary:`生成物やビルド成果物の変更。`}},b={tokenRequired:`この pull request に書き込むには GitHub トークンが必要です。`,diffNotLoaded:`diff の読み込みがまだ完了していません。`,noViewer:`このトークンの GitHub ユーザーを特定できませんでした。`,tokenRejected:`GitHub がこのトークンを拒否しました(401)。完全に貼り付けられているか、取り消されていないか確認してください。`,tooLarge:`分析が大きすぎてコメントとして共有できません({n} 文字)。`},x={loading:`ローカルの変更を読み込み中…`,loadFailed:`これらの変更を読み込めませんでした`,auth:{title:`ターミナルに表示されたコードを入力`,hint:`pulls.review は実行中のターミナルに 6 桁のコードを表示しました。`,invalid:`このコードは使用できませんでした。ターミナルを確認して、もう一度お試しください。`,submit:`続ける`},picker:{tagline:`ローカルのブランチ、範囲、未コミットの変更をプルリクエストのようにレビュー。グループ化して要約し、1 つずつ確認できます。`,title:`ローカルの変更をレビュー`,base:`ベース`,head:`ヘッド`,compare:`比較`,shortcuts:`ショートカット`,worktree:`コミットされていない変更`,recentCommits:`最近のコミット`,branches:`ブランチ`,against:`{base} に対して`,current:`チェックアウト中`,github:`または GitHub のプルリクエスト・比較・コミット`}},S={common:e,landing:t,guide:n,load:r,pr:i,embed:a,pulls:o,analyze:s,share:c,group:l,note:u,file:d,reviewProgress:f,fileStatus:p,prState:m,category:h,review:g,chat:_,settings:v,rules:y,errors:b,local:x};export{s as analyze,h as category,_ as chat,e as common,S as default,a as embed,b as errors,d as file,p as fileStatus,l as group,n as guide,t as landing,r as load,x as local,u as note,i as pr,m as prState,o as pulls,g as review,f as reviewProgress,y as rules,v as settings,c as share};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={cancel:`취소`,save:`저장`,remove:`제거`,retry:`다시 시도`,close:`닫기`,dismiss:`닫기`,refresh:`새로 고침`,settings:`설정`,you:`나`,loading:`불러오는 중…`,send:`보내기`,stop:`중지`,clear:`지우기`,reply:`답글`,submit:`제출`,abort:`중단`,rerun:`다시 실행`,files:`파일 {n}개`,subgroups:`하위 그룹 {n}개`,githubRepository:`GitHub 저장소`,avatar:`{login}의 아바타`},t={dropHint:`diff / .patch 파일을 놓아 불러오기`,tagline:`변경된 파일을 묶고 핵심을 요약해, 한 범위씩 리뷰합니다. 모든 것이 브라우저에서 로컬로 동작합니다.`,documentTitle:`명확하고 체계적인 풀 리퀘스트 리뷰`,open:`열기`,pasteHint:`GitHub pull request URL을 붙여 넣거나 아래 데모를 선택하세요.`,recentlyViewed:`// 최근 본 항목`,recentRepositories:`// 최근 본 저장소`,tryDemos:`// 데모 살펴보기`,demoBefore:`// 이전`,demoAfter:`// 이후`,moreFiles:`... 파일 {n}개 더`,demoTitle:`feat: AI 분석을 PR 댓글로 공유하고 공유된 결과 불러오기`,demoSummary:`API 키가 있는 리뷰어 한 명이 분석을 PR에 게시하면, 다른 모든 사람이 토큰 없이 불러올 수 있습니다.`,demoGroups:{store:`공유 분석 스토어 및 댓글 계약`,ui:`결과 공유 UI`,refactor:`스토어 리팩터링: 결과를 루트로`,tests:`테스트`,docs:`문서 및 의존성`},uploadTitle:`PR 없이 diff 리뷰하기`,uploadDescription:`unified diff를 업로드하거나 붙여 넣거나, {diff} / {patch} 파일을 이 페이지 어디든 놓으세요.`,uploadButton:`diff 업로드`,embedTitle:`github.com에 임베드해서 사용`,embedDescription:`{tampermonkey} 또는 {violentmonkey}를 설치하면 모든 pull request 페이지에 pulls.review 서랍이 나타납니다.`,installUserscript:`유저스크립트 설치`,bookmarkletTitle:`github.com과 pulls.review 간 이동`,bookmarkletDescription:`확장 프로그램을 설치할 수 없나요? 이 북마크릿을 북마크바로 드래그하면 현재 풀 리퀘스트를 pulls.review에서 열고 다시 돌아갈 수 있습니다.`,bookmarkletDrag:`북마크바로 드래그하세요`,actionsTitle:`GitHub Actions로 자동 분석 설정`,actionsDescription:`CI에서 모든 풀 리퀘스트를 한 번 분석하고 결과를 PR 댓글로 게시하므로, 리뷰어마다 모델 키가 필요하지 않습니다.`,cliTitle:`CLI로 로컬 git 변경 사항에 실행`,cliDescription:`push하기 전에 작업 트리, 커밋, 브랜치를 PR처럼 그룹화하고 요약해서 리뷰하세요.`,viewGuide:`가이드 보기`},n={userscript:{title:`github.com에 임베드해서 pulls.review 사용`,intro:`유저스크립트는 github.com의 풀 리퀘스트 페이지에 pulls.review 패널을 바로 추가해 그룹화된 파일과 요약을 보여 주므로, 탭을 바꿀 필요가 없습니다.`,manager:`유저스크립트 관리자를 설치하세요: {tampermonkey} 또는 {violentmonkey}.`,install:`pulls.review 유저스크립트를 설치하세요. 관리자가 확인을 요청합니다.`,open:`github.com에서 아무 풀 리퀘스트나 열고 "Files changed" 옆의 {tab} 탭을 클릭하세요.`,ai:`github.com은 AI 분석에 필요한 요청을 차단하므로, 패널에는 PR 댓글로 공유된 분석이 표시됩니다. 새로 분석하려면 pulls.review에서 PR을 여세요.`},bookmarklet:{title:`github.com과 pulls.review 간 이동`,intro:`북마크릿은 작은 스크립트를 실행하는 북마크입니다. 확장 프로그램 없이 모든 브라우저에서 동작하며, 현재 페이지를 다른 사이트에서 엽니다.`,bar:`북마크바를 표시하세요. 예: {shortcut}`,drag:`이 버튼을 북마크바로 드래그하세요:`,use:`github.com의 풀 리퀘스트, 커밋 또는 비교 페이지에서 북마크를 클릭하면 pulls.review에서 열립니다. 다시 클릭하면 돌아갑니다.`},actions:{title:`GitHub Actions로 자동 분석`,intro:`풀 리퀘스트가 열리거나 업데이트될 때마다 CI가 한 번만 분석합니다. 여기서든 github.com 패널에서든 PR을 여는 모든 사람이 같은 그룹화된 요약을 바로 봅니다. 누구도 자신의 모델 키가 필요 없고, 포크에서 온 풀 리퀘스트도 받을 수 있습니다.`,secret:`모델 키를 저장소 시크릿으로 추가하세요. 예: {name}.`,workflow:`이 워크플로를 저장소에 추가하세요:`,result:`풀 리퀘스트를 열거나 업데이트해서 사용해 보세요. 분석은 댓글로 게시되며, 변경 없는 PR에서 다시 실행하면 모델 호출을 건너뜁니다.`,options:`{provider}는 키에서 추론됩니다. 바꾸려면 {provider}, {model}, {locale}을 설정하세요. 모든 옵션은 {readme}를 참고하세요.`},cli:{title:`CLI로 로컬 git 변경 사항 리뷰`,intro:`다른 사람보다 먼저 자신의 변경을 리뷰하세요. CLI는 브랜치, 커밋, 커밋하지 않은 작업을 pulls.review에서 열어, push하거나 PR을 열기 전에 변경이 그룹화되고 요약된 모습을 확인할 수 있게 합니다.`,branch:`git 저장소에서 이 명령을 실행하면 현재 브랜치를 기본 브랜치와 비교해 리뷰합니다:`,target:`또는 리뷰할 대상을 고르세요:`,browser:`브라우저에서 {url}을 열어 로컬 변경 사항을 시각화합니다. 터미널에 출력된 일회용 코드로 탭을 확인하세요. 그곳에서 비교할 다른 브랜치나 커밋을 선택할 수도 있습니다.`}},r={title:`diff 불러오기`,description:`unified diff / .patch 파일을 붙여 넣거나 놓아 리뷰하세요.`,pasteLabel:`unified diff / .patch 붙여 넣기`,chooseFile:`또는 .diff/.patch 파일 선택`,loadButton:`diff 불러오기`,parsing:`diff 파싱 중…`,parseFailed:`이 diff를 파싱할 수 없습니다`,noDiff:`불러온 diff가 없습니다`,noDiffHint:`홈페이지로 이동해 업로드 버튼으로 diff를 붙여 넣거나 놓으세요.`,goHome:`홈으로`},i={loading:`pull request 불러오는 중…`,loadFailed:`이 pull request를 불러올 수 없습니다`,somethingWrong:`문제가 발생했습니다`,newCommits:`캐시 이후 이 pull request에 새 커밋이 있습니다.`,autoRefreshNextTime:`다음부터 자동 새로 고침`,endOfDiff:`diff의 끝에 도달했습니다.`,analyzeBy:`분석 방식`,rules:`규칙`,ai:`AI`,by:`작성자`,sharedBy:`다음 사용자가 공유한 AI 분석을 보고 있습니다:`,sharedAnalysis:`공유된 분석을 보고 있습니다`,reviewedOf:`/ {total} 리뷰 완료`,openInSite:`pulls.review에서 열기`},a={reviewChanges:`변경 사항 리뷰`,updateUserscript:`유저스크립트 업데이트`},o={loading:`pull request 불러오는 중…`,loadFailed:`pull request를 불러올 수 없습니다`,open:`{n}개 열림`,search:`pull request 필터`,empty:`열린 pull request가 없습니다`,noMatches:`검색과 일치하는 pull request가 없습니다`,searchingAll:`열린 pull request {n}개 전체를 검색하는 중…`,loadingMore:`더 불러오는 중…`,openedBy:`{author}님이 {time}에 열었습니다`,milestone:`마일스톤`,comments:`댓글 {n}개`,linkedIssues:`연결된 issue {n}개`,assignedTo:`{login}에게 할당됨`,groups:`{n}개 그룹`,viewedHint:`이 브라우저에서 본 PR`,aiAvailable:`AI 분석 있음`,sort:{label:`정렬`,"recently-updated":`최근 업데이트순`,"least-recently-updated":`오래된 업데이트순`,newest:`최신순`,oldest:`오래된순`,"most-commented":`댓글 많은 순`,"least-commented":`댓글 적은 순`},review:{approved:`승인됨`,changes_requested:`변경 요청됨`,review_required:`리뷰 필요`},checks:{success:`모든 검사 통과`,failure:`일부 검사 실패`,pending:`일부 검사가 아직 완료되지 않음`}},s={setupKeys:`API 키 설정`,analyzing:`분석 중…`,failed:`분석 실패`,failedTitle:`AI 분석 실패: {message}`,reanalyze:`다시 분석`,withAi:`AI로 분석`,statusTitle:`AI 분석`,starting:`시작 중…`,thinking:`생각 중… ({step}단계)`,reading:`파일 {n}개 읽는 중: {first}`,organizing:`그룹 정리 중…`,notConfigured:`AI 분석이 설정되지 않았습니다: 설정에서 gateway 토큰이나 공급자 API 키를 추가하세요`,chatFailed:`채팅 요청 실패`,agentSessionLost:`에이전트에 이 대화가 더 이상 없습니다. 다시 분석하면 채팅할 수 있습니다.`},c={button:`결과 공유`,updateButton:`공유한 댓글 업데이트`,sharing:`공유 중…`,tooltip:`이 분석을 pull request 댓글로 게시해 다른 사람이 불러올 수 있게 합니다`,needsToken:`공유하려면 쓰기 권한이 있는 GitHub 토큰이 필요합니다`,failed:`공유 실패: {message}`,titleUpdate:`공유한 분석 업데이트`,titleShare:`이 분석을 GitHub에 공유`,willUpdate:`이 pull request의 기존 {comment}이 GitHub 토큰을 사용해 {user} 계정으로 업데이트됩니다.`,willPost:`GitHub 토큰을 사용해 {user} 계정으로 이 pull request에 공개 댓글이 게시됩니다.`,commentLink:`댓글`,contains:`댓글에 포함되는 내용:`,containsLink:`{site}에서 이 리뷰를 열 수 있는 링크`,containsJson:`이 AI 분석의 그룹과 요약 (접힌 블록 안의 JSON)`,excludes:`채팅 메시지, API 키, 설정의 다른 내용은 포함되지 않습니다.`,anyoneCanLoad:`이 pull request를 보는 누구나 공유된 분석을 불러올 수 있습니다.`,englishRecommended:`공개 프로젝트에서 작업 중이라면 커뮤니티에 도움이 되도록 결과를 영어로 공유하는 것을 권장합니다.`,share:`공유`,update:`업데이트`,shareAnyway:`그래도 공유`,updateAnyway:`그래도 업데이트`,loadReplaces:`공유된 AI 분석을 불러올까요? 내 분석을 대체합니다:`,available:`이 pull request에 공유된 AI 분석이 있습니다:`,staleTitle:`최신 커밋 이전에 분석됨`,outdated:`(오래됨)`,inLanguage:`{language}로 분석됨`,notShared:`{login}님은 이 pull request의 분석을 공유하지 않았습니다.`},l={toggle:`그룹 접기/펼치기`,filesReviewed:`파일 {reviewed} / {total}개 리뷰 완료`,subgroupsOf:`하위 그룹:`,hideSubgroups:`하위 그룹 숨기기`,showSubgroups:`하위 그룹 표시`,navTabs:`그룹을 탭으로 표시`,navSidebar:`그룹을 사이드바로 표시`,uncategorized:`미분류`,uncategorizedSummary:`현재 분석에 포함되지 않은 파일.`},u={critical:`주의 깊게 검토`},d={layoutTree:`파일을 트리로 표시`,layoutList:`파일을 목록으로 표시`,markReviewed:`리뷰 완료로 표시`,markFolderReviewed:`{name}의 모든 파일을 리뷰 완료로 표시`,changedSinceReviewed:`이 파일은 이전에 리뷰했지만 이후 커밋에서 변경되었습니다`,resolved:`{n}개 해결됨`,binary:`바이너리 파일`,binaryNotShown:`바이너리 파일은 표시되지 않습니다.`,tooLarge:`diff가 너무 커서 표시할 수 없습니다.`,loadFailed:`불러오기 실패`,loadFull:`전체 파일 내용 불러오기`,expand:`파일 펼치기`,collapse:`파일 접기`,collapseMenu:`파일 펼치기/접기`,expandAll:`모든 파일 펼치기`,collapseAll:`모든 파일 접기`,collapseReviewed:`리뷰한 파일 접기`,noLongerInDiff:`더 이상 이 diff에 없음`,removed:`제거됨`},f={title:`리뷰 진행 상황`,markAll:`모두 리뷰 완료로 표시`,reset:`리뷰 상태 초기화`,invert:`리뷰 상태 반전`,status:{reviewed:`리뷰 완료`,changed:`리뷰 후 변경됨`,unreviewed:`리뷰 안 함`}},p={added:`추가됨`,removed:`삭제됨`,modified:`수정됨`,renamed:`이름 변경됨`,copied:`복사됨`},m={open:`열림`,draft:`초안`,closed:`닫힘`,merged:`병합됨`},h={ui:`UI`,api:`API`,core:`코어`,data:`데이터`,cli:`CLI`,security:`보안`,tests:`테스트`,docs:`문서`,examples:`예제`,deps:`의존성`,build:`빌드`,scripts:`스크립트`,config:`설정`,i18n:`i18n`,assets:`에셋`,other:`기타`},g={addReview:`리뷰 추가`,hideComments:`리뷰 댓글 숨기기`,showComments:`리뷰 댓글 표시`,reviews:`리뷰`,approved:`승인함`,changesRequested:`변경 요청함`,commented:`댓글 남김`,dismissed:`리뷰 철회됨`,reviewChanges:`변경 사항 리뷰`,includesPending:`제출하면 보류 중인 댓글 {n}개가 포함됩니다.`,summaryPlaceholder:`요약을 남기세요 (승인 시 선택)`,comment:`댓글`,approve:`승인`,requestChanges:`변경 요청`,discard:`리뷰 버리기`,leaveComment:`댓글 남기기`,addSingle:`단일 댓글 추가`,addToReview:`리뷰 댓글 추가`,startReview:`리뷰 시작`,pending:`보류 중`,editComment:`댓글 편집`,deleteComment:`댓글 삭제`,replyPlaceholder:`답글…`,resolve:`해결됨으로 표시`},_={title:`이 PR에 대해 질문`,collapse:`접기`,reanalyzeToEnable:`채팅을 사용하려면 다시 분석하세요`,thinking:`생각 중…`,placeholder:`이 PR에 대해 질문…`,updatedGrouping:`그룹 업데이트됨: {n}개 그룹`,readFiles:`파일 {n}개 읽음`,updatingGrouping:`그룹 업데이트 중…`,submittingGrouping:`그룹 제출 중…`,requestFailed:`요청 실패`,stopped:`중지됨`},v={layout:`Diff 레이아웃`,wrapLines:`줄 바꿈`,unified:`통합`,split:`분할`,syntaxTheme:{label:`구문 테마`,light:`라이트 모드`,dark:`다크 모드`},cached:`캐시된 pull request`,autoRefresh:`새 커밋이 발견되면 자동 새로 고침`,language:`언어`,token:{label:`GitHub 개인 액세스 토큰`,optional:`공개 저장소에는 선택 사항이며, 비공개 저장소나 리뷰 작성에는 필수입니다.`,scopes:`리뷰에는 {repo} 범위(클래식 토큰) 또는 {fineGrained}(세분화된 토큰)가 필요합니다`,storedLocally:`이 브라우저에만 저장됩니다.`,generate:`GitHub에서 생성 →`,fineGrained:`세분화된 토큰 (클래식 범위 없음)`,updated:`업데이트`,expires:`만료`,neverExpires:`만료 없음`,change:`토큰 변경`,checking:`토큰 확인 중…`,couldNotVerify:`이 토큰을 확인할 수 없습니다.`},tabs:{appearance:`모양`,behavior:`동작`,github:`GitHub`,ai:`AI 분석`,notSetUp:`아직 설정되지 않음`},llm:{title:`AI 분석`,description:`모델 공급자를 설정하면 AI 생성 요약이 활성화됩니다. 이 브라우저에만 저장되며 선택한 공급자에게만 전송됩니다.`,provider:`공급자`,baseUrl:`Base URL`,baseUrlDescription:`OpenAI 호환 chat completions 엔드포인트 (OpenAI 자체, 로컬 서버 등).`,apiKey:`API 키`,gatewayHint:`{link} 토큰 하나로 지원되는 모든 공급자를 사용할 수 있습니다.`,anthropicHint:`{link}. 이 브라우저에서 직접 호출합니다 (gateway 없음).`,anthropicLink:`Anthropic API 키`,openaiHint:`위 엔드포인트의 API 키.`,createKey:`{provider}에서 생성 →`,configured:`설정됨`,changeKey:`키 변경`,model:`모델`,modelListFailed:`모델 목록을 불러올 수 없습니다 ({error}). 모델 id를 직접 입력하세요.`,embedUnavailable:`임베드 모드에서는 AI 기능을 사용할 수 없습니다`,embedReason:`github.com의 엄격한 CSP가 AI 기능에 필요한 요청을 차단합니다. 사용하려면 {link}.`,goToWebsite:`웹사이트로 이동`,agent:`에이전트`,agentNeedsCli:"로컬 에이전트는 pulls.review CLI에서 실행됩니다. 저장소에서 `npx pulls.review`를 실행하고 거기서 선택하세요.",agentDetecting:`에이전트 CLI 찾는 중…`,agentNone:`이 컴퓨터에서 에이전트 CLI를 찾을 수 없습니다.`,agentHint:`이 컴퓨터에 설치되어 자체 계정으로 로그인된 코딩 에이전트({claude} 또는 {opencode})입니다. 패치와 저장소를 읽기만 하고 쓰지 않습니다.`,agentPick:`에이전트 선택…`},models:{placeholder:`모델 id`,loading:`모델 불러오는 중…`,search:`모델 검색…`,noMatch:`일치하는 모델이 없습니다`,useCustom:`“{id}” 사용`,free:`무료`,priceTitle:`입력 {input}/M · 출력 {output}/M 토큰`,agentDefault:`에이전트 기본값`}},y={allFiles:`모든 파일`,code:{label:`코드`,summary:`소스 변경.`},other:{label:`기타`,summary:`기존 분류에 맞지 않는 기타 변경.`},docs:{label:`문서`,summary:`문서 업데이트.`},tests:{label:`테스트`,summary:`이 변경에 대한 테스트.`},config:{label:`설정`,summary:`설정 변경.`},deps:{label:`의존성`,summary:`의존성 버전 변경.`},generated:{label:`생성 파일`,summary:`생성물 또는 빌드 산출물 변경.`}},b={tokenRequired:`이 pull request에 쓰려면 GitHub 토큰이 필요합니다.`,diffNotLoaded:`diff 불러오기가 아직 끝나지 않았습니다.`,noViewer:`이 토큰의 GitHub 사용자를 확인할 수 없습니다.`,tokenRejected:`GitHub가 이 토큰을 거부했습니다 (401). 완전히 붙여 넣었는지, 취소되지 않았는지 확인하세요.`,tooLarge:`분석이 너무 커서 댓글로 공유할 수 없습니다 ({n}자).`},x={loading:`로컬 변경 사항을 불러오는 중…`,loadFailed:`이 변경 사항을 불러올 수 없습니다`,auth:{title:`터미널에 표시된 코드를 입력하세요`,hint:`pulls.review가 실행 중인 터미널에 6자리 코드를 출력했습니다.`,invalid:`코드가 맞지 않습니다. 터미널을 확인하고 다시 시도하세요.`,submit:`계속`},picker:{tagline:`로컬 브랜치, 범위, 커밋되지 않은 변경 사항을 풀 리퀘스트처럼 리뷰하세요. 그룹으로 묶고 요약해 범위별로 살펴봅니다.`,title:`로컬 변경 사항 리뷰`,base:`베이스`,head:`헤드`,compare:`비교`,shortcuts:`바로가기`,worktree:`커밋되지 않은 변경 사항`,recentCommits:`최근 커밋`,branches:`브랜치`,against:`{base} 대비`,current:`체크아웃됨`,github:`또는 GitHub 풀 리퀘스트, 비교 또는 커밋`}},S={common:e,landing:t,guide:n,load:r,pr:i,embed:a,pulls:o,analyze:s,share:c,group:l,note:u,file:d,reviewProgress:f,fileStatus:p,prState:m,category:h,review:g,chat:_,settings:v,rules:y,errors:b,local:x};export{s as analyze,h as category,_ as chat,e as common,S as default,a as embed,b as errors,d as file,p as fileStatus,l as group,n as guide,t as landing,r as load,x as local,u as note,i as pr,m as prState,o as pulls,g as review,f as reviewProgress,y as rules,v as settings,c as share};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{H as e,Hn as t,Wn as n,Yn as r,jn as i,qn as a,zn as o}from"./vue-i18n-CGHHpbTP.js";import{n as s}from"./i18n-Cx8anq4V.js";import{n as c,t as l}from"./core-messages-ClW97ZVa.js";function u(e){return e?.role===`assistant`&&e.stopReason===`error`}function d({runner:t,diff:l,session:d,onSessionChange:f,onGroupingUpdate:p}){let m=n(!1),h=n(),g=a(),_,v=e(()=>d.value!==void 0),y=e(()=>((g.value?.session===d.value?g.value?.messages:void 0)??d.value?.messages??[]).slice(d.value?.chatStartIndex??0));async function b(e,n){let i=r(l.value),a=d.value;if(!i||!a||m.value)return;let o=()=>d.value!==a||r(l.value)!==i;h.value=void 0,m.value=!0;let v=new AbortController;_=v;try{let r=await t.chat({diff:i,session:{...a,messages:n},text:e,signal:v.signal,onMessages:e=>g.value={session:a,messages:e},onGroupingUpdate:e=>o()?void 0:p(e)});if(o()||v.signal.aborted)return;await f({...a,messages:r});let c=r.at(-1);u(c)&&(h.value=Error(c.errorMessage??s(`analyze.chatFailed`)))}catch(e){!o()&&!v.signal.aborted&&(h.value=c(e))}finally{_===v&&(_=void 0),g.value=void 0,m.value=!1}}async function x(e){e.trim()&&d.value&&await b(e,r(d.value.messages))}async function S(){let e=r(d.value?.messages);e&&u(e.at(-1))&&await b(void 0,e.slice(0,-1))}function C(){_?.abort()}i()&&o(C);async function w(){let e=d.value;e&&(C(),h.value=void 0,await f({...e,messages:r(e.messages).slice(0,e.chatStartIndex)}))}return{available:v,messages:y,isStreaming:m,error:h,send:x,retry:S,stop:C,clear:w}}function f(r){let i=n(!1),o=n(),s=a([]),u=n(),f=e(()=>r.runner.isSetup()),p;async function m(e){r.session.value=e;let t=r.getCacheKey();t&&await r.cache.diffs.setLlmSession(t,e)}async function h(e){r.setResult(e);let t=r.getCacheKey();t&&await r.cache.diffs.setAnalyzedResult(t,`llm`,e)}let g=d({runner:r.runner,diff:r.diff,session:r.session,onSessionChange:m,onGroupingUpdate:h});async function _(){let e=r.diff.value;if(!e)return;g.stop(),u.value=void 0,s.value=[],i.value=!0;let t=new AbortController;p=t;try{let{result:n,transcript:i,agent:a}=await r.runner.analyze(e,{onProgress:e=>o.value={step:e.step,message:l(e)},onTranscript:e=>s.value=e,signal:t.signal});if(t.signal.aborted)return;await h(n),await m({messages:i,chatStartIndex:i.length,agent:a})}catch(e){t.signal.aborted||(u.value=c(e))}finally{p===t&&(p=void 0),o.value=void 0,i.value=!1}await r.showLlmResult()}function v(){g.stop(),p?.abort()}return t({isSetup:f,isAnalyzing:i,progress:o,transcript:s,error:u,reanalyze:_,chat:t(g),abort:v})}export{f as createLlmStore};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{bt as e}from"./vue-i18n-CGHHpbTP.js";var t=Symbol(`local-agents`);function n(){return e(t,void 0)}export{n,t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as e,Bt as t,Cr as n,Dr as r,Dt as i,Et as a,G as o,H as s,In as c,Jt as l,K as u,Kt as d,M as f,Pt as p,Q as m,Rt as h,Sn as g,Tr as _,Tt as v,U as y,W as b,Wn as x,Xt as S,Zn as C,_ as w,_n as T,bt as E,dt as D,er as O,lt as k,mn as A,n as j,qt as M,rn as N,sn as P,tt as F,v as I,w as L,x as ee,yn as R}from"./vue-i18n-CGHHpbTP.js";import{C as z,w as B}from"./runtime-dom.esm-bundler-Du_ZCcVN.js";import{D as V,E as H,O as U,S as W,T as G,_ as te,a as ne,b as re,c as ie,d as K,f as q,g as ae,h as oe,i as J,l as se,m as Y,n as ce,p as le,r as ue,s as de,u as fe,v as X,x as pe,y as me}from"./ModelPicker-CDTiUMZ3.js";import{ct as he,st as ge,t as _e}from"./useDocumentTitle-BQJCa6Lm.js";import{i as ve,s as ye}from"./index-KDAJXf4E.js";import{t as be}from"./ActionButton-V4dY2wPS.js";import{n as xe,t as Se}from"./useNonce-CwUrgryd.js";import{a as Ce,n as we,r as Z}from"./pages-ByEfDjFa.js";import{i as Te,n as Ee,r as De,t as Oe}from"./LandingHero-DWdx6_8g.js";import{t as ke}from"./portalTarget-DQg8GgWm.js";function Ae(e,t,n){let r=e.findIndex(e=>U(e,t)),i=e.findIndex(e=>U(e,n));if(r===-1||i===-1)return[];let[a,o]=[r,i].sort((e,t)=>e-t);return e.slice(a,o+1)}var je=/[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Bopomofo}]/u,Me=/android/i;function Ne(){return typeof navigator<`u`&&Me.test(navigator.userAgent)}function Pe(e){let t=x(!1),n=x(!0),r=x(!1),a=s(()=>t.value&&n.value);function o(){t.value=!0,n.value=!0,r.value=!1}function c(e){e.data&&(je.test(e.data)?(n.value=!0,r.value=!0):Ne()&&!r.value&&(n.value=!1))}function l(n){i(()=>{t.value=!1,e?.(n)})}return{isComposing:t,shouldDeferInput:a,handleCompositionStart:o,handleCompositionUpdate:c,handleCompositionEnd:l}}function Fe(e){let t=s(()=>O(e)),n=s(()=>new Intl.Collator(`en`,{usage:`search`,...t.value}));return{startsWith:(e,t)=>t.length===0||(e=e.normalize(`NFC`),t=t.normalize(`NFC`),n.value.compare(e.slice(0,t.length),t)===0),endsWith:(e,t)=>t.length===0||(e=e.normalize(`NFC`),t=t.normalize(`NFC`),n.value.compare(e.slice(-t.length),t)===0),contains:(e,t)=>{if(t.length===0)return!0;if(e=e.normalize(`NFC`),t=t.normalize(`NFC`),t.length>e.length)return!1;let r=n.value.compare;if(e.includes(t))return!0;let i=t.length;for(let n=0;n+i<=e.length;n++)if(r(t,e.slice(n,n+i))===0)return!0;return!1}}}function Ie(){return{ALT:`Alt`,ARROW_DOWN:`ArrowDown`,ARROW_LEFT:`ArrowLeft`,ARROW_RIGHT:`ArrowRight`,ARROW_UP:`ArrowUp`,BACKSPACE:`Backspace`,CAPS_LOCK:`CapsLock`,CONTROL:`Control`,DELETE:`Delete`,END:`End`,ENTER:`Enter`,ESCAPE:`Escape`,F1:`F1`,F10:`F10`,F11:`F11`,F12:`F12`,F2:`F2`,F3:`F3`,F4:`F4`,F5:`F5`,F6:`F6`,F7:`F7`,F8:`F8`,F9:`F9`,HOME:`Home`,META:`Meta`,PAGE_DOWN:`PageDown`,PAGE_UP:`PageUp`,SHIFT:`Shift`,SPACE:` `,TAB:`Tab`,CTRL:`Control`,ASTERISK:`*`,SPACE_CODE:`Space`}}function Le(e,t,n){return e===void 0?!1:Array.isArray(e)?e.some(e=>Q(e,t,n)):Q(e,t,n)}function Q(e,t,n){return e===void 0||t===void 0?!1:typeof e==`string`?e===t:typeof n==`function`?n(e,t):typeof n==`string`?e?.[n]===t?.[n]:U(e,t)}var[Re,ze]=V(`ListboxRoot`),[Be,Ve]=V(`ListboxHighlightScroll`),He=F({__name:`ListboxRoot`,props:{modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},multiple:{type:Boolean,required:!1},orientation:{type:String,required:!1,default:`vertical`},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},selectionBehavior:{type:String,required:!1,default:`toggle`},highlightOnHover:{type:Boolean,required:!1},by:{type:[String,Function],required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:[`update:modelValue`,`highlight`,`entryFocus`,`leave`],setup(e,{expose:n,emit:r}){let a=e,s=r,{multiple:c,highlightOnHover:l,orientation:u,disabled:d,selectionBehavior:f,dir:p}=C(a),{getItems:m,getItem:h}=de({isProvider:!0}),{handleTypeaheadSearch:g}=xe(),{primitiveElement:_,currentElement:v}=K(),y=Ie(),S=pe(p),T=Be(null);Ve({suppressHighlightScroll:x(!1),onHighlightScrollRequest:()=>{}});let E=me(v),D=x(),k=x(!1),j=x(!0),N=w(a,`modelValue`,s,{defaultValue:a.defaultValue??(c.value?[]:void 0),passive:a.modelValue===void 0,deep:!0});function P(e){if(k.value=!0,a.multiple){let t=Array.isArray(N.value)?[...N.value]:[],n=t.findIndex(t=>Q(t,e,a.by));a.selectionBehavior===`toggle`?(n===-1?t.push(e):t.splice(n,1),N.value=t):(N.value=[e],D.value=e)}else a.selectionBehavior===`toggle`&&Q(N.value,e,a.by)?N.value=void 0:N.value=e;setTimeout(()=>{k.value=!1},1)}let F=x(null),L=x(null),z=x(!1),B=x(!1),V=I(),H=I(),U=I();function W(){return m().map(e=>e.ref).filter(e=>e.dataset.disabled!==``)}function G(e,t=!0,n){if(!e)return;F.value=e;let r=T?.suppressHighlightScroll.value??!1;(n??j.value)&&(r?F.value.focus({preventScroll:!0}):F.value.focus()),r?T?.onHighlightScrollRequest(t?()=>{let e=F.value;e?.isConnected&&e.scrollIntoView({block:`nearest`})}:void 0):t&&F.value.scrollIntoView({block:`nearest`});let i=h(e);s(`highlight`,i)}function te(e){if(z.value)U.trigger(e);else{let t=m().find(t=>Q(t.value,e,a.by));t&&(F.value=t.ref,G(t.ref))}}function ne(e){if(F.value&&F.value.isConnected){if(e.ctrlKey||e.metaKey||e.altKey)return;e.preventDefault(),e.stopPropagation(),B.value||F.value.click()}}function re(e){if(j.value){if(k.value=!0,z.value)H.trigger(e);else{let t=e.altKey||e.ctrlKey||e.metaKey;if(t&&e.key===`a`&&c.value){let t=m(),n=t.map(e=>e.value);N.value=[...n],e.preventDefault();let r=t.at(-1);r&&G(r.ref)}else if(!t){let t=g(e.key,m());t&&G(t)}}setTimeout(()=>{k.value=!1},1)}}function ie(){B.value=!0}function ae(){i(()=>{B.value=!1})}function oe(){i(()=>{Y(new KeyboardEvent(`keydown`,{key:`PageUp`}))})}function J(e){let t=F.value;t?.isConnected&&(L.value=t),F.value=null,s(`leave`,e)}function se(e){let t=new CustomEvent(`listbox.entryFocus`,{bubbles:!1,cancelable:!0});if(e.currentTarget?.dispatchEvent(t),s(`entryFocus`,t),!t.defaultPrevented){if(L.value)G(L.value);else{let e=W()?.[0];G(e)}}}function Y(e){let t=ge(e,u.value,S.value);if(!t)return;let n=W();if(F.value){if(t===`last`)n.reverse();else if(t===`prev`||t===`next`){t===`prev`&&n.reverse();let e=n.indexOf(F.value);n=n.slice(e+1)}ce(e,n[0])}if(n.length){let e=!F.value&&t===`prev`?n.length-1:0;G(n[e])}if(z.value)return H.trigger(e)}function ce(e,t){if(!z.value&&a.selectionBehavior===`replace`&&c.value&&Array.isArray(N.value)&&(!e.altKey&&!e.ctrlKey&&!e.metaKey||e.shiftKey)&&e.shiftKey){let n=m().filter(e=>e.ref.dataset.disabled!==``),r=n.find(e=>e.ref===t)?.value;if(e.key===y.END?r=n.at(-1)?.value:e.key===y.HOME&&(r=n[0]?.value),!r||!D.value)return;let i=Ae(n.map(e=>e.value),D.value,r);N.value=i}}async function le(e,t=!0){if(ee){if(await i(),z.value)V.trigger({event:e,scroll:t});else{let e=W(),n=e.find(e=>e.dataset.state===`checked`),r=t?void 0:!1;n?G(n,t,r):e.length&&G(e[0],t,r)}}}let ue=!1;return A(N,()=>{if(!k.value){let e=ue;ue=!0,i(()=>{le(void 0,e)})}},{immediate:!0,deep:!0}),n({highlightedElement:F,highlightItem:te,highlightFirstItem:oe,highlightSelected:le,getItems:m}),ze({modelValue:N,onValueChange:P,multiple:c,orientation:u,dir:S,disabled:d,highlightOnHover:l,highlightedElement:F,isVirtual:z,virtualFocusHook:V,virtualKeydownHook:H,virtualHighlightHook:U,by:a.by,firstValue:D,selectionBehavior:f,focusable:j,onLeave:J,onEnter:se,changeHighlight:G,onKeydownEnter:ne,onKeydownNavigation:Y,onKeydownTypeAhead:re,onCompositionStart:ie,onCompositionEnd:ae,highlightFirstItem:oe}),(e,n)=>(t(),b(O(q),{ref_key:`primitiveElement`,ref:_,as:e.as,"as-child":e.asChild,dir:O(S),"data-disabled":O(d)?``:void 0,onPointerleave:J,onFocusout:n[0]||=async e=>{let t=e.relatedTarget||e.target;await i(),F.value&&O(v)&&!O(v).contains(t)&&J(e)}},{default:R(()=>[M(e.$slots,`default`,{modelValue:O(N)}),O(E)&&e.name?(t(),b(O(he),{key:0,name:e.name,value:O(N),disabled:O(d),required:e.required},null,8,[`name`,`value`,`disabled`,`required`])):o(`v-if`,!0)]),_:3},8,[`as`,`as-child`,`dir`,`data-disabled`]))}}),Ue=F({__name:`ListboxContent`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(n){let{CollectionSlot:r}=de(),i=Re(),a=L(!1,10);return(n,o)=>(t(),b(O(r),null,{default:R(()=>[e(O(q),{role:`listbox`,as:n.as,"as-child":n.asChild,tabindex:O(i).focusable.value?O(i).highlightedElement.value?`-1`:`0`:`-1`,"aria-orientation":O(i).orientation.value,"aria-multiselectable":!!O(i).multiple.value,"data-orientation":O(i).orientation.value,onMousedown:o[0]||=B(e=>a.value=!0,[`left`]),onFocus:o[1]||=e=>{O(a)||O(i).onEnter(e)},onKeydown:[o[2]||=z(e=>{(O(i).orientation.value!==`vertical`||e.key!==`ArrowLeft`&&e.key!==`ArrowRight`)&&(O(i).orientation.value!==`horizontal`||e.key!==`ArrowUp`&&e.key!==`ArrowDown`)&&(e.preventDefault(),O(i).focusable.value&&O(i).onKeydownNavigation(e))},[`down`,`up`,`left`,`right`,`home`,`end`]),z(O(i).onKeydownEnter,[`enter`]),O(i).onKeydownTypeAhead]},{default:R(()=>[M(n.$slots,`default`)]),_:3},8,[`as`,`as-child`,`tabindex`,`aria-orientation`,`aria-multiselectable`,`data-orientation`,`onKeydown`])]),_:3}))}}),We=F({__name:`ListboxFilter`,props:{modelValue:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`input`}},emits:[`update:modelValue`],setup(e,{emit:n}){let r=e,i=w(r,`modelValue`,n,{defaultValue:``,passive:r.modelValue===void 0}),a=Re(),{primitiveElement:o,currentElement:c}=K(),l=s(()=>r.disabled||a.disabled.value||!1),u=x();T(()=>u.value=a.highlightedElement.value?.id),p(()=>{a.focusable.value=!1,setTimeout(()=>{r.autoFocus&&c.value?.focus()},1)}),h(()=>{a.focusable.value=!0});let{isComposing:d,shouldDeferInput:f,handleCompositionStart:m,handleCompositionUpdate:g,handleCompositionEnd:_}=Pe(e=>{i.value=e.target.value,a.onCompositionEnd(),a.highlightFirstItem()});function v(){a.onCompositionStart(),m()}function y(e){f.value||(i.value=e.target.value,a.highlightFirstItem())}function S(e){d.value||(e.preventDefault(),a.onKeydownNavigation(e))}function C(e){d.value||a.onKeydownEnter(e)}return(e,n)=>(t(),b(O(q),{ref_key:`primitiveElement`,ref:o,as:e.as,"as-child":e.asChild,value:O(i),disabled:l.value?``:void 0,"data-disabled":l.value?``:void 0,"aria-disabled":l.value??void 0,"aria-activedescendant":u.value,type:`text`,onKeydown:[z(S,[`down`,`up`,`home`,`end`]),z(C,[`enter`])],onInput:y,onCompositionstart:v,onCompositionupdate:O(g),onCompositionend:O(_)},{default:R(()=>[M(e.$slots,`default`,{modelValue:O(i)})]),_:3},8,[`as`,`as-child`,`value`,`disabled`,`data-disabled`,`aria-disabled`,`aria-activedescendant`,`onCompositionupdate`,`onCompositionend`]))}}),Ge=`listbox.select`,[Ke,qe]=V(`ListboxItem`),Je=F({__name:`ListboxItem`,props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`div`}},emits:[`select`],setup(n,{emit:r}){let i=n,o=r,c=Y(void 0,`reka-listbox-item`),{CollectionItem:l}=de(),{forwardRef:u,currentElement:d}=X(),f=Re(),p=s(()=>d.value!=null&&d.value===f.highlightedElement.value),m=s(()=>Le(f.modelValue.value,i.value,f.by)),h=s(()=>f.disabled.value||i.disabled);async function _(e){o(`select`,e),!e?.defaultPrevented&&!h.value&&e&&(f.onValueChange(i.value),f.changeHighlight(d.value))}function v(e){let t={originalEvent:e,value:i.value};G(Ge,_,t)}return qe({isSelected:m}),(n,r)=>(t(),b(O(l),{value:n.value},{default:R(()=>[g([p.value,m.value,h.value,O(f).focusable.value,...Object.entries(n.$attrs).flat()],()=>e(O(q),a({id:O(c)},n.$attrs,{ref:O(u),role:`option`,tabindex:O(f).focusable.value?p.value?`0`:`-1`:-1,"aria-selected":m.value,as:n.as,"as-child":n.asChild,disabled:h.value?``:void 0,"data-disabled":h.value?``:void 0,"data-highlighted":p.value?``:void 0,"data-state":m.value?`checked`:`unchecked`,onClick:v,onKeydown:z(B(v,[`prevent`]),[`space`]),onPointermove:r[0]||=()=>{O(f).highlightedElement.value!==O(d)&&O(f).highlightOnHover.value&&O(f).changeHighlight(O(d),!1,!1)}}),{default:R(()=>[M(n.$slots,`default`)]),_:3},16,[`id`,`tabindex`,`aria-selected`,`as`,`as-child`,`disabled`,`data-disabled`,`data-highlighted`,`data-state`,`onKeydown`]),r,1)]),_:3},8,[`value`]))}});function Ye(e){let t=x(`inline`),n=x(!1),r=x(),i=s(()=>t.value===`popper`&&!n.value),a;Ve({suppressHighlightScroll:i,onHighlightScrollRequest(e){a=e}});function o(e,i){(r.value!==e||t.value!==i)&&(n.value=!1,a=void 0),r.value=e,t.value=i}function c(i){if(r.value!==i||t.value!==`popper`||n.value)return;n.value=!0;let o=a;a=void 0,e.value&&o?.()}function l(e){r.value===e&&(r.value=void 0,t.value=`inline`,n.value=!1,a=void 0)}return{onContentPositionChange:o,onContentPlaced:c,onContentUnmount:l}}var[$,Xe]=V(`ComboboxRoot`),[Ze,Qe]=V(`AutocompleteRoot`),$e=F({__name:`AutocompleteRoot`,props:{modelValue:{type:String,required:!1},defaultValue:{type:String,required:!1},open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},dir:{type:String,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1},resetSearchTermOnBlur:{type:Boolean,required:!1,default:!1},openOnFocus:{type:Boolean,required:!1,default:!1},openOnClick:{type:Boolean,required:!1,default:!1},ignoreFilter:{type:Boolean,required:!1},highlightOnHover:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:modelValue`,`highlight`,`update:open`],setup(n,{expose:r,emit:o}){let c=n,l=o,{primitiveElement:u,currentElement:d}=K(),{disabled:f,ignoreFilter:m,openOnFocus:h,openOnClick:g,dir:_,highlightOnHover:v}=C(c),y=pe(_),S=w(c,`modelValue`,l,{defaultValue:c.defaultValue??``,passive:c.modelValue===void 0}),T=w(c,`open`,l,{defaultValue:c.defaultOpen,passive:c.open===void 0}),E=s({get:()=>S.value,set:e=>{e==null?S.value=``:S.value=String(e)}});async function D(e){T.value=e,e?(H.value=S.value||``,await i(),u.value?.highlightSelected(),j.value=!0,P.value?.focus()):(j.value=!1,H.value=``,setTimeout(()=>{!e&&c.resetSearchTermOnBlur&&A.trigger()},1))}let A=I(),j=x(!1),N=x(!1),P=x(),F=x(),L=s(()=>u.value?.highlightedElement??void 0),ee=Ye(T),z=x(new Map),B=x(new Map),{contains:V}=Fe({sensitivity:`base`}),H=x(``),U=s(e=>{if(!H.value||c.ignoreFilter||N.value)return{count:z.value.size,items:e?.items??new Map,groups:e?.groups??new Set(B.value.keys())};let t=0,n=new Map,r=new Set;for(let[e,r]of z.value){let i=V(r,H.value);n.set(e,+!!i),i&&t++}for(let[e,t]of B.value)for(let i of t)if(n.get(i)>0){r.add(e);break}return{count:t,items:n,groups:r}}),W=k();return p(()=>{W?.exposed&&(W.exposed.highlightItem=u.value?.highlightItem,W.exposed.highlightFirstItem=u.value?.highlightFirstItem,W.exposed.highlightSelected=u.value?.highlightSelected)}),r({filtered:U,highlightedElement:L,highlightItem:u.value?.highlightItem,highlightFirstItem:u.value?.highlightFirstItem,highlightSelected:u.value?.highlightSelected}),Xe({modelValue:E,multiple:x(!1),disabled:f,open:T,onOpenChange:D,...ee,contentId:``,isUserInputted:j,isVirtual:N,inputElement:P,highlightedElement:L,onInputElementChange:e=>P.value=e,triggerElement:F,onTriggerElementChange:e=>F.value=e,parentElement:d,resetSearchTermOnSelect:x(!1),onResetSearchTerm:A.on,allItems:z,allGroups:B,filterSearch:H,filterState:U,ignoreFilter:m,openOnFocus:h,openOnClick:g,resetModelValueOnClear:x(!0)}),Qe({modelValue:S}),(n,r)=>(t(),b(O(ne),null,{default:R(()=>[e(O(He),a({ref_key:`primitiveElement`,ref:u},n.$attrs,{modelValue:E.value,"onUpdate:modelValue":r[0]||=e=>E.value=e,style:{pointerEvents:O(T)?`auto`:void 0},as:n.as,"as-child":n.asChild,dir:O(y),name:n.name,required:n.required,disabled:O(f),"highlight-on-hover":O(v),onHighlight:r[1]||=e=>l(`highlight`,e)}),{default:R(()=>[M(n.$slots,`default`,{open:O(T),modelValue:O(S)})]),_:3},16,[`modelValue`,`style`,`as`,`as-child`,`dir`,`name`,`required`,`disabled`,`highlight-on-hover`])]),_:3}))}}),et=F({__name:`AutocompleteInput`,props:{modelValue:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`input`}},emits:[`update:modelValue`],setup(e,{emit:n}){let r=e,a=n,o=$(),s=Ze(),l=Re(),{primitiveElement:u,currentElement:d}=K(),f=w(r,`modelValue`,a,{passive:r.modelValue===void 0});s.modelValue.value&&(f.value=s.modelValue.value),p(()=>{d.value&&o.onInputElementChange(d.value)});let{isComposing:m,shouldDeferInput:h,handleCompositionStart:g,handleCompositionUpdate:_,handleCompositionEnd:v}=Pe(e=>{let t=e.target;t&&x(t.value)});function y(e){m.value||(e.preventDefault(),o.open.value||o.onOpenChange(!0))}function x(e){o.open.value?o.filterSearch.value=e:(o.onOpenChange(!0),i(()=>{e&&(o.filterSearch.value=e,l.highlightFirstItem())})),s.modelValue.value=e}function S(e){h.value||x(e.target.value)}function C(){o.openOnFocus.value&&!o.open.value&&o.onOpenChange(!0)}function T(){o.openOnClick.value&&!o.open.value&&o.onOpenChange(!0)}return A(s.modelValue,e=>{let t=e??``;f.value!==t&&(f.value=t)}),o.onResetSearchTerm(()=>{f.value=s.modelValue.value??``}),A(o.filterState,(e,t)=>{!o.isVirtual.value&&t.count===0&&l.highlightFirstItem()}),(e,n)=>(t(),b(O(We),{ref_key:`primitiveElement`,ref:u,modelValue:O(f),"onUpdate:modelValue":n[0]||=e=>c(f)?f.value=e:null,as:e.as,"as-child":e.asChild,"auto-focus":e.autoFocus,disabled:e.disabled,"aria-expanded":O(o).open.value,"aria-controls":O(o).contentId,"aria-autocomplete":`list`,role:`combobox`,autocomplete:`off`,onClick:T,onInput:S,onKeydown:z(y,[`down`,`up`]),onFocus:C,onCompositionstart:O(g),onCompositionupdate:O(_),onCompositionend:O(v)},{default:R(()=>[M(e.$slots,`default`)]),_:3},8,[`modelValue`,`as`,`as-child`,`auto-focus`,`disabled`,`aria-expanded`,`aria-controls`,`onCompositionstart`,`onCompositionupdate`,`onCompositionend`]))}}),tt=F({__name:`ComboboxAnchor`,props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(n){let{forwardRef:r}=X();return(n,i)=>(t(),b(O(J),{"as-child":``,reference:n.reference},{default:R(()=>[e(O(q),a({ref:O(r),"as-child":n.asChild,as:n.as},n.$attrs),{default:R(()=>[M(n.$slots,`default`)]),_:3},16,[`as-child`,`as`])]),_:3},8,[`reference`]))}}),[nt,rt]=V(`ComboboxContent`),it=F({__name:`ComboboxContentImpl`,props:{position:{type:String,required:!1,default:`inline`},bodyLock:{type:Boolean,required:!1},hideWhenEmpty:{type:Boolean,required:!1},memoDependencies:{type:Array,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},dir:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`],setup(n,{emit:r}){let i=n,o=r,{position:c}=C(i),l=$(),u=Symbol(`ComboboxContent`);A(c,e=>l.onContentPositionChange(u,e),{immediate:!0});let d=s(()=>l.ignoreFilter.value?l.allItems.value.size===0:l.filterState.value.count===0),{forwardRef:f,currentElement:m}=X();W(i.bodyLock),re(),oe(l.parentElement);let g=s(()=>i.position===`popper`?i:{}),_=te(g.value),v={boxSizing:`border-box`,"--reka-combobox-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-combobox-content-available-width":`var(--reka-popper-available-width)`,"--reka-combobox-content-available-height":`var(--reka-popper-available-height)`,"--reka-combobox-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-combobox-trigger-height":`var(--reka-popper-anchor-height)`};rt({position:c});let y=x(!1);p(()=>{l.inputElement.value&&(y.value=m.value.contains(l.inputElement.value),y.value&&l.inputElement.value.focus())}),h(()=>{l.onContentUnmount(u);let e=H();y.value&&(!e||e===document.body)&&l.triggerElement.value?.focus()});function w(e){if(l.parentElement.value?.contains(e))return!0;let t=(e instanceof Element?e.closest(`label`):null)?.control;return!!t&&!!l.parentElement.value?.contains(t)}let T={placed:()=>l.onContentPlaced(u)};return(n,r)=>(t(),b(O(Ue),{"as-child":``},{default:R(()=>[e(O(se),{"as-child":``,onMountAutoFocus:r[5]||=B(()=>{},[`prevent`]),onUnmountAutoFocus:r[6]||=B(()=>{},[`prevent`])},{default:R(()=>[e(O(fe),{"as-child":``,"disable-outside-pointer-events":n.disableOutsidePointerEvents,onDismiss:r[0]||=e=>O(l).onOpenChange(!1),onFocusOutside:r[1]||=e=>{w(e.target)&&e.preventDefault(),o(`focusOutside`,e)},onInteractOutside:r[2]||=e=>o(`interactOutside`,e),onEscapeKeyDown:r[3]||=e=>o(`escapeKeyDown`,e),onPointerDownOutside:r[4]||=e=>{w(e.target)&&e.preventDefault(),o(`pointerDownOutside`,e)}},{default:R(()=>[(t(),b(S(O(c)===`popper`?O(ue):O(q)),a({...n.$attrs,...O(_)},{id:O(l).contentId,ref:O(f),"memo-dependencies":O(c)===`popper`?[O(l).filterSearch.value,O(l).filterState.value]:void 0,"data-state":O(l).open.value?`open`:`closed`,"data-empty":d.value?``:void 0,style:{display:i.hideWhenEmpty&&d.value?`none`:`flex`,flexDirection:`column`,outline:`none`,...O(c)===`popper`?v:{}}},N(O(c)===`popper`?T:{})),{default:R(()=>[M(n.$slots,`default`)]),_:3},16,[`id`,`memo-dependencies`,`data-state`,`data-empty`,`style`]))]),_:3},8,[`disable-outside-pointer-events`])]),_:3})]),_:3}))}}),at=F({__name:`ComboboxContent`,props:{forceMount:{type:Boolean,required:!1},position:{type:String,required:!1},bodyLock:{type:Boolean,required:!1},hideWhenEmpty:{type:Boolean,required:!1},memoDependencies:{type:Array,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},dir:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`],setup(n,{emit:r}){let i=ae(n,r),{forwardRef:o}=X(),s=$();return s.contentId||=Y(void 0,`reka-combobox-content`),(n,r)=>(t(),b(O(le),{present:n.forceMount||O(s).open.value},{default:R(()=>[e(it,a({...O(i),...n.$attrs},{ref:O(o)}),{default:R(()=>[M(n.$slots,`default`)]),_:3},16)]),_:3},8,[`present`]))}}),[ot,st]=V(`ComboboxGroup`),ct=F({__name:`ComboboxItem`,props:{textValue:{type:String,required:!1},value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(e,{emit:n}){let i=e,c=n,l=Y(void 0,`reka-combobox-item`),u=$(),d=ot(null),{primitiveElement:f,currentElement:_}=K();if(i.value===``)throw Error(`A <ComboboxItem /> must have a value prop that is not an empty string. This is because the Combobox value can be set to an empty string to clear the selection and show the placeholder.`);let v=s(()=>{if(u.isVirtual.value||u.ignoreFilter.value||!u.filterSearch.value)return!0;{let e=u.filterState.value.items.get(l);return e===void 0||e>0}});return p(()=>{u.allItems.value.set(l,i.textValue||_.value.textContent||_.value.innerText);let e=d?.id;e&&(u.allGroups.value.has(e)?u.allGroups.value.get(e)?.add(l):u.allGroups.value.set(e,new Set([l])))}),h(()=>{u.allItems.value.delete(l)}),(e,n)=>v.value?g([v.value,O(u).filterSearch.value,O(u).disabled.value,e.disabled,i.value,i.as,i.asChild,...Object.values(e.$attrs)],()=>(t(),b(O(Je),a({key:0},i,{id:O(l),ref_key:`primitiveElement`,ref:f,disabled:O(u).disabled.value||e.disabled,onSelect:n[0]||=t=>{c(`select`,t),!t.defaultPrevented&&(!O(u).multiple.value&&!e.disabled&&!O(u).disabled.value?(t.preventDefault(),O(u).onOpenChange(!1),O(u).modelValue.value=i.value):O(u).multiple.value&&O(u).inputElement.value?.focus())}}),{default:R(()=>[M(e.$slots,`default`,{},()=>[m(r(e.value),1)])]),_:3},16,[`id`,`disabled`])),n,1):o(`v-if`,!0)}}),lt=F({__name:`ComboboxPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let n=e;return(e,r)=>(t(),b(O(ie),_(D(n)),{default:R(()=>[M(e.$slots,`default`)]),_:3},16))}}),ut=F({__name:`ComboboxViewport`,props:{nonce:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(n){let r=n,{forwardRef:i}=X(),{nonce:o}=C(r),s=Se(o),c=$();return(n,o)=>(t(),u(f,null,[e(O(q),a({...n.$attrs,...r},{ref:O(i),"data-reka-combobox-viewport":``,role:`presentation`,style:{position:`relative`,flex:O(c).isVirtual.value?void 0:1,overflow:`auto`}}),{default:R(()=>[M(n.$slots,`default`)]),_:3},16,[`style`]),e(O(q),{as:`style`,nonce:O(s)},{default:R(()=>o[0]||=[m(` /* Hide scrollbars cross-browser and enable momentum scroll for touch devices */ [data-reka-combobox-viewport] { scrollbar-width:none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } [data-reka-combobox-viewport]::-webkit-scrollbar { display: none; } `)]),_:1,__:[0]},8,[`nonce`])],64))}}),dt={class:`truncate`},ft=F({inheritAttrs:!1,__name:`RefAutocomplete`,props:v({suggestions:{},placeholder:{},icon:{}},{modelValue:{default:``},modelModifiers:{}}),emits:[`update:modelValue`],setup(i){let s=P(i,`modelValue`),c=ke(()=>void 0),l={branch:`i-ph:git-branch-duotone`,tag:`i-ph:tag-duotone`};return(p,m)=>(t(),b(O($e),{modelValue:s.value,"onUpdate:modelValue":m[0]||=e=>s.value=e,"open-on-focus":``,"open-on-click":``},{default:R(()=>[e(O(tt),a(p.$attrs,{class:`h-9 min-w-0 inline-flex items-center gap-2 border border-base rounded bg-raised px-2 text-sm transition focus-within:ring-2 focus-within:ring-primary-500/40`}),{default:R(()=>[i.icon?(t(),u(`span`,{key:0,class:n([i.icon,`shrink-0 op-fade`]),"aria-hidden":`true`},null,2)):o(``,!0),e(O(et),{placeholder:i.placeholder,"aria-label":i.placeholder,class:`min-w-0 flex-1 bg-transparent color-base font-mono outline-none placeholder:op-mute`},null,8,[`placeholder`,`aria-label`])]),_:1},16),e(O(lt),{to:O(c)},{default:R(()=>[e(O(at),{position:`popper`,"side-offset":6,class:`z-dropdown max-h-72 min-w-[--reka-combobox-trigger-width] overflow-auto border border-base rounded-lg bg-glass:75 p-1 shadow-lg`,"data-af-animate":``},{default:R(()=>[e(O(ut),null,{default:R(()=>[(t(!0),u(f,null,d(i.suggestions,e=>(t(),b(O(ct),{key:`${e.kind}:${e.name}`,value:e.name,class:`flex cursor-pointer select-none items-center gap-2 rounded-md px-2 py-1.5 text-sm color-base font-mono outline-none transition data-[highlighted]:bg-hover`},{default:R(()=>[y(`span`,{class:n([l[e.kind],`shrink-0 op-fade`]),"aria-hidden":`true`},null,2),y(`span`,dt,r(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1})]),_:1},8,[`to`])]),_:1},8,[`modelValue`]))}}),pt={class:`relative min-h-screen flex flex-col`},mt={class:`mxa max-w-6xl w-full flex flex-1 flex-col px-6 py-16 sm:py-20`},ht={class:`grid items-start gap-12 lg:grid-cols-[minmax(0,1fr)_minmax(0,30rem)] lg:gap-16`},gt={class:`flex flex-col gap-8`},_t={class:`max-w-md text-sm leading-relaxed op-fade`},vt={class:`flex flex-col gap-3`},yt={class:`text-xs font-mono op-fade`},bt={class:`flex flex-wrap gap-2`},xt={class:`text-xs op-fade`},St={class:`max-w-md flex flex-col gap-3`},Ct={class:`text-xs font-mono op-fade`},wt={class:`min-w-0 flex flex-col gap-6`},Tt={key:0,class:`flex flex-col gap-2`},Et={class:`text-xs font-mono op-fade`},Dt={class:`flex flex-col border border-base rounded-lg py-1`},Ot={class:`min-w-0 flex-1 truncate font-mono`},kt=[`title`],At={key:1,class:`flex flex-col gap-2`},jt={class:`text-xs font-mono op-fade`},Mt={class:`flex flex-col border border-base rounded-lg py-1`},Nt={class:`shrink-0 text-xs op-fade`},Pt={class:`min-w-0 flex-1 truncate`},Ft=10,It=F({__name:`index`,setup(n){let i=E(Ce),a=ye(),{t:c}=j(),h=x(),g=x(``),_=x(``),v=s(()=>[...(h.value?.branches??[]).map(e=>({name:e,kind:`branch`})),...(h.value?.tags??[]).map(e=>({name:e,kind:`tag`}))]),S=s(()=>{let e=h.value?.currentBranch;return e&&e!==h.value?.defaultBranch?.name?e:void 0}),C=s(()=>(h.value?.branches??[]).filter(e=>e!==h.value?.defaultBranch?.name).slice(0,Ft));p(async()=>{h.value=await we(i),g.value||=h.value.defaultBranch?.ref??``,_.value||=h.value.currentBranch??`HEAD`});function w(){a.push(Z({kind:`compare`,range:`${g.value.trim()}...${_.value.trim()}`}))}let T=x(``),D=s(()=>ve(T.value));function k(){D.value&&a.push(D.value)}return _e(()=>c(`local.picker.title`)),(n,i)=>{let a=l(`RouterLink`);return t(),u(`div`,pt,[e(De),y(`main`,mt,[y(`section`,ht,[y(`div`,gt,[e(Oe),y(`p`,_t,r(n.$t(`local.picker.tagline`)),1),y(`form`,{class:`max-w-md flex items-stretch gap-2`,onSubmit:B(w,[`prevent`])},[e(ft,{modelValue:g.value,"onUpdate:modelValue":i[0]||=e=>g.value=e,suggestions:v.value,placeholder:n.$t(`local.picker.base`),icon:`i-ph:git-branch-duotone`,class:`flex-1`},null,8,[`modelValue`,`suggestions`,`placeholder`]),i[3]||=y(`span`,{class:`self-center font-mono op-fade`,"aria-hidden":`true`},`...`,-1),e(ft,{modelValue:_.value,"onUpdate:modelValue":i[1]||=e=>_.value=e,suggestions:v.value,placeholder:n.$t(`local.picker.head`),class:`flex-1`},null,8,[`modelValue`,`suggestions`,`placeholder`]),e(be,{type:`submit`,variant:`primary`,class:`pl-3 pr-4`,icon:`i-ph-arrow-right-bold`,disabled:!g.value.trim()||!_.value.trim()},{default:R(()=>[m(r(n.$t(`local.picker.compare`)),1)]),_:1},8,[`disabled`])],32),y(`div`,vt,[y(`h2`,yt,r(n.$t(`local.picker.shortcuts`)),1),y(`div`,bt,[S.value&&h.value?.defaultBranch?(t(),b(Ee,{key:0,to:O(Z)({kind:`branch`,branch:S.value}),parent:S.value},{default:R(()=>[y(`span`,xt,r(n.$t(`local.picker.against`,{base:h.value.defaultBranch.ref})),1)]),_:1},8,[`to`,`parent`])):o(``,!0),e(Ee,{to:O(Z)({kind:`worktree`}),parent:n.$t(`local.picker.worktree`)},null,8,[`to`,`parent`])])]),y(`div`,St,[y(`h2`,Ct,r(n.$t(`local.picker.github`)),1),y(`form`,{class:`flex items-stretch gap-2`,onSubmit:B(k,[`prevent`])},[e(ce,{modelValue:T.value,"onUpdate:modelValue":i[2]||=e=>T.value=e,icon:`i-ph:link-simple-duotone`,placeholder:`https://github.com/owner/repo/pull/123`,class:`flex-1`},null,8,[`modelValue`]),e(be,{type:`submit`,variant:`primary`,class:`pl-3 pr-4`,icon:`i-ph-arrow-right-bold`,disabled:!D.value},{default:R(()=>[m(r(n.$t(`landing.open`)),1)]),_:1},8,[`disabled`])],32)])]),y(`div`,wt,[C.value.length&&h.value?.defaultBranch?(t(),u(`section`,Tt,[y(`h2`,Et,r(n.$t(`local.picker.branches`)),1),y(`ul`,Dt,[(t(!0),u(f,null,d(C.value,s=>(t(),u(`li`,{key:s},[e(a,{to:O(Z)({kind:`branch`,branch:s}),class:`flex items-center gap-2 px-3 py-1.5 text-sm transition hover:bg-hover`},{default:R(()=>[i[4]||=y(`span`,{class:`i-ph:git-branch-duotone shrink-0 op-fade`,"aria-hidden":`true`},null,-1),y(`span`,Ot,r(s),1),s===S.value?(t(),u(`span`,{key:0,class:`i-ph:check-circle-duotone shrink-0 color-accent-teal`,title:n.$t(`local.picker.current`)},null,8,kt)):o(``,!0)]),_:2},1032,[`to`])]))),128))])])):o(``,!0),h.value?.commits.length?(t(),u(`section`,At,[y(`h2`,jt,r(n.$t(`local.picker.recentCommits`)),1),y(`ul`,Mt,[(t(!0),u(f,null,d(h.value.commits,n=>(t(),u(`li`,{key:n.sha},[e(a,{to:O(Z)({kind:`commit`,sha:n.sha}),title:n.subject,class:`flex items-center gap-3 px-3 py-1.5 text-sm transition hover:bg-hover`},{default:R(()=>[y(`code`,Nt,r(n.sha.slice(0,7)),1),y(`span`,Pt,r(n.subject),1)]),_:2},1032,[`to`,`title`])]))),128))])])):o(``,!0)])])]),e(Te)])}}});export{It as default};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import{$ as e,At as t,Bt as n,Cr as r,Dr as i,E as a,Er as o,G as s,H as c,Hn as l,Jt as u,K as d,Kt as f,M as p,Pt as m,Q as h,U as g,W as _,Wn as v,er as y,h as b,hn as x,m as S,mn as C,n as w,qt as T,sn as E,tt as D,u as O,un as k,xn as A,yn as j}from"./vue-i18n-CGHHpbTP.js";import{w as M,x as N}from"./runtime-dom.esm-bundler-Du_ZCcVN.js";import{k as P,n as ee}from"./ModelPicker-CDTiUMZ3.js";import{a as F,n as te,t as ne,u as re}from"./useDocumentTitle-BQJCa6Lm.js";import{d as ie,i as ae,n as oe,r as se,s as ce,t as I}from"./index-KDAJXf4E.js";import{t as L}from"./ActionButton-V4dY2wPS.js";import{a as le,r as ue,s as de,t as fe}from"./DisplayFileIcon-DWj5Zxib.js";import{n as pe,t as R}from"./GithubAvatar-DGJrpCsX.js";import{i as me,n as he,r as ge,t as _e}from"./LandingHero-DWdx6_8g.js";import{t as ve}from"./time-ago-Bdao9Hh1.js";import{t as ye}from"./uploadSession-BUj4FNau.js";var be=`javascript:${String.raw`(()=>{const R={'github.com':['https://pulls.review',[[/^\/([^/]+)\/([^/]+)\/pull\/(\d+).*$/,'/gh/$1/$2/$3'],[/^\/([^/]+)\/([^/]+)\/(commit\/[^/]+|compare\/.+\.\.\..+)$/,'/gh/$1/$2/$3'],[/^\/([^/]+)\/([^/]+)\/pulls\/?$/,'/gh/$1/$2']]],'pulls.review':['https://github.com',[[/^\/gh\/([^/]+)\/([^/]+)\/(\d+)\/?$/,'/$1/$2/pull/$3'],[/^\/gh\/([^/]+)\/([^/]+)\/(commit\/[^/]+|compare\/.+\.\.\..+)$/,'/$1/$2/$3'],[/^\/gh\/([^/]+)\/([^/]+)\/?$/,'/$1/$2/pulls']]]};const[o,r]=R[location.hostname]||[];const p=location.pathname;const m=r&&r.find(([x])=>x.test(p));m?location.href=o+p.replace(m[0],m[1]):alert('Open a pull request, commit or compare page on github.com or pulls.review.')})();`}`,xe=D({__name:`BookmarkletButton`,setup(e){return(e,t)=>(n(),_(L,{href:y(be),icon:`i-ph:bookmark-simple-duotone`,class:`cursor-grab active:cursor-grabbing`,title:e.$t(`landing.bookmarkletDrag`),onClick:t[0]||=M(()=>{},[`prevent`])},{default:j(()=>[...t[1]||=[h(` pulls.review ⇄ GitHub `,-1)]]),_:1},8,[`href`,`title`]))}}),Se=[`href`],Ce=D({__name:`ExternalLink`,props:{href:{}},setup(e){return(t,r)=>(n(),d(`a`,{href:e.href,target:`_blank`,rel:`noopener`,class:`inline-flex items-center gap-0.5 color-active hover:underline`},[T(t.$slots,`default`),r[0]||=g(`span`,{class:`i-ph:arrow-square-out text-[0.85em]`,"aria-hidden":`true`},null,-1)],8,Se))}}),we=typeof window<`u`,Te=we?window:null,Ee=we?document:null,z={OBJECT:0,ATTRIBUTE:1,CSS:2,TRANSFORM:3,CSS_VAR:4},B={NUMBER:0,UNIT:1,COLOR:2,COMPLEX:3},V={NONE:0,AUTO:1,FORCE:2},H={replace:0,none:1,blend:2},De=Symbol(),Oe=Symbol(),ke=Symbol(),Ae=Symbol(),je=Symbol(),U=1e-11,Me=0xe8d4a51000,Ne=1e3,Pe=[],Fe=(()=>{let e=new Map;return e.set(`x`,`translateX`),e.set(`y`,`translateY`),e.set(`z`,`translateZ`),e})(),Ie=[`perspective`,`translateX`,`translateY`,`translateZ`,`rotate`,`rotateX`,`rotateY`,`rotateZ`,`scale`,`scaleX`,`scaleY`,`scaleZ`,`skew`,`skewX`,`skewY`],Le=Ie.reduce((e,t)=>({...e,[t]:t+`(`}),{}),W=()=>{},Re=e=>e,ze=/\)\s*[-.\d]/,Be=/(^#([\da-f]{3}){1,2}$)|(^#([\da-f]{4}){1,2}$)/i,Ve=/rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/i,He=/rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(-?\d+|-?\d*.\d+)\s*\)/i,Ue=/hsl\(\s*(-?\d+|-?\d*.\d+)\s*,\s*(-?\d+|-?\d*.\d+)%\s*,\s*(-?\d+|-?\d*.\d+)%\s*\)/i,We=/hsla\(\s*(-?\d+|-?\d*.\d+)\s*,\s*(-?\d+|-?\d*.\d+)%\s*,\s*(-?\d+|-?\d*.\d+)%\s*,\s*(-?\d+|-?\d*.\d+)\s*\)/i,Ge=/[-+]?\d*\.?\d+(?:e[-+]?\d)?/gi,Ke=/^([-+]?\d*\.?\d+(?:e[-+]?\d+)?)([a-z]+|%)$/i,qe=/([a-z])([A-Z])/g,Je=/(\*=|\+=|-=)/,Ye=/var\(\s*(--[\w-]+)(?:\s*,\s*([^)]+))?\s*\)/,Xe={id:null,keyframes:null,playbackEase:null,playbackRate:1,frameRate:240,loop:0,reversed:!1,alternate:!1,autoplay:!0,persist:!1,duration:Ne,delay:0,loopDelay:0,ease:`out(2)`,composition:H.replace,modifier:Re,onBegin:W,onBeforeUpdate:W,onUpdate:W,onLoop:W,onPause:W,onComplete:W,onRender:W},Ze={current:null,root:Ee},G={defaults:Xe,precision:4,timeScale:1,tickThreshold:200,editor:null},Qe={version:`4.5.0`,engine:null};we&&(Te.AnimeJS||=[],Te.AnimeJS.push(Qe));var $e=e=>e.replace(qe,`$1-$2`).toLowerCase(),et=(e,t)=>e.indexOf(t)===0,tt=Date.now,nt=Array.isArray,rt=e=>e&&e.constructor===Object,it=e=>typeof e==`number`&&!isNaN(e),at=e=>typeof e==`string`,ot=e=>typeof e==`function`,K=e=>e===void 0,st=e=>K(e)||e===null,ct=e=>we&&e instanceof SVGElement,lt=e=>Be.test(e),ut=e=>et(e,`rgb`),dt=e=>et(e,`hsl`),ft=e=>lt(e)||(ut(e)||dt(e))&&(e[e.length-1]===`)`||!ze.test(e)),pt=e=>!G.defaults.hasOwnProperty(e),mt=[`opacity`,`rotate`,`overflow`,`color`],ht=(e,t)=>{if(mt.includes(t))return!1;if(e.getAttribute(t)||t in e){if(t===`scale`){let t=e.parentNode;return t&&t.tagName===`filter`}return!0}},gt=e=>at(e)?parseFloat(e):e,_t=Math.pow,vt=Math.sqrt,yt=Math.sin,bt=Math.cos,xt=Math.abs,St=Math.floor,Ct=Math.asin,wt=Math.PI,Tt=Math.round,Et=(e,t,n)=>e<t?t:e>n?n:e,q=(e,t)=>{if(t<0)return e;if(!t)return Tt(e);let n=10**t;return Tt(e*n)/n},Dt=(e,t,n)=>n===1?t:n===0?e:e+(t-e)*n,Ot=e=>e===1/0?Me:e===-1/0?-Me:e,kt=e=>e<=1e-11?U:Ot(q(e,11)),J=e=>nt(e)?[...e]:e,At=(e,t)=>{let n={...e};for(let r in t){let i=e[r];n[r]=K(i)?t[r]:i}return n},Y=(e,t,n,r=`_prev`,i=`_next`)=>{let a=e._head,o=i;for(n&&(a=e._tail,o=r);a;){let e=a[o];t(a),a=e}},jt=(e,t,n=`_prev`,r=`_next`)=>{let i=t[n],a=t[r];i?i[r]=a:e._head=a,a?a[n]=i:e._tail=i,t[n]=null,t[r]=null},Mt=(e,t,n,r=`_prev`,i=`_next`)=>{let a=e._tail;for(;a&&n&&n(a,t);)a=a[r];let o=a?a[i]:e._head;a?a[i]=t:e._head=t,o?o[r]=t:e._tail=t,t[r]=a,t[i]=o},Nt=(e,t,n)=>{let r=e.style.transform;if(r){let i=e[Ae],a=0,o=r.length,s;for(;a<o;){for(;a<o&&r.charCodeAt(a)===32;)a++;if(a>=o)break;let e=a;for(;a<o&&r.charCodeAt(a)!==40;)a++;if(a>=o)break;let t=r.substring(e,a),n=1,c=a+1,l=-1,u=-1;for(a++;a<o&&n>0;){let e=r.charCodeAt(a);e===40?n++:e===41?n--:e===44&&n===1&&(l===-1?l=a:u===-1&&(u=a)),a++}let d=a-1;t===`translate`||t===`translate3d`?(l===-1?i.translateX=r.substring(c,d).trim():(i.translateX=r.substring(c,l).trim(),u===-1?i.translateY=r.substring(l+1,d).trim():(i.translateY=r.substring(l+1,u).trim(),i.translateZ=r.substring(u+1,d).trim())),s=r.substring(c,d)):t===`scale`||t===`scale3d`?l===-1?i.scale=r.substring(c,d).trim():(i.scaleX=r.substring(c,l).trim(),u===-1?i.scaleY=r.substring(l+1,d).trim():(i.scaleY=r.substring(l+1,u).trim(),i.scaleZ=r.substring(u+1,d).trim())):i[t]=r.substring(c,d)}if(t===`translate3d`&&s)return n&&(n[t]=s),s;let c=i[t];if(!K(c))return n&&(n[t]=c),c}return t===`translate3d`?`0px, 0px, 0px`:t===`rotate3d`?`0, 0, 0, 0deg`:et(t,`scale`)?`1`:et(t,`rotate`)||et(t,`skew`)?`0deg`:`0px`},Pt=e=>{let t=``;for(let n=0,r=Ie.length;n<r;n++){let r=Ie[n],i=e[r];if(i!==void 0){if(r===`translateX`){let r=e.translateY;if(r!==void 0){let a=e.translateZ;a===void 0?(t+=`translate(${i},${r}) `,n+=1):(t+=`translate3d(${i},${r},${a}) `,n+=2);continue}}if(r===`scaleX`&&e.scale===void 0){let r=e.scaleY;if(r!==void 0){let a=e.scaleZ;a===void 0?(t+=`scale(${i},${r}) `,n+=1):(t+=`scale3d(${i},${r},${a}) `,n+=2);continue}}t+=`${Le[r]}${i}) `}r===`rotateZ`&&e.rotate3d!==void 0&&(t+=`rotate3d(${e.rotate3d}) `)}return e.matrix!==void 0&&(t+=`matrix(${e.matrix}) `),e.matrix3d!==void 0&&(t+=`matrix3d(${e.matrix3d}) `),t},Ft=[];function It(e,t){if(!e)return null;let n=Ft.length;outer:for(let r=0;r<n;r++){let n=Ft[r];if(n.detect&&!n.detect(e))continue;let i=n.targetAdapters;for(let n=0,r=i.length;n<r;n++){let r=i[n];if(r.detect(e)){let n=r.props[t];if(n&&(!n.gate||n.gate(e)))return n;break outer}}}for(let r=0;r<n;r++){let n=Ft[r];if(n.detect&&!n.detect(e))continue;let i=n.propertyResolvers;for(let n=0,r=i.length;n<r;n++){let r=i[n](e,t);if(r)return r}}return null}var Lt=e=>{let t=Ve.exec(e)||He.exec(e),n=K(t[4])?1:+t[4];return[+t[1],+t[2],+t[3],n]},Rt=e=>{let t=e.length,n=t===4||t===5;return[+(`0x`+e[1]+e[n?1:2]),+(`0x`+e[n?2:3]+e[n?2:4]),+(`0x`+e[n?3:5]+e[n?3:6]),t===5||t===9?+((`0x`+e[n?4:7]+e[n?4:8])/255).toFixed(3):1]},zt=(e,t,n)=>(n<0&&(n+=1),n>1&&--n,n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e),Bt=e=>{let t=Ue.exec(e)||We.exec(e),n=t[1]/360,r=t[2]/100,i=t[3]/100,a=K(t[4])?1:+t[4],o,s,c;if(r===0)o=s=c=i;else{let e=i<.5?i*(1+r):i+r-i*r,t=2*i-e;o=q(zt(t,e,n+1/3)*255,0),s=q(zt(t,e,n)*255,0),c=q(zt(t,e,n-1/3)*255,0)}return[o,s,c,a]},Vt=e=>ut(e)?Lt(e):lt(e)?Rt(e):dt(e)?Bt(e):[0,0,0,1],X=(e,t)=>K(e)?t:e,Ht=(e,t)=>{let n=e.match(Ye),r=t[Oe]?t:document.documentElement,i=getComputedStyle(r)?.getPropertyValue(n[1]);return(!i||i.trim()===``)&&n[2]&&(i=n[2].trim()),i||0},Ut=(e,t,n,r,i,a)=>{if(ot(e)){if(!i){let i=e(t,n,r,a);return isNaN(+i)?i||0:+i}let o=()=>{let i=e(t,n,r,a);return isNaN(+i)?i||0:+i};return i.func=o,o()}if(at(e)&&et(e,`var(`)){if(!i)return Ht(e,t);let n=()=>Ht(e,t);return i.func=n,n()}return e},Wt=(e,t)=>e[Oe]?e[ke]&&ht(e,t)?z.ATTRIBUTE:Ie.includes(t)||Fe.get(t)?z.TRANSFORM:et(t,`--`)?z.CSS_VAR:t in e.style?z.CSS:t in e?z.OBJECT:z.ATTRIBUTE:z.OBJECT,Gt=(e,t,n)=>{let r=e.style[t];r&&n&&(n[t]=r);let i=r||getComputedStyle(e[je]||e).getPropertyValue(t);return i===`auto`?`0`:i},Kt=(e,t,n,r)=>{let i=K(n)?Wt(e,t):n,a=It(e,t);if(a){let n=a.get(e);return n&&r&&(r[t]=n),n??0}if(i===z.OBJECT){let n=e[t];return n&&r&&(r[t]=n),n||0}if(i===z.ATTRIBUTE){let n=e.getAttribute(t);return n&&r&&(r[t]=n),n}return i===z.TRANSFORM?Nt(e,t,r):i===z.CSS_VAR?Gt(e,t,r).trimStart():Gt(e,t,r)},qt=(e,t,n)=>n===`-`?e-t:n===`+`?e+t:e*t,Jt=()=>({t:B.NUMBER,n:0,u:null,o:null,d:null,s:null}),Yt=(e,t)=>{if(t.t=B.NUMBER,t.n=0,t.u=null,t.o=null,t.d=null,t.s=null,!e)return t;let n=+e;if(!isNaN(n))return t.n=n,t;let r=e;r[1]===`=`&&(t.o=r[0],r=r.slice(2));let i=!r.includes(` `)&&Ke.exec(r);if(i)return t.t=B.UNIT,t.n=+i[1],t.u=i[2],t;if(t.o)return t.n=+r,t;if(ft(r))return t.t=B.COLOR,t.d=Vt(r),t;{let e=r.match(Ge);return t.t=B.COMPLEX,t.d=e?e.map(Number):[],t.s=r.split(Ge)||[],t}},Xt=(e,t)=>(t.t=e._valueType,t.n=e._toNumber,t.u=e._unit,t.o=null,t.d=J(e._toNumbers),t.s=J(e._strings),t),Zt=Jt(),Qt=(e,t,n)=>{let r=e._modifier,i=e._fromNumbers,a=e._toNumbers,o=e._strings,s=o[0];for(let c=0,l=a.length;c<l;c++){let l=r(q(Dt(i[c],a[c],t),n)),u=o[c+1];s+=`${u?l+u:l}`,e._numbers[c]=l}return s},$t=(e,t,n,r,i)=>{let a=e.parent,o=e.duration,s=e.completed,c=e.iterationDuration,l=e.iterationCount,u=e._currentIteration,d=e._loopDelay,f=e._reversed,p=e._alternate,m=e._hasChildren,h=e._delay,g=e._currentTime,_=h+c,v=t-h,y=Et(g,-h,o),b=Et(v,-h,o),x=v-g,S=b>0,C=b>=o,w=o<=U,T=i===V.FORCE,E=0,D=v,O=0;if(l>1){let t=c+(C?0:d),n=~~(b/t);e._currentIteration=Et(n,0,l),C&&e._currentIteration--,E=e._currentIteration%2,D=b-n*t||0}let k=f^(p&&E),A=e._ease,j=C?k?0:o:k?c-D:D;A&&(j=c*A(j/c)||0);let M=(a?a.backwards:v<g)?!k:!!k;if(e._currentTime=v,e._iterationTime=j,e.backwards=M,S&&!e.began?(e.began=!0,!n&&(!a||!M&&a.began)&&e.onBegin(e)):v<=0&&(e.began=!1),!n&&!m&&S&&e._currentIteration!==u&&e.onLoop(e),T||i===V.AUTO&&(t>=(a&&h>0?0:h)&&t<=_||t<=h&&y>h||t>=_&&y!==o)||j>=_&&y!==o||j<=h&&y>0&&!C||t<=y&&y===o&&s||C&&!s&&w){if(S&&(e.computeDeltaTime(y),n||e.onBeforeUpdate(e)),!m){let t=T||(M?x*-1:x)>=G.tickThreshold,i=q(e._offset+(a?a._offset:0)+h+j,12),o=e._head,s,c,l,u,d=0;for(;o;){let e=o._composition,n=o._currentTime,a=o._changeDuration,f=o._absoluteStartTime+o._changeDuration,p=o._nextRep,m=o._prevRep,h=e!==H.none,g=m?m._absoluteStartTime+m._changeDuration:0,_=m&&m.parent!==o.parent,v=!p||p._isOverridden?f:p.parent===o.parent?f+p._delay:p._absoluteStartTime<p._absoluteUpdateStartTime?p._absoluteStartTime:p._absoluteUpdateStartTime;if((t||(n!==a||i<=v||m&&!_&&(!p||p.parent!==o.parent))&&(n!==0||i>=o._absoluteStartTime||_&&!o._hasFromValue&&!m._isOverridden&&i>=g||p&&!p._isOverridden&&p.parent===o.parent&&p._currentTime!==0&&j<p._startTime))&&(!m||_||j>=o._startTime)&&(!h||!o._isOverridden&&(!o._isOverlapped||i<=f)&&(!p||p._isOverridden||i<=v)&&(!m||m._isOverridden||(_?i>=o._absoluteStartTime||!o._hasFromValue&&i>=g:i>=g+o._delay)))){let t=o._currentTime=Et(j-o._startTime,0,a),n=o._ease(t/o._updateDuration),i=o._modifier,f=o._valueType,p=o._tweenType,m=p===z.OBJECT,g=f===B.NUMBER,_=g&&m||n===0||n===1?-1:G.precision,v,y;if(g)v=y=i(q(Dt(o._fromNumber,o._toNumber,n),_));else if(f===B.UNIT)y=i(q(Dt(o._fromNumber,o._toNumber,n),_)),v=`${y}${o._unit}`;else if(f===B.COLOR){let e=o._numbers,t=o._fromNumbers,a=o._toNumbers,s=1-n,c=t[0],l=t[1],u=t[2],d=a[0],f=a[1],p=a[2];e[0]=i(Math.sqrt(c*c*s+d*d*n)),e[1]=i(Math.sqrt(l*l*s+f*f*n)),e[2]=i(Math.sqrt(u*u*s+p*p*n)),e[3]=i(Dt(t[3],a[3],n)),(!o._setter||r)&&(v=`rgba(${q(e[0],0)},${q(e[1],0)},${q(e[2],0)},${e[3]})`)}else f===B.COMPLEX&&(v=Qt(o,n,_));if(h&&(o._number=y),!r&&e!==H.blend){let e=o.property;s=o.target,o._setter?o._setter(s,y,o):m?s[e]=v:p===z.ATTRIBUTE?s.setAttribute(e,v):(c=s.style,p===z.TRANSFORM?(s!==l&&(l=s,u=s[Ae]),u[e]=v,d=1):p===z.CSS?c[e]=v:p===z.CSS_VAR&&c.setProperty(e,v)),S&&(O=1)}else o._value=v}else n&&m&&!_&&j<o._startTime&&(o._currentTime=0);d&&o._renderTransforms&&(c.transform=Pt(u),d=0),o=o._next}!n&&O&&e.onRender(e)}!n&&S&&e.onUpdate(e)}return a&&w?!n&&(a.began&&!M&&v>0&&!s||M&&v<=1e-11&&s)&&(e.onComplete(e),e.completed=!M):S&&C?l===1/0?e._startTime+=e.duration:e._currentIteration>=l-1&&(e.paused=!0,!s&&!m&&(e.completed=!0,!n&&(!a||!M&&a.began)&&(e.onComplete(e),e._resolve(e)))):e.completed=!1,O},en=(e,t,n,r,i)=>{let a=e._currentIteration;if($t(e,t,n,r,i),e._hasChildren){let o=e,s=o.backwards,c=r?t:o._iterationTime,l=tt(),u=0,d=!0;if(!r&&o._currentIteration!==a){let e=o.iterationDuration;Y(o,t=>{if(!s)!t.completed&&!t.backwards&&t._currentTime<t.iterationDuration&&$t(t,e,n,1,V.FORCE),t.began=!1,t.completed=!1;else{let r=t.duration,i=t._offset+t._delay,a=i+r;!n&&r<=1e-11&&(!i||a===e)&&t.onComplete(t)}}),n||o.onLoop(o)}Y(o,e=>{let t=q((c-e._offset)*e._speed,12);if(s&&t>e._delay+e.duration)return;let a=e._fps<o._fps?e.requestTick(l):i;u+=$t(e,t,n,r,a),!e.completed&&d&&(d=!1)},s),!n&&u&&o.onRender(o),(d||s)&&o._currentTime>=o.duration&&(o.paused=!0,o.completed||(o.completed=!0,n||(o.onComplete(o),o._resolve(o))))}},tn={},nn=(e,t,n)=>{if(n===z.TRANSFORM)return Fe.get(e)||e;if(n===z.CSS||n===z.ATTRIBUTE&&ct(t)&&e in t.style){let t=tn[e];if(t)return t;{let t=e&&$e(e);return tn[e]=t,t}}return e},rn=(e,t=!1)=>{if(e._hasChildren)Y(e,e=>rn(e,t),!0);else{let n=e;n.pause(),Y(n,e=>{let r=e.property,i=e.target,a=e._tweenType,o=e._inlineValue,s=st(o)||o===``;if(e._setter){if(!t&&!s){if(Yt(o,Zt),Zt.d){let t=Zt.d,n=e._numbers;for(let e=0,r=t.length;e<r;e++)n[e]=t[e]}else e._number=Zt.n;e._setter(e.target,e._number,e)}}else if(a===z.OBJECT)!t&&!s&&(i[r]=o);else if(i[Oe]){if(a===z.ATTRIBUTE)t||(s?i.removeAttribute(r):i.setAttribute(r,o));else{let t=i.style;if(a===z.TRANSFORM){let n=i[Ae];s?delete n[r]:n[r]=o,e._renderTransforms&&(Object.keys(n).length?t.transform=Pt(n):t.removeProperty(`transform`))}else s?t.removeProperty($e(r)):t[r]=o}}i[Oe]&&n._tail===e&&n.targets.forEach(e=>{e.getAttribute&&e.getAttribute(`style`)===``&&e.removeAttribute(`style`)})})}return e},an=class{constructor(e=0){this.deltaTime=0,this._currentTime=e,this._lastTickTime=e,this._startTime=e,this._lastTime=e,this._frameDuration=Ne/240,this._fps=240,this._speed=1,this._hasChildren=!1,this._head=null,this._tail=null}get fps(){return this._fps}set fps(e){let t=+e,n=t<1e-11?U:t,r=Ne/n;n>Xe.frameRate&&(Xe.frameRate=n),this._fps=n,this._frameDuration=r}get speed(){return this._speed}set speed(e){let t=+e;this._speed=t<1e-11?U:t}requestTick(e){let t=this._frameDuration,n=e-this._lastTickTime,r=t*.25;return n+(r<4?r:4)<t?V.NONE:(this._lastTickTime=n>=t?e-n%t:e,V.AUTO)}computeDeltaTime(e){let t=e-this._lastTime;return this.deltaTime=t,this._lastTime=e,t}},on={animation:null,update:W},sn=e=>{let t=on.animation;return t||(t={duration:U,computeDeltaTime:W,_offset:0,_delay:0,_head:null,_tail:null},on.animation=t,on.update=()=>{e.forEach(e=>{for(let t in e){let n=e[t],r=n._head;if(r){let e=r._valueType,t=e===B.COMPLEX||e===B.COLOR?J(r._fromNumbers):null,i=r._fromNumber,a=n._tail;for(;a&&a!==r;){if(t)for(let e=0,n=a._numbers.length;e<n;e++)t[e]+=a._numbers[e];else i+=a._number;a=a._prevAdd}r._toNumber=i,r._toNumbers=t}}}),$t(t,1,1,0,V.FORCE)}),t},cn=we?requestAnimationFrame:setImmediate,ln=we?cancelAnimationFrame:clearImmediate,un=class extends an{constructor(e){super(e),this.useDefaultMainLoop=!0,this.pauseOnDocumentHidden=!0,this.defaults=Xe,this.paused=!0,this.reqId=0}update(){let e=this._currentTime=tt();if(this.requestTick(e)){this.computeDeltaTime(e);let t=this._speed,n=this._fps,r=this._head;for(;r;){let i=r._next;r.paused?(jt(this,r),this._hasChildren=!!this._tail,r._running=!1,r.completed&&!r._cancelled&&r.cancel()):en(r,(e-r._startTime)*r._speed*t,0,0,r._fps<n?r.requestTick(e):V.AUTO),r=i}on.update()}}wake(){return this.useDefaultMainLoop&&!this.reqId&&(this.requestTick(tt()),this.reqId=cn(dn)),this}pause(){if(this.reqId)return this.paused=!0,fn()}resume(){if(this.paused)return this.paused=!1,Y(this,e=>e.resetTime()),this.wake()}get speed(){return this._speed*(G.timeScale===1?1:Ne)}set speed(e){let t=e*G.timeScale;this._speed!==t&&(this._speed=t,Y(this,e=>e.speed=e._speed))}get timeUnit(){return G.timeScale===1?`ms`:`s`}set timeUnit(e){let t=.001,n=e===`s`,r=n?t:1;if(G.timeScale!==r){G.timeScale=r,G.tickThreshold=200*r;let e=n?t:Ne;this.defaults.duration*=e,this._speed*=e}}get precision(){return G.precision}set precision(e){G.precision=e}},Z=(()=>{let e=new un(tt());return we&&(Qe.engine=e,Ee.addEventListener(`visibilitychange`,()=>{e.pauseOnDocumentHidden&&(Ee.hidden?e.pause():e.resume())})),e})(),dn=()=>{Z._head?(Z.reqId=cn(dn),Z.update()):Z.reqId=0},fn=()=>(ln(Z.reqId),Z.reqId=0,Z),pn={_rep:new WeakMap,_add:new Map},mn=(e,t,n=`_rep`)=>{let r=pn[n],i=r.get(e);return i||(i={},r.set(e,i)),i[t]?i[t]:i[t]={_head:null,_tail:null}},hn=(e,t)=>e._isOverridden||e._absoluteStartTime>t._absoluteStartTime,gn=e=>{e._isOverlapped=1,e._isOverridden=1,e._changeDuration=U,e._currentTime=U},_n=(e,t)=>{let n=e._composition;if(n===H.replace){let n=e._absoluteStartTime;Mt(t,e,hn,`_prevRep`,`_nextRep`);let r=e._prevRep;if(r){let t=r.parent,i=r._absoluteEndTime;if(e.parent.id!==t.id&&t.iterationCount>1&&i+(t.duration-t.iterationDuration)>n){gn(r);let e=r._prevRep;for(;e&&e.parent.id===t.id;)gn(e),e=e._prevRep}let a=e._absoluteUpdateStartTime;if(i>a){let e=r._startTime,t=q(a-(i-(e+r._updateDuration))-e,12);r._changeDuration=t,r._currentTime=t,r._isOverlapped=1,t<1e-11&&gn(r)}let o=e.parent.parent;if(!o||o!==t.parent){let e=!0;if(Y(t,t=>{t._isOverlapped||(e=!1)}),e){let e=t.parent;if(e){let n=!0;Y(e,e=>{e!==t&&Y(e,e=>{e._isOverlapped||(n=!1)})}),n&&e.cancel()}else t.cancel()}}}}else if(n===H.blend){let t=mn(e.target,e.property,`_add`),n=sn(pn._add),r=t._head;r||(r={...e},r._composition=H.replace,r._updateDuration=U,r._startTime=0,r._numbers=J(e._fromNumbers),r._number=0,r._next=null,r._prev=null,Mt(t,r),Mt(n,r));let i=e._toNumber;if(e._fromNumber=r._fromNumber-i,e._toNumber=0,e._numbers=J(e._fromNumbers),e._number=0,r._fromNumber=i,e._toNumbers.length){let t=J(e._toNumbers);t.forEach((t,n)=>{e._fromNumbers[n]=r._fromNumbers[n]-t,e._toNumbers[n]=0}),r._fromNumbers=t}Mt(t,e,null,`_prevAdd`,`_nextAdd`)}return e},vn=e=>{let t=e._composition;if(t!==H.none){let n=e.target,r=e.property,i=pn._rep.get(n)[r];if(jt(i,e,`_prevRep`,`_nextRep`),t===H.blend){let t=pn._add,i=t.get(n);if(!i)return;let a=i[r],o=on.animation;jt(a,e,`_prevAdd`,`_nextAdd`);let s=a._head;if(s&&s===a._tail){jt(a,s,`_prevAdd`,`_nextAdd`),jt(o,s);let e=!0;for(let t in i)if(i[t]._head){e=!1;break}e&&t.delete(n)}}}return e},yn=(e,t,n)=>{let r=!1;return Y(t,i=>{let a=i.target;if(e.includes(a)){let e=i.property,o=i._tweenType,s=nn(n,a,o);(!s||s&&s===e)&&(i.parent._tail===i&&i._tweenType===z.TRANSFORM&&i._prev&&i._prev._tweenType===z.TRANSFORM&&(i._prev._renderTransforms=1),jt(t,i),vn(i),r=!0)}},!0),r},bn=(e,t,n)=>{let r=t||Z,i;if(r._hasChildren){let t=0;Y(r,a=>{if(!a._hasChildren){if(i=yn(e,a,n),i&&!a._head)a.cancel(),jt(r,a);else{let e=a._offset+a._delay+a.duration;e>t&&(t=e)}}a._head?bn(e,a,n):a._hasChildren=!1},!0),K(r.iterationDuration)||(r.iterationDuration=t)}else i=yn(e,r,n);i&&!r._head&&(r._hasChildren=!1,r.cancel&&r.cancel())},xn=e=>(e.paused=!0,e.began=!1,e.completed=!1,e),Sn=e=>e._cancelled?(e._hasChildren?Y(e,Sn):Y(e,e=>{e._composition!==H.none&&_n(e,mn(e.target,e.property))}),e._cancelled=0,e):e,Cn=0,wn=(e,t)=>e._priority>t._priority,Tn=class extends an{constructor(e={},t=null,n=0){super(0),++Cn;let{id:r,delay:i,duration:a,reversed:o,alternate:s,loop:c,loopDelay:l,autoplay:u,frameRate:d,playbackRate:f,priority:p,onComplete:m,onLoop:h,onPause:g,onBegin:_,onBeforeUpdate:v,onUpdate:y}=e;Ze.current&&Ze.current.register(this);let b=t?0:Z._lastTickTime,x=t?t.defaults:G.defaults,S=ot(i)||K(i)?x.delay:+i,C=ot(a)||K(a)?1/0:+a,w=X(c,x.loop),T=X(l,x.loopDelay),E=w===!0||w===1/0||w<0?1/0:w+1,D=0;t?D=n:(Z.reqId||Z.requestTick(tt()),D=(Z._lastTickTime-Z._startTime)*G.timeScale),this.id=K(r)?Cn:r,this.parent=t,this.duration=Ot((C+T)*E-T)||1e-11,this.backwards=!1,this.paused=!0,this.began=!1,this.completed=!1,this.onBegin=_||x.onBegin,this.onBeforeUpdate=v||x.onBeforeUpdate,this.onUpdate=y||x.onUpdate,this.onLoop=h||x.onLoop,this.onPause=g||x.onPause,this.onComplete=m||x.onComplete,this.iterationDuration=C,this.iterationCount=E,this._autoplay=!t&&X(u,x.autoplay),this._offset=D,this._delay=S,this._loopDelay=T,this._iterationTime=0,this._currentIteration=0,this._resolve=W,this._running=!1,this._reversed=+X(o,x.reversed),this._reverse=this._reversed,this._cancelled=0,this._alternate=X(s,x.alternate),this._prev=null,this._next=null,this._lastTickTime=b,this._startTime=b,this._lastTime=b,this._fps=X(d,x.frameRate),this._speed=X(f,x.playbackRate),this._priority=+X(p,1)}get cancelled(){return!!this._cancelled}set cancelled(e){e?this.cancel():this.reset(!0).play()}get currentTime(){return Et(q(this._currentTime,G.precision),-this._delay,this.duration)}set currentTime(e){let t=this.paused;this.pause().seek(+e),t||this.resume()}get iterationCurrentTime(){return Et(q(this._iterationTime,G.precision),0,this.iterationDuration)}set iterationCurrentTime(e){this.currentTime=this.iterationDuration*this._currentIteration+e}get progress(){return Et(q(this._currentTime/this.duration,10),0,1)}set progress(e){this.currentTime=this.duration*e}get iterationProgress(){return Et(q(this._iterationTime/this.iterationDuration,10),0,1)}set iterationProgress(e){let t=this.iterationDuration;this.currentTime=t*this._currentIteration+t*e}get currentIteration(){return this._currentIteration}set currentIteration(e){this.currentTime=this.iterationDuration*Et(+e,0,this.iterationCount-1)}get reversed(){return!!this._reversed}set reversed(e){e?this.reverse():this.play()}get speed(){return super.speed}set speed(e){super.speed=e,this.resetTime()}reset(e=!1){return Sn(this),this._reversed&&!this._reverse&&(this.reversed=!1),this._iterationTime=this.iterationDuration,en(this,0,1,~~e,V.FORCE),xn(this),this._hasChildren&&Y(this,xn),this}init(e=!1){this.fps=this._fps,this.speed=this._speed,!e&&this._hasChildren&&en(this,this.duration,1,~~e,V.FORCE),this.reset(e);let t=this._autoplay;return t===!0?this.resume():t&&!K(t.linked)&&t.link(this),this}resetTime(){let e=1/(this._speed*Z._speed);return this._startTime=tt()-(this._currentTime+this._delay)*e,this}pause(){return this.paused?this:(this.paused=!0,this.onPause(this),this)}resume(){return this.paused?(this.paused=!1,this.duration<=1e-11&&!this._hasChildren?en(this,U,0,0,V.FORCE):(this._running||=(Mt(Z,this,wn),Z._hasChildren=!0,!0),this.resetTime(),this._startTime-=12,Z.wake()),this):this}restart(){return this.reset().resume()}seek(e,t=0,n=0){Sn(this),this.completed=!1;let r=this.paused;return this.paused=!0,en(this,e+this._delay,~~t,~~n,V.AUTO),r?this:this.resume()}alternate(){let e=this._reversed,t=this.iterationCount,n=this.iterationDuration,r=t===1/0?St(Me/n):t;return this._reversed=+(this._alternate&&!(r%2)?e:!e),t===1/0?this.iterationProgress=this._reversed?1-this.iterationProgress:this.iterationProgress:this.seek(n*r-this._currentTime),this.resetTime(),this}play(){return this._reversed&&this.alternate(),this.resume()}reverse(){return this._reversed||this.alternate(),this.resume()}cancel(){return this._hasChildren?Y(this,e=>e.cancel(),!0):Y(this,vn),this._cancelled=1,this.pause()}stretch(e){let t=this.duration,n=kt(e);if(t===n)return this;let r=e/t,i=e<=U;return this.duration=i?U:n,this.iterationDuration=i?U:kt(this.iterationDuration*r),this._offset*=r,this._delay*=r,this._loopDelay*=r,this}revert(){en(this,0,1,0,V.AUTO);let e=this._autoplay;return e&&e.linked&&e.linked===this&&e.revert(),this.cancel()}complete(e=0){return this.seek(this.duration,e).cancel()}then(e=W){let t=this.then,n=()=>{this.then=null,e(this),this.then=t,this._resolve=W};return new Promise(e=>(this._resolve=()=>e(n()),this.completed&&this._resolve(),this))}};function En(e){let t=at(e)?Ze.root.querySelectorAll(e):e;if(t instanceof NodeList||t instanceof HTMLCollection)return t}function Dn(e){if(st(e))return[];if(!we)return nt(e)&&e.flat(1/0)||[e];if(nt(e)){let t=e.flat(1/0),n=[];for(let e=0,r=t.length;e<r;e++){let r=t[e];if(!st(r)){let e=En(r);if(e)for(let t=0,r=e.length;t<r;t++){let r=e[t];if(!st(r)){let e=!1;for(let t=0,i=n.length;t<i;t++)if(n[t]===r){e=!0;break}e||n.push(r)}}else{let e=!1;for(let t=0,i=n.length;t<i;t++)if(n[t]===r){e=!0;break}e||n.push(r)}}}return n}let t=En(e);return t?Array.from(t):[e]}function On(e){let t=Dn(e),n=t.length;for(let e=0;e<n;e++){let n=t[e];if(!n[De]){n[De]=!0;let e=ct(n);(n.nodeType||e)&&(n[Oe]=!0,n[ke]=e,n[Ae]={})}}return t}var kn={deg:1,rad:180/wt,turn:360},An={},jn=(e,t,n,r=!1)=>{let i=t.u,a=t.n;if(t.t===B.UNIT&&i===n)return t;let o=a+i+n,s=An[o];if(!K(s)&&!r)t.n=s;else{let r;if(i in kn)r=a*kn[i]/kn[n];else{let t=e.cloneNode(),o=e.parentNode,s=o&&o!==Ee?o:Ee.body;s.appendChild(t);let c=t.style;c.width=100+i;let l=t.offsetWidth||100;c.width=100+n;let u=l/(t.offsetWidth||100);s.removeChild(t),r=u*a}t.n=r,An[o]=r}return t.t,B.UNIT,t.u=n,t},Mn=e=>e,Nn=(e=1.68)=>t=>_t(t,+e),Pn={in:e=>t=>e(t),out:e=>t=>1-e(1-t),inOut:e=>t=>t<.5?e(t*2)/2:1-e(t*-2+2)/2,outIn:e=>t=>t<.5?(1-e(1-t*2))/2:(e(t*2-1)+1)/2},Fn=wt/2,In=wt*2,Ln={"":Nn,Quad:Nn(2),Cubic:Nn(3),Quart:Nn(4),Quint:Nn(5),Sine:e=>1-bt(e*Fn),Circ:e=>1-vt(1-e*e),Expo:e=>e?_t(2,10*e-10):0,Bounce:e=>{let t,n=4;for(;e<((t=_t(2,--n))-1)/11;);return 1/_t(4,3-n)-7.5625*_t((t*3-2)/22-e,2)},Back:(e=1.7)=>t=>(+e+1)*t*t*t-+e*t*t,Elastic:(e=1,t=.3)=>{let n=Et(+e,1,10),r=Et(+t,U,2),i=r/In*Ct(1/n),a=In/r;return e=>e===0||e===1?e:-n*_t(2,-10*(1-e))*yt((1-e-i)*a)}},Rn=(()=>{let e={linear:Mn,none:Mn};for(let t in Pn)for(let n in Ln){let r=Ln[n],i=Pn[t];e[t+n]=n===``||n===`Back`||n===`Elastic`?(e,t)=>i(r(e,t)):i(r)}return e})(),zn={linear:Mn,none:Mn},Bn=e=>{if(zn[e])return zn[e];if(e.indexOf(`(`)<=-1){let t=Pn[e]||e.includes(`Back`)||e.includes(`Elastic`)?Rn[e]():Rn[e];return t?zn[e]=t:Mn}{let t=e.slice(0,-1).split(`(`),n=Rn[t[0]];return n?zn[e]=n(...t[1].split(`,`)):Mn}},Vn=[`steps(`,`irregular(`,`linear(`,`cubicBezier(`],Hn=e=>{if(at(e)){for(let t=0,n=Vn.length;t<n;t++)if(et(e,Vn[t]))return console.warn(`String syntax for \`ease: "${e}"\` has been removed from the core and replaced by importing and passing the easing function directly: \`ease: ${e}\``),Mn}return ot(e)?e:at(e)?Bn(e):Mn},Q=Jt(),$=Jt(),Un={},Wn={func:null},Gn={func:null},Kn=[null],qn=[null,null],Jn={to:null},Yn=0,Xn=0,Zn,Qn,$n=(e,t)=>{let n={};if(nt(e)){let t=[].concat(...e.map(e=>Object.keys(e))).filter(pt);for(let r=0,i=t.length;r<i;r++){let i=t[r];n[i]=e.map(e=>{let t={};for(let n in e){let r=e[n];pt(n)?n===i&&(t.to=r):t[n]=r}return t})}}else{let r=X(t.duration,G.defaults.duration);Object.keys(e).map(t=>({o:parseFloat(t)/100,p:e[t]})).sort((e,t)=>e.o-t.o).forEach(e=>{let t=e.o,i=e.p;for(let e in i)if(pt(e)){let a=n[e];a||=n[e]=[];let o=t*r,s=a.length,c=a[s-1],l={to:i[e]},u=0;for(let e=0;e<s;e++)u+=a[e].duration;s===1&&(l.from=c.to),i.ease&&(l.ease=i.ease),l.duration=o-(s?u:0),a.push(l)}return e});for(let e in n){let t=n[e],r;for(let e=0,n=t.length;e<n;e++){let n=t[e],i=n.ease;n.ease=r||void 0,r=i}t[0].duration||t.shift()}}return n},er=class extends Tn{constructor(e,t,n,r,i=!1,a=0,o){super(t,n,r),this._head,this._tail,++Xn;let s=On(e),c=s.length,l=t.keyframes,u=l?At($n(l,t),t):t,{id:d,delay:f,duration:p,ease:m,playbackEase:h,modifier:g,composition:_,onRender:v}=u,y=n?n.defaults:G.defaults,b=X(m,y.ease),x=X(h,y.playbackEase),S=x?Hn(x):null,C=!K(b.ease),w=C?b.ease:X(m,S?`linear`:y.ease),T=C?b.settlingDuration:X(p,y.duration),E=X(f,y.delay),D=g||y.modifier,O=K(_)&&c>=1e3?H.none:K(_)?y.composition:_,k=this._offset+(n?n._offset:0);C&&(b.parent=this);let A=NaN,j=NaN,M=0,N=0;for(let e=0;e<c;e++){let t=s[e],r=a||e,c=o||s,l=NaN,d=NaN;for(let e in u)if(pt(e)){let a=Wt(t,e),o=It(t,e),s=nn(e,t,a),f=u[e],p=nt(f);if(i&&!p&&(qn[0]=f,qn[1]=f,f=qn),p){let e=f.length,t=!rt(f[0]);e===2&&t?(Jn.to=f,Kn[0]=Jn,Zn=Kn):e>2&&t?(Zn=[],f.forEach((e,t)=>{t?t===1?(qn[1]=e,Zn.push(qn)):Zn.push(e):qn[0]=e})):Zn=f}else Kn[0]=f,Zn=Kn;let m=null,h=null,g=NaN,_=0,v=0;for(let e=Zn.length;v<e;v++){let i=Zn[v];rt(i)?Qn=i:(Jn.to=i,Qn=Jn),Wn.func=null,Gn.func=null;let l=Ut(X(Qn.composition,O),t,r,c,null,null),u=it(l)?l:H[l];!m&&u!==H.none&&(m=mn(t,s));let d=m?m._tail:null,f=n&&d&&d.parent.parent===n?d:h,p=Ut(Qn.to,t,r,c,Wn,f),y;rt(p)&&!K(p.to)?(Qn=p,y=p.to):y=p;let b=Ut(Qn.from,t,r,c,Gn,f),x=Qn.ease||w,S=Ut(x,t,r,c,null,f),C=ot(S)||at(S)?S:x,A=!K(C)&&!K(C.ease),j=A?C.ease:C,P=A?C.settlingDuration:Ut(X(Qn.duration,e>1?Ut(T,t,r,c,null,f)/e:T),t,r,c,null,f),ee=Ut(X(Qn.delay,v?0:E),t,r,c,null,f),F=Qn.modifier||D,te=!K(b),ne=!K(y),re=nt(y),ie=re||te&&ne,ae=h?_:0,oe=h?_+ee:ee,se=q(k+oe,12),ce=q(k+ae,12);!N&&(te||re)&&(N=1);let I=h;if(u!==H.none){let e=m._head;for(;e&&e._absoluteStartTime<=se;)if(e._isOverridden||(I=e),e=e._nextRep,e&&e._absoluteStartTime>=se)for(;e;)gn(e),e=e._nextRep}if(ie){Yt(re?Ut(y[0],t,r,c,Gn,f):b,Q),Yt(re?Ut(y[1],t,r,c,Wn,f):y,$);let e=Kt(t,s,a,Un);Q.t===B.NUMBER&&(I?I._valueType===B.UNIT&&(Q.t=B.UNIT,Q.u=I._unit):(Yt(e,Zt),Zt.t===B.UNIT&&(Q.t=B.UNIT,Q.u=Zt.u)))}else ne?Yt(y,$):h?Xt(h,$):Yt(n&&I&&I.parent.parent===n?I._value:Kt(t,s,a,Un),$),te?Yt(b,Q):h?Xt(h,Q):Yt(n&&I&&I.parent.parent===n?I._value:Kt(t,s,a,Un),Q);if(Q.o&&(Q.n=qt(I?I._toNumber:Yt(Kt(t,s,a,Un),Zt).n,Q.n,Q.o)),$.o&&($.n=qt(Q.n,$.n,$.o)),Q.t!==$.t){if(Q.t===B.COMPLEX||$.t===B.COMPLEX){let e=Q.t===B.COMPLEX?Q:$,t=Q.t===B.COMPLEX?$:Q;t.t=B.COMPLEX,t.s=J(e.s),t.d=e.d.map(()=>t.n)}else if(Q.t===B.UNIT||$.t===B.UNIT){let e=Q.t===B.UNIT?Q:$,t=Q.t===B.UNIT?$:Q;t.t=B.UNIT,t.u=e.u}else if(Q.t===B.COLOR||$.t===B.COLOR){let e=Q.t===B.COLOR?Q:$,t=Q.t===B.COLOR?$:Q;t.t=B.COLOR,t.d=e.d.map(()=>0)}}if(Q.u!==$.u){let e=$.u?Q:$;e=jn(t,e,$.u?$.u:Q.u,!1)}if($.d&&Q.d&&$.d.length!==Q.d.length){let e=Q.d.length>$.d.length?Q:$,t=e===Q?$:Q;t.d=e.d.map((e,n)=>K(t.d[n])?0:t.d[n]),t.s=J(e.s)}let L=q(+P||1e-11,12),le=Un[s];st(le)||(Un[s]=null);let ue=o?o.set:null;_=q(oe+L,12);let de=Q.d,fe=$.d,pe=$.s,R={parent:this,id:Yn++,property:s,target:t,_value:null,_toFunc:Wn.func,_fromFunc:Gn.func,_ease:Hn(j),_fromNumbers:de?J(de):Pe,_toNumbers:fe?J(fe):Pe,_strings:pe?J(pe):Pe,_fromNumber:Q.n,_toNumber:$.n,_numbers:de?J(de):Pe,_number:Q.n,_unit:$.u,_modifier:F,_currentTime:0,_startTime:oe,_delay:+ee,_updateDuration:L,_changeDuration:L,_absoluteStartTime:se,_absoluteUpdateStartTime:ce,_absoluteEndTime:q(k+_,12),_hasFromValue:te||re?1:0,_tweenType:a,_setter:ue,_valueType:$.t,_composition:u,_isOverlapped:0,_isOverridden:0,_renderTransforms:0,_inlineValue:le,_prevRep:null,_nextRep:null,_prevAdd:null,_nextAdd:null,_prev:null,_next:null};u!==H.none&&_n(R,m);let me=R._valueType;if(me===B.COMPLEX)R._value=Qt(R,1,-1);else if(me===B.UNIT)R._value=`${F(R._toNumber)}${R._unit}`;else if(me===B.COLOR){let e=$.d;R._value=`rgba(${q(e[0],0)},${q(e[1],0)},${q(e[2],0)},${e[3]})`}else R._value=F(R._toNumber);isNaN(g)&&(g=R._startTime),h=R,M++,Mt(this,R)}(isNaN(j)||g<j)&&(j=g),(isNaN(A)||_>A)&&(A=_),a===z.TRANSFORM&&(l=M-v,d=M)}if(!isNaN(l)){let e=0;Y(this,t=>{e>=l&&e<d&&(t._renderTransforms=1,t._composition===H.blend&&Y(on.animation,e=>{e.id===t.id&&(e._renderTransforms=1)})),e++})}}c||console.warn(`No target found. Make sure the element you're trying to animate is accessible before creating your animation.`),j?(Y(this,e=>{e._startTime-e._delay||(e._delay-=j),e._startTime-=j}),A-=j):j=0,A||(A=U,this.iterationCount=0),this.targets=s,this.id=K(d)?Xn:d,this.duration=A===1e-11?U:Ot((A+this._loopDelay)*this.iterationCount-this._loopDelay)||1e-11,this.onRender=v||y.onRender,this._ease=S,this._delay=j,this.iterationDuration=A,!this._autoplay&&N&&this.onRender(this)}stretch(e){let t=this.duration;if(t===kt(e))return this;let n=e/t;return Y(this,e=>{e._updateDuration=kt(e._updateDuration*n),e._changeDuration=kt(e._changeDuration*n),e._currentTime*=n,e._delay*=n,e._startTime*=n,e._absoluteStartTime*=n,e._absoluteUpdateStartTime*=n,e._absoluteEndTime*=n}),super.stretch(e)}refresh(){return Y(this,e=>{let t=e._toFunc,n=e._fromFunc;(t||n)&&(n?(Yt(n(),Q),Q.u!==e._unit&&e.target[Oe]&&jn(e.target,Q,e._unit,!0),e._fromNumbers=J(Q.d),e._fromNumber=Q.n):t&&(Yt(Kt(e.target,e.property,e._tweenType),Zt),e._fromNumbers=J(Zt.d),e._fromNumber=Zt.n),t&&(Yt(t(),$),e._toNumbers=J($.d),e._strings=J($.s),e._toNumber=$.o?qt(e._fromNumber,$.n,$.o):$.n))}),this.duration===1e-11&&this.restart(),this}revert(){return super.revert(),rn(this)}then(e){return super.then(e)}},tr=(e,t)=>{if(et(t,`<`)){let n=t[1]===`<`,r=e._tail,i=r?r._offset+r._delay:0;return n?i:i+r.duration}},nr=(e,t)=>{let n=e.iterationDuration;if(n===1e-11&&(n=0),K(t))return n;if(it(+t))return+t;let r=t,i=e?e.labels:null,a=!st(i),o=tr(e,r),s=!K(o),c=Je.exec(r);if(c){let e=c[0],t=r.split(e),l=a&&t[0]?i[t[0]]:n;return qt(s?o:a?l:n,+t[1],e[0])}return s?o:a?K(i[r])?n:i[r]:n};function rr(e){return Ot((e.iterationDuration+e._loopDelay)*e.iterationCount-e._loopDelay)||1e-11}function ir(e,t,n,r,i,a){let o=it(e.duration)&&e.duration<=1e-11?n-U:n;t.composition&&en(t,o,1,1,V.AUTO);let s=r?new er(r,e,t,o,!1,i,a):new Tn(e,t,o);return t.composition&&s.init(!0),Mt(t,s),Y(t,e=>{let n=e._offset+e._delay+e.duration;n>t.iterationDuration&&(t.iterationDuration=n)}),t.duration=rr(t),t}var ar=0,or=class extends Tn{constructor(e={}){super(e,null,0),++ar,this.id=K(e.id)?ar:e.id,this.duration=0,this.labels={};let t=e.defaults,n=G.defaults;this.defaults=t?At(t,n):n,this.composition=X(e.composition,!0),this.onRender=e.onRender||n.onRender;let r=X(e.playbackEase,n.playbackEase);this._ease=r?Hn(r):null,this.iterationDuration=0}add(e,t,n){let r=rt(t),i=rt(e);if(r||i){if(this._hasChildren=!0,r){let r=t,i=G.editor&&G.editor.addTimelineChild,a=n&&n.type===`Stagger`&&G.editor,o=ot(n)?n:null;if(o||a){let t=Dn(e),a=this.duration,s=this.iterationDuration,c=r.id,l=0,u=t.length,d=i?i(e,r,this.id,n,u):null,f=o||G.editor.resolveStagger(n.defaultValue);t.forEach(e=>{let n={...d||r};this.duration=a,this.iterationDuration=s,K(c)||(n.id=c+`-`+l);let i=nr(this,f(e,l,t,null,this));ir(n,this,i,e,l,t),l++})}else{let t=i?i(e,r,this.id,n):r,a=n&&n.type?n.defaultValue:n;ir(t,this,nr(this,a),e)}}else ir(e,this,nr(this,t));return this.composition&&this.init(!0),this}}sync(e,t){if(K(e)||e&&K(e.pause))return this;e.pause();let n=+(e.effect?e.effect.getTiming().duration:e.duration);!K(e)&&!K(e.persist)&&(e.persist=!0);let r=G.editor,i=r&&r.addTimelineChild;r&&r.addTimelineSync&&(t=r.addTimelineSync(e,t,this.id),r.addTimelineChild=null);let a=this.add(e,{currentTime:[0,n],duration:n,delay:0,ease:`linear`,playbackEase:`linear`},t);return r&&(r.addTimelineChild=i),a}set(e,t,n){return K(t)?this:(t.duration=U,t.composition=H.replace,this.add(e,t,n))}call(e,t){return K(e)||e&&!ot(e)?this:(G.editor&&G.editor.addTimelineCall&&(t=G.editor.addTimelineCall(e,t,this.id)),this.add({duration:0,delay:0,onComplete:()=>e(this)},t))}label(e,t){return K(e)||e&&!at(e)?this:(G.editor&&G.editor.addTimelineLabel&&(t=G.editor.addTimelineLabel(e,t,this.id)),this.labels[e]=nr(this,t),this)}remove(e,t){return bn(Dn(e),this,t),this}stretch(e){let t=this.duration;if(t===kt(e))return this;let n=e/t,r=this.labels;Y(this,e=>e.stretch(e.duration*n));for(let e in r)r[e]*=n;return super.stretch(e)}refresh(){return Y(this,e=>{e.refresh&&e.refresh()}),this}revert(){return super.revert(),Y(this,e=>e.revert,!0),rn(this)}then(e){return super.then(e)}},sr=e=>G.editor?G.editor.addTimeline(e):new or(e).init(),cr=(e=0,t=1,n=0)=>{let r=10**n;return Math.floor((Math.random()*(t-e+1/r)+e)*r)/r},lr=0,ur=(e,t=0,n=1,r=0)=>{let i=e===void 0?lr++:e;return(e=t,a=n,o=r)=>{i+=1831565813,i=Math.imul(i^i>>>15,i|1),i^=i+Math.imul(i^i>>>7,i|61);let s=10**o;return Math.floor((((i^i>>>14)>>>0)/4294967296*(a-e+1/s)+e)*s)/s}},dr=(e,t=cr)=>{let n=e.length,r,i;for(;n;)i=t(0,--n),r=e[n],e[n]=e[i],e[i]=r;return e},fr=(e,t={})=>{let n=[],r=0,i,a=null,o=t.from,s=t.reversed,c=t.ease,l=!K(c),u=l&&!K(c.ease)?c.ease:l?Hn(c):null,d=t.grid,f=d===!0,p=t.axis,m=t.total,h=K(o)||o===0||o===`first`,g=o===`center`,_=o===`last`,v=o===`random`,y=nt(o),b=nt(e),x=t.use,S=gt(b?e[0]:e),C=b?gt(e[1]):0,w=Ke.exec((b?e[1]:e)+``),T=t.start||0+(b?S:0),E=t.seed,D=!K(E)&&E!==!1?ur(E===!0?0:E):cr,O=t.jitter,k=!K(O),A=nt(O),j=A?O[0]:O||0,M=A?O[1]:O||0,N=h?0:it(o)?o:0;return(e,c,l,h,E)=>{let[O]=On(e),A=K(m)?l.length:m,P=K(x)?!1:ot(x)?x(O,c,A):Kt(O,x),ee=it(P)||at(P)&&it(+P)?+P:c,F=ee>=0&&ee<A?ee:c;if(g&&(N=(A-1)/2),_&&(N=A-1),!n.length){if(f){let e=!0,t=!1,r=1/0,i=1/0,a=1/0,s=-1/0,c=-1/0,u=-1/0,d=[],f=[],m=[];for(let n=0;n<A;n++){let o=l[n],p=0,h=0,g=0,_=!1;if(o&&ot(o.getBoundingClientRect)){let e=o.getBoundingClientRect();p=e.left+e.width/2,h=e.top+e.height/2,_=!0}else{let e=o;e&&it(e.x)&&it(e.y)&&(p=e.x,h=e.y,it(e.z)&&(g=e.z,t=!0),_=!0)}if(!_){e=!1;break}d.push(p),f.push(h),m.push(g),p<r&&(r=p),h<i&&(i=h),g<a&&(a=g),p>s&&(s=p),h>c&&(c=h),g>u&&(u=g)}if(e){let e=d[0],l=f[0],h=m[0];y?(e=r+o[0]*(s-r),l=i+o[1]*(c-i),h=t?a+(o.length>=3?o[2]:.5)*(u-a):0):g?(e=(r+s)/2,l=(i+c)/2,h=(a+u)/2):_?(e=d[A-1],l=f[A-1],h=m[A-1]):it(o)&&(e=d[o],l=f[o],h=m[o]);for(let r=0;r<A;r++){let i=e-d[r],a=l-f[r],o=h-m[r],s=vt(i*i+a*a+(t?o*o:0));p===`x`&&(s=-i),p===`y`&&(s=-a),p===`z`&&(s=-o),n.push(s)}let v=1/0;for(let e=0;e<A;e++){let t=xt(n[e]);t>0&&t<v&&(v=t)}if(v>0&&v<1/0)for(let e=0;e<A;e++)n[e]=n[e]/v}else for(let e=0;e<A;e++)n.push(xt(N-e))}else for(let e=0;e<A;e++)if(!d)n.push(xt(N-e));else{let t=d.length,r=d[0]*d[1],i,a,s;y?(i=o[0]*(d[0]-1),a=o[1]*(d[1]-1),s=t===3?(o.length>=3?o[2]:.5)*(d[2]-1):0):g?(i=(d[0]-1)/2,a=(d[1]-1)/2,s=t===3?(d[2]-1)/2:0):(i=N%d[0],a=St(N/d[0])%d[1],s=t===3?St(N/r):0);let c=e%d[0],l=St(e/d[0])%d[1],u=t===3?St(e/r):0,f=i-c,m=a-l,h=s-u,_=vt(f*f+m*m+(t===3?h*h:0));p===`x`&&(_=-f),p===`y`&&(_=-m),p===`z`&&(_=-h),n.push(_)}r=n[0];for(let e=1;e<A;e++)n[e]>r&&(r=n[e]);if(u||s)for(let e=0;e<A;e++){let t=n[e];u&&(t=u(t/r)*r),s&&(t=p?-t:xt(r-t)),n[e]=t}if(k){a=Array(A);for(let e=0;e<A;e++)a[e]=D(-1,1,4)}v&&(n=dr(n,D))}let te=b?(C-S)/r:S;K(i)&&(i=E?nr(E,K(t.start)?E.iterationDuration:T):T);let ne=i+(te*q(n[F],2)||0);if(k){let e=r?n[F]/r:0,t=j+(M-j)*e;ne+=a[F]*t}return t.modifier&&(ne=t.modifier(ne)),w&&(ne=`${ne}${w[2]}`),ne}},pr={number:9,additions:1358,deletions:156,files:37},mr=[{key:`store`,category:`api`,additions:363,deletions:3,files:8,expanded:!0},{key:`ui`,category:`ui`,additions:331,deletions:31,files:11,expanded:!0},{key:`refactor`,category:`core`,additions:182,deletions:77,files:9,expanded:!0},{key:`tests`,category:`tests`,additions:353,deletions:1,files:4},{key:`docs`,category:`docs`,additions:129,deletions:44,files:5}],hr=[{path:`app/stores/shared-analysis-store.ts`,group:0},{path:`app/components/diff/ShareResultModal.vue`,group:1},{path:`.agents/01-architecture.md`,group:4},{path:`app/providers/github/shared-analysis-comment.ts`,group:0},{path:`app/stores/diffs-store.ts`,group:2},{path:`app/stores/diffs-store.test.ts`,group:3},{path:`app/stores/shared-analysis-store.test.ts`,group:3},{path:`pnpm-lock.yaml`,group:4},{path:`app/components/diff/DiffsHeader.vue`,group:1},{path:`app/cache/pr-cache.ts`,group:0},{path:`test/fixtures/shared-analysis/comment.json`,group:3},{path:`app/stores/reviews-store.ts`,group:2},{path:`app/components/diff/share-result.css`,group:1},{path:`plans/07-share-result.md`,group:4},{path:`plans/04-local-provider.md`,group:4}],gr={flat:2e3,morph:1200,grouped:1e3,review:700,complete:2e3,reset:500};function _r(e){let t=[],n=0,r=(e,r)=>{t.push({name:e,at:n,duration:r}),n+=r};r(`flat`,gr.flat),r(`morph`,gr.morph),r(`grouped`,gr.grouped);for(let t=0;t<e;t++)r(`review-${t}`,gr.review);return r(`complete`,gr.complete),r(`reset`,gr.reset),t}function vr(e,t){let n=e.find(e=>e.name===t);if(!n)throw Error(`[LandingDemo] no beat named ${t}`);return n}var yr={key:0,class:`mb2 text-xs font-mono op-fade`},br={class:`flex items-start gap-2`},xr={class:`min-w-0 flex-1`},Sr={class:`flex items-start gap-3`},Cr={class:`min-w-0 flex-1 text-sm font-medium leading-snug`},wr={class:`op-fade`},Tr={class:`grid grid-cols-1 mt-1.5`},Er={class:`whitespace-nowrap op-fade`},Dr={class:`op-fade`},Or={class:`min-w-0 truncate`},kr={class:`op-fade`},Ar={"data-tail":``,class:`h-8 flex items-center op-fade`},jr={"data-label":``,class:`min-w-0 truncate text-sm font-medium`},Mr={class:`whitespace-nowrap op-fade`},Nr={class:`grid size-4 shrink-0 place-items-center color-accent-teal`},Pr={key:0,class:`flex flex-col pl-5`},Fr=[`data-target`],Ir={class:`min-w-0 truncate`},Lr={class:`op-fade`},Rr={class:`op-fade`},zr=D({__name:`LandingDemo`,props:{still:{type:Boolean,default:!1},showHeader:{type:Boolean,default:!0}},setup(o){let u=o,_=S(),x=c(()=>u.still||_.value===`reduce`),w=k(`root`),T=k(`body`),E=mr.map(()=>l({value:0})),D=v(!1);function A(e){let t=e.lastIndexOf(`/`);return{dir:e.slice(0,t+1),base:e.slice(t+1)}}let j=hr.map(e=>({...e,...A(e.path)})),M=pr.files-hr.length,N=mr.map((e,t)=>{let n=j.filter(e=>e.group===t);return{...e,shown:e.expanded?n:[],hidden:e.files-n.length}}),P,ee=!1;function F(e){return Array.from(w.value?.querySelectorAll(e)??[])}function ne(){if(!w.value||!T.value)return;let e=_r(mr.length),t=vr(e,`morph`),n=vr(e,`reset`),r=F(`[data-row]`),i=F(`[data-card]`),a=F(`[data-detail]`),o=F(`[data-donut]`),s=F(`[data-check]`),[c]=F(`[data-total]`),[l]=F(`[data-summary]`),[u]=F(`[data-tail]`),[d]=F(`[data-grouped]`),f=sr({loop:!0,autoplay:!1,defaults:{ease:`inOutQuad`}});f.add(T.value,{opacity:[0,1],duration:400},0),c&&f.add(c,{opacity:0,duration:400},t.at),l&&f.add(l,{opacity:[0,1],duration:400},t.at+300),u&&f.add(u,{opacity:0,duration:300},t.at);let p=t.at+t.duration*.3;f.call(()=>D.value=!0,p),f.call(()=>D.value=!1,n.at),d&&f.set(d,{opacity:1},p),f.add(i,{opacity:[0,1],y:[12,0],duration:500,delay:fr(60)},p);let m=t.duration*.55;r.forEach((e,n)=>{let r=j[n],i=e.getBoundingClientRect(),a=t.at+n*30,o=w.value.querySelector(`[data-target="${r.path}"]`);if(o){let t=o.getBoundingClientRect();f.add(e,{x:t.left-i.left,y:t.top-i.top,duration:m,ease:`inOutCubic`},a),f.set(e,{opacity:0},a+m),f.set(o,{opacity:1},a+m)}else f.add(e,{opacity:0,duration:m*.6},a)}),f.add(a,{opacity:[0,1],duration:300,delay:fr(60)},t.at+m),mr.forEach((t,n)=>{let r=vr(e,`review-${n}`),i=r.duration*.7;f.add(E[n],{value:1,duration:i},r.at),f.add(o[n],{opacity:0,duration:150},r.at+i),f.add(s[n],{opacity:[0,1],scale:[0,1],duration:300,ease:`outBack`},r.at+i)}),f.add(T.value,{opacity:0,duration:n.duration},n.at),P=f,ee&&f.play()}function re(){P?.revert(),P=void 0,D.value=!1}function ie(){re(),x.value||ne()}let ae=0;return m(()=>{ae=w.value?.clientWidth??0,ie()}),t(re),C(x,ie),b(w,a(([e])=>{let t=e?.contentRect.width??0;t!==ae&&(ae=t,ie())},200)),O(w,([e])=>{ee=e?.isIntersecting??!1,ee?P?.play():P?.pause()}),(t,a)=>(n(),d(`div`,{ref_key:`root`,ref:w,class:`select-none rounded-lg p4 text-xs lt-md:border lt-md:border-base`,"aria-hidden":`true`},[o.showHeader?(n(),d(`h2`,yr,i(t.$t(x.value||D.value?`landing.demoAfter`:`landing.demoBefore`)),1)):s(``,!0),g(`div`,br,[e(te,{state:`open`,class:`mt-0.5`}),g(`div`,xr,[g(`div`,Sr,[g(`div`,Cr,[h(i(t.$t(`landing.demoTitle`))+` `,1),g(`span`,wr,`#`+i(y(pr).number),1)])]),g(`div`,Tr,[g(`span`,{"data-total":``,class:r([`col-start-1 row-start-1 flex items-center self-start gap-2`,{"op-0":x.value}])},[e(pe,{additions:y(pr).additions,deletions:y(pr).deletions},null,8,[`additions`,`deletions`]),g(`span`,Er,i(t.$t(`common.files`,{n:y(pr).files},y(pr).files)),1)],2),g(`span`,{"data-summary":``,class:r([`col-start-1 row-start-1 flex items-start gap-1.5`,{"op-0":!x.value}])},[a[0]||=g(`span`,{class:`i-ph-sparkle-duotone mt-0.5 shrink-0 color-accent-magenta`},null,-1),g(`span`,Dr,i(t.$t(`landing.demoSummary`)),1)],2)])])]),g(`div`,{ref_key:`body`,ref:T,class:`grid grid-cols-1 mt-4 pl-6`},[g(`ul`,{class:r([`col-start-1 row-start-1 mt--5 flex flex-col pl2`,{"op-0":x.value}])},[(n(!0),d(p,null,f(y(j),t=>(n(),d(`li`,{key:t.path,"data-row":``,class:`h-6 flex origin-left items-center gap-1`},[e(fe,{path:t.path,class:`shrink-0`},null,8,[`path`]),g(`span`,Or,[g(`span`,kr,i(t.dir),1),h(i(t.base),1)])]))),128)),g(`li`,Ar,i(t.$t(`landing.moreFiles`,{n:M})),1)],2),g(`div`,{"data-grouped":``,class:r([`col-start-1 row-start-1 flex flex-col gap-2`,{"op-0":!x.value}])},[(n(!0),d(p,null,f(y(N),(o,c)=>(n(),d(`div`,{key:o.key,class:`flex flex-col`},[g(`div`,{"data-card":``,class:r([`ml--5 flex items-center gap-2 py-1`,{"op-0":!x.value}])},[g(`span`,{class:r([`shrink-0 op-fade`,o.expanded?`i-ph-caret-down-bold`:`i-ph-caret-right-bold`])},null,2),e(ue,{category:o.category,class:`text-sm`},null,8,[`category`]),g(`span`,jr,i(t.$t(`landing.demoGroups.${o.key}`)),1),a[1]||=g(`span`,{class:`flex-1`},null,-1),e(pe,{additions:o.additions,deletions:o.deletions},null,8,[`additions`,`deletions`]),g(`span`,Mr,i(t.$t(`common.files`,{n:o.files},o.files)),1),g(`span`,Nr,[g(`span`,{"data-donut":``,class:r([`col-start-1 row-start-1 flex`,{"op-0":x.value}])},[e(le,{value:x.value?1:y(E)[c].value,size:14,thickness:2.5,color:`currentColor`},null,8,[`value`])],2),g(`span`,{"data-check":``,class:r([`i-ph-check-circle-duotone col-start-1 row-start-1 m--0.5 text-base`,{"op-0":!x.value}])},null,2)])],2),o.shown.length?(n(),d(`ul`,Pr,[(n(!0),d(p,null,f(o.shown,t=>(n(),d(`li`,{key:t.path,"data-target":t.path,class:r([`h-6 flex items-center gap-1`,{"op-0":!x.value}])},[e(fe,{path:t.path,class:`shrink-0`},null,8,[`path`]),g(`span`,Ir,[g(`span`,Lr,i(t.dir),1),h(i(t.base),1)])],10,Fr))),128)),o.hidden?(n(),d(`li`,{key:0,"data-detail":``,class:r([`h-6 flex items-center`,{"op-0":!x.value}])},[g(`span`,Rr,i(t.$t(`landing.moreFiles`,{n:o.hidden})),1)],2)):s(``,!0)])):s(``,!0)]))),128))],2)],512)],512))}}),Br={class:`mt-2 max-w-full overflow-x-auto border border-base rounded-md bg-code p-3 text-xs leading-relaxed`},Vr={key:0},Hr={key:1},Ur=D({__name:`GuideCode`,props:{code:{},lang:{}},setup(e){let t=e,r=v();return x(async()=>{let{light:e,dark:n}=re.value,i=await de({themes:[e,n],langs:[t.lang]});r.value=i.codeToTokens(t.code,{lang:t.lang,themes:{light:e,dark:n},defaultColor:`light-dark()`}).tokens}),(t,a)=>(n(),d(`pre`,Br,[r.value?(n(),d(`code`,Vr,[(n(!0),d(p,null,f(r.value,(e,t)=>(n(),d(p,{key:t},[h(i(t?`
|
|
2
|
-
`:``),1),(n(!0),d(p,null,f(e,(e,t)=>(n(),d(`span`,{key:t,style:o(e.htmlStyle)},i(e.content),5))),128))],64))),128))])):(n(),d(`code`,Hr,i(e.code),1))]))}}),Wr={key:0,class:`flex flex-col gap-4 text-sm`},Gr={class:`leading-relaxed`},Kr={class:`flex flex-col list-decimal gap-3 pl-5`},qr={class:`mt-2 flex`},Jr={class:`color-base`},Yr={class:`mt-2 flex`},Xr=`# .github/workflows/pulls-review.yml
|
|
3
|
-
name: pulls.review
|
|
4
|
-
on:
|
|
5
|
-
# Only reads the diff through the API and never checks out PR code,
|
|
6
|
-
# so \`pull_request_target\` is safe and fork PRs get a comment too.
|
|
7
|
-
pull_request_target:
|
|
8
|
-
types: [opened, synchronize, reopened]
|
|
9
|
-
|
|
10
|
-
permissions:
|
|
11
|
-
pull-requests: write
|
|
12
|
-
|
|
13
|
-
jobs:
|
|
14
|
-
analyze:
|
|
15
|
-
runs-on: ubuntu-latest
|
|
16
|
-
steps:
|
|
17
|
-
- uses: antfu/pulls.review@main
|
|
18
|
-
with:
|
|
19
|
-
api-key: \${{ secrets.VERCEL_AI_GATEWAY_API_KEY }}`,Zr=`npx pulls.review main...feat # what feat adds since it forked from main
|
|
20
|
-
npx pulls.review HEAD # the last commit
|
|
21
|
-
npx pulls.review --worktree # uncommitted changes, new files included`,Qr=D({__name:`LandingGuideModal`,props:{guide:{required:!0},guideModifiers:{}},emits:[`update:guide`],setup(t){let r=E(t,`guide`);return(t,a)=>{let o=u(`i18n-t`);return n(),_(F,{open:!!r.value,title:r.value&&t.$t(`guide.${r.value}.title`),padding:`medium`,"onUpdate:open":a[0]||=e=>r.value=void 0},{default:j(()=>[r.value?(n(),d(`div`,Wr,[g(`p`,Gr,i(t.$t(`guide.${r.value}.intro`)),1),g(`ol`,Kr,[r.value===`userscript`?(n(),d(p,{key:0},[e(o,{keypath:`guide.userscript.manager`,tag:`li`,scope:`global`},{tampermonkey:j(()=>[e(Ce,{href:`https://www.tampermonkey.net/`},{default:j(()=>[...a[1]||=[h(` Tampermonkey `,-1)]]),_:1})]),violentmonkey:j(()=>[e(Ce,{href:`https://violentmonkey.github.io/`},{default:j(()=>[...a[2]||=[h(` Violentmonkey `,-1)]]),_:1})]),_:1}),g(`li`,null,[h(i(t.$t(`guide.userscript.install`))+` `,1),g(`div`,qr,[e(L,{href:`https://pulls.review/pulls-review-github.user.js`,icon:`i-ph:download-duotone`},{default:j(()=>[h(i(t.$t(`landing.installUserscript`)),1)]),_:1})])]),e(o,{keypath:`guide.userscript.open`,tag:`li`,scope:`global`},{tab:j(()=>[g(`strong`,Jr,i(t.$t(`embed.reviewChanges`)),1)]),_:1}),g(`li`,null,i(t.$t(`guide.userscript.ai`)),1)],64)):r.value===`bookmarklet`?(n(),d(p,{key:1},[e(o,{keypath:`guide.bookmarklet.bar`,tag:`li`,scope:`global`},{shortcut:j(()=>[...a[3]||=[g(`kbd`,{class:`rounded bg-code px-1 text-[0.85em] font-mono`},`Ctrl/⌘ + Shift + B`,-1)]]),_:1}),g(`li`,null,[h(i(t.$t(`guide.bookmarklet.drag`))+` `,1),g(`div`,Yr,[e(xe)])]),g(`li`,null,i(t.$t(`guide.bookmarklet.use`)),1)],64)):r.value===`actions`?(n(),d(p,{key:2},[e(o,{keypath:`guide.actions.secret`,tag:`li`,scope:`global`},{name:j(()=>[...a[4]||=[g(`code`,{class:`rounded bg-code px-1 text-[0.85em]`},`VERCEL_AI_GATEWAY_API_KEY`,-1)]]),_:1}),g(`li`,null,[h(i(t.$t(`guide.actions.workflow`))+` `,1),e(Ur,{code:Xr,lang:`yaml`})]),g(`li`,null,i(t.$t(`guide.actions.result`)),1),e(o,{keypath:`guide.actions.options`,tag:`li`,scope:`global`},{provider:j(()=>[...a[5]||=[g(`code`,{class:`rounded bg-code px-1 text-[0.85em]`},`provider`,-1)]]),model:j(()=>[...a[6]||=[g(`code`,{class:`rounded bg-code px-1 text-[0.85em]`},`model`,-1)]]),locale:j(()=>[...a[7]||=[g(`code`,{class:`rounded bg-code px-1 text-[0.85em]`},`locale`,-1)]]),readme:j(()=>[e(Ce,{href:`https://github.com/antfu/pulls.review#analyze-pull-requests-from-ci-experimental`},{default:j(()=>[...a[8]||=[h(` README `,-1)]]),_:1})]),_:1})],64)):r.value===`cli`?(n(),d(p,{key:3},[g(`li`,null,[h(i(t.$t(`guide.cli.branch`))+` `,1),e(Ur,{code:`npx pulls.review`,lang:`shellscript`})]),g(`li`,null,[h(i(t.$t(`guide.cli.target`))+` `,1),e(Ur,{code:Zr,lang:`shellscript`})]),e(o,{keypath:`guide.cli.browser`,tag:`li`,scope:`global`},{url:j(()=>[...a[9]||=[g(`code`,{class:`rounded bg-code px-1 text-[0.85em]`},`http://localhost:<port>/`,-1)]]),_:1})],64)):s(``,!0)])])):s(``,!0)]),_:1},8,[`open`,`title`])}}}),$r={class:`flex flex-col gap-3`},ei={class:`cursor-pointer text-sm color-muted`},ti=D({__name:`LoadDiffPanel`,emits:[`submit`],setup(t,{emit:a}){let o=a,s=v(``),c=v(!1);function l(){s.value.trim()&&o(`submit`,s.value)}async function u(e){s.value=await e.text()}function f(e){c.value=!1;let t=e.dataTransfer?.files[0];t&&u(t)}function p(e){let t=e.target.files?.[0];t&&u(t)}return(t,a)=>(n(),d(`div`,$r,[e(P,{label:t.$t(`load.pasteLabel`)},{default:j(()=>[A(g(`textarea`,{"onUpdate:modelValue":a[0]||=e=>s.value=e,rows:`10`,placeholder:`diff --git a/foo b/foo…`,class:r([`w-full resize-y border border-base rounded bg-raised p-2 text-sm font-mono outline-none focus-visible:ring-2 focus-visible:ring-primary-500/40`,{"border-primary-500 ring-2 ring-primary-500/40":c.value}]),onDragover:a[1]||=M(e=>c.value=!0,[`prevent`]),onDragleave:a[2]||=M(e=>c.value=!1,[`prevent`]),onDrop:M(f,[`prevent`])},null,34),[[N,s.value]])]),_:1},8,[`label`]),g(`label`,ei,[h(i(t.$t(`load.chooseFile`))+` `,1),g(`input`,{type:`file`,accept:`.diff,.patch,text/plain`,class:`hidden`,onChange:p},null,32)]),e(L,{variant:`primary`,disabled:!s.value.trim(),onClick:l},{default:j(()=>[h(i(t.$t(`load.loadButton`)),1)]),_:1},8,[`disabled`])]))}}),ni=D({__name:`LoadDiffModal`,props:{open:{type:Boolean},document:{}},emits:[`update:open`],setup(t,{emit:r}){let i=r,a=ce();function o(e,t){sessionStorage.setItem(ye,JSON.stringify({text:e,title:t})),i(`update:open`,!1),a.push(`/upload`)}return(r,a)=>(n(),_(F,{title:r.$t(`load.title`),description:r.$t(`load.description`),open:t.open,document:t.document,"onUpdate:open":a[0]||=e=>i(`update:open`,e??!1)},{default:j(()=>[e(ti,{onSubmit:o})]),_:1},8,[`title`,`description`,`open`,`document`]))}}),ri={class:`whitespace-nowrap font-medium`},ii={class:`op-fade`},ai=D({__name:`RepositoryPill`,props:{owner:{},repo:{}},setup(t){return(r,a)=>{let o=u(`RouterLink`);return n(),_(o,{to:y(oe)(t.owner,t.repo),class:`max-w-full flex items-center gap-2 border border-base rounded-full px-3 py-1.5 text-sm transition hover:border-accent-teal-400/50 hover:bg-hover`},{default:j(()=>[e(R,{login:t.owner,size:16},null,8,[`login`]),g(`span`,ri,[g(`span`,ii,i(t.owner)+`/`,1),h(i(t.repo),1)]),T(r.$slots,`default`)]),_:3},8,[`to`])}}});function oi(e=8){let{cache:t}=ie(),n=v([]);async function r(){let r=[];for(let n of await t.diffs.listRecent(e)){let e=se(n.ref);if(!e)continue;let i=await t.reviewMarks.get(n.fileShas);r.push({route:e,parent:I(n.ref)?.label,label:n.label,title:n.title,state:n.pullRequestState,reviewedCount:n.fileShas.filter(e=>i.has(e)).length,totalFiles:n.fileShas.length,lastViewedAt:n.lastViewedAt})}n.value=r}return{recent:n,load:r}}function si(e=8){let{cache:t}=ie(),n=v([]);async function r(){n.value=(await t.pullRequestLists.listRecent(e)).map(e=>({owner:e.owner,repo:e.repo,openCount:e.page.totalCount,lastViewedAt:e.lastViewedAt}))}return{recent:n,load:r}}var ci={key:0,class:`pointer-events-none fixed inset-4 z-toast flex items-center justify-center border-4 border-accent-teal-400 rounded-2xl border-dashed bg-accent-teal-400/10 text-lg color-accent-teal font-medium backdrop-blur-sm`},li={class:`mxa max-w-6xl w-full flex flex-1 flex-col gap-20 px-6 py-16 sm:py-20`},ui={class:`grid items-center gap-12 lg:grid-cols-[minmax(0,1fr)_minmax(0,30rem)] lg:gap-16`},di={class:`flex flex-col gap-8`},fi={class:`max-w-md text-sm leading-relaxed op-fade`},pi={class:`max-w-md flex flex-col gap-2`},mi={class:`text-xs op-fade`},hi={key:0,class:`flex flex-col gap-3`},gi={class:`text-xs font-mono op-fade`},_i={class:`flex flex-wrap gap-2`},vi={class:`flex color-accent-teal`},yi={class:`text-xs op-fade`},bi={key:1,class:`flex flex-col gap-3`},xi={class:`text-xs font-mono op-fade`},Si={class:`flex flex-wrap gap-2`},Ci={class:`text-xs op-fade`},wi={class:`text-xs op-fade`},Ti={class:`flex flex-col gap-3`},Ei={class:`text-xs font-mono op-fade`},Di={class:`flex flex-wrap gap-2`},Oi={class:`max-w-56 truncate text-xs op-fade`},ki={class:`grid gap-4 sm:grid-cols-2`},Ai={class:`flex flex-col gap-4 border border-base rounded-lg p-5`},ji={class:`flex items-start gap-3`},Mi={class:`flex-1`},Ni={class:`font-semibold`},Pi={class:`mt-auto flex`},Fi={class:`flex flex-col gap-4 border border-base rounded-lg p-5`},Ii={class:`flex items-start gap-3`},Li={class:`flex-1`},Ri={class:`font-semibold`},zi={class:`mt-auto flex gap-2`},Bi={class:`flex flex-col gap-4 border border-base rounded-lg p-5`},Vi={class:`flex items-start gap-3`},Hi={class:`flex-1`},Ui={class:`font-semibold`},Wi={class:`text-sm op-fade`},Gi={class:`mt-auto flex gap-2`},Ki={class:`flex flex-col gap-4 border border-base rounded-lg p-5`},qi={class:`flex items-start gap-3`},Ji={class:`flex-1`},Yi={class:`font-semibold`},Xi={class:`text-sm op-fade`},Zi={class:`mt-auto flex`},Qi={class:`flex flex-col gap-4 border border-base rounded-lg p-5`},$i={class:`flex items-start gap-3`},ea={class:`flex-1`},ta={class:`font-semibold`},na={class:`text-sm op-fade`},ra={class:`mt-auto flex`},ia=`github-actions[bot]`,aa=D({__name:`index`,setup(t){let r=[{owner:`antfu`,repo:`pulls.review`,number:45,state:`merged`,title:`feat: review any GitHub compare range or single commit`},{owner:`antfu`,repo:`pulls.review`,number:46,state:`merged`,title:`feat(app): sidebar tree mode for the group list`}],a=ce(),{locale:o,t:l}=w(),b=v(``),x=v(!1),S=v(),C=c(()=>ae(b.value));function T(){C.value&&a.push(C.value)}async function E(e){let t=await e.text();sessionStorage.setItem(ye,JSON.stringify({text:t,title:e.name})),a.push(`/upload`)}let D=0,O=v(!1);function k(e){O.value=!1;let t=e.dataTransfer?.files[0];t&&E(t)}function A(e){e.dataTransfer?.types.includes(`Files`)&&(D++,O.value=!0)}function N(){D=Math.max(0,D-1),D===0&&(O.value=!1)}let{recent:P,load:F}=oi(),{recent:te,load:re}=si();return m(()=>{F(),re()}),ne(()=>l(`landing.documentTitle`),` - `),(t,a)=>{let c=u(`i18n-t`);return n(),d(`div`,{class:`relative min-h-screen flex flex-col`,onDragenter:M(A,[`prevent`]),onDragleave:M(N,[`prevent`]),onDragover:a[8]||=M(()=>{},[`prevent`]),onDrop:M(k,[`prevent`])},[e(ge),O.value?(n(),d(`div`,ci,i(t.$t(`landing.dropHint`)),1)):s(``,!0),g(`main`,li,[g(`section`,ui,[g(`div`,di,[e(_e),g(`p`,fi,i(t.$t(`landing.tagline`)),1),g(`div`,pi,[g(`form`,{class:`flex items-stretch gap-2`,onSubmit:M(T,[`prevent`])},[e(ee,{modelValue:b.value,"onUpdate:modelValue":a[0]||=e=>b.value=e,icon:`i-ph:link-simple-duotone`,placeholder:`https://github.com/owner/repo/pull/123`,class:`flex-1`},null,8,[`modelValue`]),e(L,{type:`submit`,variant:`primary`,class:`pl-3 pr-4`,icon:`i-ph-arrow-right-bold`,disabled:!C.value},{default:j(()=>[h(i(t.$t(`landing.open`)),1)]),_:1},8,[`disabled`])],32),g(`p`,mi,i(t.$t(`landing.pasteHint`)),1)])]),e(zr,{class:`min-w-0 w-full`})]),y(P).length?(n(),d(`section`,hi,[g(`h2`,gi,i(t.$t(`landing.recentlyViewed`)),1),g(`div`,_i,[(n(!0),d(p,null,f(y(P),t=>(n(),_(he,{key:t.route,to:t.route,parent:t.parent,label:t.label,state:t.state,title:t.title},{default:j(()=>[g(`span`,vi,[e(le,{value:t.totalFiles?t.reviewedCount/t.totalFiles:0,size:14,thickness:2.5,color:`currentColor`},null,8,[`value`])]),g(`span`,yi,i(y(ve)(new Date(t.lastViewedAt),y(o))),1)]),_:2},1032,[`to`,`parent`,`label`,`state`,`title`]))),128))])])):s(``,!0),y(te).length?(n(),d(`section`,bi,[g(`h2`,xi,i(t.$t(`landing.recentRepositories`)),1),g(`div`,Si,[(n(!0),d(p,null,f(y(te),e=>(n(),_(ai,{key:`${e.owner}/${e.repo}`,owner:e.owner,repo:e.repo},{default:j(()=>[g(`span`,Ci,i(t.$t(`pulls.open`,{n:e.openCount})),1),g(`span`,wi,i(y(ve)(new Date(e.lastViewedAt),y(o))),1)]),_:2},1032,[`owner`,`repo`]))),128))])])):s(``,!0),g(`section`,Ti,[g(`h2`,Ei,i(t.$t(`landing.tryDemos`)),1),g(`div`,Di,[(n(),d(p,null,f(r,t=>e(he,{key:`${t.owner}/${t.repo}#${t.number}`,to:`${y(se)({kind:`github-pr`,owner:t.owner,repo:t.repo,number:String(t.number)})}?from=${encodeURIComponent(ia)}`,parent:`${t.owner}/${t.repo}`,label:`#${t.number}`,state:t.state,title:t.title},{default:j(()=>[g(`span`,Oi,i(t.title),1)]),_:2},1032,[`to`,`parent`,`label`,`state`,`title`])),64))])]),g(`section`,ki,[g(`div`,Ai,[g(`div`,ji,[a[11]||=g(`span`,{class:`i-ph:upload-simple-duotone mt-0.5 shrink-0 text-xl color-accent-teal`,"aria-hidden":`true`},null,-1),g(`div`,Mi,[g(`h2`,Ni,i(t.$t(`landing.uploadTitle`)),1),e(c,{keypath:`landing.uploadDescription`,tag:`p`,class:`text-sm op-fade`,scope:`global`},{diff:j(()=>[...a[9]||=[g(`code`,{class:`rounded bg-code px-1`},`.diff`,-1)]]),patch:j(()=>[...a[10]||=[g(`code`,{class:`rounded bg-code px-1`},`.patch`,-1)]]),_:1})])]),g(`div`,Pi,[e(L,{icon:`i-ph:upload-simple-duotone`,onClick:a[1]||=e=>x.value=!0},{default:j(()=>[h(i(t.$t(`landing.uploadButton`)),1)]),_:1})])]),g(`div`,Fi,[g(`div`,Ii,[a[14]||=g(`span`,{class:`i-ph:puzzle-piece-duotone mt-0.5 shrink-0 text-xl color-accent-magenta`,"aria-hidden":`true`},null,-1),g(`div`,Li,[g(`h2`,Ri,i(t.$t(`landing.embedTitle`)),1),e(c,{keypath:`landing.embedDescription`,tag:`p`,class:`text-sm op-fade`,scope:`global`},{tampermonkey:j(()=>[e(Ce,{href:`https://www.tampermonkey.net/`},{default:j(()=>[...a[12]||=[h(` Tampermonkey `,-1)]]),_:1})]),violentmonkey:j(()=>[e(Ce,{href:`https://violentmonkey.github.io/`},{default:j(()=>[...a[13]||=[h(` Violentmonkey `,-1)]]),_:1})]),_:1})])]),g(`div`,zi,[e(L,{href:`https://pulls.review/pulls-review-github.user.js`,icon:`i-ph:download-duotone`},{default:j(()=>[h(i(t.$t(`landing.installUserscript`)),1)]),_:1}),e(L,{icon:`i-ph:book-open-duotone`,onClick:a[2]||=e=>S.value=`userscript`},{default:j(()=>[h(i(t.$t(`landing.viewGuide`)),1)]),_:1})])]),g(`div`,Bi,[g(`div`,Vi,[a[15]||=g(`span`,{class:`i-ph:bookmark-simple-duotone mt-0.5 shrink-0 text-xl color-accent-magenta`,"aria-hidden":`true`},null,-1),g(`div`,Hi,[g(`h2`,Ui,i(t.$t(`landing.bookmarkletTitle`)),1),g(`p`,Wi,i(t.$t(`landing.bookmarkletDescription`)),1)])]),g(`div`,Gi,[e(xe),e(L,{icon:`i-ph:book-open-duotone`,onClick:a[3]||=e=>S.value=`bookmarklet`},{default:j(()=>[h(i(t.$t(`landing.viewGuide`)),1)]),_:1})])]),g(`div`,Ki,[g(`div`,qi,[a[16]||=g(`span`,{class:`i-ph:lightning-duotone mt-0.5 shrink-0 text-xl color-accent-orange`,"aria-hidden":`true`},null,-1),g(`div`,Ji,[g(`h2`,Yi,i(t.$t(`landing.actionsTitle`)),1),g(`p`,Xi,i(t.$t(`landing.actionsDescription`)),1)])]),g(`div`,Zi,[e(L,{icon:`i-ph:book-open-duotone`,onClick:a[4]||=e=>S.value=`actions`},{default:j(()=>[h(i(t.$t(`landing.viewGuide`)),1)]),_:1})])]),g(`div`,Qi,[g(`div`,$i,[a[17]||=g(`span`,{class:`i-ph:terminal-window-duotone mt-0.5 shrink-0 text-xl color-accent-teal`,"aria-hidden":`true`},null,-1),g(`div`,ea,[g(`h2`,ta,i(t.$t(`landing.cliTitle`)),1),g(`p`,na,i(t.$t(`landing.cliDescription`)),1)])]),g(`div`,ra,[e(L,{icon:`i-ph:book-open-duotone`,onClick:a[5]||=e=>S.value=`cli`},{default:j(()=>[h(i(t.$t(`landing.viewGuide`)),1)]),_:1})])])])]),e(me),e(ni,{open:x.value,"onUpdate:open":a[6]||=e=>x.value=e},null,8,[`open`]),e(Qr,{guide:S.value,"onUpdate:guide":a[7]||=e=>S.value=e},null,8,[`guide`])],32)}}});export{aa as default};
|