@wssto2/vue-core 0.6.0 → 0.7.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 (143) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +3 -0
  3. package/dist/{AccessGate.vue_vue_type_script_setup_true_lang-DZ9GcLC1.js → AccessGate.vue_vue_type_script_setup_true_lang-CkomzGrt.js} +1 -1
  4. package/dist/{AccountMenuItem.vue_vue_type_script_setup_true_lang-CPeNxh5K.js → AccountMenuItem.vue_vue_type_script_setup_true_lang-BIYgaihv.js} +1 -1
  5. package/dist/{ActionRow.vue_vue_type_script_setup_true_lang-D8NCXX4p.js → ActionRow.vue_vue_type_script_setup_true_lang-Cg1lhpcA.js} +2 -2
  6. package/dist/{Activity-DGodh6BU.js → Activity-CW2TOQAY.js} +9 -9
  7. package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-GUTIXuNd.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-9Lt1XggN.js} +3 -3
  8. package/dist/{AlertDialog.vue_vue_type_script_setup_true_lang-whA4WLdl.js → AlertDialog.vue_vue_type_script_setup_true_lang-BvGc1Rfl.js} +1 -1
  9. package/dist/{AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js → AsyncSection.vue_vue_type_script_setup_true_lang-GxAsImnO.js} +4 -4
  10. package/dist/{Banner.vue_vue_type_script_setup_true_lang-DSStj_5z.js → Banner.vue_vue_type_script_setup_true_lang-sv0phngk.js} +1 -1
  11. package/dist/{Button.vue_vue_type_script_setup_true_lang-CL9Qh5yq.js → Button.vue_vue_type_script_setup_true_lang-DQq_0P0p.js} +1 -1
  12. package/dist/{Changes-38u4xY6e.js → Changes-BCaVkeZg.js} +8 -8
  13. package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-DPcCnrjr.js → CollectionPage.vue_vue_type_script_setup_true_lang-BmXnfM5f.js} +17 -16
  14. package/dist/{DataTable.vue_vue_type_script_setup_true_lang-BEvz5zqo.js → DataTable.vue_vue_type_script_setup_true_lang-DRWrCRLr.js} +1 -1
  15. package/dist/{DateField.vue_vue_type_script_setup_true_lang-BxUuUypB.js → DateField.vue_vue_type_script_setup_true_lang-DmYp54mq.js} +3 -3
  16. package/dist/{DeadLetters-CeHfhFHP.js → DeadLetters-DUM_bsL-.js} +5 -5
  17. package/dist/{DiscardChangesModal.vue_vue_type_script_setup_true_lang-D1arePCZ.js → DiscardChangesModal.vue_vue_type_script_setup_true_lang-DcihJfpk.js} +1 -1
  18. package/dist/{EmptyState.vue_vue_type_script_setup_true_lang-50p-Mp8I.js → EmptyState.vue_vue_type_script_setup_true_lang-DbZiO2RF.js} +1 -1
  19. package/dist/{FormErrors.vue_vue_type_script_setup_true_lang-D7edzNTL.js → FormErrors.vue_vue_type_script_setup_true_lang-DJiK8iqo.js} +1 -1
  20. package/dist/{FormGroup.vue_vue_type_script_setup_true_lang-CNb2CK01.js → FormGroup.vue_vue_type_script_setup_true_lang-BTADNpwB.js} +2 -2
  21. package/dist/{FormView.vue_vue_type_script_setup_true_lang-nyz8EkzM.js → FormView.vue_vue_type_script_setup_true_lang-Ncl9DmFB.js} +2 -2
  22. package/dist/{General-BNTjPvat.js → General-Dsh0TJ5w.js} +8 -8
  23. package/dist/{HeaderAction.vue_vue_type_script_setup_true_lang-Cgji-Jrr.js → HeaderAction.vue_vue_type_script_setup_true_lang-Da59TLBh.js} +2 -2
  24. package/dist/{Icon.vue_vue_type_script_lang-D7oC-d-S.js → Icon.vue_vue_type_script_lang-BhhsFYwp.js} +45 -42
  25. package/dist/{IconTile.vue_vue_type_script_setup_true_lang-_FXvaj93.js → IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js} +1 -1
  26. package/dist/IncidentRecord-C9zrjNrp.js +405 -0
  27. package/dist/IncidentsList-ClQOjd5c.js +140 -0
  28. package/dist/KeyValue.vue_vue_type_script_setup_true_lang-wcZcvnow.js +35 -0
  29. package/dist/{LeaveGuardRoot.vue_vue_type_script_setup_true_lang-Cv7KlA5y.js → LeaveGuardRoot.vue_vue_type_script_setup_true_lang-ChIsmnts.js} +1 -1
  30. package/dist/{Menu.vue_vue_type_script_setup_true_lang-DsFOeCVe.js → Menu.vue_vue_type_script_setup_true_lang-ldLdJ5Q-.js} +1 -1
  31. package/dist/{MenuButton.vue_vue_type_script_setup_true_lang-AGbN9r5q.js → MenuButton.vue_vue_type_script_setup_true_lang-C-XRr5f2.js} +1 -1
  32. package/dist/{Modal.vue_vue_type_script_setup_true_lang-DpBb8ans.js → Modal.vue_vue_type_script_setup_true_lang-4MsnTWyx.js} +2 -2
  33. package/dist/{NewRolePage-Btg7gzzH.js → NewRolePage-Bw2_jXcQ.js} +4 -4
  34. package/dist/{NoAccess.vue_vue_type_script_setup_true_lang-DWxq-MTM.js → NoAccess.vue_vue_type_script_setup_true_lang-BHzZtZ50.js} +1 -1
  35. package/dist/{NumberField.vue_vue_type_script_setup_true_lang-C8um4ARi.js → NumberField.vue_vue_type_script_setup_true_lang-C3nw944P.js} +1 -1
  36. package/dist/{PageBar.vue_vue_type_script_setup_true_lang-B7qdEeej.js → PageBar.vue_vue_type_script_setup_true_lang-DPpcZxuT.js} +1 -1
  37. package/dist/{Panel.vue_vue_type_script_setup_true_lang-BA0u_DtS.js → Panel.vue_vue_type_script_setup_true_lang-D_Wg42hu.js} +1 -1
  38. package/dist/{PersonAccess.vue_vue_type_script_setup_true_lang-ClmawvYm.js → PersonAccess.vue_vue_type_script_setup_true_lang-07pq4SrY.js} +12 -12
  39. package/dist/{PhotoViewer.vue_vue_type_script_setup_true_lang-CY5EZiyK.js → PhotoViewer.vue_vue_type_script_setup_true_lang-Cj0hSMk9.js} +1 -1
  40. package/dist/{ProfilePage-CoZyG11N.js → ProfilePage-CJIztbx3.js} +19 -19
  41. package/dist/{RecordHeader.vue_vue_type_script_setup_true_lang-fmx0f8xi.js → RecordHeader.vue_vue_type_script_setup_true_lang-DPm9q1P_.js} +2 -2
  42. package/dist/{ResourcePage.vue_vue_type_script_setup_true_lang-BFBGvevP.js → ResourcePage.vue_vue_type_script_setup_true_lang-Cm3tx76N.js} +5 -5
  43. package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-Bs9bo0Zb.js → RoleEditor.vue_vue_type_script_setup_true_lang-DuQR8hFf.js} +13 -13
  44. package/dist/{RolePage-CPlwZA6X.js → RolePage-Yv6m6u7o.js} +13 -13
  45. package/dist/{RolesPage-CdYdIHR4.js → RolesPage-TibtzxzQ.js} +9 -9
  46. package/dist/{SectionList.vue_vue_type_script_setup_true_lang-wyW7n3Uq.js → SectionList.vue_vue_type_script_setup_true_lang-DAnZbfWA.js} +3 -3
  47. package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-Ci04hApd.js → SectionNavigator.vue_vue_type_script_setup_true_lang-ivdGWUeF.js} +5 -5
  48. package/dist/{SegmentedField.vue_vue_type_script_setup_true_lang-B_hBL5f4.js → SegmentedField.vue_vue_type_script_setup_true_lang-ChfDFAA2.js} +1 -1
  49. package/dist/{SelectField.vue_vue_type_script_setup_true_lang-CBZhGNpm.js → SelectField.vue_vue_type_script_setup_true_lang-iJm8qmjT.js} +5 -5
  50. package/dist/{ServiceAccountDialog.vue_vue_type_script_setup_true_lang-DuvSSBbX.js → ServiceAccountDialog.vue_vue_type_script_setup_true_lang-D2Xj5mr7.js} +8 -8
  51. package/dist/{ServiceAccountRecord-BtaUZuWU.js → ServiceAccountRecord-Ct3TrSqZ.js} +18 -18
  52. package/dist/{ServiceAccountsList-CcRJvNaf.js → ServiceAccountsList-CaXEp73j.js} +10 -10
  53. package/dist/{SessionList.vue_vue_type_script_setup_true_lang-VvBB2EZz.js → SessionList.vue_vue_type_script_setup_true_lang-BEKTaL0g.js} +4 -4
  54. package/dist/{Sessions-DkGNO1FO.js → Sessions-Bg4Zk9Gf.js} +6 -6
  55. package/dist/{SettingsPage-D4G1HGbG.js → SettingsPage-Brq9U4tJ.js} +19 -19
  56. package/dist/{Sheet.vue_vue_type_script_setup_true_lang-DgOFV4fa.js → Sheet.vue_vue_type_script_setup_true_lang-sh9YD0Pm.js} +1 -1
  57. package/dist/{SignIn-DS1YymqD.js → SignIn-DB5LRNlB.js} +7 -7
  58. package/dist/{SignInPage-BrmL0PUw.js → SignInPage-Ts-iTaC1.js} +6 -6
  59. package/dist/{SignIns-C7l7IPHQ.js → SignIns-bCvvmCHF.js} +6 -6
  60. package/dist/{SwipeActions.vue_vue_type_script_setup_true_lang-BJIA2JfI.js → SwipeActions.vue_vue_type_script_setup_true_lang-D8SiC0G7.js} +1 -1
  61. package/dist/{SwitchField.vue_vue_type_script_setup_true_lang-DXZK89A3.js → SwitchField.vue_vue_type_script_setup_true_lang-BMA2YXTZ.js} +1 -1
  62. package/dist/{Tabs.vue_vue_type_script_setup_true_lang-CcMcE38r.js → Tabs.vue_vue_type_script_setup_true_lang-tpkGp98F.js} +1 -1
  63. package/dist/{TextField.vue_vue_type_script_setup_true_lang-CX3LdZLK.js → TextField.vue_vue_type_script_setup_true_lang-7IAl4eAE.js} +3 -3
  64. package/dist/{TextareaField.vue_vue_type_script_setup_true_lang-BOtn_1GT.js → TextareaField.vue_vue_type_script_setup_true_lang-Dyh4Hhyl.js} +1 -1
  65. package/dist/{TimeField.vue_vue_type_script_setup_true_lang-CbflIrq6.js → TimeField.vue_vue_type_script_setup_true_lang-BwoE08jT.js} +3 -3
  66. package/dist/{Timestamp.vue_vue_type_script_setup_true_lang-CutyQkJb.js → Timestamp.vue_vue_type_script_setup_true_lang-u53rHMFG.js} +1 -1
  67. package/dist/{UserRecord-Du8M_kuk.js → UserRecord-DgK9FsvV.js} +12 -12
  68. package/dist/{UsersList-D3ydQice.js → UsersList-Due2ZkbO.js} +8 -8
  69. package/dist/{ViewTabs.vue_vue_type_script_setup_true_lang-BJIoZAlH.js → ViewTabs.vue_vue_type_script_setup_true_lang-BjdDXE3T.js} +1 -1
  70. package/dist/access/index.js +4 -4
  71. package/dist/app/application.d.ts +2 -0
  72. package/dist/app/index.js +13 -427
  73. package/dist/application-D8Nm17zA.js +420 -0
  74. package/dist/button/index.js +1 -1
  75. package/dist/client/client.d.ts +7 -0
  76. package/dist/client/index.d.ts +1 -1
  77. package/dist/client/index.js +5 -4
  78. package/dist/client-CZgikXPG.js +151 -0
  79. package/dist/collection/index.js +55 -64
  80. package/dist/content/index.js +37 -66
  81. package/dist/{contributions-fx5q5n1u.js → contributions-BQ9dZoRw.js} +1 -1
  82. package/dist/controls/index.js +4 -4
  83. package/dist/datePresets-DB13HHHd.js +17 -0
  84. package/dist/definition-C7QuyV3i.js +54 -0
  85. package/dist/form/index.js +34 -34
  86. package/dist/{guards-D4mXf_2X.js → guards-BFCulig0.js} +1 -1
  87. package/dist/i18n/index.js +18 -18
  88. package/dist/icon/core.d.ts +3 -0
  89. package/dist/icon/index.js +1 -1
  90. package/dist/identity/index.js +2 -2
  91. package/dist/incidents/IncidentRecord.vue.d.ts +2 -0
  92. package/dist/incidents/IncidentsList.vue.d.ts +2 -0
  93. package/dist/incidents/Person.vue.d.ts +7 -0
  94. package/dist/incidents/ReportDialog.vue.d.ts +21 -0
  95. package/dist/incidents/ReportHost.vue.d.ts +2 -0
  96. package/dist/incidents/ReportMenuItem.vue.d.ts +2 -0
  97. package/dist/incidents/access.d.ts +6 -0
  98. package/dist/incidents/api.d.ts +27 -0
  99. package/dist/incidents/clientErrorReporter.d.ts +38 -0
  100. package/dist/incidents/context.d.ts +7 -0
  101. package/dist/incidents/feature.d.ts +20 -0
  102. package/dist/incidents/form.d.ts +16 -0
  103. package/dist/incidents/index.d.ts +9 -0
  104. package/dist/incidents/index.js +8 -0
  105. package/dist/incidents/look.d.ts +6 -0
  106. package/dist/incidents/routes.d.ts +21 -0
  107. package/dist/{index-Cmj9iZmT.js → index-CXTJ_1NV.js} +21 -21
  108. package/dist/index-D5_GAqjA.js +340 -0
  109. package/dist/{index-DH0MoFqg.js → index-i-cTTVxo.js} +10 -10
  110. package/dist/index.d.ts +1 -1
  111. package/dist/index.js +1 -1
  112. package/dist/modal/index.js +5 -5
  113. package/dist/modules/incident/entities.d.ts +84 -0
  114. package/dist/modules/incident/routes.d.ts +54 -0
  115. package/dist/modules/incident/schemas.d.ts +48 -0
  116. package/dist/{navigation-Bc5EQ_Si.js → navigation-BSC9X7FM.js} +1 -1
  117. package/dist/{neighbors-DNZuGlQH.js → neighbors-BKzihEGQ.js} +1 -1
  118. package/dist/notifications/index.js +1 -1
  119. package/dist/{options-e_CAfvDQ.js → options-QuOkMKVZ.js} +1 -1
  120. package/dist/overlay/index.js +4 -4
  121. package/dist/page/index.js +7 -7
  122. package/dist/phone/index.js +2 -2
  123. package/dist/platform/index.js +3 -3
  124. package/dist/{platform-Dx6STiwY.js → platform-Dr4iY3b8.js} +1 -1
  125. package/dist/resource/index.js +1 -1
  126. package/dist/router/index.js +4 -4
  127. package/dist/{rowLayout-BBFyLbOl.js → rowLayout-Cz-K7jeo.js} +5 -5
  128. package/dist/{sections-B0HxIOC2.js → sections-BXg4_ZhO.js} +1 -1
  129. package/dist/shell/index.js +9 -9
  130. package/dist/state/index.js +4 -4
  131. package/dist/state-ChVIjayU.js +102 -0
  132. package/dist/{status-C8XtnK6m.js → status-DZ4eSnAS.js} +5 -5
  133. package/dist/styles.css +1 -1
  134. package/dist/{suggestions-cPjs5gQz.js → suggestions-niXd1oOl.js} +1 -1
  135. package/dist/testing/index.js +1 -1
  136. package/dist/{useCommand-CfG727e8.js → useCommand-BIZX1ReM.js} +4 -4
  137. package/dist/{useGroupSheet-BVcNDWbP.js → useGroupSheet-DxXzdKo3.js} +5 -5
  138. package/dist/{useRecordDialog-D65FF85F.js → useRecordDialog-BLVSz7g3.js} +1 -1
  139. package/dist/{useResourceForm-CJfl8rj_.js → useResourceForm-DYuYT_on.js} +1 -1
  140. package/dist/{useTypedEntry-C7k7Dyl-.js → useTypedEntry-CKuGqWT8.js} +2 -2
  141. package/package.json +6 -2
  142. package/dist/client-BHPFfBj3.js +0 -147
  143. package/dist/state-BC1Fc6U2.js +0 -154
@@ -0,0 +1,340 @@
1
+ import { route as p } from "./client/index.js";
2
+ import { d as V, p as U } from "./feature-DdUAfyi4.js";
3
+ import { defineComponent as A, computed as O, onMounted as L, watch as B, openBlock as S, createBlock as y, unref as e, withCtx as I, createElementVNode as X, createVNode as c, mergeProps as d, createCommentVNode as R, ref as F } from "vue";
4
+ import { d as j } from "./context-Ch1r4fdN.js";
5
+ import { useI18n as P } from "vue-i18n";
6
+ import { _ as N } from "./FormGroup.vue_vue_type_script_setup_true_lang-BTADNpwB.js";
7
+ import { _ as G } from "./SelectField.vue_vue_type_script_setup_true_lang-iJm8qmjT.js";
8
+ import { _ as g } from "./TextareaField.vue_vue_type_script_setup_true_lang-Dyh4Hhyl.js";
9
+ import { _ as E } from "./TextField.vue_vue_type_script_setup_true_lang-7IAl4eAE.js";
10
+ import { u as K, _ as z } from "./useCommand-BIZX1ReM.js";
11
+ import { t as H } from "./toast-CqSDTWRX.js";
12
+ import { u as k } from "./platform-Dr4iY3b8.js";
13
+ import { d as Q } from "./definition-C7QuyV3i.js";
14
+ import { r as W, l as Y } from "./http-nz92KjdS.js";
15
+ import { _ as J } from "./AccountMenuItem.vue_vue_type_script_setup_true_lang-BIYgaihv.js";
16
+ import { d as Z } from "./defineRoutes-BGAdiIrt.js";
17
+ import { d as ee } from "./application-D8Nm17zA.js";
18
+ import { R as te } from "./client-CZgikXPG.js";
19
+ import { i as ne } from "./error-Bb_dr_Ay.js";
20
+ const v = {
21
+ index: p("GET", "/v1/incidents", { permission: "incident:view" }),
22
+ show: p("GET", "/v1/incidents/:incidentID", { permission: "incident:view" }),
23
+ comments: p("GET", "/v1/incidents/:incidentID/comments", { permission: "incident:view" }),
24
+ report: p("POST", "/v1/incidents/reports", { permission: "incident:create" }),
25
+ comment: p("POST", "/v1/incidents/:incidentID/comments", { permission: "incident:create" }),
26
+ update: p("PATCH", "/v1/incidents/:incidentID", { permission: "incident:update" }),
27
+ clientError: p("POST", "/v1/incidents/client-errors")
28
+ }, [ie, C] = j("vue-core.incidents"), q = "incident:view", se = "incident:create", je = "incident:update", re = "incident:manage";
29
+ function Ge(t) {
30
+ return Q({
31
+ id: "incidents",
32
+ stateVersion: 1,
33
+ load: async (n, { signal: s }) => W(await t.request(v.index, Y(n), { signal: s }), n),
34
+ key: (n) => n.id,
35
+ query: { sorts: ["title", "last_seen_at"], filters: ["created_at", "status", "severity", "source"] },
36
+ defaults: { sort: "last_seen_at", direction: "desc" }
37
+ });
38
+ }
39
+ const T = (t) => ({ headers: { "Idempotency-Key": t } });
40
+ function oe(t) {
41
+ return {
42
+ show: async (n, s) => {
43
+ const { data: r, meta: o } = await t.request(v.show, { incidentID: n }, s);
44
+ return { incident: r, reports: o?.reports ?? [], comments: o?.comments ?? [] };
45
+ },
46
+ /** The whole management form; the answer is the stored incident (without its people: the page reads again for them). */
47
+ update: async (n, s, r) => (await t.request(v.update, { ...s, incidentID: n }, T(r))).data,
48
+ /** A report: the incident it opened or joined. */
49
+ report: async (n, s) => (await t.request(v.report, n, T(s))).data.data,
50
+ comment: async (n, s, r) => (await t.request(v.comment, { ...s, incidentID: n }, T(r))).data
51
+ };
52
+ }
53
+ const ae = () => oe(k().http);
54
+ function ce(t, n) {
55
+ return {
56
+ safeParse(s) {
57
+ const r = s, o = t.filter((i) => String(r[i] ?? "").trim() === "").map((i) => ({ path: [i], message: n }));
58
+ return o.length > 0 ? { success: !1, error: { issues: o } } : { success: !0, data: s };
59
+ }
60
+ };
61
+ }
62
+ function de(t) {
63
+ return {
64
+ title: "",
65
+ description: "",
66
+ steps_to_reproduce: "",
67
+ expected_result: "",
68
+ actual_result: "",
69
+ severity: "medium",
70
+ affected_module: "",
71
+ page_url: window.location.pathname,
72
+ browser_info: window.navigator.userAgent,
73
+ app_version: t,
74
+ frontend_error_message: "",
75
+ frontend_stacktrace: "",
76
+ attachment_json: "",
77
+ extra_json: ""
78
+ };
79
+ }
80
+ const Ke = () => ({ body: "", visibility: "public" });
81
+ function ze() {
82
+ return {
83
+ status: "",
84
+ severity: "",
85
+ visibility: "",
86
+ assigned_to_user_id: null,
87
+ duplicate_of_incident_id: null,
88
+ resolution_summary: "",
89
+ external_ticket_provider: "",
90
+ external_ticket_id: "",
91
+ external_ticket_url: ""
92
+ };
93
+ }
94
+ function He({ incident: t }) {
95
+ return {
96
+ status: t.status,
97
+ severity: t.severity,
98
+ visibility: t.visibility,
99
+ assigned_to_user_id: t.assigned_to_user_id ?? null,
100
+ duplicate_of_incident_id: t.duplicate_of_incident_id ?? null,
101
+ resolution_summary: t.resolution_summary ?? "",
102
+ external_ticket_provider: t.external_ticket_provider || "none",
103
+ external_ticket_id: t.external_ticket_id ?? "",
104
+ external_ticket_url: t.external_ticket_url ?? ""
105
+ };
106
+ }
107
+ const Qe = {
108
+ new: "core.incidents.statuses.new",
109
+ triaged: "core.incidents.statuses.triaged",
110
+ in_progress: "core.incidents.statuses.in_progress",
111
+ resolved: "core.incidents.statuses.resolved",
112
+ ignored: "core.incidents.statuses.ignored",
113
+ duplicate: "core.incidents.statuses.duplicate"
114
+ }, le = {
115
+ low: "core.incidents.severities.low",
116
+ medium: "core.incidents.severities.medium",
117
+ high: "core.incidents.severities.high",
118
+ critical: "core.incidents.severities.critical"
119
+ }, We = {
120
+ user_report: "core.incidents.sources.user_report",
121
+ runtime_error: "core.incidents.sources.runtime_error",
122
+ client_error: "core.incidents.sources.client_error",
123
+ mixed: "core.incidents.sources.mixed"
124
+ }, Ye = {
125
+ new: "info",
126
+ triaged: "warning",
127
+ in_progress: "warning",
128
+ resolved: "positive",
129
+ ignored: "neutral",
130
+ duplicate: "neutral"
131
+ }, Je = {
132
+ low: "neutral",
133
+ medium: "info",
134
+ high: "warning",
135
+ critical: "critical"
136
+ }, ue = {
137
+ class: "flex flex-col gap-group-gap",
138
+ "data-test": "incident-report"
139
+ }, me = /* @__PURE__ */ A({
140
+ __name: "ReportDialog",
141
+ props: {
142
+ autoOpen: { type: Boolean }
143
+ },
144
+ emits: ["created", "close"],
145
+ setup(t, { expose: n, emit: s }) {
146
+ const r = t, o = s, { t: i } = P(), { access: l } = k(), u = ae(), { appVersion: h } = C(), x = O(() => l.can(re)), w = O(() => Object.entries(le).map(([m, f]) => ({ value: m, label: i(f) }))), _ = K({
147
+ defaults: () => de(h),
148
+ validator: ce(["title", "description"], i("core.account.validation.required")),
149
+ run: (m, { idempotencyKey: f }) => u.report(m, f),
150
+ done: (m) => {
151
+ H.success(i("core.incidents.toasts.report_success")), o("created", m);
152
+ }
153
+ }), a = _.form, D = () => _.present(), $ = () => _.dismiss();
154
+ return L(() => {
155
+ r.autoOpen && D();
156
+ }), B(() => _.open.value, (m, f) => {
157
+ f && !m && o("close");
158
+ }), n({ show: D, hide: $ }), (m, f) => (S(), y(e(z), {
159
+ command: e(_),
160
+ size: "md",
161
+ title: e(i)("core.incidents.report_modal.title"),
162
+ subtitle: e(i)("core.incidents.report_modal.description"),
163
+ "confirm-label": e(i)("core.incidents.report_modal.submit")
164
+ }, {
165
+ default: I(() => [
166
+ X("div", ue, [
167
+ c(e(N), null, {
168
+ default: I(() => [
169
+ c(e(E), d(e(a).bind("title"), {
170
+ label: e(i)("core.incidents.fields.title"),
171
+ required: "",
172
+ "max-length": 255
173
+ }), null, 16, ["label"]),
174
+ c(e(g), d(e(a).bind("description"), {
175
+ label: e(i)("core.incidents.fields.description"),
176
+ required: "",
177
+ rows: 4,
178
+ "max-length": 2e4
179
+ }), null, 16, ["label"]),
180
+ c(e(G), d(e(a).bind("severity"), {
181
+ label: e(i)("core.incidents.fields.severity"),
182
+ options: w.value
183
+ }), null, 16, ["label", "options"])
184
+ ]),
185
+ _: 1
186
+ }),
187
+ x.value ? (S(), y(e(N), {
188
+ key: 0,
189
+ header: e(i)("core.incidents.report_modal.advanced_fields")
190
+ }, {
191
+ default: I(() => [
192
+ c(e(E), d(e(a).bind("affected_module"), {
193
+ label: e(i)("core.incidents.fields.affected_module"),
194
+ "max-length": 100
195
+ }), null, 16, ["label"]),
196
+ c(e(E), d(e(a).bind("page_url"), {
197
+ label: e(i)("core.incidents.fields.page_url"),
198
+ "max-length": 1e3
199
+ }), null, 16, ["label"]),
200
+ c(e(g), d(e(a).bind("steps_to_reproduce"), {
201
+ label: e(i)("core.incidents.fields.steps_to_reproduce"),
202
+ rows: 3,
203
+ "max-length": 2e4
204
+ }), null, 16, ["label"]),
205
+ c(e(g), d(e(a).bind("expected_result"), {
206
+ label: e(i)("core.incidents.fields.expected_result"),
207
+ rows: 2,
208
+ "max-length": 2e4
209
+ }), null, 16, ["label"]),
210
+ c(e(g), d(e(a).bind("actual_result"), {
211
+ label: e(i)("core.incidents.fields.actual_result"),
212
+ rows: 2,
213
+ "max-length": 2e4
214
+ }), null, 16, ["label"]),
215
+ c(e(E), d(e(a).bind("browser_info"), {
216
+ label: e(i)("core.incidents.fields.browser_info"),
217
+ "max-length": 500
218
+ }), null, 16, ["label"]),
219
+ c(e(E), d(e(a).bind("app_version"), {
220
+ label: e(i)("core.incidents.fields.app_version"),
221
+ "max-length": 100
222
+ }), null, 16, ["label"]),
223
+ c(e(g), d(e(a).bind("frontend_error_message"), {
224
+ label: e(i)("core.incidents.fields.frontend_error_message"),
225
+ rows: 2,
226
+ "max-length": 2e3
227
+ }), null, 16, ["label"]),
228
+ c(e(g), d(e(a).bind("frontend_stacktrace"), {
229
+ label: e(i)("core.incidents.fields.frontend_stacktrace"),
230
+ rows: 4,
231
+ "max-length": 2e4
232
+ }), null, 16, ["label"])
233
+ ]),
234
+ _: 1
235
+ }, 8, ["header"])) : R("", !0)
236
+ ])
237
+ ]),
238
+ _: 1
239
+ }, 8, ["command", "title", "subtitle", "confirm-label"]));
240
+ }
241
+ }), _e = /* @__PURE__ */ A({
242
+ __name: "ReportHost",
243
+ setup(t) {
244
+ const { reporting: n } = C(), s = () => {
245
+ n.value = !1;
246
+ };
247
+ return (r, o) => e(n) ? (S(), y(me, {
248
+ key: 0,
249
+ "auto-open": "",
250
+ onClose: s
251
+ })) : R("", !0);
252
+ }
253
+ }), pe = /* @__PURE__ */ A({
254
+ __name: "ReportMenuItem",
255
+ setup(t) {
256
+ const { t: n } = P(), { access: s } = k(), r = C();
257
+ return (o, i) => e(s).can(e(se)) ? (S(), y(J, {
258
+ key: 0,
259
+ label: e(n)("core.incidents.report_modal.menu"),
260
+ icon: "alertTriangle",
261
+ "data-incident-report-menu-item": "",
262
+ onClick: i[0] || (i[0] = (l) => e(r).reporting.value = !0)
263
+ }, null, 8, ["label"])) : R("", !0);
264
+ }
265
+ }), M = Z({
266
+ index: { name: "incidents.index", path: "/incidents", component: () => import("./IncidentsList-ClQOjd5c.js"), meta: { access: q, titleKey: "core.incidents.title" } },
267
+ details: {
268
+ name: "incidents.details",
269
+ path: "/incidents/:incidentID",
270
+ component: () => import("./IncidentRecord-C9zrjNrp.js"),
271
+ // Previous / next record swaps the id in place.
272
+ meta: { access: q, titleKey: "core.incidents.title", remountOnParam: "incidentID" }
273
+ }
274
+ });
275
+ function Ze(t = {}) {
276
+ return V({
277
+ id: "incidents",
278
+ routes: M.records,
279
+ context: U(ie, { reporting: F(!1), appVersion: t.appVersion ?? "" }),
280
+ navigation: t.destination ? [{ destination: t.destination, to: M.index, within: ["incidents.details"] }] : [],
281
+ contributions: [
282
+ { id: "incidents.report-menu", slot: "accountMenu", component: pe, scope: "authenticated", order: 40, optional: !0 },
283
+ { id: "incidents.report-host", slot: "host", component: _e, scope: "authenticated", optional: !0 }
284
+ ]
285
+ });
286
+ }
287
+ const fe = 2e3, ge = 2e4, be = 255, ve = 500, he = 100, xe = 100, Ee = 20, we = /* @__PURE__ */ new Set(["vue", "unhandledrejection", "window"]), b = (t, n) => t.slice(0, n), Se = (t) => /^script error\.?$/i.test(t.trim()), ye = (t) => t.split(`
288
+ `).find((n) => /^\s*at\s|@\S/.test(n))?.trim() ?? "";
289
+ function et(t) {
290
+ const { platform: n, appVersion: s = "", onError: r = ee } = t, o = /* @__PURE__ */ new Set();
291
+ function i(l) {
292
+ const { error: u } = l;
293
+ if (!we.has(l.source) || !(u instanceof Error) || ne(u) || u.message.trim() === "" || Se(u.message)) return;
294
+ const h = t.origin ?? globalThis.location?.origin, x = u.stack ?? "";
295
+ if (!h || h === "null" || !x.includes(`${h}/`) || n.session.state.value.status !== "authenticated") return;
296
+ const w = `${u.message}
297
+ ${ye(x)}`;
298
+ if (o.has(w) || o.size >= Ee) return;
299
+ o.add(w);
300
+ const _ = {
301
+ message: b(u.message, fe),
302
+ stack: b(x, ge),
303
+ route: b((l.route ?? "").split(/[?#]/)[0] ?? "", be),
304
+ browser: b(globalThis.navigator?.userAgent ?? "", ve),
305
+ app_version: b(s, he),
306
+ request_ids: n.http.recentRequestIds().slice(-te).map((a) => b(a, xe))
307
+ };
308
+ n.http.request(v.clientError, _).catch(() => {
309
+ });
310
+ }
311
+ return (l) => {
312
+ try {
313
+ i(l);
314
+ } catch {
315
+ }
316
+ r(l);
317
+ };
318
+ }
319
+ export {
320
+ se as C,
321
+ re as M,
322
+ We as S,
323
+ je as U,
324
+ me as _,
325
+ Ge as a,
326
+ Ye as b,
327
+ Qe as c,
328
+ Je as d,
329
+ le as e,
330
+ ze as f,
331
+ Ke as g,
332
+ Ee as h,
333
+ M as i,
334
+ et as j,
335
+ v as k,
336
+ Ze as l,
337
+ He as m,
338
+ ce as r,
339
+ ae as u
340
+ };
@@ -2,20 +2,20 @@ import { route as v } from "./client/index.js";
2
2
  import { d as ve, p as me } from "./feature-DdUAfyi4.js";
3
3
  import { ref as C, readonly as $, defineComponent as q, openBlock as _, createBlock as U, unref as s, shallowRef as z, withCtx as A, createTextVNode as X, toDisplayString as L, mergeProps as Z, computed as N, createElementBlock as S, createElementVNode as P, createCommentVNode as R, createVNode as T, Fragment as G, renderList as be, normalizeClass as H, useTemplateRef as he, createSlots as ye } from "vue";
4
4
  import { d as ge } from "./context-Ch1r4fdN.js";
5
- import { u as ee } from "./platform-Dx6STiwY.js";
5
+ import { u as ee } from "./platform-Dr4iY3b8.js";
6
6
  import { d as te } from "./defineRoutes-BGAdiIrt.js";
7
7
  import { useI18n as I } from "vue-i18n";
8
- import { _ as _e } from "./AccountMenuItem.vue_vue_type_script_setup_true_lang-CPeNxh5K.js";
9
- import { f as xe } from "./client-BHPFfBj3.js";
8
+ import { _ as _e } from "./AccountMenuItem.vue_vue_type_script_setup_true_lang-BIYgaihv.js";
9
+ import { f as xe } from "./client-CZgikXPG.js";
10
10
  import { u as we } from "./mediaQuery-CygcXmFW.js";
11
- import { _ as ke } from "./Sheet.vue_vue_type_script_setup_true_lang-DgOFV4fa.js";
11
+ import { _ as ke } from "./Sheet.vue_vue_type_script_setup_true_lang-sh9YD0Pm.js";
12
12
  import { _ as Se } from "./Popover.vue_vue_type_script_setup_true_lang-C70GrCP7.js";
13
- import { _ as J } from "./HeaderAction.vue_vue_type_script_setup_true_lang-Cgji-Jrr.js";
13
+ import { _ as J } from "./HeaderAction.vue_vue_type_script_setup_true_lang-Da59TLBh.js";
14
14
  import { useRouter as Te } from "vue-router";
15
- import { _ as K } from "./Button.vue_vue_type_script_setup_true_lang-CL9Qh5yq.js";
15
+ import { _ as K } from "./Button.vue_vue_type_script_setup_true_lang-DQq_0P0p.js";
16
16
  import { u as Ee } from "./format-D8X4zsx6.js";
17
- import { _ as Pe } from "./Icon.vue_vue_type_script_lang-D7oC-d-S.js";
18
- import { _ as Ce } from "./AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js";
17
+ import { _ as Pe } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
18
+ import { _ as Ce } from "./AsyncSection.vue_vue_type_script_setup_true_lang-GxAsImnO.js";
19
19
  const E = {
20
20
  list: v("GET", "/v1/notifications"),
21
21
  unread: v("GET", "/v1/notifications/unread"),
@@ -135,9 +135,9 @@ function Me(n = ee().http, t = W()) {
135
135
  return { state: $(e), hash: $(i), busy: $(a), inspect: c, enable: u, disable: g };
136
136
  }
137
137
  const Ne = "events.deadletter:view", $t = "events.deadletter:retry", Y = te({
138
- index: { name: "events.deadletters", path: "/events/dead-letters", component: () => import("./DeadLetters-CeHfhFHP.js"), meta: { access: Ne, titleKey: "core.notifications.dead_letters.title" } }
138
+ index: { name: "events.deadletters", path: "/events/dead-letters", component: () => import("./DeadLetters-DUM_bsL-.js"), meta: { access: Ne, titleKey: "core.notifications.dead_letters.title" } }
139
139
  }), j = te({
140
- index: { name: "notifications.settings", path: "/profile/notifications", component: () => import("./SettingsPage-D4G1HGbG.js"), meta: { titleKey: "core.notifications.settings.title" } }
140
+ index: { name: "notifications.settings", path: "/profile/notifications", component: () => import("./SettingsPage-Brq9U4tJ.js"), meta: { titleKey: "core.notifications.settings.title" } }
141
141
  }), Oe = /* @__PURE__ */ q({
142
142
  __name: "SettingsMenuItem",
143
143
  setup(n) {
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  /** The version of @wssto2/vue-core (kept equal to package.json by index.test.ts). */
2
- export declare const version = "0.6.0";
2
+ export declare const version = "0.7.0";
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- const o = "0.6.0";
1
+ const o = "0.7.0";
2
2
  export {
3
3
  o as version
4
4
  };
@@ -1,10 +1,10 @@
1
- import { _ as G } from "../DiscardChangesModal.vue_vue_type_script_setup_true_lang-D1arePCZ.js";
2
- import { _ as y } from "../Modal.vue_vue_type_script_setup_true_lang-DpBb8ans.js";
3
- import { m as O } from "../Modal.vue_vue_type_script_setup_true_lang-DpBb8ans.js";
4
- import { _ as T } from "../Sheet.vue_vue_type_script_setup_true_lang-DgOFV4fa.js";
1
+ import { _ as G } from "../DiscardChangesModal.vue_vue_type_script_setup_true_lang-DcihJfpk.js";
2
+ import { _ as y } from "../Modal.vue_vue_type_script_setup_true_lang-4MsnTWyx.js";
3
+ import { m as O } from "../Modal.vue_vue_type_script_setup_true_lang-4MsnTWyx.js";
4
+ import { _ as T } from "../Sheet.vue_vue_type_script_setup_true_lang-sh9YD0Pm.js";
5
5
  import { defineComponent as b, ref as k, computed as v, openBlock as t, createBlock as w, unref as i, withCtx as S, createElementVNode as r, createElementBlock as o, Fragment as c, renderList as u, toDisplayString as l, createCommentVNode as C } from "vue";
6
6
  import { useI18n as B } from "vue-i18n";
7
- import { a as K, u as M } from "../Button.vue_vue_type_script_setup_true_lang-CL9Qh5yq.js";
7
+ import { a as K, u as M } from "../Button.vue_vue_type_script_setup_true_lang-DQq_0P0p.js";
8
8
  const $ = {
9
9
  class: "flex flex-col gap-5",
10
10
  "data-test": "shortcut-help"
@@ -0,0 +1,84 @@
1
+ export type CommentResponse = {
2
+ id: number;
3
+ incident_id: number;
4
+ author_user_id: number;
5
+ visibility: string;
6
+ body: string;
7
+ edited_at?: string | null;
8
+ deleted_at?: string | null;
9
+ created_at: string;
10
+ updated_at: string;
11
+ author?: PersonResponse | null;
12
+ };
13
+ export type Created = {
14
+ data: Incident;
15
+ meta: Meta;
16
+ };
17
+ export type Incident = {
18
+ id: number;
19
+ public_code: string;
20
+ source: string;
21
+ status: string;
22
+ severity: string;
23
+ visibility: string;
24
+ title: string;
25
+ description?: string;
26
+ affected_module?: string;
27
+ affected_route?: string;
28
+ environment?: string;
29
+ error_class?: string;
30
+ error_code?: string;
31
+ error_message_sample?: string;
32
+ stacktrace_sample?: string;
33
+ first_seen_at: string;
34
+ last_seen_at: string;
35
+ occurrence_count: number;
36
+ report_count: number;
37
+ comment_count: number;
38
+ reporter_user_id?: number | null;
39
+ assigned_to_user_id?: number | null;
40
+ external_ticket_provider: string;
41
+ external_ticket_id?: string;
42
+ external_ticket_url?: string;
43
+ duplicate_of_incident_id?: number | null;
44
+ resolution_summary?: string;
45
+ resolved_at?: string | null;
46
+ created_at: string;
47
+ updated_at: string;
48
+ reporter?: PersonResponse | null;
49
+ assignee?: PersonResponse | null;
50
+ };
51
+ export type Meta = {
52
+ comments: CommentResponse[];
53
+ reports: ReportResponse[];
54
+ watching: boolean;
55
+ };
56
+ export type PersonResponse = {
57
+ id: number;
58
+ name: string;
59
+ email: string;
60
+ };
61
+ export type ReportResponse = {
62
+ id: number;
63
+ incident_id?: number | null;
64
+ reported_by_user_id: number;
65
+ report_type: string;
66
+ status: string;
67
+ title: string;
68
+ description: string;
69
+ steps_to_reproduce?: string;
70
+ expected_result?: string;
71
+ actual_result?: string;
72
+ severity: string;
73
+ affected_module?: string;
74
+ page_url?: string;
75
+ browser_info?: string;
76
+ app_version?: string;
77
+ frontend_error_message?: string;
78
+ frontend_stacktrace?: string;
79
+ attachment_json?: unknown;
80
+ extra_json?: unknown;
81
+ created_at: string;
82
+ updated_at: string;
83
+ reporter?: PersonResponse | null;
84
+ };
@@ -0,0 +1,54 @@
1
+ import { type PageMeta, type QueryValue } from "../../client";
2
+ import type { CommentResponse, Created, Incident, Meta } from "./entities";
3
+ export declare const incidentRoutes: {
4
+ readonly index: import("../../client").ApiRoute<Record<string, QueryValue>, Incident[], PageMeta>;
5
+ readonly show: import("../../client").ApiRoute<{
6
+ incidentID: number;
7
+ }, Incident, Meta>;
8
+ readonly comments: import("../../client").ApiRoute<{
9
+ incidentID: number;
10
+ }, CommentResponse[], unknown>;
11
+ readonly report: import("../../client").ApiRoute<{
12
+ title: string;
13
+ description: string;
14
+ steps_to_reproduce: string;
15
+ expected_result: string;
16
+ actual_result: string;
17
+ severity: string;
18
+ affected_module: string;
19
+ page_url: string;
20
+ browser_info: string;
21
+ app_version: string;
22
+ frontend_error_message: string;
23
+ frontend_stacktrace: string;
24
+ attachment_json: string;
25
+ extra_json: string;
26
+ }, Created, unknown>;
27
+ readonly comment: import("../../client").ApiRoute<{
28
+ body: string;
29
+ visibility: string;
30
+ } & {
31
+ incidentID: number;
32
+ }, CommentResponse, unknown>;
33
+ readonly update: import("../../client").ApiRoute<{
34
+ status: string;
35
+ severity: string;
36
+ visibility: string;
37
+ resolution_summary: string;
38
+ external_ticket_provider: string;
39
+ external_ticket_id: string;
40
+ external_ticket_url: string;
41
+ assigned_to_user_id?: number | null | undefined;
42
+ duplicate_of_incident_id?: number | null | undefined;
43
+ } & {
44
+ incidentID: number;
45
+ }, Incident, Meta>;
46
+ readonly clientError: import("../../client").ApiRoute<{
47
+ message: string;
48
+ stack: string;
49
+ route: string;
50
+ browser: string;
51
+ app_version: string;
52
+ request_ids: string[];
53
+ }, void, unknown>;
54
+ };
@@ -0,0 +1,48 @@
1
+ import { z } from 'zod';
2
+ export declare const ByIDSchema: z.ZodObject<{
3
+ incidentID: z.ZodNumber;
4
+ }, z.core.$strip>;
5
+ export type ByID = z.infer<typeof ByIDSchema>;
6
+ export declare const ClientErrorInputSchema: z.ZodObject<{
7
+ message: z.ZodString;
8
+ stack: z.ZodString;
9
+ route: z.ZodString;
10
+ browser: z.ZodString;
11
+ app_version: z.ZodString;
12
+ request_ids: z.ZodArray<z.ZodString>;
13
+ }, z.core.$strip>;
14
+ export type ClientErrorInput = z.infer<typeof ClientErrorInputSchema>;
15
+ export declare const CommentRequestSchema: z.ZodObject<{
16
+ body: z.ZodString;
17
+ visibility: z.ZodString;
18
+ }, z.core.$strip>;
19
+ export type CommentRequest = z.infer<typeof CommentRequestSchema>;
20
+ export declare const ReportInputSchema: z.ZodObject<{
21
+ title: z.ZodString;
22
+ description: z.ZodString;
23
+ steps_to_reproduce: z.ZodString;
24
+ expected_result: z.ZodString;
25
+ actual_result: z.ZodString;
26
+ severity: z.ZodString;
27
+ affected_module: z.ZodString;
28
+ page_url: z.ZodString;
29
+ browser_info: z.ZodString;
30
+ app_version: z.ZodString;
31
+ frontend_error_message: z.ZodString;
32
+ frontend_stacktrace: z.ZodString;
33
+ attachment_json: z.ZodString;
34
+ extra_json: z.ZodString;
35
+ }, z.core.$strip>;
36
+ export type ReportInput = z.infer<typeof ReportInputSchema>;
37
+ export declare const UpdateRequestSchema: z.ZodObject<{
38
+ status: z.ZodString;
39
+ severity: z.ZodString;
40
+ visibility: z.ZodString;
41
+ assigned_to_user_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
42
+ duplicate_of_incident_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
43
+ resolution_summary: z.ZodString;
44
+ external_ticket_provider: z.ZodString;
45
+ external_ticket_id: z.ZodString;
46
+ external_ticket_url: z.ZodString;
47
+ }, z.core.$strip>;
48
+ export type UpdateRequest = z.infer<typeof UpdateRequestSchema>;
@@ -1,6 +1,6 @@
1
1
  import { computed as k } from "vue";
2
2
  import { d as y } from "./context-Ch1r4fdN.js";
3
- import { h as N } from "./platform-Dx6STiwY.js";
3
+ import { h as N } from "./platform-Dr4iY3b8.js";
4
4
  function F(l, a = {}) {
5
5
  const i = /* @__PURE__ */ new Map(), o = [];
6
6
  for (const e of l) {
@@ -1,7 +1,7 @@
1
1
  import { computed as j, ref as z, shallowRef as I, watch as F, getCurrentScope as J, onScopeDispose as Q } from "vue";
2
2
  import { useRoute as O } from "vue-router";
3
3
  import { a as N } from "./error-Bb_dr_Ay.js";
4
- import { L as k, d as B, e as D, o as U, q as V } from "./state-BC1Fc6U2.js";
4
+ import { L as k, d as B, e as D, o as U, q as V } from "./state-ChVIjayU.js";
5
5
  function K(l, t, n, g) {
6
6
  return typeof t == "string" ? t : { ...t, query: { ...t.query, [n]: D(l, g) } };
7
7
  }
@@ -1,4 +1,4 @@
1
- import { d as s, e as a, n as o, b as i, c as n, f as u } from "../index-DH0MoFqg.js";
1
+ import { d as s, e as a, n as o, b as i, c as n, f as u } from "../index-i-cTTVxo.js";
2
2
  export {
3
3
  s as deadLettersRoutes,
4
4
  a as eventsRoutes,
@@ -1,6 +1,6 @@
1
1
  import { inject as C, ref as z, computed as d, onBeforeUnmount as F, defineComponent as O, useSlots as A, openBlock as r, createBlock as L, resolveDynamicComponent as T, unref as t, normalizeClass as b, withCtx as w, createElementBlock as i, renderSlot as f, createCommentVNode as u, createElementVNode as k, createTextVNode as h, toDisplayString as m, createVNode as D, useAttrs as G, useId as K, mergeProps as j, createSlots as M, mergeDefaults as P } from "vue";
2
2
  import { useI18n as U } from "vue-i18n";
3
- import { _ as B } from "./Icon.vue_vue_type_script_lang-D7oC-d-S.js";
3
+ import { _ as B } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
4
4
  import { RouterLink as Y } from "vue-router";
5
5
  import { c as J, a as Q } from "./controlSurface-t7OEFESJ.js";
6
6
  import { u as W } from "./mediaQuery-CygcXmFW.js";
@@ -1,6 +1,6 @@
1
- import { _ as x } from "../AlertDialog.vue_vue_type_script_setup_true_lang-whA4WLdl.js";
2
- import { _ as w } from "../Menu.vue_vue_type_script_setup_true_lang-DsFOeCVe.js";
3
- import { _ as I } from "../MenuButton.vue_vue_type_script_setup_true_lang-AGbN9r5q.js";
1
+ import { _ as x } from "../AlertDialog.vue_vue_type_script_setup_true_lang-BvGc1Rfl.js";
2
+ import { _ as w } from "../Menu.vue_vue_type_script_setup_true_lang-ldLdJ5Q-.js";
3
+ import { _ as I } from "../MenuButton.vue_vue_type_script_setup_true_lang-C-XRr5f2.js";
4
4
  import { _ as v } from "../Popover.vue_vue_type_script_setup_true_lang-C70GrCP7.js";
5
5
  import { _ as P } from "../Toaster.vue_vue_type_script_setup_true_lang-55boRLAj.js";
6
6
  import { _ as y } from "../Tooltip.vue_vue_type_script_setup_true_lang-mErNPt8e.js";
@@ -8,7 +8,7 @@ import { t as k } from "../toast-CqSDTWRX.js";
8
8
  import { I as E, u as M } from "../dialogStack-DZZg55w0.js";
9
9
  import { I as S, u as O } from "../useDialog-CXR3hN0G.js";
10
10
  import { C as K, u as N } from "../mediaQuery-CygcXmFW.js";
11
- import { _ as j } from "../PhotoViewer.vue_vue_type_script_setup_true_lang-CY5EZiyK.js";
11
+ import { _ as j } from "../PhotoViewer.vue_vue_type_script_setup_true_lang-Cj0hSMk9.js";
12
12
  import { defineComponent as r, openBlock as s, createElementBlock as n, normalizeClass as l, toDisplayString as p } from "vue";
13
13
  const c = ["aria-disabled"], d = /* @__PURE__ */ r({
14
14
  __name: "PhotoViewerAction",