vibe64 0.1.38 → 0.1.40

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 (261) hide show
  1. package/bin/run.js +1942 -1846
  2. package/bin/server.js +136 -112
  3. package/bin/upgrade-state.js +5023 -4860
  4. package/dist/assets/GithubBrowserTabs-BoDkGFtY.js +1 -0
  5. package/dist/assets/LocalDatabaseServer-BWAvRlUl.css +1 -0
  6. package/dist/assets/LocalDatabaseServer-CVsGChHh.js +2 -0
  7. package/dist/assets/StudioErrorNotice-C_jbvp9V.js +1 -0
  8. package/dist/assets/VAlert-gwuhYlYb.js +1 -0
  9. package/dist/assets/VAutocomplete-D7Vk5wq_.js +1 -0
  10. package/dist/assets/VAvatar-DvRBcmqv.js +1 -0
  11. package/dist/assets/VBtn-BhVEwXLX.js +1 -0
  12. package/dist/assets/VCard-C3Hx769y.js +1 -0
  13. package/dist/assets/VCheckbox-DyCGSN0H.js +1 -0
  14. package/dist/assets/VCheckboxBtn-DCyuVH7W.css +1 -0
  15. package/dist/assets/VCheckboxBtn-DYcQU2Pn.js +1 -0
  16. package/dist/assets/VChip-VVdtjfq-.js +1 -0
  17. package/dist/assets/VDialog-CQDhjRiV.js +1 -0
  18. package/dist/assets/VDivider-Dq25WsKu.js +1 -0
  19. package/dist/assets/VExpansionPanels-C1y-myl5.js +1 -0
  20. package/dist/assets/VMenu-CDcBLYWR.js +1 -0
  21. package/dist/assets/VOverlay-Cp4rFk6g.js +1 -0
  22. package/dist/assets/VRadioGroup-CAjNZwF7.js +1 -0
  23. package/dist/assets/VRow-BskP28jR.js +1 -0
  24. package/dist/assets/VSelect-D3oLvCcB.js +2 -0
  25. package/dist/assets/VSheet-DxYEFfnM.js +1 -0
  26. package/dist/assets/VSkeletonLoader-Cync3lZZ.js +1 -0
  27. package/dist/assets/VSpacer-CgWOWvBh.js +1 -0
  28. package/dist/assets/VSwitch-BxGuGypi.js +1 -0
  29. package/dist/assets/VTextField-C0b_0cSa.js +1 -0
  30. package/dist/assets/VTextField-F6unyhrS.css +1 -0
  31. package/dist/assets/VTextarea-B7sZd1JY.js +1 -0
  32. package/dist/assets/{Vibe64AsyncModuleState-Do9EqX3S.js → Vibe64AsyncModuleState-syuPcpGx.js} +1 -1
  33. package/dist/assets/Vibe64AuthSettingsButton-CmiidAs5.js +5 -0
  34. package/dist/assets/{Vibe64AuthSettingsButton-M44SSmZ9.css → Vibe64AuthSettingsButton-D2lltUhi.css} +1 -1
  35. package/dist/assets/Vibe64CopyCommand-CYiZcy0d.js +1 -0
  36. package/dist/assets/Vibe64CopyCommand-ClbQLYZi.css +1 -0
  37. package/dist/assets/{Vibe64DashboardBackButton-BH_8j_VR.js → Vibe64DashboardBackButton-Go_MJuIK.js} +1 -1
  38. package/dist/assets/{Vibe64DashboardPageHeader-BXQR00HK.js → Vibe64DashboardPageHeader-BMrdRph6.js} +1 -1
  39. package/dist/assets/Vibe64DashboardPageHeader-CdlzsyKQ.css +1 -0
  40. package/dist/assets/Vibe64DashboardShell-MCzEQCWu.js +1 -0
  41. package/dist/assets/{Vibe64DatabaseWorkspace-Ca8IHSRq.js → Vibe64DatabaseWorkspace-DM9V017v.js} +3 -3
  42. package/dist/assets/{Vibe64DatabaseWorkspace-DPDMxhAW.css → Vibe64DatabaseWorkspace-DePBDUMy.css} +1 -1
  43. package/dist/assets/Vibe64OutputControls-CU9H0Dur.js +8 -0
  44. package/dist/assets/{Vibe64OutputControls-Co5YzwcK.css → Vibe64OutputControls-CeBzZPUT.css} +1 -1
  45. package/dist/assets/{Vibe64RepositoryWorkspace-Agyt4O-V.css → Vibe64RepositoryWorkspace-Bw9W691N.css} +1 -1
  46. package/dist/assets/{Vibe64RepositoryWorkspace-BfsZozSJ.js → Vibe64RepositoryWorkspace-DaAChLA8.js} +2 -2
  47. package/dist/assets/{Vibe64SessionFiles-n87RqqY6.js → Vibe64SessionFiles-CM2EzXBf.js} +4 -4
  48. package/dist/assets/Vibe64SessionFiles-DsPb8hOe.css +1 -0
  49. package/dist/assets/{Vibe64TemporaryAiFixAction-BiuIE9mC.js → Vibe64TemporaryAiFixAction-CIePbdW8.js} +1 -1
  50. package/dist/assets/{Vibe64UiStoryboardView-BhKRpL0N.js → Vibe64UiStoryboardView-Bp9STItF.js} +1 -1
  51. package/dist/assets/{Vibe64UnavailableSessions-Ca5nC7KH.js → Vibe64UnavailableSessions-JBgHzM-j.js} +1 -1
  52. package/dist/assets/{_sessionId_-B_TTRB4c.js → _sessionId_-DVHd6D5V.js} +1 -1
  53. package/dist/assets/{_sessionTool_-1V-z6Pbp.js → _sessionTool_-BV1AwpUx.js} +1 -1
  54. package/dist/assets/_slug_-DsfaE8Vh.js +25 -0
  55. package/dist/assets/_slug_-_qfQqdHb.css +1 -0
  56. package/dist/assets/{access-tl4ht_d8.js → access-BbzSuMt5.js} +1 -1
  57. package/dist/assets/app-BNh2oZg-.js +1 -0
  58. package/dist/assets/assistantRouting-DeE8jvtE.js +3 -0
  59. package/dist/assets/{changes-DZWHZguL.js → changes-D8Koqrqg.js} +1 -1
  60. package/dist/assets/client-CybfBKCn.js +2 -0
  61. package/dist/assets/client-D6UGamrv.css +1 -0
  62. package/dist/assets/{conversation-B90ERX9h.js → conversation-DZW4-Wck.js} +2 -2
  63. package/dist/assets/{conversation-vxJGwmtW.css → conversation-TK6EmDk4.css} +1 -1
  64. package/dist/assets/{createSimpleFunctional-CZTGuNuR.js → createSimpleFunctional-zlXZooQW.js} +1 -1
  65. package/dist/assets/{dashboard-iREwhGqv.js → dashboard-DLrmf5ed.js} +1 -1
  66. package/dist/assets/definitions-DgyQJgn-.js +1 -0
  67. package/dist/assets/dialog-transition-D2vqGksQ.js +1 -0
  68. package/dist/assets/env-B5V1EC4M.css +1 -0
  69. package/dist/assets/env-rVQwLtYr.js +1 -0
  70. package/dist/assets/health-92hh8xXh.css +1 -0
  71. package/dist/assets/health-B6r9LLrd.js +1 -0
  72. package/dist/assets/{history-DVURy45X.js → history-C6xLWUxL.js} +1 -1
  73. package/dist/assets/incoming-Bdqo8z25.css +1 -0
  74. package/dist/assets/incoming-CNwZa_yD.js +2 -0
  75. package/dist/assets/index-B9P6KjvH.js +138 -0
  76. package/dist/assets/{index-irlMYzLh.css → index-BC29JK2e.css} +1 -1
  77. package/dist/assets/{integrations-Dy5jIiJ5.js → integrations-CcrqPXxj.js} +10 -10
  78. package/dist/assets/integrations-Co8WvCiD.css +1 -0
  79. package/dist/assets/issues-DEjIlMdl.js +1 -0
  80. package/dist/assets/layout-B2Ap07aa.js +1 -0
  81. package/dist/assets/{lazy-NHSwD9FS.js → lazy-BjyT2XvW.js} +1 -1
  82. package/dist/assets/{learning-_O1PEaam.js → learning-BP1xvd8w.js} +1 -1
  83. package/dist/assets/mdi-Bt90Ns76.js +1 -0
  84. package/dist/assets/placement-CQy46H3H.js +1 -0
  85. package/dist/assets/publish-CPWnztCc.css +1 -0
  86. package/dist/assets/publish-CVXolnAG.js +3 -0
  87. package/dist/assets/pull-requests-BjwokcU0.css +1 -0
  88. package/dist/assets/pull-requests-DdgzLzY_.js +1 -0
  89. package/dist/assets/{repository-BUfUAyS9.js → repository-5S0LzRq3.js} +1 -1
  90. package/dist/assets/ripple-EFNA8EBu.js +11 -0
  91. package/dist/assets/rolldown-runtime-DBalRfVu.js +1 -0
  92. package/dist/assets/{session-BdhKrcX4.js → session-BGpiZThC.js} +1 -1
  93. package/dist/assets/{settings-CzhIcn9K.js → settings-BKP_eQ3F.js} +1 -1
  94. package/dist/assets/settings-D8x4KUqV.css +1 -0
  95. package/dist/assets/shared-DZETtWRH.js +2 -0
  96. package/dist/assets/studioGateApi-BXHVBVEc.js +1 -0
  97. package/dist/assets/studioUrls-DpSS-0z1.js +1 -0
  98. package/dist/assets/useArchivedVibe64Sessions-D8DWpcSy.js +1 -0
  99. package/dist/assets/useCommand-nWFczmJy.js +1 -0
  100. package/dist/assets/useEndpointResource-Ds8EDBZ2.js +1 -0
  101. package/dist/assets/useRealtimeEvent-DrOiU8lJ.js +1 -0
  102. package/dist/assets/{useUiFeedback-BPBF_0bp.js → useUiFeedback-CMwE4MLs.js} +1 -1
  103. package/dist/assets/useVibe64ConversationLog-D-Vkq0sK.js +1 -0
  104. package/dist/assets/{useVibe64DatabaseTools-4o6S8eXq.js → useVibe64DatabaseTools-Dpm53ruL.js} +1 -1
  105. package/dist/assets/useVibe64ProjectScope-B5ogg6jd.js +1 -0
  106. package/dist/assets/useVibe64SessionData-CGJXj3r7.js +1 -0
  107. package/dist/assets/{useVibe64SessionSelection-CuZCzAcY.js → useVibe64SessionSelection-BEqKR412.js} +1 -1
  108. package/dist/assets/{useVibe64SystemGraph-B4RmsC9Y.js → useVibe64SystemGraph-DbSfrYF8.js} +1 -1
  109. package/dist/assets/{useVibe64Terminal-Cg3idMcy.js → useVibe64Terminal-I7Sf6xMW.js} +1 -1
  110. package/dist/assets/vibe64ProjectScope.local-B06ABkhI.js +1 -0
  111. package/dist/assets/vibe64SavedEnvValues-B_QE9aAj.js +1 -0
  112. package/dist/assets/vibe64SessionFocus-CA-sk8Ri.css +1 -0
  113. package/dist/assets/vibe64SessionFocus-tv2wz7_H.js +1 -0
  114. package/dist/assets/{vibe64SessionInfo-BuBUdL-e.js → vibe64SessionInfo-B0uItVOK.js} +1 -1
  115. package/dist/assets/{vibe64SessionToolDefinitions-BJaJH5LR.js → vibe64SessionToolDefinitions-Dsn8WYmO.js} +1 -1
  116. package/dist/index.html +56 -46
  117. package/docs/colleague-usage/account-profile-and-appearance.md +1 -1
  118. package/docs/colleague-usage/{ai-accounts-and-routing.md → ai-accounts.md} +41 -114
  119. package/docs/colleague-usage/ai-model-setups.md +159 -0
  120. package/docs/colleague-usage/ai-onboarding.md +94 -21
  121. package/docs/colleague-usage/ai-personal-use.md +41 -0
  122. package/docs/colleague-usage/auto-workflow.md +8 -3
  123. package/docs/colleague-usage/codex-context-recovery.md +2 -1
  124. package/docs/colleague-usage/coding-agent-goals.md +7 -4
  125. package/docs/colleague-usage/coding-agents.md +8 -5
  126. package/docs/colleague-usage/colleague-watches.md +15 -4
  127. package/docs/colleague-usage/colleague.md +21 -5
  128. package/docs/colleague-usage/connected-contributions.md +13 -13
  129. package/docs/colleague-usage/connected-projects.md +2 -2
  130. package/docs/colleague-usage/conversation-context.md +1 -1
  131. package/docs/colleague-usage/dashboard-navigation.md +5 -3
  132. package/docs/colleague-usage/development-env.md +21 -4
  133. package/docs/colleague-usage/file-interfaces.md +1 -1
  134. package/docs/colleague-usage/github-work.md +8 -8
  135. package/docs/colleague-usage/health-checks.md +52 -18
  136. package/docs/colleague-usage/incoming-changes.md +3 -3
  137. package/docs/colleague-usage/integrations.md +5 -3
  138. package/docs/colleague-usage/learning-course-catalogue.md +3 -3
  139. package/docs/colleague-usage/learning-environment.md +57 -50
  140. package/docs/colleague-usage/learning-mode-ui.md +13 -10
  141. package/docs/colleague-usage/learning-practice-projects.md +13 -2
  142. package/docs/colleague-usage/learning-teacher-guide.md +9 -4
  143. package/docs/colleague-usage/learning-with-colleague.md +9 -5
  144. package/docs/colleague-usage/lesson-authoring.md +12 -12
  145. package/docs/colleague-usage/lesson-step-bar.md +32 -33
  146. package/docs/colleague-usage/main-chat-approvals.md +150 -0
  147. package/docs/colleague-usage/preview-browser-checks.md +5 -1
  148. package/docs/colleague-usage/project-language-tools.md +16 -2
  149. package/docs/colleague-usage/project-settings.md +1 -1
  150. package/docs/colleague-usage/project-setup.md +17 -7
  151. package/docs/colleague-usage/publishing.md +185 -0
  152. package/docs/colleague-usage/running-vibe64-on-your-computer.md +54 -6
  153. package/docs/colleague-usage/sessions.md +18 -10
  154. package/docs/colleague-usage/set-up-linux.md +254 -0
  155. package/docs/colleague-usage/set-up-macos.md +199 -0
  156. package/docs/colleague-usage/set-up-windows.md +76 -0
  157. package/docs/colleague-usage/starter-apps.md +21 -4
  158. package/docs/colleague-usage/teaching-content.md +2 -2
  159. package/docs/colleague-usage/team-ai-access.md +108 -0
  160. package/docs/colleague-usage/temporary-chats.md +9 -7
  161. package/docs/colleague-usage/workspace-preparation.md +50 -1
  162. package/docs/templates/learn-topic/README.md +3 -3
  163. package/docs/templates/learn-topic/training/lessons/TOPIC-01/lesson.json +2 -1
  164. package/docs/training-content.md +39 -16
  165. package/node_modules/@jskit-ai/assistant-core/package.json +1 -1
  166. package/node_modules/@jskit-ai/assistant-runtime/package.json +1 -1
  167. package/node_modules/@jskit-ai/assistant-voice/package.json +1 -1
  168. package/node_modules/@jskit-ai/connector-google-calendar/package.json +1 -1
  169. package/node_modules/@jskit-ai/connectors-catalog/package.json +1 -1
  170. package/node_modules/@jskit-ai/connectors-catalog/patterns/oauth-connection/PATTERN.md +25 -0
  171. package/node_modules/@jskit-ai/connectors-core/package.json +1 -1
  172. package/node_modules/@jskit-ai/http-runtime/package.json +1 -1
  173. package/node_modules/@jskit-ai/kernel/package.json +1 -1
  174. package/node_modules/@jskit-ai/realtime/package.json +1 -1
  175. package/node_modules/@jskit-ai/resource-core/package.json +1 -1
  176. package/node_modules/@jskit-ai/resource-crud-core/package.json +1 -1
  177. package/node_modules/@jskit-ai/uploads-runtime/package.json +1 -1
  178. package/node_modules/@local/vibe64-accounts/package.json +2 -1
  179. package/node_modules/@local/vibe64-core/package.json +4 -1
  180. package/node_modules/@local/vibe64-execution/src/host/execHelper.js +82 -81
  181. package/node_modules/@local/vibe64-genesis/bin/vibe64-genesis-host-context +73 -69
  182. package/node_modules/@local/vibe64-genesis/package.json +1 -0
  183. package/node_modules/@local/vibe64-genesis/src/server/agentSpecs.js +118 -68
  184. package/node_modules/@local/vibe64-genesis/src/server/index.js +501 -415
  185. package/node_modules/@local/vibe64-genesis/src/server/packaging.js +105 -0
  186. package/node_modules/@local/vibe64-genesis/src/server/promptContext.js +143 -139
  187. package/node_modules/@local/vibe64-packaging/package.json +26 -0
  188. package/node_modules/@local/vibe64-packaging/src/server/packers/capacitor/ShellIcons.java +112 -0
  189. package/node_modules/@local/vibe64-project/package.json +3 -1
  190. package/node_modules/@local/vibe64-publishing/package.json +12 -0
  191. package/node_modules/@local/vibe64-runtime/src/server/codexAppServerProcess.js +7 -7
  192. package/node_modules/@local/vibe64-runtime/src/shared/assistantRoutingScores.json +25 -22
  193. package/node_modules/@local/vibe64-terminals/package.json +2 -1
  194. package/node_modules/@local/vibe64-terminals/src/server/sessionWorkOperationCommand.js +1340 -1300
  195. package/node_modules/@local/vibe64-training/package.json +2 -1
  196. package/package.json +19 -15
  197. package/server.bundle.mjs +42890 -40887
  198. package/dist/assets/GithubBrowserTabs-BykoCFfz.js +0 -1
  199. package/dist/assets/StudioErrorNotice-CSrUw1QV.js +0 -1
  200. package/dist/assets/VAlert-P256xaE0.js +0 -1
  201. package/dist/assets/VAutocomplete-BDb95qJX.js +0 -1
  202. package/dist/assets/VAvatar-DPzqDH4r.js +0 -1
  203. package/dist/assets/VBtn-B2MBK2DL.js +0 -1
  204. package/dist/assets/VCard-mXy0k4aS.js +0 -1
  205. package/dist/assets/VCheckbox-C7A1ZW4D.js +0 -1
  206. package/dist/assets/VChip-CcI-Oo2J.js +0 -1
  207. package/dist/assets/VDialog-Bu3EfKb1.js +0 -1
  208. package/dist/assets/VDivider-BMEqUoAB.js +0 -1
  209. package/dist/assets/VExpansionPanels-Dgjrop0V.js +0 -1
  210. package/dist/assets/VMenu-C_x18lwb.js +0 -1
  211. package/dist/assets/VOverlay-CeMZurIN.js +0 -1
  212. package/dist/assets/VRadioGroup-CUu2-KIP.js +0 -1
  213. package/dist/assets/VRow-Cpw7OHQV.js +0 -1
  214. package/dist/assets/VSelect-DL3HaA5m.js +0 -2
  215. package/dist/assets/VSheet-DZWsu0kL.js +0 -1
  216. package/dist/assets/VSkeletonLoader-CttxM1tw.js +0 -1
  217. package/dist/assets/VSpacer-Dhmsvk4t.js +0 -1
  218. package/dist/assets/VSwitch-BRHeDJkH.js +0 -1
  219. package/dist/assets/VTextField-BR2eZeFT.js +0 -1
  220. package/dist/assets/VTextField-BiatYyd3.css +0 -1
  221. package/dist/assets/VTextarea-DbqamXJd.js +0 -1
  222. package/dist/assets/Vibe64AuthSettingsButton-CIwtchKm.js +0 -5
  223. package/dist/assets/Vibe64DashboardPageHeader-Gm1IvlHx.css +0 -1
  224. package/dist/assets/Vibe64DashboardShell-DXVDJUAY.js +0 -1
  225. package/dist/assets/Vibe64OutputControls-DngQNTTt.js +0 -8
  226. package/dist/assets/Vibe64SessionFiles-Bl8wJ5Sk.css +0 -1
  227. package/dist/assets/_slug_-Buxpw0T4.css +0 -1
  228. package/dist/assets/_slug_-DsqilUs_.js +0 -24
  229. package/dist/assets/app-DT4_MliP.js +0 -1
  230. package/dist/assets/assistantRouting-D4XpXcEf.js +0 -3
  231. package/dist/assets/client-BWV84wi2.js +0 -2
  232. package/dist/assets/client-DGrP-2AJ.css +0 -1
  233. package/dist/assets/definitions-CNu5E87y.js +0 -1
  234. package/dist/assets/env-BzRtyO0w.css +0 -1
  235. package/dist/assets/env-D5KpTEw7.js +0 -1
  236. package/dist/assets/health-BJvooRnJ.css +0 -1
  237. package/dist/assets/health-BhoO1d4h.js +0 -1
  238. package/dist/assets/incoming-DWDrmxyH.css +0 -1
  239. package/dist/assets/incoming-DzADFGqp.js +0 -2
  240. package/dist/assets/index-GBRpNZLy.js +0 -138
  241. package/dist/assets/integrations-Cq1x-Di9.css +0 -1
  242. package/dist/assets/issues-lh7R775d.js +0 -1
  243. package/dist/assets/mdi-CG9pWOSj.js +0 -1
  244. package/dist/assets/placement-BF-zIEhA.js +0 -1
  245. package/dist/assets/pull-requests-ByE-Dvk7.js +0 -1
  246. package/dist/assets/pull-requests-CdbhyFOv.css +0 -1
  247. package/dist/assets/ripple-BVltMmyV.js +0 -11
  248. package/dist/assets/settings-BopLnpB0.css +0 -1
  249. package/dist/assets/shared-DpMvYJO3.js +0 -2
  250. package/dist/assets/studioGateApi-DcCqiD9V.js +0 -1
  251. package/dist/assets/studioUrls-DmMMIScP.js +0 -1
  252. package/dist/assets/useArchivedVibe64Sessions-CLHJOyeW.js +0 -1
  253. package/dist/assets/useCommand-Bqxb-naz.js +0 -1
  254. package/dist/assets/useEndpointResource-DWoQ2keu.js +0 -1
  255. package/dist/assets/useRealtimeEvent-Bwapstla.js +0 -1
  256. package/dist/assets/useVibe64ConversationLog-B4JgmxUf.js +0 -1
  257. package/dist/assets/useVibe64Learning-DyqXkpLw.js +0 -1
  258. package/dist/assets/useVibe64ProjectScope-Bp1ImZlz.js +0 -1
  259. package/dist/assets/useVibe64SessionData-YhhE_5pC.js +0 -1
  260. package/dist/assets/vibe64SessionFocus-Cz5Vq1re.js +0 -1
  261. package/dist/assets/vibe64SessionFocus-OJ2toBd9.css +0 -1
@@ -0,0 +1 @@
1
+ import{D as createVNode,E as createTextVNode,On as unref,g as computed,mt as openBlock,qt as withCtx,v as createBlock}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{g as useRoute}from"./useApi-BPuI6ZR9-CFWU1m37.js";import{a as projectSlugFromRoute,r as projectAppPath}from"./vibe64ProjectScope.local-B06ABkhI.js";import{$n as mdiRecordCircleOutline,Cr as mdiSourcePull}from"./mdi-Bt90Ns76.js";import{Jt as VTab,qt as VTabs}from"./index-B9P6KjvH.js";var _sfc_main={__name:`GithubBrowserTabs`,setup(__props){const route=useRoute();const projectSlug=computed(()=>projectSlugFromRoute(route));const selected=computed(()=>route.path.endsWith(`/pull-requests`)?`pull-requests`:`issues`);return(_ctx,_cache)=>{return openBlock(),createBlock(VTabs,{"model-value":selected.value,color:`primary`,density:`compact`,"aria-label":`Issues and pull requests`},{default:withCtx(()=>[createVNode(VTab,{value:`issues`,"prepend-icon":unref(mdiRecordCircleOutline),to:{path:unref(projectAppPath)(projectSlug.value,`/dashboard/issues`),query:{...unref(route).query,issue:void 0}}},{default:withCtx(()=>[..._cache[0]||(_cache[0]=[createTextVNode(` Issues `,-1)])]),_:1},8,[`prepend-icon`,`to`]),createVNode(VTab,{value:`pull-requests`,"prepend-icon":unref(mdiSourcePull),to:{path:unref(projectAppPath)(projectSlug.value,`/dashboard/pull-requests`),query:{...unref(route).query,pr:void 0,createPullRequest:void 0}}},{default:withCtx(()=>[..._cache[1]||(_cache[1]=[createTextVNode(` Pull requests `,-1)])]),_:1},8,[`prepend-icon`,`to`])]),_:1},8,[`model-value`])}}};export{_sfc_main as t};
@@ -0,0 +1 @@
1
+ .db-server[data-v-afc1e1c7]{background:color-mix(in srgb, rgb(var(--v-theme-warning)) 5%, rgb(var(--v-theme-surface)));border:1px solid color-mix(in srgb, rgb(var(--v-theme-warning)) 26%, transparent);border-radius:var(--v64-shape-md,12px);gap:var(--v64-space-3,12px);margin-top:var(--v64-space-2,8px);padding:var(--v64-space-4,16px);transition:background-color var(--v64-duration-medium) var(--v64-ease-standard), border-color var(--v64-duration-medium) var(--v64-ease-standard);display:grid}.db-server--ready[data-v-afc1e1c7]{background:var(--v64-surface-container-low);border-color:var(--v64-outline-variant);padding-block:var(--v64-space-3,12px)}.db-server__header[data-v-afc1e1c7]{align-items:start;gap:var(--v64-space-3,12px);grid-template-columns:20px minmax(0,1fr) auto;display:grid}.db-server__icon[data-v-afc1e1c7]{color:rgb(var(--v-theme-warning));justify-content:center;align-items:center;height:24px;display:flex}.db-server--ready .db-server__icon[data-v-afc1e1c7]{color:var(--v64-success)}.db-server__heading[data-v-afc1e1c7]{gap:2px;min-width:0;display:grid}.db-server__title[data-v-afc1e1c7]{font:var(--v64-type-title-md);font-size:.9375rem;line-height:24px}.db-server__lead[data-v-afc1e1c7],.db-server__where[data-v-afc1e1c7],.db-server__sentence[data-v-afc1e1c7]{color:var(--v64-on-surface-variant);font:var(--v64-type-body-md);margin:0}.db-server__where[data-v-afc1e1c7]{overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.75rem}.db-server__edit[data-v-afc1e1c7]{margin-top:-4px}.db-server__finish[data-v-afc1e1c7]{margin-top:var(--v64-space-2,8px);justify-self:start}.db-server__body[data-v-afc1e1c7]{gap:var(--v64-space-3,12px);display:grid}.db-server__body--start-first .db-server__status[data-v-afc1e1c7]{order:-2}.db-server__body--start-first .db-server__help[data-v-afc1e1c7]{order:-1}.db-server__looking[data-v-afc1e1c7]{color:var(--v64-on-surface-variant);font:var(--v64-type-body-md);align-items:center;gap:0 var(--v64-space-2,8px);flex-wrap:wrap;grid-column:1/-1;margin:0;display:flex}.db-server__looking code[data-v-afc1e1c7]{color:var(--v64-on-surface);overflow-wrap:anywhere;background:0 0;padding:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.8125rem}.db-server__change[data-v-afc1e1c7]{margin-inline-start:-8px}.db-server__status[data-v-afc1e1c7]{background:rgb(var(--v-theme-surface));border:1px solid var(--v64-outline-variant);border-radius:var(--v64-shape-sm,8px);color:var(--v64-on-surface);font:var(--v64-type-body-md);min-height:44px;transition:box-shadow var(--v64-duration-medium) var(--v64-ease-standard);align-items:start;gap:8px;margin:0;padding:10px 12px;display:flex}.db-server__status .v-icon[data-v-afc1e1c7]{color:rgb(var(--v-theme-warning));flex:none;margin-top:2px}.db-server--ready .db-server__status .v-icon[data-v-afc1e1c7]{color:var(--v64-success)}.db-server__status--fresh[data-v-afc1e1c7]{box-shadow:0 0 0 2px color-mix(in srgb, rgb(var(--v-theme-primary)) 45%, transparent)}.db-server__form[data-v-afc1e1c7]{grid-template-columns:repeat(6,minmax(0,1fr));gap:14px 12px;display:grid}.db-server__field[data-v-afc1e1c7]{grid-column:span 3}.db-server__field--host[data-v-afc1e1c7]{grid-column:span 4}.db-server__field--port[data-v-afc1e1c7]{grid-column:span 2}.db-server__field--password[data-v-afc1e1c7]{grid-column:span 6}.db-server__field[data-v-afc1e1c7] .v-messages__message{letter-spacing:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.6875rem}.db-server__actions[data-v-afc1e1c7]{align-items:center;gap:var(--v64-space-2,8px) var(--v64-space-4,16px);flex-wrap:wrap;grid-column:1/-1;padding-top:4px;display:flex}.db-server__saved-where[data-v-afc1e1c7]{color:var(--v64-on-surface-variant);font-size:.8125rem}.db-server__help[data-v-afc1e1c7]{border:1px solid var(--v64-outline-variant);border-radius:var(--v64-shape-sm,8px);overflow:hidden}.db-server__help[data-v-afc1e1c7] .v-expansion-panel{background:0 0}.db-server__help[data-v-afc1e1c7] .v-expansion-panel-title{min-height:48px;padding:10px 14px}.db-server__help[data-v-afc1e1c7] .v-expansion-panel-text__wrapper{gap:var(--v64-space-2,8px);padding:2px 14px 14px;display:grid}.db-server__help-title[data-v-afc1e1c7]{font:var(--v64-type-label-lg);align-items:center;gap:10px;display:inline-flex}.db-server__suggest[data-v-afc1e1c7]{justify-self:start}.db-server__steps[data-v-afc1e1c7]{gap:var(--v64-space-3,12px);margin:0;padding:0;list-style:none;display:grid}.db-server__steps li[data-v-afc1e1c7]{gap:6px;display:grid}.db-server__steps li>span[data-v-afc1e1c7]{color:var(--v64-on-surface-variant);font:var(--v64-type-body-md)}.db-server__note[data-v-afc1e1c7]{color:var(--v64-on-surface-variant);align-items:center;gap:6px;margin:0;font-size:.8125rem;display:flex}.db-server__other[data-v-afc1e1c7]{color:rgb(var(--v-theme-primary));font:var(--v64-type-label-lg);justify-self:start;align-items:center;gap:4px;text-decoration:none;display:inline-flex}.db-server__other[data-v-afc1e1c7]:hover{text-decoration:underline}@media (width<=599px){.db-server[data-v-afc1e1c7]{padding:var(--v64-space-3,12px)}.db-server__field[data-v-afc1e1c7],.db-server__field--host[data-v-afc1e1c7],.db-server__field--port[data-v-afc1e1c7]{grid-column:span 6}.db-server__field--port[data-v-afc1e1c7]{grid-column:span 2}.db-server__field--host[data-v-afc1e1c7]{grid-column:span 4}}
@@ -0,0 +1,2 @@
1
+ import{D as createVNode,E as createTextVNode,Ht as watch,On as unref,Zn as normalizeClass,_ as createBaseVNode,b as createElementBlock,bt as renderList,g as computed,gn as reactive,mt as openBlock,o as Fragment,qt as withCtx,tr as toDisplayString,v as createBlock,vn as ref,w as createSlots,y as createCommentVNode}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{W as VExpandTransition,h as VIcon,or as withKeys,sr as withModifiers}from"./ripple-EFNA8EBu.js";import{T as ROUTE_VISIBILITY_PUBLIC,t as useEndpointResource}from"./useEndpointResource-Ds8EDBZ2.js";import{t as VTextField}from"./VTextField-C0b_0cSa.js";import{D as mdiAutoFix,Dt as mdiEyeOutline,En as mdiLockOutline,Et as mdiEyeOffOutline,R as mdiCheckCircle,Rn as mdiOpenInNew,a as mdiAccountKeyOutline,f as mdiAlertCircleOutline,fr as mdiServerOutline,ft as mdiContentSaveOutline,nr as mdiRefresh,vt as mdiDatabaseAlertOutline}from"./mdi-Bt90Ns76.js";import{r as VProgressCircular,t as VBtn}from"./VBtn-BhVEwXLX.js";import{i as VExpansionPanelText,n as VExpansionPanel,r as VExpansionPanelTitle,t as VExpansionPanels}from"./VExpansionPanels-C1y-myl5.js";import{t as Vibe64CopyCommand_default}from"./Vibe64CopyCommand-CYiZcy0d.js";import{t as _plugin_vue_export_helper_default}from"./_plugin-vue_export-helper-DNW4j-dv.js";import{t as usePaths}from"./usePaths-Db88-HOm.js";import{t as useCommand}from"./useCommand-nWFczmJy.js";import{o as ENV_USER_VALUES_ENDPOINT,v as VIBE64_ENV_USER_VALUES_API_SUFFIX}from"./studioGateApi-BXHVBVEc.js";var SUDO_NOTE=`You'll be asked for your computer password. Nothing shows while you type.`;var SETUP_GUIDES=Object.freeze({apt:`https://github.com/mobily-enterprises/vibe64/blob/main/docs/colleague-usage/set-up-linux.md#databases`,brew:`https://github.com/mobily-enterprises/vibe64/blob/main/docs/colleague-usage/set-up-macos.md#databases`});var ADMIN_USERS=new Set([`root`,`postgres`,`mysql`,`mariadb`]);var SERVERS=Object.freeze({mysql:{product:`MariaDB`,apt:{install:`sudo apt install mariadb-server`,start:`sudo service mariadb start`,admin:`sudo mariadb`},brew:{install:`brew install mariadb && brew services start mariadb`,start:`brew services start mariadb`,admin:`mariadb`},other:{admin:`sudo mariadb`}},postgresql:{product:`PostgreSQL`,apt:{install:`sudo apt install postgresql`,start:`sudo service postgresql start`,admin:`sudo -u postgres psql`},brew:{install:`brew install postgresql@18 && brew services start postgresql@18`,start:`brew services start postgresql@18`,admin:`"$(brew --prefix postgresql@18)/bin/psql" postgres`},other:{admin:`sudo -u postgres psql`}}});function mysqlName(value=``){return`\`${String(value).replaceAll("`","``")}\``}function mysqlString(value=``){return`'${String(value).replaceAll(`\\`,`\\\\`).replaceAll(`'`,`''`)}'`}function pgName(value=``){return`"${String(value).replaceAll(`"`,`""`)}"`}function pgString(value=``){return`'${String(value).replaceAll(`'`,`''`)}'`}function mysqlStatements({database,username,password,testDatabases}){const user=`${mysqlString(username)}@'%'`;return[`CREATE DATABASE IF NOT EXISTS ${mysqlName(database)} CHARACTER SET utf8mb4;`,`CREATE USER IF NOT EXISTS ${user} IDENTIFIED BY ${mysqlString(password)};`,`ALTER USER ${user} IDENTIFIED BY ${mysqlString(password)};`,...[database,...testDatabases].map(name=>`GRANT ALL PRIVILEGES ON ${mysqlName(name)}.* TO ${user};`)]}function postgresqlStatements({database,username,password}){return[`DO $$ BEGIN IF NOT EXISTS (SELECT FROM pg_roles WHERE rolname = ${pgString(username)}) THEN CREATE ROLE ${pgName(username)}; END IF; END $$;`,`ALTER ROLE ${pgName(username)} LOGIN CREATEDB PASSWORD ${pgString(password)};`,`SELECT ${pgString(`CREATE DATABASE ${pgName(database)} OWNER ${pgName(username)}`)} WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = ${pgString(database)})\\gexec`]}function isAdminUser(username=``){return ADMIN_USERS.has(String(username||``).trim().toLowerCase())}function testDatabaseNames(database=``,testDatabase=``){const declared=String(testDatabase||``).trim();if(declared)return[declared];return database?[`test_${database}`,`${database}_test`]:[]}function databaseServerGuide({kind,family=``,database=``,username=``,password=``,testDatabase=``}={}){const server=SERVERS[kind];if(!server)return null;const lines=server[family]||null;const admin=(lines||server.other).admin;const ready=Boolean(database&&username&&password&&!isAdminUser(username));const statements=!ready?[]:kind===`mysql`?mysqlStatements({database,username,password,testDatabases:testDatabaseNames(database,testDatabase)}):postgresqlStatements({database,username,password});const sudo=command=>command.startsWith(`sudo `);return{product:server.product,guideUrl:SETUP_GUIDES[family]||SETUP_GUIDES.apt,install:lines?{command:lines.install,note:sudo(lines.install)?SUDO_NOTE:``}:null,start:lines?{command:lines.start,note:sudo(lines.start)?SUDO_NOTE:``}:null,create:ready?{command:[`${admin} <<'SQL'`,...statements,`SQL`].join(`
2
+ `),note:sudo(admin)?SUDO_NOTE:``}:null}}var _hoisted_1=[`data-database-server`];var _hoisted_2={class:`db-server__header`};var _hoisted_3={class:`db-server__icon`,"aria-hidden":`true`};var _hoisted_4={class:`db-server__heading`};var _hoisted_5={class:`db-server__title`};var _hoisted_6={key:0,class:`db-server__where`};var _hoisted_7={key:2,class:`db-server__lead`};var _hoisted_8=[`onSubmit`];var _hoisted_9={key:0,class:`db-server__looking`};var _hoisted_10={class:`db-server__actions`};var _hoisted_11={key:0,class:`db-server__saved-where`};var _hoisted_12={class:`db-server__help-title`};var _hoisted_13={class:`db-server__steps`};var _hoisted_14={key:0,class:`db-server__note`};var _hoisted_15=[`href`];var _hoisted_16={class:`db-server__help-title`};var _hoisted_17={class:`db-server__sentence`};var _hoisted_18={key:0,class:`db-server__note`};var _hoisted_19={class:`db-server__sentence`};var _sfc_main={__name:`LocalDatabaseServer`,props:{sessionId:{type:String,required:true},active:{type:Boolean,default:true}},emits:[`retry`],setup(__props,{emit:__emit}){const props=__props;const emit=__emit;const paths=usePaths();const serverPath=computed(()=>`${paths.api(`/vibe64/database`,{surface:`app`})}/sessions/${encodeURIComponent(props.sessionId)}/server`);const resource=useEndpointResource({enabled:computed(()=>Boolean(props.active&&props.sessionId)),fallbackLoadError:`The database check could not run.`,path:computed(()=>props.active&&props.sessionId?serverPath.value:``),queryKey:computed(()=>[`vibe64`,`database`,`server`,props.sessionId]),queryOptions:{refetchOnWindowFocus:`always`,staleTime:0},requestRecoveryLabel:`Database check`});const saveCommand=useCommand({access:`never`,apiSuffix:VIBE64_ENV_USER_VALUES_API_SUFFIX,buildCommandOptions:()=>({method:`PUT`,path:ENV_USER_VALUES_ENDPOINT}),buildRawPayload:(_model,{context})=>({environment:`dev`,sessionId:props.sessionId,values:context.values||{}}),fallbackRunError:`The database settings could not be saved.`,messages:{error:`The database settings could not be saved.`,success:`Saved in Env.`},ownershipFilter:ROUTE_VISIBILITY_PUBLIC,placementSource:`vibe64.database.server.save`,suppressSuccessMessage:true,surfaceId:`app`,writeMethod:`PUT`});const report=computed(()=>resource.data.value||{});const databases=computed(()=>report.value.managed===false&&Array.isArray(report.value.databases)?report.value.databases:[]);const busy=computed(()=>resource.isFetching.value===true||saveCommand.isRunning===true);const form=reactive({});const showSecret=ref(false);const editing=ref(false);const openHelp=ref([]);const fresh=ref(false);const LABELS={mysql:`MySQL or MariaDB`,postgresql:`PostgreSQL`};const FIELD_LABELS={host:`Host`,port:`Port`,database:`Database`,username:`User`,password:`Password`};function labelFor(database){return LABELS[database.kind]||`database`}function fieldLabel(field){return field.optional&&field.secret?`${FIELD_LABELS[field.semantic]} (if it has one)`:FIELD_LABELS[field.semantic]||field.semantic}function connected(database){return database.check?.state===`connected`}function tone(database){return connected(database)?`ready`:`attention`}function title(database){if(connected(database))return[database.check.product,database.check.version].filter(Boolean).join(` `)+` is connected`;return database.check?.state===`not-running`||database.check?.state===`unreachable`?`This project needs a ${labelFor(database)} server`:`Finish connecting to ${labelFor(database)}`}function value(database,semantic){const field=database.fields.find(candidate=>candidate.semantic===semantic);return field?String(form[field.name]??``):``}function where(database){if(database.connectsWith===`url`)return`Using the database address in Env.`;return`${value(database,`host`)}:${value(database,`port`)} · database ${value(database,`database`)} · user ${value(database,`username`)}`}function showFields(database){return editing.value||dirty.value||database.connectsWith===`url`||database.check?.state!==`not-running`}function statusText(database){if(connected(database))return`Connected as ${value(database,`username`)||`the saved user`}.`;if(database.check?.state===`incomplete`)return`Fill in ${database.missing.join(`, `)} below, then choose Save and check.`;return database.check?.message||`Vibe64 couldn't sign in to the database server.`}function resetForm(){for(const database of databases.value)for(const field of database.fields)form[field.name]=field.secret?``:String(field.value??``)}const original=computed(()=>Object.fromEntries(databases.value.flatMap(database=>database.fields.map(field=>[field.name,field.secret?``:String(field.value??``)]))));const dirty=computed(()=>Object.entries(original.value).some(([name,before])=>String(form[name]??``)!==before));const touched=ref(false);watch(form,()=>{touched.value=dirty.value},{deep:true});function helpFor(database){const state=database.check?.state;if(state===`not-running`||state===`unreachable`)return[`server`];if([`wrong-login`,`login-method`,`database-missing`,`no-access`].includes(state))return[`login`];return[]}let freshTimer=null;watch(()=>report.value,(now,before)=>{if(!touched.value)resetForm();if(now!==before&&before&&Object.keys(before).length){fresh.value=true;clearTimeout(freshTimer);freshTimer=setTimeout(()=>{fresh.value=false},1600)}const first=databases.value[0];if(first&&!openHelp.value.length)openHelp.value=helpFor(first)},{immediate:true});function guide(database){return databaseServerGuide({kind:database.kind,family:report.value.family||``})}function createCommand(database){const password=value(database,`password`);const input={kind:database.kind,family:report.value.family||``,database:value(database,`database`),username:value(database,`username`),testDatabase:database.testDatabase?.value||``};const copied=databaseServerGuide({...input,password})?.create;if(!copied)return null;return{shown:databaseServerGuide({...input,password:`•`.repeat(Math.min(Math.max(password.length,8),16))}).create.command,copied:copied.command,note:copied.note}}function createHint(database){if(isAdminUser(value(database,`username`)))return`“${value(database,`username`)}” is the server's administrator. Give this project its own user: Vibe64 can suggest one with a strong password.`;return`Choose a user and password above, or let Vibe64 suggest them.`}function randomPassword(){const alphabet=`ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz23456789`;const bytes=new Uint8Array(20);globalThis.crypto.getRandomValues(bytes);return[...bytes].map(byte=>alphabet[byte%57]).join(``)}function suggestLogin(database){const field=semantic=>database.fields.find(candidate=>candidate.semantic===semantic);const name=value(database,`database`).replace(/[^A-Za-z0-9_]/gu,`_`)||`app`;if(field(`username`)&&(!value(database,`username`)||isAdminUser(value(database,`username`))))form[field(`username`).name]=name;if(field(`password`))form[field(`password`).name]=randomPassword()}async function saveAndCheck(database){if(dirty.value){const values={};for(const field of database.fields){const next=String(form[field.name]??``);if(field.secret?next===``:next===String(field.value??``))continue;values[field.name]={secret:field.secret,value:next}}if((await saveCommand.run({values}))?.ok===false)return;for(const field of database.fields)if(field.secret)form[field.name]=``;showSecret.value=false}editing.value=false;await resource.reload()}return(_ctx,_cache)=>{return openBlock(true),createElementBlock(Fragment,null,renderList(databases.value,database=>{return openBlock(),createElementBlock(`section`,{key:database.id,class:normalizeClass([`db-server`,`db-server--${tone(database)}`]),"data-database-server":database.kind,"aria-label":`Database server`},[createBaseVNode(`header`,_hoisted_2,[createBaseVNode(`div`,_hoisted_3,[busy.value?(openBlock(),createBlock(VProgressCircular,{key:0,indeterminate:``,size:`18`,width:`2`})):(openBlock(),createBlock(VIcon,{key:1,icon:connected(database)?unref(mdiCheckCircle):unref(mdiDatabaseAlertOutline),size:`20`},null,8,[`icon`]))]),createBaseVNode(`div`,_hoisted_4,[createBaseVNode(`strong`,_hoisted_5,toDisplayString(title(database)),1),connected(database)?(openBlock(),createElementBlock(`span`,_hoisted_6,toDisplayString(where(database)),1)):createCommentVNode(``,true),connected(database)&&!editing.value?(openBlock(),createBlock(VBtn,{key:1,class:`db-server__finish`,color:`primary`,"prepend-icon":unref(mdiRefresh),rounded:`pill`,variant:`flat`,onClick:_cache[0]||(_cache[0]=$event=>emit(`retry`))},{default:withCtx(()=>[..._cache[6]||(_cache[6]=[createTextVNode(` Finish preparing `,-1)])]),_:1},8,[`prepend-icon`])):(openBlock(),createElementBlock(`span`,_hoisted_7,` This project keeps its data in a `+toDisplayString(labelFor(database))+` server that you run, on this computer or one you already have. `,1))]),connected(database)&&!editing.value?(openBlock(),createBlock(VBtn,{key:0,class:`db-server__edit`,color:`primary`,size:`small`,variant:`text`,onClick:_cache[1]||(_cache[1]=$event=>editing.value=true)},{default:withCtx(()=>[..._cache[7]||(_cache[7]=[createTextVNode(` Change `,-1)])]),_:1})):createCommentVNode(``,true)]),createVNode(VExpandTransition,null,{default:withCtx(()=>[!connected(database)||editing.value?(openBlock(),createElementBlock(`div`,{key:0,class:normalizeClass([`db-server__body`,{"db-server__body--start-first":!showFields(database)}])},[createBaseVNode(`p`,{class:normalizeClass([`db-server__status`,{"db-server__status--fresh":fresh.value}]),"aria-live":`polite`},[createVNode(VIcon,{icon:connected(database)?unref(mdiCheckCircle):unref(mdiAlertCircleOutline),size:`16`},null,8,[`icon`]),createBaseVNode(`span`,null,toDisplayString(statusText(database)),1)],2),createBaseVNode(`form`,{class:`db-server__form`,onSubmit:withModifiers($event=>saveAndCheck(database),[`prevent`])},[!showFields(database)?(openBlock(),createElementBlock(`p`,_hoisted_9,[createBaseVNode(`span`,null,[_cache[8]||(_cache[8]=createTextVNode(`Looking for it at `,-1)),createBaseVNode(`code`,null,toDisplayString(where(database)),1)]),createVNode(VBtn,{class:`db-server__change`,color:`primary`,density:`comfortable`,variant:`text`,onClick:_cache[2]||(_cache[2]=$event=>editing.value=true)},{default:withCtx(()=>[..._cache[9]||(_cache[9]=[createTextVNode(` Change `,-1)])]),_:1})])):createCommentVNode(``,true),(openBlock(true),createElementBlock(Fragment,null,renderList(showFields(database)?database.fields:[],field=>{return openBlock(),createBlock(VTextField,{key:field.name,modelValue:form[field.name],"onUpdate:modelValue":$event=>form[field.name]=$event,autocomplete:field.secret?`new-password`:`off`,class:normalizeClass(`db-server__field db-server__field--${field.semantic}`),density:`comfortable`,disabled:busy.value,hint:field.name,label:fieldLabel(field),"persistent-hint":``,"persistent-placeholder":field.secret&&field.set,placeholder:field.secret&&field.set?`Saved · leave empty to keep it`:``,spellcheck:`false`,type:field.secret&&!showSecret.value?`password`:`text`,variant:`outlined`},createSlots({_:2},[field.secret?{name:`append-inner`,fn:withCtx(()=>[createVNode(VIcon,{"aria-label":showSecret.value?`Hide password`:`Show password`,icon:showSecret.value?unref(mdiEyeOffOutline):unref(mdiEyeOutline),role:`button`,size:`18`,tabindex:`0`,onClick:_cache[3]||(_cache[3]=$event=>showSecret.value=!showSecret.value),onKeydown:_cache[4]||(_cache[4]=withKeys(withModifiers($event=>showSecret.value=!showSecret.value,[`prevent`]),[`enter`]))},null,8,[`aria-label`,`icon`])]),key:`0`}:void 0]),1032,[`modelValue`,`onUpdate:modelValue`,`autocomplete`,`class`,`disabled`,`hint`,`label`,`persistent-placeholder`,`placeholder`,`type`])}),128)),createBaseVNode(`div`,_hoisted_10,[createVNode(VBtn,{color:`primary`,loading:busy.value,"prepend-icon":dirty.value?unref(mdiContentSaveOutline):unref(mdiRefresh),rounded:`pill`,type:`submit`,variant:`flat`},{default:withCtx(()=>[createTextVNode(toDisplayString(dirty.value?`Save and check`:`Check again`),1)]),_:1},8,[`loading`,`prepend-icon`]),showFields(database)?(openBlock(),createElementBlock(`span`,_hoisted_11,`Kept in this project's Env.`)):createCommentVNode(``,true)])],40,_hoisted_8),createVNode(VExpansionPanels,{modelValue:openHelp.value,"onUpdate:modelValue":_cache[5]||(_cache[5]=$event=>openHelp.value=$event),class:`db-server__help`,multiple:``,variant:`accordion`},{default:withCtx(()=>[guide(database)?.install?(openBlock(),createBlock(VExpansionPanel,{key:0,value:`server`},{default:withCtx(()=>[createVNode(VExpansionPanelTitle,null,{default:withCtx(()=>[createBaseVNode(`span`,_hoisted_12,[createVNode(VIcon,{icon:unref(mdiServerOutline),size:`18`},null,8,[`icon`]),createTextVNode(` Install or start `+toDisplayString(guide(database).product),1)])]),_:2},1024),createVNode(VExpansionPanelText,null,{default:withCtx(()=>[createBaseVNode(`ol`,_hoisted_13,[createBaseVNode(`li`,null,[_cache[10]||(_cache[10]=createBaseVNode(`span`,null,`Not installed yet? This installs it and starts it.`,-1)),createVNode(Vibe64CopyCommand_default,{command:guide(database).install.command,label:`Copy the command that installs ${guide(database).product}`},null,8,[`command`,`label`])]),createBaseVNode(`li`,null,[_cache[11]||(_cache[11]=createBaseVNode(`span`,null,`Installed but stopped? This starts it.`,-1)),createVNode(Vibe64CopyCommand_default,{command:guide(database).start.command,label:`Copy the command that starts ${guide(database).product}`},null,8,[`command`,`label`])])]),guide(database).install.note?(openBlock(),createElementBlock(`p`,_hoisted_14,[createVNode(VIcon,{icon:unref(mdiLockOutline),size:`14`},null,8,[`icon`]),createTextVNode(` `+toDisplayString(guide(database).install.note),1)])):createCommentVNode(``,true),createBaseVNode(`a`,{class:`db-server__other`,href:guide(database).guideUrl,rel:`noopener`,target:`_blank`},[_cache[12]||(_cache[12]=createTextVNode(` Other ways to install it `,-1)),createVNode(VIcon,{icon:unref(mdiOpenInNew),size:`13`},null,8,[`icon`])],8,_hoisted_15)]),_:2},1024)]),_:2},1024)):createCommentVNode(``,true),createVNode(VExpansionPanel,{value:`login`},{default:withCtx(()=>[createVNode(VExpansionPanelTitle,null,{default:withCtx(()=>[createBaseVNode(`span`,_hoisted_16,[createVNode(VIcon,{icon:unref(mdiAccountKeyOutline),size:`18`},null,8,[`icon`]),_cache[13]||(_cache[13]=createTextVNode(` Create a login and database for this project `,-1))])]),_:1}),createVNode(VExpansionPanelText,null,{default:withCtx(()=>[createCommand(database)?(openBlock(),createElementBlock(Fragment,{key:0},[createBaseVNode(`p`,_hoisted_17,` Paste this into a terminal on this computer. It uses the values above, then choose `+toDisplayString(dirty.value?`Save and check`:`Check again`)+`. `,1),createVNode(Vibe64CopyCommand_default,{command:createCommand(database).shown,"copy-text":createCommand(database).copied,label:`Copy the command that creates the login and database`},null,8,[`command`,`copy-text`]),createCommand(database).note?(openBlock(),createElementBlock(`p`,_hoisted_18,[createVNode(VIcon,{icon:unref(mdiLockOutline),size:`14`},null,8,[`icon`]),createTextVNode(` `+toDisplayString(createCommand(database).note),1)])):createCommentVNode(``,true)],64)):(openBlock(),createElementBlock(Fragment,{key:1},[createBaseVNode(`p`,_hoisted_19,toDisplayString(createHint(database)),1),createVNode(VBtn,{class:`db-server__suggest`,"prepend-icon":unref(mdiAutoFix),rounded:`pill`,size:`small`,variant:`tonal`,onClick:$event=>suggestLogin(database)},{default:withCtx(()=>[..._cache[14]||(_cache[14]=[createTextVNode(` Suggest a user and password `,-1)])]),_:1},8,[`prepend-icon`,`onClick`])],64))]),_:2},1024)]),_:2},1024)]),_:2},1032,[`modelValue`])],2)):createCommentVNode(``,true)]),_:2},1024)],10,_hoisted_1)}),128)}}};var LocalDatabaseServer_default=_plugin_vue_export_helper_default(_sfc_main,[[`__scopeId`,`data-v-afc1e1c7`]]);export{LocalDatabaseServer_default as default};
@@ -0,0 +1 @@
1
+ import{D as createVNode,E as createTextVNode,On as unref,Yt as withDirectives,Zn as normalizeClass,_ as createBaseVNode,b as createElementBlock,g as computed,mt as openBlock,qt as withCtx,tr as toDisplayString,v as createBlock,vn as ref,xt as renderSlot,y as createCommentVNode}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{W as VExpandTransition,ar as vShow,h as VIcon}from"./ripple-EFNA8EBu.js";import{t as VChip}from"./VChip-VVdtjfq-.js";import{V as mdiChevronDown,W as mdiChevronUp,X as mdiClose,f as mdiAlertCircleOutline,ut as mdiContentCopy}from"./mdi-Bt90Ns76.js";import{t as VBtn}from"./VBtn-BhVEwXLX.js";import{t as VSheet}from"./VSheet-DxYEFfnM.js";import{t as _plugin_vue_export_helper_default}from"./_plugin-vue_export-helper-DNW4j-dv.js";var _hoisted_1={class:`studio-error-notice__icon`};var _hoisted_2={class:`studio-error-notice__body`};var _hoisted_3={class:`studio-error-notice__header`};var _hoisted_4={key:0,class:`studio-error-notice__message`};var _hoisted_5={key:1,class:`studio-error-notice__actions`};var _hoisted_6={key:2,class:`studio-error-notice__repair`};var _hoisted_7={key:3,class:`studio-error-notice__details`};var _hoisted_8={key:4,class:`studio-error-notice__copy-status`};var _sfc_main={__name:`StudioErrorNotice`,props:{code:{type:String,default:``},compact:{type:Boolean,default:false},details:{type:[String,Object,Array],default:``},dismissible:{type:Boolean,default:false},error:{type:[String,Object],default:``},message:{type:String,default:``},overlay:{type:Boolean,default:false},repairCommand:{type:String,default:``},title:{type:String,default:``}},emits:[`dismiss`],setup(__props){const props=__props;const detailsOpen=ref(false);const copyStatus=ref(``);const errorObject=computed(()=>{return props.error&&typeof props.error===`object`&&!Array.isArray(props.error)?props.error:{}});const displayCode=computed(()=>String(props.code||errorObject.value.code||``).trim());const displayTitle=computed(()=>{const title=String(props.title||errorObject.value.title||``).trim();if(title)return title;if(displayCode.value)return displayCode.value.replace(/[_-]+/gu,` `).replace(/\b\w/gu,letter=>letter.toUpperCase());return`Something needs attention`});const displayMessage=computed(()=>{return String(props.message||errorObject.value.message||(typeof props.error===`string`?props.error:``)||``).trim()});const displayRepairCommand=computed(()=>{return String(props.repairCommand||errorObject.value.repairCommand||``).trim()});const displayDetails=computed(()=>{const details=props.details||errorObject.value.details||errorObject.value.output||errorObject.value.stderr||errorObject.value.stdout||``;if(!details)return``;if(typeof details===`string`)return details.trim();try{return JSON.stringify(details,null,2)}catch{return String(details||``).trim()}});async function copyRepairCommand(){const value=displayRepairCommand.value;if(!value)return;try{await navigator.clipboard.writeText(value);copyStatus.value=`Repair command copied.`}catch{copyStatus.value=`Copy failed.`}}return(_ctx,_cache)=>{return openBlock(),createBlock(VSheet,{border:``,rounded:`lg`,role:`alert`,class:normalizeClass([`studio-error-notice`,{"studio-error-notice--compact":__props.compact,"studio-error-notice--overlay":__props.overlay}])},{default:withCtx(()=>[createBaseVNode(`div`,_hoisted_1,[createVNode(VIcon,{icon:unref(mdiAlertCircleOutline),size:`22`},null,8,[`icon`])]),createBaseVNode(`div`,_hoisted_2,[createBaseVNode(`div`,_hoisted_3,[createBaseVNode(`strong`,null,toDisplayString(displayTitle.value),1),displayCode.value?(openBlock(),createBlock(VChip,{key:0,color:`error`,size:`x-small`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(displayCode.value),1)]),_:1})):createCommentVNode(``,true),__props.dismissible?(openBlock(),createBlock(VBtn,{key:1,icon:unref(mdiClose),"aria-label":`Dismiss`,class:`studio-error-notice__dismiss`,density:`comfortable`,size:`small`,variant:`text`,onClick:_cache[0]||(_cache[0]=$event=>_ctx.$emit(`dismiss`))},null,8,[`icon`])):createCommentVNode(``,true)]),displayMessage.value?(openBlock(),createElementBlock(`p`,_hoisted_4,toDisplayString(displayMessage.value),1)):createCommentVNode(``,true),_ctx.$slots.actions?(openBlock(),createElementBlock(`div`,_hoisted_5,[renderSlot(_ctx.$slots,`actions`,{},void 0,true)])):createCommentVNode(``,true),displayRepairCommand.value?(openBlock(),createElementBlock(`div`,_hoisted_6,[createBaseVNode(`code`,null,toDisplayString(displayRepairCommand.value),1),createVNode(VBtn,{icon:unref(mdiContentCopy),"aria-label":`Copy repair command`,size:`x-small`,variant:`text`,onClick:copyRepairCommand},null,8,[`icon`])])):createCommentVNode(``,true),displayDetails.value?(openBlock(),createElementBlock(`div`,_hoisted_7,[createVNode(VBtn,{"append-icon":detailsOpen.value?unref(mdiChevronUp):unref(mdiChevronDown),color:`error`,size:`small`,variant:`text`,onClick:_cache[1]||(_cache[1]=$event=>detailsOpen.value=!detailsOpen.value)},{default:withCtx(()=>[..._cache[2]||(_cache[2]=[createTextVNode(` Details `,-1)])]),_:1},8,[`append-icon`]),createVNode(VExpandTransition,null,{default:withCtx(()=>[withDirectives(createBaseVNode(`pre`,null,toDisplayString(displayDetails.value),513),[[vShow,detailsOpen.value]])]),_:1})])):createCommentVNode(``,true),copyStatus.value?(openBlock(),createElementBlock(`p`,_hoisted_8,toDisplayString(copyStatus.value),1)):createCommentVNode(``,true)])]),_:3},8,[`class`])}}};var StudioErrorNotice_default=_plugin_vue_export_helper_default(_sfc_main,[[`__scopeId`,`data-v-8217c0e2`]]);export{StudioErrorNotice_default as t};
@@ -0,0 +1 @@
1
+ import{D as createVNode,Zn as normalizeClass,_ as createBaseVNode,er as normalizeStyle,et as mergeProps,g as computed,wn as toRef}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{$ as makeThemeProps,A as useElevation,B as useTextColor,D as makeLocationProps,E as useDensity,H as useDimension,I as makeRoundedProps,L as useRounded,Mt as makeComponentProps,Nt as propsFactory,O as useLocation,S as useVariant,T as makeDensityProps,U as VDefaultsProvider,V as makeDimensionProps,Y as makeTagProps,b as genOverlays,dt as useProxiedModel,et as provideTheme,h as VIcon,k as makeElevationProps,lt as useLocale,mt as IconValue,o as makePositionProps,s as usePosition,wt as genericComponent,x as makeVariantProps,zn as isBoolean}from"./ripple-EFNA8EBu.js";import{t as createSimpleFunctional}from"./createSimpleFunctional-zlXZooQW.js";import{t as VBtn}from"./VBtn-BhVEwXLX.js";var VAlertTitle=createSimpleFunctional(`v-alert-title`);var makeIconSizeProps=propsFactory({iconSize:[Number,String],iconSizes:{type:Array,default:()=>[[`x-small`,10],[`small`,16],[`default`,24],[`large`,28],[`x-large`,32]]}},`iconSize`);function useIconSizes(props,fallback){return{iconSize:computed(()=>{const iconSizeMap=new Map(props.iconSizes);const _iconSize=props.iconSize??fallback()??`default`;return iconSizeMap.has(_iconSize)?iconSizeMap.get(_iconSize):_iconSize})}}var allowedTypes=[`success`,`info`,`warning`,`error`];var makeVAlertProps=propsFactory({border:{type:[Boolean,String],validator:val=>{return isBoolean(val)||[`top`,`end`,`bottom`,`start`].includes(val)}},borderColor:String,closable:Boolean,closeIcon:{type:IconValue,default:`$close`},closeLabel:{type:String,default:`$vuetify.close`},icon:{type:[Boolean,String,Function,Object],default:null},modelValue:{type:Boolean,default:true},prominent:Boolean,title:String,text:String,type:{type:String,validator:val=>allowedTypes.includes(val)},...makeComponentProps(),...makeDensityProps(),...makeDimensionProps(),...makeElevationProps(),...makeIconSizeProps(),...makeLocationProps(),...makePositionProps(),...makeRoundedProps(),...makeTagProps(),...makeThemeProps(),...makeVariantProps({variant:`flat`})},`VAlert`);var VAlert=genericComponent()({name:`VAlert`,props:makeVAlertProps(),emits:{"click:close":e=>true,"update:modelValue":value=>true},setup(props,{emit,slots}){const isActive=useProxiedModel(props,`modelValue`);const icon=toRef(()=>{if(props.icon===false)return void 0;if(!props.type)return props.icon;return props.icon??`$${props.type}`});const{iconSize}=useIconSizes(props,()=>props.prominent?44:void 0);const{themeClasses}=provideTheme(props);const{colorClasses,colorStyles,variantClasses}=useVariant(()=>({color:props.color??props.type,variant:props.variant}));const{densityClasses}=useDensity(props);const{dimensionStyles}=useDimension(props);const{elevationClasses}=useElevation(props);const{locationStyles}=useLocation(props);const{positionClasses}=usePosition(props);const{roundedClasses,roundedStyles}=useRounded(props);const{textColorClasses,textColorStyles}=useTextColor(()=>props.borderColor);const{t}=useLocale();const closeProps=toRef(()=>({"aria-label":t(props.closeLabel),onClick(e){isActive.value=false;emit(`click:close`,e)}}));return()=>{const hasPrepend=!!(slots.prepend||icon.value);const hasTitle=!!(slots.title||props.title);const hasClose=!!(slots.close||props.closable);const iconProps={density:props.density,icon:icon.value,size:props.iconSize||props.prominent?iconSize.value:void 0};return isActive.value&&createVNode(props.tag,{"class":normalizeClass([`v-alert`,props.border&&{"v-alert--border":!!props.border,[`v-alert--border-${props.border===true?`start`:props.border}`]:true},{"v-alert--prominent":props.prominent},themeClasses.value,colorClasses.value,densityClasses.value,elevationClasses.value,positionClasses.value,roundedClasses.value,variantClasses.value,props.class]),"style":normalizeStyle([colorStyles.value,dimensionStyles.value,locationStyles.value,roundedStyles.value,props.style]),"role":`alert`},{default:()=>[genOverlays(false,`v-alert`),props.border&&createBaseVNode(`div`,{"key":`border`,"class":normalizeClass([`v-alert__border`,textColorClasses.value]),"style":normalizeStyle(textColorStyles.value)},null),hasPrepend&&createBaseVNode(`div`,{"key":`prepend`,"class":`v-alert__prepend`},[!slots.prepend?createVNode(VIcon,mergeProps({"key":`prepend-icon`},iconProps),null):createVNode(VDefaultsProvider,{"key":`prepend-defaults`,"disabled":!icon.value,"defaults":{VIcon:{...iconProps}}},slots.prepend)]),createBaseVNode(`div`,{"class":`v-alert__content`},[hasTitle&&createVNode(VAlertTitle,{"key":`title`},{default:()=>[slots.title?.()??props.title]}),slots.text?.()??props.text,slots.default?.()]),slots.append&&createBaseVNode(`div`,{"key":`append`,"class":`v-alert__append`},[slots.append()]),hasClose&&createBaseVNode(`div`,{"key":`close`,"class":`v-alert__close`},[!slots.close?createVNode(VBtn,mergeProps({"key":`close-btn`,"icon":props.closeIcon,"size":`x-small`,"variant":`text`},closeProps.value),null):createVNode(VDefaultsProvider,{"key":`close-defaults`,"defaults":{VBtn:{icon:props.closeIcon,size:`x-small`,variant:`text`}}},{default:()=>[slots.close?.({props:closeProps.value})]})])]})}}});export{VAlert as t};
@@ -0,0 +1 @@
1
+ import{D as createVNode,E as createTextVNode,Ht as watch,Zn as normalizeClass,_ as createBaseVNode,er as normalizeStyle,et as mergeProps,g as computed,o as Fragment,tt as nextTick,vn as ref,wn as toRef,xn as shallowRef}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{B as useTextColor,Bn as isFunction,Dn as wrapInArray,Jt as checkPrintable,Nt as propsFactory,On as IN_BROWSER,Ot as injectNestedDefaults,St as deepEqual,U as VDefaultsProvider,Un as isNumber,_n as matchesSelector,_t as useRender,bn as omit,cn as getActiveElement,dt as useProxiedModel,fn as isComposingIgnoreKey,h as VIcon,lt as useLocale,qt as camelizeProps,tn as ensureValidVNode,wt as genericComponent,yn as noop}from"./ripple-EFNA8EBu.js";import{a as useFilter,c as useScrolling,d as VVirtualScroll,i as makeFilterProps,l as useFocusRepair,n as makeSelectProps,o as useFocusGroups,r as useMenuActivator,s as useSelectionMenu,u as VHighlight}from"./VSelect-D3oLvCcB.js";import{l as forwardRefs}from"./VOverlay-Cp4rFk6g.js";import{a as useItems,n as VList,o as VListSubheader,s as VListItem,t as VMenu}from"./VMenu-CDcBLYWR.js";import{t as VChip}from"./VChip-VVdtjfq-.js";import{h as useInputIcon,n as makeVTextFieldProps,p as useForm,t as VTextField}from"./VTextField-C0b_0cSa.js";import{t as VAvatar}from"./VAvatar-DvRBcmqv.js";import{t as VCheckboxBtn}from"./VCheckboxBtn-DYcQU2Pn.js";import{t as VDivider}from"./VDivider-Dq25WsKu.js";import{t as VSheet}from"./VSheet-DxYEFfnM.js";var makeVAutocompleteProps=propsFactory({autoSelectFirst:{type:[Boolean,String]},clearOnSelect:Boolean,search:String,closeOnInputClick:Boolean,...makeFilterProps({filterKeys:[`title`]}),...makeSelectProps(),...omit(makeVTextFieldProps({modelValue:null,role:`combobox`}),[`validationValue`,`dirty`])},`VAutocomplete`);var VAutocomplete=genericComponent()({name:`VAutocomplete`,props:makeVAutocompleteProps(),emits:{"update:focused":focused=>true,"update:search":value=>true,"update:modelValue":value=>true,"update:menu":value=>true,"item:added":item=>true,"item:removed":item=>true},setup(props,{emit,slots}){const{t}=useLocale();const vTextFieldRef=ref();const vMenuRef=ref();const listRef=ref();const headerRef=ref();const footerRef=ref();const vVirtualScrollRef=ref();const isFocused=shallowRef(false);const isPristine=shallowRef(true);const listHasFocus=shallowRef(false);const selectionIndex=shallowRef(-1);const _searchLock=shallowRef(null);const{items,transformIn,transformOut}=useItems(props);const{textColorClasses,textColorStyles}=useTextColor(()=>vTextFieldRef.value?.color);const{InputIcon}=useInputIcon(props);const search=useProxiedModel(props,`search`,``);const model=useProxiedModel(props,`modelValue`,[],v=>transformIn(v===null?[null]:wrapInArray(v)),v=>{const transformed=transformOut(v);return props.multiple?transformed:transformed[0]??null});const counterValue=computed(()=>{return isFunction(props.counterValue)?props.counterValue(model.value):isNumber(props.counterValue)?props.counterValue:model.value.length});const form=useForm(props);const{filteredItems,getMatches}=useFilter(props,items,()=>_searchLock.value??(isPristine.value?``:search.value));const displayItems=computed(()=>{if(props.hideSelected&&_searchLock.value===null)return filteredItems.value.filter(filteredItem=>!model.value.some(s=>s.value===filteredItem.value));return filteredItems.value});const closableChips=toRef(()=>props.closableChips&&!form.isReadonly.value&&!form.isDisabled.value);const chipDefaults=injectNestedDefaults(`VChip`);const hasChips=computed(()=>!!(props.chips||slots.chip));const hasSelectionSlot=computed(()=>hasChips.value||!!slots.selection);const selectedTitle=computed(()=>{return props.multiple||hasSelectionSlot.value?``:String(model.value.at(-1)?.props.title??``)});const selectedValues=computed(()=>model.value.map(selection=>selection.props.value));const firstSelectableItem=computed(()=>displayItems.value.find(x=>x.type===`item`&&!x.props.disabled));const highlightFirst=computed(()=>{return(props.autoSelectFirst===true||props.autoSelectFirst===`exact`&&search.value===firstSelectableItem.value?.title)&&displayItems.value.length>0&&!isPristine.value&&!listHasFocus.value});const menuDisabled=computed(()=>props.hideNoData&&!displayItems.value.length||form.isReadonly.value||form.isDisabled.value);const{menu,closeOnSelect}=useSelectionMenu(props,{vMenuRef,menuDisabled,isFocused});const{menuId,ariaExpanded,ariaControls}=useMenuActivator(props,menu);const{listEvents,onActivatorKeydown,setPendingFocus,flushPendingFocus}=useScrolling(listRef,vTextFieldRef,vVirtualScrollRef,displayItems,{selectedIndex:()=>isPristine.value?getSelectedIndex():-1,headerEl:()=>headerRef.value,menuContentEl:()=>vMenuRef.value?.contentEl,noAutoScroll:()=>props.noAutoScroll});const repairOrphanedFocus=useFocusRepair(menu,()=>vMenuRef.value?.contentEl,()=>vTextFieldRef.value?.controlRef);const{onTabKeydown}=useFocusGroups({groups:[{type:`element`,contentRef:headerRef},{type:`list`,contentRef:listRef,displayItemsCount:()=>displayItems.value.length},{type:`element`,contentRef:footerRef}],onLeave:()=>{menu.value=false;vTextFieldRef.value?.focus()}});function onClear(e){if(props.openOnClear)menu.value=true;search.value=``}function onMousedownControl(){if(menuDisabled.value)return;menu.value=props.closeOnInputClick?!menu.value:true}function onMousedownMenuIcon(e){if(menuDisabled.value)return;if(isFocused.value){e.preventDefault();e.stopPropagation()}menu.value=!menu.value}function onMenuKeydown(e){if(e.key===`Tab`)onTabKeydown(e);if(listRef.value?.$el.contains(e.target)&&(checkPrintable(e)||e.key===`Backspace`))vTextFieldRef.value?.focus()}function onKeydown(e){if(isComposingIgnoreKey(e)||form.isReadonly.value)return;switch(e.key){case`Escape`:menu.value=false;break;case`ArrowDown`:case`ArrowUp`:e.preventDefault();if(onActivatorKeydown(e,menu))break;if(e.key===`ArrowDown`&&highlightFirst.value)listRef.value?.focus(`next`);break;case`Enter`:e.preventDefault();menu.value=true;selectHighlighted();break;case`Tab`:selectHighlighted();menu.value=false;break;default:onSelectionKeydown(e)}}function selectHighlighted(){const item=firstSelectableItem.value;if(!highlightFirst.value||!item)return;if(model.value.some(({value})=>value===item.value))return;select(item)}function onSelectionKeydown(e){const length=model.value.length;if([`Backspace`,`Delete`].includes(e.key)){if(!props.multiple&&hasSelectionSlot.value&&length>0&&!search.value){select(model.value[0],false);return}if(~selectionIndex.value){e.preventDefault();const originalSelectionIndex=selectionIndex.value;select(model.value[selectionIndex.value],false);selectionIndex.value=originalSelectionIndex>=length-1?length-2:originalSelectionIndex}else if(e.key===`Backspace`&&!search.value)selectionIndex.value=length-1;return}if(!props.multiple)return;if(e.key===`ArrowLeft`){if(selectionIndex.value<0&&(vTextFieldRef.value?.selectionStart??0)>0)return;const prev=selectionIndex.value>-1?selectionIndex.value-1:length-1;if(model.value[prev])selectionIndex.value=prev;else{const searchLength=search.value?.length??null;selectionIndex.value=-1;vTextFieldRef.value?.setSelectionRange(searchLength,searchLength)}}else if(e.key===`ArrowRight`){if(selectionIndex.value<0)return;const next=selectionIndex.value+1;if(model.value[next])selectionIndex.value=next;else{selectionIndex.value=-1;vTextFieldRef.value?.setSelectionRange(0,0)}}else if(~selectionIndex.value&&checkPrintable(e))selectionIndex.value=-1}function onChange(e){if(matchesSelector(vTextFieldRef.value,`:autofill`)||matchesSelector(vTextFieldRef.value,`:-webkit-autofill`)){const item=items.value.find(item=>item.title===e.target.value);if(item)select(item)}}function getSelectedIndex(){return displayItems.value.findIndex(item=>model.value.some(s=>(props.valueComparator||deepEqual)(s.value,item.value)))}function onAfterEnter(){if(props.eager)vVirtualScrollRef.value?.calculateVisibleItems();flushPendingFocus()}function onAfterLeave(){if(isFocused.value){if(vMenuRef.value?.contentEl?._clickOutside?.lastMousedownWasOutside)isFocused.value=false;else{isPristine.value=true;vTextFieldRef.value?.focus()}}_searchLock.value=null}function onFocusin(e){isFocused.value=true;setTimeout(()=>{listHasFocus.value=true})}function onFocusout(e){listHasFocus.value=false;if(!vTextFieldRef.value?.$el.contains(e.relatedTarget)){if(repairOrphanedFocus(e))return;isFocused.value=false}}function onUpdateModelValue(v){if(v==null||v===``&&!props.multiple&&!hasSelectionSlot.value){for(const item of model.value)emit(`item:removed`,item);model.value=[]}}let mousedownInsideContentAt=0;function onMousedownContent(){mousedownInsideContentAt=performance.now()}function onBlur(e){const next=e.relatedTarget;if((vMenuRef.value?.contentEl)?.contains(next)||!next&&performance.now()-mousedownInsideContentAt<10)isFocused.value=true}function select(item,set=true){if(!item||item.props.disabled)return;const comparator=props.valueComparator||deepEqual;if(props.multiple){const index=model.value.findIndex(selection=>comparator(selection.value,item.value));const add=set==null?!~index:set;if(~index){const value=add?[...model.value,item]:[...model.value];const[removed]=value.splice(index,1);if(!add)emit(`item:removed`,removed);model.value=value}else if(add){emit(`item:added`,item);model.value=[...model.value,item]}if(props.clearOnSelect)search.value=``}else{const add=set!==false;const old=model.value[0];if(add){if(old&&!comparator(old.value,item.value)){emit(`item:removed`,old);emit(`item:added`,item)}else if(!old)emit(`item:added`,item);model.value=[item]}else{if(old)emit(`item:removed`,old);model.value=[]}_searchLock.value=isPristine.value?``:search.value??``;search.value=add&&!hasSelectionSlot.value?item.title:``;nextTick(()=>{closeOnSelect();isPristine.value=true})}}watch(isFocused,(val,oldVal)=>{if(val===oldVal)return;if(val)isPristine.value=true;else{if(!props.multiple&&search.value==null){for(const item of model.value)emit(`item:removed`,item);model.value=[]}menu.value=false;if(!isPristine.value&&search.value)_searchLock.value=search.value;search.value=selectedTitle.value;isPristine.value=true;selectionIndex.value=-1}});watch(selectedTitle,val=>{if(isFocused.value)return;search.value=val},{immediate:true});watch(search,val=>{if(!isFocused.value)return;if(val)menu.value=true;isPristine.value=!val;if(menu.value)nextTick(()=>{vVirtualScrollRef.value?.scrollToIndex(0);if(listRef.value?.$el?.contains(getActiveElement()))vTextFieldRef.value?.focus()})});watch(menu,val=>{if(!val)setPendingFocus(null);if(!props.hideSelected&&val&&model.value.length&&isPristine.value){const index=getSelectedIndex();IN_BROWSER&&!props.noAutoScroll&&window.requestAnimationFrame(()=>{index>=0&&vVirtualScrollRef.value?.scrollToIndex(index,`center`)})}if(val)_searchLock.value=null});watch(items,(newVal,oldVal)=>{if(menu.value)return;if(isFocused.value&&!oldVal.length&&newVal.length)menu.value=true});useRender(()=>{const hasList=!!(!props.hideNoData||displayItems.value.length||slots[`prepend-item`]||slots[`append-item`]||slots[`no-data`]);const isDirty=model.value.length>0;const textFieldProps=VTextField.filterProps(props);const menuSlotProps={search,filteredItems:filteredItems.value};return createVNode(VTextField,mergeProps({"ref":vTextFieldRef},textFieldProps,{"form":``,"modelValue":search.value,"onUpdate:modelValue":[$event=>search.value=$event,onUpdateModelValue],"focused":isFocused.value,"onUpdate:focused":$event=>isFocused.value=$event,"validationValue":model.externalValue,"counterValue":counterValue.value,"dirty":isDirty,"onChange":onChange,"class":[`v-autocomplete`,`v-autocomplete--${props.multiple?`multiple`:`single`}`,{"v-autocomplete--active-menu":menu.value,"v-autocomplete--chips":!!props.chips,"v-autocomplete--selection-slot":!!hasSelectionSlot.value,"v-autocomplete--selecting-index":selectionIndex.value>-1},props.class],"style":props.style,"readonly":form.isReadonly.value,"placeholder":isDirty?void 0:props.placeholder,"onClick:clear":onClear,"onMousedown:control":onMousedownControl,"onKeydown":onKeydown,"onBlur":onBlur,"aria-expanded":ariaExpanded.value,"aria-controls":ariaControls.value}),{...slots,default:({id})=>createBaseVNode(Fragment,null,[selectedValues.value.map((value,i)=>createBaseVNode(`input`,{"key":i,"type":`hidden`,"name":props.name,"value":value,"form":props.form},null)),createVNode(VMenu,mergeProps({"id":menuId.value,"ref":vMenuRef,"modelValue":menu.value,"onUpdate:modelValue":$event=>menu.value=$event,"activator":`parent`,"captureFocus":false,"openOnArrow":false,"disabled":menuDisabled.value,"_disableKeys":true,"eager":props.eager,"maxHeight":310,"openOnClick":false,"closeOnContentClick":false,"onAfterEnter":onAfterEnter,"onAfterLeave":onAfterLeave},props.menuProps,{"contentClass":[`v-autocomplete__content`,props.menuProps?.contentClass]}),{default:()=>[createVNode(VSheet,{"elevation":props.menuElevation,"onFocusin":onFocusin,"onKeydown":onMenuKeydown,"onMousedown":onMousedownContent},{default:()=>[slots[`menu-header`]&&createBaseVNode(`header`,{"ref":headerRef},[slots[`menu-header`](menuSlotProps)]),hasList&&createVNode(VList,mergeProps({"key":`autocomplete-list`,"ref":listRef,"class":`v-list--navigable`,"filterable":true,"selected":selectedValues.value,"selectStrategy":props.multiple?`independent`:`single-independent`,"onMousedown":e=>e.preventDefault(),"onFocusout":onFocusout,"tabindex":`-1`,"selectable":!!displayItems.value.length,"aria-live":`polite`,"aria-labelledby":`${id.value}-label`,"aria-multiselectable":props.multiple,"color":props.itemColor??props.color},listEvents,props.listProps),{default:()=>[slots[`prepend-item`]?.(),!displayItems.value.length&&!props.hideNoData&&(slots[`no-data`]?.()??createVNode(VListItem,{"key":`no-data`,"title":t(props.noDataText)},null)),createVNode(VVirtualScroll,{"ref":vVirtualScrollRef,"renderless":true,"items":displayItems.value,"itemKey":`value`},{default:({item,index,itemRef})=>{const camelizedProps=camelizeProps(item.props);const itemProps=mergeProps(item.props,{ref:itemRef,key:item.value,active:highlightFirst.value&&item===firstSelectableItem.value?true:void 0,onClick:()=>select(item,null),"aria-posinset":index+1,"aria-setsize":displayItems.value.length});if(item.type===`divider`)return slots.divider?.({props:item.raw,index})??createVNode(VDivider,mergeProps(item.props,{"ref":itemRef,"key":`divider-${index}`}),null);if(item.type===`subheader`)return slots.subheader?.({props:item.raw,index})??createVNode(VListSubheader,mergeProps(item.props,{"ref":itemRef,"key":`subheader-${index}`}),null);return slots.item?.({item:item.raw,internalItem:item,index,props:itemProps})??createVNode(VListItem,mergeProps(itemProps,{"role":`option`}),{prepend:({isSelected})=>createBaseVNode(Fragment,null,[props.multiple&&!props.hideSelected?createVNode(VCheckboxBtn,{"key":item.value,"modelValue":isSelected,"ripple":false,"tabindex":`-1`,"aria-hidden":true,"onClick":event=>event.preventDefault()},null):void 0,camelizedProps.prependAvatar&&createVNode(VAvatar,{"image":camelizedProps.prependAvatar},null),camelizedProps.prependIcon&&createVNode(VIcon,{"icon":camelizedProps.prependIcon},null)]),title:()=>{return isPristine.value?item.title:createVNode(VHighlight,{"text":item.title,"matches":getMatches(item)?.title,"markClass":`v-autocomplete__mask`,"matchAll":true,"ignoreCase":true},null)}})}}),slots[`append-item`]?.()]}),slots[`menu-footer`]&&createBaseVNode(`footer`,{"ref":footerRef},[slots[`menu-footer`](menuSlotProps)])]})]}),model.value.map((item,index)=>{function onChipClose(e){e.stopPropagation();e.preventDefault();select(item,false)}const slotProps=mergeProps(VChip.filterProps(item.props),{"onClick:close":onChipClose,onKeydown(e){if(e.key!==`Enter`&&e.key!==` `)return;e.preventDefault();e.stopPropagation();onChipClose(e)},onMousedown(e){e.preventDefault();e.stopPropagation()},modelValue:true,"onUpdate:modelValue":void 0});const hasSlot=hasChips.value?!!slots.chip:!!slots.selection;const slotContent=hasSlot?ensureValidVNode(hasChips.value?slots.chip({item:item.raw,internalItem:item,index,props:slotProps}):slots.selection({item:item.raw,internalItem:item,index})):void 0;if(hasSlot&&!slotContent)return void 0;return createBaseVNode(`div`,{"key":item.value,"class":normalizeClass([`v-autocomplete__selection`,index===selectionIndex.value&&[`v-autocomplete__selection--selected`,textColorClasses.value]]),"style":normalizeStyle(index===selectionIndex.value?textColorStyles.value:{})},[hasChips.value?!slots.chip?createVNode(VChip,mergeProps({"key":`chip`,"closable":closableChips.value,"size":chipDefaults.value?.size??`small`,"text":item.title,"disabled":item.props.disabled},slotProps),null):createVNode(VDefaultsProvider,{"key":`chip-defaults`,"defaults":{VChip:{closable:closableChips.value,size:chipDefaults.value?.size??`small`,text:item.title}}},{default:()=>[slotContent]}):slotContent??createBaseVNode(`span`,{"class":`v-autocomplete__selection-text`},[item.title,props.multiple&&index<model.value.length-1&&createBaseVNode(`span`,{"class":`v-autocomplete__selection-comma`},[createTextVNode(`,`)])])])})]),"append-inner":(...args)=>createBaseVNode(Fragment,null,[slots[`append-inner`]?.(...args),props.menuIcon?createVNode(VIcon,{"class":`v-autocomplete__menu-icon`,"color":vTextFieldRef.value?.fieldIconColor,"icon":props.menuIcon,"onMousedown":onMousedownMenuIcon,"onClick":noop,"aria-hidden":true,"tabindex":`-1`},null):void 0,props.appendInnerIcon&&createVNode(InputIcon,{"key":`append-icon`,"name":`appendInner`,"color":args[0].iconColor.value},null)])})});return forwardRefs({isFocused,isPristine,menu,search,filteredItems,select},vTextFieldRef)}});export{VAutocomplete as t};
@@ -0,0 +1 @@
1
+ import{D as createVNode,Ht as watch,Yt as withDirectives,Zn as normalizeClass,_ as createBaseVNode,er as normalizeStyle,et as mergeProps,g as computed,it as onBeforeUnmount,o as Fragment,rt as onBeforeMount,tt as nextTick,vn as ref,wn as toRef,xn as shallowRef}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{$ as makeThemeProps,An as SUPPORTS_INTERSECTION,At as getCurrentInstance,B as useTextColor,C as makeSizeProps,Cn as pickWithRest,D as makeLocationProps,E as useDensity,F as makeTransitionProps,Gn as isString,H as useDimension,I as makeRoundedProps,L as useRounded,M as useBorder,Mt as makeComponentProps,N as Intersect,Nt as propsFactory,O as useLocation,P as MaybeTransition,R as useBackgroundColor,S as useVariant,T as makeDensityProps,U as VDefaultsProvider,V as makeDimensionProps,Wn as isObject,Y as makeTagProps,Zt as convertToUnit,_t as useRender,ar as vShow,b as genOverlays,et as provideTheme,h as VIcon,in as filterInputAttrs,j as makeBorderProps,lt as useLocale,mt as IconValue,tt as useTheme,w as useSize,wt as genericComponent,x as makeVariantProps}from"./ripple-EFNA8EBu.js";function useAspectStyles(props){return{aspectStyles:computed(()=>{const ratio=Number(props.aspectRatio);return ratio?{paddingBottom:String(1/ratio*100)+`%`}:void 0})}}var makeVResponsiveProps=propsFactory({aspectRatio:[String,Number],contentClass:null,inline:Boolean,...makeComponentProps(),...makeDimensionProps()},`VResponsive`);var VResponsive=genericComponent()({name:`VResponsive`,props:makeVResponsiveProps(),setup(props,{slots}){const{aspectStyles}=useAspectStyles(props);const{dimensionStyles}=useDimension(props);useRender(()=>createBaseVNode(`div`,{"class":normalizeClass([`v-responsive`,{"v-responsive--inline":props.inline},props.class]),"style":normalizeStyle([dimensionStyles.value,props.style])},[createBaseVNode(`div`,{"class":`v-responsive__sizer`,"style":normalizeStyle(aspectStyles.value)},null),slots.additional?.(),slots.default&&createBaseVNode(`div`,{"class":normalizeClass([`v-responsive__content`,props.contentClass])},[slots.default()])]));return{}}});var makeVImgProps=propsFactory({absolute:Boolean,alt:String,cover:Boolean,color:String,draggable:{type:[Boolean,String],default:void 0},eager:Boolean,gradient:String,imageClass:null,lazySrc:String,options:{type:Object,default:()=>({root:void 0,rootMargin:void 0,threshold:void 0})},sizes:String,src:{type:[String,Object],default:``},crossorigin:String,referrerpolicy:String,srcset:String,position:String,...makeVResponsiveProps(),...makeComponentProps(),...makeRoundedProps(),...makeTransitionProps()},`VImg`);var VImg=genericComponent()({name:`VImg`,directives:{vIntersect:Intersect},inheritAttrs:false,props:makeVImgProps(),emits:{loadstart:value=>true,load:value=>true,error:value=>true},setup(props,{attrs,emit,slots}){const{backgroundColorClasses,backgroundColorStyles}=useBackgroundColor(()=>props.color);const{roundedClasses,roundedStyles}=useRounded(props);const vm=getCurrentInstance(`VImg`);const currentSrc=shallowRef(``);const image=ref();const state=shallowRef(props.eager?`loading`:`idle`);const naturalWidth=shallowRef();const naturalHeight=shallowRef();let deferredLoadEmit=false;const normalisedSrc=computed(()=>{return isObject(props.src)?{src:props.src.src,srcset:props.srcset||props.src.srcset,lazySrc:props.lazySrc||props.src.lazySrc,aspect:Number(props.aspectRatio||props.src.aspect||0)}:{src:props.src,srcset:props.srcset,lazySrc:props.lazySrc,aspect:Number(props.aspectRatio||0)}});const aspectRatio=computed(()=>{return normalisedSrc.value.aspect||naturalWidth.value/naturalHeight.value||0});watch(()=>props.src,()=>{init(state.value!==`idle`)});watch(aspectRatio,(val,oldVal)=>{if(!val&&oldVal&&image.value)pollForSize(image.value)});watch(image,img=>{if(!img||state.value===`idle`)return;if(!aspectRatio.value)pollForSize(img);getSrc(img);if(deferredLoadEmit){deferredLoadEmit=false;emit(`load`,img.currentSrc||normalisedSrc.value.src)}});onBeforeMount(()=>init());function init(isIntersecting){if(props.eager&&isIntersecting)return;if(SUPPORTS_INTERSECTION&&!isIntersecting&&!props.eager)return;state.value=`loading`;if(normalisedSrc.value.lazySrc){const lazyImg=new Image;lazyImg.src=normalisedSrc.value.lazySrc;pollForSize(lazyImg,null)}if(!normalisedSrc.value.src)return;nextTick(()=>{emit(`loadstart`,image.value?.currentSrc||normalisedSrc.value.src);setTimeout(()=>{if(vm.isUnmounted)return;if(image.value?.complete){if(!image.value.naturalWidth)onError();if(state.value===`error`)return;if(!aspectRatio.value)pollForSize(image.value,null);if(state.value===`loading`)onLoad()}else if(image.value){if(!aspectRatio.value)pollForSize(image.value);getSrc(image.value)}})})}function onLoad(){if(vm.isUnmounted)return;if(image.value){getSrc(image.value);pollForSize(image.value);emit(`load`,image.value.currentSrc||normalisedSrc.value.src)}else deferredLoadEmit=true;state.value=`loaded`}function onError(){if(vm.isUnmounted)return;state.value=`error`;emit(`error`,image.value?.currentSrc||normalisedSrc.value.src)}function getSrc(img){currentSrc.value=img.currentSrc||img.src}let timer=-1;onBeforeUnmount(()=>{clearTimeout(timer)});function pollForSize(img,timeout=100){const poll=()=>{clearTimeout(timer);if(vm.isUnmounted)return;const{naturalHeight:imgHeight,naturalWidth:imgWidth}=img;if(imgHeight||imgWidth){naturalWidth.value=imgWidth;naturalHeight.value=imgHeight}else if(!img.complete&&state.value===`loading`&&timeout!=null)timer=window.setTimeout(poll,timeout);else if(img.currentSrc.endsWith(`.svg`)||img.currentSrc.startsWith(`data:image/svg+xml`)){naturalWidth.value=1;naturalHeight.value=1}};poll()}const containClasses=toRef(()=>({"v-img__img--cover":props.cover,"v-img__img--contain":!props.cover}));const __image=()=>{if(!normalisedSrc.value.src||state.value===`idle`)return null;const img=createBaseVNode(`img`,{"class":normalizeClass([`v-img__img`,containClasses.value,props.imageClass]),"style":{objectPosition:props.position},"crossorigin":props.crossorigin,"src":normalisedSrc.value.src,"srcset":normalisedSrc.value.srcset,"alt":props.alt,"referrerpolicy":props.referrerpolicy,"draggable":props.draggable,"sizes":props.sizes,"ref":image,"onLoad":onLoad,"onError":onError},null);const sources=slots.sources?.();return createVNode(MaybeTransition,{"transition":props.transition,"appear":true},{default:()=>[withDirectives(sources?createBaseVNode(`picture`,{"class":`v-img__picture`},[sources,img]):img,[[vShow,state.value===`loaded`]])]})};const __preloadImage=()=>createVNode(MaybeTransition,{"transition":props.transition},{default:()=>[normalisedSrc.value.lazySrc&&state.value!==`loaded`&&createBaseVNode(`img`,{"class":normalizeClass([`v-img__img`,`v-img__img--preload`,containClasses.value]),"style":{objectPosition:props.position},"crossorigin":props.crossorigin,"src":normalisedSrc.value.lazySrc,"alt":props.alt,"referrerpolicy":props.referrerpolicy,"draggable":props.draggable},null)]});const __placeholder=()=>{if(!slots.placeholder)return null;return createVNode(MaybeTransition,{"transition":props.transition,"appear":true},{default:()=>[(state.value===`loading`||state.value===`error`&&!slots.error)&&createBaseVNode(`div`,{"class":`v-img__placeholder`},[slots.placeholder()])]})};const __error=()=>{if(!slots.error)return null;return createVNode(MaybeTransition,{"transition":props.transition,"appear":true},{default:()=>[state.value===`error`&&createBaseVNode(`div`,{"class":`v-img__error`},[slots.error()])]})};const __gradient=()=>{if(!props.gradient)return null;return createBaseVNode(`div`,{"class":`v-img__gradient`,"style":{backgroundImage:`linear-gradient(${props.gradient})`}},null)};const isBooted=shallowRef(false);{const stop=watch(aspectRatio,val=>{if(val){requestAnimationFrame(()=>{requestAnimationFrame(()=>{isBooted.value=true})});stop()}})}useRender(()=>{const responsiveProps=VResponsive.filterProps(props);const[rootAttrs,imageAttrs]=filterInputAttrs(attrs);return withDirectives(createVNode(VResponsive,mergeProps({"class":[`v-img`,{"v-img--absolute":props.absolute,"v-img--booting":!isBooted.value,"v-img--fit-content":props.width===`fit-content`},backgroundColorClasses.value,roundedClasses.value,props.class],"style":[{width:convertToUnit(props.width===`auto`?naturalWidth.value:props.width)},backgroundColorStyles.value,roundedStyles.value,props.style]},responsiveProps,rootAttrs,{"aspectRatio":aspectRatio.value,"aria-label":props.alt||void 0,"role":props.alt?`img`:void 0}),{additional:()=>createBaseVNode(Fragment,null,[createVNode(__image,imageAttrs,null),createVNode(__preloadImage,null,null),createVNode(__gradient,null,null),createVNode(__placeholder,null,null),createVNode(__error,null,null)]),default:slots.default}),[[Intersect,{handler:init,options:props.options},null,{once:true}]])});return{currentSrc,image,state,naturalWidth,naturalHeight}}});var makeVBadgeProps=propsFactory({bordered:Boolean,color:String,content:[Number,String],dot:Boolean,dotSize:[Number,String],floating:Boolean,icon:IconValue,inline:Boolean,label:{type:String,default:`$vuetify.badge`},max:[Number,String],modelValue:{type:Boolean,default:true},offsetX:[Number,String],offsetY:[Number,String],textColor:String,...makeComponentProps(),...makeLocationProps({location:`top end`}),...makeRoundedProps(),...makeTagProps(),...makeThemeProps(),...makeTransitionProps({transition:`scale-rotate-transition`}),...makeDimensionProps()},`VBadge`);var VBadge=genericComponent()({name:`VBadge`,inheritAttrs:false,props:makeVBadgeProps(),setup(props,ctx){const{backgroundColorClasses,backgroundColorStyles}=useBackgroundColor(()=>props.color);const{roundedClasses,roundedStyles}=useRounded(props);const{t}=useLocale();const{textColorClasses,textColorStyles}=useTextColor(()=>props.textColor);const{themeClasses}=useTheme();const{locationStyles}=useLocation(props,true,side=>{return(props.floating?props.dot?2:4:props.dot?Number(props.dotSize??8):12)+([`top`,`bottom`].includes(side)?Number(props.offsetY??0):[`left`,`right`].includes(side)?Number(props.offsetX??0):0)});const{dimensionStyles}=useDimension(props);useRender(()=>{const value=Number(props.content);const content=!props.max||isNaN(value)?props.content:value<=Number(props.max)?value:`${props.max}+`;const[badgeAttrs,attrs]=pickWithRest(ctx.attrs,[`aria-atomic`,`aria-label`,`aria-live`,`role`,`title`]);return createVNode(props.tag,mergeProps({"class":[`v-badge`,{"v-badge--bordered":props.bordered,"v-badge--dot":props.dot,"v-badge--floating":props.floating,"v-badge--inline":props.inline},props.class]},attrs,{"style":props.style}),{default:()=>[createBaseVNode(`div`,{"class":`v-badge__wrapper`},[ctx.slots.default?.(),createVNode(MaybeTransition,{"transition":props.transition},{default:()=>[withDirectives(createBaseVNode(`span`,mergeProps({"class":[`v-badge__badge`,themeClasses.value,backgroundColorClasses.value,roundedClasses.value,textColorClasses.value],"style":[backgroundColorStyles.value,textColorStyles.value,dimensionStyles.value,props.inline?{}:locationStyles.value,props.dot&&props.dotSize?{width:convertToUnit(props.dotSize),height:convertToUnit(props.dotSize)}:{},roundedStyles.value],"aria-atomic":`true`,"aria-label":t(props.label,value),"aria-live":`polite`,"role":`status`},badgeAttrs),[props.dot?void 0:ctx.slots.badge?ctx.slots.badge?.():props.icon?createVNode(VIcon,{"icon":props.icon},null):content]),[[vShow,props.modelValue]])]})])]})});return{}}});var makeVAvatarProps=propsFactory({badge:{type:[Boolean,Object],default:false},start:Boolean,end:Boolean,icon:IconValue,image:String,text:String,...makeBorderProps(),...makeComponentProps(),...makeDensityProps(),...makeRoundedProps(),...makeSizeProps(),...makeTagProps(),...makeThemeProps(),...makeVariantProps({variant:`flat`})},`VAvatar`);var VAvatar=genericComponent()({name:`VAvatar`,props:makeVAvatarProps(),setup(props,{slots}){const{themeClasses}=provideTheme(props);const{borderClasses}=useBorder(props);const{colorClasses,colorStyles,variantClasses}=useVariant(props);const{densityClasses}=useDensity(props);const{roundedClasses,roundedStyles}=useRounded(props);const{sizeClasses,sizeStyles}=useSize(props);const badgeDotSize=computed(()=>{switch(props.size){case`x-small`:return 8;case`small`:return 10;case`large`:return 14;case`x-large`:return 16;default:return 12}});const badgeOffset=computed(()=>{const{floating}=isObject(props.badge)?props.badge:{};return(floating?badgeDotSize.value/2:0)-1.5});const badgeProps=computed(()=>{return{bordered:true,dot:!slots.badge,dotSize:badgeDotSize.value,offsetX:badgeOffset.value,offsetY:badgeOffset.value,color:isString(props.badge)?props.badge:`primary`,...isObject(props.badge)?props.badge:{}}});useRender(()=>{const avatar=createVNode(props.tag,{"class":normalizeClass([`v-avatar`,{"v-avatar--start":props.start,"v-avatar--end":props.end},themeClasses.value,borderClasses.value,colorClasses.value,densityClasses.value,roundedClasses.value,sizeClasses.value,variantClasses.value,props.class]),"style":normalizeStyle([colorStyles.value,sizeStyles.value,roundedStyles.value,props.style])},{default:()=>[!slots.default?props.image?createVNode(VImg,{"key":`image`,"src":props.image,"alt":``,"cover":true},null):props.icon?createVNode(VIcon,{"key":`icon`,"icon":props.icon},null):props.text:createVNode(VDefaultsProvider,{"key":`content-defaults`,"defaults":{VImg:{cover:true,src:props.image},VIcon:{icon:props.icon}}},{default:()=>[slots.default()]}),genOverlays(false,`v-avatar`)]});return props.badge?createVNode(VBadge,badgeProps.value,{default:()=>avatar,badge:slots.badge}):avatar});return{}}});export{VBadge as n,VImg as r,VAvatar as t};
@@ -0,0 +1 @@
1
+ import{D as createVNode,Ht as watch,Ut as watchEffect,Yt as withDirectives,Zn as normalizeClass,_ as createBaseVNode,er as normalizeStyle,et as mergeProps,g as computed,tr as toDisplayString,tt as nextTick,vn as ref,wn as toRef}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{$ as makeThemeProps,A as useElevation,B as useTextColor,C as makeSizeProps,D as makeLocationProps,E as useDensity,H as useDimension,I as makeRoundedProps,L as useRounded,M as useBorder,Mt as makeComponentProps,Nt as propsFactory,O as useLocation,S as useVariant,T as makeDensityProps,U as VDefaultsProvider,V as makeDimensionProps,Wn as isObject,X as useResizeObserver,Xt as clamp,Y as makeTagProps,Zt as convertToUnit,_ as makeGroupProps,_t as useRender,b as genOverlays,et as provideTheme,f as makeRevealProps,g as makeGroupItemProps,h as VIcon,i as useLink,j as makeBorderProps,k as makeElevationProps,kn as PREFERS_REDUCED_MOTION,kt as provideDefaults,l as makeLoaderProps,m as useIntersectionObserver,mt as IconValue,n as makeRouterProps,o as makePositionProps,p as useReveal,s as usePosition,t as Ripple,u as useLoader,v as useGroup,w as useSize,wt as genericComponent,x as makeVariantProps,y as useGroupItem,zn as isBoolean}from"./ripple-EFNA8EBu.js";var makeVBtnGroupProps=propsFactory({baseColor:String,divided:Boolean,direction:{type:String,default:`horizontal`},...makeBorderProps(),...makeComponentProps(),...makeDensityProps(),...makeElevationProps(),...makeRoundedProps(),...makeSizeProps({size:void 0}),...makeTagProps(),...makeThemeProps(),...makeVariantProps()},`VBtnGroup`);var VBtnGroup=genericComponent()({name:`VBtnGroup`,props:makeVBtnGroupProps(),setup(props,{slots}){const{themeClasses}=provideTheme(props);const{densityClasses}=useDensity(props);const{borderClasses}=useBorder(props);const{elevationClasses}=useElevation(props);const{roundedClasses,roundedStyles}=useRounded(props);provideDefaults({VBtn:{height:toRef(()=>props.direction===`horizontal`&&props.size==null?`auto`:null),baseColor:toRef(()=>props.baseColor),color:toRef(()=>props.color),density:toRef(()=>props.density),flat:true,size:toRef(()=>props.size),variant:toRef(()=>props.variant)}});useRender(()=>{return createVNode(props.tag,{"class":normalizeClass([`v-btn-group`,`v-btn-group--${props.direction}`,{"v-btn-group--divided":props.divided,"v-btn-group--has-size":props.size!=null},themeClasses.value,borderClasses.value,densityClasses.value,elevationClasses.value,roundedClasses.value,props.class]),"style":normalizeStyle([roundedStyles.value,props.style])},slots)})}});var VBtnToggleSymbol=Symbol.for(`vuetify:v-btn-toggle`);var makeVBtnToggleProps=propsFactory({...makeVBtnGroupProps(),...makeGroupProps()},`VBtnToggle`);var VBtnToggle=genericComponent()({name:`VBtnToggle`,props:makeVBtnToggleProps(),emits:{"update:modelValue":value=>true},setup(props,{slots}){const{isSelected,next,prev,select,selected}=useGroup(props,VBtnToggleSymbol);useRender(()=>{const btnGroupProps=VBtnGroup.filterProps(props);return createVNode(VBtnGroup,mergeProps({"class":[`v-btn-toggle`,{"v-btn-toggle--has-color":!!props.color},props.class]},btnGroupProps,{"style":props.style}),{default:()=>[slots.default?.({isSelected,next,prev,select,selected})]})});return{next,prev,select}}});var makeVProgressCircularProps=propsFactory({bgColor:String,color:String,indeterminate:[Boolean,String],rounded:Boolean,modelValue:{type:[Number,String],default:0},rotate:{type:[Number,String],default:0},transition:{type:[Boolean,Object],default:void 0},width:{type:[Number,String],default:4},...makeComponentProps(),...makeRevealProps(),...makeSizeProps(),...makeTagProps({tag:`div`}),...makeThemeProps()},`VProgressCircular`);var VProgressCircular=genericComponent()({name:`VProgressCircular`,props:makeVProgressCircularProps(),setup(props,{slots}){const MAGIC_RADIUS_CONSTANT=20;const CIRCUMFERENCE=2*Math.PI*MAGIC_RADIUS_CONSTANT;const root=ref();const{themeClasses}=provideTheme(props);const{sizeClasses,sizeStyles}=useSize(props);const{textColorClasses,textColorStyles}=useTextColor(()=>props.color);const{textColorClasses:underlayColorClasses,textColorStyles:underlayColorStyles}=useTextColor(()=>props.bgColor);const{intersectionRef,isIntersecting}=useIntersectionObserver();const{resizeRef,contentRect}=useResizeObserver();const{state:revealState,duration:revealDuration}=useReveal(props);const normalizedValue=toRef(()=>revealState.value===`initial`?0:clamp(parseFloat(props.modelValue),0,100));const width=toRef(()=>Number(props.width));const transitionDuration=toRef(()=>props.transition===false?void 0:convertToUnit(isObject(props.transition)?props.transition.duration:void 0,`ms`));const size=toRef(()=>{return sizeStyles.value?Number(props.size):contentRect.value?contentRect.value.width:Math.max(width.value,32)});const diameter=toRef(()=>MAGIC_RADIUS_CONSTANT/(1-width.value/size.value)*2);const strokeWidth=toRef(()=>width.value/size.value*diameter.value);const strokeDashOffset=toRef(()=>{const baseLength=(100-normalizedValue.value)/100*CIRCUMFERENCE;return props.rounded&&normalizedValue.value>0&&normalizedValue.value<100?convertToUnit(Math.min(CIRCUMFERENCE-.01,baseLength+strokeWidth.value)):convertToUnit(baseLength)});const startAngle=computed(()=>{const baseAngle=Number(props.rotate);return props.rounded?baseAngle+strokeWidth.value/2/CIRCUMFERENCE*360:baseAngle});watchEffect(()=>{intersectionRef.value=root.value;resizeRef.value=root.value});useRender(()=>createVNode(props.tag,{"ref":root,"class":normalizeClass([`v-progress-circular`,{"v-progress-circular--indeterminate":!!props.indeterminate,"v-progress-circular--visible":isIntersecting.value,"v-progress-circular--disable-shrink":props.indeterminate&&(props.indeterminate===`disable-shrink`||PREFERS_REDUCED_MOTION()),"v-progress-circular--revealing":[`initial`,`pending`].includes(revealState.value),"v-progress-circular--no-transition":props.transition===false},themeClasses.value,sizeClasses.value,textColorClasses.value,props.class]),"style":normalizeStyle([sizeStyles.value,textColorStyles.value,{"--v-progress-reveal-duration":`${revealDuration.value}ms`,"--v-progress-circular-transition-duration":transitionDuration.value},props.style]),"role":`progressbar`,"aria-valuemin":`0`,"aria-valuemax":`100`,"aria-valuenow":props.indeterminate?void 0:normalizedValue.value},{default:()=>[createBaseVNode(`svg`,{"style":{transform:`rotate(calc(-90deg + ${startAngle.value}deg))`},"xmlns":`http://www.w3.org/2000/svg`,"viewBox":`0 0 ${diameter.value} ${diameter.value}`},[createBaseVNode(`circle`,{"class":normalizeClass([`v-progress-circular__underlay`,underlayColorClasses.value]),"style":normalizeStyle(underlayColorStyles.value),"fill":`transparent`,"cx":`50%`,"cy":`50%`,"r":MAGIC_RADIUS_CONSTANT,"stroke-width":strokeWidth.value,"stroke-dasharray":CIRCUMFERENCE,"stroke-dashoffset":0},null),createBaseVNode(`circle`,{"class":`v-progress-circular__overlay`,"fill":`transparent`,"cx":`50%`,"cy":`50%`,"r":MAGIC_RADIUS_CONSTANT,"stroke-width":strokeWidth.value,"stroke-dasharray":CIRCUMFERENCE,"stroke-dashoffset":strokeDashOffset.value,"stroke-linecap":props.rounded?`round`:void 0},null)]),slots.default&&createBaseVNode(`div`,{"class":`v-progress-circular__content`},[slots.default({value:normalizedValue.value})])]}));return{}}});function useSelectLink(link,select){watch(()=>link.isActive?.value,isActive=>{if(link.isLink.value&&isBoolean(isActive)&&select)nextTick(()=>{select(isActive)})},{immediate:true})}var makeVBtnProps=propsFactory({active:{type:Boolean,default:void 0},activeColor:String,baseColor:String,symbol:{type:null,default:VBtnToggleSymbol},flat:Boolean,icon:[Boolean,String,Function,Object],prependIcon:IconValue,appendIcon:IconValue,block:Boolean,readonly:Boolean,slim:Boolean,stacked:Boolean,spaced:String,ripple:{type:[Boolean,Object],default:true},text:{type:[String,Number,Boolean],default:void 0},...makeBorderProps(),...makeComponentProps(),...makeDensityProps(),...makeDimensionProps(),...makeElevationProps(),...makeGroupItemProps(),...makeLoaderProps(),...makeLocationProps(),...makePositionProps(),...makeRoundedProps(),...makeRouterProps(),...makeSizeProps(),...makeTagProps({tag:`button`}),...makeThemeProps(),...makeVariantProps({variant:`elevated`})},`VBtn`);var VBtn=genericComponent()({name:`VBtn`,props:makeVBtnProps(),emits:{"group:selected":val=>true},setup(props,{attrs,slots}){const{themeClasses}=provideTheme(props);const{borderClasses}=useBorder(props);const{densityClasses}=useDensity(props);const{dimensionStyles}=useDimension(props);const{elevationClasses}=useElevation(props);const{loaderClasses}=useLoader(props);const{locationStyles}=useLocation(props);const{positionClasses}=usePosition(props);const{roundedClasses,roundedStyles}=useRounded(props);const{sizeClasses,sizeStyles}=useSize(props);const group=useGroupItem(props,props.symbol,false);const link=useLink(props,attrs);const isActive=computed(()=>{if(props.active!==void 0)return props.active;if(link.isRouterLink.value)return link.isActive?.value;return group?.isSelected.value});const color=toRef(()=>isActive.value?props.activeColor??props.color:props.color);const variantProps=computed(()=>{return{color:group?.isSelected.value&&(!link.isLink.value||link.isActive?.value)||!group||link.isActive?.value?color.value??props.baseColor:props.baseColor,variant:props.variant}});const{colorClasses,colorStyles,variantClasses}=useVariant(variantProps);const isDisabled=computed(()=>group?.disabled.value||props.disabled);const isElevated=toRef(()=>{return props.variant===`elevated`&&!(props.disabled||props.flat||props.border)});const valueAttr=computed(()=>{if(props.value===void 0||typeof props.value===`symbol`)return void 0;return Object(props.value)===props.value?JSON.stringify(props.value,null,0):props.value});function onClick(e){if(isDisabled.value||link.isLink.value&&(e.metaKey||e.ctrlKey||e.shiftKey||e.button!==0||attrs.target===`_blank`))return;if(link.isRouterLink.value)link.navigate.value?.(e);else group?.toggle()}useSelectLink(link,group?.select);useRender(()=>{const Tag=link.isLink.value?`a`:props.tag;const hasPrepend=!!(props.prependIcon||slots.prepend);const hasAppend=!!(props.appendIcon||slots.append);const hasIcon=!!(props.icon&&props.icon!==true);return withDirectives(createVNode(Tag,mergeProps(link.linkProps,{"type":Tag===`a`?void 0:`button`,"class":[`v-btn`,group?.selectedClass.value,{"v-btn--active":isActive.value,"v-btn--block":props.block,"v-btn--disabled":isDisabled.value,"v-btn--elevated":isElevated.value,"v-btn--flat":props.flat,"v-btn--icon":!!props.icon,"v-btn--loading":props.loading,"v-btn--readonly":props.readonly,"v-btn--slim":props.slim,"v-btn--stacked":props.stacked},props.spaced?[`v-btn--spaced`,`v-btn--spaced-${props.spaced}`]:[],themeClasses.value,borderClasses.value,colorClasses.value,densityClasses.value,elevationClasses.value,loaderClasses.value,positionClasses.value,roundedClasses.value,sizeClasses.value,variantClasses.value,props.class],"style":[colorStyles.value,dimensionStyles.value,locationStyles.value,sizeStyles.value,roundedStyles.value,props.style],"aria-busy":props.loading?true:void 0,"disabled":isDisabled.value&&Tag!==`a`||void 0,"tabindex":props.loading||props.readonly?-1:void 0,"onClick":onClick,"value":Tag!==`a`?valueAttr.value:void 0}),{default:()=>[genOverlays(true,`v-btn`),!props.icon&&hasPrepend&&createBaseVNode(`span`,{"key":`prepend`,"class":`v-btn__prepend`},[!slots.prepend?createVNode(VIcon,{"key":`prepend-icon`,"icon":props.prependIcon},null):createVNode(VDefaultsProvider,{"key":`prepend-defaults`,"disabled":!props.prependIcon,"defaults":{VIcon:{icon:props.prependIcon}}},slots.prepend)]),createBaseVNode(`span`,{"class":`v-btn__content`,"data-no-activator":``},[!slots.default&&hasIcon?createVNode(VIcon,{"key":`content-icon`,"icon":props.icon},null):createVNode(VDefaultsProvider,{"key":`content-defaults`,"disabled":!hasIcon,"defaults":{VIcon:{icon:props.icon}}},{default:()=>[slots.default?.()??toDisplayString(props.text)]})]),!props.icon&&hasAppend&&createBaseVNode(`span`,{"key":`append`,"class":`v-btn__append`},[!slots.append?createVNode(VIcon,{"key":`append-icon`,"icon":props.appendIcon},null):createVNode(VDefaultsProvider,{"key":`append-defaults`,"disabled":!props.appendIcon,"defaults":{VIcon:{icon:props.appendIcon}}},slots.append)]),!!props.loading&&createBaseVNode(`span`,{"key":`loader`,"class":`v-btn__loader`},[slots.loader?.()??createVNode(VProgressCircular,{"color":isBoolean(props.loading)?void 0:props.loading,"indeterminate":true,"width":`2`},null)])]}),[[Ripple,!isDisabled.value&&props.ripple,``,{center:!!props.icon}]])});return{group}}});export{VBtnToggleSymbol as a,VBtnToggle as i,makeVBtnProps as n,VProgressCircular as r,VBtn as t};
@@ -0,0 +1 @@
1
+ import{D as createVNode,Ht as watch,Yt as withDirectives,Zn as normalizeClass,_ as createBaseVNode,er as normalizeStyle,et as mergeProps,o as Fragment,tr as toDisplayString,xn as shallowRef}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{$ as makeThemeProps,A as useElevation,D as makeLocationProps,E as useDensity,Gn as isString,H as useDimension,I as makeRoundedProps,L as useRounded,M as useBorder,Mt as makeComponentProps,Nt as propsFactory,O as useLocation,S as useVariant,T as makeDensityProps,U as VDefaultsProvider,V as makeDimensionProps,Y as makeTagProps,Zt as convertToUnit,_t as useRender,b as genOverlays,c as LoaderSlot,et as provideTheme,h as VIcon,i as useLink,j as makeBorderProps,k as makeElevationProps,kt as provideDefaults,l as makeLoaderProps,mt as IconValue,n as makeRouterProps,o as makePositionProps,s as usePosition,t as Ripple,u as useLoader,wt as genericComponent,x as makeVariantProps,zn as isBoolean}from"./ripple-EFNA8EBu.js";import{t as createSimpleFunctional}from"./createSimpleFunctional-zlXZooQW.js";import{r as VImg,t as VAvatar}from"./VAvatar-DvRBcmqv.js";var makeVCardActionsProps=propsFactory({...makeComponentProps(),...makeTagProps()},`VCardActions`);var VCardActions=genericComponent()({name:`VCardActions`,props:makeVCardActionsProps(),setup(props,{slots}){provideDefaults({VBtn:{slim:true,variant:`text`}});useRender(()=>createVNode(props.tag,{"class":normalizeClass([`v-card-actions`,props.class]),"style":normalizeStyle(props.style)},slots));return{}}});var makeVCardSubtitleProps=propsFactory({opacity:[Number,String],...makeComponentProps(),...makeTagProps()},`VCardSubtitle`);var VCardSubtitle=genericComponent()({name:`VCardSubtitle`,props:makeVCardSubtitleProps(),setup(props,{slots}){useRender(()=>createVNode(props.tag,{"class":normalizeClass([`v-card-subtitle`,props.class]),"style":normalizeStyle([{"--v-card-subtitle-opacity":props.opacity},props.style])},slots));return{}}});var VCardTitle=createSimpleFunctional(`v-card-title`);var makeCardItemProps=propsFactory({appendAvatar:String,appendIcon:IconValue,prependAvatar:String,prependIcon:IconValue,subtitle:{type:[String,Number,Boolean],default:void 0},title:{type:[String,Number,Boolean],default:void 0},...makeComponentProps(),...makeDensityProps(),...makeTagProps()},`VCardItem`);var VCardItem=genericComponent()({name:`VCardItem`,props:makeCardItemProps(),setup(props,{slots}){useRender(()=>{const hasPrependMedia=!!(props.prependAvatar||props.prependIcon);const hasPrepend=!!(hasPrependMedia||slots.prepend);const hasAppendMedia=!!(props.appendAvatar||props.appendIcon);const hasAppend=!!(hasAppendMedia||slots.append);const hasTitle=!!(props.title!=null||slots.title);const hasSubtitle=!!(props.subtitle!=null||slots.subtitle);return createVNode(props.tag,{"class":normalizeClass([`v-card-item`,props.class]),"style":normalizeStyle(props.style)},{default:()=>[hasPrepend&&createBaseVNode(`div`,{"key":`prepend`,"class":`v-card-item__prepend`},[!slots.prepend?createBaseVNode(Fragment,null,[props.prependAvatar&&createVNode(VAvatar,{"key":`prepend-avatar`,"density":props.density,"image":props.prependAvatar},null),props.prependIcon&&createVNode(VIcon,{"key":`prepend-icon`,"density":props.density,"icon":props.prependIcon},null)]):createVNode(VDefaultsProvider,{"key":`prepend-defaults`,"disabled":!hasPrependMedia,"defaults":{VAvatar:{density:props.density,image:props.prependAvatar},VIcon:{density:props.density,icon:props.prependIcon}}},slots.prepend)]),createBaseVNode(`div`,{"class":`v-card-item__content`},[hasTitle&&createVNode(VCardTitle,{"key":`title`},{default:()=>[slots.title?.()??toDisplayString(props.title)]}),hasSubtitle&&createVNode(VCardSubtitle,{"key":`subtitle`},{default:()=>[slots.subtitle?.()??toDisplayString(props.subtitle)]}),slots.default?.()]),hasAppend&&createBaseVNode(`div`,{"key":`append`,"class":`v-card-item__append`},[!slots.append?createBaseVNode(Fragment,null,[props.appendIcon&&createVNode(VIcon,{"key":`append-icon`,"density":props.density,"icon":props.appendIcon},null),props.appendAvatar&&createVNode(VAvatar,{"key":`append-avatar`,"density":props.density,"image":props.appendAvatar},null)]):createVNode(VDefaultsProvider,{"key":`append-defaults`,"disabled":!hasAppendMedia,"defaults":{VAvatar:{density:props.density,image:props.appendAvatar},VIcon:{density:props.density,icon:props.appendIcon}}},slots.append)])]})});return{}}});var makeVCardTextProps=propsFactory({opacity:[Number,String],...makeComponentProps(),...makeTagProps()},`VCardText`);var VCardText=genericComponent()({name:`VCardText`,props:makeVCardTextProps(),setup(props,{slots}){useRender(()=>createVNode(props.tag,{"class":normalizeClass([`v-card-text`,props.class]),"style":normalizeStyle([{"--v-card-text-opacity":props.opacity},props.style])},slots));return{}}});var makeVCardProps=propsFactory({appendAvatar:String,appendIcon:IconValue,disabled:Boolean,flat:Boolean,hover:Boolean,image:String,link:{type:Boolean,default:void 0},prependAvatar:String,prependIcon:IconValue,ripple:{type:[Boolean,Object],default:true},subtitle:{type:[String,Number,Boolean],default:void 0},text:{type:[String,Number,Boolean],default:void 0},title:{type:[String,Number,Boolean],default:void 0},...makeBorderProps(),...makeComponentProps(),...makeDensityProps(),...makeDimensionProps(),...makeElevationProps(),...makeLoaderProps(),...makeLocationProps(),...makePositionProps(),...makeRoundedProps(),...makeRouterProps(),...makeTagProps(),...makeThemeProps(),...makeVariantProps({variant:`elevated`})},`VCard`);var VCard=genericComponent()({name:`VCard`,directives:{vRipple:Ripple},props:makeVCardProps(),setup(props,{attrs,slots}){const{themeClasses}=provideTheme(props);const{borderClasses}=useBorder(props);const{colorClasses,colorStyles,variantClasses}=useVariant(props);const{densityClasses}=useDensity(props);const{dimensionStyles}=useDimension(props);const{elevationClasses}=useElevation(props);const{loaderClasses}=useLoader(props);const{locationStyles}=useLocation(props);const{positionClasses}=usePosition(props);const{roundedClasses,roundedStyles}=useRounded(props);const link=useLink(props,attrs);const loadingColor=shallowRef(void 0);watch(()=>props.loading,(val,old)=>{loadingColor.value=!val&&isString(old)?old:isBoolean(val)?void 0:val},{immediate:true});useRender(()=>{const isLink=props.link!==false&&link.isLink.value;const isClickable=!props.disabled&&props.link!==false&&(props.link||link.isClickable.value);const Tag=isLink?`a`:props.tag;const hasTitle=!!(slots.title||props.title!=null);const hasSubtitle=!!(slots.subtitle||props.subtitle!=null);const hasHeader=hasTitle||hasSubtitle;const hasAppend=!!(slots.append||props.appendAvatar||props.appendIcon);const hasPrepend=!!(slots.prepend||props.prependAvatar||props.prependIcon);const hasImage=!!(slots.image||props.image);const hasCardItem=hasHeader||hasPrepend||hasAppend;const hasText=!!(slots.text||props.text!=null);return withDirectives(createVNode(Tag,mergeProps(link.linkProps,{"class":[`v-card`,{"v-card--disabled":props.disabled,"v-card--flat":props.flat,"v-card--hover":props.hover&&!(props.disabled||props.flat),"v-card--link":isClickable},themeClasses.value,borderClasses.value,colorClasses.value,densityClasses.value,elevationClasses.value,loaderClasses.value,positionClasses.value,roundedClasses.value,variantClasses.value,props.class],"style":[colorStyles.value,dimensionStyles.value,locationStyles.value,{"--v-card-height":convertToUnit(props.height)},roundedStyles.value,props.style],"onClick":isClickable&&link.navigate.value,"tabindex":props.disabled?-1:void 0}),{default:()=>[hasImage&&createBaseVNode(`div`,{"key":`image`,"class":`v-card__image`},[!slots.image?createVNode(VImg,{"key":`image-img`,"cover":true,"src":props.image},null):createVNode(VDefaultsProvider,{"key":`image-defaults`,"disabled":!props.image,"defaults":{VImg:{cover:true,src:props.image}}},slots.image)]),createVNode(LoaderSlot,{"name":`v-card`,"active":!!props.loading,"color":loadingColor.value},{default:slots.loader}),hasCardItem&&createVNode(VCardItem,{"key":`item`,"prependAvatar":props.prependAvatar,"prependIcon":props.prependIcon,"title":props.title,"subtitle":props.subtitle,"appendAvatar":props.appendAvatar,"appendIcon":props.appendIcon},{default:slots.item,prepend:slots.prepend,title:slots.title,subtitle:slots.subtitle,append:slots.append}),hasText&&createVNode(VCardText,{"key":`text`},{default:()=>[slots.text?.()??props.text]}),slots.default?.(),slots.actions&&createVNode(VCardActions,null,{default:slots.actions}),genOverlays(isClickable,`v-card`)]}),[[Ripple,isClickable&&props.ripple]])});return{}}});export{VCardSubtitle as a,VCardTitle as i,VCardText as n,VCardActions as o,VCardItem as r,VCard as t};
@@ -0,0 +1 @@
1
+ import{D as createVNode,Pt as useId,et as mergeProps,vn as ref}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{Nt as propsFactory,_t as useRender,bn as omit,dt as useProxiedModel,in as filterInputAttrs,wt as genericComponent}from"./ripple-EFNA8EBu.js";import{l as forwardRefs}from"./VOverlay-Cp4rFk6g.js";import{l as VInput,m as useFocus,u as makeVInputProps}from"./VTextField-C0b_0cSa.js";import{n as makeVCheckboxBtnProps,t as VCheckboxBtn}from"./VCheckboxBtn-DYcQU2Pn.js";var makeVCheckboxProps=propsFactory({...omit(makeVInputProps(),[`direction`,`glow`]),...omit(makeVCheckboxBtnProps(),[`inline`])},`VCheckbox`);var VCheckbox=genericComponent()({name:`VCheckbox`,inheritAttrs:false,props:makeVCheckboxProps(),emits:{"update:modelValue":value=>true,"update:focused":focused=>true},setup(props,{attrs,slots}){const model=useProxiedModel(props,`modelValue`);const{isFocused,focus,blur}=useFocus(props);const inputRef=ref();const uid=useId();useRender(()=>{const[rootAttrs,controlAttrs]=filterInputAttrs(attrs);const inputProps=VInput.filterProps(props);const checkboxProps=VCheckboxBtn.filterProps(props);return createVNode(VInput,mergeProps({"ref":inputRef,"class":[`v-checkbox`,props.class]},rootAttrs,inputProps,{"modelValue":model.value,"onUpdate:modelValue":$event=>model.value=$event,"id":props.id||`checkbox-${uid}`,"focused":isFocused.value,"style":props.style}),{...slots,default:({id,messagesId,isDisabled,isReadonly,isValid})=>createVNode(VCheckboxBtn,mergeProps(checkboxProps,{"id":id.value,"aria-describedby":messagesId.value,"disabled":isDisabled.value,"readonly":isReadonly.value},controlAttrs,{"error":isValid.value===false,"modelValue":model.value,"onUpdate:modelValue":$event=>model.value=$event,"onFocus":focus,"onBlur":blur}),slots)})});return forwardRefs({},inputRef)}});export{VCheckbox as t};
@@ -0,0 +1 @@
1
+ @layer vuetify-components{.v-selection-control{contain:layout;-webkit-user-select:none;user-select:none;flex:1 0;grid-area:control;align-items:center;display:flex;position:relative}.v-selection-control .v-label{white-space:normal;word-break:break-word;opacity:1;height:100%}.v-selection-control--disabled{opacity:var(--v-disabled-opacity);pointer-events:none}.v-selection-control--error:not(.v-selection-control--disabled) .v-label{color:rgb(var(--v-theme-error))}.v-selection-control--inline{flex:none;min-width:0;max-width:100%;display:inline-flex}.v-selection-control--inline .v-label{width:auto}.v-selection-control--density-default{--v-selection-control-size:40px}.v-selection-control--density-comfortable{--v-selection-control-size:36px}.v-selection-control--density-compact{--v-selection-control-size:28px}.v-selection-control__wrapper{width:var(--v-selection-control-size);height:var(--v-selection-control-size);flex:none;justify-content:center;align-items:center;display:inline-flex;position:relative}.v-selection-control__input{width:var(--v-selection-control-size);height:var(--v-selection-control-size);border-radius:50%;flex:none;justify-content:center;align-items:center;display:flex;position:relative}.v-selection-control__input input{cursor:pointer;opacity:0;width:100%;height:100%;position:absolute;top:0;left:0}.v-selection-control__input:before{opacity:0;pointer-events:none;content:"";background-color:currentColor;border-radius:100%;width:100%;height:100%;position:absolute;top:0;left:0}.v-selection-control__input:hover:before{opacity:calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier))}.v-selection-control__input>.v-icon{opacity:var(--v-medium-emphasis-opacity)}.v-selection-control--disabled .v-selection-control__input>.v-icon,.v-selection-control--dirty .v-selection-control__input>.v-icon,.v-selection-control--indeterminate .v-selection-control__input>.v-icon,.v-selection-control--error .v-selection-control__input>.v-icon{opacity:1}.v-selection-control--error:not(.v-selection-control--disabled) .v-selection-control__input>.v-icon{color:rgb(var(--v-theme-error))}.v-selection-control--focus-visible .v-selection-control__input:before{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}.v-selection-control-group{flex-direction:column;grid-area:control;display:flex}.v-selection-control-group--inline{flex-flow:wrap}}
@@ -0,0 +1 @@
1
+ import{D as createVNode,J as inject,Pt as useId,Yt as withDirectives,Zn as normalizeClass,_ as createBaseVNode,er as normalizeStyle,et as mergeProps,g as computed,gt as provide,o as Fragment,pn as onScopeDispose,tt as nextTick,vn as ref,wn as toRef,xn as shallowRef}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{$ as makeThemeProps,B as useTextColor,Dn as wrapInArray,E as useDensity,Mt as makeComponentProps,Nt as propsFactory,R as useBackgroundColor,St as deepEqual,T as makeDensityProps,_n as matchesSelector,_t as useRender,bn as omit,dt as useProxiedModel,h as VIcon,in as filterInputAttrs,kt as provideDefaults,mt as IconValue,t as Ripple,wt as genericComponent}from"./ripple-EFNA8EBu.js";import{g as VLabel}from"./VTextField-C0b_0cSa.js";var VSelectionControlGroupSymbol=Symbol.for(`vuetify:selection-control-group`);var makeSelectionControlGroupProps=propsFactory({color:String,disabled:{type:Boolean,default:null},defaultsTarget:String,error:Boolean,id:String,inline:Boolean,falseIcon:IconValue,trueIcon:IconValue,indeterminateIcon:IconValue,ripple:{type:[Boolean,Object],default:true},multiple:{type:Boolean,default:null},name:String,readonly:{type:Boolean,default:null},modelValue:null,type:String,valueComparator:{type:Function,default:deepEqual},...makeComponentProps(),...makeDensityProps(),...makeThemeProps()},`SelectionControlGroup`);var makeVSelectionControlGroupProps=propsFactory({...makeSelectionControlGroupProps({defaultsTarget:`VSelectionControl`})},`VSelectionControlGroup`);var VSelectionControlGroup=genericComponent()({name:`VSelectionControlGroup`,props:makeVSelectionControlGroupProps(),emits:{"update:modelValue":value=>true},setup(props,{slots}){const modelValue=useProxiedModel(props,`modelValue`);const uid=useId();const id=toRef(()=>props.id||`v-selection-control-group-${uid}`);const name=toRef(()=>props.name||id.value);const updateHandlers=new Set;provide(VSelectionControlGroupSymbol,{modelValue,forceUpdate:()=>{updateHandlers.forEach(fn=>fn())},onForceUpdate:cb=>{updateHandlers.add(cb);onScopeDispose(()=>{updateHandlers.delete(cb)})}});provideDefaults({[props.defaultsTarget]:{color:toRef(()=>props.color),disabled:toRef(()=>props.disabled),density:toRef(()=>props.density),error:toRef(()=>props.error),inline:toRef(()=>props.inline),modelValue,multiple:toRef(()=>!!props.multiple||props.multiple==null&&Array.isArray(modelValue.value)),name,falseIcon:toRef(()=>props.falseIcon),trueIcon:toRef(()=>props.trueIcon),readonly:toRef(()=>props.readonly),ripple:toRef(()=>props.ripple),type:toRef(()=>props.type),valueComparator:toRef(()=>props.valueComparator)}});useRender(()=>createBaseVNode(`div`,{"class":normalizeClass([`v-selection-control-group`,{"v-selection-control-group--inline":props.inline},props.class]),"style":normalizeStyle(props.style),"role":props.type===`radio`?`radiogroup`:void 0},[slots.default?.()]));return{}}});var makeVSelectionControlProps=propsFactory({indeterminate:Boolean,label:String,baseColor:String,trueValue:null,falseValue:null,value:null,...makeComponentProps(),...makeSelectionControlGroupProps()},`VSelectionControl`);function useSelectionControl(props){const group=inject(VSelectionControlGroupSymbol,void 0);const{densityClasses}=useDensity(props);const modelValue=useProxiedModel(props,`modelValue`);const trueValue=computed(()=>props.trueValue!==void 0?props.trueValue:props.value!==void 0?props.value:true);const falseValue=computed(()=>props.falseValue!==void 0?props.falseValue:false);const isMultiple=computed(()=>!!props.multiple||props.multiple==null&&Array.isArray(modelValue.value));const model=computed({get(){const val=group?group.modelValue.value:modelValue.value;return isMultiple.value?wrapInArray(val).some(v=>props.valueComparator(v,trueValue.value)):props.valueComparator(val,trueValue.value)},set(val){if(props.readonly)return;const currentValue=val?trueValue.value:falseValue.value;let newVal=currentValue;if(isMultiple.value)newVal=val?[...wrapInArray(modelValue.value),currentValue]:wrapInArray(modelValue.value).filter(item=>!props.valueComparator(item,trueValue.value));if(group)group.modelValue.value=newVal;else modelValue.value=newVal}});const isActive=computed(()=>model.value||props.indeterminate);const{textColorClasses,textColorStyles}=useTextColor(()=>{if(props.error||props.disabled)return void 0;return isActive.value?props.color:props.baseColor});const{backgroundColorClasses,backgroundColorStyles}=useBackgroundColor(()=>{return isActive.value&&!props.error&&!props.disabled?props.color:props.baseColor});return{group,densityClasses,trueValue,falseValue,model,textColorClasses,textColorStyles,backgroundColorClasses,backgroundColorStyles,icon:computed(()=>props.indeterminate?props.indeterminateIcon:model.value?props.trueIcon:props.falseIcon)}}var VSelectionControl=genericComponent()({name:`VSelectionControl`,directives:{vRipple:Ripple},inheritAttrs:false,props:makeVSelectionControlProps(),emits:{"update:modelValue":value=>true},setup(props,{attrs,slots}){const{group,densityClasses,icon,model,textColorClasses,textColorStyles,backgroundColorClasses,backgroundColorStyles,trueValue}=useSelectionControl(props);const uid=useId();const isFocused=shallowRef(false);const isFocusVisible=shallowRef(false);const input=ref();const id=toRef(()=>props.id||`input-${uid}`);const isInteractive=toRef(()=>!props.disabled&&!props.readonly);group?.onForceUpdate(()=>{if(input.value)input.value.checked=model.value});function onFocus(e){if(props.disabled)return;isFocused.value=true;if(matchesSelector(e.target,`:focus-visible`)!==false)isFocusVisible.value=true}function onBlur(){isFocused.value=false;isFocusVisible.value=false}function onClickLabel(e){e.stopPropagation()}function onInput(e){if(!isInteractive.value){if(input.value)input.value.checked=model.value;return}if(props.readonly&&group)nextTick(()=>group.forceUpdate());model.value=e.target.checked}useRender(()=>{const label=slots.label?slots.label({label:props.label,props:{for:id.value}}):props.label;const[rootAttrs,inputAttrs]=filterInputAttrs(attrs);const inputNode=createBaseVNode(`input`,mergeProps({"ref":input,"checked":model.value,"disabled":!!props.disabled,"id":id.value,"onBlur":onBlur,"onFocus":onFocus,"onInput":onInput,"aria-disabled":!!props.disabled,"aria-label":props.label,"type":props.type,"value":trueValue.value,"name":props.name,"aria-checked":props.type===`checkbox`?model.value:void 0},inputAttrs),null);return createBaseVNode(`div`,mergeProps({"class":[`v-selection-control`,{"v-selection-control--dirty":model.value,"v-selection-control--indeterminate":props.indeterminate,"v-selection-control--disabled":props.disabled,"v-selection-control--error":props.error,"v-selection-control--focused":isFocused.value,"v-selection-control--focus-visible":isFocusVisible.value,"v-selection-control--inline":props.inline},densityClasses.value,props.class]},rootAttrs,{"style":props.style}),[createBaseVNode(`div`,{"class":normalizeClass([`v-selection-control__wrapper`,textColorClasses.value]),"style":normalizeStyle(textColorStyles.value)},[slots.default?.({backgroundColorClasses,backgroundColorStyles}),withDirectives(createBaseVNode(`div`,{"class":normalizeClass([`v-selection-control__input`])},[slots.input?.({model,textColorClasses,textColorStyles,backgroundColorClasses,backgroundColorStyles,inputNode,icon:icon.value,props:{onFocus,onBlur,id:id.value}})??createBaseVNode(Fragment,null,[icon.value&&createVNode(VIcon,{"key":`icon`,"icon":icon.value},null),inputNode])]),[[Ripple,!props.disabled&&!props.readonly&&props.ripple,null,{center:true,circle:true}]])]),label&&createVNode(VLabel,{"for":id.value,"onClick":onClickLabel},{default:()=>[label]})])});return{isFocused,input}}});var makeVCheckboxBtnProps=propsFactory({...makeVSelectionControlProps({falseIcon:`$checkboxOff`,trueIcon:`$checkboxOn`,indeterminateIcon:`$checkboxIndeterminate`})},`VCheckboxBtn`);var VCheckboxBtn=genericComponent()({name:`VCheckboxBtn`,props:makeVCheckboxBtnProps(),emits:{"update:modelValue":value=>true,"update:indeterminate":value=>true},setup(props,{slots}){const indeterminate=useProxiedModel(props,`indeterminate`);const model=useProxiedModel(props,`modelValue`);function onChange(v){if(indeterminate.value)indeterminate.value=false}useRender(()=>{const controlProps=omit(VSelectionControl.filterProps(props),[`modelValue`]);return createVNode(VSelectionControl,mergeProps(controlProps,{"modelValue":model.value,"onUpdate:modelValue":[$event=>model.value=$event,onChange],"class":[`v-checkbox-btn`,props.class],"style":props.style,"type":`checkbox`,"aria-checked":indeterminate.value?`mixed`:void 0}),slots)});return{}}});export{VSelectionControlGroup as a,makeVSelectionControlProps as i,makeVCheckboxBtnProps as n,makeSelectionControlGroupProps as o,VSelectionControl as r,VCheckboxBtn as t};
@@ -0,0 +1 @@
1
+ import{D as createVNode,Ht as watch,J as inject,Yt as withDirectives,Zn as normalizeClass,_ as createBaseVNode,er as normalizeStyle,et as mergeProps,g as computed,o as Fragment,tr as toDisplayString,wn as toRef,xn as shallowRef}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{$ as makeThemeProps,$n as consoleWarn,A as useElevation,Bn as isFunction,C as makeSizeProps,E as useDensity,G as VExpandXTransition,Gn as isString,Gt as EventProp,I as makeRoundedProps,K as VFadeTransition,L as useRounded,M as useBorder,Mt as makeComponentProps,Nt as propsFactory,On as IN_BROWSER,S as useVariant,St as deepEqual,T as makeDensityProps,U as VDefaultsProvider,Un as isNumber,Wn as isObject,X as useResizeObserver,Xt as clamp,Y as makeTagProps,_ as makeGroupProps,_n as matchesSelector,_t as useRender,ar as vShow,at as makeDisplayProps,b as genOverlays,bt as easingPatterns,dt as useProxiedModel,et as provideTheme,g as makeGroupItemProps,h as VIcon,i as useLink,j as makeBorderProps,k as makeElevationProps,kn as PREFERS_REDUCED_MOTION,kt as provideDefaults,lt as useLocale,mt as IconValue,n as makeRouterProps,ot as useDisplay,sn as focusableChildren,t as Ripple,ut as useRtl,v as useGroup,vn as mergeDeep,w as useSize,wn as refElement,wt as genericComponent,x as makeVariantProps,y as useGroupItem,zn as isBoolean}from"./ripple-EFNA8EBu.js";import{t as VAvatar}from"./VAvatar-DvRBcmqv.js";var GoToSymbol=Symbol.for(`vuetify:goto`);function genDefaults(){return{container:void 0,duration:300,layout:false,offset:0,easing:`easeInOutCubic`,patterns:easingPatterns}}function getContainer(el){return getTarget(el)??(document.scrollingElement||document.body)}function getTarget(el){return isString(el)?document.querySelector(el):refElement(el)}function getOffset(target,horizontal,rtl){if(isNumber(target))return horizontal&&rtl?-target:target;let el=getTarget(target);let totalOffset=0;while(el){totalOffset+=horizontal?el.offsetLeft:el.offsetTop;el=el.offsetParent}return totalOffset}function createGoTo(options,locale){return{rtl:locale.isRtl,options:mergeDeep(genDefaults(),options)}}async function scrollTo(_target,_options,horizontal,goTo){const property=horizontal?`scrollLeft`:`scrollTop`;const options=mergeDeep(goTo?.options??genDefaults(),_options);const rtl=goTo?.rtl.value;const target=(isNumber(_target)?_target:getTarget(_target))??0;const container=options.container===`parent`&&target instanceof HTMLElement?target.parentElement:getContainer(options.container);const ease=PREFERS_REDUCED_MOTION()?options.patterns.instant:isFunction(options.easing)?options.easing:options.patterns[options.easing];if(!ease)throw new TypeError(`Easing function "${options.easing}" not found.`);let targetLocation;if(isNumber(target))targetLocation=getOffset(target,horizontal,rtl);else{targetLocation=getOffset(target,horizontal,rtl)-getOffset(container,horizontal,rtl);if(options.layout){const layoutOffset=window.getComputedStyle(target).getPropertyValue(`--v-layout-top`);if(layoutOffset)targetLocation-=parseInt(layoutOffset,10)}}targetLocation+=options.offset;targetLocation=clampTarget(container,targetLocation,!!rtl,!!horizontal);const startLocation=container[property]??0;if(targetLocation===startLocation)return Promise.resolve(targetLocation);const startTime=performance.now();return new Promise(resolve=>requestAnimationFrame(function step(currentTime){const progress=(currentTime-startTime)/options.duration;const location=Math.floor(startLocation+(targetLocation-startLocation)*ease(clamp(progress,0,1)));container[property]=location;if(progress>=1&&Math.abs(location-container[property])<10)return resolve(targetLocation);else if(progress>2){consoleWarn(`Scroll target is not reachable`);return resolve(container[property])}requestAnimationFrame(step)}))}function useGoTo(_options={}){const goToInstance=inject(GoToSymbol);const{isRtl}=useRtl();if(!goToInstance)throw new Error(`[Vuetify] Could not find injected goto instance`);const goTo={...goToInstance,rtl:toRef(()=>goToInstance.rtl.value||isRtl.value)};async function go(target,options){return scrollTo(target,mergeDeep(_options,options),false,goTo)}go.horizontal=async(target,options)=>{return scrollTo(target,mergeDeep(_options,options),true,goTo)};return go}function clampTarget(container,value,rtl,horizontal){const{scrollWidth,scrollHeight}=container;const[containerWidth,containerHeight]=container===document.scrollingElement?[window.innerWidth,window.innerHeight]:[container.offsetWidth,container.offsetHeight];let min;let max;if(horizontal){if(rtl){min=-(scrollWidth-containerWidth);max=0}else{min=0;max=scrollWidth-containerWidth}}else{min=0;max=scrollHeight+-containerHeight}return clamp(value,min,max)}function calculateUpdatedTarget({selectedElement,containerElement,isRtl,isHorizontal}){const containerSize=getOffsetSize(isHorizontal,containerElement);const scrollPosition=getScrollPosition(isHorizontal,isRtl,containerElement);const childrenSize=getOffsetSize(isHorizontal,selectedElement);const childrenStartPosition=getOffsetPosition(isHorizontal,selectedElement);const additionalOffset=childrenSize*.4;if(scrollPosition>childrenStartPosition)return childrenStartPosition-additionalOffset;else if(scrollPosition+containerSize<childrenStartPosition+childrenSize)return childrenStartPosition-containerSize+childrenSize+additionalOffset;return scrollPosition}function calculateCenteredTarget({selectedElement,containerElement,isHorizontal}){const containerOffsetSize=getOffsetSize(isHorizontal,containerElement);const childrenOffsetPosition=getOffsetPosition(isHorizontal,selectedElement);const childrenOffsetSize=getOffsetSize(isHorizontal,selectedElement);return childrenOffsetPosition-containerOffsetSize/2+childrenOffsetSize/2}function getScrollSize(isHorizontal,element){return element?.[isHorizontal?`scrollWidth`:`scrollHeight`]||0}function getScrollPosition(isHorizontal,rtl,element){if(!element)return 0;const{scrollLeft,offsetWidth,scrollWidth}=element;if(isHorizontal)return rtl?scrollWidth-offsetWidth+scrollLeft:scrollLeft;return element.scrollTop}function getOffsetSize(isHorizontal,element){return element?.[isHorizontal?`offsetWidth`:`offsetHeight`]||0}function getOffsetPosition(isHorizontal,element){return element?.[isHorizontal?`offsetLeft`:`offsetTop`]||0}function getScrollDistance(containerSize,distance){if(isString(distance)&&distance.endsWith(`%`))return containerSize*parseFloat(distance)/100;return parseFloat(String(distance))||containerSize}var VSlideGroupSymbol=Symbol.for(`vuetify:v-slide-group`);var makeVSlideGroupProps=propsFactory({centerActive:Boolean,scrollDistance:{type:[String,Number],default:`100%`,validator:v=>/^-?\d*\.?\d+(px|%)?$/.test(String(v).trim())},scrollSnap:{type:String,validator:v=>[`start`,`center`,`end`].includes(v)},scrollToActive:{type:Boolean,default:true},contentClass:null,direction:{type:String,default:`horizontal`},symbol:{type:null,default:VSlideGroupSymbol},nextIcon:{type:IconValue,default:`$next`},prevIcon:{type:IconValue,default:`$prev`},showArrows:{type:[Boolean,String],validator:v=>isBoolean(v)||[`always`,`desktop`,`mobile`,`never`].includes(v)},...makeComponentProps(),...makeDisplayProps({mobile:null}),...makeTagProps(),...makeGroupProps({selectedClass:`v-slide-group-item--active`})},`VSlideGroup`);var VSlideGroup=genericComponent()({name:`VSlideGroup`,props:makeVSlideGroupProps(),emits:{"update:modelValue":value=>true,edge:side=>true},setup(props,{emit,slots}){const{isRtl}=useRtl();const{displayClasses,mobile}=useDisplay(props);const group=useGroup(props,props.symbol);const isOverflowing=shallowRef(false);const scrollOffset=shallowRef(0);const containerSize=shallowRef(0);const contentSize=shallowRef(0);const isHorizontal=computed(()=>props.direction===`horizontal`);const{resizeRef:containerRef,contentRect:containerRect}=useResizeObserver();const{resizeRef:contentRef,contentRect}=useResizeObserver();const goTo=useGoTo();const goToOptions=computed(()=>{return{container:containerRef.el,duration:200,easing:`easeOutQuart`}});const firstSelectedIndex=computed(()=>{if(!group.selected.value.length)return-1;return group.items.value.findIndex(item=>item.id===group.selected.value[0])});const lastSelectedIndex=computed(()=>{if(!group.selected.value.length)return-1;return group.items.value.findIndex(item=>item.id===group.selected.value[group.selected.value.length-1])});if(IN_BROWSER){let frame=-1;watch(()=>[group.selected.value,containerRect.value,contentRect.value,isHorizontal.value],()=>{cancelAnimationFrame(frame);frame=requestAnimationFrame(()=>{if(containerRect.value&&contentRect.value){const sizeProperty=isHorizontal.value?`width`:`height`;containerSize.value=containerRect.value[sizeProperty];contentSize.value=contentRect.value[sizeProperty];isOverflowing.value=containerSize.value+1<contentSize.value}if(props.scrollToActive&&firstSelectedIndex.value>=0&&contentRef.el){const selectedElement=contentRef.el.children[lastSelectedIndex.value];scrollToChildren(selectedElement,props.centerActive)}})})}const isFocused=shallowRef(false);function scrollToChildren(children,center){if(props.scrollSnap)return scrollToPosition(snapToElement(children,center));let target=0;if(center)target=calculateCenteredTarget({containerElement:containerRef.el,isHorizontal:isHorizontal.value,selectedElement:children});else target=calculateUpdatedTarget({containerElement:containerRef.el,isHorizontal:isHorizontal.value,isRtl:isRtl.value,selectedElement:children});scrollToPosition(mirrorInRtl(target))}let activeAnimations=0;function scrollToPosition(newPosition){if(!IN_BROWSER||!containerRef.el)return;const offsetSize=getOffsetSize(isHorizontal.value,containerRef.el);const scrollSize=getScrollSize(isHorizontal.value,containerRef.el);if(scrollSize<=offsetSize)return;newPosition=clamp(newPosition,0,scrollSize-offsetSize);if(Math.abs(newPosition-getPosition())<=1)return;const scrolling=isHorizontal.value?goTo.horizontal(newPosition,goToOptions.value):goTo(newPosition,goToOptions.value);if(props.scrollSnap){const el=containerRef.el;el.style.scrollSnapType=`none`;activeAnimations++;scrolling.finally(()=>--activeAnimations||(el.style.scrollSnapType=``))}}function onFocusin(e){isFocused.value=true;if(!isOverflowing.value||!contentRef.el)return;if(matchesSelector(e.target,`:focus-visible`)===false)return;for(const el of e.composedPath())for(const item of contentRef.el.children)if(item===el){scrollToChildren(item);return}}function onFocusout(e){isFocused.value=false}let ignoreFocusEvent=false;function onFocus(e){if(!ignoreFocusEvent&&!isFocused.value&&!(e.relatedTarget&&contentRef.el?.contains(e.relatedTarget)))focus();ignoreFocusEvent=false}function onFocusAffixes(){ignoreFocusEvent=true}function onKeydown(e){if(!contentRef.el)return;function toFocus(location){e.preventDefault();focus(location)}if(isHorizontal.value){if(e.key===`ArrowRight`)toFocus(isRtl.value?`prev`:`next`);else if(e.key===`ArrowLeft`)toFocus(isRtl.value?`next`:`prev`)}else if(e.key===`ArrowDown`)toFocus(`next`);else if(e.key===`ArrowUp`)toFocus(`prev`);if(e.key===`Home`)toFocus(`first`);else if(e.key===`End`)toFocus(`last`)}function getSiblingElement(el,location){if(!el)return void 0;let sibling=el;do sibling=sibling?.[location===`next`?`nextElementSibling`:`previousElementSibling`];while(sibling?.hasAttribute(`disabled`));return sibling}function focus(location){if(!contentRef.el)return;let el;if(!location)el=focusableChildren(contentRef.el)[0];else if(location===`next`){el=getSiblingElement(contentRef.el.querySelector(`:focus`),location);if(!el)return focus(`first`)}else if(location===`prev`){el=getSiblingElement(contentRef.el.querySelector(`:focus`),location);if(!el)return focus(`last`)}else if(location===`first`){el=contentRef.el.firstElementChild;if(el?.hasAttribute(`disabled`))el=getSiblingElement(el,`next`)}else if(location===`last`){el=contentRef.el.lastElementChild;if(el?.hasAttribute(`disabled`))el=getSiblingElement(el,`prev`)}if(el)el.focus({preventScroll:true})}function mirrorInRtl(position){return isHorizontal.value&&isRtl.value?getScrollSize(true,containerRef.el)-getOffsetSize(true,containerRef.el)-position:position}function getPosition(){return mirrorInRtl(getScrollPosition(isHorizontal.value,isRtl.value,containerRef.el))}function getBounds(child){const size=getOffsetSize(isHorizontal.value,child);const start=isHorizontal.value&&isRtl.value?getScrollSize(true,containerRef.el)-child.offsetLeft-size:getOffsetPosition(isHorizontal.value,child);return{start,end:start+size}}function getItemBounds(){return contentRef.el?Array.from(contentRef.el.children,getBounds):[]}function getSnapPosition(item){if(props.scrollSnap===`end`)return item.end-containerSize.value;if(props.scrollSnap===`center`)return(item.start+item.end-containerSize.value)/2;return item.start}function getSnapPositions(){return getItemBounds().map(getSnapPosition)}function getItemClippedAt(edge){return getItemBounds().find(item=>item.start<edge-1&&item.end>edge+1)}function reveals(item){return position=>!item||position<=item.start+1&&position+containerSize.value>=item.end-1}function nearestTo(ideal){return(best,position)=>Math.abs(position-ideal)<Math.abs(best-ideal)?position:best}function snapToElement(child,center){const item=getBounds(child);const ideal=center?(item.start+item.end-containerSize.value)/2:getPosition();return getSnapPositions().filter(reveals(item)).reduce(nearestTo(ideal),getSnapPosition(item))}function snapToItem(from,step){const forward=step>0;const target=from+step;const candidates=getSnapPositions().filter(p=>forward?p>from+1:p<from-1);const revealing=candidates.filter(reveals(getItemClippedAt(forward?target:from)));const options=revealing.length?revealing:candidates;return(forward?options.findLast(p=>p<=target)??options[0]:options.find(p=>p>=target)??options.at(-1))??target}function slide(target){if(!containerRef.el||!containerSize.value)return;if(isObject(target)&&`index`in target){const item=contentRef.el?.children[target.index];if(item)scrollToChildren(item,props.centerActive);return}const from=getPosition();const distance=isString(target)?props.scrollDistance:target.by;const scrollDistance=getScrollDistance(containerSize.value,distance)*(target===`prev`?-1:1);scrollToPosition(props.scrollSnap?snapToItem(from,scrollDistance):from+scrollDistance)}const slotProps=computed(()=>({next:group.next,prev:group.prev,select:group.select,isSelected:group.isSelected}));const hasOverflowOrScroll=computed(()=>isOverflowing.value||Math.abs(scrollOffset.value)>0);const hasAffixes=computed(()=>{switch(props.showArrows){case`never`:return false;case`always`:return true;case`desktop`:return!mobile.value;case true:return hasOverflowOrScroll.value;case`mobile`:return mobile.value||hasOverflowOrScroll.value;default:return!mobile.value&&hasOverflowOrScroll.value}});const hasPrev=computed(()=>{return Math.abs(scrollOffset.value)>1});const hasNext=computed(()=>{if(!hasOverflowOrScroll.value)return false;return contentSize.value-containerSize.value-Math.abs(scrollOffset.value)>1});function onScroll(){const hadPrev=hasPrev.value;const hadNext=hasNext.value;scrollOffset.value=getPosition();if(hadPrev&&!hasPrev.value)emit(`edge`,`start`);if(hadNext&&!hasNext.value)emit(`edge`,`end`)}useRender(()=>createVNode(props.tag,{"class":normalizeClass([`v-slide-group`,{"v-slide-group--vertical":!isHorizontal.value,"v-slide-group--has-affixes":hasAffixes.value,"v-slide-group--is-overflowing":isOverflowing.value,"v-slide-group--snap":!!props.scrollSnap},displayClasses.value,props.class]),"style":normalizeStyle(props.style),"tabindex":isFocused.value||group.selected.value.length?-1:0,"onFocus":onFocus},{default:()=>[hasAffixes.value&&createBaseVNode(`div`,{"key":`prev`,"class":normalizeClass([`v-slide-group__prev`,{"v-slide-group__prev--disabled":!hasPrev.value}]),"onMousedown":onFocusAffixes,"onClick":()=>hasPrev.value&&slide(`prev`)},[slots.prev?.(slotProps.value)??createVNode(VFadeTransition,null,{default:()=>[createVNode(VIcon,{"icon":isRtl.value?props.nextIcon:props.prevIcon},null)]})]),createBaseVNode(`div`,{"key":`container`,"ref":containerRef,"class":normalizeClass([`v-slide-group__container`,props.contentClass]),"style":{"--v-slide-group-snap-align":props.scrollSnap},"onScroll":onScroll},[createBaseVNode(`div`,{"ref":contentRef,"class":`v-slide-group__content`,"onFocusin":onFocusin,"onFocusout":onFocusout,"onKeydown":onKeydown},[slots.default?.(slotProps.value)])]),hasAffixes.value&&createBaseVNode(`div`,{"key":`next`,"class":normalizeClass([`v-slide-group__next`,{"v-slide-group__next--disabled":!hasNext.value}]),"onMousedown":onFocusAffixes,"onClick":()=>hasNext.value&&slide(`next`)},[slots.next?.(slotProps.value)??createVNode(VFadeTransition,null,{default:()=>[createVNode(VIcon,{"icon":isRtl.value?props.prevIcon:props.nextIcon},null)]})])]}));return{selected:group.selected,slide,scrollOffset,focus,hasPrev,hasNext,hasOverflow:isOverflowing}}});var VChipGroupSymbol=Symbol.for(`vuetify:v-chip-group`);var makeVChipGroupProps=propsFactory({baseColor:String,column:Boolean,filter:Boolean,valueComparator:{type:Function,default:deepEqual},...makeVSlideGroupProps({scrollToActive:false}),...makeComponentProps(),...makeGroupProps({selectedClass:`v-chip--selected`}),...makeTagProps(),...makeThemeProps(),...makeVariantProps({variant:`tonal`})},`VChipGroup`);var VChipGroup=genericComponent()({name:`VChipGroup`,props:makeVChipGroupProps(),emits:{"update:modelValue":value=>true},setup(props,{slots}){const{themeClasses}=provideTheme(props);const{isSelected,select,next,prev,selected}=useGroup(props,VChipGroupSymbol);provideDefaults({VChip:{baseColor:toRef(()=>props.baseColor),color:toRef(()=>props.color),disabled:toRef(()=>props.disabled),filter:toRef(()=>props.filter),variant:toRef(()=>props.variant)}});useRender(()=>{const slideGroupProps=VSlideGroup.filterProps(props);return createVNode(VSlideGroup,mergeProps(slideGroupProps,{"class":[`v-chip-group`,{"v-chip-group--column":props.column},themeClasses.value,props.class],"style":props.style}),{default:()=>[slots.default?.({isSelected,select,next,prev,selected:selected.value})]})});return{}}});var makeVChipProps=propsFactory({activeClass:String,appendAvatar:String,appendIcon:IconValue,baseColor:String,closable:Boolean,closeIcon:{type:IconValue,default:`$delete`},closeLabel:{type:String,default:`$vuetify.close`},draggable:Boolean,filter:Boolean,filterIcon:{type:IconValue,default:`$complete`},label:Boolean,link:{type:Boolean,default:void 0},pill:Boolean,prependAvatar:String,prependIcon:IconValue,ripple:{type:[Boolean,Object],default:true},text:{type:[String,Number,Boolean],default:void 0},modelValue:{type:Boolean,default:true},onClick:EventProp(),onClickOnce:EventProp(),...makeBorderProps(),...makeComponentProps(),...makeDensityProps(),...makeElevationProps(),...makeGroupItemProps(),...makeRoundedProps(),...makeRouterProps(),...makeSizeProps(),...makeTagProps({tag:`span`}),...makeThemeProps(),...makeVariantProps({variant:`tonal`})},`VChip`);var VChip=genericComponent()({name:`VChip`,directives:{vRipple:Ripple},props:makeVChipProps(),emits:{"click:close":e=>true,"update:modelValue":value=>true,"group:selected":val=>true,click:e=>true},setup(props,{attrs,emit,slots}){const{t}=useLocale();const{borderClasses}=useBorder(props);const{densityClasses}=useDensity(props);const{elevationClasses}=useElevation(props);const{roundedClasses,roundedStyles}=useRounded(props);const{sizeClasses}=useSize(props);const{themeClasses}=provideTheme(props);const isActive=useProxiedModel(props,`modelValue`);const group=useGroupItem(props,VChipGroupSymbol,false);const slideGroup=useGroupItem(props,VSlideGroupSymbol,false);const link=useLink(props,attrs);const isLink=toRef(()=>props.link!==false&&link.isLink.value);const isClickable=computed(()=>!props.disabled&&props.link!==false&&(!!group||props.link||link.isClickable.value));const closeProps=toRef(()=>({"aria-label":t(props.closeLabel),disabled:props.disabled,onClick(e){e.preventDefault();e.stopPropagation();isActive.value=false;emit(`click:close`,e)}}));watch(isActive,val=>{if(val){group?.register();slideGroup?.register()}else{group?.unregister();slideGroup?.unregister()}});const{colorClasses,colorStyles,variantClasses}=useVariant(()=>{return{color:!group||group.isSelected.value?props.color??props.baseColor:props.baseColor,variant:props.variant}});function onClick(e){emit(`click`,e);if(!isClickable.value)return;link.navigate.value?.(e);group?.toggle()}function onKeyDown(e){if(e.key===`Enter`||e.key===` `){e.preventDefault();onClick(e)}}return()=>{const Tag=link.isLink.value?`a`:props.tag;const hasAppendMedia=!!(props.appendIcon||props.appendAvatar);const hasAppend=!!(hasAppendMedia||slots.append);const hasClose=!!(slots.close||props.closable);const hasFilter=!!(slots.filter||props.filter)&&group;const hasPrependMedia=!!(props.prependIcon||props.prependAvatar);const hasPrepend=!!(hasPrependMedia||slots.prepend);return isActive.value&&withDirectives(createVNode(Tag,mergeProps(link.linkProps,{"class":[`v-chip`,{"v-chip--disabled":props.disabled,"v-chip--label":props.label,"v-chip--link":isClickable.value,"v-chip--filter":hasFilter,"v-chip--pill":props.pill,[`${props.activeClass}`]:props.activeClass&&link.isActive?.value},themeClasses.value,borderClasses.value,colorClasses.value,densityClasses.value,elevationClasses.value,roundedClasses.value,sizeClasses.value,variantClasses.value,group?.selectedClass.value,props.class],"style":[colorStyles.value,roundedStyles.value,props.style],"disabled":props.disabled||void 0,"draggable":props.draggable,"tabindex":isClickable.value?0:void 0,"onClick":(isClickable.value||props.onClick||props.onClickOnce)&&onClick,"onKeydown":isClickable.value&&!isLink.value&&onKeyDown}),{default:()=>[genOverlays(isClickable.value,`v-chip`),hasFilter&&createVNode(VExpandXTransition,{"key":`filter`},{default:()=>[withDirectives(createBaseVNode(`div`,{"class":`v-chip__filter`},[!slots.filter?createVNode(VIcon,{"key":`filter-icon`,"icon":props.filterIcon},null):createVNode(VDefaultsProvider,{"key":`filter-defaults`,"disabled":!props.filterIcon,"defaults":{VIcon:{icon:props.filterIcon}}},slots.filter)]),[[vShow,group.isSelected.value]])]}),hasPrepend&&createBaseVNode(`div`,{"key":`prepend`,"class":`v-chip__prepend`},[!slots.prepend?createBaseVNode(Fragment,null,[props.prependIcon&&createVNode(VIcon,{"key":`prepend-icon`,"icon":props.prependIcon,"start":true},null),props.prependAvatar&&createVNode(VAvatar,{"key":`prepend-avatar`,"image":props.prependAvatar,"start":true},null)]):createVNode(VDefaultsProvider,{"key":`prepend-defaults`,"disabled":!hasPrependMedia,"defaults":{VAvatar:{image:props.prependAvatar,start:true},VIcon:{icon:props.prependIcon,start:true}}},slots.prepend)]),createBaseVNode(`div`,{"class":`v-chip__content`,"data-no-activator":``},[slots.default?.({isSelected:group?.isSelected.value,selectedClass:group?.selectedClass.value,select:group?.select,toggle:group?.toggle,value:group?.value.value,disabled:props.disabled})??toDisplayString(props.text)]),hasAppend&&createBaseVNode(`div`,{"key":`append`,"class":`v-chip__append`},[!slots.append?createBaseVNode(Fragment,null,[props.appendIcon&&createVNode(VIcon,{"key":`append-icon`,"end":true,"icon":props.appendIcon},null),props.appendAvatar&&createVNode(VAvatar,{"key":`append-avatar`,"end":true,"image":props.appendAvatar},null)]):createVNode(VDefaultsProvider,{"key":`append-defaults`,"disabled":!hasAppendMedia,"defaults":{VAvatar:{end:true,image:props.appendAvatar},VIcon:{end:true,icon:props.appendIcon}}},slots.append)]),hasClose&&createBaseVNode(`button`,mergeProps({"key":`close`,"class":`v-chip__close`,"type":`button`,"data-testid":`close-chip`},closeProps.value),[!slots.close?createVNode(VIcon,{"key":`close-icon`,"icon":props.closeIcon,"size":`x-small`},null):createVNode(VDefaultsProvider,{"key":`close-defaults`,"defaults":{VIcon:{icon:props.closeIcon,size:`x-small`}}},slots.close)])]}),[[Ripple,isClickable.value&&props.ripple,null]])}}});export{GoToSymbol as a,makeVSlideGroupProps as i,VChipGroup as n,createGoTo as o,VSlideGroup as r,VChip as t};
@@ -0,0 +1 @@
1
+ import{D as createVNode,Ht as watch,et as mergeProps,tt as nextTick,vn as ref}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{Nt as propsFactory,U as VDefaultsProvider,_t as useRender,bn as omit,cn as getActiveElement,dt as useProxiedModel,wt as genericComponent,yn as noop}from"./ripple-EFNA8EBu.js";import{l as forwardRefs,n as makeVOverlayProps,r as useScopeId,t as VOverlay}from"./VOverlay-Cp4rFk6g.js";import{t as VDialogTransition}from"./dialog-transition-D2vqGksQ.js";var makeVDialogProps=propsFactory({fullscreen:Boolean,scrollable:Boolean,...omit(makeVOverlayProps({captureFocus:true,location:`center center`,origin:`center center`,scrollStrategy:`block`,transition:{component:VDialogTransition},zIndex:2400,retainFocus:true}),[`disableInitialFocus`])},`VDialog`);var VDialog=genericComponent()({name:`VDialog`,props:makeVDialogProps(),emits:{"update:modelValue":value=>true,afterEnter:()=>true,afterLeave:()=>true},setup(props,{emit,slots}){const isActive=useProxiedModel(props,`modelValue`);const{scopeId}=useScopeId();const overlay=ref();function onAfterEnter(){emit(`afterEnter`);if((props.scrim||props.retainFocus)&&overlay.value?.contentEl&&!overlay.value.contentEl.contains(getActiveElement()))overlay.value.contentEl.focus({preventScroll:true})}function onAfterLeave(){emit(`afterLeave`)}watch(isActive,async val=>{if(!val){await nextTick();overlay.value?.activatorEl?.focus({preventScroll:true})}});useRender(()=>{const overlayProps=VOverlay.filterProps(props);const activatorProps=mergeProps({"aria-haspopup":`dialog`},props.activatorProps);const contentProps=mergeProps({tabindex:-1},props.contentProps);const locationStrategy=props.fullscreen?noop:props.locationStrategy;return createVNode(VOverlay,mergeProps({"ref":overlay,"class":[`v-dialog`,{"v-dialog--fullscreen":props.fullscreen,"v-dialog--scrollable":props.scrollable},props.class],"style":props.style},overlayProps,{"modelValue":isActive.value,"onUpdate:modelValue":$event=>isActive.value=$event,"aria-modal":`true`,"activatorProps":activatorProps,"contentProps":contentProps,"height":!props.fullscreen?props.height:void 0,"width":!props.fullscreen?props.width:void 0,"maxHeight":!props.fullscreen?props.maxHeight:void 0,"maxWidth":!props.fullscreen?props.maxWidth:void 0,"locationStrategy":locationStrategy,"role":`dialog`,"onAfterEnter":onAfterEnter,"onAfterLeave":onAfterLeave},scopeId),{activator:slots.activator,default:(...args)=>createVNode(VDefaultsProvider,{"root":`VDialog`},{default:()=>[slots.default?.(...args)]})})});return forwardRefs({},overlay)}});export{makeVDialogProps as n,VDialog as t};
@@ -0,0 +1 @@
1
+ import{Zn as normalizeClass,_ as createBaseVNode,er as normalizeStyle,g as computed,wn as toRef}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{$ as makeThemeProps,B as useTextColor,Mt as makeComponentProps,Nt as propsFactory,Zt as convertToUnit,_t as useRender,et as provideTheme,wt as genericComponent}from"./ripple-EFNA8EBu.js";var allowedVariants=[`dotted`,`dashed`,`solid`,`double`];var makeVDividerProps=propsFactory({color:String,contentOffset:[Number,String,Array],gradient:Boolean,inset:Boolean,length:[Number,String],opacity:[Number,String],thickness:[Number,String],vertical:Boolean,variant:{type:String,default:`solid`,validator:v=>allowedVariants.includes(v)},...makeComponentProps(),...makeThemeProps()},`VDivider`);var VDivider=genericComponent()({name:`VDivider`,props:makeVDividerProps(),setup(props,{attrs,slots}){const{themeClasses}=provideTheme(props);const{textColorClasses,textColorStyles}=useTextColor(()=>props.color);const dividerStyles=computed(()=>{const styles={};if(props.length)styles[props.vertical?`height`:`width`]=convertToUnit(props.length);if(props.thickness)styles[props.vertical?`borderRightWidth`:`borderTopWidth`]=convertToUnit(props.thickness);return styles});const contentStyles=toRef(()=>{const margin=Array.isArray(props.contentOffset)?props.contentOffset[0]:props.contentOffset;const shift=Array.isArray(props.contentOffset)?props.contentOffset[1]:0;return{marginBlock:props.vertical&&margin?convertToUnit(margin):void 0,marginInline:!props.vertical&&margin?convertToUnit(margin):void 0,transform:shift?`translate${props.vertical?`X`:`Y`}(${convertToUnit(shift)})`:void 0}});useRender(()=>{const role=attrs.role;const hasSlot=!!slots.default;const divider=createBaseVNode(`hr`,{"class":normalizeClass([{"v-divider":true,"v-divider--gradient":props.gradient&&!slots.default,"v-divider--inset":props.inset,"v-divider--vertical":props.vertical},themeClasses.value,textColorClasses.value,props.class]),"style":normalizeStyle([dividerStyles.value,textColorStyles.value,{"--v-border-opacity":props.opacity},{"border-style":props.variant},props.style]),"aria-orientation":!hasSlot&&!role?props.vertical?`vertical`:`horizontal`:void 0,"role":!hasSlot?role:void 0},null);if(!hasSlot)return divider;return createBaseVNode(`div`,{"class":normalizeClass([`v-divider__wrapper`,{"v-divider__wrapper--gradient":props.gradient,"v-divider__wrapper--inset":props.inset,"v-divider__wrapper--vertical":props.vertical}])},[divider,createBaseVNode(`div`,{"class":`v-divider__content`,"style":normalizeStyle(contentStyles.value)},[slots.default()]),divider])});return{}}});export{VDivider as t};
@@ -0,0 +1 @@
1
+ import{D as createVNode,J as inject,Yt as withDirectives,Zn as normalizeClass,_ as createBaseVNode,er as normalizeStyle,g as computed,gt as provide,wn as toRef}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{$ as makeThemeProps,A as useElevation,H as useDimension,I as makeRoundedProps,L as useRounded,Mt as makeComponentProps,Nt as propsFactory,R as useBackgroundColor,Sn as pick,U as VDefaultsProvider,V as makeDimensionProps,W as VExpandTransition,Y as makeTagProps,Zt as convertToUnit,_ as makeGroupProps,_t as useRender,ar as vShow,et as provideTheme,g as makeGroupItemProps,h as VIcon,k as makeElevationProps,kt as provideDefaults,mt as IconValue,t as Ripple,v as useGroup,wt as genericComponent,y as useGroupItem}from"./ripple-EFNA8EBu.js";import{n as useLazy,t as makeLazyProps}from"./lazy-BjyT2XvW.js";var VExpansionPanelSymbol=Symbol.for(`vuetify:v-expansion-panel`);var makeVExpansionPanelTextProps=propsFactory({...makeComponentProps(),...makeLazyProps()},`VExpansionPanelText`);var VExpansionPanelText=genericComponent()({name:`VExpansionPanelText`,props:makeVExpansionPanelTextProps(),setup(props,{slots}){const expansionPanel=inject(VExpansionPanelSymbol);if(!expansionPanel)throw new Error(`[Vuetify] v-expansion-panel-text needs to be placed inside v-expansion-panel`);const{hasContent,onAfterLeave}=useLazy(props,expansionPanel.isSelected);useRender(()=>createVNode(VExpandTransition,{"onAfterLeave":onAfterLeave},{default:()=>[withDirectives(createBaseVNode(`div`,{"class":normalizeClass([`v-expansion-panel-text`,props.class]),"style":normalizeStyle(props.style)},[slots.default&&hasContent.value&&createBaseVNode(`div`,{"class":`v-expansion-panel-text__wrapper`},[slots.default?.()])]),[[vShow,expansionPanel.isSelected.value]])]}));return{}}});var makeVExpansionPanelTitleProps=propsFactory({color:String,expandIcon:{type:IconValue,default:`$expand`},collapseIcon:{type:IconValue,default:`$collapse`},hideActions:Boolean,focusable:Boolean,static:Boolean,ripple:{type:[Boolean,Object],default:false},readonly:Boolean,hover:{type:Boolean,default:true},...makeComponentProps(),...makeDimensionProps()},`VExpansionPanelTitle`);var VExpansionPanelTitle=genericComponent()({name:`VExpansionPanelTitle`,directives:{vRipple:Ripple},props:makeVExpansionPanelTitleProps(),setup(props,{slots}){const expansionPanel=inject(VExpansionPanelSymbol);if(!expansionPanel)throw new Error(`[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel`);const{backgroundColorClasses,backgroundColorStyles}=useBackgroundColor(()=>props.color);const{dimensionStyles}=useDimension(props);const slotProps=computed(()=>({collapseIcon:props.collapseIcon,disabled:expansionPanel.disabled.value,expanded:expansionPanel.isSelected.value,expandIcon:props.expandIcon,readonly:props.readonly}));const icon=toRef(()=>expansionPanel.isSelected.value?props.collapseIcon:props.expandIcon);useRender(()=>withDirectives(createBaseVNode(`button`,{"class":normalizeClass([`v-expansion-panel-title`,{"v-expansion-panel-title--active":expansionPanel.isSelected.value,"v-expansion-panel-title--focusable":props.focusable,"v-expansion-panel-title--static":props.static,"v-expansion-panel-title--hover":props.hover},backgroundColorClasses.value,props.class]),"style":normalizeStyle([backgroundColorStyles.value,dimensionStyles.value,props.style]),"type":`button`,"tabindex":expansionPanel.disabled.value?-1:void 0,"disabled":expansionPanel.disabled.value,"aria-expanded":expansionPanel.isSelected.value,"onClick":!props.readonly?expansionPanel.toggle:void 0},[createBaseVNode(`span`,{"class":`v-expansion-panel-title__overlay`},null),slots.default?.(slotProps.value),!props.hideActions&&createVNode(VDefaultsProvider,{"defaults":{VIcon:{icon:icon.value}}},{default:()=>[createBaseVNode(`span`,{"class":`v-expansion-panel-title__icon`},[slots.actions?.(slotProps.value)??createVNode(VIcon,null,null)])]})]),[[Ripple,props.ripple]]));return{}}});var makeVExpansionPanelProps=propsFactory({title:String,text:String,bgColor:String,...makeElevationProps(),...makeGroupItemProps(),...makeRoundedProps(),...makeTagProps(),...makeVExpansionPanelTitleProps(),...makeVExpansionPanelTextProps()},`VExpansionPanel`);var VExpansionPanel=genericComponent()({name:`VExpansionPanel`,props:makeVExpansionPanelProps(),emits:{"group:selected":val=>true},setup(props,{slots}){const groupItem=useGroupItem(props,VExpansionPanelSymbol);const{backgroundColorClasses,backgroundColorStyles}=useBackgroundColor(()=>props.bgColor);const{elevationClasses}=useElevation(props);const{roundedClasses,roundedStyles}=useRounded(props);const isDisabled=toRef(()=>groupItem?.disabled.value||props.disabled);const selectedIndices=computed(()=>groupItem.group.items.value.reduce((arr,item,index)=>{if(groupItem.group.selected.value.includes(item.id))arr.push(index);return arr},[]));const isBeforeSelected=computed(()=>{const index=groupItem.group.items.value.findIndex(item=>item.id===groupItem.id);return!groupItem.isSelected.value&&selectedIndices.value.some(selectedIndex=>selectedIndex-index===1)});const isAfterSelected=computed(()=>{const index=groupItem.group.items.value.findIndex(item=>item.id===groupItem.id);return!groupItem.isSelected.value&&selectedIndices.value.some(selectedIndex=>selectedIndex-index===-1)});provide(VExpansionPanelSymbol,groupItem);useRender(()=>{const hasText=!!(slots.text||props.text);const hasTitle=!!(slots.title||props.title);const expansionPanelTitleProps=VExpansionPanelTitle.filterProps(props);const expansionPanelTextProps=VExpansionPanelText.filterProps(props);return createVNode(props.tag,{"class":normalizeClass([`v-expansion-panel`,{"v-expansion-panel--active":groupItem.isSelected.value,"v-expansion-panel--before-active":isBeforeSelected.value,"v-expansion-panel--after-active":isAfterSelected.value,"v-expansion-panel--disabled":isDisabled.value},roundedClasses.value,backgroundColorClasses.value,props.class]),"style":normalizeStyle([backgroundColorStyles.value,roundedStyles.value,props.style])},{default:()=>[createBaseVNode(`div`,{"class":normalizeClass([`v-expansion-panel__shadow`,...elevationClasses.value])},null),createVNode(VDefaultsProvider,{"defaults":{VExpansionPanelTitle:{...expansionPanelTitleProps},VExpansionPanelText:{...expansionPanelTextProps}}},{default:()=>[hasTitle&&createVNode(VExpansionPanelTitle,{"key":`title`},{default:()=>[slots.title?slots.title():props.title]}),hasText&&createVNode(VExpansionPanelText,{"key":`text`},{default:()=>[slots.text?slots.text():props.text]}),slots.default?.()]})]})});return{groupItem}}});var allowedVariants=[`default`,`accordion`,`inset`,`popout`];var makeVExpansionPanelsProps=propsFactory({flat:Boolean,gap:[String,Number],noDivider:Boolean,rounded:[Boolean,Number,String,Array],...makeGroupProps(),...pick(makeVExpansionPanelProps(),[`bgColor`,`collapseIcon`,`color`,`eager`,`elevation`,`expandIcon`,`focusable`,`hideActions`,`hover`,`readonly`,`ripple`,`static`,`tile`]),...makeThemeProps(),...makeComponentProps(),...makeTagProps(),variant:{type:String,default:`default`,validator:v=>allowedVariants.includes(v)}},`VExpansionPanels`);var VExpansionPanels=genericComponent()({name:`VExpansionPanels`,props:makeVExpansionPanelsProps(),emits:{"update:modelValue":val=>true},setup(props,{slots}){const{next,prev}=useGroup(props,VExpansionPanelSymbol);const{themeClasses}=provideTheme(props);const outerRounded=toRef(()=>Array.isArray(props.rounded)?props.rounded[0]:props.rounded);const innerRounded=toRef(()=>Array.isArray(props.rounded)?props.rounded[1]:void 0);const{roundedClasses,roundedStyles}=useRounded(outerRounded);const variantClass=toRef(()=>props.variant&&`v-expansion-panels--variant-${props.variant}`);provideDefaults({VExpansionPanel:{bgColor:toRef(()=>props.bgColor),collapseIcon:toRef(()=>props.collapseIcon),color:toRef(()=>props.color),eager:toRef(()=>props.eager),elevation:toRef(()=>props.elevation),expandIcon:toRef(()=>props.expandIcon),focusable:toRef(()=>props.focusable),hideActions:toRef(()=>props.hideActions),hover:toRef(()=>props.hover),readonly:toRef(()=>props.readonly),ripple:toRef(()=>props.ripple),static:toRef(()=>props.static)}});useRender(()=>createVNode(props.tag,{"class":normalizeClass([`v-expansion-panels`,{"v-expansion-panels--flat":props.flat,"v-expansion-panels--tile":props.tile,"v-expansion-panels--no-divider":props.noDivider||!!props.gap},themeClasses.value,roundedClasses.value,variantClass.value,props.class]),"style":normalizeStyle([roundedStyles.value,{"--v-expansion-panels-inner-radius":convertToUnit(innerRounded.value),gap:props.gap?convertToUnit(props.gap):void 0},props.style])},{default:()=>[slots.default?.({prev,next})]}));return{next,prev}}});export{VExpansionPanelText as i,VExpansionPanel as n,VExpansionPanelTitle as r,VExpansionPanels as t};
@@ -0,0 +1 @@
1
+ import{Cn as toRaw,D as createVNode,En as toValue,Ht as watch,J as inject,Pt as useId,Ut as watchEffect,Yt as withDirectives,Zn as normalizeClass,_ as createBaseVNode,er as normalizeStyle,et as mergeProps,g as computed,gt as provide,it as onBeforeUnmount,o as Fragment,ot as onDeactivated,rt as onBeforeMount,tr as toDisplayString,tt as nextTick,vn as ref,wn as toRef,xn as shallowRef}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{$ as makeThemeProps,A as useElevation,At as getCurrentInstance,B as useTextColor,Bn as isFunction,Ct as defineComponent,Dn as wrapInArray,E as useDensity,Gn as isString,Gt as EventProp,H as useDimension,Hn as isNullOrUndefined,I as makeRoundedProps,L as useRounded,M as useBorder,Mt as makeComponentProps,Nt as propsFactory,P as MaybeTransition,Qn as consoleError,R as useBackgroundColor,S as useVariant,Sn as pick,St as deepEqual,T as makeDensityProps,U as VDefaultsProvider,V as makeDimensionProps,Vn as isNull,W as VExpandTransition,Wn as isObject,Y as makeTagProps,Zt as convertToUnit,_t as useRender,ar as vShow,b as genOverlays,bn as omit,cn as getActiveElement,dt as useProxiedModel,er as deprecate,et as provideTheme,h as VIcon,hn as isPrimitive,i as useLink,j as makeBorderProps,k as makeElevationProps,kt as provideDefaults,ln as getNextElement,mt as IconValue,n as makeRouterProps,on as focusChild,qn as isUndefined,sn as focusableChildren,t as Ripple,un as getPropertyFromItem,ut as useRtl,wt as genericComponent,x as makeVariantProps}from"./ripple-EFNA8EBu.js";import{c as VMenuSymbol,l as forwardRefs,n as makeVOverlayProps,r as useScopeId,t as VOverlay}from"./VOverlay-Cp4rFk6g.js";import{t as createSimpleFunctional}from"./createSimpleFunctional-zlXZooQW.js";import{t as VDialogTransition}from"./dialog-transition-D2vqGksQ.js";import{t as VAvatar}from"./VAvatar-DvRBcmqv.js";import{t as useSsrBoot}from"./ssrBoot-Rlh6kLbD.js";import{t as VDivider}from"./VDivider-Dq25WsKu.js";function throttle(fn,delay,options={leading:true,trailing:true}){let timeoutId=0;let lastExec=0;let throttling=false;let start=0;function clear(){clearTimeout(timeoutId);throttling=false;start=0}const wrap=(...args)=>{clearTimeout(timeoutId);const now=Date.now();if(!start)start=now;const elapsed=now-Math.max(start,lastExec);function invoke(){lastExec=Date.now();timeoutId=setTimeout(clear,delay);fn(...args)}if(!throttling){throttling=true;if(options.leading)invoke()}else if(elapsed>=delay)invoke();else if(options.trailing)timeoutId=setTimeout(invoke,delay-elapsed)};wrap.clear=clear;wrap.immediate=fn;return wrap}var ListKey=Symbol.for(`vuetify:list`);function createList(options={filterable:false}){const parent=inject(ListKey,{filterable:false,hasPrepend:shallowRef(false),updateHasPrepend:()=>null,trackingIndex:shallowRef(-1),navigationStrategy:shallowRef(`focus`),uid:``});const{filterable,trackingIndex=parent.trackingIndex,navigationStrategy=parent.navigationStrategy,uid=parent.uid||useId()}=options;const data={filterable:parent.filterable||filterable,hasPrepend:shallowRef(false),updateHasPrepend:value=>{if(value)data.hasPrepend.value=value},trackingIndex,navigationStrategy,uid};provide(ListKey,data);return parent}function useList(){return inject(ListKey,null)}var independentActiveStrategy=mandatory=>{const strategy={activate:({id,value,activated})=>{id=toRaw(id);if(mandatory&&!value&&activated.size===1&&activated.has(id))return activated;if(value)activated.add(id);else activated.delete(id);return activated},in:(v,children,parents)=>{let set=new Set;if(!isNullOrUndefined(v))for(const id of wrapInArray(v))set=strategy.activate({id,value:true,activated:new Set(set),children,parents});return set},out:v=>{return Array.from(v)}};return strategy};var independentSingleActiveStrategy=mandatory=>{const parentStrategy=independentActiveStrategy(mandatory);return{activate:({activated,id,...rest})=>{id=toRaw(id);const singleSelected=activated.has(id)?new Set([id]):new Set;return parentStrategy.activate({...rest,id,activated:singleSelected})},in:(v,children,parents)=>{let set=new Set;if(!isNullOrUndefined(v)){const arr=wrapInArray(v);if(arr.length)set=parentStrategy.in(arr.slice(0,1),children,parents)}return set},out:(v,children,parents)=>{return parentStrategy.out(v,children,parents)}}};var leafActiveStrategy=mandatory=>{const parentStrategy=independentActiveStrategy(mandatory);return{activate:({id,activated,children,...rest})=>{id=toRaw(id);if(children.has(id))return activated;return parentStrategy.activate({id,activated,children,...rest})},in:parentStrategy.in,out:parentStrategy.out}};var leafSingleActiveStrategy=mandatory=>{const parentStrategy=independentSingleActiveStrategy(mandatory);return{activate:({id,activated,children,...rest})=>{id=toRaw(id);if(children.has(id))return activated;return parentStrategy.activate({id,activated,children,...rest})},in:parentStrategy.in,out:parentStrategy.out}};var singleOpenStrategy={open:({id,value,opened,parents})=>{if(value){const newOpened=new Set;newOpened.add(id);let parent=parents.get(id);while(!isNullOrUndefined(parent)){newOpened.add(parent);parent=parents.get(parent)}return newOpened}else{opened.delete(id);return opened}},select:()=>null};var multipleOpenStrategy={open:({id,value,opened,parents})=>{if(value){let parent=parents.get(id);opened.add(id);while(!isNullOrUndefined(parent)&&parent!==id){opened.add(parent);parent=parents.get(parent)}return opened}else opened.delete(id);return opened},select:()=>null};var listOpenStrategy={open:multipleOpenStrategy.open,select:({id,value,opened,parents})=>{if(!value)return opened;const path=[];let parent=parents.get(id);while(!isNullOrUndefined(parent)){path.push(parent);parent=parents.get(parent)}return new Set(path)}};var independentSelectStrategy=mandatory=>{const strategy={select:({id,value,selected})=>{id=toRaw(id);if(mandatory&&!value){const on=Array.from(selected.entries()).reduce((arr,[key,value])=>{if(value===`on`)arr.push(key);return arr},[]);if(on.length===1&&on[0]===id)return selected}selected.set(id,value?`on`:`off`);return selected},in:(v,children,parents,disabled)=>{const map=new Map;for(const id of v||[])strategy.select({id,value:true,selected:map,children,parents,disabled});return map},out:v=>{const arr=[];for(const[key,value]of v.entries())if(value===`on`)arr.push(key);return arr}};return strategy};var independentSingleSelectStrategy=mandatory=>{const parentStrategy=independentSelectStrategy(mandatory);return{select:({selected,id,...rest})=>{id=toRaw(id);const singleSelected=selected.has(id)?new Map([[id,selected.get(id)]]):new Map;return parentStrategy.select({...rest,id,selected:singleSelected})},in:(v,children,parents,disabled)=>{if(v?.length)return parentStrategy.in(v.slice(0,1),children,parents,disabled);return new Map},out:(v,children,parents)=>{return parentStrategy.out(v,children,parents)}}};var leafSelectStrategy=mandatory=>{const parentStrategy=independentSelectStrategy(mandatory);return{select:({id,selected,children,...rest})=>{id=toRaw(id);if(children.has(id))return selected;return parentStrategy.select({id,selected,children,...rest})},in:parentStrategy.in,out:parentStrategy.out}};var leafSingleSelectStrategy=mandatory=>{const parentStrategy=independentSingleSelectStrategy(mandatory);return{select:({id,selected,children,...rest})=>{id=toRaw(id);if(children.has(id))return selected;return parentStrategy.select({id,selected,children,...rest})},in:parentStrategy.in,out:parentStrategy.out}};var classicSelectStrategy=mandatory=>{const strategy={select:({id,value,selected,children,parents,disabled})=>{id=toRaw(id);const original=new Map(selected);const items=[id];while(items.length){const item=items.shift();if(!disabled.has(item))selected.set(toRaw(item),value?`on`:`off`);if(children.has(item))items.push(...children.get(item))}let parent=toRaw(parents.get(id));while(parent){let everySelected=true;let noneSelected=true;for(const child of children.get(parent)){const cid=toRaw(child);if(disabled.has(cid))continue;if(selected.get(cid)!==`on`)everySelected=false;if(selected.has(cid)&&selected.get(cid)!==`off`)noneSelected=false;if(!everySelected&&!noneSelected)break}selected.set(parent,everySelected?`on`:noneSelected?`off`:`indeterminate`);parent=toRaw(parents.get(parent))}if(mandatory&&!value){if(Array.from(selected.entries()).reduce((arr,[key,value])=>{if(value===`on`)arr.push(key);return arr},[]).length===0)return original}return selected},in:(v,children,parents)=>{let map=new Map;for(const id of v||[])map=strategy.select({id,value:true,selected:map,children,parents,disabled:new Set});return map},out:(v,children)=>{const arr=[];for(const[key,value]of v.entries())if(value===`on`&&!children.has(key))arr.push(key);return arr}};return strategy};var trunkSelectStrategy=mandatory=>{const parentStrategy=classicSelectStrategy(mandatory);return{select:parentStrategy.select,in:parentStrategy.in,out:(v,children,parents)=>{const arr=[];for(const[key,value]of v.entries())if(value===`on`){if(parents.has(key)){const parent=parents.get(key);if(v.get(parent)===`on`)continue}arr.push(key)}return arr}}};var branchSelectStrategy=mandatory=>{const strategy={select:classicSelectStrategy(mandatory).select,in:(v,children,parents,disabled)=>{let map=new Map;for(const id of v||[]){if(children.has(id))continue;map=strategy.select({id,value:true,selected:map,children,parents,disabled})}return map},out:v=>{const arr=[];for(const[key,value]of v.entries())if(value===`on`||value===`indeterminate`)arr.push(key);return arr}};return strategy};var VNestedSymbol=Symbol.for(`vuetify:nested`);var emptyNested={id:shallowRef(),root:{itemsRegistration:ref(`render`),register:()=>null,unregister:()=>null,updateDisabled:()=>null,children:ref(new Map),parents:ref(new Map),disabled:ref(new Set),open:()=>null,openOnSelect:()=>null,activate:()=>null,select:()=>null,activatable:ref(false),scrollToActive:ref(false),selectable:ref(false),opened:ref(new Set),activated:ref(new Set),selected:ref(new Map),selectedValues:ref([]),getPath:()=>[]}};var makeNestedProps=propsFactory({activatable:Boolean,selectable:Boolean,activeStrategy:[String,Function,Object],selectStrategy:[String,Function,Object],openStrategy:[String,Object],opened:null,activated:null,selected:null,mandatory:Boolean,itemsRegistration:{type:String,default:`render`}},`nested`);var useNested=(props,{items,returnObject,scrollToActive,valueComparator})=>{let isUnmounted=false;const children=shallowRef(new Map);const parents=shallowRef(new Map);const disabled=shallowRef(new Set);const opened=useProxiedModel(props,`opened`,props.opened,v=>new Set(Array.isArray(v)?v.map(i=>toRaw(i)):v),v=>[...v.values()]);let batch=null;function currentOpened(){if(!batch)queueMicrotask(()=>{batch=null});return batch??opened.value}function setOpened(value){batch=value;opened.value=value}const activeStrategy=computed(()=>{if(isFunction(props.activeStrategy))return props.activeStrategy(props.mandatory);if(isObject(props.activeStrategy))return props.activeStrategy;switch(props.activeStrategy){case`leaf`:return leafActiveStrategy(props.mandatory);case`single-leaf`:return leafSingleActiveStrategy(props.mandatory);case`independent`:return independentActiveStrategy(props.mandatory);default:return independentSingleActiveStrategy(props.mandatory)}});const selectStrategy=computed(()=>{if(isFunction(props.selectStrategy))return props.selectStrategy(props.mandatory);if(isObject(props.selectStrategy))return props.selectStrategy;switch(props.selectStrategy){case`single-leaf`:return leafSingleSelectStrategy(props.mandatory);case`leaf`:return leafSelectStrategy(props.mandatory);case`independent`:return independentSelectStrategy(props.mandatory);case`single-independent`:return independentSingleSelectStrategy(props.mandatory);case`trunk`:return trunkSelectStrategy(props.mandatory);case`branch`:return branchSelectStrategy(props.mandatory);default:return classicSelectStrategy(props.mandatory)}});const openStrategy=computed(()=>{if(isObject(props.openStrategy))return props.openStrategy;switch(props.openStrategy){case`list`:return listOpenStrategy;case`single`:return singleOpenStrategy;default:return multipleOpenStrategy}});const flatItems=computed(()=>{const flat=[];const stack=[...items.value];while(stack.length){const item=stack.pop();flat.push(item);if(item.children)stack.push(...item.children)}return flat});function resolveValue(value){const comparator=toValue(valueComparator);if(!comparator)return value;const _returnObject=toValue(returnObject);for(const item of flatItems.value){const itemVal=_returnObject?toRaw(item.raw):item.value;if(comparator(value,itemVal))return itemVal}return value}const activated=useProxiedModel(props,`activated`,props.activated,v=>activeStrategy.value.in(Array.isArray(v)?v.map(resolveValue):v,children.value,parents.value),v=>activeStrategy.value.out(v,children.value,parents.value));const selected=useProxiedModel(props,`selected`,props.selected,v=>selectStrategy.value.in(Array.isArray(v)?v.map(resolveValue):v,children.value,parents.value,disabled.value),v=>selectStrategy.value.out(v,children.value,parents.value));onBeforeUnmount(()=>{isUnmounted=true});function getPath(id){const path=[];let parent=toRaw(id);while(!isUndefined(parent)){path.unshift(parent);parent=parents.value.get(parent)}return path}const vm=getCurrentInstance(`nested`);const nodeIds=new Set;const itemsUpdatePropagation=throttle(()=>{nextTick(()=>{children.value=new Map(children.value);parents.value=new Map(parents.value)})},100);watch(()=>[items.value,toValue(returnObject)],()=>{if(props.itemsRegistration===`props`)updateInternalMaps()},{immediate:true});function updateInternalMaps(){const _parents=new Map;const _children=new Map;const _disabled=new Set;const getValue=toValue(returnObject)?item=>toRaw(item.raw):item=>item.value;const stack=[...items.value];let i=0;while(i<stack.length){const item=stack[i++];const itemValue=getValue(item);if(item.children){const childValues=[];for(const child of item.children){const childValue=getValue(child);_parents.set(childValue,itemValue);childValues.push(childValue);stack.push(child)}_children.set(itemValue,childValues)}if(item.props.disabled)_disabled.add(itemValue)}children.value=_children;parents.value=_parents;disabled.value=_disabled}const nested={id:shallowRef(),root:{opened,activatable:toRef(()=>props.activatable),scrollToActive:toRef(()=>toValue(scrollToActive)),selectable:toRef(()=>props.selectable),activated,selected,selectedValues:computed(()=>{const arr=[];for(const[key,value]of selected.value.entries())if(value===`on`)arr.push(key);return arr}),itemsRegistration:toRef(()=>props.itemsRegistration),register:(id,parentId,isDisabled,isGroup)=>{if(nodeIds.has(id)){const path=getPath(id).map(String).join(` -> `);const newPath=getPath(parentId).concat(id).map(String).join(` -> `);consoleError(`Multiple nodes with the same ID\n\t${path}\n\t${newPath}`);return}else nodeIds.add(id);parentId&&id!==parentId&&parents.value.set(id,parentId);isDisabled&&disabled.value.add(id);isGroup&&children.value.set(id,[]);if(!isNullOrUndefined(parentId))children.value.set(parentId,[...children.value.get(parentId)||[],id]);itemsUpdatePropagation()},unregister:id=>{if(isUnmounted)return;nodeIds.delete(id);children.value.delete(id);disabled.value.delete(id);const parent=parents.value.get(id);if(parent){const list=children.value.get(parent)??[];children.value.set(parent,list.filter(child=>child!==id))}parents.value.delete(id);itemsUpdatePropagation()},updateDisabled:(id,isDisabled)=>{if(isDisabled)disabled.value.add(id);else disabled.value.delete(id)},open:(id,value,event)=>{vm.emit(`click:open`,{id,value,path:getPath(id),event});const newOpened=openStrategy.value.open({id,value,opened:new Set(currentOpened()),children:children.value,parents:parents.value,event});newOpened&&setOpened(newOpened)},openOnSelect:(id,value,event)=>{const newOpened=openStrategy.value.select({id,value,selected:new Map(selected.value),opened:new Set(currentOpened()),children:children.value,parents:parents.value,event});newOpened&&setOpened(newOpened)},select:(id,value,event)=>{vm.emit(`click:select`,{id,value,path:getPath(id),event});const newSelected=selectStrategy.value.select({id,value,selected:new Map(selected.value),children:children.value,parents:parents.value,disabled:disabled.value,event});newSelected&&(selected.value=newSelected);nested.root.openOnSelect(id,value,event)},activate:(id,value,event)=>{if(!props.activatable)return nested.root.select(id,true,event);vm.emit(`click:activate`,{id,value,path:getPath(id),event});const newActivated=activeStrategy.value.activate({id,value,activated:new Set(activated.value),children:children.value,parents:parents.value,event});if(newActivated.size!==activated.value.size)activated.value=newActivated;else{for(const value of newActivated)if(!activated.value.has(value)){activated.value=newActivated;return}for(const value of activated.value)if(!newActivated.has(value)){activated.value=newActivated;return}}},children,parents,disabled,getPath}};provide(VNestedSymbol,nested);return nested.root};var useNestedItem=(id,isDisabled,isGroup)=>{const parent=inject(VNestedSymbol,emptyNested);const uidSymbol=Symbol(`nested item`);const computedId=computed(()=>{const idValue=toRaw(toValue(id));return!isUndefined(idValue)?idValue:uidSymbol});const item={...parent,id:computedId,open:(open,e)=>parent.root.open(computedId.value,open,e),openOnSelect:(open,e)=>parent.root.openOnSelect(computedId.value,open,e),isOpen:computed(()=>parent.root.opened.value.has(computedId.value)),parent:computed(()=>parent.root.parents.value.get(computedId.value)),activate:(activated,e)=>parent.root.activate(computedId.value,activated,e),isActivated:computed(()=>parent.root.activated.value.has(computedId.value)),scrollToActive:parent.root.scrollToActive,select:(selected,e)=>parent.root.select(computedId.value,selected,e),isSelected:computed(()=>parent.root.selected.value.get(computedId.value)===`on`),isIndeterminate:computed(()=>parent.root.selected.value.get(computedId.value)===`indeterminate`),isLeaf:computed(()=>!parent.root.children.value.get(computedId.value)),isGroupActivator:parent.isGroupActivator};onBeforeMount(()=>{if(parent.isGroupActivator||parent.root.itemsRegistration.value===`props`)return;nextTick(()=>{parent.root.register(computedId.value,parent.id.value,toValue(isDisabled),isGroup)})});onBeforeUnmount(()=>{if(parent.isGroupActivator||parent.root.itemsRegistration.value===`props`)return;parent.root.unregister(computedId.value)});watch(computedId,(val,oldVal)=>{if(parent.isGroupActivator||parent.root.itemsRegistration.value===`props`)return;parent.root.unregister(oldVal);nextTick(()=>{parent.root.register(val,parent.id.value,toValue(isDisabled),isGroup)})});watch(()=>toValue(isDisabled),val=>{parent.root.updateDisabled(computedId.value,val)});isGroup&&provide(VNestedSymbol,item);return item};var useNestedGroupActivator=()=>{const parent=inject(VNestedSymbol,emptyNested);provide(VNestedSymbol,{...parent,isGroupActivator:true})};var VListGroupActivator=defineComponent({name:`VListGroupActivator`,setup(_,{slots}){useNestedGroupActivator();return()=>slots.default?.()}});var makeVListGroupProps=propsFactory({activeColor:String,baseColor:String,color:String,collapseIcon:{type:IconValue,default:`$collapse`},disabled:Boolean,expandIcon:{type:IconValue,default:`$expand`},rawId:[String,Number],prependIcon:IconValue,appendIcon:IconValue,fluid:Boolean,subgroup:Boolean,title:String,value:null,...makeComponentProps(),...makeTagProps()},`VListGroup`);var VListGroup=genericComponent()({name:`VListGroup`,props:makeVListGroupProps(),setup(props,{slots}){const{isOpen,open,id:_id}=useNestedItem(()=>props.value,()=>props.disabled,true);const id=computed(()=>`v-list-group--id-${String(props.rawId??_id.value)}`);const list=useList();const{isBooted}=useSsrBoot();const parent=inject(VNestedSymbol);const renderWhenClosed=toRef(()=>parent?.root?.itemsRegistration.value===`render`);function onClick(e){if([`INPUT`,`TEXTAREA`].includes(e.target?.tagName))return;open(!isOpen.value,e)}const activatorProps=computed(()=>({onClick,class:`v-list-group__header`,id:id.value}));const toggleIcon=computed(()=>isOpen.value?props.collapseIcon:props.expandIcon);const activatorDefaults=computed(()=>({VListItem:{activeColor:props.activeColor,baseColor:props.baseColor,color:props.color,prependIcon:props.prependIcon||props.subgroup&&toggleIcon.value,appendIcon:props.appendIcon||!props.subgroup&&toggleIcon.value,title:props.title,value:props.value}}));useRender(()=>createVNode(props.tag,{"class":normalizeClass([`v-list-group`,{"v-list-group--prepend":list?.hasPrepend.value,"v-list-group--fluid":props.fluid,"v-list-group--subgroup":props.subgroup,"v-list-group--open":isOpen.value},props.class]),"style":normalizeStyle(props.style)},{default:()=>[slots.activator&&createVNode(VDefaultsProvider,{"defaults":activatorDefaults.value},{default:()=>[createVNode(VListGroupActivator,null,{default:()=>[slots.activator({props:activatorProps.value,isOpen:isOpen.value})]})]}),createVNode(MaybeTransition,{"transition":{component:VExpandTransition},"disabled":!isBooted.value},{default:()=>[renderWhenClosed.value?withDirectives(createBaseVNode(`div`,{"class":`v-list-group__items`,"role":`group`,"aria-labelledby":id.value,"inert":!isOpen.value},[slots.default?.()]),[[vShow,isOpen.value]]):isOpen.value&&createBaseVNode(`div`,{"class":`v-list-group__items`,"role":`group`,"aria-labelledby":id.value},[slots.default?.()])]})]}));return{isOpen}}});var makeVListItemSubtitleProps=propsFactory({opacity:[Number,String],...makeComponentProps(),...makeTagProps()},`VListItemSubtitle`);var VListItemSubtitle=genericComponent()({name:`VListItemSubtitle`,props:makeVListItemSubtitleProps(),setup(props,{slots}){useRender(()=>createVNode(props.tag,{"class":normalizeClass([`v-list-item-subtitle`,props.class]),"style":normalizeStyle([{"--v-list-item-subtitle-opacity":props.opacity},props.style])},slots));return{}}});var VListItemTitle=createSimpleFunctional(`v-list-item-title`);var makeVListItemProps=propsFactory({active:{type:Boolean,default:void 0},activeClass:String,activeColor:String,appendAvatar:String,appendIcon:IconValue,baseColor:String,disabled:Boolean,lines:[Boolean,String],link:{type:Boolean,default:void 0},nav:Boolean,prependAvatar:String,prependIcon:IconValue,ripple:{type:[Boolean,Object],default:true},slim:Boolean,prependGap:[Number,String],subtitle:{type:[String,Number,Boolean],default:void 0},title:{type:[String,Number,Boolean],default:void 0},value:null,index:Number,tabindex:[Number,String],onClick:EventProp(),onClickOnce:EventProp(),...makeBorderProps(),...makeComponentProps(),...makeDensityProps(),...makeDimensionProps(),...makeElevationProps(),...makeRoundedProps(),...makeRouterProps(),...makeTagProps(),...makeThemeProps(),...makeVariantProps({variant:`text`})},`VListItem`);var VListItem=genericComponent()({name:`VListItem`,directives:{vRipple:Ripple},props:makeVListItemProps(),emits:{click:e=>true},setup(props,{attrs,slots,emit}){const link=useLink(props,attrs);const rootEl=ref();const id=computed(()=>props.value===void 0?link.href.value:props.value);const{activate,isActivated,select,isOpen,isSelected,isIndeterminate,isGroupActivator,root,parent,openOnSelect,scrollToActive,id:uid}=useNestedItem(id,()=>props.disabled,false);const list=useList();const isActive=computed(()=>props.active!==false&&(props.active||link.isActive?.value||(root.activatable.value?isActivated.value:isSelected.value)));const isLink=toRef(()=>props.link!==false&&link.isLink.value);const isSelectable=computed(()=>!!list&&(root.selectable.value||root.activatable.value||props.value!=null));const isClickable=computed(()=>!props.disabled&&props.link!==false&&(props.link||link.isClickable.value||isSelectable.value));const isTracked=computed(()=>list&&list.navigationStrategy.value===`track`&&props.index!==void 0&&list.trackingIndex.value===props.index);const role=computed(()=>list?isLink.value?`link`:isSelectable.value?`option`:`listitem`:void 0);const ariaSelected=computed(()=>{if(!isSelectable.value)return void 0;return root.activatable.value?isActivated.value:root.selectable.value?isSelected.value:isActive.value});const roundedProps=toRef(()=>props.rounded||props.nav);const color=toRef(()=>props.color??props.activeColor);const variantProps=toRef(()=>({color:isActive.value?color.value??props.baseColor:props.baseColor,variant:props.variant}));watch(()=>link.isActive?.value,val=>{if(!val)return;handleActiveLink()});watch(isActivated,val=>{if(!val||!scrollToActive)return;rootEl.value?.scrollIntoView({block:`nearest`,behavior:`instant`})});watch(isTracked,val=>{if(!val)return;rootEl.value?.scrollIntoView({block:`nearest`,behavior:`instant`})});onBeforeMount(()=>{if(link.isActive?.value)nextTick(()=>handleActiveLink())});function handleActiveLink(){if(parent.value!=null)root.open(parent.value,true);openOnSelect(true)}const{themeClasses}=provideTheme(props);const{borderClasses}=useBorder(props);const{colorClasses,colorStyles,variantClasses}=useVariant(variantProps);const{densityClasses}=useDensity(props);const{dimensionStyles}=useDimension(props);const{elevationClasses}=useElevation(props);const{roundedClasses,roundedStyles}=useRounded(roundedProps);const lineClasses=toRef(()=>props.lines?`v-list-item--${props.lines}-line`:void 0);const rippleOptions=toRef(()=>props.ripple!==void 0&&!!props.ripple&&list?.filterable?{keys:[`Enter`]}:props.ripple);const slotProps=computed(()=>({isActive:isActive.value,select,isOpen:isOpen.value,isSelected:isSelected.value,isIndeterminate:isIndeterminate.value,isDisabled:props.disabled}));function onClick(e){emit(`click`,e);if([`INPUT`,`TEXTAREA`].includes(e.target?.tagName))return;if(!isClickable.value)return;link.navigate.value?.(e);if(isGroupActivator)return;if(root.activatable.value)activate(!isActivated.value,e);else if(root.selectable.value)select(!isSelected.value,e);else if(props.value!=null&&!isLink.value)select(!isSelected.value,e)}function onKeyDown(e){const target=e.target;if([`INPUT`,`TEXTAREA`].includes(target.tagName))return;if(e.currentTarget?.getAttribute(`role`)===`treeitem`)return;if(e.key===`Enter`||e.key===` `&&!list?.filterable){e.preventDefault();e.stopPropagation();e.target.dispatchEvent(new MouseEvent(`click`,e))}}useRender(()=>{const Tag=isLink.value?`a`:props.tag;const hasTitle=slots.title||props.title!=null;const hasSubtitle=slots.subtitle||props.subtitle!=null;const hasAppend=!!(!!(props.appendAvatar||props.appendIcon)||slots.append);const hasPrepend=!!(!!(props.prependAvatar||props.prependIcon)||slots.prepend);list?.updateHasPrepend(hasPrepend);if(props.activeColor)deprecate(`active-color`,[`color`,`base-color`]);return withDirectives(createVNode(Tag,mergeProps(link.linkProps,{"ref":rootEl,"id":props.index!==void 0&&list?`v-list-item-${list.uid}-${props.index}`:void 0,"class":[`v-list-item`,{"v-list-item--active":isActive.value,"v-list-item--disabled":props.disabled,"v-list-item--link":isClickable.value,"v-list-item--nav":props.nav,"v-list-item--prepend":!hasPrepend&&list?.hasPrepend.value,"v-list-item--slim":props.slim,"v-list-item--focus-visible":isTracked.value,[`${props.activeClass}`]:props.activeClass&&isActive.value},themeClasses.value,borderClasses.value,colorClasses.value,densityClasses.value,elevationClasses.value,lineClasses.value,roundedClasses.value,variantClasses.value,props.class],"style":[{"--v-list-prepend-gap":convertToUnit(props.prependGap)},colorStyles.value,dimensionStyles.value,roundedStyles.value,props.style],"tabindex":props.tabindex??(isClickable.value?list?-2:0:void 0),"aria-selected":ariaSelected.value,"role":role.value,"onClick":(isClickable.value||props.onClick||props.onClickOnce)&&onClick,"onKeydown":isClickable.value&&!isLink.value&&onKeyDown}),{default:()=>[genOverlays(isClickable.value||isActive.value,`v-list-item`),hasPrepend&&createBaseVNode(`div`,{"key":`prepend`,"class":`v-list-item__prepend`},[!slots.prepend?createBaseVNode(Fragment,null,[props.prependAvatar&&createVNode(VAvatar,{"key":`prepend-avatar`,"density":props.density,"image":props.prependAvatar},null),props.prependIcon&&createVNode(VIcon,{"key":`prepend-icon`,"density":props.density,"icon":props.prependIcon},null)]):createVNode(VDefaultsProvider,{"key":`prepend-defaults`,"defaults":{VAvatar:{density:props.density,image:props.prependAvatar},VIcon:{density:props.density,icon:props.prependIcon},VListItemAction:{start:true},VCheckboxBtn:{density:props.density}}},{default:()=>[slots.prepend?.(slotProps.value)]}),createBaseVNode(`div`,{"class":`v-list-item__spacer`},null)]),createBaseVNode(`div`,{"class":`v-list-item__content`,"data-no-activator":``},[hasTitle&&createVNode(VListItemTitle,{"key":`title`},{default:()=>[slots.title?.({title:props.title})??toDisplayString(props.title)]}),hasSubtitle&&createVNode(VListItemSubtitle,{"key":`subtitle`},{default:()=>[slots.subtitle?.({subtitle:props.subtitle})??toDisplayString(props.subtitle)]}),slots.default?.(slotProps.value)]),hasAppend&&createBaseVNode(`div`,{"key":`append`,"class":`v-list-item__append`},[!slots.append?createBaseVNode(Fragment,null,[props.appendIcon&&createVNode(VIcon,{"key":`append-icon`,"density":props.density,"icon":props.appendIcon},null),props.appendAvatar&&createVNode(VAvatar,{"key":`append-avatar`,"density":props.density,"image":props.appendAvatar},null)]):createVNode(VDefaultsProvider,{"key":`append-defaults`,"defaults":{VAvatar:{density:props.density,image:props.appendAvatar},VIcon:{density:props.density,icon:props.appendIcon},VListItemAction:{end:true},VCheckboxBtn:{density:props.density}}},{default:()=>[slots.append?.(slotProps.value)]}),createBaseVNode(`div`,{"class":`v-list-item__spacer`},null)])]}),[[Ripple,isClickable.value&&rippleOptions.value]])});return{activate,isActivated,isGroupActivator,isSelected,list,select,root,id:uid,link}}});var makeVListSubheaderProps=propsFactory({color:String,inset:Boolean,sticky:Boolean,title:String,...makeComponentProps(),...makeTagProps()},`VListSubheader`);var VListSubheader=genericComponent()({name:`VListSubheader`,props:makeVListSubheaderProps(),setup(props,{slots}){const{textColorClasses,textColorStyles}=useTextColor(()=>props.color);useRender(()=>{const hasText=!!(slots.default||props.title);return createVNode(props.tag,{"class":normalizeClass([`v-list-subheader`,{"v-list-subheader--inset":props.inset,"v-list-subheader--sticky":props.sticky},textColorClasses.value,props.class]),"style":normalizeStyle([{textColorStyles},props.style])},{default:()=>[hasText&&createBaseVNode(`div`,{"class":`v-list-subheader__text`},[slots.default?.()??props.title])]})});return{}}});var makeVListChildrenProps=propsFactory({items:Array,returnObject:Boolean},`VListChildren`);var VListChildren=genericComponent()({name:`VListChildren`,props:makeVListChildrenProps(),setup(props,{slots}){createList();return()=>slots.default?.()??props.items?.map(({children,props:itemProps,type,raw:item},index)=>{if(type===`divider`)return slots.divider?.({props:itemProps})??createVNode(VDivider,itemProps,null);if(type===`subheader`)return slots.subheader?.({props:itemProps})??createVNode(VListSubheader,itemProps,null);const slotsWithItem={subtitle:slots.subtitle?slotProps=>slots.subtitle?.({...slotProps,item}):void 0,prepend:slots.prepend?slotProps=>slots.prepend?.({...slotProps,item}):void 0,append:slots.append?slotProps=>slots.append?.({...slotProps,item}):void 0,title:slots.title?slotProps=>slots.title?.({...slotProps,item}):void 0};const listGroupProps=VListGroup.filterProps(itemProps);return children?createVNode(VListGroup,mergeProps(listGroupProps,{"value":props.returnObject?item:itemProps?.value,"rawId":itemProps?.value}),{activator:({props:activatorProps})=>{const listItemProps=mergeProps(itemProps,activatorProps,{value:props.returnObject?item:itemProps.value});return slots.header?slots.header({props:listItemProps}):createVNode(VListItem,mergeProps(listItemProps,{"index":index}),slotsWithItem)},default:()=>createVNode(VListChildren,{"items":children,"returnObject":props.returnObject},slots)}):slots.item?slots.item({props:{...itemProps,index}}):createVNode(VListItem,mergeProps(itemProps,{"index":index,"value":props.returnObject?item:itemProps.value}),slotsWithItem)})}});var makeItemsProps=propsFactory({items:{type:Array,default:()=>[]},itemTitle:{type:[String,Array,Function],default:`title`},itemValue:{type:[String,Array,Function],default:`value`},itemChildren:{type:[Boolean,String,Array,Function],default:`children`},itemProps:{type:[Boolean,String,Array,Function],default:`props`},itemType:{type:[Boolean,String,Array,Function],default:`type`},returnObject:Boolean,valueComparator:Function},`list-items`);var itemTypes$1=new Set([`item`,`divider`,`subheader`]);function transformItem$1(props,item){const title=getPropertyFromItem(item,props.itemTitle,item);const value=getPropertyFromItem(item,props.itemValue,title);const children=getPropertyFromItem(item,props.itemChildren);const itemProps=props.itemProps===true?isObject(item)?`children`in item?omit(item,[`children`]):item:void 0:getPropertyFromItem(item,props.itemProps);let type=getPropertyFromItem(item,props.itemType,`item`);if(!itemTypes$1.has(type))type=`item`;const _props={title,value,...itemProps};return{type,title:String(_props.title??``),value:_props.value,props:_props,children:type===`item`&&Array.isArray(children)?transformItems$1(props,children):void 0,raw:item}}transformItem$1.neededProps=[`itemTitle`,`itemValue`,`itemChildren`,`itemProps`,`itemType`];function transformItems$1(props,items){const _props=pick(props,transformItem$1.neededProps);const array=[];for(const item of items)array.push(transformItem$1(_props,item));return array}function useItems(props){const items=computed(()=>transformItems$1(props,props.items));const hasNullItem=computed(()=>items.value.some(item=>isNull(item.value)));const itemsMap=shallowRef(new Map);const keylessItems=shallowRef([]);watchEffect(()=>{const _items=items.value;const map=new Map;const keyless=[];for(let i=0;i<_items.length;i++){const item=_items[i];if(isPrimitive(item.value)||isNull(item.value)){let values=map.get(item.value);if(!values){values=[];map.set(item.value,values)}values.push(item)}else keyless.push(item)}itemsMap.value=map;keylessItems.value=keyless});function transformIn(value){const _items=itemsMap.value;const _allItems=items.value;const _keylessItems=keylessItems.value;const _hasNullItem=hasNullItem.value;const _returnObject=props.returnObject;const hasValueComparator=!!props.valueComparator;const valueComparator=props.valueComparator||deepEqual;const _props=pick(props,transformItem$1.neededProps);const returnValue=[];main:for(const v of value){if(!_hasNullItem&&isNull(v))continue;if(_returnObject&&isString(v)){returnValue.push(transformItem$1(_props,v));continue}const fastItems=_items.get(v);if(hasValueComparator||!fastItems){for(const item of hasValueComparator?_allItems:_keylessItems)if(valueComparator(v,item.value)){returnValue.push(item);continue main}returnValue.push(transformItem$1(_props,v));continue}returnValue.push(...fastItems)}return returnValue}function transformOut(value){return props.returnObject?value.map(({raw})=>raw):value.map(({value})=>value)}return{items,transformIn,transformOut}}var itemTypes=new Set([`item`,`divider`,`subheader`]);function transformItem(props,item){const title=isPrimitive(item)?item:getPropertyFromItem(item,props.itemTitle);const value=isPrimitive(item)?item:getPropertyFromItem(item,props.itemValue,void 0);const children=getPropertyFromItem(item,props.itemChildren);const itemProps=props.itemProps===true?omit(item,[`children`]):getPropertyFromItem(item,props.itemProps);let type=getPropertyFromItem(item,props.itemType,`item`);if(!itemTypes.has(type))type=`item`;const _props={title,value,...itemProps};return{type,title:_props.title,value:_props.value,props:_props,children:type===`item`&&children?transformItems(props,children):void 0,raw:item}}function transformItems(props,items){const array=[];for(const item of items)array.push(transformItem(props,item));return array}function useListItems(props){return{items:computed(()=>transformItems(props,props.items))}}var makeVListProps=propsFactory({baseColor:String,activeColor:String,activeClass:String,bgColor:String,disabled:Boolean,filterable:Boolean,expandIcon:IconValue,collapseIcon:IconValue,lines:{type:[Boolean,String],default:`one`},slim:Boolean,prependGap:[Number,String],indent:[Number,String],nav:Boolean,navigationStrategy:{type:String,default:`focus`},navigationIndex:Number,"onClick:open":EventProp(),"onClick:select":EventProp(),"onUpdate:opened":EventProp(),...makeNestedProps({selectStrategy:`single-leaf`,openStrategy:`list`}),...makeBorderProps(),...makeComponentProps(),...makeDensityProps(),...makeDimensionProps(),...makeElevationProps(),...makeItemsProps(),...makeRoundedProps(),...makeTagProps(),...makeThemeProps(),...makeVariantProps({variant:`text`})},`VList`);var VList=genericComponent()({name:`VList`,props:makeVListProps(),emits:{"update:selected":value=>true,"update:activated":value=>true,"update:opened":value=>true,"update:navigationIndex":value=>true,"click:open":value=>true,"click:activate":value=>true,"click:select":value=>true},setup(props,{attrs,slots,emit}){const{items}=useListItems(props);const{themeClasses}=provideTheme(props);const{backgroundColorClasses,backgroundColorStyles}=useBackgroundColor(()=>props.bgColor);const{borderClasses}=useBorder(props);const{densityClasses}=useDensity(props);const{dimensionStyles}=useDimension(props);const{elevationClasses}=useElevation(props);const{roundedClasses,roundedStyles}=useRounded(props);const{children,open,parents,select,getPath}=useNested(props,{items,returnObject:toRef(()=>props.returnObject),scrollToActive:toRef(()=>props.navigationStrategy===`track`),valueComparator:toRef(()=>props.valueComparator)});const lineClasses=toRef(()=>props.lines?`v-list--${props.lines}-line`:void 0);const activeColor=toRef(()=>props.activeColor);const baseColor=toRef(()=>props.baseColor);const color=toRef(()=>props.color);const isSelectable=toRef(()=>props.selectable||props.activatable);const navigationIndex=useProxiedModel(props,`navigationIndex`,-1,v=>v??-1);const uid=useId();createList({filterable:props.filterable,trackingIndex:navigationIndex,navigationStrategy:toRef(()=>props.navigationStrategy),uid});watch(items,()=>{if(props.navigationStrategy===`track`)navigationIndex.value=-1});provideDefaults({VListGroup:{activeColor,baseColor,color,expandIcon:toRef(()=>props.expandIcon),collapseIcon:toRef(()=>props.collapseIcon)},VListItem:{activeClass:toRef(()=>props.activeClass),activeColor,baseColor,color,density:toRef(()=>props.density),disabled:toRef(()=>props.disabled),lines:toRef(()=>props.lines),nav:toRef(()=>props.nav),slim:toRef(()=>props.slim),variant:toRef(()=>props.variant),tabindex:toRef(()=>props.navigationStrategy===`track`?-1:void 0)}});const isFocused=shallowRef(false);const contentRef=ref();function onFocusin(e){isFocused.value=true}function onFocusout(e){isFocused.value=false}function onFocus(e){if(props.navigationStrategy===`track`){if(!~navigationIndex.value)navigationIndex.value=getNextIndex(`first`)}else if(!isFocused.value&&!(e.relatedTarget&&contentRef.value?.contains(e.relatedTarget)))focus()}function onBlur(){if(props.navigationStrategy===`track`)navigationIndex.value=-1}function getNavigationDirection(key){switch(key){case`ArrowDown`:return`next`;case`ArrowUp`:return`prev`;case`Home`:return`first`;case`End`:return`last`;default:return null}}function getNextIndex(direction){const itemCount=items.value.length;if(itemCount===0)return-1;let nextIndex;if(direction===`first`)nextIndex=0;else if(direction===`last`)nextIndex=itemCount-1;else{nextIndex=navigationIndex.value+(direction===`next`?1:-1);if(nextIndex<0)nextIndex=itemCount-1;if(nextIndex>=itemCount)nextIndex=0}const startIndex=nextIndex;let attempts=0;while(attempts<itemCount){const item=items.value[nextIndex];if(item&&item.type!==`divider`&&item.type!==`subheader`)return nextIndex;nextIndex+=direction===`next`||direction===`first`?1:-1;if(nextIndex<0)nextIndex=itemCount-1;if(nextIndex>=itemCount)nextIndex=0;if(nextIndex===startIndex)return-1;attempts++}return-1}function onKeydown(e){const target=e.target;if(!contentRef.value||target.tagName===`INPUT`&&[`Home`,`End`].includes(e.key)||target.tagName===`TEXTAREA`)return;const direction=getNavigationDirection(e.key);if(direction!==null){e.preventDefault();if(props.navigationStrategy===`track`){const nextIndex=getNextIndex(direction);if(nextIndex!==-1)navigationIndex.value=nextIndex}else{focus(direction,{preventScroll:true});const focused=getActiveElement();if(focused&&contentRef.value?.contains(focused))focused.scrollIntoView({block:`nearest`})}}}function onMousedown(e){isFocused.value=true}function focus(location,options){if(contentRef.value)return focusChild(contentRef.value,location,options)}useRender(()=>{const indent=props.indent??(props.prependGap?Number(props.prependGap)+24:void 0);const ariaMultiselectable=isSelectable.value?attrs.ariaMultiselectable??!String(props.selectStrategy).startsWith(`single-`):void 0;return createVNode(props.tag,{"ref":contentRef,"class":normalizeClass([`v-list`,{"v-list--disabled":props.disabled,"v-list--nav":props.nav,"v-list--slim":props.slim},themeClasses.value,backgroundColorClasses.value,borderClasses.value,densityClasses.value,elevationClasses.value,lineClasses.value,roundedClasses.value,props.class]),"style":normalizeStyle([{"--v-list-indent":convertToUnit(indent),"--v-list-group-prepend":indent?`0px`:void 0,"--v-list-prepend-gap":convertToUnit(props.prependGap)},backgroundColorStyles.value,dimensionStyles.value,roundedStyles.value,props.style]),"tabindex":props.disabled||isFocused.value?-1:0,"role":isSelectable.value?`listbox`:`list`,"aria-activedescendant":props.navigationStrategy===`track`&&navigationIndex.value>=0?`v-list-item-${uid}-${navigationIndex.value}`:void 0,"aria-multiselectable":ariaMultiselectable,"onFocusin":onFocusin,"onFocusout":onFocusout,"onFocus":onFocus,"onBlur":onBlur,"onKeydown":onKeydown,"onMousedown":onMousedown},{default:()=>[createVNode(VListChildren,{"items":items.value,"returnObject":props.returnObject},slots)]})});return{open,select,focus,children,parents,getPath,navigationIndex}}});var makeVMenuProps=propsFactory({_disableKeys:Boolean,id:String,submenu:Boolean,openOnArrow:{type:Boolean,default:true},...omit(makeVOverlayProps({captureFocus:true,closeDelay:250,closeOnContentClick:true,locationStrategy:`connected`,location:void 0,openDelay:300,scrim:false,scrollStrategy:`reposition`,transition:{component:VDialogTransition}}),[`absolute`])},`VMenu`);var VMenu=genericComponent()({name:`VMenu`,props:makeVMenuProps(),emits:{"update:modelValue":value=>true},setup(props,{slots}){const isActive=useProxiedModel(props,`modelValue`);const{scopeId}=useScopeId();const{isRtl}=useRtl();const uid=useId();const id=toRef(()=>props.id||`v-menu-${uid}`);const overlay=ref();const parent=inject(VMenuSymbol,null);const openChildren=shallowRef(new Map);provide(VMenuSymbol,{register(childUid,close){for(const[otherUid,closeOther]of[...openChildren.value])if(otherUid!==childUid)closeOther();openChildren.value.set(childUid,close)},unregister(childUid){openChildren.value.delete(childUid)},closeParents(e){const clickedOutside=!e||overlay.value?.contentEl?._clickOutside?.lastMousedownWasOutside;setTimeout(()=>{if(!openChildren.value.size&&!props.persistent&&clickedOutside){isActive.value=false;parent?.closeParents(e)}},40)},rootOpenedByHover:props.submenu&&parent?parent.rootOpenedByHover:()=>overlay.value?.openedByHover??false});onBeforeUnmount(()=>parent?.unregister(uid));onDeactivated(()=>isActive.value=false);watch(isActive,val=>{if(val)parent?.register(uid,()=>{isActive.value=false});else{parent?.unregister(uid);for(const[,closeChild]of[...openChildren.value])closeChild()}},{immediate:true});function onKeydown(e){if(props.disabled)return;if(e.key===`Tab`){if(props.submenu&&!props.retainFocus){e.preventDefault();isActive.value=false;overlay.value?.activatorEl?.focus();return}if(!getNextElement(focusableChildren(overlay.value?.contentEl,false),e.shiftKey?`prev`:`next`,el=>el.tabIndex>=0)&&!props.retainFocus)isActive.value=false}else if(props.submenu&&e.key===(isRtl.value?`ArrowRight`:`ArrowLeft`)){isActive.value=false;overlay.value?.activatorEl?.focus()}}function setInitialFocus(e){const el=overlay.value?.contentEl;if(!el||!isActive.value)return;if(![`ArrowUp`,`ArrowDown`].includes(e.key))return;const focusable=focusableChildren(el);const focusTargetRole=(e.key===`ArrowUp`?focusable.at(-1):focusable[0])?.getAttribute(`role`)??``;const selectedOption=[`option`,`listbox`].includes(focusTargetRole)&&focusable.find(child=>child.getAttribute(`role`)===`option`&&child.getAttribute(`aria-selected`)===`true`&&child.offsetParent!=null);if(selectedOption)selectedOption.focus();else focusChild(el,e.key===`ArrowDown`?`next`:`prev`)}function onActivatorKeydown(e){if(props.disabled||props._disableKeys||e.isComposing)return;const el=overlay.value?.contentEl;if(el&&isActive.value){if(e.key===`ArrowDown`||e.key===`ArrowUp`){if(!props.openOnArrow)return;e.preventDefault();e.stopImmediatePropagation();focusChild(el,e.key===`ArrowDown`?`next`:`prev`)}else if(props.submenu){if(e.key===(isRtl.value?`ArrowRight`:`ArrowLeft`)){isActive.value=false;overlay.value?.activatorEl?.focus()}else if(e.key===(isRtl.value?`ArrowLeft`:`ArrowRight`)){e.preventDefault();focusChild(el,`first`)}}}else if(props.submenu?e.key===(isRtl.value?`ArrowLeft`:`ArrowRight`):props.openOnArrow&&[`ArrowDown`,`ArrowUp`].includes(e.key)){isActive.value=true;e.preventDefault();focusContentWhenReady(e)}}function focusContentWhenReady(e,attempt=1){if(!isActive.value)return;const el=overlay.value?.contentEl;if(el?.contains(getActiveElement()))return;if(el&&focusableChildren(el).length){if([`ArrowUp`,`ArrowDown`].includes(e.key))setInitialFocus(e);else onActivatorKeydown(e);if(el.contains(getActiveElement()))return}if(attempt<=10)requestAnimationFrame(()=>focusContentWhenReady(e,attempt+1))}const activatorProps=computed(()=>mergeProps({"aria-haspopup":`menu`,"aria-expanded":String(isActive.value),"aria-controls":id.value,"aria-owns":id.value,onKeydown:onActivatorKeydown},props.activatorProps));useRender(()=>{const overlayProps=VOverlay.filterProps(props);return createVNode(VOverlay,mergeProps({"ref":overlay,"id":id.value,"class":[`v-menu`,props.class],"style":props.style},overlayProps,{"modelValue":isActive.value,"onUpdate:modelValue":$event=>isActive.value=$event,"absolute":true,"_submenu":props.submenu,"activatorProps":activatorProps.value,"location":props.location??(props.submenu?`end`:`bottom`),"onKeydown":onKeydown},scopeId),{activator:slots.activator,default:(...args)=>createVNode(VDefaultsProvider,{"root":`VMenu`},{default:()=>[slots.default?.(...args)]})})});return forwardRefs({id,ΨopenChildren:openChildren},overlay)}});export{useItems as a,VListItemTitle as c,transformItem$1 as i,VListItemSubtitle as l,VList as n,VListSubheader as o,makeItemsProps as r,VListItem as s,VMenu as t};