glancey 2.2.1 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/dashboard/beads.test.js +45 -15
- package/dist/__tests__/dashboard/beads.test.js.map +1 -1
- package/dist/dashboard/beads.d.ts +3 -1
- package/dist/dashboard/beads.d.ts.map +1 -1
- package/dist/dashboard/beads.js +25 -6
- package/dist/dashboard/beads.js.map +1 -1
- package/dist/dashboard/ui.d.ts.map +1 -1
- package/dist/dashboard/ui.js +370 -36
- package/dist/dashboard/ui.js.map +1 -1
- package/package.json +1 -1
|
@@ -54,22 +54,31 @@ describe('beads', () => {
|
|
|
54
54
|
issueCount: 0,
|
|
55
55
|
openCount: 0,
|
|
56
56
|
readyCount: 0,
|
|
57
|
-
|
|
57
|
+
readyIssues: [],
|
|
58
|
+
openIssues: [],
|
|
59
|
+
allIssues: [],
|
|
58
60
|
});
|
|
59
61
|
});
|
|
60
62
|
it('should return status with issues when beads is available', async () => {
|
|
61
63
|
vi.mocked(access).mockResolvedValue(undefined);
|
|
62
|
-
const
|
|
64
|
+
const readyIssues = [
|
|
63
65
|
{ id: 'issue-1', title: 'Test Issue 1', status: 'open' },
|
|
64
66
|
{ id: 'issue-2', title: 'Test Issue 2', status: 'open' },
|
|
65
67
|
];
|
|
68
|
+
const allIssues = [
|
|
69
|
+
...readyIssues,
|
|
70
|
+
{ id: 'issue-3', title: 'Closed Issue', status: 'closed' },
|
|
71
|
+
];
|
|
66
72
|
vi.mocked(exec).mockImplementation((cmd, _opts, callback) => {
|
|
67
73
|
const cb = callback;
|
|
68
74
|
if (cmd.includes('bd ready')) {
|
|
69
|
-
cb(null, JSON.stringify(
|
|
75
|
+
cb(null, JSON.stringify(readyIssues), '');
|
|
76
|
+
}
|
|
77
|
+
else if (cmd.includes('--all')) {
|
|
78
|
+
cb(null, JSON.stringify(allIssues), '');
|
|
70
79
|
}
|
|
71
80
|
else if (cmd.includes('bd list')) {
|
|
72
|
-
cb(null, JSON.stringify(
|
|
81
|
+
cb(null, JSON.stringify(readyIssues), '');
|
|
73
82
|
}
|
|
74
83
|
else if (cmd.includes('bd info')) {
|
|
75
84
|
cb(null, JSON.stringify({ syncBranch: 'beads', daemonConnected: true }), '');
|
|
@@ -87,7 +96,9 @@ describe('beads', () => {
|
|
|
87
96
|
expect(status.readyCount).toBe(2);
|
|
88
97
|
expect(status.openCount).toBe(2);
|
|
89
98
|
expect(status.issueCount).toBe(5);
|
|
90
|
-
expect(status.
|
|
99
|
+
expect(status.readyIssues).toHaveLength(2);
|
|
100
|
+
expect(status.openIssues).toHaveLength(2);
|
|
101
|
+
expect(status.allIssues).toHaveLength(3);
|
|
91
102
|
expect(status.syncBranch).toBe('beads');
|
|
92
103
|
expect(status.daemonRunning).toBe(true);
|
|
93
104
|
});
|
|
@@ -100,7 +111,9 @@ describe('beads', () => {
|
|
|
100
111
|
});
|
|
101
112
|
const status = await getBeadsStatus('/project');
|
|
102
113
|
expect(status.available).toBe(true);
|
|
103
|
-
expect(status.
|
|
114
|
+
expect(status.readyIssues).toEqual([]);
|
|
115
|
+
expect(status.openIssues).toEqual([]);
|
|
116
|
+
expect(status.allIssues).toEqual([]);
|
|
104
117
|
expect(status.readyCount).toBe(0);
|
|
105
118
|
});
|
|
106
119
|
it('should handle bd command errors gracefully', async () => {
|
|
@@ -115,28 +128,43 @@ describe('beads', () => {
|
|
|
115
128
|
expect(status.issueCount).toBe(0);
|
|
116
129
|
expect(status.openCount).toBe(0);
|
|
117
130
|
expect(status.readyCount).toBe(0);
|
|
118
|
-
expect(status.
|
|
131
|
+
expect(status.readyIssues).toEqual([]);
|
|
132
|
+
expect(status.openIssues).toEqual([]);
|
|
133
|
+
expect(status.allIssues).toEqual([]);
|
|
119
134
|
});
|
|
120
|
-
it('should
|
|
135
|
+
it('should return all issues across all three views', async () => {
|
|
121
136
|
vi.mocked(access).mockResolvedValue(undefined);
|
|
122
|
-
const
|
|
123
|
-
id: `
|
|
124
|
-
title: `
|
|
137
|
+
const readyIssues = Array.from({ length: 5 }, (_, i) => ({
|
|
138
|
+
id: `ready-${i}`,
|
|
139
|
+
title: `Ready Issue ${i}`,
|
|
140
|
+
status: 'open',
|
|
141
|
+
}));
|
|
142
|
+
const openIssues = Array.from({ length: 15 }, (_, i) => ({
|
|
143
|
+
id: `open-${i}`,
|
|
144
|
+
title: `Open Issue ${i}`,
|
|
125
145
|
status: 'open',
|
|
126
146
|
}));
|
|
147
|
+
const allIssues = Array.from({ length: 20 }, (_, i) => ({
|
|
148
|
+
id: `all-${i}`,
|
|
149
|
+
title: `Issue ${i}`,
|
|
150
|
+
status: i < 15 ? 'open' : 'closed',
|
|
151
|
+
}));
|
|
127
152
|
vi.mocked(exec).mockImplementation((cmd, _opts, callback) => {
|
|
128
153
|
const cb = callback;
|
|
129
154
|
if (cmd.includes('bd ready')) {
|
|
130
|
-
cb(null, JSON.stringify(
|
|
155
|
+
cb(null, JSON.stringify(readyIssues), '');
|
|
156
|
+
}
|
|
157
|
+
else if (cmd.includes('--all')) {
|
|
158
|
+
cb(null, JSON.stringify(allIssues), '');
|
|
131
159
|
}
|
|
132
160
|
else if (cmd.includes('bd list')) {
|
|
133
|
-
cb(null, JSON.stringify(
|
|
161
|
+
cb(null, JSON.stringify(openIssues), '');
|
|
134
162
|
}
|
|
135
163
|
else if (cmd.includes('bd info')) {
|
|
136
164
|
cb(null, '{}', '');
|
|
137
165
|
}
|
|
138
166
|
else if (cmd.includes('bd count')) {
|
|
139
|
-
cb(null, '
|
|
167
|
+
cb(null, '20', '');
|
|
140
168
|
}
|
|
141
169
|
else {
|
|
142
170
|
cb(null, '', '');
|
|
@@ -144,7 +172,9 @@ describe('beads', () => {
|
|
|
144
172
|
return {};
|
|
145
173
|
});
|
|
146
174
|
const status = await getBeadsStatus('/project');
|
|
147
|
-
expect(status.
|
|
175
|
+
expect(status.readyIssues).toHaveLength(5);
|
|
176
|
+
expect(status.openIssues).toHaveLength(15);
|
|
177
|
+
expect(status.allIssues).toHaveLength(20);
|
|
148
178
|
});
|
|
149
179
|
});
|
|
150
180
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beads.test.js","sourceRoot":"","sources":["../../../src/__tests__/dashboard/beads.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"beads.test.js","sourceRoot":"","sources":["../../../src/__tests__/dashboard/beads.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,9 @@ export interface BeadsStatus {
|
|
|
20
20
|
issueCount: number;
|
|
21
21
|
openCount: number;
|
|
22
22
|
readyCount: number;
|
|
23
|
-
|
|
23
|
+
readyIssues: BeadsIssue[];
|
|
24
|
+
openIssues: BeadsIssue[];
|
|
25
|
+
allIssues: BeadsIssue[];
|
|
24
26
|
syncBranch?: string;
|
|
25
27
|
daemonRunning?: boolean;
|
|
26
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beads.d.ts","sourceRoot":"","sources":["../../src/dashboard/beads.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,
|
|
1
|
+
{"version":3,"file":"beads.d.ts","sourceRoot":"","sources":["../../src/dashboard/beads.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ5E;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA8G9E"}
|
package/dist/dashboard/beads.js
CHANGED
|
@@ -27,7 +27,9 @@ export async function getBeadsStatus(projectPath) {
|
|
|
27
27
|
issueCount: 0,
|
|
28
28
|
openCount: 0,
|
|
29
29
|
readyCount: 0,
|
|
30
|
-
|
|
30
|
+
readyIssues: [],
|
|
31
|
+
openIssues: [],
|
|
32
|
+
allIssues: [],
|
|
31
33
|
};
|
|
32
34
|
}
|
|
33
35
|
try {
|
|
@@ -45,13 +47,26 @@ export async function getBeadsStatus(projectPath) {
|
|
|
45
47
|
readyIssues = [];
|
|
46
48
|
}
|
|
47
49
|
// Get all open issues
|
|
48
|
-
const { stdout: listOutput } = await execAsync('bd list --json 2>/dev/null || echo "[]"', {
|
|
50
|
+
const { stdout: listOutput } = await execAsync('bd list --limit 0 --json 2>/dev/null || echo "[]"', {
|
|
49
51
|
cwd: projectPath,
|
|
50
52
|
timeout: 5000,
|
|
51
53
|
});
|
|
52
|
-
let
|
|
54
|
+
let openIssues = [];
|
|
53
55
|
try {
|
|
54
56
|
const parsed = JSON.parse(listOutput.trim() || '[]');
|
|
57
|
+
openIssues = Array.isArray(parsed) ? parsed : [];
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
openIssues = [];
|
|
61
|
+
}
|
|
62
|
+
// Get all issues including closed
|
|
63
|
+
const { stdout: allOutput } = await execAsync('bd list --all --limit 0 --json 2>/dev/null || echo "[]"', {
|
|
64
|
+
cwd: projectPath,
|
|
65
|
+
timeout: 5000,
|
|
66
|
+
});
|
|
67
|
+
let allIssues = [];
|
|
68
|
+
try {
|
|
69
|
+
const parsed = JSON.parse(allOutput.trim() || '[]');
|
|
55
70
|
allIssues = Array.isArray(parsed) ? parsed : [];
|
|
56
71
|
}
|
|
57
72
|
catch {
|
|
@@ -81,9 +96,11 @@ export async function getBeadsStatus(projectPath) {
|
|
|
81
96
|
return {
|
|
82
97
|
available: true,
|
|
83
98
|
issueCount: totalCount,
|
|
84
|
-
openCount:
|
|
99
|
+
openCount: openIssues.length,
|
|
85
100
|
readyCount: readyIssues.length,
|
|
86
|
-
|
|
101
|
+
readyIssues,
|
|
102
|
+
openIssues,
|
|
103
|
+
allIssues,
|
|
87
104
|
syncBranch,
|
|
88
105
|
daemonRunning,
|
|
89
106
|
};
|
|
@@ -95,7 +112,9 @@ export async function getBeadsStatus(projectPath) {
|
|
|
95
112
|
issueCount: 0,
|
|
96
113
|
openCount: 0,
|
|
97
114
|
readyCount: 0,
|
|
98
|
-
|
|
115
|
+
readyIssues: [],
|
|
116
|
+
openIssues: [],
|
|
117
|
+
allIssues: [],
|
|
99
118
|
};
|
|
100
119
|
}
|
|
101
120
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beads.js","sourceRoot":"","sources":["../../src/dashboard/beads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"beads.js","sourceRoot":"","sources":["../../src/dashboard/beads.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/dashboard/ui.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/dashboard/ui.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAs9FzC"}
|
package/dist/dashboard/ui.js
CHANGED
|
@@ -992,6 +992,114 @@ export function getDashboardHTML() {
|
|
|
992
992
|
color: var(--text-muted);
|
|
993
993
|
}
|
|
994
994
|
|
|
995
|
+
.beads-view-toggle {
|
|
996
|
+
display: flex;
|
|
997
|
+
gap: 0;
|
|
998
|
+
padding: 8px 12px;
|
|
999
|
+
border-bottom: 1px solid var(--border-color);
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
.beads-view-btn {
|
|
1003
|
+
flex: 1;
|
|
1004
|
+
padding: 5px 12px;
|
|
1005
|
+
font-size: 12px;
|
|
1006
|
+
font-weight: 500;
|
|
1007
|
+
background: var(--bg-tertiary);
|
|
1008
|
+
border: 1px solid var(--border-color);
|
|
1009
|
+
color: var(--text-muted);
|
|
1010
|
+
cursor: pointer;
|
|
1011
|
+
transition: all 0.15s ease;
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
.beads-view-btn:first-child {
|
|
1015
|
+
border-radius: 4px 0 0 4px;
|
|
1016
|
+
}
|
|
1017
|
+
|
|
1018
|
+
.beads-view-btn:last-child {
|
|
1019
|
+
border-radius: 0 4px 4px 0;
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
.beads-view-btn:not(:first-child) {
|
|
1023
|
+
border-left: none;
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
.beads-view-btn:hover:not(.active) {
|
|
1027
|
+
background: var(--bg-secondary);
|
|
1028
|
+
color: var(--text-primary);
|
|
1029
|
+
}
|
|
1030
|
+
|
|
1031
|
+
.beads-view-btn.active {
|
|
1032
|
+
background: var(--accent-blue);
|
|
1033
|
+
border-color: var(--accent-blue);
|
|
1034
|
+
color: #fff;
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
#beadsToolbar {
|
|
1038
|
+
display: flex;
|
|
1039
|
+
flex-wrap: wrap;
|
|
1040
|
+
gap: 6px;
|
|
1041
|
+
padding: 6px 12px;
|
|
1042
|
+
border-bottom: 1px solid var(--border-color);
|
|
1043
|
+
align-items: center;
|
|
1044
|
+
box-sizing: border-box;
|
|
1045
|
+
}
|
|
1046
|
+
|
|
1047
|
+
#beadsToolbar #beadsSearch {
|
|
1048
|
+
width: 100%;
|
|
1049
|
+
padding: 4px 8px;
|
|
1050
|
+
font-size: 12px;
|
|
1051
|
+
border-radius: 3px;
|
|
1052
|
+
box-sizing: border-box;
|
|
1053
|
+
}
|
|
1054
|
+
|
|
1055
|
+
#beadsToolbar select {
|
|
1056
|
+
width: calc(50% - 3px);
|
|
1057
|
+
padding: 4px 8px;
|
|
1058
|
+
font-size: 12px;
|
|
1059
|
+
border-radius: 3px;
|
|
1060
|
+
box-sizing: border-box;
|
|
1061
|
+
}
|
|
1062
|
+
|
|
1063
|
+
.beads-filter-count {
|
|
1064
|
+
margin-left: auto;
|
|
1065
|
+
font-size: 12px;
|
|
1066
|
+
color: var(--text-muted);
|
|
1067
|
+
white-space: nowrap;
|
|
1068
|
+
}
|
|
1069
|
+
|
|
1070
|
+
.beads-pagination {
|
|
1071
|
+
display: flex;
|
|
1072
|
+
justify-content: center;
|
|
1073
|
+
align-items: center;
|
|
1074
|
+
gap: 12px;
|
|
1075
|
+
padding: 12px 16px;
|
|
1076
|
+
border-top: 1px solid var(--border-color);
|
|
1077
|
+
}
|
|
1078
|
+
|
|
1079
|
+
.beads-pagination button {
|
|
1080
|
+
padding: 4px 12px;
|
|
1081
|
+
font-size: 13px;
|
|
1082
|
+
background: var(--bg-tertiary);
|
|
1083
|
+
border: 1px solid var(--border-color);
|
|
1084
|
+
border-radius: 4px;
|
|
1085
|
+
color: var(--text-primary);
|
|
1086
|
+
cursor: pointer;
|
|
1087
|
+
}
|
|
1088
|
+
|
|
1089
|
+
.beads-pagination button:hover:not(:disabled) {
|
|
1090
|
+
background: var(--bg-secondary);
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
.beads-pagination button:disabled {
|
|
1094
|
+
opacity: 0.4;
|
|
1095
|
+
cursor: default;
|
|
1096
|
+
}
|
|
1097
|
+
|
|
1098
|
+
.beads-pagination .beads-page-info {
|
|
1099
|
+
font-size: 12px;
|
|
1100
|
+
color: var(--text-muted);
|
|
1101
|
+
}
|
|
1102
|
+
|
|
995
1103
|
/* Tab navigation */
|
|
996
1104
|
.tab-container {
|
|
997
1105
|
margin-bottom: 24px;
|
|
@@ -1377,12 +1485,39 @@ export function getDashboardHTML() {
|
|
|
1377
1485
|
<div id="beadsContent" style="display: none;">
|
|
1378
1486
|
<div class="card">
|
|
1379
1487
|
<div class="card-header">
|
|
1380
|
-
<span class="card-title">Ready Tasks</span>
|
|
1488
|
+
<span class="card-title" id="beadsCardTitle">Ready Tasks</span>
|
|
1381
1489
|
<span class="badge" id="readyTasksBadge">0 tasks</span>
|
|
1382
1490
|
</div>
|
|
1491
|
+
<div class="beads-view-toggle" id="beadsViewToggle" style="display: none;">
|
|
1492
|
+
<button class="beads-view-btn active" data-view="ready">Ready</button>
|
|
1493
|
+
<button class="beads-view-btn" data-view="open">Open</button>
|
|
1494
|
+
<button class="beads-view-btn" data-view="all">All</button>
|
|
1495
|
+
</div>
|
|
1496
|
+
<div class="beads-toolbar" id="beadsToolbar" style="display: none;">
|
|
1497
|
+
<input type="text" class="form-input" id="beadsSearch" placeholder="Search issues...">
|
|
1498
|
+
<select class="form-select" id="beadsPriorityFilter">
|
|
1499
|
+
<option value="">All priorities</option>
|
|
1500
|
+
<option value="1">P1</option>
|
|
1501
|
+
<option value="2">P2</option>
|
|
1502
|
+
<option value="3">P3</option>
|
|
1503
|
+
<option value="none">No priority</option>
|
|
1504
|
+
</select>
|
|
1505
|
+
<select class="form-select" id="beadsSortOrder">
|
|
1506
|
+
<option value="priority-desc">Priority: High to Low</option>
|
|
1507
|
+
<option value="priority-asc">Priority: Low to High</option>
|
|
1508
|
+
<option value="alpha-asc">Title: A\u2013Z</option>
|
|
1509
|
+
<option value="alpha-desc">Title: Z\u2013A</option>
|
|
1510
|
+
</select>
|
|
1511
|
+
<span class="beads-filter-count" id="beadsFilterCount"></span>
|
|
1512
|
+
</div>
|
|
1383
1513
|
<div class="beads-issues" id="beadsIssuesList">
|
|
1384
1514
|
<div class="beads-empty">No ready tasks</div>
|
|
1385
1515
|
</div>
|
|
1516
|
+
<div class="beads-pagination" id="beadsPagination" style="display: none;">
|
|
1517
|
+
<button id="beadsPrevPage">Previous</button>
|
|
1518
|
+
<span class="beads-page-info" id="beadsPageInfo">Page 1 of 1</span>
|
|
1519
|
+
<button id="beadsNextPage">Next</button>
|
|
1520
|
+
</div>
|
|
1386
1521
|
</div>
|
|
1387
1522
|
</div>
|
|
1388
1523
|
</div>
|
|
@@ -2430,6 +2565,182 @@ export function getDashboardHTML() {
|
|
|
2430
2565
|
const beadsDaemonText = document.getElementById('beadsDaemonText');
|
|
2431
2566
|
const beadsIssuesList = document.getElementById('beadsIssuesList');
|
|
2432
2567
|
const readyTasksBadge = document.getElementById('readyTasksBadge');
|
|
2568
|
+
const beadsToolbar = document.getElementById('beadsToolbar');
|
|
2569
|
+
const beadsSearch = document.getElementById('beadsSearch');
|
|
2570
|
+
const beadsPriorityFilter = document.getElementById('beadsPriorityFilter');
|
|
2571
|
+
const beadsFilterCount = document.getElementById('beadsFilterCount');
|
|
2572
|
+
const beadsSortOrder = document.getElementById('beadsSortOrder');
|
|
2573
|
+
const beadsPagination = document.getElementById('beadsPagination');
|
|
2574
|
+
const beadsPrevPage = document.getElementById('beadsPrevPage');
|
|
2575
|
+
const beadsNextPage = document.getElementById('beadsNextPage');
|
|
2576
|
+
const beadsPageInfo = document.getElementById('beadsPageInfo');
|
|
2577
|
+
const beadsViewToggle = document.getElementById('beadsViewToggle');
|
|
2578
|
+
const beadsCardTitle = document.getElementById('beadsCardTitle');
|
|
2579
|
+
|
|
2580
|
+
var beadsData = { readyIssues: [], openIssues: [], allIssues: [] };
|
|
2581
|
+
var beadsCurrentView = 'ready';
|
|
2582
|
+
var allBeadsIssues = [];
|
|
2583
|
+
var beadsCurrentPage = 1;
|
|
2584
|
+
var BEADS_PAGE_SIZE = 20;
|
|
2585
|
+
|
|
2586
|
+
function getBeadsViewIssues() {
|
|
2587
|
+
if (beadsCurrentView === 'open') return beadsData.openIssues;
|
|
2588
|
+
if (beadsCurrentView === 'all') return beadsData.allIssues;
|
|
2589
|
+
return beadsData.readyIssues;
|
|
2590
|
+
}
|
|
2591
|
+
|
|
2592
|
+
function updateBeadsView() {
|
|
2593
|
+
allBeadsIssues = getBeadsViewIssues();
|
|
2594
|
+
beadsCurrentPage = 1;
|
|
2595
|
+
|
|
2596
|
+
var titles = { ready: 'Ready Tasks', open: 'Open Tasks', all: 'All Tasks' };
|
|
2597
|
+
beadsCardTitle.textContent = titles[beadsCurrentView] || 'Ready Tasks';
|
|
2598
|
+
|
|
2599
|
+
var counts = {
|
|
2600
|
+
ready: beadsData.readyIssues.length,
|
|
2601
|
+
open: beadsData.openIssues.length,
|
|
2602
|
+
all: beadsData.allIssues.length,
|
|
2603
|
+
};
|
|
2604
|
+
var count = counts[beadsCurrentView] || 0;
|
|
2605
|
+
readyTasksBadge.textContent = count + ' task' + (count !== 1 ? 's' : '');
|
|
2606
|
+
|
|
2607
|
+
beadsToolbar.style.display = allBeadsIssues.length > 0 ? 'flex' : 'none';
|
|
2608
|
+
|
|
2609
|
+
var btns = beadsViewToggle.querySelectorAll('.beads-view-btn');
|
|
2610
|
+
for (var i = 0; i < btns.length; i++) {
|
|
2611
|
+
btns[i].classList.toggle('active', btns[i].getAttribute('data-view') === beadsCurrentView);
|
|
2612
|
+
}
|
|
2613
|
+
|
|
2614
|
+
renderBeadsPage();
|
|
2615
|
+
}
|
|
2616
|
+
|
|
2617
|
+
function getFilteredBeadsIssues() {
|
|
2618
|
+
var filtered = allBeadsIssues;
|
|
2619
|
+
var searchTerm = (beadsSearch.value || '').toLowerCase().trim();
|
|
2620
|
+
var priorityVal = beadsPriorityFilter.value;
|
|
2621
|
+
|
|
2622
|
+
if (searchTerm) {
|
|
2623
|
+
filtered = filtered.filter(function(issue) {
|
|
2624
|
+
return (issue.title && issue.title.toLowerCase().indexOf(searchTerm) !== -1) ||
|
|
2625
|
+
(issue.description && issue.description.toLowerCase().indexOf(searchTerm) !== -1) ||
|
|
2626
|
+
(issue.id && issue.id.toLowerCase().indexOf(searchTerm) !== -1);
|
|
2627
|
+
});
|
|
2628
|
+
}
|
|
2629
|
+
|
|
2630
|
+
if (priorityVal === 'none') {
|
|
2631
|
+
filtered = filtered.filter(function(issue) {
|
|
2632
|
+
return !issue.priority;
|
|
2633
|
+
});
|
|
2634
|
+
} else if (priorityVal) {
|
|
2635
|
+
var pNum = parseInt(priorityVal, 10);
|
|
2636
|
+
filtered = filtered.filter(function(issue) {
|
|
2637
|
+
return issue.priority === pNum;
|
|
2638
|
+
});
|
|
2639
|
+
}
|
|
2640
|
+
|
|
2641
|
+
// Sort
|
|
2642
|
+
var sortVal = beadsSortOrder.value;
|
|
2643
|
+
filtered = filtered.slice().sort(function(a, b) {
|
|
2644
|
+
if (sortVal === 'priority-desc') {
|
|
2645
|
+
var pa = a.priority || 999;
|
|
2646
|
+
var pb = b.priority || 999;
|
|
2647
|
+
return pa - pb;
|
|
2648
|
+
} else if (sortVal === 'priority-asc') {
|
|
2649
|
+
var pa = a.priority || 999;
|
|
2650
|
+
var pb = b.priority || 999;
|
|
2651
|
+
return pb - pa;
|
|
2652
|
+
} else if (sortVal === 'alpha-asc') {
|
|
2653
|
+
return (a.title || '').localeCompare(b.title || '');
|
|
2654
|
+
} else if (sortVal === 'alpha-desc') {
|
|
2655
|
+
return (b.title || '').localeCompare(a.title || '');
|
|
2656
|
+
}
|
|
2657
|
+
return 0;
|
|
2658
|
+
});
|
|
2659
|
+
|
|
2660
|
+
return filtered;
|
|
2661
|
+
}
|
|
2662
|
+
|
|
2663
|
+
function buildIssueHtml(issue) {
|
|
2664
|
+
var hasDescription = issue.description && issue.description.trim();
|
|
2665
|
+
var html = '<div class="beads-issue" onclick="toggleBeadsIssue(this)">';
|
|
2666
|
+
html += '<span class="beads-issue-id">' + escapeHtml(issue.id) + '</span>';
|
|
2667
|
+
html += '<div class="beads-issue-content">';
|
|
2668
|
+
html += '<div class="beads-issue-title">';
|
|
2669
|
+
html += '<svg class="beads-issue-expand" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 18l6-6-6-6"/></svg>';
|
|
2670
|
+
html += '<span>' + escapeHtml(issue.title) + '</span>';
|
|
2671
|
+
html += '</div>';
|
|
2672
|
+
html += '<div class="beads-issue-meta">';
|
|
2673
|
+
if (issue.issue_type) {
|
|
2674
|
+
html += '<span class="beads-issue-type">' + escapeHtml(issue.issue_type) + '</span>';
|
|
2675
|
+
}
|
|
2676
|
+
if (issue.priority) {
|
|
2677
|
+
html += '<span class="beads-issue-priority">';
|
|
2678
|
+
html += '<span class="priority-dot priority-' + issue.priority + '"></span>';
|
|
2679
|
+
html += 'P' + issue.priority;
|
|
2680
|
+
html += '</span>';
|
|
2681
|
+
}
|
|
2682
|
+
html += '</div>';
|
|
2683
|
+
if (hasDescription) {
|
|
2684
|
+
html += '<div class="beads-issue-description">' + escapeHtml(issue.description) + '</div>';
|
|
2685
|
+
} else {
|
|
2686
|
+
html += '<div class="beads-issue-description beads-issue-no-description">No description available</div>';
|
|
2687
|
+
}
|
|
2688
|
+
html += '</div>';
|
|
2689
|
+
html += '</div>';
|
|
2690
|
+
return html;
|
|
2691
|
+
}
|
|
2692
|
+
|
|
2693
|
+
function renderBeadsPage() {
|
|
2694
|
+
var filtered = getFilteredBeadsIssues();
|
|
2695
|
+
var totalPages = Math.max(1, Math.ceil(filtered.length / BEADS_PAGE_SIZE));
|
|
2696
|
+
|
|
2697
|
+
if (beadsCurrentPage > totalPages) {
|
|
2698
|
+
beadsCurrentPage = totalPages;
|
|
2699
|
+
}
|
|
2700
|
+
|
|
2701
|
+
var start = (beadsCurrentPage - 1) * BEADS_PAGE_SIZE;
|
|
2702
|
+
var pageIssues = filtered.slice(start, start + BEADS_PAGE_SIZE);
|
|
2703
|
+
|
|
2704
|
+
// Update filter count
|
|
2705
|
+
var isFiltered = beadsSearch.value.trim() || beadsPriorityFilter.value;
|
|
2706
|
+
if (filtered.length === 0 && isFiltered) {
|
|
2707
|
+
beadsFilterCount.textContent = 'No matches (filtered from ' + allBeadsIssues.length + ')';
|
|
2708
|
+
} else if (isFiltered) {
|
|
2709
|
+
beadsFilterCount.textContent = 'Showing ' + (start + 1) + '\\u2013' + (start + pageIssues.length) + ' of ' + filtered.length + ' (filtered from ' + allBeadsIssues.length + ')';
|
|
2710
|
+
} else if (filtered.length > 0) {
|
|
2711
|
+
beadsFilterCount.textContent = 'Showing ' + (start + 1) + '\\u2013' + (start + pageIssues.length) + ' of ' + filtered.length;
|
|
2712
|
+
} else {
|
|
2713
|
+
beadsFilterCount.textContent = '';
|
|
2714
|
+
}
|
|
2715
|
+
|
|
2716
|
+
// Render issues
|
|
2717
|
+
if (pageIssues.length > 0) {
|
|
2718
|
+
var html = '';
|
|
2719
|
+
for (var i = 0; i < pageIssues.length; i++) {
|
|
2720
|
+
html += buildIssueHtml(pageIssues[i]);
|
|
2721
|
+
}
|
|
2722
|
+
beadsIssuesList.innerHTML = html;
|
|
2723
|
+
} else if (isFiltered) {
|
|
2724
|
+
beadsIssuesList.innerHTML = '<div class="beads-empty">No issues match the current filters</div>';
|
|
2725
|
+
} else {
|
|
2726
|
+
var emptyLabels = { ready: 'No ready tasks', open: 'No open tasks', all: 'No tasks' };
|
|
2727
|
+
var emptyDiv = document.createElement('div');
|
|
2728
|
+
emptyDiv.className = 'beads-empty';
|
|
2729
|
+
emptyDiv.textContent = emptyLabels[beadsCurrentView] || 'No ready tasks';
|
|
2730
|
+
beadsIssuesList.innerHTML = '';
|
|
2731
|
+
beadsIssuesList.appendChild(emptyDiv);
|
|
2732
|
+
}
|
|
2733
|
+
|
|
2734
|
+
// Pagination controls
|
|
2735
|
+
if (totalPages > 1) {
|
|
2736
|
+
beadsPagination.style.display = 'flex';
|
|
2737
|
+
beadsPageInfo.textContent = 'Page ' + beadsCurrentPage + ' of ' + totalPages;
|
|
2738
|
+
beadsPrevPage.disabled = beadsCurrentPage <= 1;
|
|
2739
|
+
beadsNextPage.disabled = beadsCurrentPage >= totalPages;
|
|
2740
|
+
} else {
|
|
2741
|
+
beadsPagination.style.display = 'none';
|
|
2742
|
+
}
|
|
2743
|
+
}
|
|
2433
2744
|
|
|
2434
2745
|
function updateBeads(data) {
|
|
2435
2746
|
const beadsUnavailable = document.getElementById('beadsUnavailable');
|
|
@@ -2442,6 +2753,8 @@ export function getDashboardHTML() {
|
|
|
2442
2753
|
beadsContent.style.display = 'none';
|
|
2443
2754
|
beadsHeaderStats.style.display = 'none';
|
|
2444
2755
|
beadsBadgeEl.style.display = 'none';
|
|
2756
|
+
beadsToolbar.style.display = 'none';
|
|
2757
|
+
beadsViewToggle.style.display = 'none';
|
|
2445
2758
|
return;
|
|
2446
2759
|
}
|
|
2447
2760
|
|
|
@@ -2463,43 +2776,64 @@ export function getDashboardHTML() {
|
|
|
2463
2776
|
beadsDaemonText.textContent = 'Daemon not running';
|
|
2464
2777
|
}
|
|
2465
2778
|
|
|
2466
|
-
//
|
|
2467
|
-
|
|
2468
|
-
|
|
2469
|
-
|
|
2470
|
-
|
|
2471
|
-
|
|
2472
|
-
|
|
2473
|
-
|
|
2474
|
-
|
|
2475
|
-
html += '<svg class="beads-issue-expand" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 18l6-6-6-6"/></svg>';
|
|
2476
|
-
html += '<span>' + escapeHtml(issue.title) + '</span>';
|
|
2477
|
-
html += '</div>';
|
|
2478
|
-
html += '<div class="beads-issue-meta">';
|
|
2479
|
-
if (issue.issue_type) {
|
|
2480
|
-
html += '<span class="beads-issue-type">' + escapeHtml(issue.issue_type) + '</span>';
|
|
2481
|
-
}
|
|
2482
|
-
if (issue.priority) {
|
|
2483
|
-
html += '<span class="beads-issue-priority">';
|
|
2484
|
-
html += '<span class="priority-dot priority-' + issue.priority + '"></span>';
|
|
2485
|
-
html += 'P' + issue.priority;
|
|
2486
|
-
html += '</span>';
|
|
2487
|
-
}
|
|
2488
|
-
html += '</div>';
|
|
2489
|
-
if (hasDescription) {
|
|
2490
|
-
html += '<div class="beads-issue-description">' + escapeHtml(issue.description) + '</div>';
|
|
2491
|
-
} else {
|
|
2492
|
-
html += '<div class="beads-issue-description beads-issue-no-description">No description available</div>';
|
|
2493
|
-
}
|
|
2494
|
-
html += '</div>';
|
|
2495
|
-
html += '</div>';
|
|
2496
|
-
}
|
|
2497
|
-
beadsIssuesList.innerHTML = html;
|
|
2498
|
-
} else {
|
|
2499
|
-
beadsIssuesList.innerHTML = '<div class="beads-empty">No ready tasks</div>';
|
|
2500
|
-
}
|
|
2779
|
+
// Store all issue lists and render current view
|
|
2780
|
+
beadsData = {
|
|
2781
|
+
readyIssues: data.readyIssues || [],
|
|
2782
|
+
openIssues: data.openIssues || [],
|
|
2783
|
+
allIssues: data.allIssues || [],
|
|
2784
|
+
};
|
|
2785
|
+
var hasAnyIssues = beadsData.readyIssues.length > 0 || beadsData.openIssues.length > 0 || beadsData.allIssues.length > 0;
|
|
2786
|
+
beadsViewToggle.style.display = hasAnyIssues ? 'flex' : 'none';
|
|
2787
|
+
updateBeadsView();
|
|
2501
2788
|
}
|
|
2502
2789
|
|
|
2790
|
+
// Beads view toggle listeners
|
|
2791
|
+
var viewBtns = beadsViewToggle.querySelectorAll('.beads-view-btn');
|
|
2792
|
+
for (var vi = 0; vi < viewBtns.length; vi++) {
|
|
2793
|
+
viewBtns[vi].addEventListener('click', function() {
|
|
2794
|
+
beadsCurrentView = this.getAttribute('data-view') || 'ready';
|
|
2795
|
+
updateBeadsView();
|
|
2796
|
+
});
|
|
2797
|
+
}
|
|
2798
|
+
|
|
2799
|
+
// Beads event listeners
|
|
2800
|
+
var beadsSearchTimeout = null;
|
|
2801
|
+
beadsSearch.addEventListener('input', function() {
|
|
2802
|
+
clearTimeout(beadsSearchTimeout);
|
|
2803
|
+
beadsSearchTimeout = setTimeout(function() {
|
|
2804
|
+
beadsCurrentPage = 1;
|
|
2805
|
+
renderBeadsPage();
|
|
2806
|
+
}, 250);
|
|
2807
|
+
});
|
|
2808
|
+
|
|
2809
|
+
beadsPriorityFilter.addEventListener('change', function() {
|
|
2810
|
+
beadsCurrentPage = 1;
|
|
2811
|
+
renderBeadsPage();
|
|
2812
|
+
});
|
|
2813
|
+
|
|
2814
|
+
beadsSortOrder.addEventListener('change', function() {
|
|
2815
|
+
beadsCurrentPage = 1;
|
|
2816
|
+
renderBeadsPage();
|
|
2817
|
+
});
|
|
2818
|
+
|
|
2819
|
+
beadsPrevPage.addEventListener('click', function() {
|
|
2820
|
+
if (beadsCurrentPage > 1) {
|
|
2821
|
+
beadsCurrentPage--;
|
|
2822
|
+
renderBeadsPage();
|
|
2823
|
+
beadsIssuesList.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
|
|
2824
|
+
}
|
|
2825
|
+
});
|
|
2826
|
+
|
|
2827
|
+
beadsNextPage.addEventListener('click', function() {
|
|
2828
|
+
var filtered = getFilteredBeadsIssues();
|
|
2829
|
+
var totalPages = Math.ceil(filtered.length / BEADS_PAGE_SIZE);
|
|
2830
|
+
if (beadsCurrentPage < totalPages) {
|
|
2831
|
+
beadsCurrentPage++;
|
|
2832
|
+
renderBeadsPage();
|
|
2833
|
+
beadsIssuesList.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
|
|
2834
|
+
}
|
|
2835
|
+
});
|
|
2836
|
+
|
|
2503
2837
|
// Toggle beads issue expansion
|
|
2504
2838
|
function toggleBeadsIssue(element) {
|
|
2505
2839
|
element.classList.toggle('expanded');
|
package/dist/dashboard/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/dashboard/ui.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,QAAQ,GAAG,4pLAA4pL,CAAC;AAE9qL;;GAEG;AACH,MAAM,WAAW,GAAG,w7HAAw7H,CAAC;AAE78H;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;;;;;;4CAMmC,WAAW
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/dashboard/ui.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,QAAQ,GAAG,4pLAA4pL,CAAC;AAE9qL;;GAEG;AACH,MAAM,WAAW,GAAG,w7HAAw7H,CAAC;AAE78H;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;;;;;;4CAMmC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCA6vCf,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAitDxC,CAAC;AACT,CAAC"}
|
package/package.json
CHANGED