@loicngr/kobo 1.7.7 → 1.7.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/AGENTS.md +29 -0
  2. package/README.md +62 -4
  3. package/dist/mcp-server/kobo-tasks-server.js +27 -0
  4. package/dist/server/routes/health.js +14 -0
  5. package/dist/server/routes/workspaces.js +60 -16
  6. package/dist/server/services/agent/engines/claude-code/capabilities.js +7 -0
  7. package/dist/server/services/agent/engines/codex/capabilities.js +18 -0
  8. package/dist/server/services/agent/engines/codex/client.js +36 -0
  9. package/dist/server/services/agent/engines/codex/engine.js +276 -0
  10. package/dist/server/services/agent/engines/codex/event-mapper.js +473 -0
  11. package/dist/server/services/agent/engines/codex/jsonrpc/peer.js +60 -0
  12. package/dist/server/services/agent/engines/codex/jsonrpc/transport.js +31 -0
  13. package/dist/server/services/agent/engines/codex/options-builder.js +81 -0
  14. package/dist/server/services/agent/engines/codex/protocol/types.js +11 -0
  15. package/dist/server/services/agent/engines/codex/server-requests.js +99 -0
  16. package/dist/server/services/agent/engines/codex/spawn.js +27 -0
  17. package/dist/server/services/agent/engines/registry.js +2 -0
  18. package/dist/server/services/agent/orchestrator.js +1 -1
  19. package/dist/server/services/auto-loop-service.js +16 -2
  20. package/dist/server/services/pr-watcher-service.js +84 -33
  21. package/dist/server/services/review-template-service.js +24 -31
  22. package/dist/server/services/settings-service.js +140 -6
  23. package/dist/server/services/skill-suite-prompts.js +80 -0
  24. package/dist/server/utils/git-ops.js +69 -15
  25. package/dist/server/utils/paths.js +7 -0
  26. package/dist/shared/auto-loop-prompts.js +18 -1
  27. package/dist/shared/codex-models.js +43 -0
  28. package/dist/shared/project-colors.js +23 -0
  29. package/dist/shared/skill-suite-prompts.js +66 -0
  30. package/package.json +2 -1
  31. package/src/client/dist/spa/assets/ActivityFeed-CKjFT9t6.js +8 -0
  32. package/src/client/dist/spa/assets/{ActivityFeed-tE4LVYck.css → ActivityFeed-WjiQ9716.css} +1 -1
  33. package/src/client/dist/spa/assets/{ClosePopup-DTcbxsC0.js → ClosePopup-DMnQG6nw.js} +1 -1
  34. package/src/client/dist/spa/assets/CreatePage-BhFrUkEN.js +2 -0
  35. package/src/client/dist/spa/assets/CreatePage-ZyBHUbl0.css +1 -0
  36. package/src/client/dist/spa/assets/{DiffViewer-D-uNbBq0.js → DiffViewer-BSnvba7W.js} +3 -3
  37. package/src/client/dist/spa/assets/HealthPage-DZYZWGHp.js +1 -0
  38. package/src/client/dist/spa/assets/MainLayout-C45J7rSF.css +1 -0
  39. package/src/client/dist/spa/assets/MainLayout-CMuiNpet.js +37 -0
  40. package/src/client/dist/spa/assets/QChip-BgzxI33B.js +36 -0
  41. package/src/client/dist/spa/assets/{QExpansionItem-BGg74no1.js → QExpansionItem-Fij7yBbG.js} +1 -1
  42. package/src/client/dist/spa/assets/{QItemSection-CQUDd0Vg.js → QItemSection-Bz1ZDJO5.js} +1 -1
  43. package/src/client/dist/spa/assets/{QMenu-D6uqosRg.js → QMenu-CMoolewZ.js} +1 -1
  44. package/src/client/dist/spa/assets/QRadio-4HnR_A-K.js +1 -0
  45. package/src/client/dist/spa/assets/{QTooltip-DUGPNNeQ.js → QTooltip-CbLXk2Bs.js} +1 -1
  46. package/src/client/dist/spa/assets/{SearchPage-C07dgzT9.js → SearchPage-CBSgEvVF.js} +1 -1
  47. package/src/client/dist/spa/assets/SettingsPage-C7TkcKXU.css +1 -0
  48. package/src/client/dist/spa/assets/SettingsPage-pY-zbPxn.js +9 -0
  49. package/src/client/dist/spa/assets/{TouchPan-DvVlszwO.js → TouchPan-DiBNjOPH.js} +1 -1
  50. package/src/client/dist/spa/assets/{WorkspacePage-CRIcsASQ.css → WorkspacePage-B4YnZ6re.css} +1 -1
  51. package/src/client/dist/spa/assets/WorkspacePage-BTHvQga-.js +4 -0
  52. package/src/client/dist/spa/assets/{build-path-tree-CCMckvpr.js → build-path-tree-BmBqRiCQ.js} +1 -1
  53. package/src/client/dist/spa/assets/{cssMode-D6XTTdwy.js → cssMode-ypFF7quM.js} +1 -1
  54. package/src/client/dist/spa/assets/{editor.api-6hDVHddO.js → editor.api-DtpZuH_B.js} +1 -1
  55. package/src/client/dist/spa/assets/{editor.main-DsLU1RWu.js → editor.main-C7a7L2WP.js} +3 -3
  56. package/src/client/dist/spa/assets/{AutoLoopChip-CkSzkC0C.js → engineFeatures-BxAOQcPU.js} +1 -1
  57. package/src/client/dist/spa/assets/{expand-template-Crz1uiBt.js → expand-template-GaEux9_o.js} +1 -1
  58. package/src/client/dist/spa/assets/{formatters-guwb-rzl.js → formatters-h0XBETG5.js} +1 -1
  59. package/src/client/dist/spa/assets/{freemarker2-Bn1f0t2U.js → freemarker2-DUBmhe3W.js} +1 -1
  60. package/src/client/dist/spa/assets/{handlebars-O92Cbq66.js → handlebars-_XEXkADl.js} +1 -1
  61. package/src/client/dist/spa/assets/{html-Ck95BMBU.js → html-D8gmyhgI.js} +1 -1
  62. package/src/client/dist/spa/assets/{htmlMode-DDYhH2FJ.js → htmlMode-B84S5YOM.js} +1 -1
  63. package/src/client/dist/spa/assets/i18n-DLoe3l25.js +1 -0
  64. package/src/client/dist/spa/assets/index-Dx_W9yYo.js +2 -0
  65. package/src/client/dist/spa/assets/{javascript-Cy2ddqHg.js → javascript-500DcdS9.js} +1 -1
  66. package/src/client/dist/spa/assets/{jsonMode-BIfVcp5z.js → jsonMode-DmrWg6b7.js} +1 -1
  67. package/src/client/dist/spa/assets/kobo-commands-DCoQW_NQ.js +9 -0
  68. package/src/client/dist/spa/assets/{liquid-B287eegh.js → liquid-CfPJszlt.js} +1 -1
  69. package/src/client/dist/spa/assets/{mdx-B8HSzGai.js → mdx-DtjLwENT.js} +1 -1
  70. package/src/client/dist/spa/assets/{monaco.contribution-CofcHzEf.js → monaco.contribution-CxiO5UJd.js} +2 -2
  71. package/src/client/dist/spa/assets/{notifications-BPnKFW60.js → notifications-CEyiPnmw.js} +1 -1
  72. package/src/client/dist/spa/assets/permissionModes-CPZlEHoF.js +1 -0
  73. package/src/client/dist/spa/assets/project-color-C4vMEn4C.js +1 -0
  74. package/src/client/dist/spa/assets/{purify.es-BCEwTYRx.js → purify.es-C92_EGvT.js} +1 -1
  75. package/src/client/dist/spa/assets/{python-csaKR6_U.js → python-BS46_AMt.js} +1 -1
  76. package/src/client/dist/spa/assets/{razor-C2wEv-nX.js → razor-Ce9zcIFo.js} +1 -1
  77. package/src/client/dist/spa/assets/{render-chat-markdown-Bjcei0vn.js → render-chat-markdown-BvJwlMiW.js} +1 -1
  78. package/src/client/dist/spa/assets/{tsMode-DGLVs57K.js → tsMode-Cr9FJjYY.js} +1 -1
  79. package/src/client/dist/spa/assets/{typescript-w0GWHzZ3.js → typescript-Ov3wChBg.js} +1 -1
  80. package/src/client/dist/spa/assets/{use-panel-CbJ44rqY.js → use-panel-lBh91vcW.js} +1 -1
  81. package/src/client/dist/spa/assets/{xml-CTn-vnEd.js → xml-euA4jBI1.js} +1 -1
  82. package/src/client/dist/spa/assets/{yaml-CTyUSvLZ.js → yaml-BuPSq_BT.js} +1 -1
  83. package/src/client/dist/spa/index.html +5 -5
  84. package/src/mcp-server/kobo-tasks-server.ts +27 -0
  85. package/src/client/dist/spa/assets/ActivityFeed-DlPVoOGb.js +0 -7
  86. package/src/client/dist/spa/assets/CreatePage-BoRappO3.css +0 -1
  87. package/src/client/dist/spa/assets/CreatePage-DpCVNwYk.js +0 -2
  88. package/src/client/dist/spa/assets/HealthPage-xZ0PP4F-.js +0 -1
  89. package/src/client/dist/spa/assets/MainLayout-DdkKM2ba.js +0 -37
  90. package/src/client/dist/spa/assets/MainLayout-drolsINz.css +0 -1
  91. package/src/client/dist/spa/assets/QChip-erWIZgxW.js +0 -1
  92. package/src/client/dist/spa/assets/QRadio-DJxOyOA3.js +0 -1
  93. package/src/client/dist/spa/assets/QTabPanels-ClPY9y4T.js +0 -1
  94. package/src/client/dist/spa/assets/SettingsPage-CLNmI0Rr.css +0 -1
  95. package/src/client/dist/spa/assets/SettingsPage-D0CZNqkA.js +0 -9
  96. package/src/client/dist/spa/assets/WorkspacePage-CKeCLPi0.js +0 -4
  97. package/src/client/dist/spa/assets/i18n-BLgknHpf.js +0 -1
  98. package/src/client/dist/spa/assets/index-CdHDdk1y.js +0 -2
  99. package/src/client/dist/spa/assets/kobo-commands-w8VepGvD.js +0 -11
  100. package/src/client/dist/spa/assets/models-Bd_v3W7Q.js +0 -1
  101. /package/src/client/dist/spa/assets/{QBtn-DEuWKHbR.js → QBtn-CaJSOyt8.js} +0 -0
  102. /package/src/client/dist/spa/assets/{vue-i18n-DI-gS-CC.js → vue-i18n-CKCtKE87.js} +0 -0
@@ -1,11 +0,0 @@
1
- function e(e,t){let n=["1. Call `kobo__list_tasks` FIRST to inspect any pre-existing tasks (they may have been seeded from Notion, a template, or the CreatePage form).","2. If tasks already exist: DO NOT delete or recreate them from scratch. Read each one, judge whether it is atomic and implementable in one session with clear completion criteria. Improve them in place:\n - Use `kobo__update_task` to rename unclear titles, add completion criteria, or flip `is_acceptance_criterion` when needed.\n - Use `kobo__create_task` to SPLIT a task that is too large into smaller atomic pieces (keep the original only if it still makes sense, otherwise update it to one of the split pieces and create the rest).\n - Use `kobo__create_task` to ADD missing acceptance criteria or missing implementation steps the plan requires.","3. If no tasks exist:\n - If a plan file exists in `docs/superpowers/plans/` or similar, read it and derive the task list from it.\n - If no plan exists, ask the user what the workspace goal is and propose tasks accordingly.\n - Create the tasks via `kobo__create_task`. For each task, decide `is_acceptance_criterion` appropriately."],r=4;if(e.framework){let t=e.skill?`Use the \`${e.skill}\` skill for this task. `:``,i=e.prompt?`Additional guidance: ${e.prompt}`:``;n.push(`${r}. **E2E review**: walk the task list and identify which tasks produce user-visible behavior (UI flows, form submissions, page renders, etc.). For each one that warrants regression coverage, INSERT a follow-up sub-task with title prefixed \`[E2E] \` describing the test to write. Place it in \`sort_order\` directly after the parent task. Skip tasks that don't produce user-visible behavior (refactors, infra, internal services) and briefly justify your choices in chat. The project uses \`${e.framework}\`. ${t}${i}`.trim()),r++}return t.prompt&&(n.push(`${r}. **Finalization task**: create ONE task with title prefixed \`[FINAL] <descriptive title>\`. Place it at the END of the task list (sort_order = max + 1, AFTER any [E2E] tasks). The agent will execute this task using the project's finalization prompt — do NOT inline the prompt content into the task title or description.`),r++),n.push(`${r}. Call \`kobo__mark_auto_loop_ready\`. This will automatically start the auto-loop, which will pick up the tasks one by one in fresh sessions.`),n.join(`
2
- `)}var t=e({framework:``,skill:``,prompt:``},{prompt:``}),n="Hard rules:\n- Do NOT touch any source file. No Edit, no Write, no Bash that changes the repo.\n- Do NOT run `kill`, `pkill`, `killall`, `pgrep -k`, or any process-killing command — you may tear down the Kōbō server itself or sibling dev servers.\n- Do NOT start implementation even if a plan is ready — auto-loop will drive that afterwards, one task per iteration.\n- If the user asks for changes, re-apply via MCP and re-check. Do NOT mark ready until they approve.",r=`Review your progress on the tasks and acceptance criteria. Use the kobo-tasks MCP server: call list_tasks() to check the current status, then update any tasks you have completed using mark_task_done(). Report what is done and what remains.
3
-
4
- Then suggest concrete next actions. Format them exactly like this so I can click on them:
5
-
6
- 1. **Short label** → Description of the action
7
- 2. **Short label** → Description of the action`,i=`You are preparing this workspace for Kōbō auto-loop mode. This is a GROOMING session only — DO NOT implement anything, DO NOT write or edit code, DO NOT run tests or builds, DO NOT invoke \`superpowers:executing-plans\` or any implementation skill. Your ONLY job is to curate the Kōbō task list via MCP tools.
8
-
9
- ${t}
10
-
11
- ${n}`,a={"/kobo-check-progress":{prompt:r,descriptionKey:`koboCommand.checkProgressDesc`},"/kobo-prep-autoloop":{prompt:i,descriptionKey:`koboCommand.prepAutoloopDesc`}};function o(e,t,n){t.sendChatMessage(e,r),n.markRead(e),n.addActivityItem(e,{id:`user-${Date.now()}`,type:`text`,content:r,timestamp:new Date().toISOString(),meta:{sender:`user`,pending:!0}})}async function s(e,t,n){try{let t=n.workspaces.find(t=>t.id===e);t&&t.agentPermissionMode===`plan`&&await n.updateAgentPermissionMode(e,`bypass`)}catch{}let r=i;try{let t=await fetch(`/api/workspaces/${e}/prep-autoloop-prompt`,{cache:`no-store`});if(t.ok){let e=await t.json();e.prompt&&(r=e.prompt)}}catch{}t.sendChatMessage(e,r,void 0,`bypass`),n.markRead(e),n.addActivityItem(e,{id:`user-${Date.now()}`,type:`text`,content:r,timestamp:new Date().toISOString(),meta:{sender:`user`,pending:!0}})}export{o as n,s as r,a as t};
@@ -1 +0,0 @@
1
- import{A as e,D as t,E as n,H as r,O as i,P as a,Q as o,S as s,j as c,k as l,l as u,y as d}from"./runtime-core.esm-bundler-9Z0QAO_7.js";import{A as f,M as p,N as m,O as h,P as g,S as _,a as v,b as y,t as ee}from"./QIcon-qfJNZLIW.js";import{u as b}from"./use-id-_7wiRcgb.js";import{F as x}from"./notifications-BPnKFW60.js";import{a as S,c as C,d as w,l as T,n as E,o as D,s as O,u as k}from"./QInput-DCJEwE8V.js";import{g as te}from"./index-CdHDdk1y.js";import{n as ne,t as re}from"./QItemSection-CQUDd0Vg.js";import{t as ie}from"./QItemLabel-CHkgkZVj.js";import{f as A}from"./QTooltip-DUGPNNeQ.js";import{t as ae}from"./QMenu-D6uqosRg.js";import{n as j,t as oe}from"./QChip-erWIZgxW.js";var se=g({name:`QField`,inheritAttrs:!1,props:{...k,tag:{type:String,default:`label`}},emits:T,setup(){return C(w({tagProp:!0}))}}),M=1e3,N=[`start`,`center`,`end`,`start-force`,`center-force`,`end-force`],P=Array.prototype.filter,ce=window.getComputedStyle(document.body).overflowAnchor===void 0?h:function(e,t){e!==null&&(e._qOverflowAnimationFrame!==void 0&&cancelAnimationFrame(e._qOverflowAnimationFrame),e._qOverflowAnimationFrame=requestAnimationFrame(()=>{if(e===null)return;e._qOverflowAnimationFrame=void 0;let n=e.children||[];P.call(n,e=>e.dataset&&e.dataset.qVsAnchor!==void 0).forEach(e=>{delete e.dataset.qVsAnchor});let r=n[t];r?.dataset&&(r.dataset.qVsAnchor=``)}))};function F(e,t){return e+t}function I(e,t,n,r,i,a,o,s){let c=e===window?document.scrollingElement||document.documentElement:e,l=i===!0?`offsetWidth`:`offsetHeight`,u={scrollStart:0,scrollViewSize:-o-s,scrollMaxSize:0,offsetStart:-o,offsetEnd:-s};if(i===!0?(e===window?(u.scrollStart=window.pageXOffset||window.scrollX||document.body.scrollLeft||0,u.scrollViewSize+=document.documentElement.clientWidth):(u.scrollStart=c.scrollLeft,u.scrollViewSize+=c.clientWidth),u.scrollMaxSize=c.scrollWidth,a===!0&&(u.scrollStart=(j===!0?u.scrollMaxSize-u.scrollViewSize:0)-u.scrollStart)):(e===window?(u.scrollStart=window.pageYOffset||window.scrollY||document.body.scrollTop||0,u.scrollViewSize+=document.documentElement.clientHeight):(u.scrollStart=c.scrollTop,u.scrollViewSize+=c.clientHeight),u.scrollMaxSize=c.scrollHeight),n!==null)for(let e=n.previousElementSibling;e!==null;e=e.previousElementSibling)e.classList.contains(`q-virtual-scroll--skip`)===!1&&(u.offsetStart+=e[l]);if(r!==null)for(let e=r.nextElementSibling;e!==null;e=e.nextElementSibling)e.classList.contains(`q-virtual-scroll--skip`)===!1&&(u.offsetEnd+=e[l]);if(t!==e){let n=c.getBoundingClientRect(),r=t.getBoundingClientRect();i===!0?(u.offsetStart+=r.left-n.left,u.offsetEnd-=r.width):(u.offsetStart+=r.top-n.top,u.offsetEnd-=r.height),e!==window&&(u.offsetStart+=u.scrollStart),u.offsetEnd+=u.scrollMaxSize-u.offsetStart}return u}function L(e,t,n,r){t===`end`&&(t=(e===window?document.body:e)[n===!0?`scrollWidth`:`scrollHeight`]),e===window?n===!0?(r===!0&&(t=(j===!0?document.body.scrollWidth-document.documentElement.clientWidth:0)-t),window.scrollTo(t,window.pageYOffset||window.scrollY||document.body.scrollTop||0)):window.scrollTo(window.pageXOffset||window.scrollX||document.body.scrollLeft||0,t):n===!0?(r===!0&&(t=(j===!0?e.scrollWidth-e.offsetWidth:0)-t),e.scrollLeft=t):e.scrollTop=t}function R(e,t,n,r){if(n>=r)return 0;let i=t.length,a=Math.floor(n/M),o=Math.floor((r-1)/M)+1,s=e.slice(a,o).reduce(F,0);return n%M!==0&&(s-=t.slice(a*M,n).reduce(F,0)),r%M!==0&&r!==i&&(s-=t.slice(r,o*M).reduce(F,0)),s}var z={virtualScrollHorizontal:Boolean,onVirtualScroll:Function,virtualScrollSliceSize:{type:[Number,String],default:10},virtualScrollSliceRatioBefore:{type:[Number,String],default:1},virtualScrollSliceRatioAfter:{type:[Number,String],default:1},virtualScrollItemSize:{type:[Number,String],default:24},virtualScrollStickySizeStart:{type:[Number,String],default:0},virtualScrollStickySizeEnd:{type:[Number,String],default:0},tableColspan:[Number,String]};function B({virtualScrollLength:e,getVirtualScrollTarget:a,getVirtualScrollEl:f,virtualScrollItemSizeComputed:p}){let{props:m,emit:h,proxy:g}=d(),{$q:_}=g,v,y,ee,x=[],S,C=o(0),w=o(0),T=o({}),E=o(null),D=o(null),O=o(null),k=o({from:0,to:0}),te=u(()=>m.tableColspan===void 0?100:m.tableColspan);p===void 0&&(p=u(()=>m.virtualScrollItemSize));let ne=u(()=>p.value+`;`+m.virtualScrollHorizontal);r(u(()=>ne.value+`;`+m.virtualScrollSliceRatioBefore+`;`+m.virtualScrollSliceRatioAfter),()=>{B()}),r(ne,re);function re(){z(y,!0)}function ie(e){z(e===void 0?y:e)}function A(t,n){let r=a();if(r==null||r.nodeType===8)return;let i=I(r,f(),E.value,D.value,m.virtualScrollHorizontal,_.lang.rtl,m.virtualScrollStickySizeStart,m.virtualScrollStickySizeEnd);ee!==i.scrollViewSize&&B(i.scrollViewSize),j(r,i,Math.min(e.value-1,Math.max(0,parseInt(t,10)||0)),0,N.indexOf(n)===-1?y!==-1&&t>y?`end`:`start`:n)}function ae(){let t=a();if(t==null||t.nodeType===8)return;let n=I(t,f(),E.value,D.value,m.virtualScrollHorizontal,_.lang.rtl,m.virtualScrollStickySizeStart,m.virtualScrollStickySizeEnd),r=e.value-1,i=n.scrollMaxSize-n.offsetStart-n.offsetEnd-w.value;if(v===n.scrollStart)return;if(n.scrollMaxSize<=0){j(t,n,0,0);return}ee!==n.scrollViewSize&&B(n.scrollViewSize),oe(k.value.from);let o=Math.floor(n.scrollMaxSize-Math.max(n.scrollViewSize,n.offsetEnd)-Math.min(S[r],n.scrollViewSize/2));if(o>0&&Math.ceil(n.scrollStart)>=o){j(t,n,r,n.scrollMaxSize-n.offsetEnd-x.reduce(F,0));return}let s=0,c=n.scrollStart-n.offsetStart,l=c;if(c<=i&&c+n.scrollViewSize>=C.value)c-=C.value,s=k.value.from,l=c;else for(let e=0;c>=x[e]&&s<r;e++)c-=x[e],s+=M;for(;c>0&&s<r;)c-=S[s],c>-n.scrollViewSize?(s++,l=c):l=S[s]+c;j(t,n,s,l)}function j(t,n,r,i,a){let o=typeof a==`string`&&a.indexOf(`-force`)!==-1,s=o===!0?a.replace(`-force`,``):a,c=s===void 0?`start`:s,l=Math.max(0,r-T.value[c]),u=l+T.value.total;u>e.value&&(u=e.value,l=Math.max(0,u-T.value.total)),v=n.scrollStart;let d=l!==k.value.from||u!==k.value.to;if(d===!1&&s===void 0){ue(r);return}let{activeElement:f}=document,p=O.value;d===!0&&p!==null&&p!==f&&p.contains(f)===!0&&(p.addEventListener(`focusout`,se),setTimeout(()=>{p?.removeEventListener(`focusout`,se)})),ce(p,r-l);let h=s===void 0?0:S.slice(l,r).reduce(F,0);if(d===!0){let t=u>=k.value.from&&l<=k.value.to?k.value.to:u;k.value={from:l,to:t},C.value=R(x,S,0,l),w.value=R(x,S,u,e.value),requestAnimationFrame(()=>{k.value.to!==u&&v===n.scrollStart&&(k.value={from:k.value.from,to:u},w.value=R(x,S,u,e.value))})}requestAnimationFrame(()=>{if(v!==n.scrollStart)return;d===!0&&oe(l);let e=S.slice(l,r).reduce(F,0),a=e+n.offsetStart+C.value,c=a+S[r],u=a+i;if(s!==void 0){let t=e-h,i=n.scrollStart+t;u=o!==!0&&i<a&&c<i+n.scrollViewSize?i:s===`end`?c-n.scrollViewSize:a-(s===`start`?0:Math.round((n.scrollViewSize-S[r])/2))}v=u,L(t,u,m.virtualScrollHorizontal,_.lang.rtl),ue(r)})}function oe(e){let t=O.value;if(t){let n=P.call(t.children,e=>e.classList&&e.classList.contains(`q-virtual-scroll--skip`)===!1),r=n.length,i=m.virtualScrollHorizontal===!0?e=>e.getBoundingClientRect().width:e=>e.offsetHeight,a=e,o,s;for(let e=0;e<r;){for(o=i(n[e]),e++;e<r&&n[e].classList.contains(`q-virtual-scroll--with-prev`)===!0;)o+=i(n[e]),e++;s=o-S[a],s!==0&&(S[a]+=s,x[Math.floor(a/M)]+=s),a++}}}function se(){O.value?.focus()}function z(t,r){let i=Number(p.value);(r===!0||Array.isArray(S)===!1)&&(S=[]);let a=S.length;S.length=e.value;for(let t=e.value-1;t>=a;t--)S[t]=i;let o=Math.floor((e.value-1)/M);x=[];for(let t=0;t<=o;t++){let n=0,r=Math.min((t+1)*M,e.value);for(let e=t*M;e<r;e++)n+=S[e];x.push(n)}y=-1,v=void 0,C.value=R(x,S,0,k.value.from),w.value=R(x,S,k.value.to,e.value),t>=0?(oe(k.value.from),n(()=>{A(t)})):de()}function B(e){if(e===void 0&&typeof window<`u`){let t=a();t!=null&&t.nodeType!==8&&(e=I(t,f(),E.value,D.value,m.virtualScrollHorizontal,_.lang.rtl,m.virtualScrollStickySizeStart,m.virtualScrollStickySizeEnd).scrollViewSize)}ee=e;let t=parseFloat(m.virtualScrollSliceRatioBefore)||0,n=parseFloat(m.virtualScrollSliceRatioAfter)||0,r=1+t+n,i=e===void 0||e<=0?1:Math.ceil(e/p.value),o=Math.max(1,i,Math.ceil((m.virtualScrollSliceSize>0?m.virtualScrollSliceSize:10)/r));T.value={total:Math.ceil(o*r),start:Math.ceil(o*t),center:Math.ceil(o*(.5+t)),end:Math.ceil(o*(1+t)),view:i}}function le(e,t){let n=m.virtualScrollHorizontal===!0?`width`:`height`,r={[`--q-virtual-scroll-item-`+n]:p.value+`px`};return[e===`tbody`?s(e,{class:`q-virtual-scroll__padding`,key:`before`,ref:E},[s(`tr`,[s(`td`,{style:{[n]:`${C.value}px`,...r},colspan:te.value})])]):s(e,{class:`q-virtual-scroll__padding`,key:`before`,ref:E,style:{[n]:`${C.value}px`,...r}}),s(e,{class:`q-virtual-scroll__content`,key:`content`,ref:O,tabindex:-1},t.flat()),e===`tbody`?s(e,{class:`q-virtual-scroll__padding`,key:`after`,ref:D},[s(`tr`,[s(`td`,{style:{[n]:`${w.value}px`,...r},colspan:te.value})])]):s(e,{class:`q-virtual-scroll__padding`,key:`after`,ref:D,style:{[n]:`${w.value}px`,...r}})]}function ue(e){y!==e&&(m.onVirtualScroll!==void 0&&h(`virtualScroll`,{index:e,from:k.value.from,to:k.value.to-1,direction:e<y?`decrease`:`increase`,ref:g}),y=e)}B();let de=b(ae,_.platform.is.ios===!0?120:35);i(()=>{B()});let fe=!1;return c(()=>{fe=!0}),t(()=>{if(fe!==!0)return;let e=a();v!==void 0&&e!=null&&e.nodeType!==8?L(e,v,m.virtualScrollHorizontal,_.lang.rtl):A(y)}),l(()=>{de.cancel()}),Object.assign(g,{scrollTo:A,reset:re,refresh:ie}),{virtualScrollSliceRange:k,virtualScrollSliceSizeComputed:T,setVirtualScrollSize:B,onVirtualScrollEvt:de,localResetVirtualScroll:z,padVirtualScroll:le,scrollTo:A,reset:re,refresh:ie}}var le=e=>[`add`,`add-unique`,`toggle`].includes(e),ue=".*+?^${}()|[]\\",de=Object.keys(k);function fe(e,t){if(typeof e==`function`)return e;let n=e===void 0?t:e;return e=>typeof e==`object`&&e&&n in e?e[n]:e}var V=g({name:`QSelect`,inheritAttrs:!1,props:{...z,...D,...k,modelValue:{required:!0},multiple:Boolean,displayValue:[String,Number],displayValueHtml:Boolean,dropdownIcon:String,options:{type:Array,default:()=>[]},optionValue:[Function,String],optionLabel:[Function,String],optionDisable:[Function,String],hideSelected:Boolean,hideDropdownIcon:Boolean,fillInput:Boolean,maxValues:[Number,String],optionsDense:Boolean,optionsDark:{type:Boolean,default:null},optionsSelectedClass:String,optionsHtml:Boolean,optionsCover:Boolean,menuShrink:Boolean,menuAnchor:String,menuSelf:String,menuOffset:Array,popupContentClass:String,popupContentStyle:[String,Array,Object],popupNoRouteDismiss:Boolean,useInput:Boolean,useChips:Boolean,newValueMode:{type:String,validator:le},mapOptions:Boolean,emitValue:Boolean,disableTabSelection:Boolean,inputDebounce:{type:[Number,String],default:500},inputClass:[Array,String,Object],inputStyle:[Array,String,Object],tabindex:{type:[String,Number],default:0},autocomplete:String,transitionShow:{},transitionHide:{},transitionDuration:{},behavior:{type:String,validator:e=>[`default`,`menu`,`dialog`].includes(e),default:`default`},virtualScrollItemSize:z.virtualScrollItemSize.type,onNewValue:Function,onFilter:Function},emits:[...T,`add`,`remove`,`inputValue`,`keyup`,`keypress`,`keydown`,`popupShow`,`popupHide`,`filterAbort`],setup(t,{slots:i,emit:c}){let{proxy:h}=d(),{$q:g}=h,b=o(!1),T=o(!1),D=o(-1),k=o(``),j=o(!1),M=o(!1),N=null,P=null,ce,F,I,L=null,R,z,V,pe,me=o(null),H=o(null),U=o(null),he=o(null),ge=o(null),_e=S(t),ve=E(lt),W=u(()=>Array.isArray(t.options)?t.options.length:0),{virtualScrollSliceRange:ye,virtualScrollSliceSizeComputed:be,localResetVirtualScroll:xe,padVirtualScroll:Se,onVirtualScrollEvt:Ce,scrollTo:we,setVirtualScrollSize:Te}=B({virtualScrollLength:W,getVirtualScrollTarget:at,getVirtualScrollEl:it,virtualScrollItemSizeComputed:u(()=>t.virtualScrollItemSize===void 0?t.optionsDense===!0?24:48:t.virtualScrollItemSize)}),G=w(),K=u(()=>{let e=t.mapOptions===!0&&t.multiple!==!0,n=t.modelValue!==void 0&&(t.modelValue!==null||e===!0)?t.multiple===!0&&Array.isArray(t.modelValue)?t.modelValue:[t.modelValue]:[];if(t.mapOptions===!0&&Array.isArray(t.options)===!0){let r=t.mapOptions===!0&&ce!==void 0?ce:[],i=n.map(e=>Ze(e,r));return t.modelValue===null&&e===!0?i.filter(e=>e!==null):i}return n}),Ee=u(()=>{let e={};return de.forEach(n=>{let r=t[n];r!==void 0&&(e[n]=r)}),e}),De=u(()=>t.optionsDark===null?G.isDark.value:t.optionsDark),Oe=u(()=>O(K.value)),ke=u(()=>{let e=`q-field__input q-placeholder col`;return t.hideSelected===!0||K.value.length===0?[e,t.inputClass]:(e+=` q-field__input--padding`,t.inputClass===void 0?e:[e,t.inputClass])}),Ae=u(()=>(t.virtualScrollHorizontal===!0?`q-virtual-scroll--horizontal`:``)+(t.popupContentClass?` `+t.popupContentClass:``)),je=u(()=>W.value===0),Me=u(()=>K.value.map(e=>J.value(e)).join(`, `)),Ne=u(()=>t.displayValue===void 0?Me.value:t.displayValue),Pe=u(()=>t.optionsHtml===!0?()=>!0:e=>e?.html===!0),Fe=u(()=>t.displayValueHtml===!0||t.displayValue===void 0&&(t.optionsHtml===!0||K.value.some(Pe.value))),Ie=u(()=>G.focused.value===!0?t.tabindex:-1),Le=u(()=>{let e={tabindex:t.tabindex,role:`combobox`,"aria-label":t.label,"aria-readonly":t.readonly===!0?`true`:`false`,"aria-autocomplete":t.useInput===!0?`list`:`none`,"aria-expanded":b.value===!0?`true`:`false`,"aria-controls":`${G.targetUid.value}_lb`};return D.value>=0&&(e[`aria-activedescendant`]=`${G.targetUid.value}_${D.value}`),e}),Re=u(()=>({id:`${G.targetUid.value}_lb`,role:`listbox`,"aria-multiselectable":t.multiple===!0?`true`:`false`})),ze=u(()=>K.value.map((e,t)=>({index:t,opt:e,html:Pe.value(e),selected:!0,removeAtIndex:Je,toggleOption:X,tabindex:Ie.value}))),Be=u(()=>{if(W.value===0)return[];let{from:e,to:n}=ye.value;return t.options.slice(e,n).map((n,r)=>{let i=Y.value(n)===!0,a=Qe(n)===!0,o=e+r,s={clickable:!0,active:a,activeClass:Ue.value,manualFocus:!0,focused:!1,disable:i,tabindex:-1,dense:t.optionsDense,dark:De.value,role:`option`,"aria-selected":a===!0?`true`:`false`,id:`${G.targetUid.value}_${o}`,onClick:()=>{X(n)}};return i!==!0&&(D.value===o&&(s.focused=!0),g.platform.is.desktop===!0&&(s.onMousemove=()=>{b.value===!0&&Z(o)})),{index:o,opt:n,html:Pe.value(n),label:J.value(n),selected:s.active,focused:s.focused,toggleOption:X,setOptionIndex:Z,itemProps:s}})}),Ve=u(()=>t.dropdownIcon===void 0?g.iconSet.arrow.dropdown:t.dropdownIcon),He=u(()=>t.optionsCover===!1&&t.outlined!==!0&&t.standout!==!0&&t.borderless!==!0&&t.rounded!==!0),Ue=u(()=>t.optionsSelectedClass===void 0?t.color===void 0?``:`text-${t.color}`:t.optionsSelectedClass),q=u(()=>fe(t.optionValue,`value`)),J=u(()=>fe(t.optionLabel,`label`)),Y=u(()=>fe(t.optionDisable,`disable`)),We=u(()=>K.value.map(q.value)),Ge=u(()=>{let e={onInput:lt,onChange:ve,onKeydown:rt,onKeyup:tt,onKeypress:nt,onFocus:$e,onClick(e){F===!0&&p(e)}};return e.onCompositionstart=e.onCompositionupdate=e.onCompositionend=ve,e});r(K,e=>{ce=e,t.useInput===!0&&t.fillInput===!0&&t.multiple!==!0&&G.innerLoading.value!==!0&&(T.value!==!0&&b.value!==!0||Oe.value!==!0)&&(I!==!0&&Ct(),(T.value===!0||b.value===!0)&&Q(``))},{immediate:!0}),r(()=>t.fillInput,Ct),r(b,wt),r(W,Tt);function Ke(e){return t.emitValue===!0?q.value(e):e}function qe(e){if(e!==-1&&e<K.value.length)if(t.multiple===!0){let n=t.modelValue.slice();c(`remove`,{index:e,value:n.splice(e,1)[0]}),c(`update:modelValue`,n)}else c(`update:modelValue`,null)}function Je(e){qe(e),G.focus()}function Ye(e,n){let r=Ke(e);if(t.multiple!==!0){t.fillInput===!0&&dt(J.value(e),!0,!0),c(`update:modelValue`,r);return}if(K.value.length===0){c(`add`,{index:0,value:r}),c(`update:modelValue`,t.multiple===!0?[r]:r);return}if(n===!0&&Qe(e)===!0||t.maxValues!==void 0&&t.modelValue.length>=t.maxValues)return;let i=t.modelValue.slice();c(`add`,{index:i.length,value:r}),i.push(r),c(`update:modelValue`,i)}function X(e,n){if(G.editable.value!==!0||e===void 0||Y.value(e)===!0)return;let r=q.value(e);if(t.multiple!==!0){n!==!0&&(dt(t.fillInput===!0?J.value(e):``,!0,!0),$()),H.value?.focus(),(K.value.length===0||x(q.value(K.value[0]),r)!==!0)&&c(`update:modelValue`,t.emitValue===!0?r:e);return}if((F!==!0||j.value===!0)&&G.focus(),$e(),K.value.length===0){let n=t.emitValue===!0?r:e;c(`add`,{index:0,value:n}),c(`update:modelValue`,t.multiple===!0?[n]:n);return}let i=t.modelValue.slice(),a=We.value.findIndex(e=>x(e,r));if(a!==-1)c(`remove`,{index:a,value:i.splice(a,1)[0]});else{if(t.maxValues!==void 0&&i.length>=t.maxValues)return;let n=t.emitValue===!0?r:e;c(`add`,{index:i.length,value:n}),i.push(n)}c(`update:modelValue`,i)}function Z(e){if(g.platform.is.desktop!==!0)return;let t=e!==-1&&e<W.value?e:-1;D.value!==t&&(D.value=t)}function Xe(e=1,n){if(b.value===!0){let r=D.value;do r=A(r+e,-1,W.value-1);while(r!==-1&&r!==D.value&&Y.value(t.options[r])===!0);D.value!==r&&(Z(r),we(r),n!==!0&&t.useInput===!0&&t.fillInput===!0&&ut(r>=0?J.value(t.options[r]):R,!0))}}function Ze(e,n){let r=t=>x(q.value(t),e);return t.options.find(r)||n.find(r)||e}function Qe(e){let t=q.value(e);return We.value.find(e=>x(e,t))!==void 0}function $e(e){t.useInput===!0&&H.value!==null&&(e===void 0||H.value===e.target&&e.target.value===Me.value)&&H.value.select()}function et(e){y(e,27)===!0&&b.value===!0&&(p(e),$(),Ct()),c(`keyup`,e)}function tt(e){let{value:n}=e.target;if(e.keyCode!==void 0){et(e);return}if(e.target.value=``,N!==null&&(clearTimeout(N),N=null),P!==null&&(clearTimeout(P),P=null),Ct(),typeof n==`string`&&n.length!==0){let e=n.toLocaleLowerCase(),r=n=>{let r=t.options.find(t=>String(n.value(t)).toLocaleLowerCase()===e);return r===void 0?!1:(K.value.indexOf(r)===-1?X(r):$(),!0)},i=e=>{r(q)!==!0&&e!==!0&&r(J)!==!0&&Q(n,!0,()=>i(!0))};i()}else G.clearValue(e)}function nt(e){c(`keypress`,e)}function rt(e){if(c(`keydown`,e),_(e)===!0)return;let r=k.value.length!==0&&(t.newValueMode!==void 0||t.onNewValue!==void 0),i=e.shiftKey!==!0&&t.disableTabSelection!==!0&&t.multiple!==!0&&(D.value!==-1||r===!0);if(e.keyCode===27){f(e);return}if(e.keyCode===9&&i===!1){xt();return}if(e.target===void 0||e.target.id!==G.targetUid.value||G.editable.value!==!0)return;if(e.keyCode===40&&G.innerLoading.value!==!0&&b.value===!1){m(e),St();return}if(e.keyCode===8&&(t.useChips===!0||t.clearable===!0)&&t.hideSelected!==!0&&k.value.length===0){t.multiple===!0&&Array.isArray(t.modelValue)===!0?qe(t.modelValue.length-1):t.multiple!==!0&&t.modelValue!==null&&c(`update:modelValue`,null);return}(e.keyCode===35||e.keyCode===36)&&(typeof k.value!=`string`||k.value.length===0)&&(m(e),D.value=-1,Xe(e.keyCode===36?1:-1,t.multiple)),(e.keyCode===33||e.keyCode===34)&&be.value!==void 0&&(m(e),D.value=Math.max(-1,Math.min(W.value,D.value+(e.keyCode===33?-1:1)*be.value.view)),Xe(e.keyCode===33?1:-1,t.multiple)),(e.keyCode===38||e.keyCode===40)&&(m(e),Xe(e.keyCode===38?-1:1,t.multiple));let a=W.value;if((V===void 0||pe<Date.now())&&(V=``),a>0&&t.useInput!==!0&&e.key!==void 0&&e.key.length===1&&e.altKey===!1&&e.ctrlKey===!1&&e.metaKey===!1&&(e.keyCode!==32||V.length!==0)){b.value!==!0&&St(e);let r=e.key.toLocaleLowerCase(),i=V.length===1&&V[0]===r;pe=Date.now()+1500,i===!1&&(m(e),V+=r);let o=RegExp(`^`+V.split(``).map(e=>ue.indexOf(e)===-1?e:`\\`+e).join(`.*`),`i`),s=D.value;if(i===!0||s<0||o.test(J.value(t.options[s]))!==!0)do s=A(s+1,-1,a-1);while(s!==D.value&&(Y.value(t.options[s])===!0||o.test(J.value(t.options[s]))!==!0));D.value!==s&&n(()=>{Z(s),we(s),s>=0&&t.useInput===!0&&t.fillInput===!0&&ut(J.value(t.options[s]),!0)});return}if(!(e.keyCode!==13&&(e.keyCode!==32||t.useInput===!0||V!==``)&&(e.keyCode!==9||i===!1))){if(e.keyCode!==9&&m(e),D.value!==-1&&D.value<a){X(t.options[D.value]);return}if(r===!0){let e=(e,n)=>{if(n){if(le(n)!==!0)return}else n=t.newValueMode;dt(``,t.multiple!==!0,!0),e!=null&&((n===`toggle`?X:Ye)(e,n===`add-unique`),t.multiple!==!0&&(H.value?.focus(),$()))};if(t.onNewValue===void 0?e(k.value):c(`newValue`,k.value,e),t.multiple!==!0)return}b.value===!0?xt():G.innerLoading.value!==!0&&St()}}function it(){return F===!0?ge.value:U.value!==null&&U.value.contentEl!==null?U.value.contentEl:void 0}function at(){return it()}function ot(){return t.hideSelected===!0?[]:i[`selected-item`]===void 0?i.selected===void 0?t.useChips===!0?ze.value.map((e,n)=>s(oe,{key:`option-`+n,removable:G.editable.value===!0&&Y.value(e.opt)!==!0,dense:!0,textColor:t.color,tabindex:Ie.value,onRemove(){e.removeAtIndex(n)}},()=>s(`span`,{class:`ellipsis`,[e.html===!0?`innerHTML`:`textContent`]:J.value(e.opt)}))):[s(`span`,{class:`ellipsis`,[Fe.value===!0?`innerHTML`:`textContent`]:Ne.value})]:[].concat(i.selected()):ze.value.map(e=>i[`selected-item`](e)).slice()}function st(){if(je.value===!0)return i[`no-option`]===void 0?void 0:i[`no-option`]({inputValue:k.value});let e=i.option===void 0?e=>s(ne,{key:e.index,...e.itemProps},()=>s(re,()=>s(ie,()=>s(`span`,{[e.html===!0?`innerHTML`:`textContent`]:e.label})))):i.option,t=Se(`div`,Be.value.map(e));return i[`before-options`]!==void 0&&(t=i[`before-options`]().concat(t)),v(i[`after-options`],t)}function ct(e,n){let r=n===!0?{...Le.value,...G.splitAttrs.attributes.value}:void 0,i={ref:n===!0?H:void 0,key:`i_t`,class:ke.value,style:t.inputStyle,value:k.value===void 0?``:k.value,type:`search`,...r,id:n===!0?G.targetUid.value:void 0,maxlength:t.maxlength,autocomplete:t.autocomplete,"data-autofocus":e===!0||t.autofocus===!0||void 0,disabled:t.disable===!0,readonly:t.readonly===!0,...Ge.value};return e!==!0&&F===!0&&(Array.isArray(i.class)===!0?i.class=[...i.class,`no-pointer-events`]:i.class+=` no-pointer-events`),s(`input`,i)}function lt(e){N!==null&&(clearTimeout(N),N=null),P!==null&&(clearTimeout(P),P=null),!(e&&e.target&&e.target.qComposing===!0)&&(ut(e.target.value||``),I=!0,R=k.value,G.focused.value!==!0&&(F!==!0||j.value===!0)&&G.focus(),t.onFilter!==void 0&&(N=setTimeout(()=>{N=null,Q(k.value)},t.inputDebounce)))}function ut(e,n){k.value!==e&&(k.value=e,n===!0||t.inputDebounce===0||t.inputDebounce===`0`?c(`inputValue`,e):P=setTimeout(()=>{P=null,c(`inputValue`,e)},t.inputDebounce))}function dt(e,n,r){I=r!==!0,t.useInput===!0&&(ut(e,!0),(n===!0||r!==!0)&&(R=e),n!==!0&&Q(e))}function Q(e,r,i){if(t.onFilter===void 0||r!==!0&&G.focused.value!==!0)return;G.innerLoading.value===!0?c(`filterAbort`):(G.innerLoading.value=!0,M.value=!0),e!==``&&t.multiple!==!0&&K.value.length!==0&&I!==!0&&e===J.value(K.value[0])&&(e=``);let a=setTimeout(()=>{b.value===!0&&(b.value=!1)},10);L!==null&&clearTimeout(L),L=a,c(`filter`,e,(e,t)=>{(r===!0||G.focused.value===!0)&&L===a&&(clearTimeout(L),typeof e==`function`&&e(),M.value=!1,n(()=>{G.innerLoading.value=!1,G.editable.value===!0&&(r===!0?b.value===!0&&$():b.value===!0?wt(!0):b.value=!0),typeof t==`function`&&n(()=>{t(h)}),typeof i==`function`&&n(()=>{i(h)})}))},()=>{G.focused.value===!0&&L===a&&(clearTimeout(L),G.innerLoading.value=!1,M.value=!1),b.value===!0&&(b.value=!1)})}function ft(){return s(ae,{ref:U,class:Ae.value,style:t.popupContentStyle,modelValue:b.value,fit:t.menuShrink!==!0,cover:t.optionsCover===!0&&je.value!==!0&&t.useInput!==!0,anchor:t.menuAnchor,self:t.menuSelf,offset:t.menuOffset,dark:De.value,noParentEvent:!0,noRefocus:!0,noFocus:!0,noRouteDismiss:t.popupNoRouteDismiss,square:He.value,transitionShow:t.transitionShow,transitionHide:t.transitionHide,transitionDuration:t.transitionDuration,separateClosePopup:!0,...Re.value,onScrollPassive:Ce,onBeforeShow:Dt,onBeforeHide:pt,onShow:mt},st)}function pt(e){Ot(e),xt()}function mt(){Te()}function ht(e){p(e),H.value?.focus(),j.value=!0,window.scrollTo(window.pageXOffset||window.scrollX||document.body.scrollLeft||0,0)}function gt(e){p(e),n(()=>{j.value=!1})}function _t(){let e=[s(se,{class:`col-auto ${G.fieldClass.value}`,...Ee.value,for:G.targetUid.value,dark:De.value,square:!0,loading:M.value,itemAligned:!1,filled:!0,stackLabel:k.value.length!==0,...G.splitAttrs.listeners.value,onFocus:ht,onBlur:gt},{...i,rawControl:()=>G.getControl(!0),before:void 0,after:void 0})];return b.value===!0&&e.push(s(`div`,{ref:ge,class:Ae.value+` scroll`,style:t.popupContentStyle,...Re.value,onClick:f,onScrollPassive:Ce},st())),s(te,{ref:he,modelValue:T.value,position:t.useInput===!0?`top`:void 0,transitionShow:z,transitionHide:t.transitionHide,transitionDuration:t.transitionDuration,noRouteDismiss:t.popupNoRouteDismiss,onBeforeShow:Dt,onBeforeHide:vt,onHide:yt,onShow:bt},()=>s(`div`,{class:`q-select__dialog`+(De.value===!0?` q-select__dialog--dark q-dark`:``)+(j.value===!0?` q-select__dialog--focused`:``)},e))}function vt(e){Ot(e),he.value!==null&&he.value.__updateRefocusTarget(G.rootRef.value.querySelector(`.q-field__native > [tabindex]:last-child`)),G.focused.value=!1}function yt(e){$(),G.focused.value===!1&&c(`blur`,e),Ct()}function bt(){let e=document.activeElement;(e===null||e.id!==G.targetUid.value)&&H.value!==null&&H.value!==e&&H.value.focus(),Te()}function xt(){T.value!==!0&&(D.value=-1,b.value===!0&&(b.value=!1),G.focused.value===!1&&(L!==null&&(clearTimeout(L),L=null),G.innerLoading.value===!0&&(c(`filterAbort`),G.innerLoading.value=!1,M.value=!1)))}function St(e){G.editable.value===!0&&(F===!0?(G.onControlFocusin(e),T.value=!0,n(()=>{G.focus()})):G.focus(),t.onFilter===void 0?(je.value!==!0||i[`no-option`]!==void 0)&&(b.value=!0):Q(k.value))}function $(){T.value=!1,xt()}function Ct(){t.useInput===!0&&dt(t.multiple!==!0&&t.fillInput===!0&&K.value.length!==0&&J.value(K.value[0])||``,!0,!0)}function wt(e){let n=-1;if(e===!0){if(K.value.length!==0){let e=q.value(K.value[0]);n=t.options.findIndex(t=>x(q.value(t),e))}xe(n)}Z(n)}function Tt(e,t){b.value===!0&&G.innerLoading.value===!1&&(xe(-1,!0),n(()=>{b.value===!0&&G.innerLoading.value===!1&&(e>t?xe():wt(!0))}))}function Et(){T.value===!1&&U.value!==null&&U.value.updatePosition()}function Dt(e){e!==void 0&&p(e),c(`popupShow`,e),G.hasPopupOpen=!0,G.onControlFocusin(e)}function Ot(e){e!==void 0&&p(e),c(`popupHide`,e),G.hasPopupOpen=!1,G.onControlFocusout(e)}function kt(){F=g.platform.is.mobile!==!0&&t.behavior!==`dialog`?!1:t.behavior!==`menu`&&(t.useInput===!0?i[`no-option`]!==void 0||t.onFilter!==void 0||je.value===!1:!0),z=g.platform.is.ios===!0&&F===!0&&t.useInput===!0?`fade`:t.transitionShow}return e(kt),a(Et),kt(),l(()=>{N!==null&&clearTimeout(N),P!==null&&clearTimeout(P)}),Object.assign(h,{showPopup:St,hidePopup:$,removeAtIndex:qe,add:Ye,toggleOption:X,getOptionIndex:()=>D.value,setOptionIndex:Z,moveOptionSelection:Xe,filter:Q,updateMenuPosition:Et,updateInputValue:dt,isOptionSelected:Qe,getEmittingOptionValue:Ke,isOptionDisabled:(...e)=>Y.value.apply(null,e)===!0,getOptionValue:(...e)=>q.value.apply(null,e),getOptionLabel:(...e)=>J.value.apply(null,e)}),Object.assign(G,{innerValue:K,fieldClass:u(()=>`q-select q-field--auto-height q-select--with${t.useInput===!0?``:`out`}-input q-select--with${t.useChips===!0?``:`out`}-chips q-select--${t.multiple===!0?`multiple`:`single`}`),inputRef:me,targetRef:H,hasValue:Oe,showPopup:St,floatingLabel:u(()=>t.hideSelected!==!0&&Oe.value===!0||typeof k.value==`number`||k.value.length!==0||O(t.displayValue)),getControlChild:()=>{if(G.editable.value!==!1&&(T.value===!0||je.value!==!0||i[`no-option`]!==void 0))return F===!0?_t():ft();G.hasPopupOpen===!0&&(G.hasPopupOpen=!1)},controlEvents:{onFocusin(e){G.onControlFocusin(e)},onFocusout(e){G.onControlFocusout(e,()=>{Ct(),xt()})},onClick(e){if(f(e),F!==!0&&b.value===!0){xt(),H.value?.focus();return}St(e)}},getControl:e=>{let n=ot(),r=e===!0||T.value!==!0||F!==!0;if(t.useInput===!0)n.push(ct(e,r));else if(G.editable.value===!0){let i=r===!0?Le.value:void 0;n.push(s(`input`,{ref:r===!0?H:void 0,key:`d_t`,class:`q-select__focus-target`,id:r===!0?G.targetUid.value:void 0,value:Ne.value,readonly:!0,"data-autofocus":e===!0||t.autofocus===!0||void 0,...i,onKeydown:rt,onKeyup:et,onKeypress:nt})),r===!0&&typeof t.autocomplete==`string`&&t.autocomplete.length!==0&&n.push(s(`input`,{class:`q-select__autocomplete-input`,autocomplete:t.autocomplete,tabindex:-1,onKeyup:tt}))}if(_e.value!==void 0&&t.disable!==!0&&We.value.length!==0){let e=We.value.map(e=>s(`option`,{value:e,selected:!0}));n.push(s(`select`,{class:`hidden`,name:_e.value,multiple:t.multiple},e))}return s(`div`,{class:`q-field__native row items-center`,...t.useInput===!0||r!==!0?void 0:G.splitAttrs.attributes.value,...G.splitAttrs.listeners.value},n)},getInnerAppend:()=>t.loading!==!0&&M.value!==!0&&t.hideDropdownIcon!==!0?[s(ee,{class:`q-select__dropdown-icon`+(b.value===!0?` rotate-180`:``),name:Ve.value})]:null}),C(G)}}),pe=[{id:`auto`,label:`Auto`,i18nLabelKey:`model.auto`,i18nDescriptionKey:`model.autoDescription`},{id:`claude-opus-4-7`,label:`Opus 4.7 (Classic)`,i18nLabelKey:`model.opus47Classic`,i18nDescriptionKey:`model.opus47ClassicDescription`},{id:`claude-opus-4-7[1m]`,label:`Opus 4.7 (1M)`,i18nLabelKey:`model.opus471m`,i18nDescriptionKey:`model.opus471mDescription`},{id:`claude-opus-4-6`,label:`Opus 4.6 (Classic)`,i18nLabelKey:`model.opusClassic`,i18nDescriptionKey:`model.opusClassicDescription`},{id:`claude-opus-4-6[1m]`,label:`Opus 4.6 (1M)`,i18nLabelKey:`model.opus1m`,i18nDescriptionKey:`model.opus1mDescription`},{id:`claude-sonnet-4-6`,label:`Sonnet 4.6 (Classic)`,i18nLabelKey:`model.sonnetClassic`,i18nDescriptionKey:`model.sonnetClassicDescription`},{id:`claude-sonnet-4-6[1m]`,label:`Sonnet 4.6 (1M)`,i18nLabelKey:`model.sonnet1m`,i18nDescriptionKey:`model.sonnet1mDescription`},{id:`claude-haiku-4-5-20251001`,label:`Haiku 4.5`,i18nLabelKey:`model.haiku`,i18nDescriptionKey:`model.haikuDescription`}].map(e=>({value:e.id,i18nLabelKey:e.i18nLabelKey,i18nDescriptionKey:e.i18nDescriptionKey}));export{V as n,pe as t};