@gameap/frontend 4.1.0-dev1 → 4.1.0-dev2

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 (61) hide show
  1. package/dist/AdminClientCertificatesView-DQTMJ6LY.js +368 -0
  2. package/dist/AdminDaemonTaskListView-Bx3e0Miy.js +316 -0
  3. package/dist/AdminDaemonTaskOutputView-BJtLdoAq.js +87 -0
  4. package/dist/AdminGamesEdit-hDe3Pr-7.js +470 -0
  5. package/dist/AdminGamesList-CM1xADCW.js +500 -0
  6. package/dist/AdminModEdit-DDKd6Vga.js +526 -0
  7. package/dist/AdminNodeShowView-DMoEY2Cu.js +167 -0
  8. package/dist/AdminNodesCreateView-BXZDQIJ1.js +85 -0
  9. package/dist/AdminNodesEditView-xO7-szjJ.js +66 -0
  10. package/dist/AdminNodesView-ugTPiC4h.js +161 -0
  11. package/dist/AdminServersCreate-DOygFz_E.js +345 -0
  12. package/dist/AdminServersEdit-cZX6UGB1.js +400 -0
  13. package/dist/AdminServersList-CC50WRsv.js +165 -0
  14. package/dist/AdminUsersEditView-CXpMKFfI.js +305 -0
  15. package/dist/AdminUsersView-DGuGEHVR.js +443 -0
  16. package/dist/CreateModForm-CqhcrNFp.js +122 -0
  17. package/dist/CreateNodeModal-BvbJTKhD.js +93 -0
  18. package/dist/DsIpSelector-DN9IyT4L.js +90 -0
  19. package/dist/FileManager-8TWHezyM.js +31882 -0
  20. package/dist/GameModSelector-DRIaCbGY.js +94 -0
  21. package/dist/InputManyList-By5xECIK.js +110 -0
  22. package/dist/InputTextList-Bm2Ofq5J.js +63 -0
  23. package/dist/PluginPendingView-DHd_yijv.js +31 -0
  24. package/dist/RconConsole-DH9XeOu3.js +75 -0
  25. package/dist/RconPlayers-GrvCMJX3.js +420 -0
  26. package/dist/ServerConsole-BHHnpxJy.js +98 -0
  27. package/dist/ServerIdView-BfqrYuar.js +577 -0
  28. package/dist/ServerSelector-QMK1qiXa.js +52 -0
  29. package/dist/ServerSettings-Cz6C8Dlh.js +84 -0
  30. package/dist/ServerStatus-DBJW9C6H.js +63 -0
  31. package/dist/ServerTasks-Bs3iGYY3.js +854 -0
  32. package/dist/SettingsParameters-DCqhqxHk.js +87 -0
  33. package/dist/SmartPortSelector-DektJC6p.js +161 -0
  34. package/dist/UpdateNodeForm-CwirLUIK.js +648 -0
  35. package/dist/UserServerPrivileges-utyKdh7O.js +318 -0
  36. package/dist/_commonjsHelpers-C6fGbg64.js +6 -0
  37. package/dist/_createCompounder-DSupx5mD.js +241 -0
  38. package/dist/camelCase-WcUYdRB3.js +8 -0
  39. package/dist/capitalize-DRKkBaYR.js +40 -0
  40. package/dist/clientCertificates-BsJdUHYw.js +53 -0
  41. package/dist/favicon-32x32.png +0 -0
  42. package/dist/favicon-96x96.png +0 -0
  43. package/dist/favicon.ico +0 -0
  44. package/dist/fonts/gicon.eot +0 -0
  45. package/dist/fonts/gicon.svg +33 -0
  46. package/dist/fonts/gicon.ttf +0 -0
  47. package/dist/fonts/gicon.woff +0 -0
  48. package/dist/fonts/gicon.woff2 +0 -0
  49. package/dist/frontend.css +14 -0
  50. package/dist/gameList-DpGDCxFE.js +115 -0
  51. package/dist/images/gap_logo_white.png +0 -0
  52. package/dist/images/gap_logo_white_mini.png +0 -0
  53. package/dist/images/gicon.svg +18 -0
  54. package/dist/images/icons/save-white.svg +1 -0
  55. package/dist/images/icons/save.svg +1 -0
  56. package/dist/index-60qEjGuU.js +5371 -0
  57. package/dist/index.js +1 -0
  58. package/dist/loader-CrZTMKcy.js +131 -0
  59. package/dist/mockServiceWorker.js +349 -0
  60. package/dist/snakeCase-CTCA7tap.js +7 -0
  61. package/package.json +1 -2
@@ -0,0 +1,85 @@
1
+ import { computed as u, onMounted as x, ref as N, resolveComponent as b, createElementBlock as V, openBlock as M, Fragment as w, createVNode as r, unref as n, withCtx as f, createElementVNode as p, toDisplayString as y } from "vue";
2
+ import { GBreadcrumbs as A } from "@gameap/ui";
3
+ import { m as B, t as a, e as d, _ as D, n as E } from "./index-60qEjGuU.js";
4
+ import { u as F } from "./clientCertificates-BsJdUHYw.js";
5
+ import { useRoute as O, useRouter as R } from "vue-router";
6
+ import { storeToRefs as v } from "pinia";
7
+ import { _ as j } from "./UpdateNodeForm-CwirLUIK.js";
8
+ import { s as G } from "./snakeCase-CTCA7tap.js";
9
+ const L = { class: "hidden lg:inline" }, K = {
10
+ __name: "AdminNodesCreateView",
11
+ setup($) {
12
+ O();
13
+ const _ = R(), s = B(), i = F(), C = u(() => [
14
+ { route: "/", text: "GameAP", icon: "gicon gicon-gameap" },
15
+ { route: { name: "admin.nodes.index" }, text: a("dedicated_servers.dedicated_servers") },
16
+ { text: a("dedicated_servers.create") }
17
+ ]);
18
+ x(() => {
19
+ i.fetchClientCertificates().catch((e) => {
20
+ d(e);
21
+ }), s.fetchAutoSetupData().catch((e) => {
22
+ d(e);
23
+ });
24
+ });
25
+ const { certificates: g } = v(i), { autoSetupData: c } = v(s), h = u(() => i.loading.value), k = u(() => g.value.map((e) => ({
26
+ label: e.fingerprint,
27
+ value: e.id
28
+ }))), o = N({
29
+ name: "",
30
+ description: "",
31
+ location: ""
32
+ }), m = async () => {
33
+ o.value.serverCertificateFile ? o.value.gdaemonServerCert = await o.value.serverCertificateFile.text() : o.value.gdaemonServerCert = "";
34
+ const e = Object.fromEntries(
35
+ Object.entries(o.value).map(([t, l]) => [G(t), l])
36
+ );
37
+ s.createNode(e).then(() => {
38
+ E({
39
+ content: a("dedicated_servers.create_success_msg"),
40
+ type: "success"
41
+ }, () => {
42
+ _.push({ name: "admin.nodes.index" });
43
+ });
44
+ }).catch((t) => {
45
+ d(t);
46
+ });
47
+ };
48
+ return (e, t) => {
49
+ const l = b("CreateNodeModal");
50
+ return M(), V(w, null, [
51
+ r(n(A), { items: C.value }, null, 8, ["items"]),
52
+ r(j, {
53
+ loading: h.value,
54
+ modelValue: o.value,
55
+ "onUpdate:modelValue": t[0] || (t[0] = (S) => o.value = S),
56
+ onSend: m,
57
+ "client-certificate-options": k.value
58
+ }, {
59
+ button: f(() => [
60
+ r(D, {
61
+ class: "mt-2",
62
+ color: "green",
63
+ onClick: m
64
+ }, {
65
+ default: f(() => [
66
+ t[1] || (t[1] = p("i", { class: "fa-regular fa-plus-square mr-0.5" }, null, -1)),
67
+ p("span", L, " " + y(n(a)("main.create")), 1)
68
+ ]),
69
+ _: 1
70
+ })
71
+ ]),
72
+ _: 1
73
+ }, 8, ["loading", "modelValue", "client-certificate-options"]),
74
+ r(l, {
75
+ link: n(c).link,
76
+ token: n(c).token,
77
+ host: n(c).host
78
+ }, null, 8, ["link", "token", "host"])
79
+ ], 64);
80
+ };
81
+ }
82
+ };
83
+ export {
84
+ K as default
85
+ };
@@ -0,0 +1,66 @@
1
+ import { computed as s, onMounted as b, ref as h, createElementBlock as x, openBlock as N, Fragment as S, createVNode as d, unref as O } from "vue";
2
+ import { GBreadcrumbs as V } from "@gameap/ui";
3
+ import { h as j, t as i, e as c, n as E } from "./index-60qEjGuU.js";
4
+ import { u as k } from "./clientCertificates-BsJdUHYw.js";
5
+ import { useRoute as B, useRouter as F } from "vue-router";
6
+ import { storeToRefs as l } from "pinia";
7
+ import { _ as R } from "./UpdateNodeForm-CwirLUIK.js";
8
+ import { c as U } from "./camelCase-WcUYdRB3.js";
9
+ import { s as w } from "./snakeCase-CTCA7tap.js";
10
+ const D = {
11
+ __name: "AdminNodesEditView",
12
+ setup(y) {
13
+ const u = B(), m = F(), r = j(), a = k(), f = s(() => [
14
+ { route: "/", text: "GameAP", icon: "gicon gicon-gameap" },
15
+ { route: { name: "admin.nodes.index" }, text: i("dedicated_servers.dedicated_servers") },
16
+ { text: i("dedicated_servers.edit") }
17
+ ]);
18
+ b(() => {
19
+ r.setNodeId(u.params.id), r.fetchNode().then(() => {
20
+ t.value = Object.fromEntries(
21
+ Object.entries(p.value).map(([e, o]) => [U(e), o])
22
+ );
23
+ }).catch((e) => {
24
+ c(e);
25
+ }), a.fetchClientCertificates().catch((e) => {
26
+ c(e);
27
+ });
28
+ });
29
+ const { node: p } = l(r), { certificates: v } = l(a), _ = s(() => r.loading.value || a.loading.value), g = s(() => v.value.map((e) => ({
30
+ label: e.fingerprint,
31
+ value: e.id
32
+ }))), t = h({
33
+ name: "",
34
+ description: "",
35
+ location: ""
36
+ }), C = async () => {
37
+ t.value.serverCertificateFile ? t.value.gdaemonServerCert = await t.value.serverCertificateFile.text() : t.value.gdaemonServerCert = "";
38
+ const e = Object.fromEntries(
39
+ Object.entries(t.value).map(([o, n]) => [w(o), n])
40
+ );
41
+ r.saveNode(e).then(() => {
42
+ E({
43
+ content: i("dedicated_servers.update_success_msg"),
44
+ type: "success"
45
+ }, () => {
46
+ m.push({ name: "admin.nodes.index" });
47
+ });
48
+ }).catch((o) => {
49
+ c(o);
50
+ });
51
+ };
52
+ return (e, o) => (N(), x(S, null, [
53
+ d(O(V), { items: f.value }, null, 8, ["items"]),
54
+ d(R, {
55
+ loading: _.value,
56
+ modelValue: t.value,
57
+ "onUpdate:modelValue": o[0] || (o[0] = (n) => t.value = n),
58
+ onSend: C,
59
+ "client-certificate-options": g.value
60
+ }, null, 8, ["loading", "modelValue", "client-certificate-options"])
61
+ ], 64));
62
+ }
63
+ };
64
+ export {
65
+ D as default
66
+ };
@@ -0,0 +1,161 @@
1
+ import { computed as m, ref as x, onMounted as h, createElementBlock as z, openBlock as C, Fragment as w, createVNode as n, unref as s, withCtx as o, createElementVNode as l, toDisplayString as u, h as t } from "vue";
2
+ import { GBreadcrumbs as B, Loading as D } from "@gameap/ui";
3
+ import { m as S, t as e, e as p, _ as r, s as T, n as E } from "./index-60qEjGuU.js";
4
+ import { storeToRefs as L } from "pinia";
5
+ import { NDataTable as V, NEmpty as q } from "naive-ui";
6
+ const j = {
7
+ __name: "AdminNodesView",
8
+ setup(A) {
9
+ const d = S(), f = m(() => [
10
+ { route: "/", text: "GameAP", icon: "gicon gicon-gameap" },
11
+ { route: { name: "admin.nodes.index" }, text: e("sidebar.dedicated_servers") }
12
+ ]), _ = () => [
13
+ {
14
+ title: e("dedicated_servers.name"),
15
+ key: "name"
16
+ },
17
+ {
18
+ title: e("dedicated_servers.location"),
19
+ key: "location"
20
+ },
21
+ {
22
+ title: e("dedicated_servers.provider"),
23
+ key: "provider"
24
+ },
25
+ {
26
+ title: e("dedicated_servers.ip"),
27
+ key: "ip",
28
+ render(i) {
29
+ return T(i.ip, ", ");
30
+ }
31
+ },
32
+ {
33
+ title: e("dedicated_servers.os"),
34
+ key: "os"
35
+ },
36
+ {
37
+ title: e("main.actions"),
38
+ render(i) {
39
+ return [
40
+ t(r, {
41
+ color: "green",
42
+ size: "small",
43
+ class: "mr-0.5",
44
+ route: { name: "admin.nodes.view", params: { id: i.id } }
45
+ }, [
46
+ t("i", { class: "fa-solid fa-eye" }),
47
+ t("span", { class: "hidden lg:inline" }, e("main.view"))
48
+ ]),
49
+ t(r, {
50
+ color: "blue",
51
+ size: "small",
52
+ class: "mr-0.5",
53
+ route: { name: "admin.nodes.edit", params: { id: i.id } }
54
+ }, [
55
+ t("i", { class: "fa-solid fa-pen-to-square" }),
56
+ t("span", { class: "hidden lg:inline" }, e("main.edit"))
57
+ ]),
58
+ t(r, {
59
+ color: "red",
60
+ size: "small",
61
+ text: e("main.delete"),
62
+ onClick: () => {
63
+ N(i.id);
64
+ }
65
+ }, [
66
+ t("i", { class: "fa-solid fa-trash" }),
67
+ t("span", { class: "hidden lg:inline" }, e("main.delete"))
68
+ ])
69
+ ];
70
+ }
71
+ }
72
+ ], { loading: g, nodes: v } = L(d), y = x(_()), b = {
73
+ pageSize: 20
74
+ };
75
+ h(() => {
76
+ c();
77
+ });
78
+ const c = () => {
79
+ d.fetchNodesByFilter([]).catch((i) => {
80
+ p(i);
81
+ });
82
+ }, k = m(() => v.value.map((i) => ({
83
+ id: i.id,
84
+ name: i.name,
85
+ location: i.location,
86
+ provider: i.provider,
87
+ ip: i.ip,
88
+ os: i.os
89
+ }))), N = (i) => {
90
+ window.$dialog.success({
91
+ title: e("dedicated_servers.delete_confirm_msg"),
92
+ positiveText: e("main.yes"),
93
+ negativeText: e("main.no"),
94
+ closable: !1,
95
+ onPositiveClick: () => {
96
+ d.deleteNode(i).then(() => {
97
+ E({
98
+ content: e("dedicated_servers.delete_success_msg"),
99
+ type: "success"
100
+ }, () => {
101
+ c();
102
+ });
103
+ }).catch((a) => {
104
+ p(a);
105
+ });
106
+ },
107
+ onNegativeClick: () => {
108
+ }
109
+ });
110
+ };
111
+ return (i, a) => (C(), z(w, null, [
112
+ n(s(B), { items: f.value }, null, 8, ["items"]),
113
+ n(r, {
114
+ color: "green",
115
+ size: "middle",
116
+ class: "mb-5 mr-1",
117
+ route: { name: "admin.nodes.create" }
118
+ }, {
119
+ default: o(() => [
120
+ a[0] || (a[0] = l("i", { class: "fa fa-plus-square mr-0.5" }, null, -1)),
121
+ l("span", null, u(s(e)("dedicated_servers.create")), 1)
122
+ ]),
123
+ _: 1
124
+ }),
125
+ n(r, {
126
+ color: "orange",
127
+ size: "middle",
128
+ class: "mb-5",
129
+ route: { name: "admin.client_certificates.index" }
130
+ }, {
131
+ default: o(() => [
132
+ a[1] || (a[1] = l("i", { class: "fa-solid fa-certificate mr-0.5" }, null, -1)),
133
+ l("span", null, u(s(e)("client_certificates.client_certificates")), 1)
134
+ ]),
135
+ _: 1
136
+ }),
137
+ n(s(V), {
138
+ ref: "tableRef",
139
+ bordered: !1,
140
+ "single-line": !0,
141
+ columns: y.value,
142
+ data: k.value,
143
+ loading: s(g),
144
+ pagination: b
145
+ }, {
146
+ loading: o(() => [
147
+ n(s(D))
148
+ ]),
149
+ empty: o(() => [
150
+ n(s(q), {
151
+ description: s(e)("servers.empty_list")
152
+ }, null, 8, ["description"])
153
+ ]),
154
+ _: 1
155
+ }, 8, ["columns", "data", "loading"])
156
+ ], 64));
157
+ }
158
+ };
159
+ export {
160
+ j as default
161
+ };
@@ -0,0 +1,345 @@
1
+ import { ref as x, computed as h, onMounted as T, watch as C, resolveComponent as c, createElementBlock as z, openBlock as A, Fragment as D, createVNode as a, unref as s, withCtx as u, createElementVNode as i, toDisplayString as H } from "vue";
2
+ import { GBreadcrumbs as V } from "@gameap/ui";
3
+ import { m as W, i as J, t as l, e as P, o as d, _ as K, n as I } from "./index-60qEjGuU.js";
4
+ import { u as Q } from "./gameList-DpGDCxFE.js";
5
+ import { storeToRefs as M } from "pinia";
6
+ import { NForm as X, NFormItem as p, NInputGroup as Y, NSwitch as Z } from "naive-ui";
7
+ import { useRouter as ee } from "vue-router";
8
+ import re from "./GameModSelector-DRIaCbGY.js";
9
+ import te from "./SmartPortSelector-DektJC6p.js";
10
+ import ae from "./DsIpSelector-DN9IyT4L.js";
11
+ const k = [
12
+ "Alpha",
13
+ "Bravo",
14
+ "Charlie",
15
+ "Delta",
16
+ "Echo",
17
+ "Foxtrot",
18
+ "Golf",
19
+ "Oscar",
20
+ "Sierra",
21
+ "Whiskey"
22
+ ];
23
+ function oe(q = "Server") {
24
+ const g = k[Math.floor(Math.random() * k.length)], f = Math.floor(Math.random() * 90) + 10;
25
+ return `${q} ${g}-${f}`;
26
+ }
27
+ const le = { class: "flex flex-wrap mt-2" }, se = { class: "md:w-1/2 pr-8" }, ne = ["innerHTML"], ue = { class: "md:w-1/2" }, de = { class: "hidden lg:inline" }, he = {
28
+ __name: "AdminServersCreate",
29
+ setup(q) {
30
+ const g = ee(), f = Q(), w = W(), L = J(), { games: U } = M(f), { nodes: G } = M(w), S = x({}), e = x({
31
+ serverPort: 27015,
32
+ queryPort: 27015,
33
+ rconPort: 27015,
34
+ install: !0,
35
+ user: "gameap"
36
+ }), O = h(() => [
37
+ { route: "/", text: "GameAP", icon: "gicon gicon-gameap" },
38
+ { route: { name: "admin.servers.index" }, text: l("servers.game_servers") },
39
+ { route: { name: "admin.servers.create" }, text: l("servers.create") }
40
+ ]);
41
+ T(() => {
42
+ $(), F();
43
+ });
44
+ const b = h(() => {
45
+ let o = {};
46
+ for (const [r, n] of Object.entries(U.value))
47
+ o[n.code] = n.name;
48
+ return o;
49
+ }), N = h(() => {
50
+ let o = {};
51
+ for (const [r, n] of Object.entries(G.value))
52
+ o[n.id] = n.name;
53
+ return o;
54
+ }), $ = async () => {
55
+ try {
56
+ await f.fetchGames();
57
+ } catch {
58
+ P(error);
59
+ }
60
+ }, F = () => {
61
+ w.fetchNodesByFilter([]).catch((o) => {
62
+ P(o);
63
+ });
64
+ };
65
+ C(N, (o) => {
66
+ const r = Object.keys(o);
67
+ r.length === 1 && !e.value.nodeId && (e.value.nodeId = Number(r[0]));
68
+ }, { immediate: !0 }), C(() => e.value.name, (o) => {
69
+ if (!o || e.value.game)
70
+ return;
71
+ const r = o.toLowerCase().split(/\s+/).filter((m) => m.length >= 3);
72
+ if (r.length === 0)
73
+ return;
74
+ const n = /* @__PURE__ */ new Set();
75
+ for (const [m, y] of Object.entries(b.value)) {
76
+ const _ = m.toLowerCase(), v = y.toLowerCase();
77
+ for (const t of r)
78
+ if (_.includes(t) || t.includes(_) || v.includes(t) || t.includes(v)) {
79
+ n.add(m);
80
+ break;
81
+ }
82
+ }
83
+ n.size === 1 && (e.value.game = [...n][0]);
84
+ });
85
+ const R = () => {
86
+ const o = b.value[e.value.game] || "Server";
87
+ e.value.name = oe(o);
88
+ }, B = {
89
+ name: {
90
+ required: !0,
91
+ validator: d(l("labels.name"))
92
+ },
93
+ game: {
94
+ required: !0,
95
+ validator: d(l("labels.game_id"))
96
+ },
97
+ gameMod: {
98
+ required: !0,
99
+ validator: d(l("labels.game_mod_id"))
100
+ },
101
+ installed: {
102
+ required: !0
103
+ },
104
+ nodeId: {
105
+ required: !0,
106
+ validator: d(l("labels.ds_id"))
107
+ },
108
+ ip: {
109
+ required: !0,
110
+ validator: d(l("labels.ip"))
111
+ },
112
+ serverPort: {
113
+ required: !0,
114
+ validator: d(l("labels.server_port"))
115
+ },
116
+ queryPort: {
117
+ required: !0,
118
+ validator: d(l("labels.query_port"))
119
+ },
120
+ rconPort: {
121
+ required: !0,
122
+ validator: d(l("labels.rcon_port"))
123
+ }
124
+ }, j = () => {
125
+ S.value?.validate((o, { warnings: r }) => {
126
+ o ? (console.log(o), I({
127
+ content: "Please check the form.",
128
+ type: "error"
129
+ })) : E();
130
+ });
131
+ }, E = () => {
132
+ L.create({
133
+ name: e.value.name,
134
+ game_id: e.value.game,
135
+ game_mod_id: e.value.gameMod,
136
+ install: e.value.install,
137
+ rcon: e.value.rcon,
138
+ su_user: e.value.user,
139
+ ds_id: e.value.nodeId,
140
+ server_ip: e.value.ip,
141
+ server_port: e.value.serverPort,
142
+ query_port: e.value.queryPort,
143
+ rcon_port: e.value.rconPort,
144
+ dir: e.value.dir
145
+ }).then(() => {
146
+ I({
147
+ content: l("servers.create_success_msg"),
148
+ type: "success"
149
+ }, () => {
150
+ g.push({ name: "admin.servers.index" });
151
+ });
152
+ }).catch((o) => {
153
+ P(o);
154
+ });
155
+ };
156
+ return (o, r) => {
157
+ const n = c("n-input"), m = c("n-button"), y = c("n-collapse-item"), _ = c("n-collapse"), v = c("n-card");
158
+ return A(), z(D, null, [
159
+ a(s(V), { items: O.value }, null, 8, ["items"]),
160
+ a(s(X), {
161
+ "label-placement": "top",
162
+ "label-width": "auto",
163
+ ref_key: "formRef",
164
+ ref: S,
165
+ model: e.value,
166
+ rules: B
167
+ }, {
168
+ default: u(() => [
169
+ i("div", le, [
170
+ i("div", se, [
171
+ a(v, {
172
+ title: s(l)("servers.basic_info"),
173
+ size: "small",
174
+ class: "mb-3",
175
+ "header-class": "g-card-header",
176
+ segmented: {
177
+ content: !0,
178
+ footer: "soft"
179
+ }
180
+ }, {
181
+ default: u(() => [
182
+ a(s(p), {
183
+ label: s(l)("labels.name"),
184
+ path: "name"
185
+ }, {
186
+ default: u(() => [
187
+ a(s(Y), null, {
188
+ default: u(() => [
189
+ a(n, {
190
+ value: e.value.name,
191
+ "onUpdate:value": r[0] || (r[0] = (t) => e.value.name = t),
192
+ type: "text"
193
+ }, null, 8, ["value"]),
194
+ a(m, { onClick: R }, {
195
+ default: u(() => [...r[12] || (r[12] = [
196
+ i("i", { class: "fa-solid fa-dice" }, null, -1)
197
+ ])]),
198
+ _: 1
199
+ })
200
+ ]),
201
+ _: 1
202
+ })
203
+ ]),
204
+ _: 1
205
+ }, 8, ["label"]),
206
+ a(re, {
207
+ games: b.value,
208
+ "game-path": "game",
209
+ "game-mod-path": "gameMod",
210
+ game: e.value.game,
211
+ "onUpdate:game": r[1] || (r[1] = (t) => e.value.game = t),
212
+ "game-mod": e.value.gameMod,
213
+ "onUpdate:gameMod": r[2] || (r[2] = (t) => e.value.gameMod = t)
214
+ }, null, 8, ["games", "game", "game-mod"]),
215
+ a(s(p), {
216
+ label: s(l)("servers.install"),
217
+ path: "install"
218
+ }, {
219
+ default: u(() => [
220
+ a(s(Z), {
221
+ value: e.value.install,
222
+ "onUpdate:value": r[3] || (r[3] = (t) => e.value.install = t)
223
+ }, null, 8, ["value"])
224
+ ]),
225
+ _: 1
226
+ }, 8, ["label"]),
227
+ a(_, null, {
228
+ default: u(() => [
229
+ a(y, {
230
+ title: s(l)("main.more")
231
+ }, {
232
+ default: u(() => [
233
+ a(s(p), {
234
+ label: s(l)("labels.rcon"),
235
+ path: "rcon"
236
+ }, {
237
+ default: u(() => [
238
+ a(n, {
239
+ value: e.value.rcon,
240
+ "onUpdate:value": r[4] || (r[4] = (t) => e.value.rcon = t),
241
+ type: "password",
242
+ "show-password-on": "click"
243
+ }, null, 8, ["value"])
244
+ ]),
245
+ _: 1
246
+ }, 8, ["label"]),
247
+ a(s(p), {
248
+ label: s(l)("labels.dir"),
249
+ class: "mb-4",
250
+ path: "dir"
251
+ }, {
252
+ feedback: u(() => [
253
+ i("small", {
254
+ innerHTML: s(l)("servers.d_dir")
255
+ }, null, 8, ne)
256
+ ]),
257
+ default: u(() => [
258
+ a(n, {
259
+ value: e.value.dir,
260
+ "onUpdate:value": r[5] || (r[5] = (t) => e.value.dir = t),
261
+ type: "text"
262
+ }, null, 8, ["value"])
263
+ ]),
264
+ _: 1
265
+ }, 8, ["label"]),
266
+ a(s(p), {
267
+ label: s(l)("labels.su_user"),
268
+ path: "user"
269
+ }, {
270
+ default: u(() => [
271
+ a(n, {
272
+ value: e.value.user,
273
+ "onUpdate:value": r[6] || (r[6] = (t) => e.value.user = t),
274
+ type: "text"
275
+ }, null, 8, ["value"])
276
+ ]),
277
+ _: 1
278
+ }, 8, ["label"])
279
+ ]),
280
+ _: 1
281
+ }, 8, ["title"])
282
+ ]),
283
+ _: 1
284
+ })
285
+ ]),
286
+ _: 1
287
+ }, 8, ["title"])
288
+ ]),
289
+ i("div", ue, [
290
+ a(v, {
291
+ title: s(l)("servers.ds_ip_ports"),
292
+ size: "small",
293
+ class: "mb-3",
294
+ "header-class": "g-card-header",
295
+ segmented: {
296
+ content: !0,
297
+ footer: "soft"
298
+ }
299
+ }, {
300
+ default: u(() => [
301
+ a(ae, {
302
+ "ds-list": N.value,
303
+ "node-id": e.value.nodeId,
304
+ "onUpdate:nodeId": r[7] || (r[7] = (t) => e.value.nodeId = t),
305
+ ip: e.value.ip,
306
+ "onUpdate:ip": r[8] || (r[8] = (t) => e.value.ip = t),
307
+ "node-id-path": "nodeId",
308
+ "ip-path": "ip"
309
+ }, null, 8, ["ds-list", "node-id", "ip"]),
310
+ a(te, {
311
+ "server-port": e.value.serverPort,
312
+ "onUpdate:serverPort": r[9] || (r[9] = (t) => e.value.serverPort = t),
313
+ "rcon-port": e.value.rconPort,
314
+ "onUpdate:rconPort": r[10] || (r[10] = (t) => e.value.rconPort = t),
315
+ "query-port": e.value.queryPort,
316
+ "onUpdate:queryPort": r[11] || (r[11] = (t) => e.value.queryPort = t),
317
+ "server-port-path": "serverPort",
318
+ "rcon-port-path": "rconPort",
319
+ "query-port-path": "queryPort"
320
+ }, null, 8, ["server-port", "rcon-port", "query-port"])
321
+ ]),
322
+ _: 1
323
+ }, 8, ["title"])
324
+ ]),
325
+ a(K, {
326
+ color: "green",
327
+ onClick: j
328
+ }, {
329
+ default: u(() => [
330
+ r[13] || (r[13] = i("i", { class: "fa-regular fa-square-plus" }, null, -1)),
331
+ i("span", de, " " + H(s(l)("main.create")), 1)
332
+ ]),
333
+ _: 1
334
+ })
335
+ ])
336
+ ]),
337
+ _: 1
338
+ }, 8, ["model"])
339
+ ], 64);
340
+ };
341
+ }
342
+ };
343
+ export {
344
+ he as default
345
+ };