@acutis/cli 0.1.2 → 0.2.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 (200) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/AC3CibKK.js +1 -0
  3. package/.output/public/_nuxt/BGc2VNce.js +1 -0
  4. package/.output/public/_nuxt/BN4XOpVt.js +1 -0
  5. package/.output/public/_nuxt/BNJ2GN0A.js +1 -0
  6. package/.output/public/_nuxt/BP52ABGx.js +1 -0
  7. package/.output/public/_nuxt/BWcsrofD.js +1 -0
  8. package/.output/public/_nuxt/{b5tj-z25.js → Bqp63OdK.js} +1 -1
  9. package/.output/public/_nuxt/CF8y5KTS.js +3 -0
  10. package/.output/public/_nuxt/CUTaKHid.js +1 -0
  11. package/.output/public/_nuxt/CZEhodn6.js +1 -0
  12. package/.output/public/_nuxt/Cym5RBDq.js +1 -0
  13. package/.output/public/_nuxt/D1ge6Bwo.js +1 -0
  14. package/.output/public/_nuxt/D2UpbqeN.js +28 -0
  15. package/.output/public/_nuxt/DDKd6Dxq.js +1 -0
  16. package/.output/public/_nuxt/D_FJunXs.js +64 -0
  17. package/.output/public/_nuxt/Dc2A-6xl.js +6 -0
  18. package/.output/public/_nuxt/DoQkJV4U.js +1 -0
  19. package/.output/public/_nuxt/JwPm-b3T.js +1 -0
  20. package/.output/public/_nuxt/builds/latest.json +1 -1
  21. package/.output/public/_nuxt/builds/meta/45a88f3e-8555-4d4c-bdac-4d0788b1fa61.json +1 -0
  22. package/.output/public/_nuxt/cnFSOQCu.js +1 -0
  23. package/.output/public/_nuxt/entry.BmTN_nlL.css +2 -0
  24. package/.output/public/_nuxt/error-404.CkhL7nxg.css +1 -0
  25. package/.output/public/_nuxt/error-500.DNftkU4A.css +1 -0
  26. package/.output/public/_nuxt/tags.C6gBUbEB.css +1 -0
  27. package/.output/server/chunks/_/auth2.mjs +3 -3
  28. package/.output/server/chunks/_/environment.mjs +3 -3
  29. package/.output/server/chunks/_/error-500.mjs.map +1 -1
  30. package/.output/server/chunks/_/generation.mjs +3 -3
  31. package/.output/server/chunks/_/project.mjs +2 -2
  32. package/.output/server/chunks/_/project.service.mjs +3 -31
  33. package/.output/server/chunks/_/project.service.mjs.map +1 -1
  34. package/.output/server/chunks/_/recording.mjs +5 -2
  35. package/.output/server/chunks/_/recording.mjs.map +1 -1
  36. package/.output/server/chunks/_/scenario.mjs +4 -2
  37. package/.output/server/chunks/_/scenario.mjs.map +1 -1
  38. package/.output/server/chunks/_/scenario2.mjs +22 -5
  39. package/.output/server/chunks/_/scenario2.mjs.map +1 -1
  40. package/.output/server/chunks/_/spec-rules.mjs +29 -232
  41. package/.output/server/chunks/_/spec-rules.mjs.map +1 -1
  42. package/.output/server/chunks/build/{Alert-Q5hBYuxt.mjs → Alert-WVcujYrW.mjs} +14 -14
  43. package/.output/server/chunks/build/Alert-WVcujYrW.mjs.map +1 -0
  44. package/.output/server/chunks/build/{Container-HW0bT_Wn.mjs → Container-C0k092cW.mjs} +4 -4
  45. package/.output/server/chunks/build/Container-C0k092cW.mjs.map +1 -0
  46. package/.output/server/chunks/build/{Pagination-FFamqWKD.mjs → Pagination-BXryRfUN.mjs} +4 -4
  47. package/.output/server/chunks/build/{Pagination-FFamqWKD.mjs.map → Pagination-BXryRfUN.mjs.map} +1 -1
  48. package/.output/server/chunks/build/{_...scenario_-DNqQ06NM.mjs → _...scenario_-qp56INdQ.mjs} +687 -149
  49. package/.output/server/chunks/build/_...scenario_-qp56INdQ.mjs.map +1 -0
  50. package/.output/server/chunks/build/{_slug_-BlLRYU9d.mjs → _slug_-dNDiCabc.mjs} +788 -433
  51. package/.output/server/chunks/build/_slug_-dNDiCabc.mjs.map +1 -0
  52. package/.output/server/chunks/build/{error-404-Dzfp7Wik.mjs → error-404-B5fzVPdQ.mjs} +5 -5
  53. package/.output/server/chunks/build/error-404-B5fzVPdQ.mjs.map +1 -0
  54. package/.output/server/chunks/build/error-404-styles.C6Lq0aSH.mjs +9 -0
  55. package/.output/server/chunks/build/error-404-styles.C6Lq0aSH.mjs.map +1 -0
  56. package/.output/server/chunks/build/{error-500-Df60mzLr.mjs → error-500-Be62wrWs.mjs} +5 -5
  57. package/.output/server/chunks/build/error-500-Be62wrWs.mjs.map +1 -0
  58. package/.output/server/chunks/build/error-500-styles.D3b6pwL1.mjs +9 -0
  59. package/.output/server/chunks/build/error-500-styles.D3b6pwL1.mjs.map +1 -0
  60. package/.output/server/chunks/build/{origin-_Ab6zkKk.mjs → origin-DFFT7pGA.mjs} +546 -21
  61. package/.output/server/chunks/build/{origin-_Ab6zkKk.mjs.map → origin-DFFT7pGA.mjs.map} +1 -1
  62. package/.output/server/chunks/build/{pages-BuW8VoW3.mjs → pages-NkoKH95O.mjs} +35 -37
  63. package/.output/server/chunks/build/pages-NkoKH95O.mjs.map +1 -0
  64. package/.output/server/chunks/build/tags-DXumXgr9.mjs +1653 -0
  65. package/.output/server/chunks/build/tags-DXumXgr9.mjs.map +1 -0
  66. package/.output/server/chunks/build/telemetria-BaMsUnJ8.mjs +131 -0
  67. package/.output/server/chunks/build/telemetria-BaMsUnJ8.mjs.map +1 -0
  68. package/.output/server/chunks/build/timeline-styles.CzOXKr8R.mjs +9 -0
  69. package/.output/server/chunks/build/timeline-styles.CzOXKr8R.mjs.map +1 -0
  70. package/.output/server/chunks/nitro/nitro.mjs +618 -377
  71. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  72. package/.output/server/chunks/raw/driver-entry.mjs +1 -1
  73. package/.output/server/chunks/routes/api/projects/_slug/auth/record.post.mjs +1 -1
  74. package/.output/server/chunks/routes/api/projects/_slug/auth/skip.post.mjs +1 -1
  75. package/.output/server/chunks/routes/api/projects/_slug/auth.get.mjs +1 -1
  76. package/.output/server/chunks/routes/api/projects/_slug/auth.put.mjs +1 -1
  77. package/.output/server/chunks/routes/api/telemetry/report.post.mjs +133 -0
  78. package/.output/server/chunks/routes/api/telemetry/report.post.mjs.map +1 -0
  79. package/.output/server/chunks/routes/debug/close-page.post.mjs +40 -0
  80. package/.output/server/chunks/routes/debug/close-page.post.mjs.map +1 -0
  81. package/.output/server/chunks/routes/debug/erro-de-telemetria.get.mjs +49 -0
  82. package/.output/server/chunks/routes/debug/erro-de-telemetria.get.mjs.map +1 -0
  83. package/.output/server/chunks/routes/debug/replay-decision.post.mjs +43 -0
  84. package/.output/server/chunks/routes/debug/replay-decision.post.mjs.map +1 -0
  85. package/.output/server/chunks/routes/renderer.mjs +2 -2
  86. package/.output/server/chunks/routes/renderer.mjs.map +1 -1
  87. package/.output/server/chunks/routes/runner/video.get.mjs +1 -1
  88. package/.output/server/chunks/routes/ws.mjs +19 -2
  89. package/.output/server/chunks/routes/ws.mjs.map +1 -1
  90. package/.output/server/chunks/virtual/entry.mjs +11755 -11725
  91. package/.output/server/chunks/virtual/entry.mjs.map +1 -1
  92. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  93. package/.output/server/chunks/virtual/styles.mjs +4 -3
  94. package/.output/server/index.mjs +1 -1
  95. package/.output/server/package.json +1 -1
  96. package/bin/splash.mjs +2 -2
  97. package/dist-ui/driver-entry.js +3 -3
  98. package/package.json +5 -1
  99. package/reporters/stream-reporter.cjs +3 -3
  100. package/.output/public/_nuxt/5GgR1mbX.js +0 -1
  101. package/.output/public/_nuxt/ANcp5QFz.js +0 -1
  102. package/.output/public/_nuxt/BEFJRHhA2.js +0 -1
  103. package/.output/public/_nuxt/BEQgcp5R.js +0 -1
  104. package/.output/public/_nuxt/BEk00u4_.js +0 -1
  105. package/.output/public/_nuxt/BGdmRvCK2.js +0 -8
  106. package/.output/public/_nuxt/BMLYuU_e.js +0 -1
  107. package/.output/public/_nuxt/BWJpSLJL.js +0 -1
  108. package/.output/public/_nuxt/BXpPYfMx.js +0 -1
  109. package/.output/public/_nuxt/BbjTtCyI.js +0 -3
  110. package/.output/public/_nuxt/Bp3A7I5W2.js +0 -1
  111. package/.output/public/_nuxt/BuOb9NX0.js +0 -1
  112. package/.output/public/_nuxt/C1tNhfTr.js +0 -1
  113. package/.output/public/_nuxt/C2KIeuhG.js +0 -1
  114. package/.output/public/_nuxt/C5uJN_MU.js +0 -1
  115. package/.output/public/_nuxt/CBVnImq2.js +0 -1
  116. package/.output/public/_nuxt/CC0OsuIz.js +0 -28
  117. package/.output/public/_nuxt/CIFC2HNk.js +0 -1
  118. package/.output/public/_nuxt/CKps1Vc12.js +0 -3
  119. package/.output/public/_nuxt/CRH0iqnQ.js +0 -1
  120. package/.output/public/_nuxt/CTLrtTtn2.js +0 -64
  121. package/.output/public/_nuxt/CTqLwyQP.js +0 -1
  122. package/.output/public/_nuxt/CU7sPrmY.js +0 -3
  123. package/.output/public/_nuxt/CfOqJVtU.js +0 -1
  124. package/.output/public/_nuxt/Ch1EeKHP.js +0 -1
  125. package/.output/public/_nuxt/Clv7nJ_T2.js +0 -1
  126. package/.output/public/_nuxt/D-7v7DZs.js +0 -1
  127. package/.output/public/_nuxt/D4ykC_lY2.js +0 -1
  128. package/.output/public/_nuxt/D5HF1Z0f2.js +0 -1
  129. package/.output/public/_nuxt/DDHUGtv32.js +0 -4
  130. package/.output/public/_nuxt/DEJ3sRrh2.js +0 -1
  131. package/.output/public/_nuxt/DPM_BYFz2.js +0 -1
  132. package/.output/public/_nuxt/DXLPf3t6.js +0 -1
  133. package/.output/public/_nuxt/Dpnaldxf2.js +0 -1
  134. package/.output/public/_nuxt/DtuQPKVG.js +0 -1
  135. package/.output/public/_nuxt/FvWrDx_z.js +0 -1
  136. package/.output/public/_nuxt/Gcazu-lR.js +0 -1
  137. package/.output/public/_nuxt/QcKfgokC.js +0 -1
  138. package/.output/public/_nuxt/XDsaI4JL.js +0 -1
  139. package/.output/public/_nuxt/builds/meta/bf2cb2c6-2ddb-4f64-9777-e314571fd19d.json +0 -1
  140. package/.output/public/_nuxt/entry.m-nAFUcz.css +0 -2
  141. package/.output/public/_nuxt/error-404.DopINOT1.css +0 -1
  142. package/.output/public/_nuxt/error-500.D7goJC9g.css +0 -1
  143. package/.output/public/_nuxt/f0o80Gcm.js +0 -1
  144. package/.output/public/_nuxt/k5q7GKnv.js +0 -1
  145. package/.output/public/_nuxt/modal.3A_G7d4A.css +0 -1
  146. package/.output/public/_nuxt/tLr-SJaf.js +0 -1
  147. package/.output/public/dev/sample-run.webm +0 -0
  148. package/.output/server/chunks/build/Alert-Q5hBYuxt.mjs.map +0 -1
  149. package/.output/server/chunks/build/Badge-BgyIJKeU.mjs +0 -394
  150. package/.output/server/chunks/build/Badge-BgyIJKeU.mjs.map +0 -1
  151. package/.output/server/chunks/build/Card-DLzZ816u.mjs +0 -144
  152. package/.output/server/chunks/build/Card-DLzZ816u.mjs.map +0 -1
  153. package/.output/server/chunks/build/Container-HW0bT_Wn.mjs.map +0 -1
  154. package/.output/server/chunks/build/_...scenario_-DNqQ06NM.mjs.map +0 -1
  155. package/.output/server/chunks/build/_slug_-BlLRYU9d.mjs.map +0 -1
  156. package/.output/server/chunks/build/auth-status-5sNoLTPk.mjs +0 -128
  157. package/.output/server/chunks/build/auth-status-5sNoLTPk.mjs.map +0 -1
  158. package/.output/server/chunks/build/auth-status-Bo2gxZ-H.mjs +0 -53
  159. package/.output/server/chunks/build/auth-status-Bo2gxZ-H.mjs.map +0 -1
  160. package/.output/server/chunks/build/empty-xO5aD2Ip.mjs +0 -44
  161. package/.output/server/chunks/build/empty-xO5aD2Ip.mjs.map +0 -1
  162. package/.output/server/chunks/build/error-404-Dzfp7Wik.mjs.map +0 -1
  163. package/.output/server/chunks/build/error-404-styles.ByPbpRGS.mjs +0 -9
  164. package/.output/server/chunks/build/error-404-styles.ByPbpRGS.mjs.map +0 -1
  165. package/.output/server/chunks/build/error-500-Df60mzLr.mjs.map +0 -1
  166. package/.output/server/chunks/build/error-500-styles.Dz8enkTW.mjs +0 -9
  167. package/.output/server/chunks/build/error-500-styles.Dz8enkTW.mjs.map +0 -1
  168. package/.output/server/chunks/build/generation-warnings-RCB9uLi8.mjs +0 -123
  169. package/.output/server/chunks/build/generation-warnings-RCB9uLi8.mjs.map +0 -1
  170. package/.output/server/chunks/build/history-D-mei_D6.mjs +0 -163
  171. package/.output/server/chunks/build/history-D-mei_D6.mjs.map +0 -1
  172. package/.output/server/chunks/build/modal-81h_kbj9.mjs +0 -321
  173. package/.output/server/chunks/build/modal-81h_kbj9.mjs.map +0 -1
  174. package/.output/server/chunks/build/modal-Cpj-bQgu.mjs +0 -342
  175. package/.output/server/chunks/build/modal-Cpj-bQgu.mjs.map +0 -1
  176. package/.output/server/chunks/build/modal-DV_DQ0hO.mjs +0 -659
  177. package/.output/server/chunks/build/modal-DV_DQ0hO.mjs.map +0 -1
  178. package/.output/server/chunks/build/pages-BuW8VoW3.mjs.map +0 -1
  179. package/.output/server/chunks/build/phrases-CSDEYSbZ.mjs +0 -38
  180. package/.output/server/chunks/build/phrases-CSDEYSbZ.mjs.map +0 -1
  181. package/.output/server/chunks/build/project-run-filtered-CplHFc5x.mjs +0 -455
  182. package/.output/server/chunks/build/project-run-filtered-CplHFc5x.mjs.map +0 -1
  183. package/.output/server/chunks/build/run-stream-CNVDpZ_S.mjs +0 -157
  184. package/.output/server/chunks/build/run-stream-CNVDpZ_S.mjs.map +0 -1
  185. package/.output/server/chunks/build/scenario-runs-C7TDC5iA.mjs +0 -135
  186. package/.output/server/chunks/build/scenario-runs-C7TDC5iA.mjs.map +0 -1
  187. package/.output/server/chunks/build/scenario-suggestions-CsQg875h.mjs +0 -210
  188. package/.output/server/chunks/build/scenario-suggestions-CsQg875h.mjs.map +0 -1
  189. package/.output/server/chunks/build/scenario-test-run-Deg4Qlme.mjs +0 -505
  190. package/.output/server/chunks/build/scenario-test-run-Deg4Qlme.mjs.map +0 -1
  191. package/.output/server/chunks/build/steps-CcAjZqHX.mjs +0 -54
  192. package/.output/server/chunks/build/steps-CcAjZqHX.mjs.map +0 -1
  193. package/.output/server/chunks/build/tags-DrKY6Ah4.mjs +0 -594
  194. package/.output/server/chunks/build/tags-DrKY6Ah4.mjs.map +0 -1
  195. package/.output/server/chunks/build/warnings-D8SWbHw0.mjs +0 -76
  196. package/.output/server/chunks/build/warnings-D8SWbHw0.mjs.map +0 -1
  197. package/.output/server/chunks/raw/sample-run.mjs +0 -7
  198. package/.output/server/chunks/raw/sample-run.mjs.map +0 -1
  199. package/dist-ui/dev/sample-run.webm +0 -0
  200. /package/.output/public/_nuxt/{BDNMzG2s2.js → BDNMzG2s.js} +0 -0
@@ -1,17 +1,9 @@
1
- import { v as useRoute, w as useFetch, x as createError$1, z as icon_default, e as _sfc_main$6, o as _sfc_main$6$1, B as navigateTo, $ as $fetch$2, u as useComponentProps, a as useAppConfig, g as useForwardProps, r as reactivePick, t as tv, O as DropdownMenuRoot_default, Q as DropdownMenuTrigger_default, S as DropdownMenuArrow_default, T as refreshNuxtData, U as useNotify, q as _sfc_main$8, V as _sfc_main$5$1, f as useLocale, W as useFilter, X as usePortal, Y as useForwardPropsEmits, Z as reactiveOmit, a0 as createReusableTemplate, a1 as isArrayOfArray, _ as _sfc_main$2$1, d as _sfc_main$9, D as get, a2 as _sfc_main$1$1, a3 as DropdownMenu, a4 as FieldGroupReset, a5 as _sfc_main$1$2, a6 as pickLinkProps, a7 as _sfc_main$2$2, a8 as omit, m as modal_default$1$1, C as _sfc_main$8$1, a9 as fieldGroupInjectionKey, P as Primitive, y as extractServerError } from '../virtual/entry.mjs';
2
- import { m as modal_default$3 } from './modal-DV_DQ0hO.mjs';
3
- import { p as projectOrigin } from './origin-_Ab6zkKk.mjs';
4
- import { _ as _sfc_main$3 } from './Container-HW0bT_Wn.mjs';
5
- import { _ as _sfc_main$4 } from './Badge-BgyIJKeU.mjs';
6
- import { _ as _sfc_main$5 } from './Alert-Q5hBYuxt.mjs';
7
- import { w as warnings_default } from './warnings-D8SWbHw0.mjs';
8
- import { p as phrases_default } from './phrases-CSDEYSbZ.mjs';
9
- import { u as useRunStream, r as reportUrlFor } from './run-stream-CNVDpZ_S.mjs';
10
- import { e as empty_default$1 } from './empty-xO5aD2Ip.mjs';
11
- import { _ as _sfc_main$7 } from './Card-DLzZ816u.mjs';
12
- import { m as modal_default$4 } from './modal-Cpj-bQgu.mjs';
13
- import { u as useWebdriver, s as setup_default, t as tagColor, c as confirm_default, b as contexts_default, a as timeline_default } from './tags-DrKY6Ah4.mjs';
14
- import { defineComponent, computed, ref, withAsyncContext, watch, mergeProps, unref, withCtx, createVNode, isRef, toDisplayString, openBlock, createBlock, Fragment, renderList, createTextVNode, createCommentVNode, useSlots, useModel, toRef, renderSlot, createSlots, mergeModels, resolveDynamicComponent, withModifiers, withKeys, provide, useId, useSSRContext } from 'vue';
1
+ import { f as useRoute, g as useFetch, h as createError$1, k as icon_default, _ as _sfc_main$6, m as _sfc_main$7, n as navigateTo, $ as $fetch$1, a as useComponentProps, b as useAppConfig, v as useForwardProps, w as reactivePick, t as tv, O as DropdownMenuRoot_default, Q as DropdownMenuTrigger_default, S as DropdownMenuArrow_default, T as refreshNuxtData, u as useNotify, l as _sfc_main$7$1, U as _sfc_main$5$1, c as useLocale, V as useFilter, W as usePortal, X as useForwardPropsEmits, Y as reactiveOmit, Z as createReusableTemplate, a0 as isArrayOfArray, e as _sfc_main$5$2, d as _sfc_main$3$1, x as get, a1 as _sfc_main$8$1, a2 as DropdownMenu, a3 as FieldGroupReset, a4 as _sfc_main$1$1, a5 as pickLinkProps, a6 as _sfc_main$2$2, a7 as omit, p as modal_default$4, q as _sfc_main$1$2, a8 as fieldGroupInjectionKey, P as Primitive, B as useVModel, z as useForwardExpose, C as useId$1, a9 as useEventListener, E as Presence_default, F as createContext } from '../virtual/entry.mjs';
2
+ import { p as projectOrigin, _ as _sfc_main$2$1, b as _sfc_main$8 } from './origin-DFFT7pGA.mjs';
3
+ import { _ as _sfc_main$4 } from './Container-C0k092cW.mjs';
4
+ import { _ as _sfc_main$5 } from './Alert-WVcujYrW.mjs';
5
+ import { u as useRunStream, a as useWebdriver, r as reportUrlFor, s as setup_default, m as modal_default$1$1, t as tagColor, f as modal_default$3, d as confirm_default, e as empty_default$1, p as phrases_default, j as steps_default } from './tags-DXumXgr9.mjs';
6
+ import { defineComponent, computed, ref, withAsyncContext, watch, mergeProps, unref, withCtx, createVNode, isRef, toDisplayString, openBlock, createBlock, Fragment, renderList, createTextVNode, createCommentVNode, useSlots, useModel, toRef, renderSlot, createSlots, mergeModels, resolveDynamicComponent, withModifiers, withKeys, provide, useId, toRefs, nextTick, useSSRContext } from 'vue';
15
7
  import { n as defu } from '../nitro/nitro.mjs';
16
8
  import { ssrRenderComponent, ssrRenderAttr, ssrInterpolate, ssrRenderList, ssrRenderSlot, ssrRenderAttrs, ssrRenderClass, ssrRenderVNode } from 'vue/server-renderer';
17
9
  import 'unhead/plugins';
@@ -25,7 +17,6 @@ import 'devalue';
25
17
  import 'fnv1a-64';
26
18
  import 'object-identity';
27
19
  import 'tailwindcss/colors';
28
- import './steps-CcAjZqHX.mjs';
29
20
  import './_plugin-vue_export-helper-BOaGB7Aw.mjs';
30
21
  import 'prismjs';
31
22
  import 'node:http';
@@ -60,6 +51,218 @@ import 'langchain';
60
51
  import '@iconify/utils';
61
52
  import 'consola';
62
53
 
54
+ //#region node_modules/.pnpm/reka-ui@2.10.1_vue@3.5.41_typescript@6.0.3_/node_modules/reka-ui/dist/Collapsible/CollapsibleRoot.js
55
+ var [injectCollapsibleRootContext, provideCollapsibleRootContext] = /*#__PURE__*/ createContext("CollapsibleRoot");
56
+ var CollapsibleRoot_default = /* @__PURE__ */ defineComponent({
57
+ __name: "CollapsibleRoot",
58
+ props: {
59
+ defaultOpen: {
60
+ type: Boolean,
61
+ required: false,
62
+ default: false
63
+ },
64
+ open: {
65
+ type: Boolean,
66
+ required: false,
67
+ default: void 0
68
+ },
69
+ disabled: {
70
+ type: Boolean,
71
+ required: false
72
+ },
73
+ unmountOnHide: {
74
+ type: Boolean,
75
+ required: false,
76
+ default: true
77
+ },
78
+ asChild: {
79
+ type: Boolean,
80
+ required: false
81
+ },
82
+ as: {
83
+ type: null,
84
+ required: false
85
+ }
86
+ },
87
+ emits: ["update:open"],
88
+ setup(__props, { expose: __expose, emit: __emit }) {
89
+ const props = __props;
90
+ const open = useVModel(props, "open", __emit, {
91
+ defaultValue: props.defaultOpen,
92
+ passive: props.open === void 0
93
+ });
94
+ const { disabled, unmountOnHide } = toRefs(props);
95
+ provideCollapsibleRootContext({
96
+ contentId: "",
97
+ disabled,
98
+ open,
99
+ unmountOnHide,
100
+ onOpenToggle: () => {
101
+ if (disabled.value) return;
102
+ open.value = !open.value;
103
+ }
104
+ });
105
+ __expose({ open });
106
+ useForwardExpose();
107
+ return (_ctx, _cache) => {
108
+ return openBlock(), createBlock(unref(Primitive), {
109
+ as: _ctx.as,
110
+ "as-child": props.asChild,
111
+ "data-state": unref(open) ? "open" : "closed",
112
+ "data-disabled": unref(disabled) ? "" : void 0
113
+ }, {
114
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", { open: unref(open) })]),
115
+ _: 3
116
+ }, 8, [
117
+ "as",
118
+ "as-child",
119
+ "data-state",
120
+ "data-disabled"
121
+ ]);
122
+ };
123
+ }
124
+ });
125
+ //#endregion
126
+ //#region node_modules/.pnpm/reka-ui@2.10.1_vue@3.5.41_typescript@6.0.3_/node_modules/reka-ui/dist/Collapsible/CollapsibleContent.js
127
+ var CollapsibleContent_default = /* @__PURE__ */ defineComponent({
128
+ inheritAttrs: false,
129
+ __name: "CollapsibleContent",
130
+ props: {
131
+ forceMount: {
132
+ type: Boolean,
133
+ required: false
134
+ },
135
+ asChild: {
136
+ type: Boolean,
137
+ required: false
138
+ },
139
+ as: {
140
+ type: null,
141
+ required: false
142
+ }
143
+ },
144
+ emits: ["contentFound"],
145
+ setup(__props, { emit: __emit }) {
146
+ const props = __props;
147
+ const emits = __emit;
148
+ const rootContext = injectCollapsibleRootContext();
149
+ rootContext.contentId ||= useId$1(void 0, "reka-collapsible-content");
150
+ const presentRef = ref();
151
+ const { forwardRef, currentElement } = useForwardExpose();
152
+ const width = ref(0);
153
+ const height = ref(0);
154
+ const isOpen = computed(() => rootContext.open.value);
155
+ const isMountAnimationPrevented = ref(isOpen.value);
156
+ const currentStyle = ref();
157
+ watch(() => [isOpen.value, presentRef.value?.present], async () => {
158
+ await nextTick();
159
+ const node = currentElement.value;
160
+ if (!node) return;
161
+ currentStyle.value = currentStyle.value || {
162
+ transitionDuration: node.style.transitionDuration,
163
+ animationName: node.style.animationName
164
+ };
165
+ node.style.transitionDuration = "0s";
166
+ node.style.animationName = "none";
167
+ const rect = node.getBoundingClientRect();
168
+ height.value = rect.height;
169
+ width.value = rect.width;
170
+ if (!isMountAnimationPrevented.value) {
171
+ node.style.transitionDuration = currentStyle.value.transitionDuration;
172
+ node.style.animationName = currentStyle.value.animationName;
173
+ }
174
+ }, { immediate: true });
175
+ const skipAnimation = computed(() => isMountAnimationPrevented.value && rootContext.open.value);
176
+ useEventListener(currentElement, "beforematch", (ev) => {
177
+ requestAnimationFrame(() => {
178
+ rootContext.onOpenToggle();
179
+ emits("contentFound");
180
+ });
181
+ });
182
+ return (_ctx, _cache) => {
183
+ return openBlock(), createBlock(unref(Presence_default), {
184
+ ref_key: "presentRef",
185
+ ref: presentRef,
186
+ present: _ctx.forceMount || unref(rootContext).open.value,
187
+ "force-mount": true
188
+ }, {
189
+ default: withCtx(({ present }) => [createVNode(unref(Primitive), mergeProps(_ctx.$attrs, {
190
+ id: unref(rootContext).contentId,
191
+ ref: unref(forwardRef),
192
+ "as-child": props.asChild,
193
+ as: _ctx.as,
194
+ hidden: !present ? unref(rootContext).unmountOnHide.value ? "" : "until-found" : void 0,
195
+ "data-state": skipAnimation.value ? void 0 : unref(rootContext).open.value ? "open" : "closed",
196
+ "data-disabled": unref(rootContext).disabled?.value ? "" : void 0,
197
+ style: {
198
+ [`--reka-collapsible-content-height`]: `${height.value}px`,
199
+ [`--reka-collapsible-content-width`]: `${width.value}px`
200
+ }
201
+ }), {
202
+ default: withCtx(() => [(unref(rootContext).unmountOnHide.value ? present : true) ? renderSlot(_ctx.$slots, "default", { key: 0 }) : createCommentVNode("v-if", true)]),
203
+ _: 2
204
+ }, 1040, [
205
+ "id",
206
+ "as-child",
207
+ "as",
208
+ "hidden",
209
+ "data-state",
210
+ "data-disabled",
211
+ "style"
212
+ ])]),
213
+ _: 3
214
+ }, 8, ["present"]);
215
+ };
216
+ }
217
+ });
218
+ //#endregion
219
+ //#region node_modules/.pnpm/reka-ui@2.10.1_vue@3.5.41_typescript@6.0.3_/node_modules/reka-ui/dist/Collapsible/CollapsibleTrigger.js
220
+ var CollapsibleTrigger_default = /* @__PURE__ */ defineComponent({
221
+ __name: "CollapsibleTrigger",
222
+ props: {
223
+ asChild: {
224
+ type: Boolean,
225
+ required: false
226
+ },
227
+ as: {
228
+ type: null,
229
+ required: false,
230
+ default: "button"
231
+ }
232
+ },
233
+ setup(__props) {
234
+ const props = __props;
235
+ useForwardExpose();
236
+ const rootContext = injectCollapsibleRootContext();
237
+ return (_ctx, _cache) => {
238
+ return openBlock(), createBlock(unref(Primitive), {
239
+ type: _ctx.as === "button" ? "button" : void 0,
240
+ as: _ctx.as,
241
+ "as-child": props.asChild,
242
+ "aria-controls": unref(rootContext).contentId,
243
+ "aria-expanded": unref(rootContext).open.value,
244
+ "data-state": unref(rootContext).open.value ? "open" : "closed",
245
+ "data-disabled": unref(rootContext).disabled?.value ? "" : void 0,
246
+ disabled: unref(rootContext).disabled?.value,
247
+ onClick: unref(rootContext).onOpenToggle
248
+ }, {
249
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
250
+ _: 3
251
+ }, 8, [
252
+ "type",
253
+ "as",
254
+ "as-child",
255
+ "aria-controls",
256
+ "aria-expanded",
257
+ "data-state",
258
+ "data-disabled",
259
+ "disabled",
260
+ "onClick"
261
+ ]);
262
+ };
263
+ }
264
+ });
265
+ //#endregion
63
266
  //#region app/components/project/rename/inline.vue?vue&type=script&setup=true&lang.ts
64
267
  var inline_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
65
268
  __name: "inline",
@@ -87,7 +290,7 @@ var inline_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
87
290
  if (wanted === "" || wanted === __props.name) return cancel();
88
291
  saving.value = true;
89
292
  try {
90
- const updated = await $fetch$2(`/api/projects/${__props.slug}`, {
293
+ const updated = await $fetch$1(`/api/projects/${__props.slug}`, {
91
294
  method: "PUT",
92
295
  body: { name: wanted }
93
296
  });
@@ -100,9 +303,9 @@ var inline_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
100
303
  }
101
304
  }
102
305
  return (_ctx, _push, _parent, _attrs) => {
103
- const _component_UInput = _sfc_main$6$1;
306
+ const _component_UInput = _sfc_main$7;
104
307
  const _component_BaseButtonIcon = icon_default;
105
- const _component_UTooltip = _sfc_main$8;
308
+ const _component_UTooltip = _sfc_main$7$1;
106
309
  if (unref(editing)) {
107
310
  _push(`<div${ssrRenderAttrs(mergeProps({ class: "flex items-center gap-2" }, _attrs))}>`);
108
311
  _push(ssrRenderComponent(_component_UInput, {
@@ -178,8 +381,8 @@ var virtual_nuxt_node_modules_2F_cache_2Fnuxt_2F_nuxt_2Fui_2Ffield_group_default
178
381
  }
179
382
  };
180
383
  //#endregion
181
- //#region node_modules/.pnpm/@nuxt+ui@4.10.0_250a96140fc8b7523156f40a2ef5e33e/node_modules/@nuxt/ui/dist/runtime/components/FieldGroup.vue
182
- var _sfc_main$2 = {
384
+ //#region node_modules/.pnpm/@nuxt+ui@4.10.0_e9e3fcf18fb997bdd8dc5f7c218a2205/node_modules/@nuxt/ui/dist/runtime/components/FieldGroup.vue
385
+ var _sfc_main$3 = {
183
386
  __name: "UFieldGroup",
184
387
  __ssrInlineRender: true,
185
388
  props: {
@@ -234,10 +437,10 @@ var _sfc_main$2 = {
234
437
  };
235
438
  }
236
439
  };
237
- var _sfc_setup$10 = _sfc_main$2.setup;
238
- _sfc_main$2.setup = (props, ctx) => {
440
+ var _sfc_setup$10 = _sfc_main$3.setup;
441
+ _sfc_main$3.setup = (props, ctx) => {
239
442
  const ssrContext = useSSRContext();
240
- (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("../node_modules/.pnpm/@nuxt+ui@4.10.0_250a96140fc8b7523156f40a2ef5e33e/node_modules/@nuxt/ui/dist/runtime/components/FieldGroup.vue");
443
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("../node_modules/.pnpm/@nuxt+ui@4.10.0_e9e3fcf18fb997bdd8dc5f7c218a2205/node_modules/@nuxt/ui/dist/runtime/components/FieldGroup.vue");
241
444
  return _sfc_setup$10 ? _sfc_setup$10(props, ctx) : void 0;
242
445
  };
243
446
  //#endregion
@@ -264,7 +467,7 @@ var select_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
264
467
  if (!environment || environment === data.value?.active) return;
265
468
  switching.value = true;
266
469
  try {
267
- await $fetch$2(`/api/projects/${__props.slug}/environments/${environment}/activate`, { method: "POST" });
470
+ await $fetch$1(`/api/projects/${__props.slug}/environments/${environment}/activate`, { method: "POST" });
268
471
  await refresh();
269
472
  emit("activated");
270
473
  } finally {
@@ -272,9 +475,9 @@ var select_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
272
475
  }
273
476
  }
274
477
  return (_ctx, _push, _parent, _attrs) => {
275
- const _component_UTooltip = _sfc_main$8;
478
+ const _component_UTooltip = _sfc_main$7$1;
276
479
  const _component_UButton = _sfc_main$6;
277
- const _component_UFieldGroup = _sfc_main$2;
480
+ const _component_UFieldGroup = _sfc_main$3;
278
481
  const _component_USelectMenu = _sfc_main$5$1;
279
482
  const _component_BaseButtonIcon = icon_default;
280
483
  if (unref(items).length < 2) _push(ssrRenderComponent(_component_UTooltip, mergeProps({ text: "Editar as variáveis deste ambiente" }, _attrs), {
@@ -368,8 +571,8 @@ select_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
368
571
  };
369
572
  var select_default = Object.assign(select_vue_vue_type_script_setup_true_lang_default, { __name: "ProjectEnvironmentsSelect" });
370
573
  //#endregion
371
- //#region node_modules/.pnpm/@nuxt+ui@4.10.0_250a96140fc8b7523156f40a2ef5e33e/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenuContent.vue
372
- var _sfc_main$1 = {
574
+ //#region node_modules/.pnpm/@nuxt+ui@4.10.0_e9e3fcf18fb997bdd8dc5f7c218a2205/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenuContent.vue
575
+ var _sfc_main$2 = {
373
576
  __name: "UDropdownMenuContent",
374
577
  __ssrInlineRender: true,
375
578
  props: {
@@ -581,7 +784,7 @@ var _sfc_main$1 = {
581
784
  index,
582
785
  ui: __props.ui
583
786
  }, () => {
584
- if (item.loading) _push(ssrRenderComponent(_sfc_main$2$1, {
787
+ if (item.loading) _push(ssrRenderComponent(_sfc_main$5$2, {
585
788
  name: __props.loadingIcon || unref(appConfig).ui.icons.loading,
586
789
  "data-slot": "itemLeadingIcon",
587
790
  class: __props.ui.itemLeadingIcon({
@@ -590,7 +793,7 @@ var _sfc_main$1 = {
590
793
  loading: true
591
794
  })
592
795
  }, null, _parent, _scopeId));
593
- else if (item.icon) _push(ssrRenderComponent(_sfc_main$2$1, {
796
+ else if (item.icon) _push(ssrRenderComponent(_sfc_main$5$2, {
594
797
  name: item.icon,
595
798
  "data-slot": "itemLeadingIcon",
596
799
  class: __props.ui.itemLeadingIcon({
@@ -599,7 +802,7 @@ var _sfc_main$1 = {
599
802
  active
600
803
  })
601
804
  }, null, _parent, _scopeId));
602
- else if (item.avatar) _push(ssrRenderComponent(_sfc_main$9, mergeProps({ size: item.ui?.itemLeadingAvatarSize || __props.uiOverride?.itemLeadingAvatarSize || __props.ui.itemLeadingAvatarSize() }, item.avatar, {
805
+ else if (item.avatar) _push(ssrRenderComponent(_sfc_main$3$1, mergeProps({ size: item.ui?.itemLeadingAvatarSize || __props.uiOverride?.itemLeadingAvatarSize || __props.ui.itemLeadingAvatarSize() }, item.avatar, {
603
806
  "data-slot": "itemLeadingAvatar",
604
807
  class: __props.ui.itemLeadingAvatar({
605
808
  class: [__props.uiOverride?.itemLeadingAvatar, item.ui?.itemLeadingAvatar],
@@ -620,7 +823,7 @@ var _sfc_main$1 = {
620
823
  }, () => {
621
824
  _push(`${ssrInterpolate(unref(get)(item, props.labelKey))}`);
622
825
  }, _push, _parent, _scopeId);
623
- if (item.target === "_blank" && __props.externalIcon !== false) _push(ssrRenderComponent(_sfc_main$2$1, {
826
+ if (item.target === "_blank" && __props.externalIcon !== false) _push(ssrRenderComponent(_sfc_main$5$2, {
624
827
  name: typeof __props.externalIcon === "string" ? __props.externalIcon : unref(appConfig).ui.icons.external,
625
828
  "data-slot": "itemLabelExternalIcon",
626
829
  class: __props.ui.itemLabelExternalIcon({
@@ -651,7 +854,7 @@ var _sfc_main$1 = {
651
854
  index,
652
855
  ui: __props.ui
653
856
  }, () => {
654
- if (item.children?.length) _push(ssrRenderComponent(_sfc_main$2$1, {
857
+ if (item.children?.length) _push(ssrRenderComponent(_sfc_main$5$2, {
655
858
  name: childrenIcon.value,
656
859
  "data-slot": "itemTrailingIcon",
657
860
  class: __props.ui.itemTrailingIcon({
@@ -663,7 +866,7 @@ var _sfc_main$1 = {
663
866
  else if (item.kbds?.length) {
664
867
  _push(`<span data-slot="itemTrailingKbds" class="${ssrRenderClass(__props.ui.itemTrailingKbds({ class: [__props.uiOverride?.itemTrailingKbds, item.ui?.itemTrailingKbds] }))}"${_scopeId}><!--[-->`);
665
868
  ssrRenderList(item.kbds, (kbd, kbdIndex) => {
666
- _push(ssrRenderComponent(_sfc_main$1$1, mergeProps({
869
+ _push(ssrRenderComponent(_sfc_main$8$1, mergeProps({
667
870
  key: kbdIndex,
668
871
  size: item.ui?.itemTrailingKbdsSize || __props.uiOverride?.itemTrailingKbdsSize || __props.ui.itemTrailingKbdsSize()
669
872
  }, { ref_for: true }, typeof kbd === "string" ? { value: kbd } : kbd), null, _parent, _scopeId));
@@ -673,7 +876,7 @@ var _sfc_main$1 = {
673
876
  }, _push, _parent, _scopeId);
674
877
  _push(ssrRenderComponent(unref(DropdownMenu).ItemIndicator, { "as-child": "" }, {
675
878
  default: withCtx((_, _push, _parent, _scopeId) => {
676
- if (_push) _push(ssrRenderComponent(_sfc_main$2$1, {
879
+ if (_push) _push(ssrRenderComponent(_sfc_main$5$2, {
677
880
  name: __props.checkedIcon || unref(appConfig).ui.icons.check,
678
881
  "data-slot": "itemTrailingIcon",
679
882
  class: __props.ui.itemTrailingIcon({
@@ -681,7 +884,7 @@ var _sfc_main$1 = {
681
884
  color: item?.color
682
885
  })
683
886
  }, null, _parent, _scopeId));
684
- else return [createVNode(_sfc_main$2$1, {
887
+ else return [createVNode(_sfc_main$5$2, {
685
888
  name: __props.checkedIcon || unref(appConfig).ui.icons.check,
686
889
  "data-slot": "itemTrailingIcon",
687
890
  class: __props.ui.itemTrailingIcon({
@@ -704,7 +907,7 @@ var _sfc_main$1 = {
704
907
  active,
705
908
  index,
706
909
  ui: __props.ui
707
- }, () => [item.loading ? (openBlock(), createBlock(_sfc_main$2$1, {
910
+ }, () => [item.loading ? (openBlock(), createBlock(_sfc_main$5$2, {
708
911
  key: 0,
709
912
  name: __props.loadingIcon || unref(appConfig).ui.icons.loading,
710
913
  "data-slot": "itemLeadingIcon",
@@ -713,7 +916,7 @@ var _sfc_main$1 = {
713
916
  color: item?.color,
714
917
  loading: true
715
918
  })
716
- }, null, 8, ["name", "class"])) : item.icon ? (openBlock(), createBlock(_sfc_main$2$1, {
919
+ }, null, 8, ["name", "class"])) : item.icon ? (openBlock(), createBlock(_sfc_main$5$2, {
717
920
  key: 1,
718
921
  name: item.icon,
719
922
  "data-slot": "itemLeadingIcon",
@@ -722,7 +925,7 @@ var _sfc_main$1 = {
722
925
  color: item?.color,
723
926
  active
724
927
  })
725
- }, null, 8, ["name", "class"])) : item.avatar ? (openBlock(), createBlock(_sfc_main$9, mergeProps({
928
+ }, null, 8, ["name", "class"])) : item.avatar ? (openBlock(), createBlock(_sfc_main$3$1, mergeProps({
726
929
  key: 2,
727
930
  size: item.ui?.itemLeadingAvatarSize || __props.uiOverride?.itemLeadingAvatarSize || __props.ui.itemLeadingAvatarSize()
728
931
  }, item.avatar, {
@@ -746,7 +949,7 @@ var _sfc_main$1 = {
746
949
  item,
747
950
  active,
748
951
  index
749
- }, () => [createTextVNode(toDisplayString(unref(get)(item, props.labelKey)), 1)]), item.target === "_blank" && __props.externalIcon !== false ? (openBlock(), createBlock(_sfc_main$2$1, {
952
+ }, () => [createTextVNode(toDisplayString(unref(get)(item, props.labelKey)), 1)]), item.target === "_blank" && __props.externalIcon !== false ? (openBlock(), createBlock(_sfc_main$5$2, {
750
953
  key: 0,
751
954
  name: typeof __props.externalIcon === "string" ? __props.externalIcon : unref(appConfig).ui.icons.external,
752
955
  "data-slot": "itemLabelExternalIcon",
@@ -772,7 +975,7 @@ var _sfc_main$1 = {
772
975
  active,
773
976
  index,
774
977
  ui: __props.ui
775
- }, () => [item.children?.length ? (openBlock(), createBlock(_sfc_main$2$1, {
978
+ }, () => [item.children?.length ? (openBlock(), createBlock(_sfc_main$5$2, {
776
979
  key: 0,
777
980
  name: childrenIcon.value,
778
981
  "data-slot": "itemTrailingIcon",
@@ -786,12 +989,12 @@ var _sfc_main$1 = {
786
989
  "data-slot": "itemTrailingKbds",
787
990
  class: __props.ui.itemTrailingKbds({ class: [__props.uiOverride?.itemTrailingKbds, item.ui?.itemTrailingKbds] })
788
991
  }, [(openBlock(true), createBlock(Fragment, null, renderList(item.kbds, (kbd, kbdIndex) => {
789
- return openBlock(), createBlock(_sfc_main$1$1, mergeProps({
992
+ return openBlock(), createBlock(_sfc_main$8$1, mergeProps({
790
993
  key: kbdIndex,
791
994
  size: item.ui?.itemTrailingKbdsSize || __props.uiOverride?.itemTrailingKbdsSize || __props.ui.itemTrailingKbdsSize()
792
995
  }, { ref_for: true }, typeof kbd === "string" ? { value: kbd } : kbd), null, 16, ["size"]);
793
996
  }), 128))], 2)) : createCommentVNode("", true)]), createVNode(unref(DropdownMenu).ItemIndicator, { "as-child": "" }, {
794
- default: withCtx(() => [createVNode(_sfc_main$2$1, {
997
+ default: withCtx(() => [createVNode(_sfc_main$5$2, {
795
998
  name: __props.checkedIcon || unref(appConfig).ui.icons.check,
796
999
  "data-slot": "itemTrailingIcon",
797
1000
  class: __props.ui.itemTrailingIcon({
@@ -821,7 +1024,7 @@ var _sfc_main$1 = {
821
1024
  "as-child": ""
822
1025
  }, {
823
1026
  default: withCtx((_, _push, _parent, _scopeId) => {
824
- if (_push) _push(ssrRenderComponent(_sfc_main$6$1, mergeProps({
1027
+ if (_push) _push(ssrRenderComponent(_sfc_main$7, mergeProps({
825
1028
  autofocus: "",
826
1029
  autocomplete: "off",
827
1030
  size: __props.size
@@ -830,7 +1033,7 @@ var _sfc_main$1 = {
830
1033
  class: __props.ui.input({ class: __props.uiOverride?.input }),
831
1034
  onChange: () => {}
832
1035
  }), null, _parent, _scopeId));
833
- else return [createVNode(_sfc_main$6$1, mergeProps({
1036
+ else return [createVNode(_sfc_main$7, mergeProps({
834
1037
  autofocus: "",
835
1038
  autocomplete: "off",
836
1039
  size: __props.size
@@ -922,7 +1125,7 @@ var _sfc_main$1 = {
922
1125
  }),
923
1126
  _: 2
924
1127
  }, _parent, _scopeId));
925
- _push(ssrRenderComponent(_sfc_main$1, mergeProps({
1128
+ _push(ssrRenderComponent(_sfc_main$2, mergeProps({
926
1129
  sub: "",
927
1130
  class: item.ui?.content,
928
1131
  ui: __props.ui,
@@ -974,7 +1177,7 @@ var _sfc_main$1 = {
974
1177
  "disabled",
975
1178
  "text-value",
976
1179
  "class"
977
- ]), createVNode(_sfc_main$1, mergeProps({
1180
+ ]), createVNode(_sfc_main$2, mergeProps({
978
1181
  sub: "",
979
1182
  class: item.ui?.content,
980
1183
  ui: __props.ui,
@@ -1045,7 +1248,7 @@ var _sfc_main$1 = {
1045
1248
  }),
1046
1249
  _: 2
1047
1250
  }, _parent, _scopeId));
1048
- else _push(ssrRenderComponent(_sfc_main$1$2, mergeProps({ ref_for: true }, unref(pickLinkProps)(item), { custom: "" }), {
1251
+ else _push(ssrRenderComponent(_sfc_main$1$1, mergeProps({ ref_for: true }, unref(pickLinkProps)(item), { custom: "" }), {
1049
1252
  default: withCtx(({ active, ...slotProps }, _push, _parent, _scopeId) => {
1050
1253
  if (_push) _push(ssrRenderComponent(unref(DropdownMenu).Item, {
1051
1254
  "as-child": "",
@@ -1203,7 +1406,7 @@ var _sfc_main$1 = {
1203
1406
  "disabled",
1204
1407
  "text-value",
1205
1408
  "class"
1206
- ]), createVNode(_sfc_main$1, mergeProps({
1409
+ ]), createVNode(_sfc_main$2, mergeProps({
1207
1410
  sub: "",
1208
1411
  class: item.ui?.content,
1209
1412
  ui: __props.ui,
@@ -1273,7 +1476,7 @@ var _sfc_main$1 = {
1273
1476
  "class",
1274
1477
  "onUpdate:modelValue",
1275
1478
  "onSelect"
1276
- ])) : (openBlock(), createBlock(_sfc_main$1$2, mergeProps({
1479
+ ])) : (openBlock(), createBlock(_sfc_main$1$1, mergeProps({
1277
1480
  key: 4,
1278
1481
  ref_for: true
1279
1482
  }, unref(pickLinkProps)(item), { custom: "" }), {
@@ -1337,7 +1540,7 @@ var _sfc_main$1 = {
1337
1540
  "onUpdate:modelValue": ($event) => searchTerm.value = $event,
1338
1541
  "as-child": ""
1339
1542
  }, {
1340
- default: withCtx(() => [createVNode(_sfc_main$6$1, mergeProps({
1543
+ default: withCtx(() => [createVNode(_sfc_main$7, mergeProps({
1341
1544
  autofocus: "",
1342
1545
  autocomplete: "off",
1343
1546
  size: __props.size
@@ -1416,7 +1619,7 @@ var _sfc_main$1 = {
1416
1619
  "disabled",
1417
1620
  "text-value",
1418
1621
  "class"
1419
- ]), createVNode(_sfc_main$1, mergeProps({
1622
+ ]), createVNode(_sfc_main$2, mergeProps({
1420
1623
  sub: "",
1421
1624
  class: item.ui?.content,
1422
1625
  ui: __props.ui,
@@ -1486,7 +1689,7 @@ var _sfc_main$1 = {
1486
1689
  "class",
1487
1690
  "onUpdate:modelValue",
1488
1691
  "onSelect"
1489
- ])) : (openBlock(), createBlock(_sfc_main$1$2, mergeProps({
1692
+ ])) : (openBlock(), createBlock(_sfc_main$1$1, mergeProps({
1490
1693
  key: 4,
1491
1694
  ref_for: true
1492
1695
  }, unref(pickLinkProps)(item), { custom: "" }), {
@@ -1553,7 +1756,7 @@ var _sfc_main$1 = {
1553
1756
  "onUpdate:modelValue": ($event) => searchTerm.value = $event,
1554
1757
  "as-child": ""
1555
1758
  }, {
1556
- default: withCtx(() => [createVNode(_sfc_main$6$1, mergeProps({
1759
+ default: withCtx(() => [createVNode(_sfc_main$7, mergeProps({
1557
1760
  autofocus: "",
1558
1761
  autocomplete: "off",
1559
1762
  size: __props.size
@@ -1632,7 +1835,7 @@ var _sfc_main$1 = {
1632
1835
  "disabled",
1633
1836
  "text-value",
1634
1837
  "class"
1635
- ]), createVNode(_sfc_main$1, mergeProps({
1838
+ ]), createVNode(_sfc_main$2, mergeProps({
1636
1839
  sub: "",
1637
1840
  class: item.ui?.content,
1638
1841
  ui: __props.ui,
@@ -1702,7 +1905,7 @@ var _sfc_main$1 = {
1702
1905
  "class",
1703
1906
  "onUpdate:modelValue",
1704
1907
  "onSelect"
1705
- ])) : (openBlock(), createBlock(_sfc_main$1$2, mergeProps({
1908
+ ])) : (openBlock(), createBlock(_sfc_main$1$1, mergeProps({
1706
1909
  key: 4,
1707
1910
  ref_for: true
1708
1911
  }, unref(pickLinkProps)(item), { custom: "" }), {
@@ -1772,7 +1975,7 @@ var _sfc_main$1 = {
1772
1975
  "onUpdate:modelValue": ($event) => searchTerm.value = $event,
1773
1976
  "as-child": ""
1774
1977
  }, {
1775
- default: withCtx(() => [createVNode(_sfc_main$6$1, mergeProps({
1978
+ default: withCtx(() => [createVNode(_sfc_main$7, mergeProps({
1776
1979
  autofocus: "",
1777
1980
  autocomplete: "off",
1778
1981
  size: __props.size
@@ -1851,7 +2054,7 @@ var _sfc_main$1 = {
1851
2054
  "disabled",
1852
2055
  "text-value",
1853
2056
  "class"
1854
- ]), createVNode(_sfc_main$1, mergeProps({
2057
+ ]), createVNode(_sfc_main$2, mergeProps({
1855
2058
  sub: "",
1856
2059
  class: item.ui?.content,
1857
2060
  ui: __props.ui,
@@ -1921,7 +2124,7 @@ var _sfc_main$1 = {
1921
2124
  "class",
1922
2125
  "onUpdate:modelValue",
1923
2126
  "onSelect"
1924
- ])) : (openBlock(), createBlock(_sfc_main$1$2, mergeProps({
2127
+ ])) : (openBlock(), createBlock(_sfc_main$1$1, mergeProps({
1925
2128
  key: 4,
1926
2129
  ref_for: true
1927
2130
  }, unref(pickLinkProps)(item), { custom: "" }), {
@@ -1985,10 +2188,10 @@ var _sfc_main$1 = {
1985
2188
  };
1986
2189
  }
1987
2190
  };
1988
- var _sfc_setup$8 = _sfc_main$1.setup;
1989
- _sfc_main$1.setup = (props, ctx) => {
2191
+ var _sfc_setup$8 = _sfc_main$2.setup;
2192
+ _sfc_main$2.setup = (props, ctx) => {
1990
2193
  const ssrContext = useSSRContext();
1991
- (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("../node_modules/.pnpm/@nuxt+ui@4.10.0_250a96140fc8b7523156f40a2ef5e33e/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenuContent.vue");
2194
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("../node_modules/.pnpm/@nuxt+ui@4.10.0_e9e3fcf18fb997bdd8dc5f7c218a2205/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenuContent.vue");
1992
2195
  return _sfc_setup$8 ? _sfc_setup$8(props, ctx) : void 0;
1993
2196
  };
1994
2197
  //#endregion
@@ -2191,8 +2394,8 @@ var virtual_nuxt_node_modules_2F_cache_2Fnuxt_2F_nuxt_2Fui_2Fdropdown_menu_defau
2191
2394
  "defaultVariants": { "size": "md" }
2192
2395
  };
2193
2396
  //#endregion
2194
- //#region node_modules/.pnpm/@nuxt+ui@4.10.0_250a96140fc8b7523156f40a2ef5e33e/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenu.vue
2195
- var _sfc_main = {
2397
+ //#region node_modules/.pnpm/@nuxt+ui@4.10.0_e9e3fcf18fb997bdd8dc5f7c218a2205/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenu.vue
2398
+ var _sfc_main$1 = {
2196
2399
  __name: "UDropdownMenu",
2197
2400
  __ssrInlineRender: true,
2198
2401
  props: /*@__PURE__*/ mergeModels({
@@ -2327,7 +2530,7 @@ var _sfc_main = {
2327
2530
  _: 2
2328
2531
  }, _parent, _scopeId));
2329
2532
  else _push(`<!---->`);
2330
- _push(ssrRenderComponent(_sfc_main$1, mergeProps({
2533
+ _push(ssrRenderComponent(_sfc_main$2, mergeProps({
2331
2534
  "search-term": searchTerm.value,
2332
2535
  "onUpdate:searchTerm": ($event) => searchTerm.value = $event,
2333
2536
  class: ui.value.content({ class: [!slots.default && unref(props).class, unref(props).ui?.content] }),
@@ -2376,7 +2579,7 @@ var _sfc_main = {
2376
2579
  }, {
2377
2580
  default: withCtx(() => [renderSlot(_ctx.$slots, "default", { open })]),
2378
2581
  _: 2
2379
- }, 1032, ["class", "disabled"])) : createCommentVNode("", true), createVNode(_sfc_main$1, mergeProps({
2582
+ }, 1032, ["class", "disabled"])) : createCommentVNode("", true), createVNode(_sfc_main$2, mergeProps({
2380
2583
  "search-term": searchTerm.value,
2381
2584
  "onUpdate:searchTerm": ($event) => searchTerm.value = $event,
2382
2585
  class: ui.value.content({ class: [!slots.default && unref(props).class, unref(props).ui?.content] }),
@@ -2429,317 +2632,13 @@ var _sfc_main = {
2429
2632
  };
2430
2633
  }
2431
2634
  };
2432
- var _sfc_setup$7 = _sfc_main.setup;
2433
- _sfc_main.setup = (props, ctx) => {
2635
+ var _sfc_setup$7 = _sfc_main$1.setup;
2636
+ _sfc_main$1.setup = (props, ctx) => {
2434
2637
  const ssrContext = useSSRContext();
2435
- (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("../node_modules/.pnpm/@nuxt+ui@4.10.0_250a96140fc8b7523156f40a2ef5e33e/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenu.vue");
2638
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("../node_modules/.pnpm/@nuxt+ui@4.10.0_e9e3fcf18fb997bdd8dc5f7c218a2205/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenu.vue");
2436
2639
  return _sfc_setup$7 ? _sfc_setup$7(props, ctx) : void 0;
2437
2640
  };
2438
2641
  //#endregion
2439
- //#region app/components/scenario/review/loading.vue?vue&type=script&setup=true&lang.ts
2440
- var loading_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
2441
- __name: "loading",
2442
- __ssrInlineRender: true,
2443
- setup(__props) {
2444
- const phrases = [
2445
- "Analisando os elementos da tela",
2446
- "Identificando os fluxos de navegação",
2447
- "Interpretando suas interações",
2448
- "Gerando os contextos do cenário",
2449
- "Escrevendo os passos em Gherkin",
2450
- "Traduzindo para o teste Playwright",
2451
- "Dando os retoques finais"
2452
- ];
2453
- return (_ctx, _push, _parent, _attrs) => {
2454
- _push(ssrRenderComponent(phrases_default, mergeProps({
2455
- phrases,
2456
- "data-testid": "contexto-carregando"
2457
- }, _attrs), null, _parent));
2458
- };
2459
- }
2460
- });
2461
- //#endregion
2462
- //#region app/components/scenario/review/loading.vue
2463
- var _sfc_setup$6 = loading_vue_vue_type_script_setup_true_lang_default.setup;
2464
- loading_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
2465
- const ssrContext = useSSRContext();
2466
- (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/scenario/review/loading.vue");
2467
- return _sfc_setup$6 ? _sfc_setup$6(props, ctx) : void 0;
2468
- };
2469
- var loading_default = Object.assign(loading_vue_vue_type_script_setup_true_lang_default, { __name: "ScenarioReviewLoading" });
2470
- //#endregion
2471
- //#region app/components/scenario/review/modal.vue?vue&type=script&setup=true&lang.ts
2472
- var modal_vue_vue_type_script_setup_true_lang_default$2 = /*@__PURE__*/ defineComponent({
2473
- __name: "modal",
2474
- __ssrInlineRender: true,
2475
- props: /*@__PURE__*/ mergeModels({
2476
- slug: {},
2477
- isPublic: {
2478
- type: Boolean,
2479
- default: false
2480
- }
2481
- }, {
2482
- "open": {
2483
- type: Boolean,
2484
- default: false
2485
- },
2486
- "openModifiers": {}
2487
- }),
2488
- emits: /*@__PURE__*/ mergeModels(["generated", "rerecord"], ["update:open"]),
2489
- setup(__props, { emit: __emit }) {
2490
- const open = useModel(__props, "open");
2491
- const emit = __emit;
2492
- const { state, url } = useWebdriver();
2493
- function emptyDraft() {
2494
- return {
2495
- title: "",
2496
- tags: [],
2497
- domain: "",
2498
- path: "",
2499
- gherkin: "",
2500
- playwright: ""
2501
- };
2502
- }
2503
- const step = ref("review");
2504
- const draft = ref(emptyDraft());
2505
- const error = ref(null);
2506
- watch(open, (isOpen) => {
2507
- if (isOpen) {
2508
- step.value = "review";
2509
- draft.value = emptyDraft();
2510
- error.value = null;
2511
- }
2512
- });
2513
- const modalTitle = computed(() => step.value === "edit" ? "Revise os contextos" : "Revise seus eventos");
2514
- const timeline = computed(() => state.value.events.filter((event) => event.type && event.timestamp).sort((a, b) => a.timestamp - b.timestamp));
2515
- const submitting = ref(false);
2516
- const baseUrl = computed(() => {
2517
- const first = timeline.value.find((event) => event.url);
2518
- if (!first?.url) return null;
2519
- try {
2520
- return new URL(first.url).origin;
2521
- } catch {
2522
- return null;
2523
- }
2524
- });
2525
- const mappedEvents = computed(() => timeline.value.map((event) => ({
2526
- type: event.type,
2527
- timestamp: event.timestamp,
2528
- url: event.url ?? null,
2529
- selectors: event.selectors ?? null,
2530
- label: event.label ?? null,
2531
- value: event.value ?? null,
2532
- sensitive: event.sensitive ?? false,
2533
- html: event.html ?? null
2534
- })));
2535
- async function generate() {
2536
- if (!baseUrl.value) {
2537
- error.value = "Nenhuma navegação registrada na gravação.";
2538
- return;
2539
- }
2540
- error.value = null;
2541
- step.value = "loading";
2542
- try {
2543
- draft.value = await $fetch$2(`/api/projects/${__props.slug}/tests/draft`, {
2544
- method: "POST",
2545
- body: {
2546
- baseUrl: baseUrl.value,
2547
- events: mappedEvents.value,
2548
- isPublic: __props.isPublic
2549
- }
2550
- });
2551
- step.value = "edit";
2552
- } catch (err) {
2553
- error.value = extractServerError(err, "Não foi possível gerar o cenário. Tente novamente.");
2554
- step.value = "review";
2555
- }
2556
- }
2557
- async function commit() {
2558
- if (!draft.value) return;
2559
- submitting.value = true;
2560
- error.value = null;
2561
- try {
2562
- await $fetch$2(`/api/projects/${__props.slug}/tests`, {
2563
- method: "POST",
2564
- body: {
2565
- ...draft.value,
2566
- events: mappedEvents.value
2567
- }
2568
- });
2569
- open.value = false;
2570
- emit("generated");
2571
- } catch (err) {
2572
- error.value = extractServerError(err, "Não foi possível salvar o cenário. Tente novamente.");
2573
- } finally {
2574
- submitting.value = false;
2575
- }
2576
- }
2577
- function rerecord() {
2578
- open.value = false;
2579
- emit("rerecord");
2580
- }
2581
- return (_ctx, _push, _parent, _attrs) => {
2582
- const _component_BaseModal = modal_default$1$1;
2583
- const _component_ScenarioReviewLoading = loading_default;
2584
- const _component_ScenarioWarnings = warnings_default;
2585
- const _component_ScenarioReviewContexts = contexts_default;
2586
- const _component_ScenarioReviewTimeline = timeline_default;
2587
- const _component_UAlert = _sfc_main$5;
2588
- const _component_UButton = _sfc_main$6;
2589
- _push(ssrRenderComponent(_component_BaseModal, mergeProps({
2590
- open: open.value,
2591
- "onUpdate:open": ($event) => open.value = $event,
2592
- title: unref(modalTitle),
2593
- dismissable: false,
2594
- loading: unref(step) === "loading",
2595
- wide: ""
2596
- }, _attrs), {
2597
- body: withCtx((_, _push, _parent, _scopeId) => {
2598
- if (_push) {
2599
- if (unref(step) === "loading") _push(ssrRenderComponent(_component_ScenarioReviewLoading, null, null, _parent, _scopeId));
2600
- else if (unref(step) === "edit") {
2601
- _push(`<!--[-->`);
2602
- _push(ssrRenderComponent(_component_ScenarioWarnings, {
2603
- warnings: unref(draft).warnings,
2604
- slug: __props.slug,
2605
- class: "mb-4"
2606
- }, null, _parent, _scopeId));
2607
- _push(ssrRenderComponent(_component_ScenarioReviewContexts, {
2608
- draft: unref(draft),
2609
- "onUpdate:draft": ($event) => isRef(draft) ? draft.value = $event : null,
2610
- novo: ""
2611
- }, null, _parent, _scopeId));
2612
- _push(`<!--]-->`);
2613
- } else _push(ssrRenderComponent(_component_ScenarioReviewTimeline, {
2614
- events: unref(timeline),
2615
- "video-src": unref(state).videoSessionId ? `${unref(url)}/recording/${unref(state).videoSessionId}` : null,
2616
- "recording-started-at": unref(state).recordingStartedAt
2617
- }, null, _parent, _scopeId));
2618
- if (unref(error)) _push(ssrRenderComponent(_component_UAlert, {
2619
- color: "error",
2620
- variant: "soft",
2621
- description: unref(error),
2622
- class: "mt-4",
2623
- "data-testid": "revisao-erro"
2624
- }, null, _parent, _scopeId));
2625
- else _push(`<!---->`);
2626
- } else return [unref(step) === "loading" ? (openBlock(), createBlock(_component_ScenarioReviewLoading, { key: 0 })) : unref(step) === "edit" ? (openBlock(), createBlock(Fragment, { key: 1 }, [createVNode(_component_ScenarioWarnings, {
2627
- warnings: unref(draft).warnings,
2628
- slug: __props.slug,
2629
- class: "mb-4"
2630
- }, null, 8, ["warnings", "slug"]), createVNode(_component_ScenarioReviewContexts, {
2631
- draft: unref(draft),
2632
- "onUpdate:draft": ($event) => isRef(draft) ? draft.value = $event : null,
2633
- novo: ""
2634
- }, null, 8, ["draft", "onUpdate:draft"])], 64)) : (openBlock(), createBlock(_component_ScenarioReviewTimeline, {
2635
- key: 2,
2636
- events: unref(timeline),
2637
- "video-src": unref(state).videoSessionId ? `${unref(url)}/recording/${unref(state).videoSessionId}` : null,
2638
- "recording-started-at": unref(state).recordingStartedAt
2639
- }, null, 8, [
2640
- "events",
2641
- "video-src",
2642
- "recording-started-at"
2643
- ])), unref(error) ? (openBlock(), createBlock(_component_UAlert, {
2644
- key: 3,
2645
- color: "error",
2646
- variant: "soft",
2647
- description: unref(error),
2648
- class: "mt-4",
2649
- "data-testid": "revisao-erro"
2650
- }, null, 8, ["description"])) : createCommentVNode("", true)];
2651
- }),
2652
- footer: withCtx((_, _push, _parent, _scopeId) => {
2653
- if (_push) {
2654
- if (unref(step) === "edit") {
2655
- _push(`<!--[-->`);
2656
- _push(ssrRenderComponent(_component_UButton, {
2657
- label: "Cancelar",
2658
- color: "neutral",
2659
- variant: "ghost",
2660
- "data-testid": "contexto-cancelar",
2661
- onClick: ($event) => open.value = false
2662
- }, null, _parent, _scopeId));
2663
- _push(ssrRenderComponent(_component_UButton, {
2664
- label: "Enviar",
2665
- loading: unref(submitting),
2666
- "data-testid": "contexto-enviar",
2667
- onClick: commit
2668
- }, null, _parent, _scopeId));
2669
- _push(`<!--]-->`);
2670
- } else {
2671
- _push(`<!--[-->`);
2672
- _push(ssrRenderComponent(_component_UButton, {
2673
- label: "Gravar novamente",
2674
- color: "neutral",
2675
- variant: "soft",
2676
- class: "mr-auto",
2677
- "data-testid": "revisao-regravar",
2678
- onClick: rerecord
2679
- }, null, _parent, _scopeId));
2680
- _push(ssrRenderComponent(_component_UButton, {
2681
- label: "Cancelar",
2682
- color: "neutral",
2683
- variant: "ghost",
2684
- "data-testid": "revisao-cancelar",
2685
- onClick: ($event) => open.value = false
2686
- }, null, _parent, _scopeId));
2687
- _push(ssrRenderComponent(_component_UButton, {
2688
- label: "Gerar cenário",
2689
- "data-testid": "revisao-gerar",
2690
- onClick: generate
2691
- }, null, _parent, _scopeId));
2692
- _push(`<!--]-->`);
2693
- }
2694
- } else return [unref(step) === "edit" ? (openBlock(), createBlock(Fragment, { key: 0 }, [createVNode(_component_UButton, {
2695
- label: "Cancelar",
2696
- color: "neutral",
2697
- variant: "ghost",
2698
- "data-testid": "contexto-cancelar",
2699
- onClick: ($event) => open.value = false
2700
- }, null, 8, ["onClick"]), createVNode(_component_UButton, {
2701
- label: "Enviar",
2702
- loading: unref(submitting),
2703
- "data-testid": "contexto-enviar",
2704
- onClick: commit
2705
- }, null, 8, ["loading"])], 64)) : (openBlock(), createBlock(Fragment, { key: 1 }, [
2706
- createVNode(_component_UButton, {
2707
- label: "Gravar novamente",
2708
- color: "neutral",
2709
- variant: "soft",
2710
- class: "mr-auto",
2711
- "data-testid": "revisao-regravar",
2712
- onClick: rerecord
2713
- }),
2714
- createVNode(_component_UButton, {
2715
- label: "Cancelar",
2716
- color: "neutral",
2717
- variant: "ghost",
2718
- "data-testid": "revisao-cancelar",
2719
- onClick: ($event) => open.value = false
2720
- }, null, 8, ["onClick"]),
2721
- createVNode(_component_UButton, {
2722
- label: "Gerar cenário",
2723
- "data-testid": "revisao-gerar",
2724
- onClick: generate
2725
- })
2726
- ], 64))];
2727
- }),
2728
- _: 1
2729
- }, _parent));
2730
- };
2731
- }
2732
- });
2733
- //#endregion
2734
- //#region app/components/scenario/review/modal.vue
2735
- var _sfc_setup$5 = modal_vue_vue_type_script_setup_true_lang_default$2.setup;
2736
- modal_vue_vue_type_script_setup_true_lang_default$2.setup = (props, ctx) => {
2737
- const ssrContext = useSSRContext();
2738
- (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/scenario/review/modal.vue");
2739
- return _sfc_setup$5 ? _sfc_setup$5(props, ctx) : void 0;
2740
- };
2741
- var modal_default$2 = Object.assign(modal_vue_vue_type_script_setup_true_lang_default$2, { __name: "ScenarioReviewModal" });
2742
- //#endregion
2743
2642
  //#region app/components/scenario/empty.vue?vue&type=script&setup=true&lang.ts
2744
2643
  var empty_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
2745
2644
  __name: "empty",
@@ -2752,8 +2651,8 @@ var empty_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
2752
2651
  setup(__props, { emit: __emit }) {
2753
2652
  const emit = __emit;
2754
2653
  return (_ctx, _push, _parent, _attrs) => {
2755
- const _component_UCard = _sfc_main$7;
2756
- const _component_UIcon = _sfc_main$2$1;
2654
+ const _component_UCard = _sfc_main$8;
2655
+ const _component_UIcon = _sfc_main$5$2;
2757
2656
  _push(`<div${ssrRenderAttrs(mergeProps({
2758
2657
  "data-testid": "cenario-vazio",
2759
2658
  class: "py-10 text-center"
@@ -2788,11 +2687,11 @@ var empty_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
2788
2687
  });
2789
2688
  //#endregion
2790
2689
  //#region app/components/scenario/empty.vue
2791
- var _sfc_setup$4 = empty_vue_vue_type_script_setup_true_lang_default.setup;
2690
+ var _sfc_setup$6 = empty_vue_vue_type_script_setup_true_lang_default.setup;
2792
2691
  empty_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
2793
2692
  const ssrContext = useSSRContext();
2794
2693
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/scenario/empty.vue");
2795
- return _sfc_setup$4 ? _sfc_setup$4(props, ctx) : void 0;
2694
+ return _sfc_setup$6 ? _sfc_setup$6(props, ctx) : void 0;
2796
2695
  };
2797
2696
  var empty_default = Object.assign(empty_vue_vue_type_script_setup_true_lang_default, { __name: "ScenarioEmpty" });
2798
2697
  //#endregion
@@ -2830,9 +2729,9 @@ var vars_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
2830
2729
  return variable.secret && !revealed.value.includes(index) ? "password" : "text";
2831
2730
  }
2832
2731
  return (_ctx, _push, _parent, _attrs) => {
2833
- const _component_UInput = _sfc_main$6$1;
2732
+ const _component_UInput = _sfc_main$7;
2834
2733
  const _component_UButton = _sfc_main$6;
2835
- const _component_UTooltip = _sfc_main$8;
2734
+ const _component_UTooltip = _sfc_main$7$1;
2836
2735
  _push(`<div${ssrRenderAttrs(mergeProps({ class: "flex flex-col gap-2" }, _attrs))}><datalist${ssrRenderAttr("id", unref(keyListId))}><!--[-->`);
2837
2736
  ssrRenderList(__props.knownKeys, (key) => {
2838
2737
  _push(`<option${ssrRenderAttr("value", key)}></option>`);
@@ -2938,16 +2837,16 @@ var vars_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
2938
2837
  });
2939
2838
  //#endregion
2940
2839
  //#region app/components/project/environments/vars.vue
2941
- var _sfc_setup$3 = vars_vue_vue_type_script_setup_true_lang_default.setup;
2840
+ var _sfc_setup$5 = vars_vue_vue_type_script_setup_true_lang_default.setup;
2942
2841
  vars_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
2943
2842
  const ssrContext = useSSRContext();
2944
2843
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/project/environments/vars.vue");
2945
- return _sfc_setup$3 ? _sfc_setup$3(props, ctx) : void 0;
2844
+ return _sfc_setup$5 ? _sfc_setup$5(props, ctx) : void 0;
2946
2845
  };
2947
2846
  var vars_default = Object.assign(vars_vue_vue_type_script_setup_true_lang_default, { __name: "ProjectEnvironmentsVars" });
2948
2847
  //#endregion
2949
2848
  //#region app/components/project/environments/modal.vue?vue&type=script&setup=true&lang.ts
2950
- var modal_vue_vue_type_script_setup_true_lang_default$1 = /*@__PURE__*/ defineComponent({
2849
+ var modal_vue_vue_type_script_setup_true_lang_default$2 = /*@__PURE__*/ defineComponent({
2951
2850
  __name: "modal",
2952
2851
  __ssrInlineRender: true,
2953
2852
  props: /*@__PURE__*/ mergeModels({ slug: {} }, {
@@ -3020,7 +2919,7 @@ var modal_vue_vue_type_script_setup_true_lang_default$1 = /*@__PURE__*/ defineCo
3020
2919
  async function load() {
3021
2920
  loading.value = true;
3022
2921
  try {
3023
- const environmentList = await $fetch$2(`/api/projects/${__props.slug}/environments`);
2922
+ const environmentList = await $fetch$1(`/api/projects/${__props.slug}/environments`);
3024
2923
  list.value = environmentList;
3025
2924
  const target = environmentList.environments.find((environment) => environment.slug === environmentList.active) ?? environmentList.environments[0];
3026
2925
  if (target) select(target);
@@ -3051,7 +2950,7 @@ var modal_vue_vue_type_script_setup_true_lang_default$1 = /*@__PURE__*/ defineCo
3051
2950
  const label = newName.value.trim();
3052
2951
  if (!label) return;
3053
2952
  await act(async () => {
3054
- const created = await $fetch$2(`/api/projects/${__props.slug}/environments`, {
2953
+ const created = await $fetch$1(`/api/projects/${__props.slug}/environments`, {
3055
2954
  method: "POST",
3056
2955
  body: { name: label }
3057
2956
  });
@@ -3062,7 +2961,7 @@ var modal_vue_vue_type_script_setup_true_lang_default$1 = /*@__PURE__*/ defineCo
3062
2961
  }
3063
2962
  function save() {
3064
2963
  if (!selected.value) return;
3065
- return act(() => $fetch$2(`/api/projects/${__props.slug}/environments/${selected.value}`, {
2964
+ return act(() => $fetch$1(`/api/projects/${__props.slug}/environments/${selected.value}`, {
3066
2965
  method: "PUT",
3067
2966
  body: {
3068
2967
  name: name.value.trim(),
@@ -3082,16 +2981,16 @@ var modal_vue_vue_type_script_setup_true_lang_default$1 = /*@__PURE__*/ defineCo
3082
2981
  }
3083
2982
  const removed = current.value.slug;
3084
2983
  await act(async () => {
3085
- await $fetch$2(`/api/projects/${__props.slug}/environments/${removed}`, { method: "DELETE" });
2984
+ await $fetch$1(`/api/projects/${__props.slug}/environments/${removed}`, { method: "DELETE" });
3086
2985
  selected.value = null;
3087
2986
  }, "Ambiente removido", "Não foi possível remover o ambiente.");
3088
2987
  confirmingRemove.value = false;
3089
2988
  }
3090
2989
  return (_ctx, _push, _parent, _attrs) => {
3091
- const _component_BaseModal = modal_default$1$1;
2990
+ const _component_BaseModal = modal_default$4;
3092
2991
  const _component_UButton = _sfc_main$6;
3093
- const _component_UInput = _sfc_main$6$1;
3094
- const _component_UFormField = _sfc_main$8$1;
2992
+ const _component_UInput = _sfc_main$7;
2993
+ const _component_UFormField = _sfc_main$1$2;
3095
2994
  const _component_ProjectEnvironmentsVars = vars_default;
3096
2995
  const _component_BaseEmpty = empty_default$1;
3097
2996
  _push(ssrRenderComponent(_component_BaseModal, mergeProps({
@@ -3339,16 +3238,16 @@ var modal_vue_vue_type_script_setup_true_lang_default$1 = /*@__PURE__*/ defineCo
3339
3238
  });
3340
3239
  //#endregion
3341
3240
  //#region app/components/project/environments/modal.vue
3342
- var _sfc_setup$2 = modal_vue_vue_type_script_setup_true_lang_default$1.setup;
3343
- modal_vue_vue_type_script_setup_true_lang_default$1.setup = (props, ctx) => {
3241
+ var _sfc_setup$4 = modal_vue_vue_type_script_setup_true_lang_default$2.setup;
3242
+ modal_vue_vue_type_script_setup_true_lang_default$2.setup = (props, ctx) => {
3344
3243
  const ssrContext = useSSRContext();
3345
3244
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/project/environments/modal.vue");
3346
- return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
3245
+ return _sfc_setup$4 ? _sfc_setup$4(props, ctx) : void 0;
3347
3246
  };
3348
- var modal_default$1 = Object.assign(modal_vue_vue_type_script_setup_true_lang_default$1, { __name: "ProjectEnvironmentsModal" });
3247
+ var modal_default$2 = Object.assign(modal_vue_vue_type_script_setup_true_lang_default$2, { __name: "ProjectEnvironmentsModal" });
3349
3248
  //#endregion
3350
3249
  //#region app/components/project/settings/modal.vue?vue&type=script&setup=true&lang.ts
3351
- var modal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
3250
+ var modal_vue_vue_type_script_setup_true_lang_default$1 = /*@__PURE__*/ defineComponent({
3352
3251
  __name: "modal",
3353
3252
  __ssrInlineRender: true,
3354
3253
  props: /*@__PURE__*/ mergeModels({
@@ -3376,7 +3275,7 @@ var modal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
3376
3275
  async function skip() {
3377
3276
  skipping.value = true;
3378
3277
  try {
3379
- await $fetch$2(`/api/projects/${__props.slug}/settings/skip`, { method: "POST" });
3278
+ await $fetch$1(`/api/projects/${__props.slug}/settings/skip`, { method: "POST" });
3380
3279
  open.value = false;
3381
3280
  emit("saved");
3382
3281
  } catch (err) {
@@ -3388,7 +3287,7 @@ var modal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
3388
3287
  async function save() {
3389
3288
  saving.value = true;
3390
3289
  try {
3391
- await $fetch$2(`/api/projects/${__props.slug}/settings`, {
3290
+ await $fetch$1(`/api/projects/${__props.slug}/settings`, {
3392
3291
  method: "PUT",
3393
3292
  body: { baseUrl: url.value.trim() }
3394
3293
  });
@@ -3402,10 +3301,10 @@ var modal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
3402
3301
  }
3403
3302
  }
3404
3303
  return (_ctx, _push, _parent, _attrs) => {
3405
- const _component_BaseModal = modal_default$1$1;
3304
+ const _component_BaseModal = modal_default$4;
3406
3305
  const _component_UAlert = _sfc_main$5;
3407
- const _component_UFormField = _sfc_main$8$1;
3408
- const _component_UInput = _sfc_main$6$1;
3306
+ const _component_UFormField = _sfc_main$1$2;
3307
+ const _component_UInput = _sfc_main$7;
3409
3308
  const _component_UButton = _sfc_main$6;
3410
3309
  _push(ssrRenderComponent(_component_BaseModal, mergeProps({
3411
3310
  open: open.value,
@@ -3508,13 +3407,449 @@ var modal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
3508
3407
  });
3509
3408
  //#endregion
3510
3409
  //#region app/components/project/settings/modal.vue
3410
+ var _sfc_setup$3 = modal_vue_vue_type_script_setup_true_lang_default$1.setup;
3411
+ modal_vue_vue_type_script_setup_true_lang_default$1.setup = (props, ctx) => {
3412
+ const ssrContext = useSSRContext();
3413
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/project/settings/modal.vue");
3414
+ return _sfc_setup$3 ? _sfc_setup$3(props, ctx) : void 0;
3415
+ };
3416
+ var modal_default$1 = Object.assign(modal_vue_vue_type_script_setup_true_lang_default$1, { __name: "ProjectSettingsModal" });
3417
+ //#endregion
3418
+ //#region virtual:nuxt:node_modules%2F.cache%2Fnuxt%2F.nuxt%2Fui%2Fcollapsible.ts
3419
+ var virtual_nuxt_node_modules_2F_cache_2Fnuxt_2F_nuxt_2Fui_2Fcollapsible_default = { "slots": {
3420
+ "root": "",
3421
+ "content": "data-[state=open]:animate-[collapsible-down_200ms_ease-out] data-[state=closed]:animate-[collapsible-up_200ms_ease-out] data-[state=closed]:overflow-hidden"
3422
+ } };
3423
+ //#endregion
3424
+ //#region node_modules/.pnpm/@nuxt+ui@4.10.0_e9e3fcf18fb997bdd8dc5f7c218a2205/node_modules/@nuxt/ui/dist/runtime/components/Collapsible.vue
3425
+ var _sfc_main = {
3426
+ __name: "UCollapsible",
3427
+ __ssrInlineRender: true,
3428
+ props: {
3429
+ as: {
3430
+ type: null,
3431
+ required: false
3432
+ },
3433
+ class: {
3434
+ type: null,
3435
+ required: false
3436
+ },
3437
+ ui: {
3438
+ type: Object,
3439
+ required: false
3440
+ },
3441
+ defaultOpen: {
3442
+ type: Boolean,
3443
+ required: false
3444
+ },
3445
+ open: {
3446
+ type: Boolean,
3447
+ required: false
3448
+ },
3449
+ disabled: {
3450
+ type: Boolean,
3451
+ required: false
3452
+ },
3453
+ unmountOnHide: {
3454
+ type: Boolean,
3455
+ required: false,
3456
+ default: true
3457
+ }
3458
+ },
3459
+ emits: ["update:open"],
3460
+ setup(__props, { emit: __emit }) {
3461
+ const _props = __props;
3462
+ const emits = __emit;
3463
+ const slots = useSlots();
3464
+ const props = useComponentProps("collapsible", _props);
3465
+ const appConfig = useAppConfig();
3466
+ const rootProps = useForwardProps(reactivePick(props, "as", "defaultOpen", "open", "disabled", "unmountOnHide"), emits);
3467
+ const ui = computed(() => tv({
3468
+ extend: virtual_nuxt_node_modules_2F_cache_2Fnuxt_2F_nuxt_2Fui_2Fcollapsible_default,
3469
+ ...appConfig.ui?.collapsible || {}
3470
+ })());
3471
+ return (_ctx, _push, _parent, _attrs) => {
3472
+ _push(ssrRenderComponent(unref(CollapsibleRoot_default), mergeProps(unref(rootProps), {
3473
+ "data-slot": "root",
3474
+ class: ui.value.root({ class: [unref(props).ui?.root, unref(props).class] })
3475
+ }, _attrs), {
3476
+ default: withCtx(({ open }, _push, _parent, _scopeId) => {
3477
+ if (_push) {
3478
+ if (!!slots.default) _push(ssrRenderComponent(unref(CollapsibleTrigger_default), { "as-child": "" }, {
3479
+ default: withCtx((_, _push, _parent, _scopeId) => {
3480
+ if (_push) ssrRenderSlot(_ctx.$slots, "default", { open }, null, _push, _parent, _scopeId);
3481
+ else return [renderSlot(_ctx.$slots, "default", { open })];
3482
+ }),
3483
+ _: 2
3484
+ }, _parent, _scopeId));
3485
+ else _push(`<!---->`);
3486
+ _push(ssrRenderComponent(unref(CollapsibleContent_default), {
3487
+ "data-slot": "content",
3488
+ class: ui.value.content({ class: unref(props).ui?.content })
3489
+ }, {
3490
+ default: withCtx((_, _push, _parent, _scopeId) => {
3491
+ if (_push) ssrRenderSlot(_ctx.$slots, "content", {}, null, _push, _parent, _scopeId);
3492
+ else return [renderSlot(_ctx.$slots, "content")];
3493
+ }),
3494
+ _: 2
3495
+ }, _parent, _scopeId));
3496
+ } else return [!!slots.default ? (openBlock(), createBlock(unref(CollapsibleTrigger_default), {
3497
+ key: 0,
3498
+ "as-child": ""
3499
+ }, {
3500
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", { open })]),
3501
+ _: 2
3502
+ }, 1024)) : createCommentVNode("", true), createVNode(unref(CollapsibleContent_default), {
3503
+ "data-slot": "content",
3504
+ class: ui.value.content({ class: unref(props).ui?.content })
3505
+ }, {
3506
+ default: withCtx(() => [renderSlot(_ctx.$slots, "content")]),
3507
+ _: 3
3508
+ }, 8, ["class"])];
3509
+ }),
3510
+ _: 3
3511
+ }, _parent));
3512
+ };
3513
+ }
3514
+ };
3515
+ var _sfc_setup$2 = _sfc_main.setup;
3516
+ _sfc_main.setup = (props, ctx) => {
3517
+ const ssrContext = useSSRContext();
3518
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("../node_modules/.pnpm/@nuxt+ui@4.10.0_e9e3fcf18fb997bdd8dc5f7c218a2205/node_modules/@nuxt/ui/dist/runtime/components/Collapsible.vue");
3519
+ return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
3520
+ };
3521
+ //#endregion
3522
+ //#region app/components/project/run-filtered/modal.vue?vue&type=script&setup=true&lang.ts
3523
+ var modal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
3524
+ __name: "modal",
3525
+ __ssrInlineRender: true,
3526
+ props: /*@__PURE__*/ mergeModels({
3527
+ running: {
3528
+ type: Boolean,
3529
+ default: false
3530
+ },
3531
+ passed: {
3532
+ type: Boolean,
3533
+ default: false
3534
+ },
3535
+ tests: { default: () => [] },
3536
+ projectName: {},
3537
+ slug: {},
3538
+ filter: { default: "" },
3539
+ testedAt: { default: null },
3540
+ output: { default: null }
3541
+ }, {
3542
+ "open": {
3543
+ type: Boolean,
3544
+ default: false
3545
+ },
3546
+ "openModifiers": {}
3547
+ }),
3548
+ emits: ["update:open"],
3549
+ setup(__props) {
3550
+ const open = useModel(__props, "open");
3551
+ const testIcons = {
3552
+ waiting: "i-ic-round-radio-button-unchecked",
3553
+ running: "line-md:loading-twotone-loop",
3554
+ success: "i-ic-round-check-circle",
3555
+ failed: "i-ic-round-error"
3556
+ };
3557
+ const testColors = {
3558
+ waiting: "text-dimmed",
3559
+ running: "text-neutral",
3560
+ success: "text-success",
3561
+ failed: "text-error"
3562
+ };
3563
+ /** O teste chega em execução e só depois falha, então abrir o que falhou é reação, não estado inicial. */
3564
+ const opened = ref([]);
3565
+ watch(() => __props.tests, (current) => {
3566
+ if (!current.length) {
3567
+ opened.value = [];
3568
+ return;
3569
+ }
3570
+ const failed = current.filter((test) => test.status === "failed").map((test) => test.id);
3571
+ opened.value = [.../* @__PURE__ */ new Set([...opened.value, ...failed])];
3572
+ }, {
3573
+ deep: true,
3574
+ immediate: true
3575
+ });
3576
+ function toggle(id, open) {
3577
+ opened.value = open ? [...opened.value, id] : opened.value.filter((other) => other !== id);
3578
+ }
3579
+ function ownError(test) {
3580
+ return test.error && test.steps.every((step) => step.status !== "failed") ? test.error : null;
3581
+ }
3582
+ return (_ctx, _push, _parent, _attrs) => {
3583
+ const _component_BaseModal = modal_default$4;
3584
+ const _component_UBadge = _sfc_main$2$1;
3585
+ const _component_BaseLoadingPhrases = phrases_default;
3586
+ const _component_UAlert = _sfc_main$5;
3587
+ const _component_UCollapsible = _sfc_main;
3588
+ const _component_UButton = _sfc_main$6;
3589
+ const _component_ScenarioTestRunSteps = steps_default;
3590
+ _push(ssrRenderComponent(_component_BaseModal, mergeProps({
3591
+ open: open.value,
3592
+ "onUpdate:open": ($event) => open.value = $event,
3593
+ dismissable: !__props.running,
3594
+ wide: ""
3595
+ }, _attrs), createSlots({
3596
+ header: withCtx((_, _push, _parent, _scopeId) => {
3597
+ if (_push) {
3598
+ _push(`<div class="flex flex-col pt-6 gap-2"${_scopeId}>`);
3599
+ if (__props.running) _push(`<p class="text-xl font-bold"${_scopeId}> Testando cenários filtrados... </p>`);
3600
+ else {
3601
+ _push(`<!--[-->`);
3602
+ _push(ssrRenderComponent(_component_UBadge, {
3603
+ class: "self-start",
3604
+ color: __props.passed ? "success" : "error",
3605
+ icon: __props.passed ? "i-ic-round-check-circle" : "i-ic-round-error",
3606
+ label: __props.passed ? "Sucesso" : "Falha",
3607
+ "data-testid": "execucao-status"
3608
+ }, null, _parent, _scopeId));
3609
+ _push(`<p class="mt-2 text-xl font-bold"${_scopeId}> Resultado dos testes </p><!--]-->`);
3610
+ }
3611
+ _push(`</div>`);
3612
+ } else return [createVNode("div", { class: "flex flex-col pt-6 gap-2" }, [__props.running ? (openBlock(), createBlock("p", {
3613
+ key: 0,
3614
+ class: "text-xl font-bold"
3615
+ }, " Testando cenários filtrados... ")) : (openBlock(), createBlock(Fragment, { key: 1 }, [createVNode(_component_UBadge, {
3616
+ class: "self-start",
3617
+ color: __props.passed ? "success" : "error",
3618
+ icon: __props.passed ? "i-ic-round-check-circle" : "i-ic-round-error",
3619
+ label: __props.passed ? "Sucesso" : "Falha",
3620
+ "data-testid": "execucao-status"
3621
+ }, null, 8, [
3622
+ "color",
3623
+ "icon",
3624
+ "label"
3625
+ ]), createVNode("p", { class: "mt-2 text-xl font-bold" }, " Resultado dos testes ")], 64))])];
3626
+ }),
3627
+ body: withCtx((_, _push, _parent, _scopeId) => {
3628
+ if (_push) {
3629
+ if (__props.running && __props.tests.length === 0) _push(ssrRenderComponent(_component_BaseLoadingPhrases, {
3630
+ phrases: ["Iniciando a execução"],
3631
+ "data-testid": "execucao-iniciando"
3632
+ }, null, _parent, _scopeId));
3633
+ else {
3634
+ _push(`<!--[-->`);
3635
+ if (!__props.running) {
3636
+ _push(`<div class="mb-6 space-y-0.5 text-sm" data-testid="execucao-detalhes"${_scopeId}><p${_scopeId}><span class="font-semibold"${_scopeId}>Projeto:</span> ${ssrInterpolate(__props.projectName)}</p>`);
3637
+ if (__props.filter) _push(`<p${_scopeId}><span class="font-semibold"${_scopeId}>Filtro:</span> ${ssrInterpolate(__props.filter)}</p>`);
3638
+ else _push(`<!---->`);
3639
+ _push(`<p${_scopeId}><span class="font-semibold"${_scopeId}>Cenários:</span> ${ssrInterpolate(__props.tests.length)}</p>`);
3640
+ if (__props.testedAt) _push(`<p${_scopeId}><span class="font-semibold"${_scopeId}>Testado em:</span> ${ssrInterpolate(__props.testedAt)}</p>`);
3641
+ else _push(`<!---->`);
3642
+ _push(`</div>`);
3643
+ } else _push(`<!---->`);
3644
+ if (__props.output) _push(ssrRenderComponent(_component_UAlert, {
3645
+ color: "error",
3646
+ variant: "soft",
3647
+ icon: "i-ic-round-error",
3648
+ title: "A execução não chegou a começar",
3649
+ class: "mb-6",
3650
+ "data-testid": "execucao-saida"
3651
+ }, {
3652
+ description: withCtx((_, _push, _parent, _scopeId) => {
3653
+ if (_push) _push(`<p class="mb-2"${_scopeId}> O Playwright encerrou antes de rodar qualquer passo. Saída do runner: </p><code class="block whitespace-pre-wrap font-mono text-xs"${_scopeId}>${ssrInterpolate(__props.output)}</code>`);
3654
+ else return [createVNode("p", { class: "mb-2" }, " O Playwright encerrou antes de rodar qualquer passo. Saída do runner: "), createVNode("code", { class: "block whitespace-pre-wrap font-mono text-xs" }, toDisplayString(__props.output), 1)];
3655
+ }),
3656
+ _: 1
3657
+ }, _parent, _scopeId));
3658
+ else _push(`<!---->`);
3659
+ _push(`<div class="flex flex-col gap-3"${_scopeId}><!--[-->`);
3660
+ ssrRenderList(__props.tests, (test) => {
3661
+ _push(ssrRenderComponent(_component_UCollapsible, {
3662
+ key: test.id,
3663
+ open: unref(opened).includes(test.id),
3664
+ "data-testid": "execucao-teste",
3665
+ "data-status": test.status,
3666
+ "onUpdate:open": ($event) => toggle(test.id, $event)
3667
+ }, {
3668
+ content: withCtx((_, _push, _parent, _scopeId) => {
3669
+ if (_push) {
3670
+ _push(`<div class="mt-1 rounded-md bg-elevated py-3 pl-3.5 pr-3"${_scopeId}>`);
3671
+ if (ownError(test)) _push(`<p class="text-sm text-dimmed" data-testid="execucao-teste-erro"${_scopeId}><span class="font-semibold text-error"${_scopeId}>Erro:</span> ${ssrInterpolate(ownError(test))}</p>`);
3672
+ else if (test.steps.length === 0) _push(`<p class="text-sm text-dimmed"${_scopeId}> Nenhum passo reportado. </p>`);
3673
+ else _push(`<!---->`);
3674
+ _push(ssrRenderComponent(_component_ScenarioTestRunSteps, { steps: test.steps }, null, _parent, _scopeId));
3675
+ _push(`</div>`);
3676
+ } else return [createVNode("div", { class: "mt-1 rounded-md bg-elevated py-3 pl-3.5 pr-3" }, [ownError(test) ? (openBlock(), createBlock("p", {
3677
+ key: 0,
3678
+ class: "text-sm text-dimmed",
3679
+ "data-testid": "execucao-teste-erro"
3680
+ }, [createVNode("span", { class: "font-semibold text-error" }, "Erro:"), createTextVNode(" " + toDisplayString(ownError(test)), 1)])) : test.steps.length === 0 ? (openBlock(), createBlock("p", {
3681
+ key: 1,
3682
+ class: "text-sm text-dimmed"
3683
+ }, " Nenhum passo reportado. ")) : createCommentVNode("", true), createVNode(_component_ScenarioTestRunSteps, { steps: test.steps }, null, 8, ["steps"])])];
3684
+ }),
3685
+ default: withCtx((_, _push, _parent, _scopeId) => {
3686
+ if (_push) _push(ssrRenderComponent(_component_UButton, {
3687
+ block: "",
3688
+ color: "neutral",
3689
+ variant: "soft",
3690
+ icon: testIcons[test.status],
3691
+ "trailing-icon": "i-ic-round-expand-more",
3692
+ ui: {
3693
+ base: "justify-start gap-3",
3694
+ leadingIcon: testColors[test.status],
3695
+ trailingIcon: "text-dimmed"
3696
+ },
3697
+ "data-testid": "execucao-teste-abrir"
3698
+ }, {
3699
+ default: withCtx((_, _push, _parent, _scopeId) => {
3700
+ if (_push) _push(`<span class="grow truncate text-left" data-testid="execucao-teste-titulo"${_scopeId}>${ssrInterpolate(test.title)}</span>`);
3701
+ else return [createVNode("span", {
3702
+ class: "grow truncate text-left",
3703
+ "data-testid": "execucao-teste-titulo"
3704
+ }, toDisplayString(test.title), 1)];
3705
+ }),
3706
+ _: 2
3707
+ }, _parent, _scopeId));
3708
+ else return [createVNode(_component_UButton, {
3709
+ block: "",
3710
+ color: "neutral",
3711
+ variant: "soft",
3712
+ icon: testIcons[test.status],
3713
+ "trailing-icon": "i-ic-round-expand-more",
3714
+ ui: {
3715
+ base: "justify-start gap-3",
3716
+ leadingIcon: testColors[test.status],
3717
+ trailingIcon: "text-dimmed"
3718
+ },
3719
+ "data-testid": "execucao-teste-abrir"
3720
+ }, {
3721
+ default: withCtx(() => [createVNode("span", {
3722
+ class: "grow truncate text-left",
3723
+ "data-testid": "execucao-teste-titulo"
3724
+ }, toDisplayString(test.title), 1)]),
3725
+ _: 2
3726
+ }, 1032, ["icon", "ui"])];
3727
+ }),
3728
+ _: 2
3729
+ }, _parent, _scopeId));
3730
+ });
3731
+ _push(`<!--]--></div><!--]-->`);
3732
+ }
3733
+ } else return [__props.running && __props.tests.length === 0 ? (openBlock(), createBlock(_component_BaseLoadingPhrases, {
3734
+ key: 0,
3735
+ phrases: ["Iniciando a execução"],
3736
+ "data-testid": "execucao-iniciando"
3737
+ })) : (openBlock(), createBlock(Fragment, { key: 1 }, [
3738
+ !__props.running ? (openBlock(), createBlock("div", {
3739
+ key: 0,
3740
+ class: "mb-6 space-y-0.5 text-sm",
3741
+ "data-testid": "execucao-detalhes"
3742
+ }, [
3743
+ createVNode("p", null, [createVNode("span", { class: "font-semibold" }, "Projeto:"), createTextVNode(" " + toDisplayString(__props.projectName), 1)]),
3744
+ __props.filter ? (openBlock(), createBlock("p", { key: 0 }, [createVNode("span", { class: "font-semibold" }, "Filtro:"), createTextVNode(" " + toDisplayString(__props.filter), 1)])) : createCommentVNode("", true),
3745
+ createVNode("p", null, [createVNode("span", { class: "font-semibold" }, "Cenários:"), createTextVNode(" " + toDisplayString(__props.tests.length), 1)]),
3746
+ __props.testedAt ? (openBlock(), createBlock("p", { key: 1 }, [createVNode("span", { class: "font-semibold" }, "Testado em:"), createTextVNode(" " + toDisplayString(__props.testedAt), 1)])) : createCommentVNode("", true)
3747
+ ])) : createCommentVNode("", true),
3748
+ __props.output ? (openBlock(), createBlock(_component_UAlert, {
3749
+ key: 1,
3750
+ color: "error",
3751
+ variant: "soft",
3752
+ icon: "i-ic-round-error",
3753
+ title: "A execução não chegou a começar",
3754
+ class: "mb-6",
3755
+ "data-testid": "execucao-saida"
3756
+ }, {
3757
+ description: withCtx(() => [createVNode("p", { class: "mb-2" }, " O Playwright encerrou antes de rodar qualquer passo. Saída do runner: "), createVNode("code", { class: "block whitespace-pre-wrap font-mono text-xs" }, toDisplayString(__props.output), 1)]),
3758
+ _: 1
3759
+ })) : createCommentVNode("", true),
3760
+ createVNode("div", { class: "flex flex-col gap-3" }, [(openBlock(true), createBlock(Fragment, null, renderList(__props.tests, (test) => {
3761
+ return openBlock(), createBlock(_component_UCollapsible, {
3762
+ key: test.id,
3763
+ open: unref(opened).includes(test.id),
3764
+ "data-testid": "execucao-teste",
3765
+ "data-status": test.status,
3766
+ "onUpdate:open": ($event) => toggle(test.id, $event)
3767
+ }, {
3768
+ content: withCtx(() => [createVNode("div", { class: "mt-1 rounded-md bg-elevated py-3 pl-3.5 pr-3" }, [ownError(test) ? (openBlock(), createBlock("p", {
3769
+ key: 0,
3770
+ class: "text-sm text-dimmed",
3771
+ "data-testid": "execucao-teste-erro"
3772
+ }, [createVNode("span", { class: "font-semibold text-error" }, "Erro:"), createTextVNode(" " + toDisplayString(ownError(test)), 1)])) : test.steps.length === 0 ? (openBlock(), createBlock("p", {
3773
+ key: 1,
3774
+ class: "text-sm text-dimmed"
3775
+ }, " Nenhum passo reportado. ")) : createCommentVNode("", true), createVNode(_component_ScenarioTestRunSteps, { steps: test.steps }, null, 8, ["steps"])])]),
3776
+ default: withCtx(() => [createVNode(_component_UButton, {
3777
+ block: "",
3778
+ color: "neutral",
3779
+ variant: "soft",
3780
+ icon: testIcons[test.status],
3781
+ "trailing-icon": "i-ic-round-expand-more",
3782
+ ui: {
3783
+ base: "justify-start gap-3",
3784
+ leadingIcon: testColors[test.status],
3785
+ trailingIcon: "text-dimmed"
3786
+ },
3787
+ "data-testid": "execucao-teste-abrir"
3788
+ }, {
3789
+ default: withCtx(() => [createVNode("span", {
3790
+ class: "grow truncate text-left",
3791
+ "data-testid": "execucao-teste-titulo"
3792
+ }, toDisplayString(test.title), 1)]),
3793
+ _: 2
3794
+ }, 1032, ["icon", "ui"])]),
3795
+ _: 2
3796
+ }, 1032, [
3797
+ "open",
3798
+ "data-status",
3799
+ "onUpdate:open"
3800
+ ]);
3801
+ }), 128))])
3802
+ ], 64))];
3803
+ }),
3804
+ _: 2
3805
+ }, [!__props.running ? {
3806
+ name: "footer",
3807
+ fn: withCtx((_, _push, _parent, _scopeId) => {
3808
+ if (_push) {
3809
+ _push(ssrRenderComponent(_component_UButton, {
3810
+ label: "Fechar",
3811
+ color: "neutral",
3812
+ variant: "ghost",
3813
+ "data-testid": "execucao-fechar",
3814
+ onClick: ($event) => open.value = false
3815
+ }, null, _parent, _scopeId));
3816
+ _push(ssrRenderComponent(_component_UButton, {
3817
+ label: "Relatório do Playwright",
3818
+ "trailing-icon": "i-ic-round-assessment",
3819
+ to: unref(reportUrlFor)(__props.slug),
3820
+ target: "_blank",
3821
+ external: "",
3822
+ "data-testid": "execucao-relatorio"
3823
+ }, null, _parent, _scopeId));
3824
+ } else return [createVNode(_component_UButton, {
3825
+ label: "Fechar",
3826
+ color: "neutral",
3827
+ variant: "ghost",
3828
+ "data-testid": "execucao-fechar",
3829
+ onClick: ($event) => open.value = false
3830
+ }, null, 8, ["onClick"]), createVNode(_component_UButton, {
3831
+ label: "Relatório do Playwright",
3832
+ "trailing-icon": "i-ic-round-assessment",
3833
+ to: unref(reportUrlFor)(__props.slug),
3834
+ target: "_blank",
3835
+ external: "",
3836
+ "data-testid": "execucao-relatorio"
3837
+ }, null, 8, ["to"])];
3838
+ }),
3839
+ key: "0"
3840
+ } : void 0]), _parent));
3841
+ };
3842
+ }
3843
+ });
3844
+ //#endregion
3845
+ //#region app/components/project/run-filtered/modal.vue
3511
3846
  var _sfc_setup$1 = modal_vue_vue_type_script_setup_true_lang_default.setup;
3512
3847
  modal_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
3513
3848
  const ssrContext = useSSRContext();
3514
- (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/project/settings/modal.vue");
3849
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/project/run-filtered/modal.vue");
3515
3850
  return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
3516
3851
  };
3517
- var modal_default = Object.assign(modal_vue_vue_type_script_setup_true_lang_default, { __name: "ProjectSettingsModal" });
3852
+ var modal_default = Object.assign(modal_vue_vue_type_script_setup_true_lang_default, { __name: "ProjectRunFilteredModal" });
3518
3853
  //#endregion
3519
3854
  //#region app/pages/projects/[slug].vue?vue&type=script&setup=true&lang.ts
3520
3855
  var AUTH_SPEC = "tests/auth.setup.ts";
@@ -3571,7 +3906,7 @@ var _slug__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
3571
3906
  async function skipAuth() {
3572
3907
  skippingAuth.value = true;
3573
3908
  try {
3574
- await $fetch$2(`/api/projects/${slug.value}/auth/skip`, { method: "POST" });
3909
+ await $fetch$1(`/api/projects/${slug.value}/auth/skip`, { method: "POST" });
3575
3910
  await refresh();
3576
3911
  } finally {
3577
3912
  skippingAuth.value = false;
@@ -3598,16 +3933,22 @@ var _slug__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
3598
3933
  }]]);
3599
3934
  /** URL base configurada no projeto. É onde o navegador abre ao gravar. */
3600
3935
  const projectUrl = computed(() => project.value.base_url ?? void 0);
3601
- function recordPlain() {
3936
+ function recordPlain(replay) {
3602
3937
  recordingMode.value = "plain";
3603
- startRecording("scenario", { url: projectUrl.value });
3938
+ startRecording("scenario", {
3939
+ url: projectUrl.value,
3940
+ replay
3941
+ });
3604
3942
  }
3605
- function recordPublic() {
3943
+ function recordPublic(replay) {
3606
3944
  recordingMode.value = "public";
3607
- startRecording("scenario", { url: projectUrl.value });
3945
+ startRecording("scenario", {
3946
+ url: projectUrl.value,
3947
+ replay
3948
+ });
3608
3949
  }
3609
3950
  /** Roda o auth.setup.ts antes de abrir o navegador; falhou o login, não abre. */
3610
- function recordAuthenticated() {
3951
+ function recordAuthenticated(replay) {
3611
3952
  recordingMode.value = "authenticated";
3612
3953
  authRunOpen.value = true;
3613
3954
  authRun.start({ spec: AUTH_SPEC }, () => {
@@ -3616,7 +3957,8 @@ var _slug__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
3616
3957
  authRunOpen.value = false;
3617
3958
  startRecording("scenario", {
3618
3959
  storageState: project.value.storage_state,
3619
- url: projectUrl.value
3960
+ url: projectUrl.value,
3961
+ replay
3620
3962
  });
3621
3963
  });
3622
3964
  }
@@ -3624,16 +3966,25 @@ var _slug__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
3624
3966
  function recordDefault() {
3625
3967
  return hasAuth.value ? recordAuthenticated() : recordPlain();
3626
3968
  }
3627
- /** Regravar mantém o tipo escolhido, porque trocar de autenticado pra público no meio seria surpresa. */
3628
- function recordAgain() {
3629
- if (recordingMode.value === "authenticated") return recordAuthenticated();
3630
- if (recordingMode.value === "public") return recordPublic();
3631
- recordPlain();
3969
+ /**
3970
+ * Regravar mantém o tipo escolhido, porque trocar de autenticado pra público no meio seria surpresa.
3971
+ * Com passos anteriores, o navegador refaz esses e a gravação continua de onde o usuário parou.
3972
+ */
3973
+ function recordAgain(replay) {
3974
+ if (recordingMode.value === "authenticated") return recordAuthenticated(replay);
3975
+ if (recordingMode.value === "public") return recordPublic(replay);
3976
+ recordPlain(replay);
3632
3977
  }
3633
3978
  watch(() => webdriver.value.videoSessionId, (sessionId) => {
3634
3979
  if (!sessionId) return;
3635
3980
  reviewOpen.value = true;
3636
3981
  });
3982
+ /** Enquanto a ferramenta refaz os passos, quem manda é a cortina na janela gravada. */
3983
+ const recordingLabel = computed(() => {
3984
+ if (webdriver.value.replayFailedStep) return "Aguardando você na janela";
3985
+ if (webdriver.value.replaying) return "Refazendo os passos";
3986
+ return "Parar gravação";
3987
+ });
3637
3988
  function stopAndReview() {
3638
3989
  stopRecording();
3639
3990
  }
@@ -3643,30 +3994,30 @@ var _slug__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
3643
3994
  async function remove() {
3644
3995
  removing.value = true;
3645
3996
  try {
3646
- await $fetch$2(`/api/projects/${slug.value}`, { method: "DELETE" });
3997
+ await $fetch$1(`/api/projects/${slug.value}`, { method: "DELETE" });
3647
3998
  await navigateTo("/");
3648
3999
  } finally {
3649
4000
  removing.value = false;
3650
4001
  }
3651
4002
  }
3652
4003
  return (_ctx, _push, _parent, _attrs) => {
3653
- const _component_UContainer = _sfc_main$3;
4004
+ const _component_UContainer = _sfc_main$4;
3654
4005
  const _component_BaseButtonIcon = icon_default;
3655
- const _component_UBadge = _sfc_main$4;
4006
+ const _component_UBadge = _sfc_main$2$1;
3656
4007
  const _component_ProjectRenameInline = inline_default;
3657
4008
  const _component_ProjectEnvironmentsSelect = select_default;
3658
4009
  const _component_UAlert = _sfc_main$5;
3659
4010
  const _component_UButton = _sfc_main$6;
3660
- const _component_UInput = _sfc_main$6$1;
3661
- const _component_UDropdownMenu = _sfc_main;
4011
+ const _component_UInput = _sfc_main$7;
4012
+ const _component_UDropdownMenu = _sfc_main$1;
3662
4013
  const _component_WebdriverSetup = setup_default;
3663
- const _component_ScenarioReviewModal = modal_default$2;
3664
- const _component_UCard = _sfc_main$7;
4014
+ const _component_ScenarioReviewModal = modal_default$1$1;
4015
+ const _component_UCard = _sfc_main$8;
3665
4016
  const _component_ScenarioEmpty = empty_default;
3666
- const _component_ProjectEnvironmentsModal = modal_default$1;
3667
- const _component_ProjectSettingsModal = modal_default;
3668
- const _component_ProjectRunFilteredModal = modal_default$3;
3669
- const _component_ScenarioTestRunModal = modal_default$4;
4017
+ const _component_ProjectEnvironmentsModal = modal_default$2;
4018
+ const _component_ProjectSettingsModal = modal_default$1;
4019
+ const _component_ProjectRunFilteredModal = modal_default;
4020
+ const _component_ScenarioTestRunModal = modal_default$3;
3670
4021
  const _component_BaseConfirm = confirm_default;
3671
4022
  _push(ssrRenderComponent(_component_UContainer, mergeProps({
3672
4023
  "data-hydrated": unref(hydrated),
@@ -3860,14 +4211,15 @@ var _slug__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
3860
4211
  label: "Novo cenário",
3861
4212
  "trailing-icon": "i-ic-round-add",
3862
4213
  disabled: !unref(webdriver).connected,
3863
- onClick: recordPlain
4214
+ onClick: ($event) => recordPlain()
3864
4215
  }, null, _parent, _scopeId));
3865
4216
  else _push(ssrRenderComponent(_component_UButton, {
3866
4217
  "data-testid": "cenario-parar",
3867
- label: "Parar gravação",
4218
+ label: unref(recordingLabel),
3868
4219
  "trailing-icon": "i-ic-round-stop",
3869
4220
  color: "error",
3870
4221
  class: "animate-pulse",
4222
+ disabled: unref(webdriver).replaying,
3871
4223
  onClick: stopAndReview
3872
4224
  }, null, _parent, _scopeId));
3873
4225
  _push(`</div>`);
@@ -3889,7 +4241,8 @@ var _slug__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
3889
4241
  slug: unref(slug),
3890
4242
  "is-public": unref(recordingPublic),
3891
4243
  onGenerated: ($event) => unref(refresh)(),
3892
- onRerecord: recordAgain
4244
+ onRerecord: recordAgain,
4245
+ onResume: recordAgain
3893
4246
  }, null, _parent, _scopeId));
3894
4247
  if (unref(scenarios).length) {
3895
4248
  _push(`<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4"${_scopeId}><!--[-->`);
@@ -4149,16 +4502,17 @@ var _slug__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
4149
4502
  label: "Novo cenário",
4150
4503
  "trailing-icon": "i-ic-round-add",
4151
4504
  disabled: !unref(webdriver).connected,
4152
- onClick: recordPlain
4153
- }, null, 8, ["disabled"])) : (openBlock(), createBlock(_component_UButton, {
4505
+ onClick: ($event) => recordPlain()
4506
+ }, null, 8, ["disabled", "onClick"])) : (openBlock(), createBlock(_component_UButton, {
4154
4507
  key: 2,
4155
4508
  "data-testid": "cenario-parar",
4156
- label: "Parar gravação",
4509
+ label: unref(recordingLabel),
4157
4510
  "trailing-icon": "i-ic-round-stop",
4158
4511
  color: "error",
4159
4512
  class: "animate-pulse",
4513
+ disabled: unref(webdriver).replaying,
4160
4514
  onClick: stopAndReview
4161
- }))
4515
+ }, null, 8, ["label", "disabled"]))
4162
4516
  ]),
4163
4517
  unref(webdriver).error ? (openBlock(), createBlock("div", {
4164
4518
  key: 2,
@@ -4175,7 +4529,8 @@ var _slug__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
4175
4529
  slug: unref(slug),
4176
4530
  "is-public": unref(recordingPublic),
4177
4531
  onGenerated: ($event) => unref(refresh)(),
4178
- onRerecord: recordAgain
4532
+ onRerecord: recordAgain,
4533
+ onResume: recordAgain
4179
4534
  }, null, 8, [
4180
4535
  "open",
4181
4536
  "onUpdate:open",
@@ -4319,4 +4674,4 @@ _slug__vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
4319
4674
  var _slug__default = _slug__vue_vue_type_script_setup_true_lang_default;
4320
4675
 
4321
4676
  export { _slug__default as default };
4322
- //# sourceMappingURL=_slug_-BlLRYU9d.mjs.map
4677
+ //# sourceMappingURL=_slug_-dNDiCabc.mjs.map