@skillcdn/console 0.4.2 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/api.d.ts +3 -3
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +3 -3
- package/dist/api.js.map +1 -1
- package/dist/cli/cli.d.ts.map +1 -1
- package/dist/cli/cli.js +120 -33
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/format.d.ts +4 -2
- package/dist/cli/format.d.ts.map +1 -1
- package/dist/cli/format.js +38 -10
- package/dist/cli/format.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +22 -15
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/plugin-check.d.ts +10 -1
- package/dist/cli/plugin-check.d.ts.map +1 -1
- package/dist/cli/plugin-check.js +45 -4
- package/dist/cli/plugin-check.js.map +1 -1
- package/dist/cli/plugin-cli.d.ts +1 -1
- package/dist/cli/plugin-cli.d.ts.map +1 -1
- package/dist/cli/plugin-cli.js +80 -5
- package/dist/cli/plugin-cli.js.map +1 -1
- package/dist/cli/plugin-init.d.ts +19 -0
- package/dist/cli/plugin-init.d.ts.map +1 -1
- package/dist/cli/plugin-init.js +141 -3
- package/dist/cli/plugin-init.js.map +1 -1
- package/dist/client.d.ts +7 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +18 -5
- package/dist/client.js.map +1 -1
- package/dist/compat.js +1 -1
- package/dist/components/board.d.ts +8 -0
- package/dist/components/board.d.ts.map +1 -1
- package/dist/components/board.js +3 -3
- package/dist/components/board.js.map +1 -1
- package/dist/components/comments.d.ts.map +1 -1
- package/dist/components/comments.js +1 -1
- package/dist/components/comments.js.map +1 -1
- package/dist/components/decision-form.d.ts +8 -1
- package/dist/components/decision-form.d.ts.map +1 -1
- package/dist/components/decision-form.js +57 -7
- package/dist/components/decision-form.js.map +1 -1
- package/dist/components/decision-list.d.ts +9 -1
- package/dist/components/decision-list.d.ts.map +1 -1
- package/dist/components/decision-list.js +53 -7
- package/dist/components/decision-list.js.map +1 -1
- package/dist/components/event-feed.d.ts.map +1 -1
- package/dist/components/event-feed.js +7 -1
- package/dist/components/event-feed.js.map +1 -1
- package/dist/components/goals.d.ts.map +1 -1
- package/dist/components/goals.js +2 -2
- package/dist/components/goals.js.map +1 -1
- package/dist/components/home.d.ts +35 -0
- package/dist/components/home.d.ts.map +1 -0
- package/dist/components/home.js +326 -0
- package/dist/components/home.js.map +1 -0
- package/dist/components/my-decisions.d.ts +2 -0
- package/dist/components/my-decisions.d.ts.map +1 -1
- package/dist/components/my-decisions.js +2 -2
- package/dist/components/my-decisions.js.map +1 -1
- package/dist/components/pack-connect.d.ts.map +1 -1
- package/dist/components/pack-connect.js +5 -4
- package/dist/components/pack-connect.js.map +1 -1
- package/dist/components/people.d.ts +2 -0
- package/dist/components/people.d.ts.map +1 -1
- package/dist/components/people.js +15 -2
- package/dist/components/people.js.map +1 -1
- package/dist/components/plugin-frame.d.ts +3 -12
- package/dist/components/plugin-frame.d.ts.map +1 -1
- package/dist/components/plugin-frame.js +53 -20
- package/dist/components/plugin-frame.js.map +1 -1
- package/dist/components/plugin-settings.d.ts.map +1 -1
- package/dist/components/plugin-settings.js +151 -26
- package/dist/components/plugin-settings.js.map +1 -1
- package/dist/components/projects.d.ts +0 -8
- package/dist/components/projects.d.ts.map +1 -1
- package/dist/components/projects.js +1 -13
- package/dist/components/projects.js.map +1 -1
- package/dist/components/task-view.d.ts +2 -1
- package/dist/components/task-view.d.ts.map +1 -1
- package/dist/components/task-view.js +2 -1
- package/dist/components/task-view.js.map +1 -1
- package/dist/components/ui.d.ts.map +1 -1
- package/dist/components/ui.js +5 -2
- package/dist/components/ui.js.map +1 -1
- package/dist/connect-page.d.ts.map +1 -1
- package/dist/connect-page.js +5 -6
- package/dist/connect-page.js.map +1 -1
- package/dist/console.css +764 -192
- package/dist/console.d.ts +10 -3
- package/dist/console.d.ts.map +1 -1
- package/dist/console.js +49 -28
- package/dist/console.js.map +1 -1
- package/dist/data.d.ts +6 -3
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +31 -7
- package/dist/data.js.map +1 -1
- package/dist/docs-page.d.ts.map +1 -1
- package/dist/docs-page.js +6 -5
- package/dist/docs-page.js.map +1 -1
- package/dist/home-tiles.d.ts +92 -0
- package/dist/home-tiles.d.ts.map +1 -0
- package/dist/home-tiles.js +294 -0
- package/dist/home-tiles.js.map +1 -0
- package/dist/i18n/en.d.ts +180 -0
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +181 -1
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/index.d.ts +4 -2
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +10 -11
- package/dist/i18n/index.js.map +1 -1
- package/dist/i18n/ko.d.ts.map +1 -1
- package/dist/i18n/ko.js +176 -3
- package/dist/i18n/ko.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/limits.d.ts +8 -0
- package/dist/limits.d.ts.map +1 -1
- package/dist/limits.js +8 -0
- package/dist/limits.js.map +1 -1
- package/dist/plugin/bridge.d.ts +44 -3
- package/dist/plugin/bridge.d.ts.map +1 -1
- package/dist/plugin/bridge.js +26 -0
- package/dist/plugin/bridge.js.map +1 -1
- package/dist/plugin/capabilities.d.ts +7 -1
- package/dist/plugin/capabilities.d.ts.map +1 -1
- package/dist/plugin/capabilities.js +14 -1
- package/dist/plugin/capabilities.js.map +1 -1
- package/dist/plugin/context.d.ts +24 -1
- package/dist/plugin/context.d.ts.map +1 -1
- package/dist/plugin/define.d.ts +1 -0
- package/dist/plugin/define.d.ts.map +1 -1
- package/dist/plugin/define.js +1 -1
- package/dist/plugin/define.js.map +1 -1
- package/dist/plugin/limits.d.ts +5 -2
- package/dist/plugin/limits.d.ts.map +1 -1
- package/dist/plugin/limits.js +5 -2
- package/dist/plugin/limits.js.map +1 -1
- package/dist/plugin/manifest.d.ts +83 -6
- package/dist/plugin/manifest.d.ts.map +1 -1
- package/dist/plugin/manifest.js +111 -7
- package/dist/plugin/manifest.js.map +1 -1
- package/dist/plugin/rest-schemas.d.ts +76 -0
- package/dist/plugin/rest-schemas.d.ts.map +1 -1
- package/dist/plugin/rest-schemas.js +23 -2
- package/dist/plugin/rest-schemas.js.map +1 -1
- package/dist/plugin/sandbox.d.ts +4 -3
- package/dist/plugin/sandbox.d.ts.map +1 -1
- package/dist/plugin/sandbox.js +33 -6
- package/dist/plugin/sandbox.js.map +1 -1
- package/dist/plugin/semver.d.ts +26 -0
- package/dist/plugin/semver.d.ts.map +1 -0
- package/dist/plugin/semver.js +76 -0
- package/dist/plugin/semver.js.map +1 -0
- package/dist/plugin/testing.d.ts.map +1 -1
- package/dist/plugin/testing.js +2 -1
- package/dist/plugin/testing.js.map +1 -1
- package/dist/plugin/web.d.ts +10 -1
- package/dist/plugin/web.d.ts.map +1 -1
- package/dist/plugin/web.js +34 -0
- package/dist/plugin/web.js.map +1 -1
- package/dist/plugin.d.ts +3 -2
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +3 -2
- package/dist/plugin.js.map +1 -1
- package/dist/rules.d.ts +2 -2
- package/dist/rules.js +3 -3
- package/dist/schemas.d.ts +574 -11
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +154 -25
- package/dist/schemas.js.map +1 -1
- package/dist/use-action.d.ts +8 -2
- package/dist/use-action.d.ts.map +1 -1
- package/dist/use-action.js +13 -6
- package/dist/use-action.js.map +1 -1
- package/dist/vocabulary.d.ts +3 -1
- package/dist/vocabulary.d.ts.map +1 -1
- package/dist/vocabulary.js +3 -0
- package/dist/vocabulary.js.map +1 -1
- package/docs/specs/cli.md +4 -3
- package/docs/specs/plugins.md +49 -35
- package/docs/specs/rest.md +20 -18
- package/package.json +7 -7
- package/skills/building-a-plugin/SKILL.md +10 -9
- package/skills/planning-the-board/references/setting-up.md +2 -1
- package/skills/working-the-board/SKILL.md +3 -3
- package/src/api.ts +10 -0
- package/src/cli/cli.ts +162 -39
- package/src/cli/format.ts +54 -10
- package/src/cli/help.ts +23 -14
- package/src/cli/plugin-check.ts +68 -2
- package/src/cli/plugin-cli.ts +104 -6
- package/src/cli/plugin-init.ts +178 -3
- package/src/client.ts +36 -9
- package/src/compat.ts +1 -1
- package/src/components/board.tsx +3 -3
- package/src/components/comments.tsx +1 -0
- package/src/components/decision-form.tsx +166 -29
- package/src/components/decision-list.tsx +116 -15
- package/src/components/event-feed.tsx +7 -1
- package/src/components/goals.tsx +4 -1
- package/src/components/home.tsx +615 -0
- package/src/components/my-decisions.tsx +4 -1
- package/src/components/pack-connect.tsx +5 -4
- package/src/components/people.tsx +136 -54
- package/src/components/plugin-frame.tsx +62 -63
- package/src/components/plugin-settings.tsx +428 -87
- package/src/components/projects.tsx +0 -55
- package/src/components/task-view.tsx +9 -1
- package/src/components/ui.tsx +6 -2
- package/src/connect-page.tsx +5 -6
- package/src/console.tsx +98 -42
- package/src/data.ts +41 -11
- package/src/docs-page.tsx +6 -5
- package/src/home-tiles.ts +438 -0
- package/src/i18n/en.ts +185 -0
- package/src/i18n/index.ts +17 -14
- package/src/i18n/ko.ts +181 -3
- package/src/index.ts +7 -5
- package/src/limits.ts +8 -0
- package/src/plugin/bridge.ts +77 -1
- package/src/plugin/capabilities.ts +17 -1
- package/src/plugin/context.ts +24 -2
- package/src/plugin/define.ts +4 -1
- package/src/plugin/limits.ts +5 -2
- package/src/plugin/manifest.ts +154 -10
- package/src/plugin/rest-schemas.ts +27 -1
- package/src/plugin/sandbox.ts +36 -8
- package/src/plugin/semver.ts +89 -0
- package/src/plugin/testing.ts +2 -1
- package/src/plugin/web.ts +49 -0
- package/src/plugin.ts +18 -0
- package/src/rules.ts +3 -3
- package/src/schemas.ts +190 -28
- package/src/styles/console.css +764 -192
- package/src/use-action.ts +16 -7
- package/src/vocabulary.ts +4 -0
- package/template/plugin/console-plugin.json +3 -1
- package/template/plugin/package.json +3 -3
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type HomeTileSize, type HomeWidgetTile } from "../home-tiles.js";
|
|
3
|
+
import type { PluginWidgetSizeName } from "../plugin/bridge.js";
|
|
4
|
+
import type { RestHome, RestPlugin, RestProject } from "../schemas.js";
|
|
5
|
+
export interface ProjectTileProps {
|
|
6
|
+
readonly project: RestProject;
|
|
7
|
+
readonly size: HomeTileSize;
|
|
8
|
+
/** The way into the project; left out while the page is arranged, when a tile opens nothing. */
|
|
9
|
+
readonly href?: string | undefined;
|
|
10
|
+
readonly onOpen?: ((project: RestProject) => void) | undefined;
|
|
11
|
+
}
|
|
12
|
+
/** A project on the front page: its mark and its name as an icon; at a larger size, what it is too. */
|
|
13
|
+
export declare function ProjectTile(props: ProjectTileProps): import("react").JSX.Element;
|
|
14
|
+
export interface HomeGridProps {
|
|
15
|
+
readonly projects: readonly RestProject[];
|
|
16
|
+
readonly plugins: readonly RestPlugin[];
|
|
17
|
+
/** What the person kept of the page, or nothing yet. */
|
|
18
|
+
readonly home: RestHome | null | undefined;
|
|
19
|
+
/** Whether the person is arranging the page. */
|
|
20
|
+
readonly editing: boolean;
|
|
21
|
+
/** Keeps what they arranged; they stay on the page's editing until it is kept. */
|
|
22
|
+
readonly onSave: (home: RestHome) => Promise<unknown>;
|
|
23
|
+
/** The person is done arranging: what they did is kept, or was let go. */
|
|
24
|
+
readonly onDone: () => void;
|
|
25
|
+
readonly projectHref: (project: RestProject) => string;
|
|
26
|
+
readonly onOpen: (project: RestProject) => void;
|
|
27
|
+
/** A name a manifest gives, in the person's language. */
|
|
28
|
+
readonly nameOf: (name: Readonly<Record<string, string>>) => string;
|
|
29
|
+
/** A widget's frame, at the size it has. */
|
|
30
|
+
readonly renderWidget: (tile: HomeWidgetTile, size: PluginWidgetSizeName) => ReactNode;
|
|
31
|
+
/** What stands on the page while it holds nothing. */
|
|
32
|
+
readonly empty?: ReactNode;
|
|
33
|
+
}
|
|
34
|
+
export declare function HomeGrid(props: HomeGridProps): import("react").JSX.Element;
|
|
35
|
+
//# sourceMappingURL=home.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"home.d.ts","sourceRoot":"","sources":["../../src/components/home.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,SAAS,EAOf,MAAM,OAAO,CAAC;AACf,OAAO,EAQL,KAAK,YAAY,EACjB,KAAK,cAAc,EASpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAiBvE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,gGAAgG;IAChG,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAChE;AAED,uGAAuG;AACvG,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BA8DlD;AAiFD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IACxC,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3C,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtD,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,MAAM,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAChD,yDAAyD;IACzD,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC;IACpE,4CAA4C;IAC5C,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,oBAAoB,KAAK,SAAS,CAAC;IACvF,sDAAsD;IACtD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,+BAwY5C"}
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useLayoutEffect, useRef, useState, } from "react";
|
|
3
|
+
import { added, arranged, columnsFor, footprintOf, HOME_TILE_CELLS, homeTiles, homeWith, moved, resized, rowsOf, sizesAt, waitToGiveWay, } from "../home-tiles.js";
|
|
4
|
+
import { useWords } from "../i18n/index.js";
|
|
5
|
+
import { useAction } from "../use-action.js";
|
|
6
|
+
import { DRAG_SLACK, edgeScrollOf, HOLD_MS, HOLD_SLACK } from "./board.js";
|
|
7
|
+
import { ProjectMark, ProjectRoleBadge } from "./projects.js";
|
|
8
|
+
import { Badge, Button, Callout, cx } from "./ui.js";
|
|
9
|
+
// The front page (ADR-0061): one grid of tiles, the projects and the plugins' widgets alike. While
|
|
10
|
+
// the person arranges it nothing on it opens: a tile is taken in hand and put down anywhere, as a
|
|
11
|
+
// card on the board is, those in the way moving aside as icons do on a phone, and each carries
|
|
12
|
+
// the way off the page and the sizes it comes in. Takes its data as props and nothing from the
|
|
13
|
+
// network; a widget's frame is the composition's to draw.
|
|
14
|
+
/** The rows of room below the last tile while the page is arranged, to put one down in. */
|
|
15
|
+
const SPARE_ROWS = 2;
|
|
16
|
+
const NONE = [];
|
|
17
|
+
/** A project on the front page: its mark and its name as an icon; at a larger size, what it is too. */
|
|
18
|
+
export function ProjectTile(props) {
|
|
19
|
+
const words = useWords().projects;
|
|
20
|
+
const { project, onOpen } = props;
|
|
21
|
+
const card = props.size !== "icon";
|
|
22
|
+
const inside = (_jsxs(_Fragment, { children: [_jsx("span", { className: "sc-tile-mark", children: _jsx(ProjectMark, { project: project, size: "lg" }) }), _jsx("span", { className: "sc-tile-name", children: project.name }), card && (_jsxs("span", { className: "sc-tile-meta", children: [_jsx("code", { className: "sc-project-key", children: project.key }), _jsx(ProjectRoleBadge, { role: project.role }), project.visibility === "private" ? (_jsx(Badge, { tone: "neutral", children: words.private })) : (_jsx(Badge, { tone: "warning", children: words.public }))] })), card && project.description.length > 0 && (_jsx("span", { className: "sc-tile-about", children: project.description })), project.openDecisions > 0 && (_jsxs("span", { className: "sc-nav-count sc-tile-count", title: words.decisionsWaiting(project.openDecisions), children: [project.openDecisions, _jsxs("span", { className: "sc-visually-hidden", children: [" ", words.decisionsWaiting(project.openDecisions)] })] }))] }));
|
|
23
|
+
const className = cx("sc-tile-pane", "sc-tile-project", card && "sc-tile-project-card");
|
|
24
|
+
if (props.href === undefined) {
|
|
25
|
+
return _jsx("div", { className: className, children: inside });
|
|
26
|
+
}
|
|
27
|
+
return (_jsx("a", { className: className, href: props.href, onClick: (event) => {
|
|
28
|
+
if (onOpen !== undefined &&
|
|
29
|
+
event.button === 0 &&
|
|
30
|
+
!event.metaKey &&
|
|
31
|
+
!event.ctrlKey &&
|
|
32
|
+
!event.shiftKey) {
|
|
33
|
+
event.preventDefault();
|
|
34
|
+
onOpen(project);
|
|
35
|
+
}
|
|
36
|
+
}, children: inside }));
|
|
37
|
+
}
|
|
38
|
+
/** The sizes a tile comes in, each a little picture of its shape, the one it has lit. */
|
|
39
|
+
function SizeChoice(props) {
|
|
40
|
+
const words = useWords().home;
|
|
41
|
+
return (_jsx("fieldset", { className: "sc-tile-sizes", "aria-label": words.size, children: props.sizes.map((size) => (_jsx("button", { type: "button", className: cx("sc-tile-size", size === props.tile.size && "sc-tile-size-on"), "aria-pressed": size === props.tile.size, "aria-label": words.sizes[size], title: words.sizes[size], onClick: () => props.onChoose(size), children: _jsx("span", { className: "sc-tile-size-glyph", style: {
|
|
42
|
+
"--sc-tile-w": HOME_TILE_CELLS[size].columns,
|
|
43
|
+
"--sc-tile-h": HOME_TILE_CELLS[size].rows,
|
|
44
|
+
} }) }, size))) }));
|
|
45
|
+
}
|
|
46
|
+
/** How many columns the grid has for the width the page gives it, followed as the width changes. */
|
|
47
|
+
function useHomeColumns() {
|
|
48
|
+
const element = useRef(null);
|
|
49
|
+
const [columns, setColumns] = useState(8);
|
|
50
|
+
useLayoutEffect(() => {
|
|
51
|
+
const node = element.current;
|
|
52
|
+
if (node === null) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const measure = () => setColumns(columnsFor(node.getBoundingClientRect().width));
|
|
56
|
+
measure();
|
|
57
|
+
if (typeof ResizeObserver === "undefined") {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const observer = new ResizeObserver(measure);
|
|
61
|
+
observer.observe(node);
|
|
62
|
+
return () => observer.disconnect();
|
|
63
|
+
}, []);
|
|
64
|
+
return [element, columns];
|
|
65
|
+
}
|
|
66
|
+
export function HomeGrid(props) {
|
|
67
|
+
const allWords = useWords();
|
|
68
|
+
const words = allWords.home;
|
|
69
|
+
const { editing, home, nameOf } = props;
|
|
70
|
+
const tiles = homeTiles(props.plugins, props.projects);
|
|
71
|
+
const [page, columns] = useHomeColumns();
|
|
72
|
+
const grid = useRef(null);
|
|
73
|
+
/** What the person has changed since they began: kept when they are done, let go if they cancel. */
|
|
74
|
+
const [draft, setDraft] = useState(null);
|
|
75
|
+
const working = draft ?? home;
|
|
76
|
+
const hidden = working?.hidden ?? NONE;
|
|
77
|
+
const placed = arranged(tiles, working, columns);
|
|
78
|
+
const [drag, setDrag] = useState(null);
|
|
79
|
+
const { busy, error, act } = useAction();
|
|
80
|
+
/** The tile in hand, once it has come loose; nothing while one is merely pressed. */
|
|
81
|
+
const dragging = drag?.moving === true ? drag : null;
|
|
82
|
+
// Those in the way stand aside while the tile is held over their place, and go back when it
|
|
83
|
+
// moves on: each step starts from the page as it was taken up.
|
|
84
|
+
const shown = dragging === null
|
|
85
|
+
? placed
|
|
86
|
+
: moved(placed, dragging.id, dragging.cell.x, dragging.cell.y, columns);
|
|
87
|
+
const change = (next, nextHidden = hidden) => setDraft(homeWith(working, next, nextHidden, columns));
|
|
88
|
+
// What the pointer's handlers read, so that they run outside a state update.
|
|
89
|
+
const current = useRef({ drag, placed, columns, change });
|
|
90
|
+
current.current = { drag, placed, columns, change };
|
|
91
|
+
// Whether the held tile has come loose, kept outside the state so that the touch that follows
|
|
92
|
+
// the hold at once is answered before the state has rendered.
|
|
93
|
+
const loose = useRef(false);
|
|
94
|
+
const press = (tile, event) => {
|
|
95
|
+
// The tile's own buttons are pressed for themselves; everything else takes hold of it.
|
|
96
|
+
if (event.button !== 0 ||
|
|
97
|
+
(event.target instanceof Element && event.target.closest("button") !== null)) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const hold = event.pointerType !== "mouse";
|
|
101
|
+
if (!hold) {
|
|
102
|
+
// The press is the drag's beginning and nothing else: no text is selected on the way.
|
|
103
|
+
event.preventDefault();
|
|
104
|
+
}
|
|
105
|
+
const rect = event.currentTarget.getBoundingClientRect();
|
|
106
|
+
const from = { x: event.clientX, y: event.clientY };
|
|
107
|
+
setDrag({
|
|
108
|
+
id: tile.tile.id,
|
|
109
|
+
from,
|
|
110
|
+
x: from.x,
|
|
111
|
+
y: from.y,
|
|
112
|
+
grip: { x: from.x - rect.left, y: from.y - rect.top },
|
|
113
|
+
moving: false,
|
|
114
|
+
hold,
|
|
115
|
+
left: 0,
|
|
116
|
+
top: 0,
|
|
117
|
+
cell: { x: tile.x, y: tile.y },
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
// While a tile is held, the pointer is followed over the whole document: the cell under the
|
|
121
|
+
// tile is worked out, the page scrolls while the pointer is near the window's edge, moving or
|
|
122
|
+
// still, and the release puts the tile down. A finger's hold is timed here, and once the tile
|
|
123
|
+
// has come loose the page no longer scrolls under the finger, as on the board.
|
|
124
|
+
const held = drag !== null;
|
|
125
|
+
useEffect(() => {
|
|
126
|
+
if (!held) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const pointer = { x: current.current.drag?.x ?? 0, y: current.current.drag?.y ?? 0 };
|
|
130
|
+
/** Where the tile is, for the pointer as it is and the grid as it lies on the screen now. */
|
|
131
|
+
const whereFor = (grip) => {
|
|
132
|
+
const element = grid.current;
|
|
133
|
+
if (element === null) {
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
const rect = element.getBoundingClientRect();
|
|
137
|
+
const gap = Number.parseFloat(window.getComputedStyle(element).rowGap) || 0;
|
|
138
|
+
const width = current.current.columns;
|
|
139
|
+
const step = (rect.width + gap) / width;
|
|
140
|
+
const left = pointer.x - grip.x - rect.left;
|
|
141
|
+
const top = pointer.y - grip.y - rect.top;
|
|
142
|
+
const lowest = rowsOf(current.current.placed, width) + SPARE_ROWS - 1;
|
|
143
|
+
return {
|
|
144
|
+
left,
|
|
145
|
+
top,
|
|
146
|
+
cell: { x: Math.round(left / step), y: Math.min(Math.round(top / step), lowest) },
|
|
147
|
+
};
|
|
148
|
+
};
|
|
149
|
+
let frame = 0;
|
|
150
|
+
let at;
|
|
151
|
+
let rest = 0;
|
|
152
|
+
const carry = (now) => {
|
|
153
|
+
frame = window.requestAnimationFrame(carry);
|
|
154
|
+
const elapsed = at === undefined ? 0 : now - at;
|
|
155
|
+
at = now;
|
|
156
|
+
if (!loose.current) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
const share = edgeScrollOf(pointer.y, 0, window.innerHeight, elapsed) + rest;
|
|
160
|
+
const whole = Math.trunc(share);
|
|
161
|
+
rest = share - whole;
|
|
162
|
+
if (whole === 0) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
const was = window.scrollY;
|
|
166
|
+
window.scrollBy(0, whole);
|
|
167
|
+
if (window.scrollY !== was) {
|
|
168
|
+
setDrag((before) => (before === null ? before : { ...before, ...whereFor(before.grip) }));
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
const follow = (event) => {
|
|
172
|
+
const { clientX: x, clientY: y } = event;
|
|
173
|
+
pointer.x = x;
|
|
174
|
+
pointer.y = y;
|
|
175
|
+
setDrag((before) => {
|
|
176
|
+
if (before === null) {
|
|
177
|
+
return before;
|
|
178
|
+
}
|
|
179
|
+
const travelled = Math.hypot(x - before.from.x, y - before.from.y);
|
|
180
|
+
if (!before.moving) {
|
|
181
|
+
// A finger that wanders before it has rested is scrolling, and lets the tile go; a
|
|
182
|
+
// mouse that has barely moved is still only pressing.
|
|
183
|
+
if (before.hold) {
|
|
184
|
+
return travelled > HOLD_SLACK ? null : { ...before, x, y };
|
|
185
|
+
}
|
|
186
|
+
if (travelled <= DRAG_SLACK) {
|
|
187
|
+
return { ...before, x, y };
|
|
188
|
+
}
|
|
189
|
+
loose.current = true;
|
|
190
|
+
}
|
|
191
|
+
return { ...before, x, y, moving: true, ...whereFor(before.grip) };
|
|
192
|
+
});
|
|
193
|
+
};
|
|
194
|
+
const loosen = () => {
|
|
195
|
+
setDrag((before) => {
|
|
196
|
+
if (before === null || before.moving) {
|
|
197
|
+
return before;
|
|
198
|
+
}
|
|
199
|
+
loose.current = true;
|
|
200
|
+
return { ...before, moving: true, ...whereFor(before.grip) };
|
|
201
|
+
});
|
|
202
|
+
};
|
|
203
|
+
const release = (event) => {
|
|
204
|
+
const { drag: last, placed: now, columns: width, change: keep } = current.current;
|
|
205
|
+
if (last?.moving === true && event.type === "pointerup") {
|
|
206
|
+
keep(moved(now, last.id, last.cell.x, last.cell.y, width));
|
|
207
|
+
}
|
|
208
|
+
loose.current = false;
|
|
209
|
+
setDrag(null);
|
|
210
|
+
};
|
|
211
|
+
const letGo = (event) => {
|
|
212
|
+
if (event.key === "Escape") {
|
|
213
|
+
loose.current = false;
|
|
214
|
+
setDrag(null);
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
const block = (event) => {
|
|
218
|
+
if (loose.current) {
|
|
219
|
+
event.preventDefault();
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
const quiet = (event) => event.preventDefault();
|
|
223
|
+
const timer = current.current.drag?.hold === true ? window.setTimeout(loosen, HOLD_MS) : undefined;
|
|
224
|
+
frame = window.requestAnimationFrame(carry);
|
|
225
|
+
window.addEventListener("pointermove", follow);
|
|
226
|
+
window.addEventListener("pointerup", release);
|
|
227
|
+
window.addEventListener("pointercancel", release);
|
|
228
|
+
window.addEventListener("keydown", letGo);
|
|
229
|
+
document.addEventListener("touchmove", block, { passive: false });
|
|
230
|
+
document.addEventListener("contextmenu", quiet);
|
|
231
|
+
return () => {
|
|
232
|
+
if (timer !== undefined) {
|
|
233
|
+
window.clearTimeout(timer);
|
|
234
|
+
}
|
|
235
|
+
window.cancelAnimationFrame(frame);
|
|
236
|
+
window.removeEventListener("pointermove", follow);
|
|
237
|
+
window.removeEventListener("pointerup", release);
|
|
238
|
+
window.removeEventListener("pointercancel", release);
|
|
239
|
+
window.removeEventListener("keydown", letGo);
|
|
240
|
+
document.removeEventListener("touchmove", block);
|
|
241
|
+
document.removeEventListener("contextmenu", quiet);
|
|
242
|
+
loose.current = false;
|
|
243
|
+
};
|
|
244
|
+
}, [held]);
|
|
245
|
+
const remove = (id) => change(placed.filter((tile) => tile.tile.id !== id), [...hidden, id]);
|
|
246
|
+
/** The arrow keys move the tile with the focus a cell, as the pointer does; Delete takes it off. */
|
|
247
|
+
const keyed = (tile, event) => {
|
|
248
|
+
if (event.target !== event.currentTarget) {
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
const step = {
|
|
252
|
+
ArrowLeft: { x: -1, y: 0 },
|
|
253
|
+
ArrowRight: { x: 1, y: 0 },
|
|
254
|
+
ArrowUp: { x: 0, y: -1 },
|
|
255
|
+
ArrowDown: { x: 0, y: 1 },
|
|
256
|
+
};
|
|
257
|
+
const by = step[event.key];
|
|
258
|
+
if (by !== undefined) {
|
|
259
|
+
event.preventDefault();
|
|
260
|
+
change(moved(placed, tile.tile.id, tile.x + by.x, tile.y + by.y, columns));
|
|
261
|
+
}
|
|
262
|
+
else if (event.key === "Delete" || event.key === "Backspace") {
|
|
263
|
+
event.preventDefault();
|
|
264
|
+
remove(tile.tile.id);
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
const done = () => {
|
|
268
|
+
if (draft === null) {
|
|
269
|
+
props.onDone();
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
void act(async () => {
|
|
273
|
+
await props.onSave(draft);
|
|
274
|
+
setDraft(null);
|
|
275
|
+
props.onDone();
|
|
276
|
+
});
|
|
277
|
+
};
|
|
278
|
+
const cancel = () => {
|
|
279
|
+
setDraft(null);
|
|
280
|
+
props.onDone();
|
|
281
|
+
};
|
|
282
|
+
const nameOfTile = (tile) => tile.kind === "project" ? tile.project.name : nameOf(tile.widget.name);
|
|
283
|
+
// Moved in the page, a frame would load again: the tiles keep the order they came in for as
|
|
284
|
+
// long as the page is open, and each stands where its style says.
|
|
285
|
+
const order = useRef(NONE);
|
|
286
|
+
const inOrder = [...shown].sort((a, b) => a.y - b.y || a.x - b.x).map((tile) => tile.tile.id);
|
|
287
|
+
order.current = [
|
|
288
|
+
...order.current.filter((id) => inOrder.includes(id)),
|
|
289
|
+
...inOrder.filter((id) => !order.current.includes(id)),
|
|
290
|
+
];
|
|
291
|
+
const standing = [...shown].sort((a, b) => order.current.indexOf(a.tile.id) - order.current.indexOf(b.tile.id));
|
|
292
|
+
const out = editing
|
|
293
|
+
? tiles.filter((tile) => !shown.some((candidate) => candidate.tile.id === tile.id))
|
|
294
|
+
: [];
|
|
295
|
+
const slot = dragging === null ? undefined : shown.find((tile) => tile.tile.id === dragging.id);
|
|
296
|
+
const rows = rowsOf(shown, columns) + (editing ? SPARE_ROWS : 0);
|
|
297
|
+
return (_jsxs("div", { ref: page, className: cx("sc-home", editing && "sc-home-editing", dragging !== null && "sc-home-held"), children: [editing && (_jsxs("div", { className: "sc-home-bar", children: [_jsx("p", { className: "sc-home-hint", children: words.hint }), _jsxs("div", { className: "sc-home-bar-actions", children: [_jsx(Button, { size: "sm", variant: "ghost", disabled: busy, onClick: cancel, children: allWords.common.cancel }), _jsx(Button, { size: "sm", variant: "primary", disabled: busy, onClick: done, children: words.done })] })] })), error !== undefined && _jsx(Callout, { tone: "danger", children: error }), out.length > 0 && (_jsxs("div", { className: "sc-home-tray", children: [_jsx("span", { className: "sc-field-label", children: words.add }), out.map((tile) => (_jsxs("button", { type: "button", className: "sc-home-add", onClick: () => change(added(placed, tile, columns), hidden.filter((id) => id !== tile.id)), children: ["+ ", nameOfTile(tile)] }, tile.id)))] })), shown.length === 0 && !editing && (props.empty ?? null), _jsxs("ul", { ref: grid, className: "sc-home-grid", "aria-label": allWords.projects.list, "data-columns": columns, hidden: shown.length === 0 && !editing, style: {
|
|
298
|
+
"--sc-home-columns": columns,
|
|
299
|
+
"--sc-home-rows": Math.max(rows, 1),
|
|
300
|
+
}, children: [standing.map((tile) => {
|
|
301
|
+
const { w, h } = footprintOf(tile.size, columns);
|
|
302
|
+
const inHand = dragging?.id === tile.tile.id ? dragging : undefined;
|
|
303
|
+
const name = nameOfTile(tile.tile);
|
|
304
|
+
return (_jsxs("li", { className: cx("sc-tile", inHand !== undefined && "sc-tile-held"), "data-tile": tile.tile.id, style: {
|
|
305
|
+
"--sc-tile-x": tile.x,
|
|
306
|
+
"--sc-tile-y": tile.y,
|
|
307
|
+
"--sc-tile-w": w,
|
|
308
|
+
"--sc-tile-h": h,
|
|
309
|
+
...(inHand === undefined
|
|
310
|
+
? {}
|
|
311
|
+
: {
|
|
312
|
+
"--sc-tile-left": `${inHand.left}px`,
|
|
313
|
+
"--sc-tile-top": `${inHand.top}px`,
|
|
314
|
+
}),
|
|
315
|
+
...(slot === undefined || inHand !== undefined
|
|
316
|
+
? {}
|
|
317
|
+
: { "--sc-tile-wait": `${waitToGiveWay(tile, slot)}ms` }),
|
|
318
|
+
}, tabIndex: editing ? 0 : undefined, "aria-label": editing ? name : undefined, onPointerDown: editing ? (event) => press(tile, event) : undefined, onKeyDown: editing ? (event) => keyed(tile, event) : undefined, children: [tile.tile.kind === "project" ? (_jsx(ProjectTile, { project: tile.tile.project, size: tile.size, href: editing ? undefined : props.projectHref(tile.tile.project), onOpen: props.onOpen })) : (_jsxs("article", { className: "sc-tile-pane sc-tile-widget", children: [_jsx("h2", { className: "sc-tile-title", children: name }), props.renderWidget(tile.tile, tile.size)] })), editing && (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", className: "sc-tile-remove", "aria-label": `${words.remove}: ${name}`, title: words.remove, onClick: () => remove(tile.tile.id), children: "\u00D7" }), sizesAt(tile.tile, columns).length > 1 && (_jsx(SizeChoice, { tile: tile, sizes: sizesAt(tile.tile, columns), onChoose: (size) => change(resized(placed, tile.tile.id, size, columns)) }))] }))] }, tile.tile.id));
|
|
319
|
+
}), slot !== undefined && (_jsx("li", { className: "sc-tile sc-tile-slot", "aria-hidden": "true", style: {
|
|
320
|
+
"--sc-tile-x": slot.x,
|
|
321
|
+
"--sc-tile-y": slot.y,
|
|
322
|
+
"--sc-tile-w": footprintOf(slot.size, columns).w,
|
|
323
|
+
"--sc-tile-h": footprintOf(slot.size, columns).h,
|
|
324
|
+
}, children: slot.tile.kind === "project" ? (_jsx(ProjectTile, { project: slot.tile.project, size: slot.size })) : (_jsx("div", { className: "sc-tile-pane sc-tile-widget", children: _jsx("p", { className: "sc-tile-title", children: nameOfTile(slot.tile) }) })) }))] })] }));
|
|
325
|
+
}
|
|
326
|
+
//# sourceMappingURL=home.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"home.js","sourceRoot":"","sources":["../../src/components/home.tsx"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,8 @@ export interface MyDecisionsProps {
|
|
|
12
12
|
/** The decisions the person asked of someone else: waiting and answered. */
|
|
13
13
|
readonly raised: DecisionsPage;
|
|
14
14
|
readonly decisionHref: (projectKey: string, decisionId: string) => string;
|
|
15
|
+
/** Where a file put on a decision is read, by its project's key and its id (ADR-0055). */
|
|
16
|
+
readonly fileHref?: ((projectKey: string, fileId: string) => string) | undefined;
|
|
15
17
|
/** Called with the person's answer on a decision of theirs, in its project. Left out, a waiting decision is answered on its own page. */
|
|
16
18
|
readonly onAnswer?: ((projectKey: string, decision: RestDecision, input: RestAnswerInput) => void) | undefined;
|
|
17
19
|
readonly busy?: boolean | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"my-decisions.d.ts","sourceRoot":"","sources":["../../src/components/my-decisions.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAchF,0DAA0D;AAC1D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,oEAAoE;IACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CAC5C;AAED,MAAM,WAAW,gBAAgB;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1E,yIAAyI;IACzI,QAAQ,CAAC,QAAQ,CAAC,EACd,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC,GAC9E,SAAS,CAAC;IACd,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACrC;AAgCD,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+
|
|
1
|
+
{"version":3,"file":"my-decisions.d.ts","sourceRoot":"","sources":["../../src/components/my-decisions.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAchF,0DAA0D;AAC1D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,oEAAoE;IACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CAC5C;AAED,MAAM,WAAW,gBAAgB;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1E,0FAA0F;IAC1F,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IACjF,yIAAyI;IACzI,QAAQ,CAAC,QAAQ,CAAC,EACd,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC,GAC9E,SAAS,CAAC;IACd,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACrC;AAgCD,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BAwElD"}
|
|
@@ -18,14 +18,14 @@ function More(props) {
|
|
|
18
18
|
export function MyDecisions(props) {
|
|
19
19
|
const words = useWords();
|
|
20
20
|
const own = words.myDecisions;
|
|
21
|
-
const { onAnswer } = props;
|
|
21
|
+
const { onAnswer, fileHref } = props;
|
|
22
22
|
const waiting = props.addressed.items.filter(({ decision }) => decision.answer === null);
|
|
23
23
|
const asked = props.raised.items.filter(({ decision }) => decision.answer === null);
|
|
24
24
|
const record = [...props.addressed.items, ...props.raised.items]
|
|
25
25
|
.filter(({ decision }) => decision.answer !== null)
|
|
26
26
|
.sort((a, b) => (b.decision.answer?.at ?? "").localeCompare(a.decision.answer?.at ?? ""));
|
|
27
27
|
const projectOf = new Map(record.map((item) => [item.decision.id, item.project]));
|
|
28
|
-
const card = (item, answerable) => (_jsx(DecisionCard, { decision: item.decision, href: props.decisionHref(item.project.key, item.decision.id), project: _jsx(InProject, { project: item.project }), onAnswer: answerable && onAnswer !== undefined
|
|
28
|
+
const card = (item, answerable) => (_jsx(DecisionCard, { decision: item.decision, href: props.decisionHref(item.project.key, item.decision.id), project: _jsx(InProject, { project: item.project }), fileHref: fileHref === undefined ? undefined : (fileId) => fileHref(item.project.key, fileId), onAnswer: answerable && onAnswer !== undefined
|
|
29
29
|
? (decision, input) => onAnswer(item.project.key, decision, input)
|
|
30
30
|
: undefined, busy: props.busy }, item.decision.id));
|
|
31
31
|
return (_jsxs("div", { className: "sc-decisions", children: [_jsxs("div", { className: "sc-decisions-waiting", children: [_jsxs("section", { "aria-label": own.waiting, children: [_jsxs("h2", { className: "sc-section-title", children: [own.waiting, " ", _jsx("span", { className: "sc-column-count", children: waiting.length })] }), waiting.length === 0 ? (_jsx("p", { className: "sc-muted", children: own.noneWaiting })) : (waiting.map((item) => card(item, true))), _jsx(More, { page: props.addressed, label: own.more, busy: props.busy })] }), _jsxs("section", { "aria-label": own.raised, children: [_jsxs("h2", { className: "sc-section-title", children: [own.raised, " ", _jsx("span", { className: "sc-column-count", children: asked.length })] }), asked.length === 0 ? (_jsx("p", { className: "sc-muted", children: own.noneRaised })) : (asked.map((item) => card(item, false))), _jsx(More, { page: props.raised, label: own.more, busy: props.busy })] })] }), _jsxs("section", { "aria-label": words.decisions.record, children: [_jsxs("h2", { className: "sc-section-title", children: [words.decisions.record, " ", _jsx("span", { className: "sc-column-count", children: record.length })] }), record.length === 0 ? (_jsx("p", { className: "sc-muted", children: own.noneAnswered })) : (_jsx(DecisionLog, { decisions: record.map((item) => item.decision), decisionHref: (decision) => props.decisionHref(projectOf.get(decision.id)?.key ?? "", decision.id), projectOf: (decision) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"my-decisions.js","sourceRoot":"","sources":["../../src/components/my-decisions.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"my-decisions.js","sourceRoot":"","sources":["../../src/components/my-decisions.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack-connect.d.ts","sourceRoot":"","sources":["../../src/components/pack-connect.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAqB,eAAe,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"pack-connect.d.ts","sourceRoot":"","sources":["../../src/components/pack-connect.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAqB,eAAe,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAY5F;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GACxB,OAAO,CAAC,eAAe,EAAE;IAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAA;CAAE,CAAC,GAClE;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC;AAErC,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACxD,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACnE,iGAAiG;IACjG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACpE,+BAA+B;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,qCAAqC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACrC;AAiBD,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BAoIlD"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useState } from "react";
|
|
3
3
|
import { useWords } from "../i18n/index.js";
|
|
4
|
+
import { errorWords } from "../use-action.js";
|
|
4
5
|
import { Button, Time } from "./ui.js";
|
|
5
6
|
/** The least often the console is asked again, whatever the deployment says. */
|
|
6
7
|
const MIN_INTERVAL_SECONDS = 2;
|
|
@@ -55,7 +56,7 @@ export function PackConnect(props) {
|
|
|
55
56
|
return;
|
|
56
57
|
}
|
|
57
58
|
// The console could not be asked this time; it is asked again.
|
|
58
|
-
setProblem(failure
|
|
59
|
+
setProblem(errorWords(failure, words.common.somethingWentWrong, words));
|
|
59
60
|
setShown((current) => (current.kind === "waiting" ? { ...current } : current));
|
|
60
61
|
});
|
|
61
62
|
}, Math.max(shown.intervalSeconds, MIN_INTERVAL_SECONDS) * 1000);
|
|
@@ -63,14 +64,14 @@ export function PackConnect(props) {
|
|
|
63
64
|
controller.abort();
|
|
64
65
|
clearTimeout(timer);
|
|
65
66
|
};
|
|
66
|
-
}, [shown, claim, onConnected]);
|
|
67
|
+
}, [shown, claim, onConnected, words]);
|
|
67
68
|
const start = () => {
|
|
68
69
|
setProblem(undefined);
|
|
69
70
|
props
|
|
70
71
|
.onStart()
|
|
71
72
|
.then((started) => setShown({ kind: "waiting", ...started }))
|
|
72
73
|
.catch((failure) => {
|
|
73
|
-
setProblem(failure
|
|
74
|
+
setProblem(errorWords(failure, words.common.somethingWentWrong, words));
|
|
74
75
|
});
|
|
75
76
|
};
|
|
76
77
|
const cancel = () => {
|
|
@@ -78,7 +79,7 @@ export function PackConnect(props) {
|
|
|
78
79
|
.onCancel()
|
|
79
80
|
.then(() => setShown({ kind: "idle" }))
|
|
80
81
|
.catch((failure) => {
|
|
81
|
-
setProblem(failure
|
|
82
|
+
setProblem(errorWords(failure, words.common.somethingWentWrong, words));
|
|
82
83
|
});
|
|
83
84
|
};
|
|
84
85
|
return (_jsxs("div", { className: "sc-pack-connect", "aria-live": "polite", children: [shown.kind === "waiting" ? (_jsxs(_Fragment, { children: [_jsxs("p", { className: "sc-pack-connect-code", children: [_jsx("span", { className: "sc-field-label", children: pack.connectCode }), _jsx("code", { className: "sc-pack-code", children: shown.code })] }), _jsxs("div", { className: "sc-form-actions", children: [_jsx("a", { className: "sc-button sc-button-primary", href: shown.url, target: "_blank", rel: "noopener noreferrer", children: pack.connectOpen }), _jsx(Button, { variant: "ghost", disabled: props.busy === true, onClick: cancel, children: pack.connectCancel })] }), _jsxs("p", { className: "sc-pack-connect-waiting", children: [_jsx("span", { className: "sc-spinner", "aria-hidden": "true", children: _jsx("span", { className: "sc-spinner-ring" }) }), _jsxs("span", { children: [pack.connectWaiting, " ", pack.connectExpires, " ", _jsx(Time, { iso: shown.expiresAt })] })] })] })) : shown.kind === "connected" ? (_jsx("p", { children: pack.connectDone })) : (_jsxs(_Fragment, { children: [_jsx("p", { className: "sc-field-hint", children: pack.connectHint }), shown.kind === "ended" && (_jsx("p", { className: "sc-form-error", role: "alert", children: pack.connectEnded[shown.reason] })), _jsx("div", { className: "sc-form-actions", children: _jsx(Button, { variant: "primary", disabled: props.busy === true, onClick: start, children: pack.connect }) })] })), problem !== undefined && (_jsx("p", { className: "sc-form-error", role: "alert", children: problem }))] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack-connect.js","sourceRoot":"","sources":["../../src/components/pack-connect.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AA2CvC,gFAAgF;AAChF,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAE/B,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;IACtC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAC3C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAqB,SAAS,CAAC,CAAC;IAEtE,2EAA2E;IAC3E,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;aACpB,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACd,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC7D,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC1B,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,2FAA2F;IAC3F,0EAA0E;IAC1E,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;iBACrB,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBACd,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC9B,OAAO;gBACT,CAAC;gBACD,UAAU,CAAC,SAAS,CAAC,CAAC;gBACtB,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC/B,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;gBAC1C,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;oBACxC,QAAQ,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;oBAChC,WAAW,EAAE,EAAE,CAAC;gBAClB,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;oBACpC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,OAAgB,EAAE,EAAE;gBAC1B,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC9B,OAAO;gBACT,CAAC;gBACD,+DAA+D;gBAC/D,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"pack-connect.js","sourceRoot":"","sources":["../../src/components/pack-connect.tsx"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,8 @@ export interface PeopleListProps {
|
|
|
15
15
|
* with it.
|
|
16
16
|
*/
|
|
17
17
|
readonly onChangeStatus?: ((person: RestPerson, status: PersonStatus) => void) | undefined;
|
|
18
|
+
/** Called with the manager an administrator chose for the person, or null for none. Left out, managers are read here, not changed. */
|
|
19
|
+
readonly onChangeManager?: ((person: RestPerson, managerId: string | null) => void) | undefined;
|
|
18
20
|
/** Called when an administrator takes a listing away. Left out, listings are read here. */
|
|
19
21
|
readonly onUnlist?: ((listing: RestListing) => void) | undefined;
|
|
20
22
|
/** Where a person's work is seen; given to an administrator, or an owner of a project. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"people.d.ts","sourceRoot":"","sources":["../../src/components/people.tsx"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,YAAY,EAEjB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,WAAW,CAAC;AAWnB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,CAAC;IACrD,4FAA4F;IAC5F,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5D,yDAAyD;IACzD,QAAQ,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACrC,+FAA+F;IAC/F,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACrF;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3F,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACjE,0FAA0F;IAC1F,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IACjE,mEAAmE;IACnE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IACnE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACrC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,+BA+
|
|
1
|
+
{"version":3,"file":"people.d.ts","sourceRoot":"","sources":["../../src/components/people.tsx"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,YAAY,EAEjB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,WAAW,CAAC;AAWnB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,CAAC;IACrD,4FAA4F;IAC5F,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5D,yDAAyD;IACzD,QAAQ,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACrC,+FAA+F;IAC/F,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACrF;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3F,sIAAsI;IACtI,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAChG,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACjE,0FAA0F;IAC1F,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IACjE,mEAAmE;IACnE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IACnE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACrC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,+BA+OhD;AAED,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;IAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CAC9C;AAED,iGAAiG;AACjG,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BA6DlD"}
|