@loicngr/kobo 1.1.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/mcp-server/kobo-tasks-handlers.js +147 -0
  2. package/dist/mcp-server/kobo-tasks-server.js +236 -29
  3. package/dist/server/db/migrations.js +61 -10
  4. package/dist/server/db/schema.js +1 -0
  5. package/dist/server/index.js +10 -4
  6. package/dist/server/routes/images.js +57 -0
  7. package/dist/server/routes/workspaces.js +80 -19
  8. package/dist/server/services/agent-manager.js +91 -5
  9. package/dist/server/services/image-service.js +73 -0
  10. package/dist/server/services/pr-watcher-service.js +61 -0
  11. package/dist/server/services/settings-service.js +75 -10
  12. package/dist/server/services/workspace-service.js +13 -0
  13. package/dist/server/utils/git-ops.js +39 -0
  14. package/package.json +3 -1
  15. package/src/client/dist/spa/assets/{ActivityFeed-CufaRX1M.js → ActivityFeed-Bie-lcn7.js} +7 -7
  16. package/src/client/dist/spa/assets/ActivityFeed-D88GOO2z.css +1 -0
  17. package/src/client/dist/spa/assets/CreatePage-OC-fnNGP.js +2 -0
  18. package/src/client/dist/spa/assets/MainLayout-91cUoVYa.css +1 -0
  19. package/src/client/dist/spa/assets/MainLayout-BIQNJixM.js +1 -0
  20. package/src/client/dist/spa/assets/QBadge-DbE3eSf1.js +1 -0
  21. package/src/client/dist/spa/assets/QDialog-Cd_4PvgW.js +1 -0
  22. package/src/client/dist/spa/assets/QExpansionItem-pMQDDRMv.js +1 -0
  23. package/src/client/dist/spa/assets/QPage-lhV4XbI2.js +1 -0
  24. package/src/client/dist/spa/assets/{QSpinnerDots-DcaNq8uL.js → QSpinnerDots-ByNZaBWw.js} +1 -1
  25. package/src/client/dist/spa/assets/QTooltip-6GSFtFKP.js +1 -0
  26. package/src/client/dist/spa/assets/SettingsPage-BPH70mno.css +1 -0
  27. package/src/client/dist/spa/assets/SettingsPage-s2WJBreM.js +1 -0
  28. package/src/client/dist/spa/assets/WorkspacePage-Dhkuuhf8.css +1 -0
  29. package/src/client/dist/spa/assets/WorkspacePage-XT26aCJE.js +2 -0
  30. package/src/client/dist/spa/assets/_plugin-vue_export-helper-B6FaNy4R.js +1 -0
  31. package/src/client/dist/spa/assets/index-BoQWbZtE.js +5 -0
  32. package/src/client/dist/spa/assets/{nodes-DeIen-kp.js → nodes-CXdiSdC2.js} +1 -1
  33. package/src/client/dist/spa/assets/use-checkbox-Z9pfihkw.js +1 -0
  34. package/src/client/dist/spa/assets/use-quasar-CtCe3LQU.js +1 -0
  35. package/src/client/dist/spa/index.html +2 -2
  36. package/src/mcp-server/README.md +179 -0
  37. package/src/mcp-server/kobo-tasks-handlers.ts +238 -0
  38. package/src/mcp-server/kobo-tasks-server.ts +263 -29
  39. package/src/client/dist/spa/assets/ActivityFeed-DBNn62g_.css +0 -1
  40. package/src/client/dist/spa/assets/CreatePage-Cyl-TRHT.js +0 -2
  41. package/src/client/dist/spa/assets/MainLayout-D_vxGAPn.css +0 -1
  42. package/src/client/dist/spa/assets/MainLayout-Dzy0I8lB.js +0 -1
  43. package/src/client/dist/spa/assets/QBadge-Cb92Ia8-.js +0 -1
  44. package/src/client/dist/spa/assets/QDialog-CMC1Ph52.js +0 -1
  45. package/src/client/dist/spa/assets/QExpansionItem-DDjku8zz.js +0 -1
  46. package/src/client/dist/spa/assets/QPage-DaNo_vcd.js +0 -1
  47. package/src/client/dist/spa/assets/QTabPanels-BKHAAJ2p.js +0 -1
  48. package/src/client/dist/spa/assets/QTooltip-637ruGFc.js +0 -1
  49. package/src/client/dist/spa/assets/SettingsPage-B9VYIQs-.css +0 -1
  50. package/src/client/dist/spa/assets/SettingsPage-Blw7Qk7m.js +0 -1
  51. package/src/client/dist/spa/assets/WorkspacePage-DlnwomOE.js +0 -2
  52. package/src/client/dist/spa/assets/WorkspacePage-HtatyhXN.css +0 -1
  53. package/src/client/dist/spa/assets/_plugin-vue_export-helper-CHpmshS7.js +0 -1
  54. package/src/client/dist/spa/assets/index-DJkEmbBM.js +0 -5
  55. package/src/client/dist/spa/assets/use-quasar-Dq-Vjx_2.js +0 -1
@@ -3,10 +3,21 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js'
3
3
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
4
4
  import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js'
5
5
  import Database from 'better-sqlite3'
6
- import { listTasksHandler, markTaskDoneHandler } from './kobo-tasks-handlers.js'
6
+ import {
7
+ createTaskHandler,
8
+ deleteTaskHandler,
9
+ getDevServerStatusHandler,
10
+ getSettingsHandler,
11
+ getWorkspaceInfoHandler,
12
+ listTasksHandler,
13
+ listWorkspaceImagesHandler,
14
+ markTaskDoneHandler,
15
+ updateTaskHandler,
16
+ } from './kobo-tasks-handlers.js'
7
17
 
8
18
  const workspaceId = process.env.KOBO_WORKSPACE_ID
9
19
  const dbPath = process.env.KOBO_DB_PATH
20
+ const settingsPath = process.env.KOBO_SETTINGS_PATH
10
21
  const backendUrl = process.env.KOBO_BACKEND_URL ?? 'http://localhost:3000'
11
22
 
12
23
  if (!workspaceId) {
@@ -41,6 +52,31 @@ async function notifyBackend(taskId: string): Promise<void> {
41
52
  }
42
53
  }
43
54
 
55
+ async function notifyTasksUpdated(): Promise<void> {
56
+ try {
57
+ const url = `${backendUrl}/api/workspaces/${workspaceId}/tasks/notify-updated`
58
+ await fetch(url, { method: 'POST' })
59
+ } catch (err) {
60
+ console.error('[kobo-tasks-server] notify-updated failed:', err)
61
+ }
62
+ }
63
+
64
+ async function backendRequest(method: 'GET' | 'POST' | 'PATCH', pathname: string, body?: unknown): Promise<unknown> {
65
+ const url = `${backendUrl}${pathname}`
66
+ const init: RequestInit = { method }
67
+ if (body !== undefined) {
68
+ init.headers = { 'Content-Type': 'application/json' }
69
+ init.body = JSON.stringify(body)
70
+ }
71
+ const res = await fetch(url, init)
72
+ if (!res.ok) {
73
+ const errText = await res.text().catch(() => '')
74
+ throw new Error(`Backend ${method} ${pathname} returned ${res.status}: ${errText}`)
75
+ }
76
+ const text = await res.text()
77
+ return text ? JSON.parse(text) : null
78
+ }
79
+
44
80
  const server = new Server({ name: 'kobo-tasks', version: '1.0.0' }, { capabilities: { tools: {} } })
45
81
 
46
82
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
@@ -48,7 +84,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
48
84
  {
49
85
  name: 'list_tasks',
50
86
  description:
51
- 'List all tasks and acceptance criteria for the current workspace with their IDs and current status. Call this first to discover task IDs before calling mark_task_done.',
87
+ 'List all tasks and acceptance criteria for the current workspace with their IDs and current status. Call this first to discover task IDs before calling mark_task_done / update_task / delete_task.',
52
88
  inputSchema: {
53
89
  type: 'object',
54
90
  properties: {},
@@ -70,45 +106,243 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
70
106
  required: ['task_id'],
71
107
  },
72
108
  },
109
+ {
110
+ name: 'create_task',
111
+ description:
112
+ 'Create a new task or acceptance criterion for the current workspace. Appended at the end of the list.',
113
+ inputSchema: {
114
+ type: 'object',
115
+ properties: {
116
+ title: { type: 'string', description: 'Task title' },
117
+ is_acceptance_criterion: {
118
+ type: 'boolean',
119
+ description: 'Whether this is an acceptance criterion (default: false)',
120
+ },
121
+ },
122
+ required: ['title'],
123
+ },
124
+ },
125
+ {
126
+ name: 'update_task',
127
+ description:
128
+ 'Update an existing task — change title, status, or is_acceptance_criterion flag. At least one field is required.',
129
+ inputSchema: {
130
+ type: 'object',
131
+ properties: {
132
+ task_id: { type: 'string', description: 'The ID of the task to update' },
133
+ title: { type: 'string', description: 'New title (optional)' },
134
+ status: {
135
+ type: 'string',
136
+ enum: ['pending', 'in_progress', 'done'],
137
+ description: 'New status (optional)',
138
+ },
139
+ is_acceptance_criterion: {
140
+ type: 'boolean',
141
+ description: 'Toggle acceptance criterion flag (optional)',
142
+ },
143
+ },
144
+ required: ['task_id'],
145
+ },
146
+ },
147
+ {
148
+ name: 'delete_task',
149
+ description: 'Delete a task from the current workspace permanently.',
150
+ inputSchema: {
151
+ type: 'object',
152
+ properties: {
153
+ task_id: { type: 'string', description: 'The ID of the task to delete' },
154
+ },
155
+ required: ['task_id'],
156
+ },
157
+ },
158
+ {
159
+ name: 'get_settings',
160
+ description:
161
+ 'Read Kōbō settings (global + projects). Optionally filter to a specific project by path to get both global and that project override.',
162
+ inputSchema: {
163
+ type: 'object',
164
+ properties: {
165
+ project_path: {
166
+ type: 'string',
167
+ description: 'Optional project path to resolve a specific project entry',
168
+ },
169
+ },
170
+ required: [],
171
+ },
172
+ },
173
+ {
174
+ name: 'get_dev_server_status',
175
+ description: 'Check whether the dev server is running for the current workspace.',
176
+ inputSchema: {
177
+ type: 'object',
178
+ properties: {},
179
+ required: [],
180
+ },
181
+ },
182
+ {
183
+ name: 'get_workspace_info',
184
+ description:
185
+ 'Get all metadata about the current workspace (name, project path, branches, model, notion URL, worktree path, status).',
186
+ inputSchema: { type: 'object', properties: {}, required: [] },
187
+ },
188
+ {
189
+ name: 'start_dev_server',
190
+ description: 'Start the dev server configured for the current workspace.',
191
+ inputSchema: { type: 'object', properties: {}, required: [] },
192
+ },
193
+ {
194
+ name: 'stop_dev_server',
195
+ description: 'Stop the dev server of the current workspace.',
196
+ inputSchema: { type: 'object', properties: {}, required: [] },
197
+ },
198
+ {
199
+ name: 'get_dev_server_logs',
200
+ description: 'Fetch the last N lines of the dev server logs for the current workspace.',
201
+ inputSchema: {
202
+ type: 'object',
203
+ properties: {
204
+ tail: {
205
+ type: 'number',
206
+ description: 'Number of lines to fetch from the end (default: 200)',
207
+ },
208
+ },
209
+ required: [],
210
+ },
211
+ },
212
+ {
213
+ name: 'list_workspace_images',
214
+ description:
215
+ 'List all images uploaded to the current workspace (from .ai/images/index.json). Returns uid, originalName, relativePath and createdAt for each image.',
216
+ inputSchema: { type: 'object', properties: {}, required: [] },
217
+ },
218
+ {
219
+ name: 'get_git_info',
220
+ description:
221
+ 'Get git stats for the current workspace (commit count, files changed, insertions, deletions, PR URL if any).',
222
+ inputSchema: { type: 'object', properties: {}, required: [] },
223
+ },
224
+ {
225
+ name: 'set_workspace_status',
226
+ description:
227
+ 'Update the current workspace status. Valid values: idle, completed, error. Transitions are validated by the backend.',
228
+ inputSchema: {
229
+ type: 'object',
230
+ properties: {
231
+ status: {
232
+ type: 'string',
233
+ description: 'New status (e.g. idle, completed)',
234
+ },
235
+ },
236
+ required: ['status'],
237
+ },
238
+ },
73
239
  ],
74
240
  }))
75
241
 
242
+ function ok(data: unknown) {
243
+ return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] }
244
+ }
245
+
246
+ function fail(message: string) {
247
+ return { content: [{ type: 'text', text: `Error: ${message}` }], isError: true }
248
+ }
249
+
76
250
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
77
251
  const { name, arguments: args } = request.params
252
+ const a = (args ?? {}) as Record<string, unknown>
78
253
 
79
- if (name === 'list_tasks') {
80
- const tasks = listTasksHandler(db, workspaceId!)
81
- return {
82
- content: [{ type: 'text', text: JSON.stringify(tasks, null, 2) }],
254
+ try {
255
+ if (name === 'list_tasks') {
256
+ return ok(listTasksHandler(db, workspaceId!))
83
257
  }
84
- }
85
258
 
86
- if (name === 'mark_task_done') {
87
- const taskId = (args as { task_id?: string })?.task_id
88
- if (!taskId) {
89
- return {
90
- content: [{ type: 'text', text: 'Error: task_id parameter is required' }],
91
- isError: true,
92
- }
93
- }
94
- try {
259
+ if (name === 'mark_task_done') {
260
+ const taskId = a.task_id as string | undefined
261
+ if (!taskId) return fail('task_id parameter is required')
95
262
  const result = markTaskDoneHandler(db, workspaceId!, taskId)
96
263
  void notifyBackend(taskId)
97
- return {
98
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
99
- }
100
- } catch (err) {
101
- const message = err instanceof Error ? err.message : String(err)
102
- return {
103
- content: [{ type: 'text', text: `Error: ${message}` }],
104
- isError: true,
105
- }
264
+ return ok(result)
265
+ }
266
+
267
+ if (name === 'create_task') {
268
+ const title = a.title as string | undefined
269
+ if (!title) return fail('title parameter is required')
270
+ const task = createTaskHandler(db, workspaceId!, {
271
+ title,
272
+ is_acceptance_criterion: a.is_acceptance_criterion as boolean | undefined,
273
+ })
274
+ void notifyTasksUpdated()
275
+ return ok(task)
276
+ }
277
+
278
+ if (name === 'update_task') {
279
+ const taskId = a.task_id as string | undefined
280
+ if (!taskId) return fail('task_id parameter is required')
281
+ const task = updateTaskHandler(db, workspaceId!, taskId, {
282
+ title: a.title as string | undefined,
283
+ status: a.status as string | undefined,
284
+ is_acceptance_criterion: a.is_acceptance_criterion as boolean | undefined,
285
+ })
286
+ void notifyTasksUpdated()
287
+ return ok(task)
288
+ }
289
+
290
+ if (name === 'delete_task') {
291
+ const taskId = a.task_id as string | undefined
292
+ if (!taskId) return fail('task_id parameter is required')
293
+ const result = deleteTaskHandler(db, workspaceId!, taskId)
294
+ void notifyTasksUpdated()
295
+ return ok(result)
296
+ }
297
+
298
+ if (name === 'get_settings') {
299
+ return ok(getSettingsHandler(settingsPath, a.project_path as string | undefined))
300
+ }
301
+
302
+ if (name === 'get_dev_server_status') {
303
+ return ok(getDevServerStatusHandler(db, workspaceId!))
106
304
  }
107
- }
108
305
 
109
- return {
110
- content: [{ type: 'text', text: `Unknown tool: ${name}` }],
111
- isError: true,
306
+ if (name === 'get_workspace_info') {
307
+ return ok(getWorkspaceInfoHandler(db, workspaceId!))
308
+ }
309
+
310
+ if (name === 'start_dev_server') {
311
+ const result = await backendRequest('POST', `/api/dev-server/${workspaceId}/start`)
312
+ return ok(result)
313
+ }
314
+
315
+ if (name === 'stop_dev_server') {
316
+ const result = await backendRequest('POST', `/api/dev-server/${workspaceId}/stop`)
317
+ return ok(result)
318
+ }
319
+
320
+ if (name === 'get_dev_server_logs') {
321
+ const tail = (a.tail as number | undefined) ?? 200
322
+ const result = await backendRequest('GET', `/api/dev-server/${workspaceId}/logs?tail=${tail}`)
323
+ return ok(result)
324
+ }
325
+
326
+ if (name === 'list_workspace_images') {
327
+ const info = getWorkspaceInfoHandler(db, workspaceId!)
328
+ return ok(listWorkspaceImagesHandler(info.worktreePath))
329
+ }
330
+
331
+ if (name === 'get_git_info') {
332
+ const result = await backendRequest('GET', `/api/workspaces/${workspaceId}/git-stats`)
333
+ return ok(result)
334
+ }
335
+
336
+ if (name === 'set_workspace_status') {
337
+ const status = a.status as string | undefined
338
+ if (!status) return fail('status parameter is required')
339
+ const result = await backendRequest('PATCH', `/api/workspaces/${workspaceId}`, { status })
340
+ return ok(result)
341
+ }
342
+
343
+ return fail(`Unknown tool: ${name}`)
344
+ } catch (err) {
345
+ return fail(err instanceof Error ? err.message : String(err))
112
346
  }
113
347
  })
114
348
 
@@ -1 +0,0 @@
1
- .activity-feed[data-v-eb9ffc77]{flex-direction:column;gap:4px;display:flex;position:relative;overflow:hidden auto}.af-item[data-v-eb9ffc77]{word-break:break-word;overflow-wrap:break-word;flex-shrink:0;padding:6px 10px;overflow-x:hidden}.af-time[data-v-eb9ffc77]{color:#555;flex-shrink:0;font-size:10px}.af-tool-label[data-v-eb9ffc77]{font-family:Roboto Mono,monospace;font-size:11px}.af-tool-args[data-v-eb9ffc77]{background-color:#ffffff0a;padding:6px 8px;overflow-x:auto}.af-args-pre[data-v-eb9ffc77]{color:#888;white-space:pre-wrap;word-break:break-word;margin:0;font-family:Roboto Mono,monospace;font-size:10px}.af-item--text[data-v-eb9ffc77]{background-color:#1a2a3a;border-left:3px solid #3b82f6}.af-item--user[data-v-eb9ffc77]{background-color:#1a2a1a;border-left:3px solid #22c55e}.af-item--prompt[data-v-eb9ffc77]{background-color:#1a1a2e;border-left:3px solid #6c63ff}.af-text-content[data-v-eb9ffc77]{color:#d0d0d0;word-break:break-word;line-height:1.5}.af-markdown[data-v-eb9ffc77] p{margin:0 0 8px}.af-markdown[data-v-eb9ffc77] p:last-child{margin-bottom:0}.af-markdown[data-v-eb9ffc77] h1,.af-markdown[data-v-eb9ffc77] h2,.af-markdown[data-v-eb9ffc77] h3{color:#e0e0e0;margin:12px 0 6px}.af-markdown[data-v-eb9ffc77] h1{font-size:16px}.af-markdown[data-v-eb9ffc77] h2{font-size:14px}.af-markdown[data-v-eb9ffc77] h3{font-size:13px}.af-markdown[data-v-eb9ffc77] ul,.af-markdown[data-v-eb9ffc77] ol{margin:4px 0;padding-left:20px}.af-markdown[data-v-eb9ffc77] li{margin:2px 0}.af-markdown[data-v-eb9ffc77] code{background-color:#ffffff14;border-radius:3px;padding:1px 4px;font-family:Roboto Mono,monospace;font-size:11px}.af-markdown[data-v-eb9ffc77] pre{background-color:#0000004d;border-radius:4px;margin:6px 0;padding:8px;overflow-x:auto}.af-markdown[data-v-eb9ffc77] pre code{background:0 0;padding:0}.af-markdown[data-v-eb9ffc77] strong{color:#fff}.af-markdown[data-v-eb9ffc77] a{color:#6c63ff}.af-markdown[data-v-eb9ffc77] blockquote{color:#aaa;border-left:3px solid #6c63ff;margin:6px 0;padding:4px 12px}.af-markdown[data-v-eb9ffc77] table{border-collapse:collapse;margin:6px 0;font-size:11px}.af-markdown[data-v-eb9ffc77] table th,.af-markdown[data-v-eb9ffc77] table td{border:1px solid #2a2a4a;padding:4px 8px}.af-markdown[data-v-eb9ffc77] table th{background-color:#ffffff0d}.af-item--system[data-v-eb9ffc77]{background-color:#2a2a1a;border-left:3px solid #f59e0b}.af-system-content[data-v-eb9ffc77]{white-space:pre-wrap}.af-item--error[data-v-eb9ffc77]{background-color:#2a1a1a;border-left:3px solid #ef4444}.af-item--raw[data-v-eb9ffc77]{white-space:pre-wrap;font-family:Roboto Mono,monospace}.scroll-to-user-btn[data-v-eb9ffc77]{opacity:.7;align-self:flex-end;margin-right:8px;transition:opacity .15s;position:sticky;bottom:8px}.scroll-to-user-btn[data-v-eb9ffc77]:hover{opacity:1}
@@ -1,2 +0,0 @@
1
- import{$ as e,Bt as t,Ft as n,It as r,Nt as i,Ot as ee,Wt as te,_t as ne,at as a,dt as o,ft as s,ht as c,it as l,jt as u,lt as d,mt as f,pt as p,qt as m,r as h,rt as g,ut as _,xt as re,y as v}from"./nodes-DeIen-kp.js";import{i as ie,o as ae,r as oe}from"./index-DJkEmbBM.js";import{A as y,t as b}from"./_plugin-vue_export-helper-CHpmshS7.js";import{_ as x,o as S}from"./QDialog-CMC1Ph52.js";import{n as se,t as ce}from"./use-quasar-Dq-Vjx_2.js";import{a as C,i as w,n as T,r as E,t as le}from"./QPage-DaNo_vcd.js";import{t as D}from"./QExpansionItem-DDjku8zz.js";var ue={class:`create-inner`},de={class:`create-card rounded-borders`},fe={class:`card-top-bar row items-center q-px-md q-py-xs`},pe={class:`model-badge cursor-default row items-center q-gutter-xs`},me={key:0,class:`notion-url-wrap`},he={key:0,class:`notion-error text-caption q-px-md q-pb-xs text-red-5`},ge={key:1,class:`notion-valid text-caption q-px-md q-pb-xs text-green-4`},_e={class:`card-name-wrap`},ve={class:`card-textarea-wrap`},ye={class:`q-pa-sm manual-section-body`},be={class:`row items-center q-gutter-sm q-mb-sm`},xe={class:`col text-caption text-grey-4`},Se={class:`q-pa-sm manual-section-body`},Ce={class:`row items-center q-gutter-sm q-mb-sm`},we={class:`col text-caption text-grey-4`},Te={class:`card-bottom-bar row items-center wrap q-px-sm q-py-xs q-gutter-xs`},Ee={class:`bottom-select-label row items-center no-wrap`},De={class:`bottom-select-label row items-center no-wrap`},Oe={class:`bottom-select-label row items-center no-wrap`},ke={class:`create-hint text-center text-body2 q-mt-md text-grey-8`},O=b(ne({__name:`CreatePage`,setup(ne){let b=oe(),O=ce(),k=ae(),A=se(),j=t([]),M=t(``),N=t(``),P=t(``),F=t(!1),I=t(`auto`),L=t(``),R=t(null),z=t([]),B=t(!1),V=t(!1),H=[{label:`Auto`,value:`auto`,description:`Claude picks the optimal model`},{label:`Opus 4.6`,value:`claude-opus-4-6`,description:`Most powerful`},{label:`Sonnet 4.6`,value:`claude-sonnet-4-6`,description:`Balanced`},{label:`Haiku 4.5`,value:`claude-haiku-4-5-20251001`,description:`Fastest`}],U=d(()=>P.value.trim().startsWith(`https://www.notion.so/`)),W=t([]),G=t([]),K=t(``),q=t(``),J=d(()=>!F.value||!U.value);function Y(){let e=K.value.trim();e&&(W.value.push(e),K.value=``)}function Ae(e){W.value.splice(e,1)}function X(){let e=q.value.trim();e&&(G.value.push(e),q.value=``)}function je(e){G.value.splice(e,1)}function Me(){F.value=!F.value,F.value||(P.value=``)}async function Ne(e){if(!e.trim()){z.value=[],R.value=null;return}B.value=!0;try{let t=await fetch(`/api/git/branches?path=${encodeURIComponent(e.trim())}`);if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();z.value=n.local??n.branches??[],z.value.length>0&&!R.value&&(R.value=z.value[0]??null)}catch{z.value=[],R.value=null}finally{B.value=!1}}function Pe(e){let t=A.getProjectByPath(e);t&&(t.defaultSourceBranch&&(R.value=t.defaultSourceBranch),t.defaultModel?I.value=t.defaultModel:A.global.defaultModel&&(I.value=A.global.defaultModel))}let Z=null;n(L,e=>{Z&&clearTimeout(Z),Z=setTimeout(()=>{R.value=null,Ne(e),Pe(e)},500)});function Fe(e,t){t(()=>{j.value=A.projectPaths.filter(t=>t.toLowerCase().includes(e.toLowerCase()))})}ee(()=>{A.fetchSettings()});function Ie(e){return e.toLowerCase().replace(/[^a-z0-9\s-]/g,``).trim().replace(/\s+/g,`-`).replace(/-+/g,`-`).substring(0,50)}function Q(){return M.value.trim()?M.value.trim().substring(0,80):!F.value&&N.value.trim()&&(N.value.trim().split(`
2
- `)[0]??``).substring(0,80)||`workspace`}function Le(e){let t=(e.split(`/`).pop()??``).split(`-`);return t.length>1&&/^[0-9a-f]{12,}$/i.test(t[t.length-1])&&t.pop(),t.join(`-`).toLowerCase().substring(0,50)||`task-${Date.now()}`}function Re(){return F.value&&!U.value?`Please paste a valid Notion URL (https://www.notion.so/...).`:!F.value&&!N.value.trim()?`Please describe the task.`:!F.value&&(!Q()||Q()===`workspace`)&&!M.value.trim()&&!N.value.trim()?`Please provide a workspace name.`:L.value.trim()?R.value?null:`Please select a branch.`:`Please enter the project path.`}async function $(){let e=Re();if(e){O.notify({type:`negative`,message:e,position:`top`});return}V.value=!0;try{let e=Q(),t;t=e===`workspace`?F.value&&U.value?Le(P.value.trim()):`task-${Date.now()}`:Ie(e);let n=`feature/${t}`,r={name:e,projectPath:L.value.trim(),sourceBranch:R.value,workingBranch:n,model:I.value,...F.value&&U.value?{notionUrl:P.value.trim()}:{},...J.value&&W.value.length>0?{tasks:W.value}:{},...J.value&&G.value.length>0?{acceptanceCriteria:G.value}:{}},i=await k.createWorkspace(r);ie().subscribe(i.id),k.selectWorkspace(i.id),b.push({name:`workspace`,params:{id:i.id}})}catch{O.notify({type:`negative`,message:`Error creating workspace.`,position:`top`})}finally{V.value=!1}}return(t,n)=>(u(),o(le,{class:`create-page flex flex-center column`},{default:r(()=>[_(`div`,ue,[n[12]||=_(`div`,{class:`create-title text-center text-weight-bold q-mb-lg text-grey-3`},` What would you like to work on? `,-1),_(`div`,de,[_(`div`,fe,[_(`span`,pe,[c(v,{name:`auto_awesome`,size:`14px`,color:`indigo-4`}),n[9]||=_(`span`,{class:`text-indigo-3 text-weight-medium text-caption`},`Claude Code`,-1)]),c(y),c(h,{flat:``,dense:``,"no-caps":``,size:`sm`,color:F.value?`green-4`:`grey-5`,class:`notion-toggle-btn text-caption rounded-borders`,onClick:Me},{default:r(()=>[c(v,{name:`description`,size:`14px`,class:`q-mr-xs`}),f(` `+m(F.value?`Notion enabled`:`Import from Notion`),1)]),_:1},8,[`color`])]),c(x,{color:`grey-9`}),c(e,{name:`slide`},{default:r(()=>[F.value?(u(),p(`div`,me,[c(S,{modelValue:P.value,"onUpdate:modelValue":n[0]||=e=>P.value=e,borderless:``,dense:``,placeholder:`https://www.notion.so/workspace/Page-title-abc123...`,class:`notion-url-input`,"input-class":`notion-url-input-inner`},{prepend:r(()=>[c(v,{name:`link`,size:`16px`,color:U.value?`green-4`:`grey-6`},null,8,[`color`])]),_:1},8,[`modelValue`]),P.value.trim()&&!U.value?(u(),p(`div`,he,` URL must start with https://www.notion.so/ `)):s(``,!0),U.value?(u(),p(`div`,ge,` Subtasks and acceptance criteria will be extracted automatically. `)):s(``,!0)])):s(``,!0)]),_:1}),F.value?(u(),o(x,{key:0,color:`grey-9`})):s(``,!0),_(`div`,_e,[c(S,{modelValue:M.value,"onUpdate:modelValue":n[1]||=e=>M.value=e,borderless:``,dense:``,placeholder:F.value&&U.value?`Workspace name (defaults to Notion page title)`:`Workspace name...`,class:`name-input`,"input-class":`name-input-inner`},null,8,[`modelValue`,`placeholder`])]),c(x,{color:`grey-9`}),_(`div`,ve,[c(S,{modelValue:N.value,"onUpdate:modelValue":n[2]||=e=>N.value=e,type:`textarea`,borderless:``,autogrow:``,rows:3,placeholder:F.value?`Additional instructions (optional)...`:`Describe the task...`,class:`create-textarea`,"input-class":`create-textarea-input`,onKeydown:[g(l($,[`ctrl`]),[`enter`]),g(l($,[`meta`]),[`enter`])]},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),c(x,{color:`grey-9`}),J.value?(u(),p(a,{key:1},[n[10]||=_(`div`,{class:`manual-hint q-px-md q-py-sm text-caption text-grey-6`},` No Notion ticket? Add your tasks and acceptance criteria manually — they'll be sent to the Claude agent as context. `,-1),c(D,{dark:``,dense:``,label:`Tasks (${W.value.length})`,"header-class":`text-grey-4 manual-expansion-header`,class:`manual-expansion q-mx-sm`},{default:r(()=>[_(`div`,ye,[_(`div`,be,[c(S,{modelValue:K.value,"onUpdate:modelValue":n[3]||=e=>K.value=e,dark:``,dense:``,borderless:``,placeholder:`Add a task...`,class:`col manual-input`,"input-class":`manual-input-inner`,onKeydown:g(l(Y,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),c(h,{flat:``,dense:``,round:``,icon:`add`,color:`indigo-4`,disable:!K.value.trim(),onClick:Y},null,8,[`disable`])]),(u(!0),p(a,null,i(W.value,(e,t)=>(u(),p(`div`,{key:`task-${t}`,class:`row items-center q-py-xs manual-item`},[_(`span`,xe,m(e),1),c(h,{flat:``,dense:``,round:``,icon:`close`,size:`xs`,color:`grey-6`,onClick:e=>Ae(t)},null,8,[`onClick`])]))),128))])]),_:1},8,[`label`]),c(D,{dark:``,dense:``,label:`Acceptance Criteria (${G.value.length})`,"header-class":`text-grey-4 manual-expansion-header`,class:`manual-expansion q-mx-sm q-mb-sm`},{default:r(()=>[_(`div`,Se,[_(`div`,Ce,[c(S,{modelValue:q.value,"onUpdate:modelValue":n[4]||=e=>q.value=e,dark:``,dense:``,borderless:``,placeholder:`Add a criterion...`,class:`col manual-input`,"input-class":`manual-input-inner`,onKeydown:g(l(X,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),c(h,{flat:``,dense:``,round:``,icon:`add`,color:`indigo-4`,disable:!q.value.trim(),onClick:X},null,8,[`disable`])]),(u(!0),p(a,null,i(G.value,(e,t)=>(u(),p(`div`,{key:`crit-${t}`,class:`row items-center q-py-xs manual-item`},[_(`span`,we,m(e),1),c(h,{flat:``,dense:``,round:``,icon:`close`,size:`xs`,color:`grey-6`,onClick:e=>je(t)},null,8,[`onClick`])]))),128))])]),_:1},8,[`label`]),c(x,{color:`grey-9`})],64)):s(``,!0),_(`div`,Te,[c(T,{modelValue:I.value,"onUpdate:modelValue":n[5]||=e=>I.value=e,options:H,dense:``,borderless:``,class:`bottom-select rounded-borders model-select`,"hide-dropdown-icon":``,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`},{selected:r(()=>[_(`span`,Ee,[f(m(H.find(e=>e.value===I.value)?.label??I.value)+` `,1),c(v,{name:`expand_more`,size:`12px`,color:`grey-5`})])]),option:r(({opt:e,itemProps:t})=>[c(C,re(t,{class:`model-option`}),{default:r(()=>[c(w,null,{default:r(()=>[c(E,{class:`text-white`},{default:r(()=>[f(m(e.label),1)]),_:2},1024),c(E,{caption:``,class:`text-grey-5`},{default:r(()=>[f(m(e.description),1)]),_:2},1024)]),_:2},1024)]),_:2},1040)]),_:1},8,[`modelValue`]),c(y),c(T,{modelValue:L.value,"onUpdate:modelValue":n[6]||=e=>L.value=e,options:j.value,dense:``,borderless:``,"use-input":``,"hide-selected":``,"fill-input":``,"input-debounce":`0`,"new-value-mode":`add`,class:`bottom-select rounded-borders repo-select`,"hide-dropdown-icon":``,behavior:te(A).projectPaths.length>0?`menu`:`dialog`,onFilter:Fe,onInputValue:n[7]||=e=>{L.value=e}},{prepend:r(()=>[c(v,{name:`attach_file`,size:`12px`,color:`grey-5`})]),selected:r(()=>[_(`span`,De,m(L.value||`/path/to/project`),1)]),"no-option":r(()=>[c(C,null,{default:r(()=>[c(w,{class:`text-grey-6 text-caption`},{default:r(()=>[...n[11]||=[f(` Enter the project path `,-1)]]),_:1})]),_:1})]),_:1},8,[`modelValue`,`options`,`behavior`]),c(T,{modelValue:R.value,"onUpdate:modelValue":n[8]||=e=>R.value=e,options:z.value,dense:``,borderless:``,class:`bottom-select rounded-borders branch-select`,"hide-dropdown-icon":``,loading:B.value,disable:!L.value.trim()||B.value},{selected:r(()=>[_(`span`,Oe,[c(v,{name:`call_split`,size:`12px`,color:`grey-5`,class:`q-mr-xs`}),f(` `+m(R.value??`Branch`)+` `,1),c(v,{name:`expand_more`,size:`12px`,color:`grey-5`})])]),"no-option":r(()=>[c(C,null,{default:r(()=>[c(w,{class:`text-grey-6 text-caption`},{default:r(()=>[f(m(L.value.trim()?`No branches found`:`Enter a project path`),1)]),_:1})]),_:1})]),_:1},8,[`modelValue`,`options`,`loading`,`disable`]),c(h,{label:`Create`,"no-caps":``,unelevated:``,class:`create-btn text-weight-bold rounded-borders`,loading:V.value,onClick:$},null,8,[`loading`])])]),_(`div`,ke,m(F.value?`Subtasks and acceptance criteria will be extracted from the Notion page.`:`Click "Import from Notion" to automatically extract subtasks from a ticket.`),1)])]),_:1}))}}),[[`__scopeId`,`data-v-7d9d29f5`]]);export{O as default};
@@ -1 +0,0 @@
1
- .acceptance-item[data-v-b9e5e638]{padding:2px 0}.acceptance-item[data-v-b9e5e638]:hover{background-color:#ffffff08}.acceptance-item:hover .criterion-delete-btn[data-v-b9e5e638]{opacity:1}.criterion-delete-btn[data-v-b9e5e638]{opacity:0;transition:opacity .15s}.acceptance-title[data-v-b9e5e638]{word-break:break-word;cursor:text;line-height:1.4}.text-strike[data-v-b9e5e638]{opacity:.7;text-decoration:line-through}.criterion-input[data-v-b9e5e638] .q-field__control{height:22px;min-height:22px;padding:0}.criterion-input[data-v-b9e5e638] input{color:#e0e0e0;font-size:12px}.criterion-input[data-v-b9e5e638] input::placeholder{color:#555}.criterion-add-row[data-v-b9e5e638]{padding:2px 0}.log-content[data-v-c1509b16]{max-height:60vh;overflow-y:auto}.log-text[data-v-c1509b16]{color:#ccc;white-space:pre-wrap;word-break:break-all;background:#0d0d1a;margin:0;font-family:JetBrains Mono,Fira Code,monospace;font-size:11px}.dd-panel[data-v-8c173889]{min-height:48px}.git-btn[data-v-03bca960]{padding:2px 10px;font-size:11px}.notion-link[data-v-5f29da43]{text-decoration:none;display:inline-flex}.notion-link[data-v-5f29da43]:hover{text-decoration:underline}.task-item[data-v-5f29da43]{padding:2px 0}.task-item[data-v-5f29da43]:hover{background-color:#ffffff08}.task-item:hover .task-delete-btn[data-v-5f29da43]{opacity:1}.task-delete-btn[data-v-5f29da43]{opacity:0;transition:opacity .15s}.task-title[data-v-5f29da43]{word-break:break-word;cursor:text;line-height:1.4}.text-strike[data-v-5f29da43]{opacity:.7;text-decoration:line-through}.task-input[data-v-5f29da43] .q-field__control{height:22px;min-height:22px;padding:0}.task-input[data-v-5f29da43] input{color:#e0e0e0;font-size:12px}.task-input[data-v-5f29da43] input::placeholder{color:#555}.task-add-row[data-v-5f29da43]{padding:2px 0}.workspace-list[data-v-9d4c8886]{background-color:#16162a;overflow-x:hidden}.wl-search[data-v-9d4c8886]{background-color:#224;padding:0 8px}.wl-search[data-v-9d4c8886] .q-field__control{height:32px}.wl-search[data-v-9d4c8886] input{color:#ccc;font-size:12px}.wl-group-header[data-v-9d4c8886]:hover{background-color:#ffffff08}.wl-item[data-v-9d4c8886]{background-color:#224;transition:background-color .15s;position:relative}.wl-item[data-v-9d4c8886]:hover{background-color:#2a2a4a}.wl-item--selected[data-v-9d4c8886]{background-color:#2a2a4a;outline:1px solid #6c63ff66}.wl-item-action[data-v-9d4c8886]{opacity:0;transition:opacity .15s;position:absolute;top:50%;transform:translateY(-50%)}.wl-item-delete[data-v-9d4c8886]{right:4px}.wl-item-archive[data-v-9d4c8886],.wl-item-unarchive[data-v-9d4c8886]{right:28px}.wl-item:hover .wl-item-action[data-v-9d4c8886]{opacity:1}.wl-item--archived[data-v-9d4c8886]{opacity:.6;background-color:#1a1a30}.wl-item--archived[data-v-9d4c8886]:hover{opacity:.85}.wl-item--archived.wl-item--selected[data-v-9d4c8886]{opacity:1}.dd-dot[data-v-9d4c8886]{border-radius:50%;flex-shrink:0;width:6px;height:6px}.dd-dot--running[data-v-9d4c8886]{background-color:#22c55e;box-shadow:0 0 4px #22c55e80}.left-sidebar[data-v-57ce5ee5],.right-sidebar[data-v-57ce5ee5]{background-color:#16162a!important;border-color:#2a2a4a!important;overflow-x:hidden!important}[data-v-57ce5ee5] .q-drawer__content{overflow-x:hidden!important}.drawer-content[data-v-57ce5ee5]{overflow-y:auto}.drawer-header[data-v-57ce5ee5]{min-height:48px}.letter-spacing-wide[data-v-57ce5ee5]{letter-spacing:.05em}.right-tabs[data-v-57ce5ee5]{background-color:#16162a;flex-shrink:0}.right-tab-panels[data-v-57ce5ee5]{overflow-y:auto;background:0 0!important}[data-v-57ce5ee5] .q-tab-panel{padding:0}.main-content[data-v-57ce5ee5]{background-color:#1a1a2e}.resize-handle[data-v-57ce5ee5]{cursor:col-resize;z-index:10;width:4px;height:100%;transition:background-color .15s;position:absolute;top:0;right:-2px}.resize-handle[data-v-57ce5ee5]:hover,.resize-handle[data-v-57ce5ee5]:active{background-color:#6c63ff80}
@@ -1 +0,0 @@
1
- import{B as e,Bt as t,C as n,E as r,F as i,Ft as a,G as o,Gt as s,H as c,I as l,It as u,K as d,Kt as f,Lt as p,Mt as m,Nt as h,Ot as g,Pt as _,R as v,St as y,T as b,Tt as x,U as S,Ut as C,V as w,W as T,Wt as E,X as D,Z as O,_t as k,at as A,b as ee,bt as te,d as ne,dt as j,ft as M,ht as N,it as P,jt as F,kt as I,lt as L,mt as R,nt as z,pt as B,q as re,qt as V,r as H,rt as U,u as ie,ut as W,vt as G,x as ae,y as K,yt as q,z as oe,zt as se}from"./nodes-DeIen-kp.js";import{a as ce,c as le,f as ue,i as de,o as fe,p as pe,r as J,u as me}from"./index-DJkEmbBM.js";import{A as Y,C as he,S as ge,c as _e,d as ve,k as ye,l as be,m as xe,p as X,t as Z,u as Se,w as Ce}from"./_plugin-vue_export-helper-CHpmshS7.js";import{t as Q}from"./QTooltip-637ruGFc.js";import{C as we,S as Te,T as Ee,_ as De,b as Oe,c as ke,o as Ae,t as je,u as Me,w as Ne}from"./QDialog-CMC1Ph52.js";import{a as Pe,i as Fe,n as Ie,o as Le,r as Re,s as ze,t as Be}from"./QTabPanels-BKHAAJ2p.js";import{t as $}from"./QBadge-Cb92Ia8-.js";import{n as Ve,t as He}from"./use-quasar-Dq-Vjx_2.js";function Ue(e,t,n){let r=w(e),i,a=r.left-t.event.x,o=r.top-t.event.y,s=Math.abs(a),c=Math.abs(o),l=t.direction;l.horizontal===!0&&l.vertical!==!0?i=a<0?`left`:`right`:l.horizontal!==!0&&l.vertical===!0?i=o<0?`up`:`down`:l.up===!0&&o<0?(i=`up`,s>c&&(l.left===!0&&a<0?i=`left`:l.right===!0&&a>0&&(i=`right`))):l.down===!0&&o>0?(i=`down`,s>c&&(l.left===!0&&a<0?i=`left`:l.right===!0&&a>0&&(i=`right`))):l.left===!0&&a<0?(i=`left`,s<c&&(l.up===!0&&o<0?i=`up`:l.down===!0&&o>0&&(i=`down`))):l.right===!0&&a>0&&(i=`right`,s<c&&(l.up===!0&&o<0?i=`up`:l.down===!0&&o>0&&(i=`down`)));let u=!1;if(i===void 0&&n===!1){if(t.event.isFirst===!0||t.event.lastDir===void 0)return{};i=t.event.lastDir,u=!0,i===`left`||i===`right`?(r.left-=a,s=0,a=0):(r.top-=o,c=0,o=0)}return{synthetic:u,payload:{evt:e,touch:t.event.mouse!==!0,mouse:t.event.mouse===!0,position:r,direction:i,isFirst:t.event.isFirst,isFinal:n===!0,duration:Date.now()-t.event.time,distance:{x:s,y:c},offset:{x:a,y:o},delta:{x:r.left-t.event.lastX,y:r.top-t.event.lastY}}}}var We=0,Ge=re({name:`touch-pan`,beforeMount(t,{value:n,modifiers:r}){if(r.mouse!==!0&&D.has.touch!==!0)return;function a(e,t){r.mouse===!0&&t===!0?o(e):(r.stop===!0&&T(e),r.prevent===!0&&c(e))}let s={uid:`qvtp_`+ We++,handler:n,modifiers:r,direction:Le(r),noop:e,mouseStart(e){ze(e,s)&&v(e)&&(i(s,`temp`,[[document,`mousemove`,`move`,`notPassiveCapture`],[document,`mouseup`,`end`,`passiveCapture`]]),s.start(e,!0))},touchStart(e){if(ze(e,s)){let t=e.target;i(s,`temp`,[[t,`touchmove`,`move`,`notPassiveCapture`],[t,`touchcancel`,`end`,`passiveCapture`],[t,`touchend`,`end`,`passiveCapture`]]),s.start(e)}},start(e,n){if(D.is.firefox===!0&&S(t,!0),s.lastEvt=e,n===!0||r.stop===!0){if(s.direction.all!==!0&&(n!==!0||s.modifiers.mouseAllDir!==!0&&s.modifiers.mousealldir!==!0)){let t=e.type.indexOf(`mouse`)===-1?new TouchEvent(e.type,e):new MouseEvent(e.type,e);e.defaultPrevented===!0&&c(t),e.cancelBubble===!0&&T(t),Object.assign(t,{qKeyEvent:e.qKeyEvent,qClickOutside:e.qClickOutside,qAnchorHandled:e.qAnchorHandled,qClonedBy:e.qClonedBy===void 0?[s.uid]:e.qClonedBy.concat(s.uid)}),s.initialEvent={target:e.target,event:t}}T(e)}let{left:i,top:a}=w(e);s.event={x:i,y:a,time:Date.now(),mouse:n===!0,detected:!1,isFirst:!0,isFinal:!1,lastX:i,lastY:a}},move(e){if(s.event===void 0)return;let t=w(e),n=t.left-s.event.x,i=t.top-s.event.y;if(n===0&&i===0)return;s.lastEvt=e;let o=s.event.mouse===!0,c=()=>{a(e,o);let t;r.preserveCursor!==!0&&r.preservecursor!==!0&&(t=document.documentElement.style.cursor||``,document.documentElement.style.cursor=`grabbing`),o===!0&&document.body.classList.add(`no-pointer-events--children`),document.body.classList.add(`non-selectable`),ye(),s.styleCleanup=e=>{if(s.styleCleanup=void 0,t!==void 0&&(document.documentElement.style.cursor=t),document.body.classList.remove(`non-selectable`),o===!0){let t=()=>{document.body.classList.remove(`no-pointer-events--children`)};e===void 0?t():setTimeout(()=>{t(),e()},50)}else e!==void 0&&e()}};if(s.event.detected===!0){s.event.isFirst!==!0&&a(e,s.event.mouse);let{payload:t,synthetic:n}=Ue(e,s,!1);t!==void 0&&(s.handler(t)===!1?s.end(e):(s.styleCleanup===void 0&&s.event.isFirst===!0&&c(),s.event.lastX=t.position.left,s.event.lastY=t.position.top,s.event.lastDir=n===!0?void 0:t.direction,s.event.isFirst=!1));return}if(s.direction.all===!0||o===!0&&(s.modifiers.mouseAllDir===!0||s.modifiers.mousealldir===!0)){c(),s.event.detected=!0,s.move(e);return}let l=Math.abs(n),u=Math.abs(i);l!==u&&(s.direction.horizontal===!0&&l>u||s.direction.vertical===!0&&l<u||s.direction.up===!0&&l<u&&i<0||s.direction.down===!0&&l<u&&i>0||s.direction.left===!0&&l>u&&n<0||s.direction.right===!0&&l>u&&n>0?(s.event.detected=!0,s.move(e)):s.end(e,!0))},end(e,n){if(s.event!==void 0){if(l(s,`temp`),D.is.firefox===!0&&S(t,!1),n===!0)s.styleCleanup?.(),s.event.detected!==!0&&s.initialEvent!==void 0&&s.initialEvent.target.dispatchEvent(s.initialEvent.event);else if(s.event.detected===!0){s.event.isFirst===!0&&s.handler(Ue(e===void 0?s.lastEvt:e,s).payload);let{payload:t}=Ue(e===void 0?s.lastEvt:e,s,!0),n=()=>{s.handler(t)};s.styleCleanup===void 0?n():s.styleCleanup(n)}s.event=void 0,s.initialEvent=void 0,s.lastEvt=void 0}}};t.__qtouchpan=s,r.mouse===!0&&i(s,`main`,[[t,`mousedown`,`mouseStart`,`passive${r.mouseCapture===!0||r.mousecapture===!0?`Capture`:``}`]]),D.has.touch===!0&&i(s,`main`,[[t,`touchstart`,`touchStart`,`passive${r.capture===!0?`Capture`:``}`],[t,`touchmove`,`noop`,`notPassiveCapture`]])},updated(e,t){let n=e.__qtouchpan;n!==void 0&&(t.oldValue!==t.value&&(typeof value!=`function`&&n.end(),n.handler=t.value),n.direction=Le(t.modifiers))},beforeUnmount(e){let t=e.__qtouchpan;t!==void 0&&(t.event!==void 0&&t.end(),l(t,`main`),l(t,`temp`),D.is.firefox===!0&&S(e,!1),t.styleCleanup?.(),delete e.__qtouchpan)}}),Ke=150,qe=d({name:`QDrawer`,inheritAttrs:!1,props:{...Ce,...we,side:{type:String,default:`left`,validator:e=>[`left`,`right`].includes(e)},width:{type:Number,default:300},mini:Boolean,miniToOverlay:Boolean,miniWidth:{type:Number,default:57},noMiniAnimation:Boolean,breakpoint:{type:Number,default:1023},showIfAbove:Boolean,behavior:{type:String,validator:e=>[`default`,`desktop`,`mobile`].includes(e),default:`default`},bordered:Boolean,elevated:Boolean,overlay:Boolean,persistent:Boolean,noSwipeOpen:Boolean,noSwipeClose:Boolean,noSwipeBackdrop:Boolean},emits:[...he,`onLayout`,`miniState`],setup(e,{slots:r,emit:i,attrs:o}){let s=G(),{proxy:{$q:c}}=s,l=Te(e,c),{preventBodyScroll:u}=Ne(),{registerTimeout:d,removeTimeout:f}=xe(),m=te(ue,me);if(m===me)return console.error(`QDrawer needs to be child of QLayout`),me;let h,_=null,v,b=t(e.behavior===`mobile`||e.behavior!==`desktop`&&m.totalWidth.value<=e.breakpoint),S=L(()=>e.mini===!0&&b.value!==!0),C=L(()=>S.value===!0?e.miniWidth:e.width),w=t(e.showIfAbove===!0&&b.value===!1?!0:e.modelValue===!0),T=L(()=>e.persistent!==!0&&(b.value===!0||H.value===!0));function E(e,t){if(A(),e!==!1&&m.animate(),J(0),b.value===!0){let e=m.instances[z.value];e?.belowBreakpoint===!0&&e.hide(!1),Y(1),m.isContainer.value!==!0&&u(!0)}else Y(0),e!==!1&&he(!1);d(()=>{e!==!1&&he(!0),t!==!0&&i(`show`,e)},Ke)}function D(e,t){ne(),e!==!1&&m.animate(),Y(0),J(N.value*C.value),be(),t===!0?f():d(()=>{i(`hide`,e)},Ke)}let{show:O,hide:k}=ge({showing:w,hideOnRouteChange:T,handleShow:E,handleHide:D}),{addToHistory:A,removeFromHistory:ne}=Ee(w,k,T),j={belowBreakpoint:b,hide:k},M=L(()=>e.side===`right`),N=L(()=>(c.lang.rtl===!0?-1:1)*(M.value===!0?1:-1)),P=t(0),F=t(!1),I=t(!1),R=t(C.value*N.value),z=L(()=>M.value===!0?`left`:`right`),B=L(()=>w.value===!0&&b.value===!1&&e.overlay===!1?e.miniToOverlay===!0?e.miniWidth:C.value:0),re=L(()=>e.overlay===!0||e.miniToOverlay===!0||m.view.value.indexOf(M.value?`R`:`L`)!==-1||c.platform.is.ios===!0&&m.isContainer.value===!0),V=L(()=>e.overlay===!1&&w.value===!0&&b.value===!1),H=L(()=>e.overlay===!0&&w.value===!0&&b.value===!1),U=L(()=>`fullscreen q-drawer__backdrop`+(w.value===!1&&F.value===!1?` hidden`:``)),ie=L(()=>({backgroundColor:`rgba(0,0,0,${P.value*.4})`})),W=L(()=>M.value===!0?m.rows.value.top[2]===`r`:m.rows.value.top[0]===`l`),ae=L(()=>M.value===!0?m.rows.value.bottom[2]===`r`:m.rows.value.bottom[0]===`l`),K=L(()=>{let e={};return m.header.space===!0&&W.value===!1&&(re.value===!0?e.top=`${m.header.offset}px`:m.header.space===!0&&(e.top=`${m.header.size}px`)),m.footer.space===!0&&ae.value===!1&&(re.value===!0?e.bottom=`${m.footer.offset}px`:m.footer.space===!0&&(e.bottom=`${m.footer.size}px`)),e}),oe=L(()=>{let e={width:`${C.value}px`,transform:`translateX(${R.value}px)`};return b.value===!0?e:Object.assign(e,K.value)}),se=L(()=>`q-drawer__content fit `+(m.isContainer.value===!0?`overflow-auto`:`scroll`)),ce=L(()=>`q-drawer q-drawer--${e.side}`+(I.value===!0?` q-drawer--mini-animate`:``)+(e.bordered===!0?` q-drawer--bordered`:``)+(l.value===!0?` q-drawer--dark q-dark`:``)+(F.value===!0?` no-transition`:w.value===!0?``:` q-layout--prevent-focus`)+(b.value===!0?` fixed q-drawer--on-top q-drawer--mobile q-drawer--top-padding`:` q-drawer--${S.value===!0?`mini`:`standard`}`+(re.value===!0||V.value!==!0?` fixed`:``)+(e.overlay===!0||e.miniToOverlay===!0?` q-drawer--on-top`:``)+(W.value===!0?` q-drawer--top-padding`:``))),le=L(()=>[[Ge,ve,void 0,{[c.lang.rtl===!0?e.side:z.value]:!0,mouse:!0}]]),de=L(()=>[[Ge,ye,void 0,{[c.lang.rtl===!0?z.value:e.side]:!0,mouse:!0}]]),fe=L(()=>[[Ge,ye,void 0,{[c.lang.rtl===!0?z.value:e.side]:!0,mouse:!0,mouseAllDir:!0}]]);function pe(){Z(b,e.behavior===`mobile`||e.behavior!==`desktop`&&m.totalWidth.value<=e.breakpoint)}a(b,t=>{t===!0?(h=w.value,w.value===!0&&k(!1)):e.overlay===!1&&e.behavior!==`mobile`&&h!==!1&&(w.value===!0?(J(0),Y(0),be()):O(!1))}),a(()=>e.side,(e,t)=>{m.instances[t]===j&&(m.instances[t]=void 0,m[t].space=!1,m[t].offset=0),m.instances[e]=j,m[e].size=C.value,m[e].space=V.value,m[e].offset=B.value}),a(m.totalWidth,()=>{(m.isContainer.value===!0||document.qScrollPrevented!==!0)&&pe()}),a(()=>e.behavior+e.breakpoint,pe),a(m.isContainer,e=>{w.value===!0&&u(e!==!0),e===!0&&pe()}),a(m.scrollbarWidth,()=>{J(w.value===!0?0:void 0)}),a(B,e=>{X(`offset`,e)}),a(V,e=>{i(`onLayout`,e),X(`space`,e)}),a(M,()=>{J()}),a(C,t=>{J(),Se(e.miniToOverlay,t)}),a(()=>e.miniToOverlay,e=>{Se(e,C.value)}),a(()=>c.lang.rtl,()=>{J()}),a(()=>e.mini,()=>{e.noMiniAnimation||e.modelValue===!0&&(_e(),m.animate())}),a(S,e=>{i(`miniState`,e)});function J(e){e===void 0?y(()=>{e=w.value===!0?0:C.value,J(N.value*e)}):(m.isContainer.value===!0&&M.value===!0&&(b.value===!0||Math.abs(e)===C.value)&&(e+=N.value*m.scrollbarWidth.value),R.value=e)}function Y(e){P.value=e}function he(e){let t=e===!0?`remove`:m.isContainer.value===!0?``:`add`;t!==``&&document.body.classList[t](`q-body--drawer-toggle`)}function _e(){_!==null&&clearTimeout(_),s.proxy&&s.proxy.$el&&s.proxy.$el.classList.add(`q-drawer--mini-animate`),I.value=!0,_=setTimeout(()=>{_=null,I.value=!1,s?.proxy?.$el?.classList.remove(`q-drawer--mini-animate`)},150)}function ve(e){if(w.value!==!1)return;let t=C.value,n=Oe(e.distance.x,0,t);if(e.isFinal===!0){n>=Math.min(75,t)?O():(m.animate(),Y(0),J(N.value*t)),F.value=!1;return}J((c.lang.rtl===!0?M.value!==!0:M.value)?Math.max(t-n,0):Math.min(0,n-t)),Y(Oe(n/t,0,1)),e.isFirst===!0&&(F.value=!0)}function ye(t){if(w.value!==!0)return;let n=C.value,r=t.direction===e.side,i=(c.lang.rtl===!0?r!==!0:r)?Oe(t.distance.x,0,n):0;if(t.isFinal===!0){Math.abs(i)<Math.min(75,n)?(m.animate(),Y(1),J(0)):k(),F.value=!1;return}J(N.value*i),Y(Oe(1-i/n,0,1)),t.isFirst===!0&&(F.value=!0)}function be(){u(!1),he(!0)}function X(t,n){m.update(e.side,t,n)}function Z(e,t){e.value!==t&&(e.value=t)}function Se(t,n){X(`size`,t===!0?e.miniWidth:n)}return m.instances[e.side]=j,Se(e.miniToOverlay,C.value),X(`space`,V.value),X(`offset`,B.value),e.showIfAbove===!0&&e.modelValue!==!0&&w.value===!0&&e[`onUpdate:modelValue`]!==void 0&&i(`update:modelValue`,!0),g(()=>{i(`onLayout`,V.value),i(`miniState`,S.value),h=e.showIfAbove===!0;let t=()=>{(w.value===!0?E:D)(!1,!0)};if(m.totalWidth.value!==0){y(t);return}v=a(m.totalWidth,()=>{v(),v=void 0,w.value===!1&&e.showIfAbove===!0&&b.value===!1?O(!1):t()})}),x(()=>{v?.(),_!==null&&(clearTimeout(_),_=null),w.value===!0&&be(),m.instances[e.side]===j&&(m.instances[e.side]=void 0,X(`size`,0),X(`offset`,0),X(`space`,!1))}),()=>{let t=[];b.value===!0&&(e.noSwipeOpen===!1&&t.push(p(q(`div`,{key:`open`,class:`q-drawer__opener fixed-${e.side}`,"aria-hidden":`true`}),le.value)),t.push(ee(`div`,{ref:`backdrop`,class:U.value,style:ie.value,"aria-hidden":`true`,onClick:k},void 0,`backdrop`,e.noSwipeBackdrop!==!0&&w.value===!0,()=>fe.value)));let i=S.value===!0&&r.mini!==void 0,a=[q(`div`,{...o,key:String(i),class:[se.value,o.class]},i===!0?r.mini():n(r.default))];return e.elevated===!0&&w.value===!0&&a.push(q(`div`,{class:`q-layout__shadow absolute-full overflow-hidden no-pointer-events`})),t.push(ee(`aside`,{ref:`content`,class:ce.value,style:oe.value},a,`contentclose`,e.noSwipeClose!==!0&&b.value===!0,()=>de.value)),q(`div`,{class:`q-drawer-container`},t)}}}),Je=d({name:`QPageContainer`,setup(e,{slots:t}){let{proxy:{$q:r}}=G(),i=te(ue,me);if(i===me)return console.error(`QPageContainer needs to be child of QLayout`),me;m(pe,!0);let a=L(()=>{let e={};return i.header.space===!0&&(e.paddingTop=`${i.header.size}px`),i.right.space===!0&&(e[`padding${r.lang.rtl===!0?`Left`:`Right`}`]=`${i.right.size}px`),i.footer.space===!0&&(e.paddingBottom=`${i.footer.size}px`),i.left.space===!0&&(e[`padding${r.lang.rtl===!0?`Right`:`Left`}`]=`${i.left.size}px`),e});return()=>q(`div`,{class:`q-page-container`,style:a.value},n(t.default))}}),{passive:Ye}=oe,Xe=[`both`,`horizontal`,`vertical`],Ze=d({name:`QScrollObserver`,props:{axis:{type:String,validator:e=>Xe.includes(e),default:`vertical`},debounce:[String,Number],scrollTarget:X},emits:[`scroll`],setup(t,{emit:n}){let r={position:{top:0,left:0},direction:`down`,directionChanged:!1,delta:{top:0,left:0},inflectionPoint:{top:0,left:0}},i=null,o,s;a(()=>t.scrollTarget,()=>{u(),l()});function c(){i?.();let e=Math.max(0,ve(o)),a=_e(o),s={top:e-r.position.top,left:a-r.position.left};if(t.axis===`vertical`&&s.top===0||t.axis===`horizontal`&&s.left===0)return;let c=Math.abs(s.top)>=Math.abs(s.left)?s.top<0?`up`:`down`:s.left<0?`left`:`right`;r.position={top:e,left:a},r.directionChanged=r.direction!==c,r.delta=s,r.directionChanged===!0&&(r.direction=c,r.inflectionPoint=r.position),n(`scroll`,{...r})}function l(){o=be(s,t.scrollTarget),o.addEventListener(`scroll`,d,Ye),d(!0)}function u(){o!==void 0&&(o.removeEventListener(`scroll`,d,Ye),o=void 0)}function d(e){if(e===!0||t.debounce===0||t.debounce===`0`)c();else if(i===null){let[e,n]=t.debounce?[setTimeout(c,t.debounce),clearTimeout]:[requestAnimationFrame(c),cancelAnimationFrame];i=()=>{n(e),i=null}}}let{proxy:f}=G();return a(()=>f.$q.lang.rtl,c),g(()=>{s=f.$el.parentNode,l()}),x(()=>{i?.(),u()}),Object.assign(f,{trigger:d,getPosition:()=>r}),e}}),Qe=d({name:`QLayout`,props:{container:Boolean,view:{type:String,default:`hhh lpr fff`,validator:e=>/^(h|l)h(h|r) lpr (f|l)f(f|r)$/.test(e.toLowerCase())},onScroll:Function,onScrollHeight:Function,onResize:Function},setup(e,{slots:n,emit:r}){let{proxy:{$q:i}}=G(),o=t(null),s=t(i.screen.height),c=t(e.container===!0?0:i.screen.width),l=t({position:0,direction:`down`,inflectionPoint:0}),u=t(0),d=t(O.value===!0?0:Se()),f=L(()=>`q-layout q-layout--`+(e.container===!0?`containerized`:`standard`)),p=L(()=>e.container===!1?{minHeight:i.screen.height+`px`}:null),h=L(()=>d.value===0?null:{[i.lang.rtl===!0?`left`:`right`]:`${d.value}px`}),g=L(()=>d.value===0?null:{[i.lang.rtl===!0?`right`:`left`]:0,[i.lang.rtl===!0?`left`:`right`]:`-${d.value}px`,width:`calc(100% + ${d.value}px)`});function _(t){if(e.container===!0||document.qScrollPrevented!==!0){let n={position:t.position.top,direction:t.direction,directionChanged:t.directionChanged,inflectionPoint:t.inflectionPoint.top,delta:t.delta.top};l.value=n,e.onScroll!==void 0&&r(`scroll`,n)}}function v(t){let{height:n,width:i}=t,a=!1;s.value!==n&&(a=!0,s.value=n,e.onScrollHeight!==void 0&&r(`scrollHeight`,n),b()),c.value!==i&&(a=!0,c.value=i),a===!0&&e.onResize!==void 0&&r(`resize`,t)}function y({height:e}){u.value!==e&&(u.value=e,b())}function b(){if(e.container===!0){let e=s.value>u.value?Se():0;d.value!==e&&(d.value=e)}}let x=null,S={instances:{},view:L(()=>e.view),isContainer:L(()=>e.container),rootRef:o,height:s,containerHeight:u,scrollbarWidth:d,totalWidth:L(()=>c.value+d.value),rows:L(()=>{let t=e.view.toLowerCase().split(` `);return{top:t[0].split(``),middle:t[1].split(``),bottom:t[2].split(``)}}),header:se({size:0,offset:0,space:!1}),right:se({size:300,offset:0,space:!1}),footer:se({size:0,offset:0,space:!1}),left:se({size:300,offset:0,space:!1}),scroll:l,animate(){x===null?document.body.classList.add(`q-body--layout-animate`):clearTimeout(x),x=setTimeout(()=>{x=null,document.body.classList.remove(`q-body--layout-animate`)},155)},update(e,t,n){S[e][t]=n}};if(m(ue,S),Se()>0){let t=null,n=document.body;function r(){t=null,n.classList.remove(`hide-scrollbar`)}function o(){if(t===null){if(n.scrollHeight>i.screen.height)return;n.classList.add(`hide-scrollbar`)}else clearTimeout(t);t=setTimeout(r,300)}function s(e){t!==null&&e===`remove`&&(clearTimeout(t),r()),window[`${e}EventListener`](`resize`,o)}a(()=>e.container===!0?`remove`:`add`,s),e.container!==!0&&s(`add`),I(()=>{s(`remove`)})}return()=>{let t=ae(n.default,[q(Ze,{onScroll:_}),q(Fe,{onResize:v})]),r=q(`div`,{class:f.value,style:p.value,ref:e.container===!0?void 0:o,tabindex:-1},t);return e.container===!0?q(`div`,{class:`q-layout-container overflow-hidden`,ref:o},[q(Fe,{onResize:y}),q(`div`,{class:`absolute-full`,style:h.value},[q(`div`,{class:`scroll`,style:g.value},[r])])]):r}}}),$e={class:`acceptance-panel q-pa-md`},et={class:`row items-center q-mb-sm`},tt={key:0,class:`criterion-add-row row items-center q-mb-xs`},nt={key:1,class:`acceptance-list`},rt=[`onDblclick`],it={key:2,class:`text-caption text-grey-8`,style:{"font-size":`11px`}},at=Z(k({__name:`AcceptancePanel`,props:{tasks:{}},setup(e){let n=fe(),r=t(!1),i=t(``),a=t(null),o=t(``),c=t({});function l(e,t){if(t){let n=t.$el??t;c.value[e]=n}else delete c.value[e]}function u(e){switch(e){case`done`:return`check_circle`;case`in_progress`:return`timelapse`;default:return`radio_button_unchecked`}}function d(e){switch(e){case`done`:return`#4ade80`;case`in_progress`:return`#f59e0b`;default:return`#888`}}async function p(e){let t=e.status===`done`?`pending`:`done`;try{let r=await fetch(`/api/workspaces/${e.workspaceId}/tasks/${e.id}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({status:t})});if(!r.ok)throw Error(`HTTP ${r.status}`);n.selectedWorkspaceId&&n.fetchWorkspaceDetails(n.selectedWorkspaceId)}catch(e){console.error(`Failed to update task:`,e)}}function m(){r.value=!0,i.value=``}async function g(){let e=i.value.trim(),t=n.selectedWorkspace?.id;if(!(!e||!t))try{await n.createTask(t,e,!0),i.value=``,r.value=!1}catch{}}function _(){i.value=``,r.value=!1}function v(e){a.value=e.id,o.value=e.title,y(()=>{let t=c.value[e.id]?.querySelector(`input, textarea`);t?.focus(),t?.select()})}async function b(e){if(a.value!==e.id)return;let t=o.value.trim(),r=e.id;if(a.value=null,!t||t===e.title)return;let i=n.selectedWorkspace?.id;if(i)try{await n.updateTaskTitle(i,r,t)}catch{}}function x(){a.value=null,o.value=``}async function S(e){let t=n.selectedWorkspace?.id;if(t)try{await n.deleteTask(t,e.id)}catch{}}return(t,c)=>(F(),B(`div`,$e,[W(`div`,et,[c[2]||=W(`div`,{class:`text-caption text-uppercase text-weight-bold text-grey-6`,style:{"letter-spacing":`0.05em`}},` Acceptance Criteria `,-1),N(Y),E(n).selectedWorkspace?(F(),j(H,{key:0,flat:``,dense:``,round:``,size:`xs`,icon:`add`,color:`indigo-4`,title:`Add criterion`,onClick:m})):M(``,!0)]),r.value?(F(),B(`div`,tt,[N(Ae,{modelValue:i.value,"onUpdate:modelValue":c[0]||=e=>i.value=e,dark:``,dense:``,borderless:``,autofocus:``,placeholder:`New criterion... (Enter to add, Esc to cancel)`,class:`col criterion-input`,"input-class":`criterion-input-inner`,onKeydown:[U(P(g,[`prevent`]),[`enter`]),U(P(_,[`prevent`]),[`esc`])]},null,8,[`modelValue`,`onKeydown`])])):M(``,!0),e.tasks.length>0?(F(),B(`div`,nt,[(F(!0),B(A,null,h(e.tasks,e=>(F(),B(`div`,{key:e.id,class:`acceptance-item row items-center q-mb-xxs`},[N(K,{name:u(e.status),size:`16px`,style:f({color:d(e.status)}),class:`q-mr-xs cursor-pointer`,onClick:t=>p(e)},null,8,[`name`,`style`,`onClick`]),a.value===e.id?(F(),j(Ae,{key:0,ref_for:!0,ref:t=>l(e.id,t),modelValue:o.value,"onUpdate:modelValue":c[1]||=e=>o.value=e,dark:``,dense:``,borderless:``,class:`col criterion-input`,"input-class":`criterion-input-inner`,onKeydown:[U(P(t=>b(e),[`prevent`]),[`enter`]),U(P(x,[`prevent`]),[`esc`])],onBlur:t=>b(e)},null,8,[`modelValue`,`onKeydown`,`onBlur`])):(F(),B(A,{key:1},[W(`span`,{class:s([`col acceptance-title text-caption`,{"text-strike":e.status===`done`}]),style:f({color:e.status===`done`?`#4ade80`:`#ccc`}),onDblclick:t=>v(e)},V(e.title),47,rt),N(H,{flat:``,dense:``,round:``,size:`xs`,icon:`close`,color:`grey-6`,class:`criterion-delete-btn`,onClick:t=>S(e)},null,8,[`onClick`])],64))]))),128))])):r.value?M(``,!0):(F(),B(`div`,it,` No acceptance criteria `))]))}}),[[`__scopeId`,`data-v-b9e5e638`]]),ot=d({name:`QCardSection`,props:{tag:{type:String,default:`div`},horizontal:Boolean},setup(e,{slots:t}){let r=L(()=>`q-card__section q-card__section--${e.horizontal===!0?`horiz row no-wrap`:`vert`}`);return()=>q(e.tag,{class:r.value},n(t.default))}}),st=d({name:`QCard`,props:{...we,tag:{type:String,default:`div`},square:Boolean,flat:Boolean,bordered:Boolean},setup(e,{slots:t}){let{proxy:{$q:r}}=G(),i=Te(e,r),a=L(()=>`q-card`+(i.value===!0?` q-card--dark q-dark`:``)+(e.bordered===!0?` q-card--bordered`:``)+(e.square===!0?` q-card--square no-border-radius`:``)+(e.flat===!0?` q-card--flat no-shadow`:``));return()=>q(e.tag,{class:a.value},n(t.default))}}),ct={class:`log-text rounded-borders q-pa-md`},lt=Z(k({__name:`DevServerLogDialog`,props:{modelValue:{type:Boolean},workspaceId:{}},emits:[`update:modelValue`],setup(e){let n=e,r=le(),i=t(``),o=t(!1),s=t(null),c=null;async function l(){if(n.workspaceId){o.value=!0;try{i.value=await r.fetchLogs(n.workspaceId),await y(),d()}finally{o.value=!1}}}function d(){s.value&&(s.value.scrollTop=s.value.scrollHeight)}function f(){p(),c=setInterval(()=>{l()},5e3)}function p(){c&&=(clearInterval(c),null)}return a(()=>n.modelValue,e=>{e?(l(),f()):p()}),I(()=>{p()}),(t,n)=>(F(),j(je,{"model-value":e.modelValue,"onUpdate:modelValue":n[1]||=e=>t.$emit(`update:modelValue`,e)},{default:u(()=>[N(st,{class:`text-grey-3`,style:{"min-width":`700px`,"max-width":`900px`,"max-height":`80vh`,background:`#1e1e3a`}},{default:u(()=>[N(ot,{class:`row items-center`},{default:u(()=>[n[2]||=W(`div`,{class:`text-h6`},`Logs Dev Server`,-1),N(Y),N(H,{flat:``,round:``,dense:``,icon:`refresh`,color:`grey-5`,onClick:l,loading:o.value},null,8,[`loading`]),N(H,{flat:``,round:``,dense:``,icon:`close`,color:`grey-5`,onClick:n[0]||=e=>t.$emit(`update:modelValue`,!1)})]),_:1}),N(De,{dark:``}),N(ot,{class:`log-content`,ref_key:`logContainer`,ref:s},{default:u(()=>[W(`pre`,ct,V(i.value||`No logs available`),1)]),_:1},512)]),_:1})]),_:1},8,[`model-value`]))}}),[[`__scopeId`,`data-v-c1509b16`]]),ut={class:`dd-panel q-px-md q-py-sm`},dt={key:0,class:`text-caption text-grey-8`},ft={key:1,class:`text-caption text-grey-8`},pt={class:`row items-center q-mb-xs`},mt={key:0,class:`text-caption q-mb-xs`},ht=[`href`],gt={key:1,class:`text-caption text-grey-7`,style:{"font-size":`10px`}},_t={key:2,class:`text-caption text-red-5`},vt=Z(k({__name:`DevServerPanel`,props:{workspace:{}},setup(e){let n=e,r=le(),i=Ve(),o=t(!1),s=t(!1),c=t(!1),l=null,d=L(()=>n.workspace?.id??``),f=L(()=>n.workspace?!!i.getProjectByPath(n.workspace.projectPath)?.devServer?.startCommand:!1),p=L(()=>d.value?r.getStatus(d.value):null),m=L(()=>{switch(p.value?.status){case`running`:return`green-9`;case`starting`:case`stopping`:return`orange-9`;case`error`:return`red-9`;default:return`grey-8`}}),h=L(()=>{switch(p.value?.status){case`running`:return`Running`;case`starting`:return`Starting`;case`stopping`:return`Stopping`;case`error`:return`Error`;case`stopped`:return`Stopped`;default:return`Unknown`}}),v=L(()=>{let e=p.value?.status;return!e||e===`stopped`||e===`unknown`||e===`error`}),y=L(()=>{let e=p.value?.status;return e===`running`||e===`starting`});async function b(){if(d.value){s.value=!0;try{await r.startDevServer(d.value)}finally{s.value=!1}}}async function x(){if(d.value){c.value=!0;try{await r.stopDevServer(d.value)}finally{c.value=!1}}}function S(){d.value&&f.value&&r.fetchStatus(d.value)}function C(){w(),l=setInterval(()=>{S()},3e4)}function w(){l&&=(clearInterval(l),null)}return a(d,()=>{S(),C()}),g(()=>{S(),C()}),I(()=>{w()}),(t,n)=>{let r=_(`router-link`);return F(),B(`div`,ut,[n[5]||=W(`div`,{class:`text-caption text-uppercase text-weight-bold text-grey-5 q-mb-xs`},` Dev Server `,-1),e.workspace?f.value?p.value?(F(),B(A,{key:2},[W(`div`,pt,[N($,{color:m.value,label:h.value,style:{"font-size":`10px`}},null,8,[`color`,`label`]),N(Y),v.value?(F(),j(H,{key:0,flat:``,round:``,dense:``,icon:`play_arrow`,size:`xs`,color:`green-5`,onClick:b,loading:s.value},null,8,[`loading`])):M(``,!0),y.value?(F(),j(H,{key:1,flat:``,round:``,dense:``,icon:`stop`,size:`xs`,color:`red-5`,onClick:x,loading:c.value},null,8,[`loading`])):M(``,!0),N(H,{flat:``,round:``,dense:``,icon:`article`,size:`xs`,color:`grey-5`,onClick:n[0]||=e=>o.value=!0},{default:u(()=>[N(Q,null,{default:u(()=>[...n[4]||=[R(`Logs`,-1)]]),_:1})]),_:1})]),p.value.status===`running`&&p.value.url?(F(),B(`div`,mt,[W(`a`,{href:p.value.url,target:`_blank`,style:{color:`#6c63ff`}},V(p.value.url),9,ht)])):M(``,!0),p.value.containers.length>0?(F(),B(`div`,gt,V(p.value.containers.length)+` container`+V(p.value.containers.length>1?`s`:``),1)):M(``,!0),p.value.error?(F(),B(`div`,_t,V(p.value.error),1)):M(``,!0)],64)):M(``,!0):(F(),B(`div`,ft,[n[3]||=R(` Not configured — `,-1),N(r,{to:`/settings`,style:{color:`#6c63ff`}},{default:u(()=>[...n[2]||=[R(`Settings`,-1)]]),_:1})])):(F(),B(`div`,dt,` No workspace selected `)),d.value?(F(),j(lt,{key:3,modelValue:o.value,"onUpdate:modelValue":n[1]||=e=>o.value=e,"workspace-id":d.value},null,8,[`modelValue`,`workspace-id`])):M(``,!0)])}}}),[[`__scopeId`,`data-v-8c173889`]]),yt={class:`git-panel q-pa-md`},bt={class:`row items-center justify-between q-mb-sm`},xt={class:`row items-center q-mb-sm`},St={class:`text-caption text-grey-3`},Ct={class:`row items-center q-mb-sm`},wt={class:`text-caption text-grey-4`,style:{"font-family":`'Roboto Mono', monospace`,"font-size":`11px`}},Tt={class:`text-caption q-mb-sm text-grey-8`,style:{"font-size":`11px`}},Et={class:`row items-center q-mb-xs`},Dt={class:`text-caption text-grey-4`,style:{"font-size":`11px`}},Ot={class:`row items-center q-mb-md`},kt={class:`text-caption text-grey-4`,style:{"font-size":`11px`}},At={key:0,class:`text-caption q-ml-xs`,style:{"font-size":`11px`,color:`#4ade80`}},jt={key:1,class:`text-caption q-ml-xs`,style:{"font-size":`11px`,color:`#f87171`}},Mt={key:1,class:`q-mb-md`},Nt={class:`row q-gutter-xs`},Pt={key:1,class:`text-caption text-grey-8`},Ft=Z(k({__name:`GitPanel`,props:{workspace:{}},setup(e){let n=e,r=He(),i=fe(),o=t(!1),s=t(!1),c=t(null),l=t(!1),u=L(()=>{if(!n.workspace?.projectPath)return`-`;let e=n.workspace.projectPath.replace(/\\/g,`/`).split(`/`);return e[e.length-1]||e[e.length-2]||`-`});async function d(){if(!n.workspace){c.value=null;return}l.value=!0;try{c.value=await i.fetchGitStats(n.workspace.id)}catch{c.value=null}finally{l.value=!1}}a(()=>n.workspace?.id,()=>d(),{immediate:!0});async function f(){if(n.workspace){o.value=!0;try{await i.pushBranch(n.workspace.id),r.notify({type:`positive`,message:`Branch pushed`,position:`top`}),d()}catch(e){let t=e instanceof Error?e.message:`Push failed`;r.notify({type:`negative`,message:t,position:`top`,timeout:6e3})}finally{o.value=!1}}}async function p(){if(n.workspace){s.value=!0;try{let e=await i.openPullRequest(n.workspace.id);e.messageSent===!1&&e.warning?r.notify({type:`warning`,message:`PR #${e.prNumber} opened — agent not active, message not sent`,caption:e.prUrl,position:`top`,timeout:6e3}):r.notify({type:`positive`,message:`PR #${e.prNumber} opened`,caption:e.prUrl,position:`top`,timeout:5e3})}catch(e){if(e instanceof ce&&e.code===`branch_not_pushed`){r.notify({type:`warning`,message:`Branch is not on remote. Click Push first.`,position:`top`,timeout:6e3});return}if(e instanceof ce&&e.code===`unpushed_commits`){r.notify({type:`warning`,message:`Local commits are not pushed. Click Push first.`,position:`top`,timeout:6e3});return}let t=e instanceof Error?e.message:`Open PR failed`;r.notify({type:`negative`,message:t,position:`top`,timeout:6e3})}finally{s.value=!1}}}return(t,n)=>(F(),B(`div`,yt,[W(`div`,bt,[n[0]||=W(`div`,{class:`text-caption text-uppercase text-weight-bold text-grey-6`,style:{"letter-spacing":`0.05em`}},` Git `,-1),e.workspace?(F(),j(H,{key:0,flat:``,round:``,dense:``,size:`xs`,icon:`refresh`,color:`grey-6`,loading:l.value,onClick:d},null,8,[`loading`])):M(``,!0)]),e.workspace?(F(),B(A,{key:0},[W(`div`,xt,[N(K,{name:`folder`,size:`14px`,color:`grey-6`,class:`q-mr-xs`}),W(`span`,St,V(u.value),1)]),W(`div`,Ct,[n[1]||=W(`span`,{style:{width:`8px`,height:`8px`,"border-radius":`50%`,"background-color":`#4ade80`,display:`inline-block`},class:`q-mr-xs`},null,-1),W(`span`,wt,V(e.workspace.workingBranch),1)]),W(`div`,Tt,` from `+V(e.workspace.sourceBranch)+` · local only `,1),c.value&&(c.value.commitCount>0||c.value.filesChanged>0)?(F(),B(A,{key:0},[W(`div`,Et,[N(K,{name:`commit`,size:`14px`,color:`grey-6`,class:`q-mr-xs`}),W(`span`,Dt,V(c.value.commitCount)+` commit`+V(c.value.commitCount===1?``:`s`),1)]),W(`div`,Ot,[N(K,{name:`insert_drive_file`,size:`14px`,color:`grey-6`,class:`q-mr-xs`}),W(`span`,kt,V(c.value.filesChanged)+` file`+V(c.value.filesChanged===1?``:`s`),1),c.value.insertions>0?(F(),B(`span`,At,` +`+V(c.value.insertions),1)):M(``,!0),c.value.deletions>0?(F(),B(`span`,jt,` -`+V(c.value.deletions),1)):M(``,!0)])],64)):(F(),B(`div`,Mt)),W(`div`,Nt,[N(H,{dense:``,"no-caps":``,size:`sm`,color:`primary`,label:`Open PR`,class:`git-btn`,loading:s.value,disable:!e.workspace||o.value,onClick:p},null,8,[`loading`,`disable`]),N(H,{dense:``,"no-caps":``,size:`sm`,outline:``,color:`grey-5`,label:`Push`,class:`git-btn`,loading:o.value,disable:!e.workspace||s.value,onClick:f},null,8,[`loading`,`disable`])])],64)):(F(),B(`div`,Pt,` Select a workspace `))]))}}),[[`__scopeId`,`data-v-03bca960`]]),It={xs:2,sm:4,md:6,lg:10,xl:14};function Lt(e,t,n){return{transform:t===!0?`translateX(${n.lang.rtl===!0?`-`:``}100%) scale3d(${-e},1,1)`:`scale3d(${e},1,1)`}}var Rt=d({name:`QLinearProgress`,props:{...we,...r,value:{type:Number,default:0},buffer:Number,color:String,trackColor:String,reverse:Boolean,stripe:Boolean,indeterminate:Boolean,query:Boolean,rounded:Boolean,animationSpeed:{type:[String,Number],default:2100},instantFeedback:Boolean},setup(e,{slots:t}){let{proxy:n}=G(),r=Te(e,n.$q),i=b(e,It),a=L(()=>e.indeterminate===!0||e.query===!0),o=L(()=>e.reverse!==e.query),s=L(()=>({...i.value===null?{}:i.value,"--q-linear-progress-speed":`${e.animationSpeed}ms`})),c=L(()=>`q-linear-progress`+(e.color===void 0?``:` text-${e.color}`)+(e.reverse===!0||e.query===!0?` q-linear-progress--reverse`:``)+(e.rounded===!0?` rounded-borders`:``)),l=L(()=>Lt(e.buffer===void 0?1:e.buffer,o.value,n.$q)),u=L(()=>`with${e.instantFeedback===!0?`out`:``}-transition`),d=L(()=>`q-linear-progress__track absolute-full q-linear-progress__track--${u.value} q-linear-progress__track--${r.value===!0?`dark`:`light`}`+(e.trackColor===void 0?``:` bg-${e.trackColor}`)),f=L(()=>Lt(a.value===!0?1:e.value,o.value,n.$q)),p=L(()=>`q-linear-progress__model absolute-full q-linear-progress__model--${u.value} q-linear-progress__model--${a.value===!0?`in`:``}determinate`),m=L(()=>({width:`${e.value*100}%`})),h=L(()=>`q-linear-progress__stripe absolute-${e.reverse===!0?`right`:`left`} q-linear-progress__stripe--${u.value}`);return()=>{let n=[q(`div`,{class:d.value,style:l.value}),q(`div`,{class:p.value,style:f.value})];return e.stripe===!0&&a.value===!1&&n.push(q(`div`,{class:h.value,style:m.value})),q(`div`,{class:c.value,style:s.value,role:`progressbar`,"aria-valuemin":0,"aria-valuemax":1,"aria-valuenow":e.indeterminate===!0?void 0:e.value},ae(t.default,n))}}}),zt={class:`notion-panel q-pa-md`},Bt={class:`row items-center q-mb-sm`},Vt={key:0,class:`q-mb-sm`},Ht=[`href`],Ut={key:1,class:`text-caption q-mb-sm text-grey-8`},Wt={key:3,class:`q-mb-sm`},Gt={class:`text-caption text-grey-7`,style:{"font-size":`11px`}},Kt={key:4,class:`text-caption text-grey-8 q-mb-sm`,style:{"font-size":`11px`}},qt={key:5,class:`task-add-row row items-center q-mb-xs`},Jt={key:6,class:`tasks-list`},Yt=[`onDblclick`],Xt={key:1,class:`text-caption text-grey-8`},Zt=Z(k({__name:`NotionPanel`,props:{workspace:{},tasks:{}},setup(e){let n=e,r=fe(),i=t(!1),a=L(()=>n.tasks.filter(e=>!e.isAcceptanceCriterion)),o=L(()=>a.value.filter(e=>e.status===`done`).length),c=L(()=>a.value.length),l=L(()=>c.value>0?o.value/c.value:0),u=t(!1),d=t(``),p=t(null),m=t(``),g=t({});function _(e,t){if(t){let n=t.$el??t;g.value[e]=n}else delete g.value[e]}async function v(){if(!(!n.workspace?.id||!n.workspace.notionUrl)){i.value=!0;try{let e=await fetch(`/api/workspaces/${n.workspace.id}/refresh-notion`,{method:`POST`});if(!e.ok)throw Error(`HTTP ${e.status}`);r.fetchWorkspaceDetails(n.workspace.id)}catch(e){console.error(`Failed to refresh from Notion:`,e)}finally{i.value=!1}}}function b(){u.value=!0,d.value=``}async function x(){let e=d.value.trim();if(!(!e||!n.workspace?.id))try{await r.createTask(n.workspace.id,e,!1),d.value=``,u.value=!1}catch{}}function S(){d.value=``,u.value=!1}function C(e){p.value=e.id,m.value=e.title,y(()=>{let t=g.value[e.id]?.querySelector(`input, textarea`);t?.focus(),t?.select()})}async function w(e){if(p.value!==e.id)return;let t=m.value.trim(),i=e.id;if(p.value=null,!(!t||t===e.title)&&n.workspace?.id)try{await r.updateTaskTitle(n.workspace.id,i,t)}catch{}}function T(){p.value=null,m.value=``}async function E(e){if(n.workspace?.id)try{await r.deleteTask(n.workspace.id,e.id)}catch{}}async function D(e){if(!n.workspace?.id)return;let t=e.status===`done`?`pending`:`done`;try{let i=await fetch(`/api/workspaces/${e.workspaceId}/tasks/${e.id}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({status:t})});if(!i.ok)throw Error(`HTTP ${i.status}`);r.fetchWorkspaceDetails(n.workspace.id)}catch(e){console.error(`Failed to toggle task:`,e)}}function O(e){switch(e){case`done`:return`check_circle`;case`in_progress`:return`timelapse`;default:return`radio_button_unchecked`}}function k(e){switch(e){case`done`:return`#4ade80`;case`in_progress`:return`#f59e0b`;default:return`#888`}}return(t,n)=>(F(),B(`div`,zt,[W(`div`,Bt,[n[2]||=W(`div`,{class:`text-caption text-uppercase text-weight-bold text-grey-6`,style:{"letter-spacing":`0.05em`}},` Notion `,-1),N(Y),e.workspace?(F(),j(H,{key:0,flat:``,dense:``,round:``,size:`xs`,icon:`add`,color:`indigo-4`,title:`Add task`,onClick:b})):M(``,!0)]),e.workspace?(F(),B(A,{key:0},[e.workspace.notionUrl?(F(),B(`div`,Vt,[W(`a`,{href:e.workspace.notionUrl,target:`_blank`,rel:`noopener noreferrer`,class:`notion-link text-caption items-center text-blue-4`},[N(K,{name:`open_in_new`,size:`12px`,class:`q-mr-xs`}),n[3]||=R(` Open in Notion `,-1)],8,Ht)])):(F(),B(`div`,Ut,` No Notion URL `)),e.workspace.notionUrl?(F(),j(H,{key:2,flat:``,dense:``,"no-caps":``,size:`xs`,icon:`refresh`,label:`Refresh`,color:`grey-6`,class:`q-mb-sm`,loading:i.value,onClick:v},null,8,[`loading`])):M(``,!0),c.value>0?(F(),B(`div`,Wt,[N(Rt,{value:l.value,color:`primary`,"track-color":`grey-9`,class:`q-mb-xs`,style:{height:`4px`,"border-radius":`2px`}},null,8,[`value`]),W(`div`,Gt,V(o.value)+`/`+V(c.value)+` subtasks `,1)])):u.value?M(``,!0):(F(),B(`div`,Kt,` No tasks `)),u.value?(F(),B(`div`,qt,[N(Ae,{modelValue:d.value,"onUpdate:modelValue":n[0]||=e=>d.value=e,dark:``,dense:``,borderless:``,autofocus:``,placeholder:`New task... (Enter to add, Esc to cancel)`,class:`col task-input`,"input-class":`task-input-inner`,onKeydown:[U(P(x,[`prevent`]),[`enter`]),U(P(S,[`prevent`]),[`esc`])]},null,8,[`modelValue`,`onKeydown`])])):M(``,!0),a.value.length>0?(F(),B(`div`,Jt,[(F(!0),B(A,null,h(a.value,e=>(F(),B(`div`,{key:e.id,class:`task-item row items-center q-py-xxs`},[N(K,{name:O(e.status),size:`14px`,style:f({color:k(e.status)}),class:`q-mr-xs cursor-pointer`,onClick:t=>D(e)},null,8,[`name`,`style`,`onClick`]),p.value===e.id?(F(),j(Ae,{key:0,ref_for:!0,ref:t=>_(e.id,t),modelValue:m.value,"onUpdate:modelValue":n[1]||=e=>m.value=e,dark:``,dense:``,borderless:``,class:`col task-input`,"input-class":`task-input-inner`,onKeydown:[U(P(t=>w(e),[`prevent`]),[`enter`]),U(P(T,[`prevent`]),[`esc`])],onBlur:t=>w(e)},null,8,[`modelValue`,`onKeydown`,`onBlur`])):(F(),B(A,{key:1},[W(`span`,{class:s([`col task-title text-caption`,{"text-strike":e.status===`done`}]),style:f({color:e.status===`done`?`#4ade80`:`#ccc`}),onDblclick:t=>C(e)},V(e.title),47,Yt),N(H,{flat:``,dense:``,round:``,size:`xs`,icon:`close`,color:`grey-6`,class:`task-delete-btn`,onClick:t=>E(e)},null,8,[`onClick`])],64))]))),128))])):M(``,!0)],64)):(F(),B(`div`,Xt,` Select a workspace `))]))}}),[[`__scopeId`,`data-v-5f29da43`]]);function Qt(e,n){let r=t(null),i=L(()=>e.disable===!0?null:q(`span`,{ref:r,class:`no-outline`,tabindex:-1}));function a(e){let t=n.value;e?.qAvoidFocus!==!0&&(e?.type.indexOf(`key`)===0?document.activeElement!==t&&t?.contains(document.activeElement)===!0&&t.focus():r.value!==null&&(e===void 0||t?.contains(e.target)===!0)&&r.value.focus())}return{refocusTargetEl:i,refocusTarget:a}}var $t={xs:30,sm:35,md:40,lg:50,xl:60},en={...we,...r,...Me,modelValue:{required:!0,default:null},val:{},trueValue:{default:!0},falseValue:{default:!1},indeterminateValue:{default:null},checkedIcon:String,uncheckedIcon:String,indeterminateIcon:String,toggleOrder:{type:String,validator:e=>e===`tf`||e===`ft`},toggleIndeterminate:Boolean,label:String,leftLabel:Boolean,color:String,keepColor:Boolean,dense:Boolean,disable:Boolean,tabindex:[String,Number]},tn=[`update:modelValue`];function nn(e,r){let{props:i,slots:a,emit:s,proxy:c}=G(),{$q:l}=c,u=Te(i,l),d=t(null),{refocusTargetEl:f,refocusTarget:p}=Qt(i,d),m=b(i,$t),h=L(()=>i.val!==void 0&&Array.isArray(i.modelValue)),g=L(()=>{let e=C(i.val);return h.value===!0?i.modelValue.findIndex(t=>C(t)===e):-1}),_=L(()=>h.value===!0?g.value!==-1:C(i.modelValue)===C(i.trueValue)),v=L(()=>h.value===!0?g.value===-1:C(i.modelValue)===C(i.falseValue)),y=L(()=>_.value===!1&&v.value===!1),x=L(()=>i.disable===!0?-1:i.tabindex||0),S=L(()=>`q-${e} cursor-pointer no-outline row inline no-wrap items-center`+(i.disable===!0?` disabled`:``)+(u.value===!0?` q-${e}--dark`:``)+(i.dense===!0?` q-${e}--dense`:``)+(i.leftLabel===!0?` reverse`:``)),w=L(()=>`q-${e}__inner relative-position non-selectable q-${e}__inner--${_.value===!0?`truthy`:v.value===!0?`falsy`:`indet`}${i.color!==void 0&&(i.keepColor===!0||(e===`toggle`?_.value===!0:v.value!==!0))?` text-${i.color}`:``}`),T=ke(L(()=>{let e={type:`checkbox`};return i.name!==void 0&&Object.assign(e,{".checked":_.value,"^checked":_.value===!0?`checked`:void 0,name:i.name,value:h.value===!0?i.val:i.trueValue}),e})),E=L(()=>{let t={tabindex:x.value,role:e===`toggle`?`switch`:`checkbox`,"aria-label":i.label,"aria-checked":y.value===!0?`mixed`:_.value===!0?`true`:`false`};return i.disable===!0&&(t[`aria-disabled`]=`true`),t});function D(e){e!==void 0&&(o(e),p(e)),i.disable!==!0&&s(`update:modelValue`,O(),e)}function O(){if(h.value===!0){if(_.value===!0){let e=i.modelValue.slice();return e.splice(g.value,1),e}return i.modelValue.concat([i.val])}if(_.value===!0){if(i.toggleOrder!==`ft`||i.toggleIndeterminate===!1)return i.falseValue}else if(v.value===!0){if(i.toggleOrder===`ft`||i.toggleIndeterminate===!1)return i.trueValue}else return i.toggleOrder===`ft`?i.falseValue:i.trueValue;return i.indeterminateValue}function k(e){(e.keyCode===13||e.keyCode===32)&&o(e)}function A(e){(e.keyCode===13||e.keyCode===32)&&D(e)}let ee=r(_,y);return Object.assign(c,{toggle:D}),()=>{let t=ee();i.disable!==!0&&T(t,`unshift`,` q-${e}__native absolute q-ma-none q-pa-none`);let r=[q(`div`,{class:w.value,style:m.value,"aria-hidden":`true`},t)];f.value!==null&&r.push(f.value);let o=i.label===void 0?n(a.default):ae(a.default,[i.label]);return o!==void 0&&r.push(q(`div`,{class:`q-${e}__label q-anchor--skip`},o)),q(`div`,{ref:d,class:S.value,...E.value,onClick:D,onKeydown:k,onKeyup:A},r)}}var rn=()=>q(`div`,{key:`svg`,class:`q-checkbox__bg absolute`},[q(`svg`,{class:`q-checkbox__svg fit absolute-full`,viewBox:`0 0 24 24`},[q(`path`,{class:`q-checkbox__truthy`,fill:`none`,d:`M1.73,12.91 8.1,19.28 22.79,4.59`}),q(`path`,{class:`q-checkbox__indet`,d:`M4,14H20V10H4`})])]),an=d({name:`QCheckbox`,props:en,emits:tn,setup(e){let t=rn();function n(n,r){let i=L(()=>(n.value===!0?e.checkedIcon:r.value===!0?e.indeterminateIcon:e.uncheckedIcon)||null);return()=>i.value===null?[t]:[q(`div`,{key:`icon`,class:`q-checkbox__icon-container absolute-full flex flex-center no-wrap`},[q(K,{class:`q-checkbox__icon`,name:i.value})])]}return nn(`checkbox`,n)}}),on=d({name:`QCardActions`,props:{...ne,vertical:Boolean},setup(e,{slots:t}){let r=ie(e),i=L(()=>`q-card__actions ${r.value} q-card__actions--${e.vertical===!0?`vert column`:`horiz row`}`);return()=>q(`div`,{class:i.value},n(t.default))}}),sn={class:`workspace-list column full-height`},cn={class:`wl-header row items-center justify-between q-px-md q-py-sm`},ln={class:`row items-center q-gutter-xs`},un={class:`q-px-md q-pb-sm`},dn={class:`col overflow-auto`},fn={key:0,class:`wl-group q-mt-xs`},pn=[`onClick`],mn={class:`col`,style:{"min-width":`0`}},hn={class:`row items-center no-wrap q-gutter-xs`},gn={key:0,class:`dd-dot dd-dot--running`},_n={class:`wl-item-name text-body2 text-weight-medium text-grey-3 ellipsis`},vn={class:`text-caption q-mt-xs`},yn={class:`text-red-5`},bn={class:`q-ml-xs text-grey-8`},xn={key:1,class:`wl-group q-mt-xs`},Sn=[`onClick`],Cn={class:`col`,style:{"min-width":`0`}},wn={class:`row items-center no-wrap q-gutter-xs`},Tn={key:0,class:`dd-dot dd-dot--running`},En={class:`wl-item-name text-body2 text-weight-medium text-grey-3 ellipsis`},Dn={class:`text-caption q-mt-xs`},On={class:`text-green-4`},kn={class:`q-ml-xs text-grey-8`},An={key:2,class:`wl-group q-mt-xs`},jn=[`onClick`],Mn={class:`col`,style:{"min-width":`0`}},Nn={class:`row items-center no-wrap q-gutter-xs`},Pn={key:0,class:`dd-dot dd-dot--running`},Fn={class:`wl-item-name text-body2 text-weight-medium text-grey-3 ellipsis`},In={class:`wl-item-meta text-caption text-grey-8`},Ln={key:3,class:`wl-group q-mt-xs`},Rn={class:`col`,style:{"min-width":`0`}},zn={class:`wl-item-name text-body2 text-grey-5 ellipsis`},Bn={class:`wl-item-meta text-caption text-grey-8`},Vn={key:4,class:`q-pa-lg text-center text-grey-6 text-caption`},Hn={class:`q-px-md q-py-xs text-caption text-grey-8`},Un={class:`text-body2 q-mb-sm text-grey-6`},Wn={class:`text-caption q-mb-md text-grey-7`,style:{"font-family":`monospace`}},Gn={class:`column q-gutter-xs`},Kn={key:0,class:`text-caption q-mt-sm text-red-5`},qn=Z(k({__name:`WorkspaceList`,setup(e){let n=fe(),r=de(),i=le(),a=Ve(),o=J(),c=t(``),l=L(()=>n.needsAttention.filter(e=>e.name.toLowerCase().includes(c.value.toLowerCase()))),d=L(()=>n.running.filter(e=>e.name.toLowerCase().includes(c.value.toLowerCase()))),f=L(()=>n.idle.filter(e=>e.name.toLowerCase().includes(c.value.toLowerCase()))),m=L(()=>n.workspaces.length),_=L(()=>n.running.length),v=t(!0),y=t(!0),b=t(!0),x=t(!1);async function S(){x.value=!x.value,x.value&&!n.archivedLoaded&&await n.fetchArchivedWorkspaces()}let C=t(!1),w=t(null),T=t(!1),D=t(!1),O=t(!1);function k(e,t){t.stopPropagation(),w.value=e,T.value=!0,D.value=!1,C.value=!0}async function ee(){if(!w.value)return;let e=w.value.id;O.value=!0;try{await n.deleteWorkspace(e,{deleteLocalBranch:T.value,deleteRemoteBranch:D.value}),r.unsubscribe(e),C.value=!1,n.selectedWorkspaceId===null&&o.push({name:`workspace`})}catch(e){console.error(`Delete failed:`,e)}finally{O.value=!1}}async function te(e,t){t.stopPropagation();try{await n.archiveWorkspace(e.id),n.selectedWorkspaceId===null&&o.push({name:`workspace`})}catch(e){console.error(`Archive failed:`,e)}}async function ne(e,t){t.stopPropagation();try{await n.unarchiveWorkspace(e.id),a.getProjectByPath(e.projectPath)?.devServer?.startCommand&&i.fetchStatus(e.id)}catch(e){console.error(`Unarchive failed:`,e)}}function P(e){let t=Date.now()-new Date(e).getTime(),n=Math.floor(t/6e4);if(n<1)return`just now`;if(n<60)return`${n}m ago`;let r=Math.floor(n/60);return r<24?`${r}h ago`:`${Math.floor(r/24)}d ago`}function I(e){n.selectWorkspace(e),o.push({name:`workspace`,params:{id:e}})}function re(){o.push({name:`create`})}function U(){o.push({name:`settings`})}return g(async()=>{await n.fetchWorkspaces(),await n.fetchArchivedWorkspaces(),await a.fetchSettings();for(let e of n.workspaces)r.subscribe(e.id),a.getProjectByPath(e.projectPath)?.devServer?.startCommand&&i.fetchStatus(e.id)}),(e,t)=>(F(),B(A,null,[W(`div`,sn,[W(`div`,cn,[t[8]||=W(`span`,{class:`text-caption text-uppercase text-weight-bold text-grey-6`,style:{"letter-spacing":`0.05em`}},` Workspaces `,-1),W(`div`,ln,[E(r).connected?(F(),j($,{key:0,rounded:``,color:`positive`,style:{width:`8px`,height:`8px`,"min-width":`8px`,padding:`0`}})):(F(),j($,{key:1,rounded:``,color:`negative`,style:{width:`8px`,height:`8px`,"min-width":`8px`,padding:`0`}})),N(H,{flat:``,round:``,dense:``,icon:`settings`,size:`sm`,color:`grey-5`,onClick:U}),N(H,{flat:``,round:``,dense:``,icon:`add`,size:`sm`,color:`grey-5`,onClick:re})])]),W(`div`,un,[N(Ae,{modelValue:c.value,"onUpdate:modelValue":t[0]||=e=>c.value=e,dense:``,dark:``,placeholder:`Search...`,class:`wl-search rounded-borders`,borderless:``},{prepend:u(()=>[N(K,{name:`search`,size:`xs`,color:`grey-6`})]),_:1},8,[`modelValue`])]),N(De,{dark:``}),W(`div`,dn,[l.value.length>0?(F(),B(`div`,fn,[W(`div`,{class:`wl-group-header row items-center q-px-md q-py-xs cursor-pointer non-selectable`,onClick:t[1]||=e=>v.value=!v.value},[N(K,{name:v.value?`expand_more`:`chevron_right`,size:`xs`,color:`red-5`},null,8,[`name`]),t[9]||=W(`span`,{class:`text-caption text-weight-bold q-ml-xs text-red-5`},` Needs Attention `,-1),N($,{label:l.value.length,color:`red-9`,"text-color":`white`,class:`q-ml-auto`,style:{"font-size":`10px`}},null,8,[`label`])]),p(W(`div`,null,[(F(!0),B(A,null,h(l.value,e=>(F(),B(`div`,{key:e.id,class:s([`wl-item cursor-pointer q-pa-sm q-mx-xs rounded-borders`,{"wl-item--selected":e.id===E(n).selectedWorkspaceId}]),style:{"border-left":`3px solid #ef4444`},onClick:t=>I(e.id)},[W(`div`,mn,[W(`div`,hn,[E(i).getStatus(e.id)?.status===`running`?(F(),B(`div`,gn)):M(``,!0),W(`div`,_n,V(e.name),1)]),W(`div`,vn,[N(K,{name:`warning`,size:`xs`,color:`red-5`,class:`q-mr-xs`}),W(`span`,yn,V(e.status),1),W(`span`,bn,`· `+V(P(e.updatedAt)),1)])]),N(H,{flat:``,round:``,dense:``,icon:`archive`,size:`xs`,color:`grey-6`,class:`wl-item-action wl-item-archive`,onClick:t=>te(e,t)},{default:u(()=>[N(Q,null,{default:u(()=>[...t[10]||=[R(`Archive`,-1)]]),_:1})]),_:1},8,[`onClick`]),N(H,{flat:``,round:``,dense:``,icon:`delete_outline`,size:`xs`,color:`grey-6`,class:`wl-item-action wl-item-delete`,onClick:t=>k(e,t)},{default:u(()=>[N(Q,null,{default:u(()=>[...t[11]||=[R(`Delete`,-1)]]),_:1})]),_:1},8,[`onClick`])],10,pn))),128))],512),[[z,v.value]])])):M(``,!0),d.value.length>0?(F(),B(`div`,xn,[W(`div`,{class:`wl-group-header row items-center q-px-md q-py-xs cursor-pointer non-selectable`,onClick:t[2]||=e=>y.value=!y.value},[N(K,{name:y.value?`expand_more`:`chevron_right`,size:`xs`,color:`green-5`},null,8,[`name`]),t[12]||=W(`span`,{class:`text-caption text-weight-bold q-ml-xs text-green-4`},` Running `,-1),N($,{label:d.value.length,color:`green-9`,"text-color":`white`,class:`q-ml-auto`,style:{"font-size":`10px`}},null,8,[`label`])]),p(W(`div`,null,[(F(!0),B(A,null,h(d.value,e=>(F(),B(`div`,{key:e.id,class:s([`wl-item cursor-pointer q-pa-sm q-mx-xs rounded-borders`,{"wl-item--selected":e.id===E(n).selectedWorkspaceId}]),style:{"border-left":`3px solid #4ade80`},onClick:t=>I(e.id)},[W(`div`,Cn,[W(`div`,wn,[E(i).getStatus(e.id)?.status===`running`?(F(),B(`div`,Tn)):M(``,!0),W(`div`,En,V(e.name),1)]),W(`div`,Dn,[W(`span`,On,V(e.status),1),W(`span`,kn,`· `+V(P(e.updatedAt)),1)])]),N(H,{flat:``,round:``,dense:``,icon:`archive`,size:`xs`,color:`grey-6`,class:`wl-item-action wl-item-archive`,onClick:t=>te(e,t)},{default:u(()=>[N(Q,null,{default:u(()=>[...t[13]||=[R(`Archive`,-1)]]),_:1})]),_:1},8,[`onClick`]),N(H,{flat:``,round:``,dense:``,icon:`delete_outline`,size:`xs`,color:`grey-6`,class:`wl-item-action wl-item-delete`,onClick:t=>k(e,t)},{default:u(()=>[N(Q,null,{default:u(()=>[...t[14]||=[R(`Delete`,-1)]]),_:1})]),_:1},8,[`onClick`])],10,Sn))),128))],512),[[z,y.value]])])):M(``,!0),f.value.length>0?(F(),B(`div`,An,[W(`div`,{class:`wl-group-header row items-center q-px-md q-py-xs cursor-pointer non-selectable`,onClick:t[3]||=e=>b.value=!b.value},[N(K,{name:b.value?`expand_more`:`chevron_right`,size:`xs`,color:`grey-6`},null,8,[`name`]),t[15]||=W(`span`,{class:`text-caption text-weight-bold q-ml-xs text-grey-6`},` Idle `,-1),N($,{label:f.value.length,color:`grey-8`,"text-color":`grey-4`,class:`q-ml-auto`,style:{"font-size":`10px`}},null,8,[`label`])]),p(W(`div`,null,[(F(!0),B(A,null,h(f.value,e=>(F(),B(`div`,{key:e.id,class:s([`wl-item cursor-pointer q-pa-sm q-mx-xs rounded-borders`,{"wl-item--selected":e.id===E(n).selectedWorkspaceId}]),style:{"border-left":`3px solid #666`},onClick:t=>I(e.id)},[W(`div`,Mn,[W(`div`,Nn,[E(i).getStatus(e.id)?.status===`running`?(F(),B(`div`,Pn)):M(``,!0),W(`div`,Fn,V(e.name),1)]),W(`div`,In,V(P(e.updatedAt)),1)]),N(H,{flat:``,round:``,dense:``,icon:`archive`,size:`xs`,color:`grey-6`,class:`wl-item-action wl-item-archive`,onClick:t=>te(e,t)},{default:u(()=>[N(Q,null,{default:u(()=>[...t[16]||=[R(`Archive`,-1)]]),_:1})]),_:1},8,[`onClick`]),N(H,{flat:``,round:``,dense:``,icon:`delete_outline`,size:`xs`,color:`grey-6`,class:`wl-item-action wl-item-delete`,onClick:t=>k(e,t)},{default:u(()=>[N(Q,null,{default:u(()=>[...t[17]||=[R(`Delete`,-1)]]),_:1})]),_:1},8,[`onClick`])],10,jn))),128))],512),[[z,b.value]])])):M(``,!0),E(n).archived.length>0||x.value?(F(),B(`div`,Ln,[W(`div`,{class:`wl-group-header row items-center q-px-md q-py-xs cursor-pointer non-selectable`,onClick:S},[N(K,{name:x.value?`expand_more`:`chevron_right`,size:`xs`,color:`grey-7`},null,8,[`name`]),N(K,{name:`inventory_2`,size:`xs`,color:`grey-7`,class:`q-ml-xs`}),t[18]||=W(`span`,{class:`text-caption text-weight-bold q-ml-xs text-grey-7`},` Archived `,-1),E(n).archived.length>0?(F(),j($,{key:0,label:E(n).archived.length,color:`grey-9`,"text-color":`grey-5`,class:`q-ml-auto`,style:{"font-size":`10px`}},null,8,[`label`])):M(``,!0)]),p(W(`div`,null,[(F(!0),B(A,null,h(E(n).archived,e=>(F(),B(`div`,{key:e.id,class:`wl-item wl-item--archived q-pa-sm q-mx-xs rounded-borders`,style:{"border-left":`3px solid #555`}},[W(`div`,Rn,[W(`div`,zn,V(e.name),1),W(`div`,Bn,` Archived `+V(P(e.archivedAt)),1)]),N(H,{flat:``,round:``,dense:``,icon:`unarchive`,size:`xs`,color:`grey-6`,class:`wl-item-action wl-item-unarchive`,onClick:t=>ne(e,t)},{default:u(()=>[N(Q,null,{default:u(()=>[...t[19]||=[R(`Unarchive`,-1)]]),_:1})]),_:1},8,[`onClick`]),N(H,{flat:``,round:``,dense:``,icon:`delete_outline`,size:`xs`,color:`grey-6`,class:`wl-item-action wl-item-delete`,onClick:t=>k(e,t)},{default:u(()=>[N(Q,null,{default:u(()=>[...t[20]||=[R(`Delete`,-1)]]),_:1})]),_:1},8,[`onClick`])]))),128))],512),[[z,x.value]])])):M(``,!0),l.value.length===0&&d.value.length===0&&f.value.length===0&&E(n).archived.length===0?(F(),B(`div`,Vn,[E(n).loading?(F(),B(A,{key:0},[R(`Loading...`)],64)):c.value?(F(),B(A,{key:1},[R(`No results for "`+V(c.value)+`"`,1)],64)):(F(),B(A,{key:2},[R(`No workspaces yet`)],64))])):M(``,!0)]),N(De,{dark:``}),W(`div`,Hn,V(m.value)+` workspace`+V(m.value===1?``:`s`)+` · `+V(_.value)+` running `,1)]),N(je,{modelValue:C.value,"onUpdate:modelValue":t[7]||=e=>C.value=e,persistent:``},{default:u(()=>[N(st,{class:`text-grey-3`,style:{"min-width":`360px`,background:`#1e1e3a`}},{default:u(()=>[N(ot,null,{default:u(()=>[...t[21]||=[W(`div`,{class:`text-h6`},`Delete workspace?`,-1)]]),_:1}),N(ot,{class:`q-pt-none`},{default:u(()=>[W(`div`,Un,V(w.value?.name),1),W(`div`,Wn,V(w.value?.workingBranch),1),W(`div`,Gn,[N(an,{modelValue:T.value,"onUpdate:modelValue":t[4]||=e=>T.value=e,label:`Delete local branch`,dark:``,dense:``,color:`red-5`},null,8,[`modelValue`]),N(an,{modelValue:D.value,"onUpdate:modelValue":t[5]||=e=>D.value=e,disable:!T.value,label:`Delete remote branch`,dark:``,dense:``,color:`red-5`},null,8,[`modelValue`,`disable`])]),D.value?(F(),B(`div`,Kn,` Warning: this action is irreversible on the remote. `)):M(``,!0)]),_:1}),N(on,{align:`right`},{default:u(()=>[N(H,{flat:``,label:`Cancel`,color:`grey-5`,onClick:t[6]||=e=>C.value=!1,disable:O.value},null,8,[`disable`]),N(H,{flat:``,label:`Delete`,color:`red-5`,loading:O.value,onClick:ee},null,8,[`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`])],64))}}),[[`__scopeId`,`data-v-9d4c8886`]]),Jn={class:`drawer-content column full-height`},Yn=`at-left-drawer-width`,Xn=Z(k({__name:`MainLayout`,setup(e){let n=t(`git`),r=t(!0),i=t(!0),a=parseInt(localStorage.getItem(Yn)??`260`,10),o=t(Math.min(500,Math.max(200,a))),s=t(!1);function c(e){e.preventDefault(),s.value=!0;let t=e=>{o.value=Math.min(500,Math.max(200,e.clientX))},n=()=>{s.value=!1,localStorage.setItem(Yn,String(o.value)),document.removeEventListener(`mousemove`,t),document.removeEventListener(`mouseup`,n),document.body.style.cursor=``,document.body.style.userSelect=``};document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`,document.addEventListener(`mousemove`,t),document.addEventListener(`mouseup`,n)}let l=fe();return(e,t)=>{let a=_(`router-view`);return F(),j(Qe,{view:`lHh LpR lFf`},{default:u(()=>[N(qe,{modelValue:r.value,"onUpdate:modelValue":t[0]||=e=>r.value=e,width:o.value,breakpoint:0,persistent:``,bordered:``,class:`left-sidebar`},{default:u(()=>[N(qn),W(`div`,{class:`resize-handle`,onMousedown:c},null,32)]),_:1},8,[`modelValue`,`width`]),N(qe,{modelValue:i.value,"onUpdate:modelValue":t[3]||=e=>i.value=e,side:`right`,width:300,breakpoint:0,persistent:``,bordered:``,class:`right-sidebar`},{default:u(()=>[W(`div`,Jn,[N(Re,{modelValue:n.value,"onUpdate:modelValue":t[1]||=e=>n.value=e,dense:``,dark:``,"active-color":`indigo-4`,"indicator-color":`indigo-4`,"narrow-indicator":``,align:`justify`,class:`right-tabs`},{default:u(()=>[N(Pe,{name:`git`,icon:`commit`}),N(Pe,{name:`server`,icon:`dns`}),N(Pe,{name:`tasks`,icon:`checklist`})]),_:1},8,[`modelValue`]),N(De,{dark:``}),N(Be,{modelValue:n.value,"onUpdate:modelValue":t[2]||=e=>n.value=e,animated:``,class:`col right-tab-panels`},{default:u(()=>[N(Ie,{name:`git`,class:`q-pa-none`},{default:u(()=>[N(Ft,{workspace:E(l).selectedWorkspace},null,8,[`workspace`])]),_:1}),N(Ie,{name:`server`,class:`q-pa-none`},{default:u(()=>[N(vt,{workspace:E(l).selectedWorkspace},null,8,[`workspace`])]),_:1}),N(Ie,{name:`tasks`,class:`q-pa-none`},{default:u(()=>[N(Zt,{workspace:E(l).selectedWorkspace,tasks:E(l).tasks},null,8,[`workspace`,`tasks`]),N(De,{dark:``}),N(at,{tasks:E(l).acceptanceCriteria},null,8,[`tasks`])]),_:1})]),_:1},8,[`modelValue`])])]),_:1},8,[`modelValue`]),N(Je,{class:`main-content`},{default:u(()=>[N(a)]),_:1})]),_:1})}}}),[[`__scopeId`,`data-v-57ce5ee5`]]);export{Xn as default};
@@ -1 +0,0 @@
1
- import{K as e,lt as t,x as n,yt as r}from"./nodes-DeIen-kp.js";var i=[`top`,`middle`,`bottom`],a=e({name:`QBadge`,props:{color:String,textColor:String,floating:Boolean,transparent:Boolean,multiLine:Boolean,outline:Boolean,rounded:Boolean,label:[Number,String],align:{type:String,validator:e=>i.includes(e)}},setup(e,{slots:i}){let a=t(()=>e.align===void 0?null:{verticalAlign:e.align}),o=t(()=>{let t=e.outline===!0&&e.color||e.textColor;return`q-badge flex inline items-center no-wrap q-badge--${e.multiLine===!0?`multi`:`single`}-line`+(e.outline===!0?` q-badge--outline`:e.color===void 0?``:` bg-${e.color}`)+(t===void 0?``:` text-${t}`)+(e.floating===!0?` q-badge--floating`:``)+(e.rounded===!0?` q-badge--rounded`:``)+(e.transparent===!0?` q-badge--transparent`:``)});return()=>r(`div`,{class:o.value,style:a.value,role:`status`,"aria-label":e.label},n(i.default,e.label===void 0?[]:[e.label]))}});export{a as t};
@@ -1 +0,0 @@
1
- import{$ as e,Bt as t,C as n,Ct as r,Dt as i,Et as a,Ft as o,G as s,H as c,K as l,L as u,M as d,Ot as f,P as p,Q as m,St as h,Tt as g,W as _,X as v,Z as y,bt as b,g as x,lt as S,p as ee,vt as C,y as w,yt as T,z as E}from"./nodes-DeIen-kp.js";import{d as D,g as O,h as k}from"./index-DJkEmbBM.js";import{C as A,S as j,_ as M,b as te,c as N,d as P,f as ne,g as re,h as ie,m as ae,v as F,w as I,x as L}from"./_plugin-vue_export-helper-CHpmshS7.js";function R(e,t,n){let r;function i(){r!==void 0&&(k.remove(r),r=void 0)}return g(()=>{e.value===!0&&i()}),{removeFromHistory:i,addToHistory(){r={condition:()=>n.value===!0,handler:t},k.add(r)}}}var z=0,B,V,H,U=!1,W,G,oe,K=null;function se(e){ce(e)&&s(e)}function ce(e){if(e.target===document.body||e.target.classList.contains(`q-layout__backdrop`))return!0;let t=u(e),n=e.shiftKey&&!e.deltaX,r=!n&&Math.abs(e.deltaX)<=Math.abs(e.deltaY),i=n||r?e.deltaY:e.deltaX;for(let e=0;e<t.length;e++){let n=t[e];if(ne(n,r))return r?i<0&&n.scrollTop===0?!0:i>0&&n.scrollTop+n.clientHeight===n.scrollHeight:i<0&&n.scrollLeft===0?!0:i>0&&n.scrollLeft+n.clientWidth===n.scrollWidth}return!0}function q(e){e.target===document&&(document.scrollingElement.scrollTop=document.scrollingElement.scrollTop)}function J(e){U!==!0&&(U=!0,requestAnimationFrame(()=>{U=!1;let{height:t}=e.target,{clientHeight:n,scrollTop:r}=document.scrollingElement;(H===void 0||t!==window.innerHeight)&&(H=n-t,document.scrollingElement.scrollTop=r),r>H&&(document.scrollingElement.scrollTop-=Math.ceil((r-H)/8))}))}function le(e){let t=document.body,n=window.visualViewport!==void 0;if(e===`add`){let{overflowY:e,overflowX:r}=window.getComputedStyle(t);B=N(window),V=P(window),W=t.style.left,G=t.style.top,oe=window.location.href,t.style.left=`-${B}px`,t.style.top=`-${V}px`,r!==`hidden`&&(r===`scroll`||t.scrollWidth>window.innerWidth)&&t.classList.add(`q-body--force-scrollbar-x`),e!==`hidden`&&(e===`scroll`||t.scrollHeight>window.innerHeight)&&t.classList.add(`q-body--force-scrollbar-y`),t.classList.add(`q-body--prevent-scroll`),document.qScrollPrevented=!0,v.is.ios===!0&&(n===!0?(window.scrollTo(0,0),window.visualViewport.addEventListener(`resize`,J,E.passiveCapture),window.visualViewport.addEventListener(`scroll`,J,E.passiveCapture),window.scrollTo(0,0)):window.addEventListener(`scroll`,q,E.passiveCapture))}v.is.desktop===!0&&v.is.mac===!0&&window[`${e}EventListener`](`wheel`,se,E.notPassive),e===`remove`&&(v.is.ios===!0&&(n===!0?(window.visualViewport.removeEventListener(`resize`,J,E.passiveCapture),window.visualViewport.removeEventListener(`scroll`,J,E.passiveCapture)):window.removeEventListener(`scroll`,q,E.passiveCapture)),t.classList.remove(`q-body--prevent-scroll`),t.classList.remove(`q-body--force-scrollbar-x`),t.classList.remove(`q-body--force-scrollbar-y`),document.qScrollPrevented=!1,t.style.left=W,t.style.top=G,window.location.href===oe&&window.scrollTo(B,V),H=void 0)}function ue(e){let t=`add`;if(e===!0){if(z++,K!==null){clearTimeout(K),K=null;return}if(z>1)return}else{if(z===0||(z--,z>0))return;if(t=`remove`,v.is.ios===!0&&v.is.nativeMobile===!0){K!==null&&clearTimeout(K),K=setTimeout(()=>{le(t),K=null},100);return}}le(t)}function de(){let e;return{preventBodyScroll(t){t!==e&&(e!==void 0||t===!0)&&(e=t,ue(t))}}}var fe={dark:{type:Boolean,default:null}};function pe(e,t){return S(()=>e.dark===null?t.dark.isActive:e.dark)}function me(e,t,n){return n<=t?t:Math.min(n,Math.max(t,e))}function he(e,t,n){if(n<=t)return t;let r=n-t+1,i=t+(e-t)%r;return i<t&&(i=r+i),i===0?0:i}var ge,_e=0,Y=Array(256);for(let e=0;e<256;e++)Y[e]=(e+256).toString(16).substring(1);var ve=(()=>{let e=typeof crypto<`u`?crypto:typeof window<`u`?window.crypto||window.msCrypto:void 0;if(e!==void 0){if(e.randomBytes!==void 0)return e.randomBytes;if(e.getRandomValues!==void 0)return t=>{let n=new Uint8Array(t);return e.getRandomValues(n),n}}return e=>{let t=[];for(let n=e;n>0;n--)t.push(Math.floor(Math.random()*256));return t}})(),ye=4096;function be(){(ge===void 0||_e+16>ye)&&(_e=0,ge=ve(ye));let e=Array.prototype.slice.call(ge,_e,_e+=16);return e[6]=e[6]&15|64,e[8]=e[8]&63|128,Y[e[0]]+Y[e[1]]+Y[e[2]]+Y[e[3]]+`-`+Y[e[4]]+Y[e[5]]+`-`+Y[e[6]]+Y[e[7]]+`-`+Y[e[8]]+Y[e[9]]+`-`+Y[e[10]]+Y[e[11]]+Y[e[12]]+Y[e[13]]+Y[e[14]]+Y[e[15]]}var xe=!1;{let e=document.createElement(`div`);e.setAttribute(`dir`,`rtl`),Object.assign(e.style,{width:`1px`,height:`1px`,overflow:`auto`});let t=document.createElement(`div`);Object.assign(t.style,{width:`1000px`,height:`1px`}),document.body.appendChild(e),e.appendChild(t),e.scrollLeft=-1e3,xe=e.scrollLeft>=0,e.remove()}var Se={true:`inset`,item:`item-inset`,"item-thumbnail":`item-thumbnail-inset`},Ce={xs:2,sm:4,md:8,lg:16,xl:24},we=l({name:`QSeparator`,props:{...fe,spaced:[Boolean,String],inset:[Boolean,String],vertical:Boolean,color:String,size:String},setup(e){let t=pe(e,C().proxy.$q),n=S(()=>e.vertical===!0?`vertical`:`horizontal`),r=S(()=>` q-separator--${n.value}`),i=S(()=>e.inset===!1?``:`${r.value}-${Se[e.inset]}`),a=S(()=>`q-separator${r.value}${i.value}`+(e.color===void 0?``:` bg-${e.color}`)+(t.value===!0?` q-separator--dark`:``)),o=S(()=>{let t={};if(e.size!==void 0&&(t[e.vertical===!0?`width`:`height`]=e.size),e.spaced!==!1){let n=e.spaced===!0?`${Ce.md}px`:e.spaced in Ce?`${Ce[e.spaced]}px`:e.spaced,r=e.vertical===!0?[`Left`,`Right`]:[`Top`,`Bottom`];t[`margin${r[0]}`]=t[`margin${r[1]}`]=n}return t});return()=>T(`hr`,{class:a.value,style:o.value,"aria-orientation":n.value})}});function Te(e){return e??null}function Ee(e,t){return e??(t===!0?`f_${be()}`:null)}function De({getValue:e,required:n=!0}={}){if(y.value===!0){let r=t(e===void 0?null:Te(e()));return n===!0&&r.value===null&&f(()=>{r.value=`f_${be()}`}),e!==void 0&&o(e,e=>{r.value=Ee(e,n)}),r}return e===void 0?t(`f_${be()}`):S(()=>Ee(e(),n))}var Oe=/^on[A-Z]/;function ke(){let{attrs:e,vnode:n}=C(),r={listeners:t({}),attributes:t({})};function i(){let t={},i={};for(let n in e)n!==`class`&&n!==`style`&&Oe.test(n)===!1&&(t[n]=e[n]);for(let e in n.props)Oe.test(e)===!0&&(i[e]=n.props[e]);r.attributes.value=t,r.listeners.value=i}return a(i),i(),r}function Ae({validate:e,resetValidation:t,requiresQForm:n}){let r=b(D,!1);if(r!==!1){let{props:n,proxy:i}=C();Object.assign(i,{validate:e,resetValidation:t}),o(()=>n.disable,e=>{e===!0?(typeof t==`function`&&t(),r.unbindComponent(i)):r.bindComponent(i)}),f(()=>{n.disable!==!0&&r.bindComponent(i)}),g(()=>{n.disable!==!0&&r.unbindComponent(i)})}else n===!0&&console.error(`Parent QForm not found on useFormChild()!`)}var je=/^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/,Me=/^#[0-9a-fA-F]{4}([0-9a-fA-F]{4})?$/,Ne=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/,Pe=/^rgb\(((0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5]),){2}(0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5])\)$/,Fe=/^rgba\(((0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5]),){2}(0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5]),(0|0\.[0-9]+[1-9]|0\.[1-9]+|1)\)$/,Ie={date:e=>/^-?[\d]+\/[0-1]\d\/[0-3]\d$/.test(e),time:e=>/^([0-1]?\d|2[0-3]):[0-5]\d$/.test(e),fulltime:e=>/^([0-1]?\d|2[0-3]):[0-5]\d:[0-5]\d$/.test(e),timeOrFulltime:e=>/^([0-1]?\d|2[0-3]):[0-5]\d(:[0-5]\d)?$/.test(e),email:e=>/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e),hexColor:e=>je.test(e),hexaColor:e=>Me.test(e),hexOrHexaColor:e=>Ne.test(e),rgbColor:e=>Pe.test(e),rgbaColor:e=>Fe.test(e),rgbOrRgbaColor:e=>Pe.test(e)||Fe.test(e),hexOrRgbColor:e=>je.test(e)||Pe.test(e),hexaOrRgbaColor:e=>Me.test(e)||Fe.test(e),anyColor:e=>Ne.test(e)||Pe.test(e)||Fe.test(e)},Le=[!0,!1,`ondemand`],Re={modelValue:{},error:{type:Boolean,default:null},errorMessage:String,noErrorIcon:Boolean,rules:Array,reactiveRules:Boolean,lazyRules:{type:[Boolean,String],default:!1,validator:e=>Le.includes(e)}};function ze(e,n){let{props:r,proxy:i}=C(),a=t(!1),s=t(null),c=t(!1);Ae({validate:y,resetValidation:v});let l=0,u,d=S(()=>r.rules!==void 0&&r.rules!==null&&r.rules.length!==0),f=S(()=>r.disable!==!0&&d.value===!0&&n.value===!1),p=S(()=>r.error===!0||a.value===!0),h=S(()=>typeof r.errorMessage==`string`&&r.errorMessage.length!==0?r.errorMessage:s.value);o(()=>r.modelValue,()=>{c.value=!0,f.value===!0&&r.lazyRules===!1&&b()});function _(){r.lazyRules!==`ondemand`&&f.value===!0&&c.value===!0&&b()}o(()=>r.reactiveRules,e=>{e===!0?u===void 0&&(u=o(()=>r.rules,_,{immediate:!0,deep:!0})):u!==void 0&&(u(),u=void 0)},{immediate:!0}),o(()=>r.lazyRules,_),o(e,e=>{e===!0?c.value=!0:f.value===!0&&r.lazyRules!==`ondemand`&&b()});function v(){l++,n.value=!1,c.value=!1,a.value=!1,s.value=null,b.cancel()}function y(e=r.modelValue){if(r.disable===!0||d.value===!1)return!0;let t=++l,i=n.value===!0?()=>{}:()=>{c.value=!0},o=(e,t)=>{e===!0&&i(),a.value=e,s.value=t||null,n.value=!1},u=[];for(let t=0;t<r.rules.length;t++){let n=r.rules[t],i;if(typeof n==`function`?i=n(e,Ie):typeof n==`string`&&Ie[n]!==void 0&&(i=Ie[n](e)),i===!1||typeof i==`string`)return o(!0,i),!1;i!==!0&&i!==void 0&&u.push(i)}return u.length===0?(o(!1),!0):(n.value=!0,Promise.all(u).then(e=>{if(e===void 0||Array.isArray(e)===!1||e.length===0)return t===l&&o(!1),!0;let n=e.find(e=>e===!1||typeof e==`string`);return t===l&&o(n!==void 0,n),n===void 0},e=>(t===l&&(console.error(e),o(!0)),!1)))}let b=O(y,0);return g(()=>{u?.(),b.cancel()}),Object.assign(i,{resetValidation:v,validate:y}),m(i,`hasError`,()=>p.value),{isDirtyModel:c,hasRules:d,hasError:p,errorMessage:h,validate:y,resetValidation:v}}function Be(e){return e!=null&&String(e).length!==0}var Ve={...fe,...Re,label:String,stackLabel:Boolean,hint:String,hideHint:Boolean,prefix:String,suffix:String,labelColor:String,color:String,bgColor:String,filled:Boolean,outlined:Boolean,borderless:Boolean,standout:[Boolean,String],square:Boolean,loading:Boolean,labelSlot:Boolean,bottomSlots:Boolean,hideBottomSpace:Boolean,rounded:Boolean,dense:Boolean,itemAligned:Boolean,counter:Boolean,clearable:Boolean,clearIcon:String,disable:Boolean,readonly:Boolean,autofocus:Boolean,for:String,maxlength:[Number,String]},He=[`update:modelValue`,`clear`,`focus`,`blur`];function Ue({requiredForAttr:e=!0,tagProp:n,changeEvent:r=!1}={}){let{props:i,proxy:a}=C(),o=pe(i,a.$q),s=De({required:e,getValue:()=>i.for});return{requiredForAttr:e,changeEvent:r,tag:n===!0?S(()=>i.tag):{value:`label`},isDark:o,editable:S(()=>i.disable!==!0&&i.readonly!==!0),innerLoading:t(!1),focused:t(!1),hasPopupOpen:!1,splitAttrs:ke(),targetUid:s,rootRef:t(null),targetRef:t(null),controlRef:t(null)}}function We(t){let{props:a,emit:o,slots:l,attrs:u,proxy:d}=C(),{$q:p}=d,m=null;t.hasValue===void 0&&(t.hasValue=S(()=>Be(a.modelValue))),t.emitValue===void 0&&(t.emitValue=e=>{o(`update:modelValue`,e)}),t.controlEvents===void 0&&(t.controlEvents={onFocusin:ae,onFocusout:F}),Object.assign(t,{clearValue:I,onControlFocusin:ae,onControlFocusout:F,focus:re}),t.computedCounter===void 0&&(t.computedCounter=S(()=>{if(a.counter!==!1){let e=typeof a.modelValue==`string`||typeof a.modelValue==`number`?String(a.modelValue).length:Array.isArray(a.modelValue)===!0?a.modelValue.length:0,t=a.maxlength===void 0?a.maxValues:a.maxlength;return e+(t===void 0?``:` / `+t)}}));let{isDirtyModel:_,hasRules:v,hasError:y,errorMessage:b,resetValidation:ee}=ze(t.focused,t.innerLoading),E=t.floatingLabel===void 0?S(()=>a.stackLabel===!0||t.focused.value===!0||t.hasValue.value===!0):S(()=>a.stackLabel===!0||t.focused.value===!0||t.floatingLabel.value===!0),D=S(()=>a.bottomSlots===!0||a.hint!==void 0||v.value===!0||a.counter===!0||a.error!==null),O=S(()=>a.filled===!0?`filled`:a.outlined===!0?`outlined`:a.borderless===!0?`borderless`:a.standout?`standout`:`standard`),k=S(()=>`q-field row no-wrap items-start q-field--${O.value}`+(t.fieldClass===void 0?``:` ${t.fieldClass.value}`)+(a.rounded===!0?` q-field--rounded`:``)+(a.square===!0?` q-field--square`:``)+(E.value===!0?` q-field--float`:``)+(j.value===!0?` q-field--labeled`:``)+(a.dense===!0?` q-field--dense`:``)+(a.itemAligned===!0?` q-field--item-aligned q-item-type`:``)+(t.isDark.value===!0?` q-field--dark`:``)+(t.getControl===void 0?` q-field--auto-height`:``)+(t.focused.value===!0?` q-field--focused`:``)+(y.value===!0?` q-field--error`:``)+(y.value===!0||t.focused.value===!0?` q-field--highlighted`:``)+(a.hideBottomSpace!==!0&&D.value===!0?` q-field--with-bottom`:``)+(a.disable===!0?` q-field--disabled`:a.readonly===!0?` q-field--readonly`:``)),A=S(()=>`q-field__control relative-position row no-wrap`+(a.bgColor===void 0?``:` bg-${a.bgColor}`)+(y.value===!0?` text-negative`:typeof a.standout==`string`&&a.standout.length!==0&&t.focused.value===!0?` ${a.standout}`:a.color===void 0?``:` text-${a.color}`)),j=S(()=>a.labelSlot===!0||a.label!==void 0),M=S(()=>`q-field__label no-pointer-events absolute ellipsis`+(a.labelColor!==void 0&&y.value!==!0?` text-${a.labelColor}`:``)),N=S(()=>({id:t.targetUid.value,editable:t.editable.value,focused:t.focused.value,floatingLabel:E.value,modelValue:a.modelValue,emitValue:t.emitValue})),P=S(()=>{let e={};return t.targetUid.value&&(e.for=t.targetUid.value),a.disable===!0&&(e[`aria-disabled`]=`true`),e});function ne(){let e=document.activeElement,n=t.targetRef?.value;n&&(e===null||e.id!==t.targetUid.value)&&(n.hasAttribute(`tabindex`)!==!0&&(n=n.querySelector(`[tabindex]`)),n!==e&&n?.focus({preventScroll:!0}))}function re(){te(ne)}function ie(){L(ne);let e=document.activeElement;e!==null&&t.rootRef.value.contains(e)&&e.blur()}function ae(e){m!==null&&(clearTimeout(m),m=null),t.editable.value===!0&&t.focused.value===!1&&(t.focused.value=!0,o(`focus`,e))}function F(e,n){m!==null&&clearTimeout(m),m=setTimeout(()=>{m=null,!(document.hasFocus()===!0&&(t.hasPopupOpen===!0||t.controlRef===void 0||t.controlRef.value===null||t.controlRef.value.contains(document.activeElement)!==!1))&&(t.focused.value===!0&&(t.focused.value=!1,o(`blur`,e)),n?.())})}function I(e){s(e),p.platform.is.mobile===!0?t.rootRef.value.contains(document.activeElement)===!0&&document.activeElement.blur():(t.targetRef?.value||t.rootRef.value).focus(),a.type===`file`&&(t.inputRef.value.value=null),o(`update:modelValue`,null),t.changeEvent===!0&&o(`change`,null),o(`clear`,a.modelValue),h(()=>{let e=_.value;ee(),_.value=e})}function R(e){[13,32].includes(e.keyCode)&&I(e)}function z(){let e=[];return l.prepend!==void 0&&e.push(T(`div`,{class:`q-field__prepend q-field__marginal row no-wrap items-center`,key:`prepend`,onClick:c},l.prepend())),e.push(T(`div`,{class:`q-field__control-container col relative-position row no-wrap q-anchor--skip`},B())),y.value===!0&&a.noErrorIcon===!1&&e.push(H(`error`,[T(w,{name:p.iconSet.field.error,color:`negative`})])),a.loading===!0||t.innerLoading.value===!0?e.push(H(`inner-loading-append`,l.loading===void 0?[T(x,{color:a.color})]:l.loading())):a.clearable===!0&&t.hasValue.value===!0&&t.editable.value===!0&&e.push(H(`inner-clearable-append`,[T(w,{class:`q-field__focusable-action`,name:a.clearIcon||p.iconSet.field.clear,tabindex:0,role:`button`,"aria-hidden":`false`,"aria-label":p.lang.label.clear,onKeyup:R,onClick:I})])),l.append!==void 0&&e.push(T(`div`,{class:`q-field__append q-field__marginal row no-wrap items-center`,key:`append`,onClick:c},l.append())),t.getInnerAppend!==void 0&&e.push(H(`inner-append`,t.getInnerAppend())),t.getControlChild!==void 0&&e.push(t.getControlChild()),e}function B(){let e=[];return a.prefix!==void 0&&a.prefix!==null&&e.push(T(`div`,{class:`q-field__prefix no-pointer-events row items-center`},a.prefix)),t.getShadowControl!==void 0&&t.hasShadow.value===!0&&e.push(t.getShadowControl()),j.value===!0&&e.push(T(`div`,{class:M.value},n(l.label,a.label))),t.getControl===void 0?l.rawControl===void 0?l.control!==void 0&&e.push(T(`div`,{ref:t.targetRef,class:`q-field__native row`,tabindex:-1,...t.splitAttrs.attributes.value,"data-autofocus":a.autofocus===!0||void 0},l.control(N.value))):e.push(l.rawControl()):e.push(t.getControl()),a.suffix!==void 0&&a.suffix!==null&&e.push(T(`div`,{class:`q-field__suffix no-pointer-events row items-center`},a.suffix)),e.concat(n(l.default))}function V(){let r,i;y.value===!0?b.value===null?(r=n(l.error),i=`q--slot-error`):(r=[T(`div`,{role:`alert`},b.value)],i=`q--slot-error-${b.value}`):(a.hideHint!==!0||t.focused.value===!0)&&(a.hint===void 0?(r=n(l.hint),i=`q--slot-hint`):(r=[T(`div`,a.hint)],i=`q--slot-hint-${a.hint}`));let o=a.counter===!0||l.counter!==void 0;if(a.hideBottomSpace===!0&&o===!1&&r===void 0)return;let s=T(`div`,{key:i,class:`q-field__messages col`},r);return T(`div`,{class:`q-field__bottom row items-start q-field__bottom--`+(a.hideBottomSpace===!0?`stale`:`animated`),onClick:c},[a.hideBottomSpace===!0?s:T(e,{name:`q-transition--field-message`},()=>s),o===!0?T(`div`,{class:`q-field__counter`},l.counter===void 0?t.computedCounter.value:l.counter()):null])}function H(e,t){return t===null?null:T(`div`,{key:e,class:`q-field__append q-field__marginal row no-wrap items-center q-anchor--skip`},t)}let U=!1;return i(()=>{U=!0}),r(()=>{U===!0&&a.autofocus===!0&&d.focus()}),a.autofocus===!0&&f(()=>{d.focus()}),g(()=>{m!==null&&clearTimeout(m)}),Object.assign(d,{focus:re,blur:ie}),function(){let e=t.getControl===void 0&&l.control===void 0?{...t.splitAttrs.attributes.value,"data-autofocus":a.autofocus===!0||void 0,...P.value}:P.value;return T(t.tag.value,{ref:t.rootRef,class:[k.value,u.class],style:u.style,...e},[l.before===void 0?null:T(`div`,{class:`q-field__before q-field__marginal row no-wrap items-center`,onClick:c},l.before()),T(`div`,{class:`q-field__inner relative-position col self-stretch`},[T(`div`,{ref:t.controlRef,class:A.value,tabindex:-1,...t.controlEvents},z()),D.value===!0?V():null]),l.after===void 0?null:T(`div`,{class:`q-field__after q-field__marginal row no-wrap items-center`,onClick:c},l.after())])}}var Ge={date:`####/##/##`,datetime:`####/##/## ##:##`,time:`##:##`,fulltime:`##:##:##`,phone:`(###) ### - ####`,card:`#### #### #### ####`},{tokenMap:Ke,tokenKeys:qe}=Je({"#":{pattern:`[\\d]`,negate:`[^\\d]`},S:{pattern:`[a-zA-Z]`,negate:`[^a-zA-Z]`},N:{pattern:`[0-9a-zA-Z]`,negate:`[^0-9a-zA-Z]`},A:{pattern:`[a-zA-Z]`,negate:`[^a-zA-Z]`,transform:e=>e.toLocaleUpperCase()},a:{pattern:`[a-zA-Z]`,negate:`[^a-zA-Z]`,transform:e=>e.toLocaleLowerCase()},X:{pattern:`[0-9a-zA-Z]`,negate:`[^0-9a-zA-Z]`,transform:e=>e.toLocaleUpperCase()},x:{pattern:`[0-9a-zA-Z]`,negate:`[^0-9a-zA-Z]`,transform:e=>e.toLocaleLowerCase()}});function Je(e){let t=Object.keys(e),n={};return t.forEach(t=>{let r=e[t];n[t]={...r,regex:new RegExp(r.pattern)}}),{tokenMap:n,tokenKeys:t}}function Ye(e){return RegExp("\\\\([^.*+?^${}()|([\\]])|([.*+?^${}()|[\\]])|(["+e.join(``)+`])|(.)`,`g`)}var Xe=/[.*+?^${}()|[\]\\]/g,Ze=Ye(qe),X=``,Qe={mask:String,reverseFillMask:Boolean,fillMask:[Boolean,String],unmaskedValue:Boolean,maskTokens:Object};function $e(e,n,r,i){let a,s,c,l,u,d,f=S(()=>{if(e.maskTokens===void 0||e.maskTokens===null)return{tokenMap:Ke,tokenRegexMask:Ze};let{tokenMap:t}=Je(e.maskTokens),n={...Ke,...t};return{tokenMap:n,tokenRegexMask:Ye(Object.keys(n))}}),m=t(null),g=t(v());function _(){return e.autogrow===!0||[`textarea`,`text`,`search`,`url`,`tel`,`password`].includes(e.type)}o(()=>e.type+e.autogrow,b),o(()=>e.mask,t=>{if(t!==void 0)x(g.value,!0);else{let t=O(g.value);b(),e.modelValue!==t&&n(`update:modelValue`,t)}}),o(()=>e.fillMask+e.reverseFillMask,()=>{m.value===!0&&x(g.value,!0)}),o(()=>e.unmaskedValue,()=>{m.value===!0&&x(g.value)});function v(){if(b(),m.value===!0){let t=E(O(e.modelValue));return e.fillMask===!1?t:k(t)}return e.modelValue}function y(e){if(e<a.length)return a.slice(-e);let t=``,n=a,r=n.indexOf(X);if(r!==-1){for(let r=e-n.length;r>0;r--)t+=X;n=n.slice(0,r)+t+n.slice(r)}return n}function b(){if(m.value=e.mask!==void 0&&e.mask.length!==0&&_(),m.value===!1){l=void 0,a=``,s=``;return}let t=Ge[e.mask]===void 0?e.mask:Ge[e.mask],n=typeof e.fillMask==`string`&&e.fillMask.length!==0?e.fillMask.slice(0,1):`_`,r=n.replace(Xe,`\\$&`),i=[],o=[],u=[],d=e.reverseFillMask===!0,p=``,h=``;t.replace(f.value.tokenRegexMask,(e,t,n,r,a)=>{if(r!==void 0){let e=f.value.tokenMap[r];u.push(e),h=e.negate,d===!0&&(o.push(`(?:`+h+`+)?(`+e.pattern+`+)?(?:`+h+`+)?(`+e.pattern+`+)?`),d=!1),o.push(`(?:`+h+`+)?(`+e.pattern+`)?`)}else if(n!==void 0)p=`\\`+(n===`\\`?``:n),u.push(n),i.push(`([^`+p+`]+)?`+p+`?`);else{let e=t===void 0?a:t;p=e===`\\`?`\\\\\\\\`:e.replace(Xe,`\\\\$&`),u.push(e),i.push(`([^`+p+`]+)?`+p+`?`)}});let g=RegExp(`^`+i.join(``)+`(`+(p===``?`.`:`[^`+p+`]`)+`+)?`+(p===``?``:`[`+p+`]*`)+`$`),v=o.length-1,y=o.map((t,n)=>n===0&&e.reverseFillMask===!0?RegExp(`^`+r+`*`+t):RegExp(n===v?`^`+t+`(`+(h===``?`.`:h)+`+)?`+(e.reverseFillMask===!0?`$`:r+`*`):`^`+t));c=u,l=t=>{let n=g.exec(e.reverseFillMask===!0?t:t.slice(0,u.length+1));n!==null&&(t=n.slice(1).join(``));let r=[],i=y.length;for(let e=0,n=t;e<i;e++){let t=y[e].exec(n);if(t===null)break;n=n.slice(t.shift().length),r.push(...t)}return r.length===0?t:r.join(``)},a=u.map(e=>typeof e==`string`?e:X).join(``),s=a.split(X).join(n)}function x(t,n,o){let c=i.value,l=c.selectionEnd,d=c.value.length-l,f=O(t);n===!0&&b();let p=E(f,n),m=e.fillMask===!1?p:k(p),_=g.value!==m;c.value!==m&&(c.value=m),_===!0&&(g.value=m),document.activeElement===c&&h(()=>{if(m===s){let t=e.reverseFillMask===!0?s.length:0;c.setSelectionRange(t,t,`forward`);return}if(o===`insertFromPaste`&&e.reverseFillMask!==!0){let e=c.selectionEnd,t=l-1;for(let n=u;n<=t&&n<e;n++)a[n]!==X&&t++;C.right(c,t);return}if([`deleteContentBackward`,`deleteContentForward`].indexOf(o)!==-1){let t=e.reverseFillMask===!0?l===0?m.length>p.length?1:0:Math.max(0,m.length-(m===s?0:Math.min(p.length,d)+1))+1:l;c.setSelectionRange(t,t,`forward`);return}if(e.reverseFillMask===!0)if(_===!0){let e=Math.max(0,m.length-(m===s?0:Math.min(p.length,d+1)));e===1&&l===1?c.setSelectionRange(e,e,`forward`):C.rightReverse(c,e)}else{let e=m.length-d;c.setSelectionRange(e,e,`backward`)}else if(_===!0){let e=Math.max(0,a.indexOf(X),Math.min(p.length,l)-1);C.right(c,e)}else{let e=l-1;C.right(c,e)}});let v=e.unmaskedValue===!0?O(m):m;String(e.modelValue)!==v&&(e.modelValue!==null||v!==``)&&r(v,!0)}function ee(e,t,n){let r=E(O(e.value));t=Math.max(0,a.indexOf(X),Math.min(r.length,t)),u=t,e.setSelectionRange(t,n,`forward`)}let C={left(e,t){let n=a.slice(t-1).indexOf(X)===-1,r=Math.max(0,t-1);for(;r>=0;r--)if(a[r]===X){t=r,n===!0&&t++;break}if(r<0&&a[t]!==void 0&&a[t]!==X)return C.right(e,0);t>=0&&e.setSelectionRange(t,t,`backward`)},right(e,t){let n=e.value.length,r=Math.min(n,t+1);for(;r<=n;r++)if(a[r]===X){t=r;break}else a[r-1]===X&&(t=r);if(r>n&&a[t-1]!==void 0&&a[t-1]!==X)return C.left(e,n);e.setSelectionRange(t,t,`forward`)},leftReverse(e,t){let n=y(e.value.length),r=Math.max(0,t-1);for(;r>=0;r--)if(n[r-1]===X){t=r;break}else if(n[r]===X&&(t=r,r===0))break;if(r<0&&n[t]!==void 0&&n[t]!==X)return C.rightReverse(e,0);t>=0&&e.setSelectionRange(t,t,`backward`)},rightReverse(e,t){let n=e.value.length,r=y(n),i=r.slice(0,t+1).indexOf(X)===-1,a=Math.min(n,t+1);for(;a<=n;a++)if(r[a-1]===X){t=a,t>0&&i===!0&&t--;break}if(a>n&&r[t-1]!==void 0&&r[t-1]!==X)return C.leftReverse(e,n);e.setSelectionRange(t,t,`forward`)}};function w(e){n(`click`,e),d=void 0}function T(t){if(n(`keydown`,t),p(t)===!0||t.altKey===!0)return;let r=i.value,a=r.selectionStart,o=r.selectionEnd;if(t.shiftKey||(d=void 0),t.keyCode===37||t.keyCode===39){t.shiftKey&&d===void 0&&(d=r.selectionDirection===`forward`?a:o);let n=C[(t.keyCode===39?`right`:`left`)+(e.reverseFillMask===!0?`Reverse`:``)];if(t.preventDefault(),n(r,d===a?o:a),t.shiftKey){let e=r.selectionStart;r.setSelectionRange(Math.min(d,e),Math.max(d,e),`forward`)}}else t.keyCode===8&&e.reverseFillMask!==!0&&a===o?(C.left(r,a),r.setSelectionRange(r.selectionStart,o,`backward`)):t.keyCode===46&&e.reverseFillMask===!0&&a===o&&(C.rightReverse(r,o),r.setSelectionRange(a,r.selectionEnd,`forward`))}function E(t,n){if(t==null||t===``)return``;if(e.reverseFillMask===!0)return D(t,n);let r=c,i=0,a=``;for(let e=0;e<r.length;e++){let o=t[i],s=r[e];if(typeof s==`string`)a+=s,n===!0&&o===s&&i++;else if(o!==void 0&&s.regex.test(o))a+=s.transform===void 0?o:s.transform(o),i++;else return a}return a}function D(e,t){let n=c,r=a.indexOf(X),i=e.length-1,o=``;for(let a=n.length-1;a>=0&&i!==-1;a--){let s=n[a],c=e[i];if(typeof s==`string`)o=s+o,t===!0&&c===s&&i--;else if(c!==void 0&&s.regex.test(c))do o=(s.transform===void 0?c:s.transform(c))+o,i--,c=e[i];while(r===a&&c!==void 0&&s.regex.test(c));else return o}return o}function O(e){return typeof e!=`string`||l===void 0?typeof e==`number`?l(String(e)):e:l(e)}function k(t){return s.length-t.length<=0?t:e.reverseFillMask===!0&&t.length!==0?s.slice(0,-t.length)+t:t+s.slice(t.length)}return{innerValue:g,hasMask:m,moveCursorForPaste:ee,updateMaskValue:x,onMaskedKeydown:T,onMaskedClick:w}}var et={name:String};function tt(e={}){return(t,n,r)=>{t[n](T(`input`,{class:`hidden`+(r||``),...e.value}))}}function nt(e){return S(()=>e.name||e.for)}function rt(e,t){function n(){let t=e.modelValue;try{let e=`DataTransfer`in window?new DataTransfer:`ClipboardEvent`in window?new ClipboardEvent(``).clipboardData:void 0;return Object(t)===t&&(`length`in t?Array.from(t):[t]).forEach(t=>{e.items.add(t)}),{files:e.files}}catch{return{files:void 0}}}return S(t===!0?()=>{if(e.type===`file`)return n()}:n)}var it=/[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\uff00-\uff9f\u4e00-\u9faf\u3400-\u4dbf]/,at=/[\u4e00-\u9fff\u3400-\u4dbf\u{20000}-\u{2a6df}\u{2a700}-\u{2b73f}\u{2b740}-\u{2b81f}\u{2b820}-\u{2ceaf}\uf900-\ufaff\u3300-\u33ff\ufe30-\ufe4f\uf900-\ufaff\u{2f800}-\u{2fa1f}]/u,ot=/[\u3131-\u314e\u314f-\u3163\uac00-\ud7a3]/,st=/[a-z0-9_ -]$/i;function ct(e){return function(t){if(t.type===`compositionend`||t.type===`change`){if(t.target.qComposing!==!0)return;t.target.qComposing=!1,e(t)}else t.type===`compositionupdate`&&t.target.qComposing!==!0&&typeof t.data==`string`&&(v.is.firefox===!0?st.test(t.data)===!1:it.test(t.data)===!0||at.test(t.data)===!0||ot.test(t.data)===!0)&&(t.target.qComposing=!0)}}var lt=l({name:`QInput`,inheritAttrs:!1,props:{...Ve,...Qe,...et,modelValue:[String,Number,FileList],shadowText:String,type:{type:String,default:`text`},debounce:[String,Number],autogrow:Boolean,inputClass:[Array,String,Object],inputStyle:[Array,String,Object]},emits:[...He,`paste`,`change`,`keydown`,`click`,`animationend`],setup(e,{emit:n,attrs:r}){let{proxy:i}=C(),{$q:a}=i,s={},c=NaN,l,u,d=null,p,v=t(null),y=nt(e),{innerValue:b,hasMask:x,moveCursorForPaste:ee,updateMaskValue:w,onMaskedKeydown:E,onMaskedClick:D}=$e(e,n,L,v),O=rt(e,!0),k=S(()=>Be(b.value)),A=ct(F),j=Ue({changeEvent:!0}),M=S(()=>e.type===`textarea`||e.autogrow===!0),N=S(()=>M.value===!0||[`text`,`search`,`url`,`tel`,`password`].includes(e.type)),P=S(()=>{let t={...j.splitAttrs.listeners.value,onInput:F,onPaste:ae,onChange:z,onBlur:B,onFocus:_};return t.onCompositionstart=t.onCompositionupdate=t.onCompositionend=A,x.value===!0&&(t.onKeydown=E,t.onClick=D),e.autogrow===!0&&(t.onAnimationend=I),t}),ne=S(()=>{let t={tabindex:0,"data-autofocus":e.autofocus===!0||void 0,rows:e.type===`textarea`?6:void 0,"aria-label":e.label,name:y.value,...j.splitAttrs.attributes.value,id:j.targetUid.value,maxlength:e.maxlength,disabled:e.disable===!0,readonly:e.readonly===!0};return M.value===!1&&(t.type=e.type),e.autogrow===!0&&(t.rows=1),t});o(()=>e.type,()=>{v.value&&(v.value.value=e.modelValue)}),o(()=>e.modelValue,t=>{if(x.value===!0){if(u===!0&&(u=!1,String(t)===c))return;w(t)}else b.value!==t&&(b.value=t,e.type===`number`&&s.hasOwnProperty(`value`)===!0&&(l===!0?l=!1:delete s.value));e.autogrow===!0&&h(R)}),o(()=>e.autogrow,e=>{e===!0?h(R):v.value!==null&&r.rows>0&&(v.value.style.height=`auto`)}),o(()=>e.dense,()=>{e.autogrow===!0&&h(R)});function re(){te(()=>{let e=document.activeElement;v.value!==null&&v.value!==e&&(e===null||e.id!==j.targetUid.value)&&v.value.focus({preventScroll:!0})})}function ie(){v.value?.select()}function ae(t){if(x.value===!0&&e.reverseFillMask!==!0){let e=t.target;ee(e,e.selectionStart,e.selectionEnd)}n(`paste`,t)}function F(t){if(!t||!t.target)return;if(e.type===`file`){n(`update:modelValue`,t.target.files);return}let r=t.target.value;if(t.target.qComposing===!0){s.value=r;return}if(x.value===!0)w(r,!1,t.inputType);else if(L(r),N.value===!0&&t.target===document.activeElement){let{selectionStart:e,selectionEnd:n}=t.target;e!==void 0&&n!==void 0&&h(()=>{t.target===document.activeElement&&r.indexOf(t.target.value)===0&&t.target.setSelectionRange(e,n)})}e.autogrow===!0&&R()}function I(e){n(`animationend`,e),R()}function L(t,r){p=()=>{d=null,e.type!==`number`&&s.hasOwnProperty(`value`)===!0&&delete s.value,e.modelValue!==t&&c!==t&&(c=t,r===!0&&(u=!0),n(`update:modelValue`,t),h(()=>{c===t&&(c=NaN)})),p=void 0},e.type===`number`&&(l=!0,s.value=t),e.debounce===void 0?p():(d!==null&&clearTimeout(d),s.value=t,d=setTimeout(p,e.debounce))}function R(){requestAnimationFrame(()=>{let e=v.value;if(e!==null){let t=e.parentNode.style,{scrollTop:n}=e,{overflowY:r,maxHeight:i}=a.platform.is.firefox===!0?{}:window.getComputedStyle(e),o=r!==void 0&&r!==`scroll`;o===!0&&(e.style.overflowY=`hidden`),t.marginBottom=e.scrollHeight-1+`px`,e.style.height=`1px`,e.style.height=e.scrollHeight+`px`,o===!0&&(e.style.overflowY=parseInt(i,10)<e.scrollHeight?`auto`:`hidden`),t.marginBottom=``,e.scrollTop=n}})}function z(e){A(e),d!==null&&(clearTimeout(d),d=null),p?.(),n(`change`,e.target.value)}function B(t){t!==void 0&&_(t),d!==null&&(clearTimeout(d),d=null),p?.(),l=!1,u=!1,delete s.value,e.type!==`file`&&setTimeout(()=>{v.value!==null&&(v.value.value=b.value===void 0?``:b.value)})}function V(){return s.hasOwnProperty(`value`)===!0?s.value:b.value===void 0?``:b.value}g(()=>{B()}),f(()=>{e.autogrow===!0&&R()}),Object.assign(j,{innerValue:b,fieldClass:S(()=>`q-${M.value===!0?`textarea`:`input`}`+(e.autogrow===!0?` q-textarea--autogrow`:``)),hasShadow:S(()=>e.type!==`file`&&typeof e.shadowText==`string`&&e.shadowText.length!==0),inputRef:v,emitValue:L,hasValue:k,floatingLabel:S(()=>k.value===!0&&(e.type!==`number`||isNaN(b.value)===!1)||Be(e.displayValue)),getControl:()=>T(M.value===!0?`textarea`:`input`,{ref:v,class:[`q-field__native q-placeholder`,e.inputClass],style:e.inputStyle,...ne.value,...P.value,...e.type===`file`?O.value:{value:V()}}),getShadowControl:()=>T(`div`,{class:`q-field__native q-field__shadow absolute-bottom no-pointer-events`+(M.value===!0?``:` text-no-wrap`)},[T(`span`,{class:`invisible`},V()),T(`span`,e.shadowText)])});let H=We(j);return Object.assign(i,{focus:re,select:ie,getNativeElement:()=>v.value}),m(i,`nativeEl`,()=>v.value),H}}),Z=[],Q;function ut(e){Q=e.keyCode===27}function dt(){Q===!0&&(Q=!1)}function ft(e){Q===!0&&(Q=!1,d(e,27)===!0&&Z[Z.length-1](e))}function pt(e){window[e](`keydown`,ut),window[e](`blur`,dt),window[e](`keyup`,ft),Q=!1}function mt(e){v.is.desktop===!0&&(Z.push(e),Z.length===1&&pt(`addEventListener`))}function ht(e){let t=Z.indexOf(e);t!==-1&&(Z.splice(t,1),Z.length===0&&pt(`removeEventListener`))}var $=[];function gt(e){$[$.length-1](e)}function _t(e){v.is.desktop===!0&&($.push(e),$.length===1&&document.body.addEventListener(`focusin`,gt))}function vt(e){let t=$.indexOf(e);t!==-1&&($.splice(t,1),$.length===0&&document.body.removeEventListener(`focusin`,gt))}var yt=0,bt={standard:`fixed-full flex-center`,top:`fixed-top justify-center`,bottom:`fixed-bottom justify-center`,right:`fixed-right items-center`,left:`fixed-left items-center`},xt={standard:[`scale`,`scale`],top:[`slide-down`,`slide-up`],bottom:[`slide-up`,`slide-down`],right:[`slide-left`,`slide-right`],left:[`slide-right`,`slide-left`]},St=l({name:`QDialog`,inheritAttrs:!1,props:{...I,...M,transitionShow:String,transitionHide:String,persistent:Boolean,autoClose:Boolean,allowFocusOutside:Boolean,noEscDismiss:Boolean,noBackdropDismiss:Boolean,noRouteDismiss:Boolean,noRefocus:Boolean,noFocus:Boolean,noShake:Boolean,seamless:Boolean,maximized:Boolean,fullWidth:Boolean,fullHeight:Boolean,square:Boolean,backdropFilter:String,position:{type:String,default:`standard`,validator:e=>[`standard`,`top`,`bottom`,`left`,`right`].includes(e)}},emits:[...A,`shake`,`click`,`escapeKey`],setup(r,{slots:i,emit:a,attrs:s}){let c=C(),l=t(null),u=t(!1),d=t(!1),f=null,p=null,m,h,_=S(()=>r.persistent!==!0&&r.noRouteDismiss!==!0&&r.seamless!==!0),{preventBodyScroll:v}=de(),{registerTimeout:y}=ae(),{registerTick:b,removeTick:x}=ie(),{transitionProps:w,transitionStyle:E}=re(r,()=>xt[r.position][0],()=>xt[r.position][1]),D=S(()=>E.value+(r.backdropFilter===void 0?``:`;backdrop-filter:${r.backdropFilter};-webkit-backdrop-filter:${r.backdropFilter}`)),{showPortal:O,hidePortal:k,portalIsAccessible:A,renderPortal:M}=F(c,l,J,`dialog`),{hide:N}=j({showing:u,hideOnRouteChange:_,handleShow:V,handleHide:H,processOnMount:!0}),{addToHistory:P,removeFromHistory:ne}=R(u,N,_),I=S(()=>`q-dialog__inner flex no-pointer-events q-dialog__inner--${r.maximized===!0?`maximized`:`minimized`} q-dialog__inner--${r.position} ${bt[r.position]}`+(d.value===!0?` q-dialog__inner--animating`:``)+(r.fullWidth===!0?` q-dialog__inner--fullwidth`:``)+(r.fullHeight===!0?` q-dialog__inner--fullheight`:``)+(r.square===!0?` q-dialog__inner--square`:``)),L=S(()=>u.value===!0&&r.seamless!==!0),z=S(()=>r.autoClose===!0?{onClick:se}:{}),B=S(()=>[`q-dialog fullscreen no-pointer-events q-dialog--${L.value===!0?`modal`:`seamless`}`,s.class]);o(()=>r.maximized,e=>{u.value===!0&&K(e)}),o(L,e=>{v(e),e===!0?(_t(q),mt(G)):(vt(q),ht(G))});function V(e){P(),p=r.noRefocus===!1&&document.activeElement!==null?document.activeElement:null,K(r.maximized),O(),d.value=!0,r.noFocus===!0?x():(document.activeElement?.blur(),b(U)),y(()=>{if(c.proxy.$q.platform.is.ios===!0){if(r.seamless!==!0&&document.activeElement){let{top:e,bottom:t}=document.activeElement.getBoundingClientRect(),{innerHeight:n}=window,r=window.visualViewport===void 0?n:window.visualViewport.height;e>0&&t>r/2&&(document.scrollingElement.scrollTop=Math.min(document.scrollingElement.scrollHeight-r,t>=n?1/0:Math.ceil(document.scrollingElement.scrollTop+t-r/2))),document.activeElement.scrollIntoView()}h=!0,l.value.click(),h=!1}O(!0),d.value=!1,a(`show`,e)},r.transitionDuration)}function H(e){x(),ne(),oe(!0),d.value=!0,k(),p!==null&&(((e?.type.indexOf(`key`)===0?p.closest(`[tabindex]:not([tabindex^="-"])`):void 0)||p).focus(),p=null),y(()=>{k(!0),d.value=!1,a(`hide`,e)},r.transitionDuration)}function U(e){te(()=>{let t=l.value;if(t!==null){if(e!==void 0){let n=t.querySelector(e);if(n!==null){n.focus({preventScroll:!0});return}}t.contains(document.activeElement)!==!0&&(t=t.querySelector(`[autofocus][tabindex], [data-autofocus][tabindex]`)||t.querySelector(`[autofocus] [tabindex], [data-autofocus] [tabindex]`)||t.querySelector(`[autofocus], [data-autofocus]`)||t,t.focus({preventScroll:!0}))}})}function W(e){e&&typeof e.focus==`function`?e.focus({preventScroll:!0}):U(),a(`shake`);let t=l.value;t!==null&&(t.classList.remove(`q-animate--scale`),t.classList.add(`q-animate--scale`),f!==null&&clearTimeout(f),f=setTimeout(()=>{f=null,l.value!==null&&(t.classList.remove(`q-animate--scale`),U())},170))}function G(){r.seamless!==!0&&(r.persistent===!0||r.noEscDismiss===!0?r.maximized!==!0&&r.noShake!==!0&&W():(a(`escapeKey`),N()))}function oe(e){f!==null&&(clearTimeout(f),f=null),(e===!0||u.value===!0)&&(K(!1),r.seamless!==!0&&(v(!1),vt(q),ht(G))),e!==!0&&(p=null)}function K(e){e===!0?m!==!0&&(yt<1&&document.body.classList.add(`q-body--dialog`),yt++,m=!0):m===!0&&(yt<2&&document.body.classList.remove(`q-body--dialog`),yt--,m=!1)}function se(e){h!==!0&&(N(e),a(`click`,e))}function ce(e){r.persistent!==!0&&r.noBackdropDismiss!==!0?N(e):r.noShake!==!0&&W()}function q(e){r.allowFocusOutside!==!0&&A.value===!0&&ee(l.value,e.target)!==!0&&U(`[tabindex]:not([tabindex="-1"])`)}Object.assign(c.proxy,{focus:U,shake:W,__updateRefocusTarget(e){p=e||null}}),g(oe);function J(){return T(`div`,{role:`dialog`,"aria-modal":L.value===!0?`true`:`false`,...s,class:B.value},[T(e,{name:`q-transition--fade`,appear:!0},()=>L.value===!0?T(`div`,{class:`q-dialog__backdrop fixed-full`,style:D.value,"aria-hidden":`true`,tabindex:-1,onClick:ce}):null),T(e,w.value,()=>u.value===!0?T(`div`,{ref:l,class:I.value,style:E.value,tabindex:-1,...z.value},n(i.default)):null)])}return M}});export{fe as C,pe as S,R as T,we as _,ht as a,me as b,tt as c,Be as d,We as f,De as g,Ue as h,mt as i,nt as l,Ve as m,_t as n,lt as o,He as p,vt as r,ct as s,St as t,et as u,xe as v,de as w,he as x,be as y};
@@ -1 +0,0 @@
1
- import{$ as e,Bt as t,C as n,Ft as r,G as i,K as a,Lt as o,Tt as s,Vt as c,a as l,lt as u,nt as d,vt as f,y as p,yt as m}from"./nodes-DeIen-kp.js";import{C as h,S as g,w as _}from"./_plugin-vue_export-helper-CHpmshS7.js";import{C as v,S as y,_ as b,g as x,y as S}from"./QDialog-CMC1Ph52.js";import{a as C,i as w,r as T}from"./QPage-DaNo_vcd.js";var E=a({name:`QSlideTransition`,props:{appear:Boolean,duration:{type:Number,default:300}},emits:[`show`,`hide`],setup(t,{slots:n,emit:r}){let i=!1,a,o,c=null,l=null,u,d;function f(){a?.(),a=null,i=!1,c!==null&&(clearTimeout(c),c=null),l!==null&&(clearTimeout(l),l=null),o?.removeEventListener(`transitionend`,u),u=null}function p(e,n,r){n!==void 0&&(e.style.height=`${n}px`),e.style.transition=`height ${t.duration}ms cubic-bezier(.25, .8, .50, 1)`,i=!0,a=r}function h(e,t){e.style.overflowY=null,e.style.height=null,e.style.transition=null,f(),t!==d&&r(t)}function g(e,n){let r=0;o=e,i===!0?(f(),r=e.offsetHeight===e.scrollHeight?0:void 0):(d=`hide`,e.style.overflowY=`hidden`),p(e,r,n),c=setTimeout(()=>{c=null,e.style.height=`${e.scrollHeight}px`,u=t=>{l=null,(Object(t)!==t||t.target===e)&&h(e,`show`)},e.addEventListener(`transitionend`,u),l=setTimeout(u,t.duration*1.1)},100)}function _(e,n){let r;o=e,i===!0?f():(d=`show`,e.style.overflowY=`hidden`,r=e.scrollHeight),p(e,r,n),c=setTimeout(()=>{c=null,e.style.height=0,u=t=>{l=null,(Object(t)!==t||t.target===e)&&h(e,`hide`)},e.addEventListener(`transitionend`,u),l=setTimeout(u,t.duration*1.1)},100)}return s(()=>{i===!0&&f()}),()=>m(e,{css:!1,appear:t.appear,onEnter:g,onLeave:_},n.default)}}),D=c({}),O=Object.keys(l),k=a({name:`QExpansionItem`,props:{...l,..._,...v,icon:String,label:String,labelLines:[Number,String],caption:String,captionLines:[Number,String],dense:Boolean,toggleAriaLabel:String,expandIcon:String,expandedIcon:String,expandIconClass:[Array,String,Object],duration:{},headerInsetLevel:Number,contentInsetLevel:Number,expandSeparator:Boolean,defaultOpened:Boolean,hideExpandIcon:Boolean,expandIconToggle:Boolean,switchToggleSide:Boolean,denseToggle:Boolean,group:String,popup:Boolean,headerStyle:[Array,String,Object],headerClass:[Array,String,Object]},emits:[...h,`click`,`afterShow`,`afterHide`],setup(e,{slots:a,emit:c}){let{proxy:{$q:l}}=f(),h=y(e,l),_=t(e.modelValue===null?e.defaultOpened:e.modelValue),v=t(null),k=x(),{show:A,hide:j,toggle:M}=g({showing:_}),N,P,F=u(()=>`q-expansion-item q-item-type q-expansion-item--${_.value===!0?`expanded`:`collapsed`} q-expansion-item--${e.popup===!0?`popup`:`standard`}`),I=u(()=>e.contentInsetLevel===void 0?null:{[`padding`+(l.lang.rtl===!0?`Right`:`Left`)]:e.contentInsetLevel*56+`px`}),L=u(()=>e.disable!==!0&&(e.href!==void 0||e.to!==void 0&&e.to!==null&&e.to!==``)),R=u(()=>{let t={};return O.forEach(n=>{t[n]=e[n]}),t}),z=u(()=>L.value===!0||e.expandIconToggle!==!0),B=u(()=>e.expandedIcon!==void 0&&_.value===!0?e.expandedIcon:e.expandIcon||l.iconSet.expansionItem[e.denseToggle===!0?`denseIcon`:`icon`]),V=u(()=>e.disable!==!0&&(L.value===!0||e.expandIconToggle===!0)),H=u(()=>({expanded:_.value===!0,detailsId:k.value,toggle:M,show:A,hide:j})),U=u(()=>{let t=e.toggleAriaLabel===void 0?l.lang.label[_.value===!0?`collapse`:`expand`](e.label):e.toggleAriaLabel;return{role:`button`,"aria-expanded":_.value===!0?`true`:`false`,"aria-controls":k.value,"aria-label":t}});r(()=>e.group,e=>{P?.(),e!==void 0&&Y()});function W(e){L.value!==!0&&M(e),c(`click`,e)}function G(e){e.keyCode===13&&K(e,!0)}function K(e,t){t!==!0&&e.qAvoidFocus!==!0&&v.value?.focus(),M(e),i(e)}function q(){c(`afterShow`)}function J(){c(`afterHide`)}function Y(){N===void 0&&(N=S()),_.value===!0&&(D[e.group]=N);let t=r(_,t=>{t===!0?D[e.group]=N:D[e.group]===N&&delete D[e.group]}),n=r(()=>D[e.group],(e,t)=>{t===N&&e!==void 0&&e!==N&&j()});P=()=>{t(),n(),D[e.group]===N&&delete D[e.group],P=void 0}}function X(){let t={class:[`q-focusable relative-position cursor-pointer${e.denseToggle===!0&&e.switchToggleSide===!0?` items-end`:``}`,e.expandIconClass],side:e.switchToggleSide!==!0,avatar:e.switchToggleSide},n=[m(p,{class:`q-expansion-item__toggle-icon`+(e.expandedIcon===void 0&&_.value===!0?` q-expansion-item__toggle-icon--rotated`:``),name:B.value})];return V.value===!0&&(Object.assign(t,{tabindex:0,...U.value,onClick:K,onKeyup:G}),n.unshift(m(`div`,{ref:v,class:`q-expansion-item__toggle-focus q-icon q-focus-helper q-focus-helper--rounded`,tabindex:-1}))),m(w,t,()=>n)}function Z(){let t;return a.header===void 0?(t=[m(w,()=>[m(T,{lines:e.labelLines},()=>e.label||``),e.caption?m(T,{lines:e.captionLines,caption:!0},()=>e.caption):null])],e.icon&&t[e.switchToggleSide===!0?`push`:`unshift`](m(w,{side:e.switchToggleSide===!0,avatar:e.switchToggleSide!==!0},()=>m(p,{name:e.icon})))):t=[].concat(a.header(H.value)),e.disable!==!0&&e.hideExpandIcon!==!0&&t[e.switchToggleSide===!0?`unshift`:`push`](X()),t}function Q(){let t={ref:`item`,style:e.headerStyle,class:e.headerClass,dark:h.value,disable:e.disable,dense:e.dense,insetLevel:e.headerInsetLevel};return z.value===!0&&(t.clickable=!0,t.onClick=W,Object.assign(t,L.value===!0?R.value:U.value)),m(C,t,Z)}function $(){return o(m(`div`,{key:`e-content`,class:`q-expansion-item__content relative-position`,style:I.value,id:k.value},n(a.default)),[[d,_.value]])}function ee(){let t=[Q(),m(E,{duration:e.duration,onShow:q,onHide:J},$)];return e.expandSeparator===!0&&t.push(m(b,{class:`q-expansion-item__border q-expansion-item__border--top absolute-top`,dark:h.value}),m(b,{class:`q-expansion-item__border q-expansion-item__border--bottom absolute-bottom`,dark:h.value})),t}return e.group!==void 0&&Y(),s(()=>{P?.()}),()=>m(`div`,{class:F.value},[m(`div`,{class:`q-expansion-item__container relative-position`},ee())])}});export{k as t};