@skillcdn/console 0.3.1 → 0.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/README.md +4 -4
- package/dist/api.d.ts +4 -4
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +4 -4
- package/dist/api.js.map +1 -1
- package/dist/cli/cli.d.ts +4 -0
- package/dist/cli/cli.d.ts.map +1 -1
- package/dist/cli/cli.js +201 -25
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/format.d.ts.map +1 -1
- package/dist/cli/format.js +15 -11
- package/dist/cli/format.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +59 -26
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/main.js +1 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/pack.d.ts +7 -2
- package/dist/cli/pack.d.ts.map +1 -1
- package/dist/cli/pack.js +16 -2
- package/dist/cli/pack.js.map +1 -1
- package/dist/client.d.ts +20 -10
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +17 -3
- package/dist/client.js.map +1 -1
- package/dist/compat.d.ts +28 -6
- package/dist/compat.d.ts.map +1 -1
- package/dist/compat.js +55 -14
- package/dist/compat.js.map +1 -1
- package/dist/components/board.d.ts +12 -1
- package/dist/components/board.d.ts.map +1 -1
- package/dist/components/board.js +57 -7
- package/dist/components/board.js.map +1 -1
- package/dist/components/calendar.d.ts +17 -7
- package/dist/components/calendar.d.ts.map +1 -1
- package/dist/components/calendar.js +89 -38
- package/dist/components/calendar.js.map +1 -1
- package/dist/components/decision-form.d.ts +12 -4
- package/dist/components/decision-form.d.ts.map +1 -1
- package/dist/components/decision-form.js +24 -6
- package/dist/components/decision-form.js.map +1 -1
- package/dist/components/decision-list.d.ts +4 -0
- package/dist/components/decision-list.d.ts.map +1 -1
- package/dist/components/decision-list.js +9 -6
- package/dist/components/decision-list.js.map +1 -1
- package/dist/components/documents.d.ts.map +1 -1
- package/dist/components/documents.js +3 -3
- package/dist/components/documents.js.map +1 -1
- package/dist/components/event-feed.d.ts.map +1 -1
- package/dist/components/event-feed.js +63 -8
- package/dist/components/event-feed.js.map +1 -1
- package/dist/components/my-decisions.d.ts +20 -0
- package/dist/components/my-decisions.d.ts.map +1 -0
- package/dist/components/my-decisions.js +36 -0
- package/dist/components/my-decisions.js.map +1 -0
- package/dist/components/people.d.ts.map +1 -1
- package/dist/components/people.js +1 -1
- package/dist/components/people.js.map +1 -1
- package/dist/components/picker.d.ts +39 -0
- package/dist/components/picker.d.ts.map +1 -0
- package/dist/components/picker.js +155 -0
- package/dist/components/picker.js.map +1 -0
- package/dist/components/projects.d.ts.map +1 -1
- package/dist/components/projects.js +3 -3
- package/dist/components/projects.js.map +1 -1
- package/dist/components/roadmap.js +1 -1
- package/dist/components/roadmap.js.map +1 -1
- package/dist/components/runs.d.ts.map +1 -1
- package/dist/components/runs.js +1 -1
- package/dist/components/runs.js.map +1 -1
- package/dist/components/shell.d.ts.map +1 -1
- package/dist/components/shell.js +36 -1
- package/dist/components/shell.js.map +1 -1
- package/dist/components/task-form.d.ts +18 -4
- package/dist/components/task-form.d.ts.map +1 -1
- package/dist/components/task-form.js +56 -13
- package/dist/components/task-form.js.map +1 -1
- package/dist/components/task-list.js +2 -2
- package/dist/components/task-list.js.map +1 -1
- package/dist/components/task-view.d.ts +7 -1
- package/dist/components/task-view.d.ts.map +1 -1
- package/dist/components/task-view.js +7 -6
- package/dist/components/task-view.js.map +1 -1
- package/dist/components/ui.d.ts +17 -0
- package/dist/components/ui.d.ts.map +1 -1
- package/dist/components/ui.js +26 -11
- package/dist/components/ui.js.map +1 -1
- package/dist/components/work.d.ts.map +1 -1
- package/dist/components/work.js +5 -3
- package/dist/components/work.js.map +1 -1
- package/dist/console.css +1794 -433
- package/dist/console.d.ts.map +1 -1
- package/dist/console.js +93 -10
- package/dist/console.js.map +1 -1
- package/dist/data.d.ts +21 -1
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +24 -1
- package/dist/data.js.map +1 -1
- package/dist/i18n/en.d.ts +45 -3
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +52 -10
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/ko.d.ts.map +1 -1
- package/dist/i18n/ko.js +54 -12
- package/dist/i18n/ko.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/limits.d.ts +2 -0
- package/dist/limits.d.ts.map +1 -1
- package/dist/limits.js +2 -0
- package/dist/limits.js.map +1 -1
- package/dist/router.d.ts +9 -1
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +12 -0
- package/dist/router.js.map +1 -1
- package/dist/routes.d.ts +3 -1
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +3 -1
- package/dist/routes.js.map +1 -1
- package/dist/rules.js +1 -1
- package/dist/rules.js.map +1 -1
- package/dist/schemas.d.ts +252 -12
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +27 -10
- package/dist/schemas.js.map +1 -1
- package/dist/vocabulary.d.ts +2 -0
- package/dist/vocabulary.d.ts.map +1 -1
- package/dist/vocabulary.js +2 -0
- package/dist/vocabulary.js.map +1 -1
- package/docs/specs/cli.md +14 -13
- package/docs/specs/rest.md +24 -19
- package/package.json +2 -2
- package/skills/building-a-console/SKILL.md +4 -4
- package/skills/building-a-console/references/the-default-console.md +4 -4
- package/skills/building-a-console/references/the-look-from-a-website.md +5 -5
- package/skills/deploying-a-console/SKILL.md +2 -2
- package/skills/deploying-a-console/references/resources.md +1 -1
- package/skills/working-the-board/SKILL.md +8 -6
- package/skills/working-the-board/references/terms.md +3 -3
- package/src/api.ts +7 -0
- package/src/cli/cli.ts +254 -25
- package/src/cli/format.ts +22 -11
- package/src/cli/help.ts +63 -26
- package/src/cli/main.ts +1 -0
- package/src/cli/pack.ts +17 -1
- package/src/client.ts +44 -11
- package/src/compat.ts +63 -14
- package/src/components/board.tsx +124 -25
- package/src/components/calendar.tsx +258 -117
- package/src/components/decision-form.tsx +71 -23
- package/src/components/decision-list.tsx +30 -3
- package/src/components/documents.tsx +27 -11
- package/src/components/event-feed.tsx +116 -33
- package/src/components/my-decisions.tsx +138 -0
- package/src/components/people.tsx +3 -1
- package/src/components/picker.tsx +297 -0
- package/src/components/projects.tsx +7 -5
- package/src/components/roadmap.tsx +1 -1
- package/src/components/runs.tsx +5 -1
- package/src/components/shell.tsx +36 -1
- package/src/components/task-form.tsx +149 -63
- package/src/components/task-list.tsx +3 -3
- package/src/components/task-view.tsx +71 -56
- package/src/components/ui.tsx +89 -11
- package/src/components/work.tsx +6 -4
- package/src/console.tsx +157 -29
- package/src/data.ts +61 -1
- package/src/i18n/en.ts +54 -10
- package/src/i18n/ko.ts +56 -12
- package/src/index.ts +19 -1
- package/src/limits.ts +2 -0
- package/src/router.ts +18 -1
- package/src/routes.ts +3 -1
- package/src/rules.ts +1 -1
- package/src/schemas.ts +29 -9
- package/src/styles/console.css +1794 -433
- package/src/vocabulary.ts +3 -0
package/dist/components/board.js
CHANGED
|
@@ -4,7 +4,9 @@ import { createPortal } from "react-dom";
|
|
|
4
4
|
import { TASK_STATES, } from "../api.js";
|
|
5
5
|
import { useWords } from "../i18n/index.js";
|
|
6
6
|
import { isPlainClick } from "./shell.js";
|
|
7
|
-
import {
|
|
7
|
+
import { Badge, Button, CategoryBadge, cx, DueBadge, PriorityBadge, personName, Workers, } from "./ui.js";
|
|
8
|
+
/** The columns a board folds unless told otherwise: the work that is over. */
|
|
9
|
+
export const FOLDED_STATES = ["done", "dropped"];
|
|
8
10
|
/** How far a mouse travels on a card before the press is a drag and not a click. */
|
|
9
11
|
const DRAG_SLACK = 4;
|
|
10
12
|
/**
|
|
@@ -30,7 +32,7 @@ export function TaskCard(props) {
|
|
|
30
32
|
event.preventDefault();
|
|
31
33
|
props.onOpen(task);
|
|
32
34
|
}
|
|
33
|
-
}, children: [_jsxs("span", { className: "sc-card-number", children: ["#", task.number] }), " ", task.title] }), _jsxs("div", { className: "sc-card-meta", children: [task.category !== null && _jsx(CategoryBadge, { category: task.category }), _jsx(PriorityBadge, { priority: task.priority }), task.dueOn !== null && (_jsx(DueBadge, { dueOn: task.dueOn, state: task.state, today: props.today })), task.openDecisions > 0 && (_jsx(Badge, { tone: "warning", title: words.board.decisionsTitle, children: words.board.decisions(task.openDecisions) })), _jsx("span", { className: "sc-card-spacer" }),
|
|
35
|
+
}, children: [_jsxs("span", { className: "sc-card-number", children: ["#", task.number] }), " ", task.title] }), _jsxs("div", { className: "sc-card-meta", children: [task.category !== null && _jsx(CategoryBadge, { category: task.category }), _jsx(PriorityBadge, { priority: task.priority }), task.dueOn !== null && (_jsx(DueBadge, { dueOn: task.dueOn, state: task.state, today: props.today })), task.openDecisions > 0 && (_jsx(Badge, { tone: "warning", kind: "count", title: words.board.decisionsTitle, children: words.board.decisions(task.openDecisions) })), _jsx("span", { className: "sc-card-spacer" }), _jsx(Workers, { workers: task.workers, size: "sm" })] })] }));
|
|
34
36
|
}
|
|
35
37
|
const MENU_GAP = 4;
|
|
36
38
|
const MENU_MARGIN = 8;
|
|
@@ -152,6 +154,19 @@ export function Board(props) {
|
|
|
152
154
|
const { onMove } = props;
|
|
153
155
|
const board = useRef(null);
|
|
154
156
|
const [drag, setDrag] = useState(null);
|
|
157
|
+
// The foldable columns a person has opened on this board; the others of them stay folded.
|
|
158
|
+
const [opened, setOpened] = useState(() => new Set());
|
|
159
|
+
const foldable = props.folded ?? FOLDED_STATES;
|
|
160
|
+
const toggle = (state) => setOpened((before) => {
|
|
161
|
+
const after = new Set(before);
|
|
162
|
+
if (after.has(state)) {
|
|
163
|
+
after.delete(state);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
after.add(state);
|
|
167
|
+
}
|
|
168
|
+
return after;
|
|
169
|
+
});
|
|
155
170
|
// What the pointer's release reads, so that the move is made outside a state update.
|
|
156
171
|
const current = useRef(null);
|
|
157
172
|
current.current = drag;
|
|
@@ -283,7 +298,10 @@ export function Board(props) {
|
|
|
283
298
|
const dragging = drag?.moving === true ? drag : null;
|
|
284
299
|
return (_jsxs("div", { ref: board, className: cx("sc-board", onMove !== undefined && "sc-board-movable", dragging !== null && "sc-board-dragging"), children: [TASK_STATES.map((state) => {
|
|
285
300
|
const tasks = props.tasks.filter((task) => task.state === state).sort(byDue);
|
|
286
|
-
|
|
301
|
+
const name = words.vocabulary.state[state];
|
|
302
|
+
const canFold = foldable.includes(state);
|
|
303
|
+
const folded = canFold && !opened.has(state);
|
|
304
|
+
return (_jsxs("section", { className: cx("sc-column", `sc-column-${state}`, folded && "sc-column-folded", dragging?.over === state && "sc-column-over"), "aria-label": name, "data-column": state, children: [_jsxs("header", { className: "sc-column-header", children: [_jsx("h2", { className: "sc-column-title", children: name }), _jsx("span", { className: "sc-column-count", children: tasks.length }), canFold && (_jsx("button", { type: "button", className: "sc-column-toggle", "aria-expanded": !folded, "aria-label": folded ? words.board.unfold(name) : words.board.fold(name), title: folded ? words.board.unfold(name) : words.board.fold(name), onClick: () => toggle(state), children: _jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: _jsx("path", { d: folded ? "M6 4l4 4-4 4" : "M10 4l-4 4 4 4", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }) }))] }), !folded && (_jsxs("div", { className: "sc-column-body", children: [tasks.map((task) => (_jsx(TaskCard, { task: task, href: props.taskHref(task), onOpen: props.onOpen, today: props.today, onPress: onMove === undefined ? undefined : press, dragging: dragging?.task.id === task.id, editHref: props.editHref?.(task), onEdit: props.onEdit, onArchive: props.onArchive }, task.id))), tasks.length === 0 && state === "idea" && props.empty] }))] }, state));
|
|
287
305
|
}), dragging !== null && (_jsx("div", { className: "sc-drag-ghost", "aria-hidden": "true", style: {
|
|
288
306
|
width: dragging.width,
|
|
289
307
|
transform: `translate(${dragging.x - dragging.grip.x}px, ${dragging.y - dragging.grip.y}px)`,
|
|
@@ -291,19 +309,49 @@ export function Board(props) {
|
|
|
291
309
|
// The menu too, inert under the pointer, so that the card in hand keeps the shape of the one in its place.
|
|
292
310
|
editHref: props.editHref?.(dragging.task), onArchive: props.onArchive }) }))] }));
|
|
293
311
|
}
|
|
294
|
-
/** What
|
|
312
|
+
/** What a task is found by: its title, its number, its owner and its workers, its category. */
|
|
313
|
+
function wordsOf(task) {
|
|
314
|
+
return [
|
|
315
|
+
task.title,
|
|
316
|
+
`#${task.number}`,
|
|
317
|
+
personName(task.owner),
|
|
318
|
+
task.owner.login,
|
|
319
|
+
...task.workers.flatMap((worker) => [personName(worker), worker.login]),
|
|
320
|
+
task.category?.name ?? "",
|
|
321
|
+
]
|
|
322
|
+
.join("\n")
|
|
323
|
+
.toLowerCase();
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* What the filter keeps of the board: a category or none, a goal or none, a person, one's own,
|
|
327
|
+
* and the tasks that contain every word typed, whatever the case.
|
|
328
|
+
*/
|
|
295
329
|
export function filterTasks(tasks, filter, me) {
|
|
330
|
+
const wanted = filter.words === undefined
|
|
331
|
+
? []
|
|
332
|
+
: filter.words
|
|
333
|
+
.toLowerCase()
|
|
334
|
+
.split(/\s+/)
|
|
335
|
+
.filter((word) => word.length > 0);
|
|
296
336
|
return tasks.filter((task) => {
|
|
337
|
+
if (wanted.length > 0) {
|
|
338
|
+
const found = wordsOf(task);
|
|
339
|
+
if (!wanted.every((word) => found.includes(word))) {
|
|
340
|
+
return false;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
297
343
|
if (filter.category !== undefined && (task.category?.key ?? "") !== filter.category) {
|
|
298
344
|
return false;
|
|
299
345
|
}
|
|
300
346
|
if (filter.goal !== undefined && (task.goalId ?? "") !== filter.goal) {
|
|
301
347
|
return false;
|
|
302
348
|
}
|
|
303
|
-
if (filter.person !== undefined &&
|
|
349
|
+
if (filter.person !== undefined &&
|
|
350
|
+
!task.workers.some((worker) => worker.id === filter.person)) {
|
|
304
351
|
return false;
|
|
305
352
|
}
|
|
306
|
-
if (filter.mine === true &&
|
|
353
|
+
if (filter.mine === true &&
|
|
354
|
+
(me === undefined || !task.workers.some((worker) => worker.id === me.id))) {
|
|
307
355
|
return false;
|
|
308
356
|
}
|
|
309
357
|
return true;
|
|
@@ -322,7 +370,9 @@ export function BoardFilters(props) {
|
|
|
322
370
|
}
|
|
323
371
|
props.onChange(next);
|
|
324
372
|
};
|
|
325
|
-
return (_jsxs("form", { className: "sc-filters", "aria-label": words.aria, onSubmit: (event) => event.preventDefault(), children: [_jsxs("label", { className: "sc-field sc-field-inline", children: [_jsx("span", { className: "sc-visually-hidden", children: words.
|
|
373
|
+
return (_jsxs("form", { className: "sc-filters", "aria-label": words.aria, onSubmit: (event) => event.preventDefault(), children: [_jsxs("label", { className: "sc-field sc-field-inline sc-filters-words", children: [_jsx("span", { className: "sc-visually-hidden", children: words.words }), _jsx("input", { className: "sc-input", type: "search", placeholder: words.words, value: filter.words ?? "", onChange: (event) => event.target.value.trim() === ""
|
|
374
|
+
? change({}, "words")
|
|
375
|
+
: change({ words: event.target.value }) })] }), _jsxs("label", { className: "sc-field sc-field-inline", children: [_jsx("span", { className: "sc-visually-hidden", children: words.anyCategory }), _jsxs("select", { className: "sc-input", value: filter.category ?? "*", onChange: (event) => event.target.value === "*"
|
|
326
376
|
? change({}, "category")
|
|
327
377
|
: change({ category: event.target.value }), children: [_jsx("option", { value: "*", children: words.anyCategory }), _jsx("option", { value: "", children: words.noCategory }), props.categories.map((category) => (_jsx("option", { value: category.key, children: category.name }, category.key)))] })] }), goals.length > 0 && (_jsxs("label", { className: "sc-field sc-field-inline", children: [_jsx("span", { className: "sc-visually-hidden", children: words.anyGoal }), _jsxs("select", { className: "sc-input", value: filter.goal ?? "*", onChange: (event) => event.target.value === "*" ? change({}, "goal") : change({ goal: event.target.value }), children: [_jsx("option", { value: "*", children: words.anyGoal }), _jsx("option", { value: "", children: words.noGoal }), goals.map((goal) => (_jsx("option", { value: goal.id, children: goal.title }, goal.id)))] })] })), _jsxs("label", { className: "sc-field sc-field-inline", children: [_jsx("span", { className: "sc-visually-hidden", children: words.everyone }), _jsxs("select", { className: "sc-input", value: filter.mine === true ? "mine" : (filter.person ?? "*"), onChange: (event) => {
|
|
328
378
|
const value = event.target.value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board.js","sourceRoot":"","sources":["../../src/components/board.tsx"],"names":[],"mappings":";AAAA,OAAO,EAIL,WAAW,EACX,SAAS,EACT,MAAM,EACN,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAKL,WAAW,GAEZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EACL,MAAM,EACN,KAAK,EACL,MAAM,EACN,aAAa,EACb,EAAE,EACF,QAAQ,EACR,aAAa,EACb,UAAU,GACX,MAAM,SAAS,CAAC;AAiCjB,oFAAoF;AACpF,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB;;;GAGG;AACH,MAAM,OAAO,GAAG,GAAG,CAAC;AACpB,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,oGAAoG;AACpG,MAAM,IAAI,GAAG,EAAE,CAAC;AAChB,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,sGAAsG;AACtG,MAAM,UAAU,aAAa,CAAC,KAAgC;IAC5D,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AACtD,CAAC;AA0CD,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAChC,OAAO,CACL,mBACE,SAAS,EAAE,EAAE,CACX,SAAS,EACT,OAAO,KAAK,SAAS,IAAI,iBAAiB,EAC1C,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,kBAAkB,CAC9C,gBACW,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,EAC3C,aAAa,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,aAEjF,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,CAClE,KAAC,QAAQ,IACP,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,SAAS,EAAE,KAAK,CAAC,SAAS,GAC1B,CACH,EACD,aACE,SAAS,EAAC,eAAe,EACzB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,mGAAmG;gBACnG,SAAS,EAAE,KAAK,EAChB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;oBACjB,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;wBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;wBACvB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACrB,CAAC;gBACH,CAAC,aAED,gBAAM,SAAS,EAAC,gBAAgB,kBAAG,IAAI,CAAC,MAAM,IAAQ,OAAE,IAAI,CAAC,KAAK,IAChE,EACJ,eAAK,SAAS,EAAC,cAAc,aAC1B,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAC,aAAa,IAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAI,EACrE,KAAC,aAAa,IAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAI,EACzC,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,CACtB,KAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAI,CACvE,EACA,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CACzB,KAAC,KAAK,IAAC,IAAI,EAAC,SAAS,EAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,cAAc,YACpD,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,GACpC,CACT,EACD,eAAM,SAAS,EAAC,gBAAgB,GAAG,EAClC,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAC,MAAM,IAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAC,IAAI,GAAG,IAClE,IACE,CACX,CAAC;AACJ,CAAC;AAQD,MAAM,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,KAKjB;IACC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC;IAC5B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,qBAAqB,EAAE,CAAC;QACrD,IAAI,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,KAAK,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QACD,QAAQ,CAAC;YACP,GAAG,EAAE,IAAI,CAAC,MAAM,GAAG,QAAQ;YAC3B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;SAC7D,CAAC,CAAC;IACL,CAAC,CAAC;IACF,sFAAsF;IACtF,MAAM,GAAG,GAAG,WAAW,CACrB,CAAC,MAA0B,EAAW,EAAE,CACtC,MAAM,YAAY,IAAI;QACtB,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,EACzF,EAAE,CACH,CAAC;IACF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,kFAAkF;QAClF,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,qBAAqB,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,qBAAqB,EAAE,CAAC;QACvD,IACE,KAAK,KAAK,SAAS;YACnB,MAAM,KAAK,SAAS;YACpB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,GAAG,WAAW,EAC/C,CAAC;YACD,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CACnB,OAAO,KAAK,IAAI;gBACd,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,GAAG,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CACrF,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,OAAO,EAAE,aAAa,CAAc,mBAAmB,CAAC,EAAE,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/F,MAAM,IAAI,GAAG,CAAC,KAAmB,EAAE,EAAE;YACnC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvB,KAAK,EAAE,CAAC;YACV,CAAC;QACH,CAAC,CAAC;QACF,MAAM,GAAG,GAAG,CAAC,KAAoB,EAAE,EAAE;YACnC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC3B,KAAK,EAAE,CAAC;gBACR,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC/C,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC1C,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACzC,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAClD,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAC7C,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAClD,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IACvB,kDAAkD;IAClD,MAAM,IAAI,GAAG,CAAC,KAAyC,EAAE,EAAE;QACzD,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YACzD,OAAO;QACT,CAAC;QACD,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAc,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7F,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC;QACtC,MAAM,EAAE,GAAG,MAAM,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IAC5D,CAAC,CAAC;IACF,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACvB,OAAO,CACL,8BACE,iBACE,IAAI,EAAC,QAAQ,EACb,GAAG,EAAE,MAAM,EACX,SAAS,EAAC,qBAAqB,gBACnB,KAAK,CAAC,KAAK,CAAC,IAAI,mBACd,MAAM,mBACL,IAAI,EACnB,OAAO,EAAE,MAAM,YAEf,eAAK,OAAO,EAAC,WAAW,iBAAa,MAAM,aACzC,iBAAQ,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,KAAK,EAAC,IAAI,EAAC,cAAc,GAAG,EACpD,iBAAQ,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,KAAK,EAAC,IAAI,EAAC,cAAc,GAAG,EACpD,iBAAQ,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,KAAK,EAAC,IAAI,EAAC,cAAc,GAAG,IACjD,GACC,EACR,KAAK,KAAK,IAAI;gBACb,OAAO,QAAQ,KAAK,WAAW;gBAC/B,YAAY,CACV,eACE,GAAG,EAAE,KAAK,EACV,SAAS,EAAC,cAAc,EACxB,IAAI,EAAC,MAAM,gBACC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,EAC3C,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAC7C,SAAS,EAAE,IAAI;oBACf,mGAAmG;oBACnG,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;wBAChB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;4BAC9B,KAAK,EAAE,CAAC;wBACV,CAAC;oBACH,CAAC,aAEA,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,CAC/B,YACE,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,cAAc,EACxB,IAAI,EAAE,KAAK,CAAC,QAAQ,EACpB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gCACjB,KAAK,EAAE,CAAC;gCACR,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;oCACtD,KAAK,CAAC,cAAc,EAAE,CAAC;oCACvB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gCACrB,CAAC;4BACH,CAAC,YAEA,KAAK,CAAC,MAAM,CAAC,IAAI,GAChB,CACL,EACA,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,CAChC,iBACE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,cAAc,EACxB,OAAO,EAAE,GAAG,EAAE;gCACZ,KAAK,EAAE,CAAC;gCACR,KAAK,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC;4BAC1B,CAAC,YAEA,KAAK,CAAC,IAAI,CAAC,OAAO,GACZ,CACV,IACG,EACN,QAAQ,CAAC,IAAI,CACd,IACF,CACJ,CAAC;AACJ,CAAC;AAED,mHAAmH;AACnH,MAAM,UAAU,KAAK,CAAC,CAAW,EAAE,CAAW;IAC5C,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC;QACD,OAAO,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC7B,CAAC;AAED,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC;AAEhC,MAAM,UAAU,KAAK,CAAC,KAAiB;IACrC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,MAAM,KAAK,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAc,IAAI,CAAC,CAAC;IACpD,qFAAqF;IACrF,MAAM,OAAO,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAC1C,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IACvB,8FAA8F;IAC9F,8DAA8D;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE5B,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,IAAc,EAAE,KAAqC,EAAE,EAAE;QAClF,uFAAuF;QACvF,IACE,KAAK,CAAC,MAAM,KAAK,CAAC;YAClB,CAAC,KAAK,CAAC,MAAM,YAAY,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,EAC5E,CAAC;YACD,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,KAAK,OAAO,CAAC;QAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,sFAAsF;YACtF,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACzD,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QACpD,OAAO,CAAC;YACN,IAAI;YACJ,IAAI;YACJ,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;YACrD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,IAAI;YACJ,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,6FAA6F;IAC7F,gGAAgG;IAChG,6FAA6F;IAC7F,gGAAgG;IAChG,gCAAgC;IAChC,MAAM,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAC3C,aAAa,CACX,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAc,eAAe,CAAC,EAAE,OAAO,CAAC,MAAM,CACvF,CAAC;QACJ,MAAM,MAAM,GAAG,CAAC,KAAmB,EAAE,EAAE;YACrC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;YACzC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBACjB,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBACpB,OAAO,MAAM,CAAC;gBAChB,CAAC;gBACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACnE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;oBACnB,mFAAmF;oBACnF,sDAAsD;oBACtD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;wBAChB,OAAO,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC7D,CAAC;oBACD,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC;wBAC5B,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC7B,CAAC;oBACD,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;gBACvB,CAAC;gBACD,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACpE,CAAC,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC9B,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACtC,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;gBAC7C,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;oBACzB,OAAO,CAAC,UAAU,IAAI,SAAS,CAAC;gBAClC,CAAC;qBAAM,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC;oBACjC,OAAO,CAAC,UAAU,IAAI,SAAS,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QACF,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBACjB,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBACrC,OAAO,MAAM,CAAC;gBAChB,CAAC;gBACD,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;gBACrB,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,CAAC,KAAiB,EAAE,EAAE;YACpC,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1B,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,CAAC,KAAmB,EAAE,EAAE;YACtC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;YAC7B,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,uFAAuF;gBACvF,8EAA8E;gBAC9E,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;gBAChD,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACjF,CAAC;YACD,IAAI,IAAI,EAAE,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACxD,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBACvD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACnD,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;YACD,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,CAAC,KAAiB,EAAE,EAAE;YAClC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,KAAK,CAAC,cAAc,EAAE,CAAC;YACzB,CAAC;QACH,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9F,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAClD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAClE,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO,GAAG,EAAE;YACV,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;YACD,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAClD,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,CAAC,mBAAmB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YACrD,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACjD,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YACnD,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QACxB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAEnB,gGAAgG;IAChG,MAAM,QAAQ,GAAG,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,OAAO,CACL,eACE,GAAG,EAAE,KAAK,EACV,SAAS,EAAE,EAAE,CACX,UAAU,EACV,MAAM,KAAK,SAAS,IAAI,kBAAkB,EAC1C,QAAQ,KAAK,IAAI,IAAI,mBAAmB,CACzC,aAEA,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACzB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC7E,OAAO,CACL,mBAEE,SAAS,EAAE,EAAE,CACX,WAAW,EACX,aAAa,KAAK,EAAE,EACpB,QAAQ,EAAE,IAAI,KAAK,KAAK,IAAI,gBAAgB,CAC7C,gBACW,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,iBAC5B,KAAK,aAElB,kBAAQ,SAAS,EAAC,kBAAkB,aAClC,aAAI,SAAS,EAAC,iBAAiB,YAAE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAM,EACpE,eAAM,SAAS,EAAC,iBAAiB,YAAE,KAAK,CAAC,MAAM,GAAQ,IAChD,EACT,eAAK,SAAS,EAAC,gBAAgB,aAC5B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,KAAC,QAAQ,IAEP,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC1B,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EACjD,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EACvC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAChC,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,SAAS,EAAE,KAAK,CAAC,SAAS,IATrB,IAAI,CAAC,EAAE,CAUZ,CACH,CAAC,EACD,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,IAClD,KA7BD,KAAK,CA8BF,CACX,CAAC;YACJ,CAAC,CAAC,EACD,QAAQ,KAAK,IAAI,IAAI,CAEpB,cACE,SAAS,EAAC,eAAe,iBACb,MAAM,EAClB,KAAK,EAAE;oBACL,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,SAAS,EAAE,aAAa,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK;iBAC7F,YAED,KAAC,QAAQ,IACP,IAAI,EAAE,QAAQ,CAAC,IAAI,EACnB,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EACnC,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,2GAA2G;oBAC3G,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EACzC,SAAS,EAAE,KAAK,CAAC,SAAS,GAC1B,GACE,CACP,IACG,CACP,CAAC;AACJ,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,WAAW,CACzB,KAA0B,EAC1B,MAAmB,EACnB,EAA2B;IAE3B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;YACrE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9E,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAgBD,6EAA6E;AAC7E,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;IACvC,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,CAAC,KAAkB,EAAE,IAAwB,EAAE,EAAE;QAC9D,MAAM,IAAI,GAA4B,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;QAC9D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,IAAmB,CAAC,CAAC;IACtC,CAAC,CAAC;IACF,OAAO,CACL,gBACE,SAAS,EAAC,YAAY,gBACV,KAAK,CAAC,IAAI,EACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,aAE3C,iBAAO,SAAS,EAAC,0BAA0B,aACzC,eAAM,SAAS,EAAC,oBAAoB,YAAE,KAAK,CAAC,WAAW,GAAQ,EAC/D,kBACE,SAAS,EAAC,UAAU,EACpB,KAAK,EAAE,MAAM,CAAC,QAAQ,IAAI,GAAG,EAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,GAAG;4BACxB,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC;4BACxB,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,aAG9C,iBAAQ,KAAK,EAAC,GAAG,YAAE,KAAK,CAAC,WAAW,GAAU,EAC9C,iBAAQ,KAAK,EAAC,EAAE,YAAE,KAAK,CAAC,UAAU,GAAU,EAC3C,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAClC,iBAA2B,KAAK,EAAE,QAAQ,CAAC,GAAG,YAC3C,QAAQ,CAAC,IAAI,IADH,QAAQ,CAAC,GAAG,CAEhB,CACV,CAAC,IACK,IACH,EACP,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CACnB,iBAAO,SAAS,EAAC,0BAA0B,aACzC,eAAM,SAAS,EAAC,oBAAoB,YAAE,KAAK,CAAC,OAAO,GAAQ,EAC3D,kBACE,SAAS,EAAC,UAAU,EACpB,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,GAAG,EACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,aAGxF,iBAAQ,KAAK,EAAC,GAAG,YAAE,KAAK,CAAC,OAAO,GAAU,EAC1C,iBAAQ,KAAK,EAAC,EAAE,YAAE,KAAK,CAAC,MAAM,GAAU,EACvC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,iBAAsB,KAAK,EAAE,IAAI,CAAC,EAAE,YACjC,IAAI,CAAC,KAAK,IADA,IAAI,CAAC,EAAE,CAEX,CACV,CAAC,IACK,IACH,CACT,EACD,iBAAO,SAAS,EAAC,0BAA0B,aACzC,eAAM,SAAS,EAAC,oBAAoB,YAAE,KAAK,CAAC,QAAQ,GAAQ,EAC5D,kBACE,SAAS,EAAC,UAAU,EACpB,KAAK,EAAE,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,EAC7D,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;4BAClB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;4BACjC,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;gCAClB,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;gCAC/C,OAAO;4BACT,CAAC;4BACD,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;gCACrB,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;gCAC1C,OAAO;4BACT,CAAC;4BACD,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;wBAC7C,CAAC,aAED,iBAAQ,KAAK,EAAC,GAAG,YAAE,KAAK,CAAC,QAAQ,GAAU,EAC1C,KAAK,CAAC,EAAE,KAAK,SAAS,IAAI,iBAAQ,KAAK,EAAC,MAAM,YAAE,KAAK,CAAC,IAAI,GAAU,EACpE,KAAK,CAAC,MAAM;iCACV,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;iCAC9C,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACf,iBAAwB,KAAK,EAAE,MAAM,CAAC,EAAE,YACrC,UAAU,CAAC,MAAM,CAAC,IADR,MAAM,CAAC,EAAE,CAEb,CACV,CAAC,IACG,IACH,EACR,eAAM,SAAS,EAAC,2BAA2B,YAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAQ,EAC3F,QAAQ,IAAI,CACX,KAAC,MAAM,IAAC,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,YAChE,KAAK,CAAC,KAAK,GACL,CACV,IACI,CACR,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"board.js","sourceRoot":"","sources":["../../src/components/board.tsx"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,8 @@ export interface WeekSegment {
|
|
|
36
36
|
* go first, so that the lanes stay few.
|
|
37
37
|
*/
|
|
38
38
|
export declare function weekSegments(week: readonly GridDay[], tasks: readonly RestTask[]): WeekSegment[];
|
|
39
|
+
/** The tasks of one day: those on it alone and those lying across it, the open ones first. */
|
|
40
|
+
export declare function tasksOn(day: string, tasks: readonly RestTask[]): RestTask[];
|
|
39
41
|
/** Where the card of the item under the pointer goes: the side with more room, kept within the window. */
|
|
40
42
|
export interface TipPlace {
|
|
41
43
|
readonly side: "above" | "below";
|
|
@@ -67,6 +69,8 @@ export interface TaskTipProps {
|
|
|
67
69
|
* out of the accessible tree: the item's text is the title, and the facts are on the task's page.
|
|
68
70
|
*/
|
|
69
71
|
export declare function TaskTip(props: TaskTipProps): import("react").JSX.Element;
|
|
72
|
+
/** How many of a day's own tasks a cell shows before the way to the rest. */
|
|
73
|
+
export declare const DAY_SHOWN = 3;
|
|
70
74
|
export declare function Calendar(props: CalendarProps): import("react").JSX.Element;
|
|
71
75
|
export interface WeekProps {
|
|
72
76
|
readonly tasks: readonly RestTask[];
|
|
@@ -86,23 +90,29 @@ export interface WeekProps {
|
|
|
86
90
|
export declare function Week(props: WeekProps): import("react").JSX.Element;
|
|
87
91
|
/** One person's share of the open work, as the table of who has what says it. */
|
|
88
92
|
export interface WorkloadRow {
|
|
89
|
-
/** The person, or nobody for the tasks
|
|
93
|
+
/** The person, or nobody for the tasks with no worker. */
|
|
90
94
|
readonly person: RestPerson | undefined;
|
|
91
95
|
readonly open: number;
|
|
92
96
|
readonly inProgress: number;
|
|
93
|
-
/** Open, and due
|
|
94
|
-
readonly
|
|
97
|
+
/** Open, and due from today through the last day of this week, as the workspace begins its weeks (ADR-0039). */
|
|
98
|
+
readonly dueThisWeek: number;
|
|
95
99
|
/** Open, and past its day. */
|
|
96
100
|
readonly overdue: number;
|
|
97
101
|
}
|
|
98
|
-
/**
|
|
99
|
-
|
|
102
|
+
/**
|
|
103
|
+
* Who has what, from the open tasks: a task counted for each of its workers, by name, and the
|
|
104
|
+
* tasks with none last; this week is the days from today through the week's last day, the week
|
|
105
|
+
* beginning on `firstDay` (1 for Monday, 7 for Sunday).
|
|
106
|
+
*/
|
|
107
|
+
export declare function workloadOf(tasks: readonly RestTask[], today: string, firstDay?: number): WorkloadRow[];
|
|
100
108
|
export interface WorkloadProps {
|
|
101
109
|
readonly tasks: readonly RestTask[];
|
|
102
110
|
readonly today?: string | undefined;
|
|
103
|
-
/**
|
|
111
|
+
/** The day the week begins on, as the workspace says (ADR-0035); the language's when left out. */
|
|
112
|
+
readonly weekStart?: WeekStart | undefined;
|
|
113
|
+
/** Where the board is, narrowed to one person's tasks, or to those with no worker. */
|
|
104
114
|
readonly personHref?: ((person: RestPerson | undefined) => string) | undefined;
|
|
105
115
|
}
|
|
106
|
-
/** Who has what: a row per person, and what of theirs is late or due
|
|
116
|
+
/** Who has what: a row per person, and what of theirs is late or due this week. */
|
|
107
117
|
export declare function Workload(props: WorkloadProps): import("react").JSX.Element | null;
|
|
108
118
|
//# sourceMappingURL=calendar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/components/calendar.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/components/calendar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,8 @@ import { useState } from "react";
|
|
|
3
3
|
import { OPEN_TASK_STATES, } from "../api.js";
|
|
4
4
|
import { addDays, addMonths, daysBetween, deviceLanguage, firstDayOfWeek, formatDay, formatDays, formatMonth, formatWeekday, monthGrid, monthOf, today as todayOf, weekdays, weekOf, } from "../dates.js";
|
|
5
5
|
import { useLanguage, useWords } from "../i18n/index.js";
|
|
6
|
-
import {
|
|
6
|
+
import { TaskList } from "./task-list.js";
|
|
7
|
+
import { CategoryBadge, cx, PersonChip, personName, StateBadge, Time, Workers } from "./ui.js";
|
|
7
8
|
// The calendar of a project (ADR-0019): the month as a grid, or one week on its own. A task
|
|
8
9
|
// planned from a start to a due day lies across its days as a bar, in a lane of its own within
|
|
9
10
|
// each week so that the bars of one week never cross; a task with one day alone, a due day or
|
|
@@ -79,6 +80,14 @@ function onDays(tasks) {
|
|
|
79
80
|
}
|
|
80
81
|
return on;
|
|
81
82
|
}
|
|
83
|
+
/** The tasks of one day: those on it alone and those lying across it, the open ones first. */
|
|
84
|
+
export function tasksOn(day, tasks) {
|
|
85
|
+
return tasks
|
|
86
|
+
.filter((task) => spans(task)
|
|
87
|
+
? (task.startsOn ?? day) <= day && day <= (task.dueOn ?? day)
|
|
88
|
+
: (task.dueOn ?? task.startsOn) === day)
|
|
89
|
+
.sort((a, b) => Number(isOpen(b)) - Number(isOpen(a)) || a.number - b.number);
|
|
90
|
+
}
|
|
82
91
|
/** How a task reads: struck through once it is over, and marked once its due day is past. */
|
|
83
92
|
const tone = (task, now) => cx(!isOpen(task) && "sc-calendar-over", isOpen(task) && task.dueOn !== null && task.dueOn < now && "sc-calendar-late");
|
|
84
93
|
/** What the card may grow to, in pixels: 20rem at the usual root size, as the style says. */
|
|
@@ -120,7 +129,7 @@ export function TaskTip(props) {
|
|
|
120
129
|
const { task, place } = props;
|
|
121
130
|
const goal = props.goals?.find((candidate) => candidate.id === task.goalId);
|
|
122
131
|
const day = (value) => formatDay(value, tag);
|
|
123
|
-
return (_jsxs("div", { className: cx("sc-task-tip", place.side === "above" ? "sc-task-tip-above" : "sc-task-tip-below"), style: { left: place.shift }, "aria-hidden": "true", children: [_jsxs("p", { className: "sc-task-tip-title", children: ["#", task.number, " ", task.title] }), _jsxs("dl", { className: "sc-task-tip-facts", children: [_jsxs("div", { children: [_jsx("dt", { children: words.task.state }), _jsx("dd", { children: _jsx(StateBadge, { state: task.state }) })] }), _jsxs("div", { children: [_jsx("dt", { children: words.task.form.priority }), _jsx("dd", { children: words.vocabulary.priority[task.priority] })] }), task.category !== null && (_jsxs("div", { children: [_jsx("dt", { children: words.task.category }), _jsx("dd", { children: _jsx(CategoryBadge, { category: task.category }) })] })), goal !== undefined && (_jsxs("div", { children: [_jsx("dt", { children: words.task.goal }), _jsx("dd", { children: goal.title })] })), _jsxs("div", { children: [_jsx("dt", { children: words.task.owner }), _jsx("dd", { children: _jsx(PersonChip, { person: task.owner }) })] }), _jsxs("div", { children: [_jsx("dt", { children: words.task.
|
|
132
|
+
return (_jsxs("div", { className: cx("sc-task-tip", place.side === "above" ? "sc-task-tip-above" : "sc-task-tip-below"), style: { left: place.shift }, "aria-hidden": "true", children: [_jsxs("p", { className: "sc-task-tip-title", children: ["#", task.number, " ", task.title] }), _jsxs("dl", { className: "sc-task-tip-facts", children: [_jsxs("div", { children: [_jsx("dt", { children: words.task.state }), _jsx("dd", { children: _jsx(StateBadge, { state: task.state }) })] }), _jsxs("div", { children: [_jsx("dt", { children: words.task.form.priority }), _jsx("dd", { children: words.vocabulary.priority[task.priority] })] }), task.category !== null && (_jsxs("div", { children: [_jsx("dt", { children: words.task.category }), _jsx("dd", { children: _jsx(CategoryBadge, { category: task.category }) })] })), goal !== undefined && (_jsxs("div", { children: [_jsx("dt", { children: words.task.goal }), _jsx("dd", { children: goal.title })] })), _jsxs("div", { children: [_jsx("dt", { children: words.task.owner }), _jsx("dd", { children: _jsx(PersonChip, { person: task.owner }) })] }), _jsxs("div", { children: [_jsx("dt", { children: words.task.workers }), _jsx("dd", { children: task.workers.length === 0 ? (_jsx("span", { className: "sc-muted", children: words.common.nobody })) : (_jsx("ul", { className: "sc-worker-list", children: task.workers.map((worker) => (_jsx("li", { children: _jsx(PersonChip, { person: worker }) }, worker.id))) })) })] }), (task.startsOn !== null || task.dueOn !== null) && (_jsxs("div", { children: [_jsx("dt", { children: words.task.plan }), _jsx("dd", { children: words.task.planned(task.startsOn === null ? undefined : day(task.startsOn), task.dueOn === null ? undefined : day(task.dueOn)) })] })), task.startedAt !== null && (_jsxs("div", { children: [_jsx("dt", { children: words.task.started }), _jsx("dd", { children: _jsx(Time, { iso: task.startedAt }) })] })), task.doneAt !== null && (_jsxs("div", { children: [_jsx("dt", { children: words.task.done }), _jsx("dd", { children: _jsx(Time, { iso: task.doneAt }) })] })), _jsxs("div", { children: [_jsx("dt", { children: words.task.written }), _jsx("dd", { children: _jsx(Time, { iso: task.createdAt }) })] }), _jsxs("div", { children: [_jsx("dt", { children: words.task.changed }), _jsx("dd", { children: _jsx(Time, { iso: task.updatedAt }) })] })] })] }));
|
|
124
133
|
}
|
|
125
134
|
/** The goals that aim at each day, by day: those with a target day, still planned or worked towards. */
|
|
126
135
|
function goalsOnDays(goals) {
|
|
@@ -139,9 +148,27 @@ function goalsOnDays(goals) {
|
|
|
139
148
|
}
|
|
140
149
|
return on;
|
|
141
150
|
}
|
|
151
|
+
/** How many days a bar has in the week, for its title to run along: a custom property the stylesheet reads. */
|
|
152
|
+
const spanStyle = (span) => ({ "--sc-span": span });
|
|
153
|
+
/** How many of a day's own tasks a cell shows before the way to the rest. */
|
|
154
|
+
export const DAY_SHOWN = 3;
|
|
142
155
|
/** One week as a row of cells: the bars across the days in their lanes, then the tasks on each day. */
|
|
143
156
|
function WeekRow(props) {
|
|
144
157
|
const { week, segments, now } = props;
|
|
158
|
+
const words = useWords().calendar;
|
|
159
|
+
const { tag } = useLanguage();
|
|
160
|
+
// The days a person opened in this week, each showing all of its tasks.
|
|
161
|
+
const [opened, setOpened] = useState(() => new Set());
|
|
162
|
+
const toggle = (day) => setOpened((before) => {
|
|
163
|
+
const after = new Set(before);
|
|
164
|
+
if (after.has(day)) {
|
|
165
|
+
after.delete(day);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
after.add(day);
|
|
169
|
+
}
|
|
170
|
+
return after;
|
|
171
|
+
});
|
|
145
172
|
const pointing = (task, day) => ({
|
|
146
173
|
onMouseEnter: (event) => props.onPoint(task, day, event.currentTarget),
|
|
147
174
|
onMouseLeave: props.onLeave,
|
|
@@ -149,37 +176,58 @@ function WeekRow(props) {
|
|
|
149
176
|
onBlur: props.onLeave,
|
|
150
177
|
});
|
|
151
178
|
const tipIn = (task, day) => props.pointed !== null && props.pointed.task.id === task.id && props.pointed.day === day ? (_jsx(TaskTip, { task: task, goals: props.goals, place: props.pointed.place })) : null;
|
|
152
|
-
const who = (task) => props.people === true
|
|
179
|
+
const who = (task) => props.people === true ? _jsx(Workers, { workers: task.workers, size: "xs", shown: 2 }) : null;
|
|
153
180
|
const lanes = segments.reduce((most, segment) => Math.max(most, segment.lane + 1), 0);
|
|
154
|
-
return (_jsx("tr", { children: week.map((cell, column) =>
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
181
|
+
return (_jsx("tr", { children: week.map((cell, column) => {
|
|
182
|
+
const number = Number(cell.day.slice(8));
|
|
183
|
+
// Everything on the day: its own tasks and the bars crossing it, for a phone's count.
|
|
184
|
+
const total = (props.on.get(cell.day)?.length ?? 0) +
|
|
185
|
+
segments.filter((segment) => segment.from <= column && column <= segment.to).length;
|
|
186
|
+
return (_jsxs("td", { className: cx("sc-calendar-cell", !cell.inMonth && "sc-calendar-cell-outside", cell.day === now && "sc-calendar-cell-today", props.picked === cell.day && "sc-calendar-cell-picked"), children: [props.onPick === undefined ? (_jsx("span", { className: "sc-calendar-day", children: number })) : (_jsx("button", { type: "button", className: "sc-calendar-day", "aria-pressed": props.picked === cell.day, "aria-label": words.onDay(formatDay(cell.day, tag)), onClick: () => props.onPick?.(cell.day), children: number })), props.goalHref !== undefined &&
|
|
187
|
+
(props.goalsOn?.get(cell.day) ?? []).map((goal) => (_jsxs("a", { className: cx("sc-calendar-goal", `sc-category-${goal.category?.color ?? "gray"}`, goal.state === "done" && "sc-calendar-over"), href: props.goalHref?.(goal), children: [_jsx("span", { className: "sc-calendar-flag", "aria-hidden": "true" }), _jsx("span", { className: "sc-calendar-task-title", children: goal.title })] }, goal.id))), Array.from({ length: lanes }, (_, lane) => {
|
|
188
|
+
const segment = segments.find((candidate) => candidate.lane === lane && candidate.from <= column && column <= candidate.to);
|
|
189
|
+
if (segment === undefined) {
|
|
190
|
+
// The lane is someone else's on this day: the bars below keep their height.
|
|
191
|
+
// biome-ignore lint/suspicious/noArrayIndexKey: an empty lane is nothing but its position, and the lanes of a week never reorder
|
|
192
|
+
return _jsx("span", { className: "sc-calendar-lane", "aria-hidden": "true" }, lane);
|
|
193
|
+
}
|
|
194
|
+
const { task } = segment;
|
|
195
|
+
// The first piece carries the title; with more days in the week, the title runs along
|
|
196
|
+
// the bar as far as they reach, over the pieces after it, instead of stopping at the
|
|
197
|
+
// first day's edge.
|
|
198
|
+
const span = segment.to - segment.from + 1;
|
|
199
|
+
const spanning = segment.from === column && span > 1;
|
|
200
|
+
// Every piece of the task under the pointer lights together, in every week it crosses.
|
|
201
|
+
const pointed = props.pointed !== null && props.pointed.task.id === task.id;
|
|
202
|
+
return (_jsxs("a", { className: cx("sc-calendar-bar", `sc-category-${task.category?.color ?? "gray"}`, segment.from === column && segment.begins && "sc-calendar-bar-begins", segment.to === column && segment.ends && "sc-calendar-bar-ends", spanning && "sc-calendar-bar-spanning", pointed && "sc-calendar-bar-pointed", tone(task, now)), style: spanning ? spanStyle(span) : undefined, href: props.taskHref(task), ...pointing(task, cell.day), children: [segment.from === column && (_jsxs(_Fragment, { children: [props.markOf?.(task), who(task), _jsx("span", { className: cx("sc-calendar-task-title", spanning && "sc-calendar-task-title-spanning"), children: task.title })] })), tipIn(task, cell.day)] }, task.id));
|
|
203
|
+
}), (() => {
|
|
204
|
+
const all = props.on.get(cell.day) ?? [];
|
|
205
|
+
const open = opened.has(cell.day);
|
|
206
|
+
const shown = open || all.length <= DAY_SHOWN + 1 ? all : all.slice(0, DAY_SHOWN);
|
|
207
|
+
return (_jsxs(_Fragment, { children: [shown.map((task) => {
|
|
208
|
+
const mark = props.markOf?.(task);
|
|
209
|
+
return (_jsxs("a", { className: cx("sc-calendar-task", tone(task, now)), href: props.taskHref(task), ...pointing(task, cell.day), children: [mark === undefined || mark === null ? (_jsx("span", { className: cx("sc-calendar-dot", `sc-category-${task.category?.color ?? "gray"}`) })) : (mark), who(task), _jsx("span", { className: "sc-calendar-task-title", children: task.title }), tipIn(task, cell.day)] }, task.id));
|
|
210
|
+
}), all.length > DAY_SHOWN + 1 && (_jsx("button", { type: "button", className: "sc-calendar-more", "aria-expanded": open, onClick: () => toggle(cell.day), children: open ? words.fewer : words.more(all.length - DAY_SHOWN) }))] }));
|
|
211
|
+
})(), total > DAY_SHOWN && (_jsx("span", { className: "sc-calendar-count", "aria-hidden": "true", children: total }))] }, cell.day));
|
|
212
|
+
}) }));
|
|
168
213
|
}
|
|
169
214
|
export function Calendar(props) {
|
|
170
215
|
const words = useWords().calendar;
|
|
171
216
|
const { tag } = useLanguage();
|
|
172
217
|
const [pointed, point, leave] = usePointed();
|
|
218
|
+
// The day whose tasks are listed under the month, once its number is pressed.
|
|
219
|
+
const [picked, setPicked] = useState(null);
|
|
173
220
|
const now = props.today ?? todayOf();
|
|
174
221
|
const firstDay = firstDayOfWeek(deviceLanguage(tag), props.weekStart);
|
|
175
222
|
const weeks = monthGrid(props.month, firstDay);
|
|
223
|
+
const onPicked = picked === null ? [] : tasksOn(picked, props.tasks);
|
|
176
224
|
const on = onDays(props.tasks);
|
|
177
225
|
const goalsOn = props.goalHref === undefined ? undefined : goalsOnDays(props.goals ?? []);
|
|
178
226
|
const inMonth = (day) => monthOf(day) === props.month;
|
|
179
227
|
const monthWeeks = weeks.map((week) => ({ week, segments: weekSegments(week, props.tasks) }));
|
|
180
228
|
const nothing = [...on.keys()].every((day) => !inMonth(day)) &&
|
|
181
229
|
monthWeeks.every(({ week, segments }) => segments.every((segment) => !week.slice(segment.from, segment.to + 1).some((cell) => cell.inMonth)));
|
|
182
|
-
return (_jsxs("div", { className: "sc-calendar", children: [_jsxs("div", { className: "sc-calendar-head", children: [_jsx("h2", { className: "sc-calendar-month", children: formatMonth(props.month, tag) }), _jsxs("nav", { className: "sc-calendar-nav", "aria-label": words.grid, children: [_jsx("a", { className: "sc-button sc-button-ghost sc-button-sm", href: props.monthHref(addMonths(props.month, -1)), "aria-label": words.previous, children: "<" }), _jsx("a", { className: "sc-button sc-button-ghost sc-button-sm", href: props.monthHref(monthOf(now)), children: words.thisMonth }), _jsx("a", { className: "sc-button sc-button-ghost sc-button-sm", href: props.monthHref(addMonths(props.month, 1)), "aria-label": words.next, children: ">" })] })] }), _jsxs("table", { className: "sc-calendar-grid", "aria-label": words.grid, children: [_jsx("thead", { children: _jsx("tr", { children: weekdays(firstDay).map((weekday) => (_jsx("th", { scope: "col", children: formatWeekday(weekday, tag) }, weekday))) }) }), _jsx("tbody", { children: monthWeeks.map(({ week, segments }) => (_jsx(WeekRow, { week: week, segments: segments, on: on, now: now, taskHref: props.taskHref, pointed: pointed, goals: props.goals, goalsOn: goalsOn, goalHref: props.goalHref, onPoint: point, onLeave: leave, people: true }, week[0]?.day))) })] }), (props.categories ?? []).length > 0 && (_jsx("dl", { className: "sc-calendar-legend", "aria-label": words.legend.title, children: (props.categories ?? []).map((category) => (_jsxs("div", { children: [_jsx("dt", { children: _jsx("span", { className: cx("sc-calendar-dot", `sc-category-${category.color}`) }) }), _jsx("dd", { children: category.name })] }, category.key))) })), nothing && _jsx("p", { className: "sc-muted", children: words.nothingDue })] }));
|
|
230
|
+
return (_jsxs("div", { className: "sc-calendar", children: [_jsxs("div", { className: "sc-calendar-head", children: [_jsx("h2", { className: "sc-calendar-month", children: formatMonth(props.month, tag) }), _jsxs("nav", { className: "sc-calendar-nav", "aria-label": words.grid, children: [_jsx("a", { className: "sc-button sc-button-ghost sc-button-sm", href: props.monthHref(addMonths(props.month, -1)), "aria-label": words.previous, children: "<" }), _jsx("a", { className: "sc-button sc-button-ghost sc-button-sm", href: props.monthHref(monthOf(now)), children: words.thisMonth }), _jsx("a", { className: "sc-button sc-button-ghost sc-button-sm", href: props.monthHref(addMonths(props.month, 1)), "aria-label": words.next, children: ">" })] })] }), _jsxs("table", { className: "sc-calendar-grid", "aria-label": words.grid, children: [_jsx("thead", { children: _jsx("tr", { children: weekdays(firstDay).map((weekday) => (_jsx("th", { scope: "col", children: formatWeekday(weekday, tag) }, weekday))) }) }), _jsx("tbody", { children: monthWeeks.map(({ week, segments }) => (_jsx(WeekRow, { week: week, segments: segments, on: on, now: now, taskHref: props.taskHref, pointed: pointed, goals: props.goals, goalsOn: goalsOn, goalHref: props.goalHref, onPoint: point, onLeave: leave, people: true, picked: picked, onPick: (day) => setPicked((before) => (before === day ? null : day)) }, week[0]?.day))) })] }), picked !== null && (_jsxs("section", { className: "sc-calendar-day-list", "aria-label": words.onDay(formatDay(picked, tag)), children: [_jsxs("div", { className: "sc-calendar-day-list-head", children: [_jsxs("h3", { className: "sc-calendar-day-list-title", children: [formatDay(picked, tag), " ", _jsx("span", { className: "sc-column-count", children: onPicked.length })] }), _jsx("button", { type: "button", className: "sc-button sc-button-ghost sc-button-sm", onClick: () => setPicked(null), children: words.close })] }), _jsx(TaskList, { tasks: onPicked, taskHref: props.taskHref, today: now, showState: true, empty: _jsx("p", { className: "sc-muted", children: words.nothingOnDay }) })] })), (props.categories ?? []).length > 0 && (_jsx("dl", { className: "sc-calendar-legend", "aria-label": words.legend.title, children: (props.categories ?? []).map((category) => (_jsxs("div", { children: [_jsx("dt", { children: _jsx("span", { className: cx("sc-calendar-dot", `sc-category-${category.color}`) }) }), _jsx("dd", { children: category.name })] }, category.key))) })), nothing && _jsx("p", { className: "sc-muted", children: words.nothingDue })] }));
|
|
183
231
|
}
|
|
184
232
|
/** One week on its own: the days as columns, the tasks on them, and the weeks around a step away. */
|
|
185
233
|
export function Week(props) {
|
|
@@ -197,30 +245,32 @@ export function Week(props) {
|
|
|
197
245
|
const nothing = segments.length === 0 && days.every((day) => !on.has(day));
|
|
198
246
|
return (_jsxs("div", { className: "sc-calendar sc-week", children: [_jsxs("div", { className: "sc-calendar-head", children: [_jsx("h2", { className: "sc-calendar-month", children: formatDays(first, last, tag) }), _jsxs("nav", { className: "sc-calendar-nav", "aria-label": words.title, children: [_jsx("a", { className: "sc-button sc-button-ghost sc-button-sm", href: props.weekHref(addDays(first, -7)), "aria-label": words.previous, children: "<" }), _jsx("a", { className: "sc-button sc-button-ghost sc-button-sm", href: props.weekHref(now), children: words.thisWeek }), _jsx("a", { className: "sc-button sc-button-ghost sc-button-sm", href: props.weekHref(addDays(first, 7)), "aria-label": words.next, children: ">" })] })] }), _jsxs("table", { className: "sc-calendar-grid", "aria-label": words.title, children: [_jsx("thead", { children: _jsx("tr", { children: weekdays(firstDay).map((weekday) => (_jsx("th", { scope: "col", children: formatWeekday(weekday, tag) }, weekday))) }) }), _jsx("tbody", { children: _jsx(WeekRow, { week: week, segments: segments, on: on, now: now, taskHref: props.taskHref, markOf: props.markOf, pointed: pointed, onPoint: point, onLeave: leave }) })] }), nothing && _jsx("p", { className: "sc-muted", children: words.nothing })] }));
|
|
199
247
|
}
|
|
200
|
-
/**
|
|
201
|
-
|
|
248
|
+
/**
|
|
249
|
+
* Who has what, from the open tasks: a task counted for each of its workers, by name, and the
|
|
250
|
+
* tasks with none last; this week is the days from today through the week's last day, the week
|
|
251
|
+
* beginning on `firstDay` (1 for Monday, 7 for Sunday).
|
|
252
|
+
*/
|
|
253
|
+
export function workloadOf(tasks, today, firstDay = 1) {
|
|
254
|
+
const weekEnd = weekOf(today, firstDay).at(-1) ?? today;
|
|
202
255
|
const rows = new Map();
|
|
203
256
|
for (const task of tasks.filter(isOpen)) {
|
|
204
|
-
const
|
|
205
|
-
const
|
|
206
|
-
|
|
207
|
-
rows.
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
257
|
+
const workers = task.workers.length === 0 ? [undefined] : task.workers;
|
|
258
|
+
for (const worker of workers) {
|
|
259
|
+
const key = worker?.id ?? "";
|
|
260
|
+
const row = rows.get(key);
|
|
261
|
+
if (row === undefined) {
|
|
262
|
+
rows.set(key, { person: worker, tasks: [task] });
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
row.tasks.push(task);
|
|
266
|
+
}
|
|
211
267
|
}
|
|
212
268
|
}
|
|
213
269
|
const count = (list) => ({
|
|
214
270
|
open: list.length,
|
|
215
271
|
inProgress: list.filter((task) => task.state === "in_progress" || task.state === "in_review")
|
|
216
272
|
.length,
|
|
217
|
-
|
|
218
|
-
if (task.dueOn === null) {
|
|
219
|
-
return false;
|
|
220
|
-
}
|
|
221
|
-
const days = daysBetween(today, task.dueOn);
|
|
222
|
-
return days >= 0 && days <= 7;
|
|
223
|
-
}).length,
|
|
273
|
+
dueThisWeek: list.filter((task) => task.dueOn !== null && task.dueOn >= today && task.dueOn <= weekEnd).length,
|
|
224
274
|
overdue: list.filter((task) => task.dueOn !== null && task.dueOn < today).length,
|
|
225
275
|
});
|
|
226
276
|
return [...rows.values()]
|
|
@@ -235,17 +285,18 @@ export function workloadOf(tasks, today) {
|
|
|
235
285
|
return personName(a.person).localeCompare(personName(b.person));
|
|
236
286
|
});
|
|
237
287
|
}
|
|
238
|
-
/** Who has what: a row per person, and what of theirs is late or due
|
|
288
|
+
/** Who has what: a row per person, and what of theirs is late or due this week. */
|
|
239
289
|
export function Workload(props) {
|
|
240
290
|
const words = useWords().calendar.workload;
|
|
241
|
-
const
|
|
291
|
+
const { tag } = useLanguage();
|
|
292
|
+
const rows = workloadOf(props.tasks, props.today ?? todayOf(), firstDayOfWeek(deviceLanguage(tag), props.weekStart));
|
|
242
293
|
if (rows.length === 0) {
|
|
243
294
|
return null;
|
|
244
295
|
}
|
|
245
|
-
return (_jsxs("table", { className: "sc-workload", "aria-label": words.title, children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { scope: "col", children: words.person }), _jsx("th", { scope: "col", children: words.open }), _jsx("th", { scope: "col", children: words.inProgress }), _jsx("th", { scope: "col", children: words.
|
|
296
|
+
return (_jsxs("table", { className: "sc-workload", "aria-label": words.title, children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { scope: "col", children: words.person }), _jsx("th", { scope: "col", children: words.open }), _jsx("th", { scope: "col", children: words.inProgress }), _jsx("th", { scope: "col", children: words.dueThisWeek }), _jsx("th", { scope: "col", children: words.overdue })] }) }), _jsx("tbody", { children: rows.map((row) => {
|
|
246
297
|
const href = props.personHref?.(row.person);
|
|
247
298
|
const who = row.person === undefined ? (_jsx("span", { className: "sc-muted", children: words.unassigned })) : (_jsx(PersonChip, { person: row.person }));
|
|
248
|
-
return (_jsxs("tr", { children: [_jsx("th", { scope: "row", children: href === undefined ? who : _jsx("a", { href: href, children: who }) }), _jsx("td", { children: row.open }), _jsx("td", { children: row.inProgress }), _jsx("td", { className: cx(row.
|
|
299
|
+
return (_jsxs("tr", { children: [_jsx("th", { scope: "row", children: href === undefined ? who : _jsx("a", { href: href, children: who }) }), _jsx("td", { children: row.open }), _jsx("td", { children: row.inProgress }), _jsx("td", { className: cx(row.dueThisWeek > 0 && "sc-workload-soon"), children: row.dueThisWeek }), _jsx("td", { className: cx(row.overdue > 0 && "sc-workload-late"), children: row.overdue })] }, row.person?.id ?? ""));
|
|
249
300
|
}) })] }));
|
|
250
301
|
}
|
|
251
302
|
//# sourceMappingURL=calendar.js.map
|