epiq 1.2.2 → 1.2.3
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.
- package/dist/gui/main.js +203 -165
- package/dist/index.js +52 -52
- package/dist/mcp.js +43 -43
- package/package.json +1 -1
package/dist/gui/main.js
CHANGED
|
@@ -24492,7 +24492,7 @@ function useViewTransitionState(to, { relative } = {}) {
|
|
|
24492
24492
|
}
|
|
24493
24493
|
|
|
24494
24494
|
// source/gui/client/App.tsx
|
|
24495
|
-
var
|
|
24495
|
+
var import_react8 = __toESM(require_react(), 1);
|
|
24496
24496
|
|
|
24497
24497
|
// source/gui/client/components/Button.tsx
|
|
24498
24498
|
var import_react = __toESM(require_react(), 1);
|
|
@@ -24911,7 +24911,7 @@ var User = ({
|
|
|
24911
24911
|
);
|
|
24912
24912
|
|
|
24913
24913
|
// source/version.ts
|
|
24914
|
-
var EPIQ_VERSION = "1.2.
|
|
24914
|
+
var EPIQ_VERSION = "1.2.3";
|
|
24915
24915
|
|
|
24916
24916
|
// source/gui/client/components/Header.tsx
|
|
24917
24917
|
var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1);
|
|
@@ -25042,7 +25042,7 @@ var Header = ({ state, connected, syncStatus }) => {
|
|
|
25042
25042
|
};
|
|
25043
25043
|
|
|
25044
25044
|
// source/gui/client/components/IssueDetails.tsx
|
|
25045
|
-
var
|
|
25045
|
+
var import_react6 = __toESM(require_react(), 1);
|
|
25046
25046
|
|
|
25047
25047
|
// source/gui/client/components/Aside.tsx
|
|
25048
25048
|
var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1);
|
|
@@ -25062,9 +25062,60 @@ var Aside = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
|
25062
25062
|
}
|
|
25063
25063
|
);
|
|
25064
25064
|
|
|
25065
|
-
// source/gui/client/components/
|
|
25065
|
+
// source/gui/client/components/CopyRef.tsx
|
|
25066
|
+
var import_react4 = __toESM(require_react(), 1);
|
|
25066
25067
|
var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);
|
|
25067
|
-
var
|
|
25068
|
+
var copyToClipboard = async (value) => {
|
|
25069
|
+
try {
|
|
25070
|
+
await navigator.clipboard.writeText(value);
|
|
25071
|
+
return true;
|
|
25072
|
+
} catch {
|
|
25073
|
+
return false;
|
|
25074
|
+
}
|
|
25075
|
+
};
|
|
25076
|
+
var CopyRef = ({ refValue }) => {
|
|
25077
|
+
const [copied, setCopied] = (0, import_react4.useState)(false);
|
|
25078
|
+
const resetTimer = (0, import_react4.useRef)(
|
|
25079
|
+
void 0
|
|
25080
|
+
);
|
|
25081
|
+
(0, import_react4.useEffect)(() => () => clearTimeout(resetTimer.current), []);
|
|
25082
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
25083
|
+
"button",
|
|
25084
|
+
{
|
|
25085
|
+
type: "button",
|
|
25086
|
+
title: `Copy ${refValue}`,
|
|
25087
|
+
onClick: async (event) => {
|
|
25088
|
+
event.stopPropagation();
|
|
25089
|
+
if (await copyToClipboard(refValue)) {
|
|
25090
|
+
setCopied(true);
|
|
25091
|
+
clearTimeout(resetTimer.current);
|
|
25092
|
+
resetTimer.current = setTimeout(() => setCopied(false), 1200);
|
|
25093
|
+
}
|
|
25094
|
+
},
|
|
25095
|
+
style: {
|
|
25096
|
+
fontFamily: "monospace",
|
|
25097
|
+
fontSize: "inherit",
|
|
25098
|
+
color: copied ? GUI_THEME.green : GUI_THEME.dim,
|
|
25099
|
+
background: "transparent",
|
|
25100
|
+
border: "none",
|
|
25101
|
+
padding: 0,
|
|
25102
|
+
cursor: "pointer",
|
|
25103
|
+
transition: "color 120ms ease"
|
|
25104
|
+
},
|
|
25105
|
+
onMouseEnter: (event) => {
|
|
25106
|
+
if (!copied) event.currentTarget.style.color = GUI_THEME.accent;
|
|
25107
|
+
},
|
|
25108
|
+
onMouseLeave: (event) => {
|
|
25109
|
+
event.currentTarget.style.color = copied ? GUI_THEME.green : GUI_THEME.dim;
|
|
25110
|
+
},
|
|
25111
|
+
children: copied ? "copied!" : `#${refValue}`
|
|
25112
|
+
}
|
|
25113
|
+
);
|
|
25114
|
+
};
|
|
25115
|
+
|
|
25116
|
+
// source/gui/client/components/FormHeader.tsx
|
|
25117
|
+
var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1);
|
|
25118
|
+
var FormHeader = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
25068
25119
|
"div",
|
|
25069
25120
|
{
|
|
25070
25121
|
style: {
|
|
@@ -25079,8 +25130,8 @@ var FormHeader = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
|
25079
25130
|
);
|
|
25080
25131
|
|
|
25081
25132
|
// source/gui/client/components/FormPrimitives.tsx
|
|
25082
|
-
var
|
|
25083
|
-
var Input = (props) => /* @__PURE__ */ (0,
|
|
25133
|
+
var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1);
|
|
25134
|
+
var Input = (props) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
25084
25135
|
"input",
|
|
25085
25136
|
{
|
|
25086
25137
|
...props,
|
|
@@ -25098,7 +25149,7 @@ var Input = (props) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
|
25098
25149
|
}
|
|
25099
25150
|
}
|
|
25100
25151
|
);
|
|
25101
|
-
var Textarea = (props) => /* @__PURE__ */ (0,
|
|
25152
|
+
var Textarea = (props) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
25102
25153
|
"textarea",
|
|
25103
25154
|
{
|
|
25104
25155
|
maxLength: props.maxLength ?? 1500,
|
|
@@ -25120,19 +25171,19 @@ var Textarea = (props) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
|
25120
25171
|
}
|
|
25121
25172
|
}
|
|
25122
25173
|
);
|
|
25123
|
-
var ActionRow = ({ children }) => /* @__PURE__ */ (0,
|
|
25174
|
+
var ActionRow = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
25124
25175
|
"div",
|
|
25125
25176
|
{
|
|
25126
25177
|
style: { display: "flex", justifyContent: "flex-end", gap: 8, marginTop: 8 },
|
|
25127
25178
|
children
|
|
25128
25179
|
}
|
|
25129
25180
|
);
|
|
25130
|
-
var AddRow = ({ children }) => /* @__PURE__ */ (0,
|
|
25131
|
-
var ChipRow = ({ children }) => /* @__PURE__ */ (0,
|
|
25132
|
-
var Empty = ({ children }) => /* @__PURE__ */ (0,
|
|
25181
|
+
var AddRow = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: { display: "flex", gap: 8, marginTop: 10 }, children });
|
|
25182
|
+
var ChipRow = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: { display: "flex", gap: 8, flexWrap: "wrap", marginTop: 10 }, children });
|
|
25183
|
+
var Empty = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { style: { display: "inline-block", marginTop: 8, color: GUI_THEME.dim }, children });
|
|
25133
25184
|
|
|
25134
25185
|
// source/gui/client/components/IssueComments.tsx
|
|
25135
|
-
var
|
|
25186
|
+
var import_react5 = __toESM(require_react(), 1);
|
|
25136
25187
|
|
|
25137
25188
|
// source/gui/client/lib/gui-format.helper.ts
|
|
25138
25189
|
var timeAgo = (timestampMs) => {
|
|
@@ -25154,7 +25205,7 @@ var timeAgo = (timestampMs) => {
|
|
|
25154
25205
|
};
|
|
25155
25206
|
|
|
25156
25207
|
// source/gui/client/components/IssueComments.tsx
|
|
25157
|
-
var
|
|
25208
|
+
var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);
|
|
25158
25209
|
var IssueComments = ({
|
|
25159
25210
|
whoAmI,
|
|
25160
25211
|
issueId,
|
|
@@ -25163,15 +25214,15 @@ var IssueComments = ({
|
|
|
25163
25214
|
onAddComment,
|
|
25164
25215
|
onDeleteComment
|
|
25165
25216
|
}) => {
|
|
25166
|
-
const [body, setBody] = (0,
|
|
25217
|
+
const [body, setBody] = (0, import_react5.useState)("");
|
|
25167
25218
|
const addComment = () => {
|
|
25168
25219
|
const nextBody = body.trim();
|
|
25169
25220
|
if (!nextBody) return;
|
|
25170
25221
|
onAddComment?.(issueId, nextBody);
|
|
25171
25222
|
setBody("");
|
|
25172
25223
|
};
|
|
25173
|
-
return /* @__PURE__ */ (0,
|
|
25174
|
-
comments.length === 0 ? /* @__PURE__ */ (0,
|
|
25224
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { children: [
|
|
25225
|
+
comments.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Empty, { children: "No comments" }) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: 12 }, children: comments.map((comment) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
25175
25226
|
"div",
|
|
25176
25227
|
{
|
|
25177
25228
|
style: {
|
|
@@ -25181,7 +25232,7 @@ var IssueComments = ({
|
|
|
25181
25232
|
background: GUI_THEME.tertiary
|
|
25182
25233
|
},
|
|
25183
25234
|
children: [
|
|
25184
|
-
/* @__PURE__ */ (0,
|
|
25235
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
25185
25236
|
"div",
|
|
25186
25237
|
{
|
|
25187
25238
|
style: {
|
|
@@ -25191,15 +25242,15 @@ var IssueComments = ({
|
|
|
25191
25242
|
marginBottom: 8
|
|
25192
25243
|
},
|
|
25193
25244
|
children: [
|
|
25194
|
-
/* @__PURE__ */ (0,
|
|
25245
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { style: { color: GUI_THEME.secondary, fontSize: 10 }, children: [
|
|
25195
25246
|
comment.author.name ?? "unknown",
|
|
25196
|
-
comment.createdAt && /* @__PURE__ */ (0,
|
|
25247
|
+
comment.createdAt && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { style: { color: GUI_THEME.dim2 }, children: [
|
|
25197
25248
|
" ",
|
|
25198
25249
|
"\xB7 ",
|
|
25199
25250
|
timeAgo(comment.createdAt)
|
|
25200
25251
|
] })
|
|
25201
25252
|
] }),
|
|
25202
|
-
comment.author.id === whoAmI.id && onDeleteComment && /* @__PURE__ */ (0,
|
|
25253
|
+
comment.author.id === whoAmI.id && onDeleteComment && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
25203
25254
|
Button,
|
|
25204
25255
|
{
|
|
25205
25256
|
variant: "ghost",
|
|
@@ -25214,7 +25265,7 @@ var IssueComments = ({
|
|
|
25214
25265
|
]
|
|
25215
25266
|
}
|
|
25216
25267
|
),
|
|
25217
|
-
/* @__PURE__ */ (0,
|
|
25268
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
25218
25269
|
"div",
|
|
25219
25270
|
{
|
|
25220
25271
|
style: {
|
|
@@ -25229,8 +25280,8 @@ var IssueComments = ({
|
|
|
25229
25280
|
},
|
|
25230
25281
|
comment.id
|
|
25231
25282
|
)) }),
|
|
25232
|
-
!readonly && /* @__PURE__ */ (0,
|
|
25233
|
-
/* @__PURE__ */ (0,
|
|
25283
|
+
!readonly && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { style: { marginTop: 18 }, children: [
|
|
25284
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
25234
25285
|
Textarea,
|
|
25235
25286
|
{
|
|
25236
25287
|
maxLength: 120,
|
|
@@ -25245,19 +25296,19 @@ var IssueComments = ({
|
|
|
25245
25296
|
style: { minHeight: 45 }
|
|
25246
25297
|
}
|
|
25247
25298
|
),
|
|
25248
|
-
/* @__PURE__ */ (0,
|
|
25299
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(ActionRow, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Button, { onClick: addComment, children: "comment" }) })
|
|
25249
25300
|
] })
|
|
25250
25301
|
] });
|
|
25251
25302
|
};
|
|
25252
25303
|
|
|
25253
25304
|
// source/gui/client/components/Section.tsx
|
|
25254
|
-
var
|
|
25305
|
+
var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);
|
|
25255
25306
|
var Section = ({
|
|
25256
25307
|
title,
|
|
25257
25308
|
action,
|
|
25258
25309
|
children,
|
|
25259
25310
|
first = false
|
|
25260
|
-
}) => /* @__PURE__ */ (0,
|
|
25311
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
25261
25312
|
"section",
|
|
25262
25313
|
{
|
|
25263
25314
|
style: {
|
|
@@ -25265,7 +25316,7 @@ var Section = ({
|
|
|
25265
25316
|
borderTop: first ? "none" : `1px solid ${GUI_THEME.line}`
|
|
25266
25317
|
},
|
|
25267
25318
|
children: [
|
|
25268
|
-
/* @__PURE__ */ (0,
|
|
25319
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
25269
25320
|
"div",
|
|
25270
25321
|
{
|
|
25271
25322
|
style: {
|
|
@@ -25275,7 +25326,7 @@ var Section = ({
|
|
|
25275
25326
|
gap: 12
|
|
25276
25327
|
},
|
|
25277
25328
|
children: [
|
|
25278
|
-
/* @__PURE__ */ (0,
|
|
25329
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
25279
25330
|
"span",
|
|
25280
25331
|
{
|
|
25281
25332
|
style: {
|
|
@@ -25297,12 +25348,12 @@ var Section = ({
|
|
|
25297
25348
|
);
|
|
25298
25349
|
|
|
25299
25350
|
// source/gui/client/components/Tabs.tsx
|
|
25300
|
-
var
|
|
25351
|
+
var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1);
|
|
25301
25352
|
var Tabs = ({
|
|
25302
25353
|
activeTab,
|
|
25303
25354
|
tabs,
|
|
25304
25355
|
onChange
|
|
25305
|
-
}) => /* @__PURE__ */ (0,
|
|
25356
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
25306
25357
|
"div",
|
|
25307
25358
|
{
|
|
25308
25359
|
style: {
|
|
@@ -25313,7 +25364,7 @@ var Tabs = ({
|
|
|
25313
25364
|
},
|
|
25314
25365
|
children: tabs.map((tab) => {
|
|
25315
25366
|
const active = tab.id === activeTab;
|
|
25316
|
-
return /* @__PURE__ */ (0,
|
|
25367
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
25317
25368
|
"button",
|
|
25318
25369
|
{
|
|
25319
25370
|
type: "button",
|
|
@@ -25331,7 +25382,7 @@ var Tabs = ({
|
|
|
25331
25382
|
},
|
|
25332
25383
|
children: [
|
|
25333
25384
|
tab.label,
|
|
25334
|
-
typeof tab.count === "number" && /* @__PURE__ */ (0,
|
|
25385
|
+
typeof tab.count === "number" && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
25335
25386
|
"span",
|
|
25336
25387
|
{
|
|
25337
25388
|
style: { color: tab.count ? GUI_THEME.secondary : GUI_THEME.dim },
|
|
@@ -25352,7 +25403,7 @@ var Tabs = ({
|
|
|
25352
25403
|
);
|
|
25353
25404
|
|
|
25354
25405
|
// source/gui/client/components/IssueDetails.tsx
|
|
25355
|
-
var
|
|
25406
|
+
var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);
|
|
25356
25407
|
var IssueDetails = ({
|
|
25357
25408
|
whoAmI,
|
|
25358
25409
|
comments,
|
|
@@ -25373,15 +25424,15 @@ var IssueDetails = ({
|
|
|
25373
25424
|
knownTags: tags,
|
|
25374
25425
|
knownAssignees: assignees
|
|
25375
25426
|
}) => {
|
|
25376
|
-
const [title, setTitle] = (0,
|
|
25377
|
-
const [description, setDescription] = (0,
|
|
25378
|
-
const [tagName, setTagName] = (0,
|
|
25379
|
-
const [assigneeName, setAssigneeName] = (0,
|
|
25380
|
-
const [editingTitle, setEditingTitle] = (0,
|
|
25381
|
-
const [editingDescription, setEditingDescription] = (0,
|
|
25382
|
-
const [addingTag, setAddingTag] = (0,
|
|
25383
|
-
const [addingAssignee, setAddingAssignee] = (0,
|
|
25384
|
-
(0,
|
|
25427
|
+
const [title, setTitle] = (0, import_react6.useState)("");
|
|
25428
|
+
const [description, setDescription] = (0, import_react6.useState)("");
|
|
25429
|
+
const [tagName, setTagName] = (0, import_react6.useState)("");
|
|
25430
|
+
const [assigneeName, setAssigneeName] = (0, import_react6.useState)("");
|
|
25431
|
+
const [editingTitle, setEditingTitle] = (0, import_react6.useState)(false);
|
|
25432
|
+
const [editingDescription, setEditingDescription] = (0, import_react6.useState)(false);
|
|
25433
|
+
const [addingTag, setAddingTag] = (0, import_react6.useState)(false);
|
|
25434
|
+
const [addingAssignee, setAddingAssignee] = (0, import_react6.useState)(false);
|
|
25435
|
+
(0, import_react6.useEffect)(() => {
|
|
25385
25436
|
setTitle(issue?.title ?? "");
|
|
25386
25437
|
setDescription(issue?.description ?? "");
|
|
25387
25438
|
setTagName("");
|
|
@@ -25441,9 +25492,9 @@ var IssueDetails = ({
|
|
|
25441
25492
|
const availableAssignees = assignees.filter(
|
|
25442
25493
|
(assignee) => !issue?.assignees.some((issueAssignee) => issueAssignee.id === assignee.id)
|
|
25443
25494
|
);
|
|
25444
|
-
return /* @__PURE__ */ (0,
|
|
25445
|
-
/* @__PURE__ */ (0,
|
|
25446
|
-
/* @__PURE__ */ (0,
|
|
25495
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Aside, { children: issue ? /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
|
|
25496
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(FormHeader, { children: [
|
|
25497
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
25447
25498
|
"span",
|
|
25448
25499
|
{
|
|
25449
25500
|
style: {
|
|
@@ -25452,19 +25503,19 @@ var IssueDetails = ({
|
|
|
25452
25503
|
textTransform: "uppercase",
|
|
25453
25504
|
letterSpacing: "0.08em"
|
|
25454
25505
|
},
|
|
25455
|
-
children: issue.ref && /* @__PURE__ */ (0,
|
|
25506
|
+
children: issue.ref && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(CopyRef, { refValue: issue.ref })
|
|
25456
25507
|
}
|
|
25457
25508
|
),
|
|
25458
|
-
/* @__PURE__ */ (0,
|
|
25509
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Button, { variant: "ghost", onClick: onClose, children: "\xD7" })
|
|
25459
25510
|
] }),
|
|
25460
|
-
/* @__PURE__ */ (0,
|
|
25461
|
-
activeTab === "overview" && /* @__PURE__ */ (0,
|
|
25462
|
-
/* @__PURE__ */ (0,
|
|
25511
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Tabs, { tabs, activeTab, onChange: onChangeTab }),
|
|
25512
|
+
activeTab === "overview" && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
|
|
25513
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
25463
25514
|
Section,
|
|
25464
25515
|
{
|
|
25465
25516
|
first: true,
|
|
25466
25517
|
title: "Title",
|
|
25467
|
-
action: !issue.readonly && !editingTitle && /* @__PURE__ */ (0,
|
|
25518
|
+
action: !issue.readonly && !editingTitle && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
25468
25519
|
Button,
|
|
25469
25520
|
{
|
|
25470
25521
|
variant: "ghost",
|
|
@@ -25472,8 +25523,8 @@ var IssueDetails = ({
|
|
|
25472
25523
|
children: "edit"
|
|
25473
25524
|
}
|
|
25474
25525
|
),
|
|
25475
|
-
children: editingTitle ? /* @__PURE__ */ (0,
|
|
25476
|
-
/* @__PURE__ */ (0,
|
|
25526
|
+
children: editingTitle ? /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
|
|
25527
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
25477
25528
|
Input,
|
|
25478
25529
|
{
|
|
25479
25530
|
value: title,
|
|
@@ -25485,11 +25536,11 @@ var IssueDetails = ({
|
|
|
25485
25536
|
}
|
|
25486
25537
|
}
|
|
25487
25538
|
),
|
|
25488
|
-
/* @__PURE__ */ (0,
|
|
25489
|
-
/* @__PURE__ */ (0,
|
|
25490
|
-
/* @__PURE__ */ (0,
|
|
25539
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(ActionRow, { children: [
|
|
25540
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Button, { onClick: saveTitle, children: "save" }),
|
|
25541
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Button, { variant: "ghost", onClick: cancelTitle, children: "cancel" })
|
|
25491
25542
|
] })
|
|
25492
|
-
] }) : /* @__PURE__ */ (0,
|
|
25543
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
25493
25544
|
"div",
|
|
25494
25545
|
{
|
|
25495
25546
|
style: {
|
|
@@ -25504,11 +25555,11 @@ var IssueDetails = ({
|
|
|
25504
25555
|
)
|
|
25505
25556
|
}
|
|
25506
25557
|
),
|
|
25507
|
-
/* @__PURE__ */ (0,
|
|
25558
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
25508
25559
|
Section,
|
|
25509
25560
|
{
|
|
25510
25561
|
title: "Description",
|
|
25511
|
-
action: !issue.readonly && !editingDescription && /* @__PURE__ */ (0,
|
|
25562
|
+
action: !issue.readonly && !editingDescription && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
25512
25563
|
Button,
|
|
25513
25564
|
{
|
|
25514
25565
|
variant: "ghost",
|
|
@@ -25516,8 +25567,8 @@ var IssueDetails = ({
|
|
|
25516
25567
|
children: "edit"
|
|
25517
25568
|
}
|
|
25518
25569
|
),
|
|
25519
|
-
children: editingDescription ? /* @__PURE__ */ (0,
|
|
25520
|
-
/* @__PURE__ */ (0,
|
|
25570
|
+
children: editingDescription ? /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
|
|
25571
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
25521
25572
|
Textarea,
|
|
25522
25573
|
{
|
|
25523
25574
|
value: description,
|
|
@@ -25532,11 +25583,11 @@ var IssueDetails = ({
|
|
|
25532
25583
|
}
|
|
25533
25584
|
}
|
|
25534
25585
|
),
|
|
25535
|
-
/* @__PURE__ */ (0,
|
|
25536
|
-
/* @__PURE__ */ (0,
|
|
25537
|
-
/* @__PURE__ */ (0,
|
|
25586
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(ActionRow, { children: [
|
|
25587
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Button, { onClick: saveDescription, children: "save" }),
|
|
25588
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Button, { variant: "ghost", onClick: cancelDescription, children: "cancel" })
|
|
25538
25589
|
] })
|
|
25539
|
-
] }) : issue.description ? /* @__PURE__ */ (0,
|
|
25590
|
+
] }) : issue.description ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
25540
25591
|
"p",
|
|
25541
25592
|
{
|
|
25542
25593
|
style: {
|
|
@@ -25547,16 +25598,16 @@ var IssueDetails = ({
|
|
|
25547
25598
|
},
|
|
25548
25599
|
children: issue.description
|
|
25549
25600
|
}
|
|
25550
|
-
) : /* @__PURE__ */ (0,
|
|
25601
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Empty, { children: "No description" })
|
|
25551
25602
|
}
|
|
25552
25603
|
),
|
|
25553
|
-
/* @__PURE__ */ (0,
|
|
25604
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
25554
25605
|
Section,
|
|
25555
25606
|
{
|
|
25556
25607
|
title: "Tags",
|
|
25557
|
-
action: !issue.readonly && !addingTag && /* @__PURE__ */ (0,
|
|
25608
|
+
action: !issue.readonly && !addingTag && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Button, { variant: "ghost", onClick: () => setAddingTag(true), children: "+" }) || addingTag && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Button, { variant: "ghost", onClick: () => setAddingTag(false), children: "-" }),
|
|
25558
25609
|
children: [
|
|
25559
|
-
/* @__PURE__ */ (0,
|
|
25610
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ChipRow, { children: issue.tags.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Empty, { children: "No tags" }) : issue.tags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
25560
25611
|
Button,
|
|
25561
25612
|
{
|
|
25562
25613
|
variant: "chip",
|
|
@@ -25572,7 +25623,7 @@ var IssueDetails = ({
|
|
|
25572
25623
|
},
|
|
25573
25624
|
tag.id
|
|
25574
25625
|
)) }),
|
|
25575
|
-
addingTag && /* @__PURE__ */ (0,
|
|
25626
|
+
addingTag && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ChipRow, { children: availableTags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
25576
25627
|
Button,
|
|
25577
25628
|
{
|
|
25578
25629
|
variant: "chip",
|
|
@@ -25587,8 +25638,8 @@ var IssueDetails = ({
|
|
|
25587
25638
|
},
|
|
25588
25639
|
tag.id
|
|
25589
25640
|
)) }),
|
|
25590
|
-
addingTag && /* @__PURE__ */ (0,
|
|
25591
|
-
/* @__PURE__ */ (0,
|
|
25641
|
+
addingTag && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(AddRow, { children: [
|
|
25642
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
25592
25643
|
Input,
|
|
25593
25644
|
{
|
|
25594
25645
|
value: tagName,
|
|
@@ -25604,23 +25655,23 @@ var IssueDetails = ({
|
|
|
25604
25655
|
}
|
|
25605
25656
|
}
|
|
25606
25657
|
),
|
|
25607
|
-
/* @__PURE__ */ (0,
|
|
25658
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Button, { onClick: addTag, children: "add" })
|
|
25608
25659
|
] })
|
|
25609
25660
|
]
|
|
25610
25661
|
}
|
|
25611
25662
|
),
|
|
25612
|
-
/* @__PURE__ */ (0,
|
|
25663
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
25613
25664
|
Section,
|
|
25614
25665
|
{
|
|
25615
25666
|
title: "Assignees",
|
|
25616
|
-
action: !issue.readonly && !addingAssignee && /* @__PURE__ */ (0,
|
|
25667
|
+
action: !issue.readonly && !addingAssignee && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
25617
25668
|
Button,
|
|
25618
25669
|
{
|
|
25619
25670
|
variant: "ghost",
|
|
25620
25671
|
onClick: () => setAddingAssignee(true),
|
|
25621
25672
|
children: "+"
|
|
25622
25673
|
}
|
|
25623
|
-
) || addingAssignee && /* @__PURE__ */ (0,
|
|
25674
|
+
) || addingAssignee && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
25624
25675
|
Button,
|
|
25625
25676
|
{
|
|
25626
25677
|
variant: "ghost",
|
|
@@ -25629,7 +25680,7 @@ var IssueDetails = ({
|
|
|
25629
25680
|
}
|
|
25630
25681
|
),
|
|
25631
25682
|
children: [
|
|
25632
|
-
/* @__PURE__ */ (0,
|
|
25683
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ChipRow, { children: issue.assignees.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Empty, { children: "No assignees" }) : issue.assignees.map((assignee) => /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
25633
25684
|
Button,
|
|
25634
25685
|
{
|
|
25635
25686
|
variant: "chip",
|
|
@@ -25646,7 +25697,7 @@ var IssueDetails = ({
|
|
|
25646
25697
|
},
|
|
25647
25698
|
assignee.id
|
|
25648
25699
|
)) }),
|
|
25649
|
-
addingAssignee && /* @__PURE__ */ (0,
|
|
25700
|
+
addingAssignee && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ChipRow, { children: availableAssignees.map((assignee) => /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
25650
25701
|
Button,
|
|
25651
25702
|
{
|
|
25652
25703
|
variant: "chip",
|
|
@@ -25661,8 +25712,8 @@ var IssueDetails = ({
|
|
|
25661
25712
|
},
|
|
25662
25713
|
assignee.id
|
|
25663
25714
|
)) }),
|
|
25664
|
-
addingAssignee && /* @__PURE__ */ (0,
|
|
25665
|
-
/* @__PURE__ */ (0,
|
|
25715
|
+
addingAssignee && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(AddRow, { children: [
|
|
25716
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
25666
25717
|
Input,
|
|
25667
25718
|
{
|
|
25668
25719
|
value: assigneeName,
|
|
@@ -25678,21 +25729,21 @@ var IssueDetails = ({
|
|
|
25678
25729
|
}
|
|
25679
25730
|
}
|
|
25680
25731
|
),
|
|
25681
|
-
/* @__PURE__ */ (0,
|
|
25732
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Button, { onClick: addAssignee, children: "add" })
|
|
25682
25733
|
] })
|
|
25683
25734
|
]
|
|
25684
25735
|
}
|
|
25685
25736
|
),
|
|
25686
|
-
/* @__PURE__ */ (0,
|
|
25737
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
25687
25738
|
Section,
|
|
25688
25739
|
{
|
|
25689
25740
|
title: "Actions",
|
|
25690
|
-
action: issue.isClosed ? /* @__PURE__ */ (0,
|
|
25741
|
+
action: issue.isClosed ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Button, { onClick: () => onReopenIssue(issue.id), children: "reopen issue" }) : /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Button, { onClick: () => onCloseIssue(issue.id), children: "close issue" }),
|
|
25691
25742
|
children: ""
|
|
25692
25743
|
}
|
|
25693
25744
|
)
|
|
25694
25745
|
] }),
|
|
25695
|
-
activeTab === "comments" && /* @__PURE__ */ (0,
|
|
25746
|
+
activeTab === "comments" && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
25696
25747
|
IssueComments,
|
|
25697
25748
|
{
|
|
25698
25749
|
whoAmI,
|
|
@@ -25703,15 +25754,15 @@ var IssueDetails = ({
|
|
|
25703
25754
|
onDeleteComment
|
|
25704
25755
|
}
|
|
25705
25756
|
)
|
|
25706
|
-
] }) : /* @__PURE__ */ (0,
|
|
25757
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Empty, { children: "Select an issue" }) });
|
|
25707
25758
|
};
|
|
25708
25759
|
|
|
25709
25760
|
// source/gui/client/components/SwimlaneColumn.tsx
|
|
25710
|
-
var
|
|
25761
|
+
var import_react7 = __toESM(require_react(), 1);
|
|
25711
25762
|
|
|
25712
25763
|
// source/gui/client/components/IconComment.tsx
|
|
25713
|
-
var
|
|
25714
|
-
var IconComment = ({ size = 16 }) => /* @__PURE__ */ (0,
|
|
25764
|
+
var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1);
|
|
25765
|
+
var IconComment = ({ size = 16 }) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
25715
25766
|
"svg",
|
|
25716
25767
|
{
|
|
25717
25768
|
width: size,
|
|
@@ -25719,7 +25770,7 @@ var IconComment = ({ size = 16 }) => /* @__PURE__ */ (0, import_jsx_runtime14.js
|
|
|
25719
25770
|
viewBox: "0 0 16 16",
|
|
25720
25771
|
fill: "none",
|
|
25721
25772
|
"aria-hidden": "true",
|
|
25722
|
-
children: /* @__PURE__ */ (0,
|
|
25773
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
25723
25774
|
"path",
|
|
25724
25775
|
{
|
|
25725
25776
|
d: "M3.9 2.6h5.2a2.4 2.4 0 0 1 2.4 2.4v2.5a2.4 2.4 0 0 1-2.4 2.4H6.6l-1.8 2.1.2-2.1H3.9a2.4 2.4 0 0 1-2.4-2.4V5a2.4 2.4 0 0 1 2.4-2.4Z",
|
|
@@ -25734,7 +25785,7 @@ var IconComment = ({ size = 16 }) => /* @__PURE__ */ (0, import_jsx_runtime14.js
|
|
|
25734
25785
|
);
|
|
25735
25786
|
|
|
25736
25787
|
// source/gui/client/components/TicketCard.tsx
|
|
25737
|
-
var
|
|
25788
|
+
var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1);
|
|
25738
25789
|
var TicketCard = ({
|
|
25739
25790
|
ticket,
|
|
25740
25791
|
index,
|
|
@@ -25747,7 +25798,7 @@ var TicketCard = ({
|
|
|
25747
25798
|
onDropIssueAt
|
|
25748
25799
|
}) => {
|
|
25749
25800
|
const getVisualTargetIndex = (isAfterMiddle) => index + (isAfterMiddle ? 1 : 0);
|
|
25750
|
-
return /* @__PURE__ */ (0,
|
|
25801
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
|
|
25751
25802
|
"div",
|
|
25752
25803
|
{
|
|
25753
25804
|
draggable: !ticket.readonly,
|
|
@@ -25788,7 +25839,7 @@ var TicketCard = ({
|
|
|
25788
25839
|
border: `1px solid ${isSelected ? GUI_THEME.accent : "transparent"}`
|
|
25789
25840
|
},
|
|
25790
25841
|
children: [
|
|
25791
|
-
/* @__PURE__ */ (0,
|
|
25842
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
25792
25843
|
"div",
|
|
25793
25844
|
{
|
|
25794
25845
|
style: {
|
|
@@ -25801,7 +25852,7 @@ var TicketCard = ({
|
|
|
25801
25852
|
children: isSelected ? "\u276F" : index + 1
|
|
25802
25853
|
}
|
|
25803
25854
|
),
|
|
25804
|
-
/* @__PURE__ */ (0,
|
|
25855
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
|
|
25805
25856
|
"div",
|
|
25806
25857
|
{
|
|
25807
25858
|
style: {
|
|
@@ -25812,7 +25863,7 @@ var TicketCard = ({
|
|
|
25812
25863
|
gap: 12
|
|
25813
25864
|
},
|
|
25814
25865
|
children: [
|
|
25815
|
-
/* @__PURE__ */ (0,
|
|
25866
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
|
|
25816
25867
|
"div",
|
|
25817
25868
|
{
|
|
25818
25869
|
style: {
|
|
@@ -25823,7 +25874,7 @@ var TicketCard = ({
|
|
|
25823
25874
|
flex: 1
|
|
25824
25875
|
},
|
|
25825
25876
|
children: [
|
|
25826
|
-
/* @__PURE__ */ (0,
|
|
25877
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
25827
25878
|
"div",
|
|
25828
25879
|
{
|
|
25829
25880
|
style: {
|
|
@@ -25833,23 +25884,10 @@ var TicketCard = ({
|
|
|
25833
25884
|
fontWeight: 500,
|
|
25834
25885
|
fontSize: 12
|
|
25835
25886
|
},
|
|
25836
|
-
children: ticket.ref && /* @__PURE__ */ (0,
|
|
25837
|
-
"span",
|
|
25838
|
-
{
|
|
25839
|
-
style: {
|
|
25840
|
-
fontFamily: "monospace",
|
|
25841
|
-
marginRight: 6,
|
|
25842
|
-
color: GUI_THEME.dim
|
|
25843
|
-
},
|
|
25844
|
-
children: [
|
|
25845
|
-
"#",
|
|
25846
|
-
ticket.ref
|
|
25847
|
-
]
|
|
25848
|
-
}
|
|
25849
|
-
)
|
|
25887
|
+
children: ticket.ref && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: { marginRight: 6 }, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(CopyRef, { refValue: ticket.ref }) })
|
|
25850
25888
|
}
|
|
25851
25889
|
),
|
|
25852
|
-
/* @__PURE__ */ (0,
|
|
25890
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
25853
25891
|
"div",
|
|
25854
25892
|
{
|
|
25855
25893
|
style: {
|
|
@@ -25862,7 +25900,7 @@ var TicketCard = ({
|
|
|
25862
25900
|
children: ticket.title
|
|
25863
25901
|
}
|
|
25864
25902
|
),
|
|
25865
|
-
/* @__PURE__ */ (0,
|
|
25903
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
25866
25904
|
"div",
|
|
25867
25905
|
{
|
|
25868
25906
|
style: {
|
|
@@ -25871,7 +25909,7 @@ var TicketCard = ({
|
|
|
25871
25909
|
gap: 6,
|
|
25872
25910
|
alignItems: "center"
|
|
25873
25911
|
},
|
|
25874
|
-
children: ticket.tags.map((tag) => /* @__PURE__ */ (0,
|
|
25912
|
+
children: ticket.tags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
25875
25913
|
"span",
|
|
25876
25914
|
{
|
|
25877
25915
|
style: {
|
|
@@ -25891,7 +25929,7 @@ var TicketCard = ({
|
|
|
25891
25929
|
]
|
|
25892
25930
|
}
|
|
25893
25931
|
),
|
|
25894
|
-
/* @__PURE__ */ (0,
|
|
25932
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
25895
25933
|
"div",
|
|
25896
25934
|
{
|
|
25897
25935
|
style: {
|
|
@@ -25901,7 +25939,7 @@ var TicketCard = ({
|
|
|
25901
25939
|
flexShrink: 0,
|
|
25902
25940
|
paddingTop: 2
|
|
25903
25941
|
},
|
|
25904
|
-
children: commentCount > 0 && /* @__PURE__ */ (0,
|
|
25942
|
+
children: commentCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
|
|
25905
25943
|
"button",
|
|
25906
25944
|
{
|
|
25907
25945
|
type: "button",
|
|
@@ -25939,14 +25977,14 @@ var TicketCard = ({
|
|
|
25939
25977
|
event.currentTarget.style.transform = "translateY(0)";
|
|
25940
25978
|
},
|
|
25941
25979
|
children: [
|
|
25942
|
-
/* @__PURE__ */ (0,
|
|
25943
|
-
/* @__PURE__ */ (0,
|
|
25980
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(IconComment, {}),
|
|
25981
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { children: commentCount })
|
|
25944
25982
|
]
|
|
25945
25983
|
}
|
|
25946
25984
|
)
|
|
25947
25985
|
}
|
|
25948
25986
|
),
|
|
25949
|
-
ticket.assignees.length > 0 && /* @__PURE__ */ (0,
|
|
25987
|
+
ticket.assignees.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
25950
25988
|
"div",
|
|
25951
25989
|
{
|
|
25952
25990
|
style: {
|
|
@@ -25956,7 +25994,7 @@ var TicketCard = ({
|
|
|
25956
25994
|
paddingTop: 2,
|
|
25957
25995
|
marginTop: "-4px"
|
|
25958
25996
|
},
|
|
25959
|
-
children: ticket.assignees.map((assignee, idx) => /* @__PURE__ */ (0,
|
|
25997
|
+
children: ticket.assignees.map((assignee, idx) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(User, { user: assignee, index: idx, isFocus: isSelected }))
|
|
25960
25998
|
}
|
|
25961
25999
|
)
|
|
25962
26000
|
]
|
|
@@ -25968,7 +26006,7 @@ var TicketCard = ({
|
|
|
25968
26006
|
};
|
|
25969
26007
|
|
|
25970
26008
|
// source/gui/client/components/SwimlaneColumn.tsx
|
|
25971
|
-
var
|
|
26009
|
+
var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1);
|
|
25972
26010
|
var SwimlaneColumn = ({
|
|
25973
26011
|
swimlane,
|
|
25974
26012
|
selected,
|
|
@@ -25984,7 +26022,7 @@ var SwimlaneColumn = ({
|
|
|
25984
26022
|
onDragOverIssue,
|
|
25985
26023
|
onDragLeave
|
|
25986
26024
|
}) => {
|
|
25987
|
-
return /* @__PURE__ */ (0,
|
|
26025
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
25988
26026
|
Panel,
|
|
25989
26027
|
{
|
|
25990
26028
|
as: "section",
|
|
@@ -26024,7 +26062,7 @@ var SwimlaneColumn = ({
|
|
|
26024
26062
|
onDragLeave();
|
|
26025
26063
|
},
|
|
26026
26064
|
children: [
|
|
26027
|
-
/* @__PURE__ */ (0,
|
|
26065
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
26028
26066
|
"header",
|
|
26029
26067
|
{
|
|
26030
26068
|
style: {
|
|
@@ -26035,7 +26073,7 @@ var SwimlaneColumn = ({
|
|
|
26035
26073
|
alignItems: "center"
|
|
26036
26074
|
},
|
|
26037
26075
|
children: [
|
|
26038
|
-
/* @__PURE__ */ (0,
|
|
26076
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
26039
26077
|
"div",
|
|
26040
26078
|
{
|
|
26041
26079
|
style: {
|
|
@@ -26044,30 +26082,30 @@ var SwimlaneColumn = ({
|
|
|
26044
26082
|
gap: 8
|
|
26045
26083
|
},
|
|
26046
26084
|
children: [
|
|
26047
|
-
/* @__PURE__ */ (0,
|
|
26085
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
26048
26086
|
"span",
|
|
26049
26087
|
{
|
|
26050
26088
|
style: { color: selected ? GUI_THEME.accent : GUI_THEME.secondary },
|
|
26051
26089
|
children: selected ? "\u276F" : " "
|
|
26052
26090
|
}
|
|
26053
26091
|
),
|
|
26054
|
-
/* @__PURE__ */ (0,
|
|
26092
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
26055
26093
|
"strong",
|
|
26056
26094
|
{
|
|
26057
26095
|
style: { color: selected ? GUI_THEME.accent : GUI_THEME.primary },
|
|
26058
26096
|
children: swimlane.title
|
|
26059
26097
|
}
|
|
26060
26098
|
),
|
|
26061
|
-
/* @__PURE__ */ (0,
|
|
26099
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { style: { color: GUI_THEME.dim }, children: [
|
|
26062
26100
|
"(",
|
|
26063
26101
|
swimlane.issues.length,
|
|
26064
26102
|
")"
|
|
26065
26103
|
] }),
|
|
26066
|
-
swimlane.readonly && /* @__PURE__ */ (0,
|
|
26104
|
+
swimlane.readonly && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: "\u{1F512}" })
|
|
26067
26105
|
]
|
|
26068
26106
|
}
|
|
26069
26107
|
),
|
|
26070
|
-
/* @__PURE__ */ (0,
|
|
26108
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
26071
26109
|
Button,
|
|
26072
26110
|
{
|
|
26073
26111
|
variant: "ghost",
|
|
@@ -26080,9 +26118,9 @@ var SwimlaneColumn = ({
|
|
|
26080
26118
|
]
|
|
26081
26119
|
}
|
|
26082
26120
|
),
|
|
26083
|
-
/* @__PURE__ */ (0,
|
|
26084
|
-
dropIndex === 0 && /* @__PURE__ */ (0,
|
|
26085
|
-
/* @__PURE__ */ (0,
|
|
26121
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { overflow: "auto", paddingTop: 4, flex: 1 }, children: swimlane.issues.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
26122
|
+
dropIndex === 0 && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(DropIndicator, {}),
|
|
26123
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
26086
26124
|
"div",
|
|
26087
26125
|
{
|
|
26088
26126
|
style: {
|
|
@@ -26094,10 +26132,10 @@ var SwimlaneColumn = ({
|
|
|
26094
26132
|
children: "Drop issue here"
|
|
26095
26133
|
}
|
|
26096
26134
|
)
|
|
26097
|
-
] }) : /* @__PURE__ */ (0,
|
|
26098
|
-
swimlane.issues.map((ticket, index) => /* @__PURE__ */ (0,
|
|
26099
|
-
dropIndex === index && /* @__PURE__ */ (0,
|
|
26100
|
-
/* @__PURE__ */ (0,
|
|
26135
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
26136
|
+
swimlane.issues.map((ticket, index) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_react7.default.Fragment, { children: [
|
|
26137
|
+
dropIndex === index && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(DropIndicator, {}),
|
|
26138
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
26101
26139
|
TicketCard,
|
|
26102
26140
|
{
|
|
26103
26141
|
ticket,
|
|
@@ -26115,7 +26153,7 @@ var SwimlaneColumn = ({
|
|
|
26115
26153
|
}
|
|
26116
26154
|
)
|
|
26117
26155
|
] }, ticket.id)),
|
|
26118
|
-
dropIndex === swimlane.issues.length && /* @__PURE__ */ (0,
|
|
26156
|
+
dropIndex === swimlane.issues.length && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(DropIndicator, {})
|
|
26119
26157
|
] }) })
|
|
26120
26158
|
]
|
|
26121
26159
|
}
|
|
@@ -26254,8 +26292,8 @@ var updateIssueInGuiState = (state, issueId, updateIssue) => ({
|
|
|
26254
26292
|
});
|
|
26255
26293
|
|
|
26256
26294
|
// source/gui/client/App.tsx
|
|
26257
|
-
var
|
|
26258
|
-
var DropIndicator = () => /* @__PURE__ */ (0,
|
|
26295
|
+
var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1);
|
|
26296
|
+
var DropIndicator = () => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
26259
26297
|
"div",
|
|
26260
26298
|
{
|
|
26261
26299
|
style: {
|
|
@@ -26270,20 +26308,20 @@ var DropIndicator = () => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
|
26270
26308
|
var App = () => {
|
|
26271
26309
|
const { boardId, issueId } = useParams();
|
|
26272
26310
|
const [searchParams, setSearchParams] = useSearchParams();
|
|
26273
|
-
const [connected, setConnected] = (0,
|
|
26274
|
-
const [syncStatus, setSyncStatus] = (0,
|
|
26311
|
+
const [connected, setConnected] = (0, import_react8.useState)(false);
|
|
26312
|
+
const [syncStatus, setSyncStatus] = (0, import_react8.useState)({
|
|
26275
26313
|
status: "synced",
|
|
26276
26314
|
msg: "idle"
|
|
26277
26315
|
});
|
|
26278
|
-
const [state, setState] = (0,
|
|
26279
|
-
const [dragOverSwimlaneId, setDragOverSwimlaneId] = (0,
|
|
26316
|
+
const [state, setState] = (0, import_react8.useState)(null);
|
|
26317
|
+
const [dragOverSwimlaneId, setDragOverSwimlaneId] = (0, import_react8.useState)(
|
|
26280
26318
|
null
|
|
26281
26319
|
);
|
|
26282
|
-
const [dropTarget, setDropTarget] = (0,
|
|
26283
|
-
const [boardMenuOpen, setBoardMenuOpen] = (0,
|
|
26284
|
-
const [createIssueModal, setCreateIssueModal] = (0,
|
|
26285
|
-
const boardMenuRef = (0,
|
|
26286
|
-
const socketRef = (0,
|
|
26320
|
+
const [dropTarget, setDropTarget] = (0, import_react8.useState)(null);
|
|
26321
|
+
const [boardMenuOpen, setBoardMenuOpen] = (0, import_react8.useState)(false);
|
|
26322
|
+
const [createIssueModal, setCreateIssueModal] = (0, import_react8.useState)(null);
|
|
26323
|
+
const boardMenuRef = (0, import_react8.useRef)(null);
|
|
26324
|
+
const socketRef = (0, import_react8.useRef)(null);
|
|
26287
26325
|
const selectedTab = searchParams.get("tab") === "comments" ? "comments" : "overview";
|
|
26288
26326
|
const navigate = useNavigate();
|
|
26289
26327
|
const selectedBoard = (state && boardId ? findBoard(state, boardId) : null) ?? state?.boards[0] ?? null;
|
|
@@ -26297,7 +26335,7 @@ var App = () => {
|
|
|
26297
26335
|
const requestState = () => {
|
|
26298
26336
|
socketRef.current?.send(JSON.stringify({ type: "state:get" }));
|
|
26299
26337
|
};
|
|
26300
|
-
(0,
|
|
26338
|
+
(0, import_react8.useEffect)(() => {
|
|
26301
26339
|
const socket = new WebSocket(
|
|
26302
26340
|
`ws://${window.location.host}/ws${boardId ? `?boardId=${boardId}` : ""}`
|
|
26303
26341
|
);
|
|
@@ -26341,12 +26379,12 @@ var App = () => {
|
|
|
26341
26379
|
socket.close();
|
|
26342
26380
|
};
|
|
26343
26381
|
}, [boardId, navigate]);
|
|
26344
|
-
(0,
|
|
26382
|
+
(0, import_react8.useEffect)(() => {
|
|
26345
26383
|
if (!boardId && state?.boards[0]) {
|
|
26346
26384
|
void navigate(`/board/${state.boards[0].ref}`, { replace: true });
|
|
26347
26385
|
}
|
|
26348
26386
|
}, [boardId, state, navigate]);
|
|
26349
|
-
(0,
|
|
26387
|
+
(0, import_react8.useEffect)(() => {
|
|
26350
26388
|
const close = (event) => {
|
|
26351
26389
|
if (boardMenuRef.current && !boardMenuRef.current.contains(event.target)) {
|
|
26352
26390
|
setBoardMenuOpen(false);
|
|
@@ -26548,7 +26586,7 @@ var App = () => {
|
|
|
26548
26586
|
});
|
|
26549
26587
|
send("issue:comment:delete", { commentId });
|
|
26550
26588
|
};
|
|
26551
|
-
return /* @__PURE__ */ (0,
|
|
26589
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
26552
26590
|
"div",
|
|
26553
26591
|
{
|
|
26554
26592
|
style: {
|
|
@@ -26560,8 +26598,8 @@ var App = () => {
|
|
|
26560
26598
|
flexDirection: "column"
|
|
26561
26599
|
},
|
|
26562
26600
|
children: [
|
|
26563
|
-
/* @__PURE__ */ (0,
|
|
26564
|
-
/* @__PURE__ */ (0,
|
|
26601
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Header, { state, connected, syncStatus }),
|
|
26602
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
26565
26603
|
"div",
|
|
26566
26604
|
{
|
|
26567
26605
|
style: {
|
|
@@ -26570,8 +26608,8 @@ var App = () => {
|
|
|
26570
26608
|
overflow: "hidden"
|
|
26571
26609
|
},
|
|
26572
26610
|
children: [
|
|
26573
|
-
/* @__PURE__ */ (0,
|
|
26574
|
-
/* @__PURE__ */ (0,
|
|
26611
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("main", { style: { padding: "0 30px 30px 30px", overflow: "auto", flex: 1 }, children: [
|
|
26612
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { style: { padding: "20px 10px" }, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
26575
26613
|
Dropdown,
|
|
26576
26614
|
{
|
|
26577
26615
|
label: "Board:",
|
|
@@ -26587,7 +26625,7 @@ var App = () => {
|
|
|
26587
26625
|
onSelect: selectBoard
|
|
26588
26626
|
}
|
|
26589
26627
|
) }),
|
|
26590
|
-
/* @__PURE__ */ (0,
|
|
26628
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { style: { display: "flex", gap: 8 }, children: selectedBoard?.swimlanes.map((swimlane) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
26591
26629
|
SwimlaneColumn,
|
|
26592
26630
|
{
|
|
26593
26631
|
swimlane,
|
|
@@ -26607,7 +26645,7 @@ var App = () => {
|
|
|
26607
26645
|
swimlane.id
|
|
26608
26646
|
)) })
|
|
26609
26647
|
] }),
|
|
26610
|
-
selectedIssue && state?.user && /* @__PURE__ */ (0,
|
|
26648
|
+
selectedIssue && state?.user && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
26611
26649
|
IssueDetails,
|
|
26612
26650
|
{
|
|
26613
26651
|
whoAmI: state.user,
|
|
@@ -26633,7 +26671,7 @@ var App = () => {
|
|
|
26633
26671
|
]
|
|
26634
26672
|
}
|
|
26635
26673
|
),
|
|
26636
|
-
createIssueModal && /* @__PURE__ */ (0,
|
|
26674
|
+
createIssueModal && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
26637
26675
|
CreateIssueModal,
|
|
26638
26676
|
{
|
|
26639
26677
|
title: createIssueModal.title,
|
|
@@ -26648,14 +26686,14 @@ var App = () => {
|
|
|
26648
26686
|
};
|
|
26649
26687
|
|
|
26650
26688
|
// source/gui/client/main.tsx
|
|
26651
|
-
var
|
|
26689
|
+
var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1);
|
|
26652
26690
|
(0, import_client.createRoot)(document.getElementById("root")).render(
|
|
26653
|
-
/* @__PURE__ */ (0,
|
|
26654
|
-
/* @__PURE__ */ (0,
|
|
26655
|
-
/* @__PURE__ */ (0,
|
|
26656
|
-
/* @__PURE__ */ (0,
|
|
26657
|
-
/* @__PURE__ */ (0,
|
|
26658
|
-
/* @__PURE__ */ (0,
|
|
26691
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(BrowserRouter, { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Routes, { children: [
|
|
26692
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Route, { path: "/", element: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(App, {}) }),
|
|
26693
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Route, { path: "/board/:boardId", element: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(App, {}) }),
|
|
26694
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Route, { path: "/board/:boardId/issue/:issueId", element: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(App, {}) }),
|
|
26695
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Route, { path: "/board/:boardId/:issueId", element: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(App, {}) }),
|
|
26696
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Route, { path: "*", element: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Navigate, { to: "/", replace: true }) })
|
|
26659
26697
|
] }) })
|
|
26660
26698
|
);
|
|
26661
26699
|
/*! Bundled license information:
|