epiq 0.0.2 → 0.0.4
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/app.js +10 -4
- package/dist/board/components/Board.js +4 -12
- package/dist/board/components/CommandLine.d.ts +2 -0
- package/dist/board/components/CommandLine.js +26 -0
- package/dist/{components/Help.d.ts → board/components/ContextBar.d.ts} +1 -1
- package/dist/board/components/ContextBar.js +17 -0
- package/dist/board/components/Help.js +19 -12
- package/dist/board/components/Swimlane.d.ts +1 -0
- package/dist/board/components/Swimlane.js +6 -4
- package/dist/board/components/Swimlanes.js +8 -11
- package/dist/board/components/TextInput.d.ts +6 -0
- package/dist/board/components/TextInput.js +9 -0
- package/dist/board/components/TicketListItem.js +6 -5
- package/dist/board/components/TicketUI.js +6 -7
- package/dist/board/hints/hints.d.ts +7 -0
- package/dist/board/hints/hints.js +21 -0
- package/dist/board/mock/board.js +73 -27
- package/dist/cli.d.ts +2 -1
- package/dist/cli.js +21 -39
- package/dist/debug-logger.d.ts +2 -0
- package/dist/debug-logger.js +16 -0
- package/dist/init-project.d.ts +1 -0
- package/dist/init-project.js +1 -0
- package/dist/navigation/actions/add/add-actions.d.ts +2 -0
- package/dist/navigation/actions/add/add-actions.js +25 -0
- package/dist/navigation/actions/add/add-item-actions.d.ts +2 -0
- package/dist/navigation/actions/add/add-item-actions.js +25 -0
- package/dist/navigation/actions/add-item/add-item-actions.d.ts +3 -0
- package/dist/navigation/actions/add-item/add-item-actions.js +45 -0
- package/dist/navigation/actions/board-action-map.d.ts +10 -0
- package/dist/navigation/actions/board-action-map.js +12 -0
- package/dist/navigation/actions/default/default-action-utils.d.ts +8 -0
- package/dist/navigation/actions/default/default-action-utils.js +101 -0
- package/dist/navigation/actions/default/default-actions.d.ts +2 -0
- package/dist/navigation/actions/default/default-actions.js +64 -0
- package/dist/navigation/actions/default/navigation-action-utils.d.ts +16 -0
- package/dist/navigation/actions/default/navigation-action-utils.js +109 -0
- package/dist/navigation/actions/input/command-line-input.d.ts +2 -0
- package/dist/navigation/actions/input/command-line-input.js +18 -0
- package/dist/navigation/actions/input/input-actions-utils.d.ts +8 -0
- package/dist/navigation/actions/input/input-actions-utils.js +47 -0
- package/dist/navigation/actions/input/input-actions.d.ts +2 -0
- package/dist/navigation/actions/input/input-actions.js +44 -0
- package/dist/navigation/actions/move/move-actions-routes.d.ts +4 -0
- package/dist/navigation/actions/move/move-actions-routes.js +55 -0
- package/dist/navigation/actions/move/move-actions-utils.d.ts +4 -0
- package/dist/navigation/actions/move/move-actions-utils.js +66 -0
- package/dist/navigation/actions/move/move-actions.d.ts +4 -0
- package/dist/navigation/actions/move/move-actions.js +59 -0
- package/dist/{lib/utils/default-action-utils.d.ts → navigation/actions/navigate/navigation-action-utils.d.ts} +1 -1
- package/dist/navigation/actions/navigate/navigation-actions.d.ts +2 -0
- package/dist/navigation/actions/navigate/navigation-actions.js +78 -0
- package/dist/navigation/command-line/command-line-actions.d.ts +2 -0
- package/dist/navigation/command-line/command-line-actions.js +32 -0
- package/dist/navigation/command-line/command-line-intent.d.ts +7 -0
- package/dist/navigation/command-line/command-line-intent.js +29 -0
- package/dist/navigation/command-line/command-line-sequence-actions.d.ts +2 -0
- package/dist/navigation/command-line/command-line-sequence-actions.js +44 -0
- package/dist/navigation/command-line/command-line-sequence-intent.d.ts +8 -0
- package/dist/navigation/command-line/command-line-sequence-intent.js +32 -0
- package/dist/navigation/command-line/commands.d.ts +2 -0
- package/dist/navigation/command-line/commands.js +58 -0
- package/dist/navigation/keypress-listener.d.ts +1 -0
- package/dist/navigation/keypress-listener.js +33 -0
- package/dist/navigation/model/action-map.model.d.ts +17 -5
- package/dist/navigation/model/action-map.model.js +2 -0
- package/dist/navigation/model/navigation-ctx.model.d.ts +1 -16
- package/dist/navigation/model/navigation-ctx.model.js +0 -1
- package/dist/navigation/model/navigation-tree.model.d.ts +3 -1
- package/dist/navigation/navigation.d.ts +3 -10
- package/dist/navigation/navigation.js +74 -66
- package/dist/navigation/state/command-line.state.d.ts +18 -0
- package/dist/navigation/state/command-line.state.js +60 -0
- package/dist/navigation/state/state.d.ts +18 -9
- package/dist/navigation/state/state.js +36 -8
- package/dist/navigation/utils/get-command-line-intent.d.ts +3 -0
- package/dist/navigation/utils/get-command-line-intent.js +17 -0
- package/dist/navigation/utils/getKeyIntent.d.ts +5 -0
- package/dist/navigation/utils/getKeyIntent.js +71 -0
- package/dist/navigation/utils/key-intent.d.ts +21 -12
- package/dist/navigation/utils/key-intent.js +104 -50
- package/package.json +3 -3
- package/dist/board/actions/board-action-map.d.ts +0 -11
- package/dist/board/actions/board-action-map.js +0 -11
- package/dist/board/actions/move-actions-routes.d.ts +0 -4
- package/dist/board/actions/move-actions-routes.js +0 -31
- package/dist/board/actions/move-actions.d.ts +0 -5
- package/dist/board/actions/move-actions.js +0 -49
- package/dist/board/board-action-map.d.ts +0 -9
- package/dist/board/board-action-map.js +0 -7
- package/dist/board/move-actions-routes.d.ts +0 -4
- package/dist/board/move-actions-routes.js +0 -31
- package/dist/board/move-actions.d.ts +0 -5
- package/dist/board/move-actions.js +0 -49
- package/dist/components/Board.d.ts +0 -6
- package/dist/components/Board.js +0 -15
- package/dist/components/Help.js +0 -21
- package/dist/components/Swimlane.d.ts +0 -8
- package/dist/components/Swimlane.js +0 -10
- package/dist/components/TicketListItem.d.ts +0 -6
- package/dist/components/TicketListItem.js +0 -12
- package/dist/lib/actions/board-action-map.d.ts +0 -9
- package/dist/lib/actions/board-action-map.js +0 -7
- package/dist/lib/actions/move-actions-utils.d.ts +0 -5
- package/dist/lib/actions/move-actions-utils.js +0 -43
- package/dist/lib/actions/move-actions.d.ts +0 -4
- package/dist/lib/actions/move-actions.js +0 -31
- package/dist/lib/board/board-action-map.d.ts +0 -9
- package/dist/lib/board/board-action-map.js +0 -7
- package/dist/lib/board/move-actions-routes.d.ts +0 -4
- package/dist/lib/board/move-actions-routes.js +0 -31
- package/dist/lib/board/move-actions.d.ts +0 -5
- package/dist/lib/board/move-actions.js +0 -43
- package/dist/lib/board-utils.d.ts +0 -7
- package/dist/lib/board-utils.js +0 -33
- package/dist/lib/default-actions-routes.d.ts +0 -4
- package/dist/lib/default-actions-routes.js +0 -47
- package/dist/lib/default-actions.d.ts +0 -4
- package/dist/lib/default-actions.js +0 -47
- package/dist/lib/navigation-context.d.ts +0 -16
- package/dist/lib/navigation.d.ts +0 -10
- package/dist/lib/navigation.js +0 -74
- package/dist/lib/render-utils.d.ts +0 -10
- package/dist/lib/render-utils.js +0 -12
- package/dist/lib/state.d.ts +0 -8
- package/dist/lib/state.js +0 -8
- package/dist/lib/types/action-map.model.d.ts +0 -14
- package/dist/lib/types/action-map.model.js +0 -4
- package/dist/lib/types/board.model.d.ts +0 -21
- package/dist/lib/types/board.model.js +0 -5
- package/dist/lib/types/navigation.model.d.ts +0 -9
- package/dist/lib/utils/array-utils.d.ts +0 -5
- package/dist/lib/utils/array-utils.js +0 -7
- package/dist/lib/utils/default-action-utils.js +0 -50
- package/dist/lib/utils/default-actions.d.ts +0 -7
- package/dist/lib/utils/default-actions.js +0 -50
- package/dist/lib/utils/key-intent.d.ts +0 -16
- package/dist/lib/utils/key-intent.js +0 -65
- package/dist/lib/utils.d.ts +0 -10
- package/dist/lib/utils.js +0 -12
- package/dist/mock/board.d.ts +0 -2
- package/dist/mock/board.js +0 -139
- package/dist/navigation/actions/default-actions-routes.d.ts +0 -4
- package/dist/navigation/actions/default-actions-routes.js +0 -47
- package/dist/navigation/actions/default-actions.d.ts +0 -7
- /package/dist/navigation/actions/{default-actions.js → navigate/navigation-action-utils.js} +0 -0
- /package/dist/{lib/navigation-context.js → navigation/navigation-ctx.d.ts} +0 -0
- /package/dist/{lib/types/navigation.model.js → navigation/navigation-ctx.js} +0 -0
package/dist/app.js
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import { Box } from 'ink';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { BoardUI } from './board/components/Board.js';
|
|
4
|
+
import { ContextBar } from './board/components/ContextBar.js';
|
|
4
5
|
import { HelpUI } from './board/components/Help.js';
|
|
6
|
+
import { Mode } from './navigation/model/action-map.model.js';
|
|
7
|
+
import { appState } from './navigation/state/state.js';
|
|
5
8
|
export default function App({ board }) {
|
|
6
9
|
const width = process.stdout.columns || 120;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
10
|
+
const swimlaneMaxWidth = Math.floor(process.stdout.columns / 3);
|
|
11
|
+
const swimlaneDynamicWidth = Math.floor(width / board.children.length);
|
|
12
|
+
const renderedWidth = swimlaneDynamicWidth * board.children.length;
|
|
13
|
+
const swimlaneWidth = Math.min(renderedWidth, swimlaneMaxWidth);
|
|
9
14
|
return (React.createElement(Box, { flexDirection: "column" },
|
|
10
|
-
React.createElement(BoardUI, { board: board, swimlaneWidth: swimlaneWidth }),
|
|
11
|
-
React.createElement(HelpUI, { width: renderedWidth })
|
|
15
|
+
!(appState.mode === Mode.HELP) && (React.createElement(BoardUI, { board: board, swimlaneWidth: swimlaneWidth })),
|
|
16
|
+
appState.mode === Mode.HELP && React.createElement(HelpUI, { width: renderedWidth }),
|
|
17
|
+
React.createElement(ContextBar, { width: width })));
|
|
12
18
|
}
|
|
@@ -1,19 +1,11 @@
|
|
|
1
|
-
import { Box, Text
|
|
1
|
+
import { Box, Text } from 'ink';
|
|
2
2
|
import React from 'react';
|
|
3
|
+
import { appState } from '../../navigation/state/state.js';
|
|
3
4
|
import { BoardContentUI } from './Swimlanes.js';
|
|
4
5
|
export const BoardUI = ({ board, swimlaneWidth, }) => {
|
|
5
|
-
const { exit } = useApp();
|
|
6
|
-
useInput((input, key) => {
|
|
7
|
-
if (key.escape || input === 'q') {
|
|
8
|
-
exit();
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
6
|
return (React.createElement(Box, { flexDirection: "column" },
|
|
12
|
-
React.createElement(Box, {
|
|
13
|
-
React.createElement(Text, null,
|
|
14
|
-
"--- ",
|
|
15
|
-
board.name,
|
|
16
|
-
" ---")),
|
|
7
|
+
React.createElement(Box, { paddingLeft: 1 },
|
|
8
|
+
React.createElement(Text, null, appState.breadCrumb.map(b => ' > ' + b.name))),
|
|
17
9
|
React.createElement(Box, { flexDirection: "row" },
|
|
18
10
|
React.createElement(BoardContentUI, { items: board.children, width: swimlaneWidth }))));
|
|
19
11
|
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { getCommandLineInput, subscribeCommandLineState, } from '../../navigation/state/command-line.state.js';
|
|
4
|
+
const roleColors = {
|
|
5
|
+
command: 'cyan',
|
|
6
|
+
argument: 'white',
|
|
7
|
+
};
|
|
8
|
+
export const CommandLine = () => {
|
|
9
|
+
const [input, setInput] = useState(getCommandLineInput());
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
const unsubscribe = subscribeCommandLineState(() => {
|
|
12
|
+
setInput(getCommandLineInput());
|
|
13
|
+
});
|
|
14
|
+
return () => {
|
|
15
|
+
unsubscribe();
|
|
16
|
+
};
|
|
17
|
+
}, []);
|
|
18
|
+
const [command, ...rest] = input.split(' ');
|
|
19
|
+
const argument = rest.join(' ');
|
|
20
|
+
return (React.createElement(Box, null,
|
|
21
|
+
React.createElement(Text, { color: "gray" }, ":"),
|
|
22
|
+
command && React.createElement(Text, { color: roleColors.command }, command),
|
|
23
|
+
argument && (React.createElement(Text, null,
|
|
24
|
+
' ',
|
|
25
|
+
React.createElement(Text, { color: roleColors.argument }, "'" + argument + "'")))));
|
|
26
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Box, Text } from 'ink';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Mode } from '../../navigation/model/action-map.model.js';
|
|
4
|
+
import { appState } from '../../navigation/state/state.js';
|
|
5
|
+
import { CommandLine } from './CommandLine.js';
|
|
6
|
+
export const ContextBar = ({ width }) => (React.createElement(Box, { flexDirection: "column", paddingLeft: 1, paddingRight: 1, borderColor: "gray", borderStyle: "round", width: width },
|
|
7
|
+
React.createElement(Box, null, appState.mode === Mode.COMMAND_LINE ? (React.createElement(CommandLine, null)) : (React.createElement(Box, { flexDirection: "row", gap: 2 },
|
|
8
|
+
React.createElement(Text, null, "\uD83D\uDCA1"),
|
|
9
|
+
appState.availableHints.map((x, index) => {
|
|
10
|
+
const [command, ...rest] = x.split(' ');
|
|
11
|
+
const argument = rest.join(' ');
|
|
12
|
+
return (React.createElement(Box, { key: index },
|
|
13
|
+
React.createElement(Text, { color: "cyan" }, command),
|
|
14
|
+
argument && (React.createElement(React.Fragment, null,
|
|
15
|
+
React.createElement(Text, null, " "),
|
|
16
|
+
React.createElement(Text, { color: "gray" }, argument)))));
|
|
17
|
+
}))))));
|
|
@@ -1,21 +1,28 @@
|
|
|
1
1
|
import { Box, Text } from 'ink';
|
|
2
|
-
import {
|
|
2
|
+
import { appState } from '../../navigation/state/state.js';
|
|
3
3
|
import React from 'react';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
import { Mode } from '../../navigation/model/action-map.model.js';
|
|
5
|
+
export const HelpUI = ({ width }) => (React.createElement(Box, { flexDirection: "column", marginTop: 3, borderColor: "gray", borderStyle: "round", width: width, minHeight: 19 },
|
|
6
|
+
React.createElement(Box, { flexDirection: "column", width: width }, appState.mode === Mode.HELP
|
|
7
|
+
? [
|
|
8
|
+
{
|
|
9
|
+
action: '',
|
|
10
|
+
description: '[COMMAND] DESCRIPTION',
|
|
11
|
+
mode: appState.mode,
|
|
12
|
+
},
|
|
13
|
+
...appState.availableActions,
|
|
14
|
+
]
|
|
9
15
|
.filter(action => Boolean(action.description))
|
|
10
|
-
.filter(x => x.mode === navigationState.mode)
|
|
16
|
+
// .filter(x => x.mode === navigationState.mode)
|
|
11
17
|
.map((action, index) => {
|
|
12
18
|
const [leftRaw, rightRaw] = action.description.split(']');
|
|
13
19
|
const left = leftRaw?.replace('[', '');
|
|
14
20
|
const right = rightRaw?.trim(); // no extra space
|
|
15
21
|
return (React.createElement(Box, { paddingLeft: 1, key: index, flexDirection: "row" },
|
|
16
|
-
React.createElement(Box, {
|
|
17
|
-
React.createElement(
|
|
18
|
-
|
|
19
|
-
React.createElement(
|
|
22
|
+
React.createElement(Box, { key: index, flexDirection: "row", paddingBottom: index ? 0 : 1 },
|
|
23
|
+
React.createElement(Box, { flexGrow: 1, width: 30 },
|
|
24
|
+
React.createElement(Text, { color: index ? 'white' : 'gray' }, right)),
|
|
25
|
+
React.createElement(Box, { width: 20 },
|
|
26
|
+
React.createElement(Text, { color: index ? 'yellow' : 'gray' }, left)))));
|
|
20
27
|
})
|
|
21
|
-
: null));
|
|
28
|
+
: null)));
|
|
@@ -2,9 +2,11 @@ import { Box, Text } from 'ink';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { ScrollBoxUI } from './ScrollBox.js';
|
|
4
4
|
import { TicketListItemUI } from './TicketListItem.js';
|
|
5
|
-
export const SwimlaneUI = ({ item, width }) => {
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
export const SwimlaneUI = ({ item, isSelected, width }) => {
|
|
6
|
+
const color = isSelected ? 'cyan' : 'gray';
|
|
7
|
+
return (React.createElement(Box, { flexDirection: "column", width: width, borderStyle: "round", borderColor: 'gray', paddingRight: 1, paddingLeft: 1, minHeight: 15, height: 20 },
|
|
8
|
+
React.createElement(Box, { borderStyle: "round", borderColor: color, justifyContent: "center" },
|
|
8
9
|
React.createElement(Text, { bold: true }, item.name)),
|
|
9
|
-
React.createElement(
|
|
10
|
+
React.createElement(Box, { padding: 1 },
|
|
11
|
+
React.createElement(ScrollBoxUI, { selectedIndex: item.children.findIndex(x => x.isSelected), width: width, size: 10, children: item.children.map((ticket, index) => (React.createElement(TicketListItemUI, { key: index, width: width, ticket: ticket }))) }))));
|
|
10
12
|
};
|
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Box } from 'ink';
|
|
3
|
-
import {
|
|
3
|
+
import { appState } from '../../navigation/state/state.js';
|
|
4
4
|
import { BoardItemTypes } from '../model/board.model.js';
|
|
5
5
|
import { SwimlaneUI } from './Swimlane.js';
|
|
6
6
|
import { TicketUI } from './TicketUI.js';
|
|
7
7
|
export const BoardContentUI = ({ items, width }) => {
|
|
8
|
-
const actionContext =
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
BoardItemTypes.
|
|
12
|
-
BoardItemTypes.SWIMLANE,
|
|
13
|
-
BoardItemTypes.TICKET_LIST_ITEM,
|
|
14
|
-
].includes(actionContext);
|
|
15
|
-
const isTicketContext = actionContext === BoardItemTypes.TICKET;
|
|
8
|
+
const actionContext = appState.currentNode.actionContext;
|
|
9
|
+
const isTicketContext = actionContext === BoardItemTypes.TICKET_LIST_ITEM;
|
|
10
|
+
const isSwimlaneContext = actionContext === BoardItemTypes.BOARD ||
|
|
11
|
+
actionContext === BoardItemTypes.SWIMLANE;
|
|
16
12
|
return (React.createElement(Box, { flexDirection: "row" },
|
|
17
13
|
isSwimlaneContext &&
|
|
18
|
-
items.map((lane, index) => (React.createElement(SwimlaneUI, { key: index, width: width,
|
|
19
|
-
|
|
14
|
+
items.map((lane, index) => (React.createElement(SwimlaneUI, { key: index, width: width, isSelected: appState.currentNode.actionContext === 'BOARD' &&
|
|
15
|
+
appState.selectedIndex === index, item: lane }))),
|
|
16
|
+
isTicketContext && appState.currentNode && (React.createElement(TicketUI, { width: width * items.length, item: appState.breadCrumb[appState.breadCrumb.length - 1] }))));
|
|
20
17
|
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Text } from 'ink';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
// const onChange = (_value: string) => {
|
|
4
|
+
// // No-op for now
|
|
5
|
+
// };
|
|
6
|
+
// const onSubmit = (_value: string) => {
|
|
7
|
+
// // No-op for now
|
|
8
|
+
// };
|
|
9
|
+
export const TextInput = ({ value }) => React.createElement(Text, null, value);
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Box, Text } from 'ink';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { Mode } from '../../navigation/model/action-map.model.js';
|
|
4
|
+
import { appState } from '../../navigation/state/state.js';
|
|
4
5
|
const truncateWithEllipsis = (str, width) => str.length >= width ? str.slice(0, width - 3) + '...' : str;
|
|
5
6
|
export const TicketListItemUI = ({ width, ticket }) => (React.createElement(Box, { borderBottom: true },
|
|
6
|
-
React.createElement(Text, { color: ticket.isSelected &&
|
|
7
|
-
? '
|
|
7
|
+
React.createElement(Text, { color: ticket.isSelected && appState.mode === Mode.MOVE
|
|
8
|
+
? 'cyan'
|
|
8
9
|
: ticket.isSelected
|
|
9
10
|
? 'cyan'
|
|
10
|
-
:
|
|
11
|
+
: appState.mode === Mode.MOVE
|
|
11
12
|
? 'gray'
|
|
12
|
-
: 'white' }, truncateWithEllipsis(ticket.
|
|
13
|
+
: 'white' }, truncateWithEllipsis(ticket.name, width - 6))));
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { Box, Text } from 'ink';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
export const TicketUI = ({ item, width }) => {
|
|
4
|
-
|
|
5
|
-
React.createElement(
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
};
|
|
3
|
+
export const TicketUI = ({ item, width }) => (React.createElement(Box, { flexDirection: "column", padding: 1, paddingLeft: 2, borderStyle: "round", width: width, minHeight: 20, borderColor: "gray" }, item.children.map(child => (React.createElement(Box, { key: child.id, flexDirection: "row", borderStyle: 'round', borderColor: child.isSelected ? 'cyan' : 'gray', paddingLeft: 1 },
|
|
4
|
+
React.createElement(Box, { width: 30 },
|
|
5
|
+
React.createElement(Text, { color: "cyan" },
|
|
6
|
+
child.name,
|
|
7
|
+
":")),
|
|
8
|
+
React.createElement(Text, null, child.description))))));
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const Hints: {
|
|
2
|
+
readonly [x: string]: readonly [] | readonly [":h Help", "hjkl: navigate", "enter: confirm"] | readonly ["q: exit"] | readonly ["i: edit", "y: yank/move"] | readonly ["q: exit", "i: edit"] | readonly ["hjkl: move selection", "e/enter: confirm move/yank", "q: exit"] | readonly ["hjkl: move selection", "e/enter: confirm move/yank", "y: confirm move/yank", "q: exit"];
|
|
3
|
+
readonly BOARD: readonly [];
|
|
4
|
+
readonly SWIMLANE: readonly [":h Help", "hjkl: navigate", "enter: confirm"];
|
|
5
|
+
readonly TICKET_LIST_ITEM: readonly ["i: edit", "y: yank/move"];
|
|
6
|
+
readonly TICKET: readonly ["q: exit", "i: edit"];
|
|
7
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Mode } from '../../navigation/model/action-map.model.js';
|
|
2
|
+
import { BoardItemTypes } from '../model/board.model.js';
|
|
3
|
+
export const Hints = {
|
|
4
|
+
[BoardItemTypes.BOARD]: [],
|
|
5
|
+
[BoardItemTypes.SWIMLANE]: [':h Help', 'hjkl: navigate', 'enter: confirm'],
|
|
6
|
+
[BoardItemTypes.TICKET_LIST_ITEM + Mode.HELP]: ['q: exit'],
|
|
7
|
+
[BoardItemTypes.SWIMLANE + Mode.HELP]: ['q: exit'],
|
|
8
|
+
[BoardItemTypes.TICKET_LIST_ITEM]: ['i: edit', 'y: yank/move'],
|
|
9
|
+
[BoardItemTypes.TICKET]: ['q: exit', 'i: edit'],
|
|
10
|
+
[BoardItemTypes.SWIMLANE + Mode.MOVE]: [
|
|
11
|
+
'hjkl: move selection',
|
|
12
|
+
'e/enter: confirm move/yank',
|
|
13
|
+
'q: exit',
|
|
14
|
+
],
|
|
15
|
+
[BoardItemTypes.TICKET_LIST_ITEM + Mode.MOVE]: [
|
|
16
|
+
'hjkl: move selection',
|
|
17
|
+
'e/enter: confirm move/yank',
|
|
18
|
+
'y: confirm move/yank',
|
|
19
|
+
'q: exit',
|
|
20
|
+
],
|
|
21
|
+
};
|
package/dist/board/mock/board.js
CHANGED
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
import { BoardItemTypes } from '../model/board.model.js';
|
|
2
|
+
// import {Board, BoardItemTypes} from '../model/board.model.js';
|
|
2
3
|
export const board = {
|
|
3
4
|
id: 'b1',
|
|
4
5
|
isSelected: false,
|
|
5
|
-
name: '
|
|
6
|
-
actionContext:
|
|
6
|
+
name: 'Board',
|
|
7
|
+
actionContext: BoardItemTypes.BOARD,
|
|
7
8
|
childrenRenderAxis: 'horizontal',
|
|
9
|
+
// children: [
|
|
10
|
+
// {
|
|
11
|
+
// isSelected: false,
|
|
12
|
+
// id: 's1',
|
|
13
|
+
// name: 'To Do',
|
|
14
|
+
// childrenRenderAxis: 'vertical',
|
|
15
|
+
// actionContext: BoardItemTypes.SWIMLANE,
|
|
16
|
+
// enableChildNavigationAcrossContainers: true,
|
|
17
|
+
// children: [],
|
|
18
|
+
// },
|
|
19
|
+
// ],
|
|
8
20
|
children: [
|
|
9
21
|
{
|
|
10
22
|
isSelected: false,
|
|
@@ -24,7 +36,17 @@ export const board = {
|
|
|
24
36
|
{
|
|
25
37
|
isSelected: false,
|
|
26
38
|
id: 't1-desc',
|
|
27
|
-
name: '
|
|
39
|
+
name: 'Description',
|
|
40
|
+
description: 'Configure GitHub Actions for test, build, and deploy stages.',
|
|
41
|
+
actionContext: BoardItemTypes.TICKET,
|
|
42
|
+
childrenRenderAxis: 'vertical',
|
|
43
|
+
children: [],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
isSelected: false,
|
|
47
|
+
id: 't1-desc',
|
|
48
|
+
name: 'Tag',
|
|
49
|
+
description: 'Urgent',
|
|
28
50
|
actionContext: BoardItemTypes.TICKET,
|
|
29
51
|
childrenRenderAxis: 'vertical',
|
|
30
52
|
children: [],
|
|
@@ -41,7 +63,8 @@ export const board = {
|
|
|
41
63
|
{
|
|
42
64
|
isSelected: false,
|
|
43
65
|
id: 't2-desc',
|
|
44
|
-
name: '
|
|
66
|
+
name: 'Description',
|
|
67
|
+
description: 'Define request/response formats, error handling, and versioning.',
|
|
45
68
|
actionContext: BoardItemTypes.TICKET,
|
|
46
69
|
childrenRenderAxis: 'vertical',
|
|
47
70
|
children: [],
|
|
@@ -58,7 +81,8 @@ export const board = {
|
|
|
58
81
|
{
|
|
59
82
|
isSelected: false,
|
|
60
83
|
id: 't3-desc',
|
|
61
|
-
name: '
|
|
84
|
+
name: 'Description',
|
|
85
|
+
description: 'Collaborate with leads to define team goals and key results.',
|
|
62
86
|
actionContext: BoardItemTypes.TICKET,
|
|
63
87
|
childrenRenderAxis: 'vertical',
|
|
64
88
|
children: [],
|
|
@@ -75,7 +99,8 @@ export const board = {
|
|
|
75
99
|
{
|
|
76
100
|
isSelected: false,
|
|
77
101
|
id: 't11-desc',
|
|
78
|
-
name: '
|
|
102
|
+
name: 'Description',
|
|
103
|
+
description: 'Create high-level overview of services, databases, and communication flows.',
|
|
79
104
|
actionContext: BoardItemTypes.TICKET,
|
|
80
105
|
childrenRenderAxis: 'vertical',
|
|
81
106
|
children: [],
|
|
@@ -92,7 +117,8 @@ export const board = {
|
|
|
92
117
|
{
|
|
93
118
|
isSelected: false,
|
|
94
119
|
id: 't12-desc',
|
|
95
|
-
name: '
|
|
120
|
+
name: 'Description',
|
|
121
|
+
description: 'Integrate tools like Prometheus and Grafana; define alert thresholds.',
|
|
96
122
|
actionContext: BoardItemTypes.TICKET,
|
|
97
123
|
childrenRenderAxis: 'vertical',
|
|
98
124
|
children: [],
|
|
@@ -109,7 +135,8 @@ export const board = {
|
|
|
109
135
|
{
|
|
110
136
|
isSelected: false,
|
|
111
137
|
id: 't13-desc',
|
|
112
|
-
name: '
|
|
138
|
+
name: 'Description',
|
|
139
|
+
description: 'Identify GDPR and CCPA implications for data handling and user consent.',
|
|
113
140
|
actionContext: BoardItemTypes.TICKET,
|
|
114
141
|
childrenRenderAxis: 'vertical',
|
|
115
142
|
children: [],
|
|
@@ -126,7 +153,8 @@ export const board = {
|
|
|
126
153
|
{
|
|
127
154
|
isSelected: false,
|
|
128
155
|
id: 't14-desc',
|
|
129
|
-
name: '
|
|
156
|
+
name: 'Description',
|
|
157
|
+
description: 'Write setup instructions, repo structure, and coding standards.',
|
|
130
158
|
actionContext: BoardItemTypes.TICKET,
|
|
131
159
|
childrenRenderAxis: 'vertical',
|
|
132
160
|
children: [],
|
|
@@ -143,7 +171,8 @@ export const board = {
|
|
|
143
171
|
{
|
|
144
172
|
isSelected: false,
|
|
145
173
|
id: 't15-desc',
|
|
146
|
-
name: '
|
|
174
|
+
name: 'Description',
|
|
175
|
+
description: 'Compare Redux Toolkit, Zustand, and Jotai for frontend scalability.',
|
|
147
176
|
actionContext: BoardItemTypes.TICKET,
|
|
148
177
|
childrenRenderAxis: 'vertical',
|
|
149
178
|
children: [],
|
|
@@ -160,7 +189,8 @@ export const board = {
|
|
|
160
189
|
{
|
|
161
190
|
isSelected: false,
|
|
162
191
|
id: 't16-desc',
|
|
163
|
-
name: '
|
|
192
|
+
name: 'Description',
|
|
193
|
+
description: 'Define test scenarios covering API and UI flows.',
|
|
164
194
|
actionContext: BoardItemTypes.TICKET,
|
|
165
195
|
childrenRenderAxis: 'vertical',
|
|
166
196
|
children: [],
|
|
@@ -177,7 +207,8 @@ export const board = {
|
|
|
177
207
|
{
|
|
178
208
|
isSelected: false,
|
|
179
209
|
id: 't17-desc',
|
|
180
|
-
name: '
|
|
210
|
+
name: 'Description',
|
|
211
|
+
description: 'Set baseline response times for key endpoints and UI interactions.',
|
|
181
212
|
actionContext: BoardItemTypes.TICKET,
|
|
182
213
|
childrenRenderAxis: 'vertical',
|
|
183
214
|
children: [],
|
|
@@ -194,7 +225,8 @@ export const board = {
|
|
|
194
225
|
{
|
|
195
226
|
isSelected: false,
|
|
196
227
|
id: 't18-desc',
|
|
197
|
-
name: '
|
|
228
|
+
name: 'Description',
|
|
229
|
+
description: 'Standardize client and server error formats and fallback UIs.',
|
|
198
230
|
actionContext: BoardItemTypes.TICKET,
|
|
199
231
|
childrenRenderAxis: 'vertical',
|
|
200
232
|
children: [],
|
|
@@ -211,7 +243,8 @@ export const board = {
|
|
|
211
243
|
{
|
|
212
244
|
isSelected: false,
|
|
213
245
|
id: 't19-desc',
|
|
214
|
-
name: '
|
|
246
|
+
name: 'Description',
|
|
247
|
+
description: 'Choose log levels, format, and storage mechanisms for observability.',
|
|
215
248
|
actionContext: BoardItemTypes.TICKET,
|
|
216
249
|
childrenRenderAxis: 'vertical',
|
|
217
250
|
children: [],
|
|
@@ -228,7 +261,8 @@ export const board = {
|
|
|
228
261
|
{
|
|
229
262
|
isSelected: false,
|
|
230
263
|
id: 't20-desc',
|
|
231
|
-
name: '
|
|
264
|
+
name: 'Description',
|
|
265
|
+
description: 'Enable gradual rollouts using LaunchDarkly or Unleash.',
|
|
232
266
|
actionContext: BoardItemTypes.TICKET,
|
|
233
267
|
childrenRenderAxis: 'vertical',
|
|
234
268
|
children: [],
|
|
@@ -245,7 +279,8 @@ export const board = {
|
|
|
245
279
|
{
|
|
246
280
|
isSelected: false,
|
|
247
281
|
id: 't21-desc',
|
|
248
|
-
name: '
|
|
282
|
+
name: 'Description',
|
|
283
|
+
description: 'List comparable products and key differentiators for positioning.',
|
|
249
284
|
actionContext: BoardItemTypes.TICKET,
|
|
250
285
|
childrenRenderAxis: 'vertical',
|
|
251
286
|
children: [],
|
|
@@ -262,7 +297,8 @@ export const board = {
|
|
|
262
297
|
{
|
|
263
298
|
isSelected: false,
|
|
264
299
|
id: 't22-desc',
|
|
265
|
-
name: '
|
|
300
|
+
name: 'Description',
|
|
301
|
+
description: 'Schedule initial sync with stakeholders and present roadmap.',
|
|
266
302
|
actionContext: BoardItemTypes.TICKET,
|
|
267
303
|
childrenRenderAxis: 'vertical',
|
|
268
304
|
children: [],
|
|
@@ -279,7 +315,8 @@ export const board = {
|
|
|
279
315
|
{
|
|
280
316
|
isSelected: false,
|
|
281
317
|
id: 't23-desc',
|
|
282
|
-
name: '
|
|
318
|
+
name: 'Description',
|
|
319
|
+
description: 'Set up base AWS resources using Terraform templates.',
|
|
283
320
|
actionContext: BoardItemTypes.TICKET,
|
|
284
321
|
childrenRenderAxis: 'vertical',
|
|
285
322
|
children: [],
|
|
@@ -296,7 +333,8 @@ export const board = {
|
|
|
296
333
|
{
|
|
297
334
|
isSelected: false,
|
|
298
335
|
id: 't24-desc',
|
|
299
|
-
name: '
|
|
336
|
+
name: 'Description',
|
|
337
|
+
description: 'Collaborate with design to outline primary users and their needs.',
|
|
300
338
|
actionContext: BoardItemTypes.TICKET,
|
|
301
339
|
childrenRenderAxis: 'vertical',
|
|
302
340
|
children: [],
|
|
@@ -313,7 +351,8 @@ export const board = {
|
|
|
313
351
|
{
|
|
314
352
|
isSelected: false,
|
|
315
353
|
id: 't25-desc',
|
|
316
|
-
name: '
|
|
354
|
+
name: 'Description',
|
|
355
|
+
description: 'Decide on tools, frequency, and feedback channels for retrospectives.',
|
|
317
356
|
actionContext: BoardItemTypes.TICKET,
|
|
318
357
|
childrenRenderAxis: 'vertical',
|
|
319
358
|
children: [],
|
|
@@ -349,7 +388,8 @@ export const board = {
|
|
|
349
388
|
{
|
|
350
389
|
isSelected: false,
|
|
351
390
|
id: 't4-desc',
|
|
352
|
-
name: '
|
|
391
|
+
name: 'Description',
|
|
392
|
+
description: 'Integrate frontend with backend auth API and handle edge cases.',
|
|
353
393
|
actionContext: BoardItemTypes.TICKET,
|
|
354
394
|
childrenRenderAxis: 'vertical',
|
|
355
395
|
children: [],
|
|
@@ -366,7 +406,8 @@ export const board = {
|
|
|
366
406
|
{
|
|
367
407
|
isSelected: false,
|
|
368
408
|
id: 't5-desc',
|
|
369
|
-
name: '
|
|
409
|
+
name: 'Description',
|
|
410
|
+
description: 'Collaborate with UX to create a grid-based responsive dashboard.',
|
|
370
411
|
actionContext: BoardItemTypes.TICKET,
|
|
371
412
|
childrenRenderAxis: 'vertical',
|
|
372
413
|
children: [],
|
|
@@ -383,7 +424,8 @@ export const board = {
|
|
|
383
424
|
{
|
|
384
425
|
isSelected: false,
|
|
385
426
|
id: 't6-desc',
|
|
386
|
-
name: '
|
|
427
|
+
name: 'Description',
|
|
428
|
+
description: 'Evaluate color contrast, ARIA usage, and keyboard nav.',
|
|
387
429
|
actionContext: BoardItemTypes.TICKET,
|
|
388
430
|
childrenRenderAxis: 'vertical',
|
|
389
431
|
children: [],
|
|
@@ -400,7 +442,8 @@ export const board = {
|
|
|
400
442
|
{
|
|
401
443
|
isSelected: false,
|
|
402
444
|
id: 't7-desc',
|
|
403
|
-
name: '
|
|
445
|
+
name: 'Description',
|
|
446
|
+
description: 'Ensure test coverage, types, and data validation are in place.',
|
|
404
447
|
actionContext: BoardItemTypes.TICKET,
|
|
405
448
|
childrenRenderAxis: 'vertical',
|
|
406
449
|
children: [],
|
|
@@ -417,7 +460,8 @@ export const board = {
|
|
|
417
460
|
{
|
|
418
461
|
isSelected: false,
|
|
419
462
|
id: 't8-desc',
|
|
420
|
-
name: '
|
|
463
|
+
name: 'Description',
|
|
464
|
+
description: 'Verify spacing, responsiveness, and visual hierarchy.',
|
|
421
465
|
actionContext: BoardItemTypes.TICKET,
|
|
422
466
|
childrenRenderAxis: 'vertical',
|
|
423
467
|
children: [],
|
|
@@ -444,7 +488,8 @@ export const board = {
|
|
|
444
488
|
{
|
|
445
489
|
isSelected: false,
|
|
446
490
|
id: 't9-desc',
|
|
447
|
-
name: '
|
|
491
|
+
name: 'Description',
|
|
492
|
+
description: 'Document reusable components and tokens in Storybook.',
|
|
448
493
|
actionContext: BoardItemTypes.TICKET,
|
|
449
494
|
childrenRenderAxis: 'vertical',
|
|
450
495
|
children: [],
|
|
@@ -461,7 +506,8 @@ export const board = {
|
|
|
461
506
|
{
|
|
462
507
|
isSelected: false,
|
|
463
508
|
id: 't10-desc',
|
|
464
|
-
name: '
|
|
509
|
+
name: 'Description',
|
|
510
|
+
description: 'All pipelines green. Ready for product team QA.',
|
|
465
511
|
actionContext: BoardItemTypes.TICKET,
|
|
466
512
|
childrenRenderAxis: 'vertical',
|
|
467
513
|
children: [],
|
package/dist/cli.d.ts
CHANGED