@industry-theme/backlogmd-kanban-panel 1.0.29 → 1.0.31
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/panels/KanbanPanel.stories.d.ts.map +1 -1
- package/dist/panels/TaskDetailPanel.d.ts +13 -1
- package/dist/panels/TaskDetailPanel.d.ts.map +1 -1
- package/dist/panels/TaskDetailPanel.stories.d.ts +2 -1
- package/dist/panels/TaskDetailPanel.stories.d.ts.map +1 -1
- package/dist/panels/kanban/components/KanbanColumn.d.ts.map +1 -1
- package/dist/panels/kanban/components/TaskCard.d.ts +1 -2
- package/dist/panels/kanban/components/TaskCard.d.ts.map +1 -1
- package/dist/panels/kanban/mocks/mockData.d.ts +18 -6
- package/dist/panels/kanban/mocks/mockData.d.ts.map +1 -1
- package/dist/panels.bundle.js +52 -33
- package/dist/panels.bundle.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KanbanPanel.stories.d.ts","sourceRoot":"","sources":["../../src/panels/KanbanPanel.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"KanbanPanel.stories.d.ts","sourceRoot":"","sources":["../../src/panels/KanbanPanel.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAe5D,QAAA,MAAM,IAAI;;;;;;;;;;;;CAkB0B,CAAC;AAErC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAqKnC,eAAO,MAAM,UAAU,EAAE,KA0BxB,CAAC;AAKF,eAAO,MAAM,YAAY,EAAE,KAc1B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAc5B,CAAC"}
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { PanelComponentProps } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Configuration options for TaskDetailPanel
|
|
5
|
+
*/
|
|
6
|
+
export interface TaskDetailPanelConfig {
|
|
7
|
+
editable?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Extended props for TaskDetailPanel that includes optional config
|
|
11
|
+
*/
|
|
12
|
+
export interface TaskDetailPanelProps extends PanelComponentProps {
|
|
13
|
+
config?: TaskDetailPanelConfig;
|
|
14
|
+
}
|
|
3
15
|
/**
|
|
4
16
|
* TaskDetailPanel - A panel for viewing task details from Backlog.md
|
|
5
17
|
*
|
|
@@ -10,5 +22,5 @@ import type { PanelComponentProps } from '../types';
|
|
|
10
22
|
*
|
|
11
23
|
* Listens for 'task:selected' events from other panels (e.g., KanbanPanel)
|
|
12
24
|
*/
|
|
13
|
-
export declare const TaskDetailPanel: React.FC<
|
|
25
|
+
export declare const TaskDetailPanel: React.FC<TaskDetailPanelProps>;
|
|
14
26
|
//# sourceMappingURL=TaskDetailPanel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskDetailPanel.d.ts","sourceRoot":"","sources":["../../src/panels/TaskDetailPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,OAAO,KAAK,EAAE,mBAAmB,EAAqB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"TaskDetailPanel.d.ts","sourceRoot":"","sources":["../../src/panels/TaskDetailPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,OAAO,KAAK,EAAE,mBAAmB,EAAqB,MAAM,UAAU,CAAC;AAuEvE;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC/D,MAAM,CAAC,EAAE,qBAAqB,CAAC;CAChC;AA0ED;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAsR1D,CAAC"}
|
|
@@ -2,11 +2,12 @@ import React from 'react';
|
|
|
2
2
|
import type { StoryObj } from '@storybook/react-vite';
|
|
3
3
|
declare const meta: {
|
|
4
4
|
title: string;
|
|
5
|
-
component: React.FC<import("
|
|
5
|
+
component: React.FC<import("./TaskDetailPanel").TaskDetailPanelProps>;
|
|
6
6
|
parameters: {
|
|
7
7
|
layout: string;
|
|
8
8
|
};
|
|
9
9
|
decorators: ((Story: import("storybook/internal/csf").PartialStoryFn<import("@storybook/react").ReactRenderer, {
|
|
10
|
+
config?: import("./TaskDetailPanel").TaskDetailPanelConfig | undefined;
|
|
10
11
|
context: import("@principal-ade/panel-framework-core").PanelContextValue;
|
|
11
12
|
actions: import("@principal-ade/panel-framework-core").PanelActions;
|
|
12
13
|
events: import("@principal-ade/panel-framework-core").PanelEventEmitter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskDetailPanel.stories.d.ts","sourceRoot":"","sources":["../../src/panels/TaskDetailPanel.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAW5D,QAAA,MAAM,IAAI
|
|
1
|
+
{"version":3,"file":"TaskDetailPanel.stories.d.ts","sourceRoot":"","sources":["../../src/panels/TaskDetailPanel.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAW5D,QAAA,MAAM,IAAI;;;;;;;;;;;;;CAkB8B,CAAC;AAEzC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAkFnC,eAAO,MAAM,UAAU,EAAE,KAaxB,CAAC;AAQF,eAAO,MAAM,gBAAgB,EAAE,KAoB9B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KA6B9B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KA4BzB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KA2B5B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KanbanColumn.d.ts","sourceRoot":"","sources":["../../../../src/panels/kanban/components/KanbanColumn.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,UAAU,iBAAiB;IACzB,mDAAmD;IACnD,QAAQ,EAAE,YAAY,CAAC;IACvB,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oDAAoD;IACpD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,sEAAsE;IACtE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"KanbanColumn.d.ts","sourceRoot":"","sources":["../../../../src/panels/kanban/components/KanbanColumn.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,UAAU,iBAAiB;IACzB,mDAAmD;IACnD,QAAQ,EAAE,YAAY,CAAC;IACvB,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oDAAoD;IACpD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,sEAAsE;IACtE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAyKpD,CAAC"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { Task } from '@backlog-md/core';
|
|
3
|
-
interface TaskCardProps {
|
|
3
|
+
export interface TaskCardProps {
|
|
4
4
|
task: Task;
|
|
5
5
|
onClick?: (task: Task) => void;
|
|
6
6
|
isDragOverlay?: boolean;
|
|
7
7
|
isSelected?: boolean;
|
|
8
8
|
}
|
|
9
9
|
export declare const TaskCard: React.FC<TaskCardProps>;
|
|
10
|
-
export {};
|
|
11
10
|
//# sourceMappingURL=TaskCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskCard.d.ts","sourceRoot":"","sources":["../../../../src/panels/kanban/components/TaskCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,
|
|
1
|
+
{"version":3,"file":"TaskCard.d.ts","sourceRoot":"","sources":["../../../../src/panels/kanban/components/TaskCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAyL5C,CAAC"}
|
|
@@ -1,13 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Mock Data Generator for Kanban Panel Testing
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* for testing
|
|
4
|
+
* Provides raw markdown file contents from the Backlog.md CLI project.
|
|
5
|
+
* These are passed to Core for parsing, testing the actual extraction logic.
|
|
6
6
|
*/
|
|
7
7
|
import type { Task } from '@backlog-md/core';
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
9
|
+
* Raw markdown file contents from Backlog.md project
|
|
10
|
+
* The Core instance will parse these to extract description, acceptance criteria, etc.
|
|
11
|
+
*/
|
|
12
|
+
export declare const rawTaskMarkdownFiles: Record<string, string>;
|
|
13
|
+
/**
|
|
14
|
+
* Get file paths for all mock task files
|
|
15
|
+
*/
|
|
16
|
+
export declare function getMockTaskFilePaths(): string[];
|
|
17
|
+
/**
|
|
18
|
+
* Get raw markdown content for a file path
|
|
19
|
+
*/
|
|
20
|
+
export declare function getMockFileContent(filePath: string): string | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Legacy function - returns empty array since we now use raw markdown
|
|
23
|
+
* @deprecated Use rawTaskMarkdownFiles directly
|
|
11
24
|
*/
|
|
12
25
|
export declare function generateMockTasks(): Task[];
|
|
13
26
|
/**
|
|
@@ -30,7 +43,7 @@ export declare function getMockPanelConfig(): {
|
|
|
30
43
|
enableEdit: boolean;
|
|
31
44
|
enableCreate: boolean;
|
|
32
45
|
};
|
|
33
|
-
/** Mock milestone data structure
|
|
46
|
+
/** Mock milestone data structure */
|
|
34
47
|
export interface MockMilestone {
|
|
35
48
|
id: string;
|
|
36
49
|
title: string;
|
|
@@ -41,7 +54,6 @@ export interface MockMilestone {
|
|
|
41
54
|
}
|
|
42
55
|
/**
|
|
43
56
|
* Generate mock milestones for testing the milestone view
|
|
44
|
-
* Note: Milestone files must be named m-{number}.md (e.g., m-0.md, m-1.md)
|
|
45
57
|
*/
|
|
46
58
|
export declare function generateMockMilestones(): MockMilestone[];
|
|
47
59
|
//# sourceMappingURL=mockData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mockData.d.ts","sourceRoot":"","sources":["../../../../src/panels/kanban/mocks/mockData.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"mockData.d.ts","sourceRoot":"","sources":["../../../../src/panels/kanban/mocks/mockData.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAgavD,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAE/C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEvE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,EAAE,CAG1C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C;AAED;;GAEG;AACH,wBAAgB,kBAAkB;;;;;;;;;;;;EAcjC;AAED,oCAAoC;AACpC,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,aAAa,EAAE,CAmCxD"}
|
package/dist/panels.bundle.js
CHANGED
|
@@ -4225,15 +4225,24 @@ function parseAcceptanceCriteria(content2) {
|
|
|
4225
4225
|
return criteria;
|
|
4226
4226
|
}
|
|
4227
4227
|
function extractDescription(content2, title) {
|
|
4228
|
+
const descriptionSection = extractSection(content2, "Description");
|
|
4229
|
+
if (descriptionSection) {
|
|
4230
|
+
return stripHtmlComments(descriptionSection).trim();
|
|
4231
|
+
}
|
|
4228
4232
|
let body = content2;
|
|
4229
4233
|
if (title) {
|
|
4230
|
-
body = body.replace(new RegExp(`^#\\s+${escapeRegex(title)}\\s
|
|
4234
|
+
body = body.replace(new RegExp(`^#\\s+${escapeRegex(title)}\\s*\\n?`, "m"), "");
|
|
4235
|
+
}
|
|
4236
|
+
const firstSectionMatch = body.match(/^##\s+/m);
|
|
4237
|
+
if (firstSectionMatch && firstSectionMatch.index !== void 0) {
|
|
4238
|
+
body = body.slice(0, firstSectionMatch.index);
|
|
4231
4239
|
}
|
|
4232
|
-
body = body
|
|
4233
|
-
body = body.replace(/^##\s+Implementation Plan[\s\S]*?(?=^##|$)/m, "");
|
|
4234
|
-
body = body.replace(/^##\s+Implementation Notes[\s\S]*?(?=^##|$)/m, "");
|
|
4240
|
+
body = stripHtmlComments(body);
|
|
4235
4241
|
return body.trim();
|
|
4236
4242
|
}
|
|
4243
|
+
function stripHtmlComments(content2) {
|
|
4244
|
+
return content2.replace(/<!--[\s\S]*?-->/g, "").trim();
|
|
4245
|
+
}
|
|
4237
4246
|
function extractIdFromPath(filePath) {
|
|
4238
4247
|
const filename = filePath.split("/").pop() || "";
|
|
4239
4248
|
const match = filename.match(/^(?:task-)?(\d+(?:\.\d+)?)\s*-/);
|
|
@@ -6150,17 +6159,17 @@ const TaskCard = ({
|
|
|
6150
6159
|
case "medium":
|
|
6151
6160
|
return theme2.colors.warning;
|
|
6152
6161
|
case "low":
|
|
6153
|
-
return theme2.colors.
|
|
6162
|
+
return theme2.colors.primary;
|
|
6154
6163
|
default:
|
|
6155
|
-
return theme2.colors.
|
|
6164
|
+
return theme2.colors.primary;
|
|
6156
6165
|
}
|
|
6157
6166
|
};
|
|
6158
6167
|
const style2 = {
|
|
6159
6168
|
flexShrink: 0,
|
|
6160
|
-
background:
|
|
6169
|
+
background: theme2.colors.surface,
|
|
6161
6170
|
borderRadius: theme2.radii[2],
|
|
6162
6171
|
padding: "12px",
|
|
6163
|
-
border: `1px solid ${
|
|
6172
|
+
border: `1px solid ${theme2.colors.border}`,
|
|
6164
6173
|
borderLeft: `4px solid ${getPriorityColor(task.priority)}`,
|
|
6165
6174
|
cursor: isDragOverlay ? "grabbing" : "grab",
|
|
6166
6175
|
transition: isDragging ? "none" : "all 0.2s ease",
|
|
@@ -6170,10 +6179,6 @@ const TaskCard = ({
|
|
|
6170
6179
|
// When dragging, the original card stays in place but becomes a placeholder
|
|
6171
6180
|
// The DragOverlay handles the visual movement
|
|
6172
6181
|
opacity: isDragging ? 0.4 : 1,
|
|
6173
|
-
// Selected card styling
|
|
6174
|
-
...isSelected && !isDragOverlay && {
|
|
6175
|
-
boxShadow: `0 0 0 1px ${theme2.colors.primary}`
|
|
6176
|
-
},
|
|
6177
6182
|
// Overlay card styling
|
|
6178
6183
|
...isDragOverlay && {
|
|
6179
6184
|
boxShadow: `0 8px 16px rgba(0, 0, 0, 0.15)`,
|
|
@@ -6198,14 +6203,20 @@ const TaskCard = ({
|
|
|
6198
6203
|
...attributes,
|
|
6199
6204
|
onMouseEnter: (e) => {
|
|
6200
6205
|
if (!isDragging && !isDragOverlay) {
|
|
6201
|
-
e.currentTarget.
|
|
6202
|
-
|
|
6206
|
+
const desc = e.currentTarget.querySelector("p");
|
|
6207
|
+
if (desc) {
|
|
6208
|
+
desc.style.maxHeight = "20em";
|
|
6209
|
+
}
|
|
6210
|
+
e.currentTarget.style.borderLeft = `4px solid ${getPriorityColor(task.priority)}`;
|
|
6203
6211
|
}
|
|
6204
6212
|
},
|
|
6205
6213
|
onMouseLeave: (e) => {
|
|
6206
6214
|
if (!isDragging && !isDragOverlay) {
|
|
6207
|
-
e.currentTarget.
|
|
6208
|
-
|
|
6215
|
+
const desc = e.currentTarget.querySelector("p");
|
|
6216
|
+
if (desc) {
|
|
6217
|
+
desc.style.maxHeight = "2.8em";
|
|
6218
|
+
}
|
|
6219
|
+
e.currentTarget.style.borderLeft = `4px solid ${getPriorityColor(task.priority)}`;
|
|
6209
6220
|
}
|
|
6210
6221
|
},
|
|
6211
6222
|
children: [
|
|
@@ -6215,7 +6226,7 @@ const TaskCard = ({
|
|
|
6215
6226
|
style: {
|
|
6216
6227
|
margin: "0 0 8px 0",
|
|
6217
6228
|
fontSize: theme2.fontSizes[2],
|
|
6218
|
-
color: theme2.colors.text,
|
|
6229
|
+
color: isSelected ? getPriorityColor(task.priority) : theme2.colors.text,
|
|
6219
6230
|
fontWeight: theme2.fontWeights.medium
|
|
6220
6231
|
},
|
|
6221
6232
|
children: displayTitle
|
|
@@ -6229,11 +6240,10 @@ const TaskCard = ({
|
|
|
6229
6240
|
fontSize: theme2.fontSizes[1],
|
|
6230
6241
|
color: theme2.colors.textSecondary,
|
|
6231
6242
|
overflow: "hidden",
|
|
6232
|
-
|
|
6233
|
-
|
|
6234
|
-
|
|
6235
|
-
|
|
6236
|
-
lineHeight: "1.4"
|
|
6243
|
+
lineHeight: "1.4",
|
|
6244
|
+
maxHeight: "2.8em",
|
|
6245
|
+
// 2 lines (1.4 * 2)
|
|
6246
|
+
transition: "max-height 0.3s ease"
|
|
6237
6247
|
},
|
|
6238
6248
|
children: task.description
|
|
6239
6249
|
}
|
|
@@ -6344,7 +6354,7 @@ const KanbanColumn = ({
|
|
|
6344
6354
|
transition: "background-color 0.2s ease, border 0.2s ease"
|
|
6345
6355
|
},
|
|
6346
6356
|
children: [
|
|
6347
|
-
/* @__PURE__ */ jsxs(
|
|
6357
|
+
!fullWidth && /* @__PURE__ */ jsxs(
|
|
6348
6358
|
"div",
|
|
6349
6359
|
{
|
|
6350
6360
|
style: {
|
|
@@ -49318,7 +49328,8 @@ var createIndustryMarkdownComponents = ({
|
|
|
49318
49328
|
enableHtmlPopout,
|
|
49319
49329
|
slideHeaderMarginTopOverride,
|
|
49320
49330
|
index: index2,
|
|
49321
|
-
repositoryInfo
|
|
49331
|
+
repositoryInfo,
|
|
49332
|
+
editable = false
|
|
49322
49333
|
}) => {
|
|
49323
49334
|
const getLuminance = (hex) => {
|
|
49324
49335
|
const rgb = hex.replace("#", "").match(/.{2}/g);
|
|
@@ -49450,19 +49461,20 @@ var createIndustryMarkdownComponents = ({
|
|
|
49450
49461
|
checked: isChecked,
|
|
49451
49462
|
onChange: handleChange,
|
|
49452
49463
|
onClick: (e) => e.stopPropagation(),
|
|
49464
|
+
disabled: !editable,
|
|
49453
49465
|
style: {
|
|
49454
49466
|
marginRight: theme2.space[2],
|
|
49455
49467
|
marginTop: theme2.space[1],
|
|
49456
49468
|
width: "16px",
|
|
49457
49469
|
height: "16px",
|
|
49458
|
-
cursor: "pointer"
|
|
49470
|
+
cursor: editable ? "pointer" : "default"
|
|
49459
49471
|
},
|
|
49460
49472
|
id
|
|
49461
49473
|
}), /* @__PURE__ */ React2__default.createElement("label", {
|
|
49462
49474
|
htmlFor: id,
|
|
49463
49475
|
style: {
|
|
49464
49476
|
flex: 1,
|
|
49465
|
-
cursor: "pointer",
|
|
49477
|
+
cursor: editable ? "pointer" : "default",
|
|
49466
49478
|
color: isChecked ? theme2.colors.textMuted : "inherit",
|
|
49467
49479
|
lineHeight: theme2.lineHeights.relaxed
|
|
49468
49480
|
}
|
|
@@ -50544,7 +50556,8 @@ var IndustryMarkdownSlide = React2__default.memo(function IndustryMarkdownSlide2
|
|
|
50544
50556
|
maxScreenWidth: _maxScreenWidth,
|
|
50545
50557
|
enableKeyboardScrolling = true,
|
|
50546
50558
|
keyboardScrollConfig,
|
|
50547
|
-
repositoryInfo
|
|
50559
|
+
repositoryInfo,
|
|
50560
|
+
editable = false
|
|
50548
50561
|
}) {
|
|
50549
50562
|
const slideRef = useRef(null);
|
|
50550
50563
|
const scrollPositionsRef = useRef(/* @__PURE__ */ new Map());
|
|
@@ -50900,7 +50913,8 @@ var IndustryMarkdownSlide = React2__default.memo(function IndustryMarkdownSlide2
|
|
|
50900
50913
|
enableHtmlPopout,
|
|
50901
50914
|
slideHeaderMarginTopOverride,
|
|
50902
50915
|
index: chunkIndex,
|
|
50903
|
-
repositoryInfo
|
|
50916
|
+
repositoryInfo,
|
|
50917
|
+
editable
|
|
50904
50918
|
});
|
|
50905
50919
|
if (searchQuery) {
|
|
50906
50920
|
return {
|
|
@@ -50933,7 +50947,8 @@ var IndustryMarkdownSlide = React2__default.memo(function IndustryMarkdownSlide2
|
|
|
50933
50947
|
enableHtmlPopout,
|
|
50934
50948
|
slideHeaderMarginTopOverride,
|
|
50935
50949
|
repositoryInfo,
|
|
50936
|
-
searchQuery
|
|
50950
|
+
searchQuery,
|
|
50951
|
+
editable
|
|
50937
50952
|
]);
|
|
50938
50953
|
return /* @__PURE__ */ React2__default.createElement("div", {
|
|
50939
50954
|
className: "markdown-slide",
|
|
@@ -52718,7 +52733,8 @@ var DocumentView = ({
|
|
|
52718
52733
|
repositoryInfo,
|
|
52719
52734
|
fontSizeScale,
|
|
52720
52735
|
theme: theme2,
|
|
52721
|
-
transparentBackground = false
|
|
52736
|
+
transparentBackground = false,
|
|
52737
|
+
editable = false
|
|
52722
52738
|
}) => {
|
|
52723
52739
|
const containerRef = useRef(null);
|
|
52724
52740
|
const backgroundColor = transparentBackground ? "transparent" : theme2.colors.background;
|
|
@@ -52750,7 +52766,8 @@ var DocumentView = ({
|
|
|
52750
52766
|
fontSizeScale,
|
|
52751
52767
|
handlePromptCopy,
|
|
52752
52768
|
repositoryInfo,
|
|
52753
|
-
transparentBackground
|
|
52769
|
+
transparentBackground,
|
|
52770
|
+
editable
|
|
52754
52771
|
})));
|
|
52755
52772
|
};
|
|
52756
52773
|
function getTaskBodyMarkdown(task, options = {}) {
|
|
@@ -52853,9 +52870,10 @@ const MetadataRow = ({ icon, label, value }) => {
|
|
|
52853
52870
|
}
|
|
52854
52871
|
);
|
|
52855
52872
|
};
|
|
52856
|
-
const TaskDetailPanel = ({ context, actions, events: events2 }) => {
|
|
52873
|
+
const TaskDetailPanel = ({ context, actions, events: events2, config }) => {
|
|
52857
52874
|
const { theme: theme2 } = useTheme();
|
|
52858
52875
|
const [selectedTask, setSelectedTask] = useState(null);
|
|
52876
|
+
const { editable = false } = config ?? {};
|
|
52859
52877
|
useEffect(() => {
|
|
52860
52878
|
if (!events2) return;
|
|
52861
52879
|
const handleTaskSelected = (event) => {
|
|
@@ -53109,7 +53127,8 @@ const TaskDetailPanel = ({ context, actions, events: events2 }) => {
|
|
|
53109
53127
|
content: bodyMarkdown,
|
|
53110
53128
|
theme: theme2,
|
|
53111
53129
|
maxWidth: "100%",
|
|
53112
|
-
transparentBackground: true
|
|
53130
|
+
transparentBackground: true,
|
|
53131
|
+
editable
|
|
53113
53132
|
}
|
|
53114
53133
|
) : /* @__PURE__ */ jsx(
|
|
53115
53134
|
"div",
|