@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.
Files changed (243) hide show
  1. package/README.md +4 -4
  2. package/dist/api.d.ts +3 -3
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +3 -3
  5. package/dist/api.js.map +1 -1
  6. package/dist/cli/cli.d.ts.map +1 -1
  7. package/dist/cli/cli.js +120 -33
  8. package/dist/cli/cli.js.map +1 -1
  9. package/dist/cli/format.d.ts +4 -2
  10. package/dist/cli/format.d.ts.map +1 -1
  11. package/dist/cli/format.js +38 -10
  12. package/dist/cli/format.js.map +1 -1
  13. package/dist/cli/help.d.ts.map +1 -1
  14. package/dist/cli/help.js +22 -15
  15. package/dist/cli/help.js.map +1 -1
  16. package/dist/cli/plugin-check.d.ts +10 -1
  17. package/dist/cli/plugin-check.d.ts.map +1 -1
  18. package/dist/cli/plugin-check.js +45 -4
  19. package/dist/cli/plugin-check.js.map +1 -1
  20. package/dist/cli/plugin-cli.d.ts +1 -1
  21. package/dist/cli/plugin-cli.d.ts.map +1 -1
  22. package/dist/cli/plugin-cli.js +80 -5
  23. package/dist/cli/plugin-cli.js.map +1 -1
  24. package/dist/cli/plugin-init.d.ts +19 -0
  25. package/dist/cli/plugin-init.d.ts.map +1 -1
  26. package/dist/cli/plugin-init.js +141 -3
  27. package/dist/cli/plugin-init.js.map +1 -1
  28. package/dist/client.d.ts +7 -2
  29. package/dist/client.d.ts.map +1 -1
  30. package/dist/client.js +18 -5
  31. package/dist/client.js.map +1 -1
  32. package/dist/compat.js +1 -1
  33. package/dist/components/board.d.ts +8 -0
  34. package/dist/components/board.d.ts.map +1 -1
  35. package/dist/components/board.js +3 -3
  36. package/dist/components/board.js.map +1 -1
  37. package/dist/components/comments.d.ts.map +1 -1
  38. package/dist/components/comments.js +1 -1
  39. package/dist/components/comments.js.map +1 -1
  40. package/dist/components/decision-form.d.ts +8 -1
  41. package/dist/components/decision-form.d.ts.map +1 -1
  42. package/dist/components/decision-form.js +57 -7
  43. package/dist/components/decision-form.js.map +1 -1
  44. package/dist/components/decision-list.d.ts +9 -1
  45. package/dist/components/decision-list.d.ts.map +1 -1
  46. package/dist/components/decision-list.js +53 -7
  47. package/dist/components/decision-list.js.map +1 -1
  48. package/dist/components/event-feed.d.ts.map +1 -1
  49. package/dist/components/event-feed.js +7 -1
  50. package/dist/components/event-feed.js.map +1 -1
  51. package/dist/components/goals.d.ts.map +1 -1
  52. package/dist/components/goals.js +2 -2
  53. package/dist/components/goals.js.map +1 -1
  54. package/dist/components/home.d.ts +35 -0
  55. package/dist/components/home.d.ts.map +1 -0
  56. package/dist/components/home.js +326 -0
  57. package/dist/components/home.js.map +1 -0
  58. package/dist/components/my-decisions.d.ts +2 -0
  59. package/dist/components/my-decisions.d.ts.map +1 -1
  60. package/dist/components/my-decisions.js +2 -2
  61. package/dist/components/my-decisions.js.map +1 -1
  62. package/dist/components/pack-connect.d.ts.map +1 -1
  63. package/dist/components/pack-connect.js +5 -4
  64. package/dist/components/pack-connect.js.map +1 -1
  65. package/dist/components/people.d.ts +2 -0
  66. package/dist/components/people.d.ts.map +1 -1
  67. package/dist/components/people.js +15 -2
  68. package/dist/components/people.js.map +1 -1
  69. package/dist/components/plugin-frame.d.ts +3 -12
  70. package/dist/components/plugin-frame.d.ts.map +1 -1
  71. package/dist/components/plugin-frame.js +53 -20
  72. package/dist/components/plugin-frame.js.map +1 -1
  73. package/dist/components/plugin-settings.d.ts.map +1 -1
  74. package/dist/components/plugin-settings.js +151 -26
  75. package/dist/components/plugin-settings.js.map +1 -1
  76. package/dist/components/projects.d.ts +0 -8
  77. package/dist/components/projects.d.ts.map +1 -1
  78. package/dist/components/projects.js +1 -13
  79. package/dist/components/projects.js.map +1 -1
  80. package/dist/components/task-view.d.ts +2 -1
  81. package/dist/components/task-view.d.ts.map +1 -1
  82. package/dist/components/task-view.js +2 -1
  83. package/dist/components/task-view.js.map +1 -1
  84. package/dist/components/ui.d.ts.map +1 -1
  85. package/dist/components/ui.js +5 -2
  86. package/dist/components/ui.js.map +1 -1
  87. package/dist/connect-page.d.ts.map +1 -1
  88. package/dist/connect-page.js +5 -6
  89. package/dist/connect-page.js.map +1 -1
  90. package/dist/console.css +764 -192
  91. package/dist/console.d.ts +10 -3
  92. package/dist/console.d.ts.map +1 -1
  93. package/dist/console.js +49 -28
  94. package/dist/console.js.map +1 -1
  95. package/dist/data.d.ts +6 -3
  96. package/dist/data.d.ts.map +1 -1
  97. package/dist/data.js +31 -7
  98. package/dist/data.js.map +1 -1
  99. package/dist/docs-page.d.ts.map +1 -1
  100. package/dist/docs-page.js +6 -5
  101. package/dist/docs-page.js.map +1 -1
  102. package/dist/home-tiles.d.ts +92 -0
  103. package/dist/home-tiles.d.ts.map +1 -0
  104. package/dist/home-tiles.js +294 -0
  105. package/dist/home-tiles.js.map +1 -0
  106. package/dist/i18n/en.d.ts +180 -0
  107. package/dist/i18n/en.d.ts.map +1 -1
  108. package/dist/i18n/en.js +181 -1
  109. package/dist/i18n/en.js.map +1 -1
  110. package/dist/i18n/index.d.ts +4 -2
  111. package/dist/i18n/index.d.ts.map +1 -1
  112. package/dist/i18n/index.js +10 -11
  113. package/dist/i18n/index.js.map +1 -1
  114. package/dist/i18n/ko.d.ts.map +1 -1
  115. package/dist/i18n/ko.js +176 -3
  116. package/dist/i18n/ko.js.map +1 -1
  117. package/dist/index.d.ts +4 -3
  118. package/dist/index.d.ts.map +1 -1
  119. package/dist/index.js +4 -3
  120. package/dist/index.js.map +1 -1
  121. package/dist/limits.d.ts +8 -0
  122. package/dist/limits.d.ts.map +1 -1
  123. package/dist/limits.js +8 -0
  124. package/dist/limits.js.map +1 -1
  125. package/dist/plugin/bridge.d.ts +44 -3
  126. package/dist/plugin/bridge.d.ts.map +1 -1
  127. package/dist/plugin/bridge.js +26 -0
  128. package/dist/plugin/bridge.js.map +1 -1
  129. package/dist/plugin/capabilities.d.ts +7 -1
  130. package/dist/plugin/capabilities.d.ts.map +1 -1
  131. package/dist/plugin/capabilities.js +14 -1
  132. package/dist/plugin/capabilities.js.map +1 -1
  133. package/dist/plugin/context.d.ts +24 -1
  134. package/dist/plugin/context.d.ts.map +1 -1
  135. package/dist/plugin/define.d.ts +1 -0
  136. package/dist/plugin/define.d.ts.map +1 -1
  137. package/dist/plugin/define.js +1 -1
  138. package/dist/plugin/define.js.map +1 -1
  139. package/dist/plugin/limits.d.ts +5 -2
  140. package/dist/plugin/limits.d.ts.map +1 -1
  141. package/dist/plugin/limits.js +5 -2
  142. package/dist/plugin/limits.js.map +1 -1
  143. package/dist/plugin/manifest.d.ts +83 -6
  144. package/dist/plugin/manifest.d.ts.map +1 -1
  145. package/dist/plugin/manifest.js +111 -7
  146. package/dist/plugin/manifest.js.map +1 -1
  147. package/dist/plugin/rest-schemas.d.ts +76 -0
  148. package/dist/plugin/rest-schemas.d.ts.map +1 -1
  149. package/dist/plugin/rest-schemas.js +23 -2
  150. package/dist/plugin/rest-schemas.js.map +1 -1
  151. package/dist/plugin/sandbox.d.ts +4 -3
  152. package/dist/plugin/sandbox.d.ts.map +1 -1
  153. package/dist/plugin/sandbox.js +33 -6
  154. package/dist/plugin/sandbox.js.map +1 -1
  155. package/dist/plugin/semver.d.ts +26 -0
  156. package/dist/plugin/semver.d.ts.map +1 -0
  157. package/dist/plugin/semver.js +76 -0
  158. package/dist/plugin/semver.js.map +1 -0
  159. package/dist/plugin/testing.d.ts.map +1 -1
  160. package/dist/plugin/testing.js +2 -1
  161. package/dist/plugin/testing.js.map +1 -1
  162. package/dist/plugin/web.d.ts +10 -1
  163. package/dist/plugin/web.d.ts.map +1 -1
  164. package/dist/plugin/web.js +34 -0
  165. package/dist/plugin/web.js.map +1 -1
  166. package/dist/plugin.d.ts +3 -2
  167. package/dist/plugin.d.ts.map +1 -1
  168. package/dist/plugin.js +3 -2
  169. package/dist/plugin.js.map +1 -1
  170. package/dist/rules.d.ts +2 -2
  171. package/dist/rules.js +3 -3
  172. package/dist/schemas.d.ts +574 -11
  173. package/dist/schemas.d.ts.map +1 -1
  174. package/dist/schemas.js +154 -25
  175. package/dist/schemas.js.map +1 -1
  176. package/dist/use-action.d.ts +8 -2
  177. package/dist/use-action.d.ts.map +1 -1
  178. package/dist/use-action.js +13 -6
  179. package/dist/use-action.js.map +1 -1
  180. package/dist/vocabulary.d.ts +3 -1
  181. package/dist/vocabulary.d.ts.map +1 -1
  182. package/dist/vocabulary.js +3 -0
  183. package/dist/vocabulary.js.map +1 -1
  184. package/docs/specs/cli.md +4 -3
  185. package/docs/specs/plugins.md +49 -35
  186. package/docs/specs/rest.md +20 -18
  187. package/package.json +7 -7
  188. package/skills/building-a-plugin/SKILL.md +10 -9
  189. package/skills/planning-the-board/references/setting-up.md +2 -1
  190. package/skills/working-the-board/SKILL.md +3 -3
  191. package/src/api.ts +10 -0
  192. package/src/cli/cli.ts +162 -39
  193. package/src/cli/format.ts +54 -10
  194. package/src/cli/help.ts +23 -14
  195. package/src/cli/plugin-check.ts +68 -2
  196. package/src/cli/plugin-cli.ts +104 -6
  197. package/src/cli/plugin-init.ts +178 -3
  198. package/src/client.ts +36 -9
  199. package/src/compat.ts +1 -1
  200. package/src/components/board.tsx +3 -3
  201. package/src/components/comments.tsx +1 -0
  202. package/src/components/decision-form.tsx +166 -29
  203. package/src/components/decision-list.tsx +116 -15
  204. package/src/components/event-feed.tsx +7 -1
  205. package/src/components/goals.tsx +4 -1
  206. package/src/components/home.tsx +615 -0
  207. package/src/components/my-decisions.tsx +4 -1
  208. package/src/components/pack-connect.tsx +5 -4
  209. package/src/components/people.tsx +136 -54
  210. package/src/components/plugin-frame.tsx +62 -63
  211. package/src/components/plugin-settings.tsx +428 -87
  212. package/src/components/projects.tsx +0 -55
  213. package/src/components/task-view.tsx +9 -1
  214. package/src/components/ui.tsx +6 -2
  215. package/src/connect-page.tsx +5 -6
  216. package/src/console.tsx +98 -42
  217. package/src/data.ts +41 -11
  218. package/src/docs-page.tsx +6 -5
  219. package/src/home-tiles.ts +438 -0
  220. package/src/i18n/en.ts +185 -0
  221. package/src/i18n/index.ts +17 -14
  222. package/src/i18n/ko.ts +181 -3
  223. package/src/index.ts +7 -5
  224. package/src/limits.ts +8 -0
  225. package/src/plugin/bridge.ts +77 -1
  226. package/src/plugin/capabilities.ts +17 -1
  227. package/src/plugin/context.ts +24 -2
  228. package/src/plugin/define.ts +4 -1
  229. package/src/plugin/limits.ts +5 -2
  230. package/src/plugin/manifest.ts +154 -10
  231. package/src/plugin/rest-schemas.ts +27 -1
  232. package/src/plugin/sandbox.ts +36 -8
  233. package/src/plugin/semver.ts +89 -0
  234. package/src/plugin/testing.ts +2 -1
  235. package/src/plugin/web.ts +49 -0
  236. package/src/plugin.ts +18 -0
  237. package/src/rules.ts +3 -3
  238. package/src/schemas.ts +190 -28
  239. package/src/styles/console.css +764 -192
  240. package/src/use-action.ts +16 -7
  241. package/src/vocabulary.ts +4 -0
  242. package/template/plugin/console-plugin.json +3 -1
  243. 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":";AAAA,OAAO,EAML,SAAS,EACT,eAAe,EACf,MAAM,EACN,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EACL,KAAK,EACL,QAAQ,EACR,UAAU,EACV,WAAW,EACX,eAAe,EAKf,SAAS,EACT,QAAQ,EACR,KAAK,EAEL,OAAO,EACP,MAAM,EACN,OAAO,EACP,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAErD,mGAAmG;AACnG,kGAAkG;AAClG,+FAA+F;AAC/F,+FAA+F;AAC/F,0DAA0D;AAE1D,2FAA2F;AAC3F,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB,MAAM,IAAI,GAAsB,EAAE,CAAC;AAUnC,uGAAuG;AACvG,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC,QAAQ,CAAC;IAClC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;IACnC,MAAM,MAAM,GAAG,CACb,8BACE,eAAM,SAAS,EAAC,cAAc,YAC5B,KAAC,WAAW,IAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,IAAI,GAAG,GACtC,EACP,eAAM,SAAS,EAAC,cAAc,YAAE,OAAO,CAAC,IAAI,GAAQ,EACnD,IAAI,IAAI,CACP,gBAAM,SAAS,EAAC,cAAc,aAC5B,eAAM,SAAS,EAAC,gBAAgB,YAAE,OAAO,CAAC,GAAG,GAAQ,EACrD,KAAC,gBAAgB,IAAC,IAAI,EAAE,OAAO,CAAC,IAAI,GAAI,EACvC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAClC,KAAC,KAAK,IAAC,IAAI,EAAC,SAAS,YAAE,KAAK,CAAC,OAAO,GAAS,CAC9C,CAAC,CAAC,CAAC,CACF,KAAC,KAAK,IAAC,IAAI,EAAC,SAAS,YAAE,KAAK,CAAC,MAAM,GAAS,CAC7C,IACI,CACR,EACA,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CACzC,eAAM,SAAS,EAAC,eAAe,YAAE,OAAO,CAAC,WAAW,GAAQ,CAC7D,EACA,OAAO,CAAC,aAAa,GAAG,CAAC,IAAI,CAC5B,gBACE,SAAS,EAAC,4BAA4B,EACtC,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,aAEnD,OAAO,CAAC,aAAa,EACtB,gBAAM,SAAS,EAAC,oBAAoB,aACjC,GAAG,EACH,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,IACzC,IACF,CACR,IACA,CACJ,CAAC;IACF,MAAM,SAAS,GAAG,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,IAAI,IAAI,sBAAsB,CAAC,CAAC;IACxF,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,cAAK,SAAS,EAAE,SAAS,YAAG,MAAM,GAAO,CAAC;IACnD,CAAC;IACD,OAAO,CACL,YACE,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,IACE,MAAM,KAAK,SAAS;gBACpB,KAAK,CAAC,MAAM,KAAK,CAAC;gBAClB,CAAC,KAAK,CAAC,OAAO;gBACd,CAAC,KAAK,CAAC,OAAO;gBACd,CAAC,KAAK,CAAC,QAAQ,EACf,CAAC;gBACD,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM,CAAC,OAAO,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,YAEA,MAAM,GACL,CACL,CAAC;AACJ,CAAC;AAED,yFAAyF;AACzF,SAAS,UAAU,CAAC,KAInB;IACC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC;IAC9B,OAAO,CACL,mBAAU,SAAS,EAAC,eAAe,gBAAa,KAAK,CAAC,IAAI,YACvD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACzB,iBAEE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,iBAAiB,CAAC,kBAC9D,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,gBAC1B,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAC7B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EACxB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,YAEnC,eACE,SAAS,EAAC,oBAAoB,EAC9B,KAAK,EACH;oBACE,aAAa,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO;oBAC5C,aAAa,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI;iBACzB,GAEpB,IAhBG,IAAI,CAiBF,CACV,CAAC,GACO,CACZ,CAAC;AACJ,CAAC;AA0BD,oGAAoG;AACpG,SAAS,cAAc;IACrB,MAAM,OAAO,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAc,CAAC,CAAC,CAAC;IACvD,eAAe,CAAC,GAAG,EAAE;QACnB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;QAC7B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACjF,OAAO,EAAE,CAAC;QACV,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7C,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC;AAuBD,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,QAAQ,GAAG,QAAQ,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC5B,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACxC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,cAAc,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAC5C,oGAAoG;IACpG,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAkB,IAAI,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC;IAC9B,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC;IACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAc,IAAI,CAAC,CAAC;IACpD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;IACzC,qFAAqF;IACrF,MAAM,QAAQ,GAAG,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,4FAA4F;IAC5F,+DAA+D;IAC/D,MAAM,KAAK,GACT,QAAQ,KAAK,IAAI;QACf,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,CAAC,IAA2B,EAAE,UAAU,GAAsB,MAAM,EAAE,EAAE,CACrF,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAEzD,6EAA6E;IAC7E,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACpD,8FAA8F;IAC9F,8DAA8D;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE5B,MAAM,KAAK,GAAG,CAAC,IAAgB,EAAE,KAAqC,EAAE,EAAE;QACxE,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,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YAChB,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,MAAM,EAAE,KAAK;YACb,IAAI;YACJ,IAAI,EAAE,CAAC;YACP,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,4FAA4F;IAC5F,8FAA8F;IAC9F,8FAA8F;IAC9F,+EAA+E;IAC/E,MAAM,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACrF,6FAA6F;QAC7F,MAAM,QAAQ,GAAG,CAAC,IAAW,EAAmD,EAAE;YAChF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC7B,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;YAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5E,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;YACtC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;YACxC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;YAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;YACtE,OAAO;gBACL,IAAI;gBACJ,GAAG;gBACH,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,EAAE;aAClF,CAAC;QACJ,CAAC,CAAC;QACF,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,EAAsB,CAAC;QAC3B,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE;YAC5B,KAAK,GAAG,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;YAChD,EAAE,GAAG,GAAG,CAAC;YACT,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;YAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;YACrB,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,OAAO;YACT,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;YAC3B,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC1B,IAAI,MAAM,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;gBAC3B,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC,CAAC;QACF,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,GAAG,CAAC,CAAC;YACd,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;YACd,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,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACrE,CAAC,CAAC,CAAC;QACL,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,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,CAAC,KAAmB,EAAE,EAAE;YACtC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;YAClF,IAAI,IAAI,EAAE,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACxD,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YAC7D,CAAC;YACD,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,CAAC,KAAoB,EAAE,EAAE;YACrC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC3B,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;QACH,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,GACT,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvF,KAAK,GAAG,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC5C,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,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC1C,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,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACnC,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,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC7C,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,CAAC,CAAC,CAAC;IAEX,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,EAAE,CAC5B,MAAM,CACJ,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAC5C,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,CAChB,CAAC;IACJ,oGAAoG;IACpG,MAAM,KAAK,GAAG,CAAC,IAAgB,EAAE,KAAsC,EAAE,EAAE;QACzE,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,aAAa,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAoC;YAC5C,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;YAC1B,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;YAC1B,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;YACxB,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;SAC1B,CAAC;QACF,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7E,CAAC;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;YAC/D,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,KAAK,CAAC,MAAM,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QACD,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE;YAClB,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,KAAK,CAAC,MAAM,EAAE,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,IAAc,EAAU,EAAE,CAC5C,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzE,4FAA4F;IAC5F,kEAAkE;IAClE,MAAM,KAAK,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9F,KAAK,CAAC,OAAO,GAAG;QACd,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACrD,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KACvD,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAC9E,CAAC;IACF,MAAM,GAAG,GAAG,OAAO;QACjB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,IAAI,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC;IAChG,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,OAAO,CACL,eACE,GAAG,EAAE,IAAI,EACT,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,OAAO,IAAI,iBAAiB,EAAE,QAAQ,KAAK,IAAI,IAAI,cAAc,CAAC,aAE1F,OAAO,IAAI,CACV,eAAK,SAAS,EAAC,aAAa,aAC1B,YAAG,SAAS,EAAC,cAAc,YAAE,KAAK,CAAC,IAAI,GAAK,EAC5C,eAAK,SAAS,EAAC,qBAAqB,aAClC,KAAC,MAAM,IAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAC9D,QAAQ,CAAC,MAAM,CAAC,MAAM,GAChB,EACT,KAAC,MAAM,IAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,YAC9D,KAAK,CAAC,IAAI,GACJ,IACL,IACF,CACP,EACA,KAAK,KAAK,SAAS,IAAI,KAAC,OAAO,IAAC,IAAI,EAAC,QAAQ,YAAE,KAAK,GAAW,EAC/D,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CACjB,eAAK,SAAS,EAAC,cAAc,aAC3B,eAAM,SAAS,EAAC,gBAAgB,YAAE,KAAK,CAAC,GAAG,GAAQ,EAClD,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACjB,kBAEE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,aAAa,EACvB,OAAO,EAAE,GAAG,EAAE,CACZ,MAAM,CACJ,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,EAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CACtC,mBAGA,UAAU,CAAC,IAAI,CAAC,KAVd,IAAI,CAAC,EAAE,CAWL,CACV,CAAC,IACE,CACP,EACA,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,EACxD,cACE,GAAG,EAAE,IAAI,EACT,SAAS,EAAC,cAAc,gBACZ,QAAQ,CAAC,QAAQ,CAAC,IAAI,kBACpB,OAAO,EACrB,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EACtC,KAAK,EACH;oBACE,mBAAmB,EAAE,OAAO;oBAC5B,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;iBACnB,aAGnB,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;wBACrB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;wBACjD,MAAM,MAAM,GAAG,QAAQ,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;wBACpE,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACnC,OAAO,CACL,cAEE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,SAAS,IAAI,cAAc,CAAC,eACrD,IAAI,CAAC,IAAI,CAAC,EAAE,EACvB,KAAK,EACH;gCACE,aAAa,EAAE,IAAI,CAAC,CAAC;gCACrB,aAAa,EAAE,IAAI,CAAC,CAAC;gCACrB,aAAa,EAAE,CAAC;gCAChB,aAAa,EAAE,CAAC;gCAChB,GAAG,CAAC,MAAM,KAAK,SAAS;oCACtB,CAAC,CAAC,EAAE;oCACJ,CAAC,CAAC;wCACE,gBAAgB,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI;wCACpC,eAAe,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI;qCACnC,CAAC;gCACN,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;oCAC5C,CAAC,CAAC,EAAE;oCACJ,CAAC,CAAC,EAAE,gBAAgB,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;6BAC3C,EAEpB,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,gBACrB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EACtC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAClE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,aAE7D,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAC9B,KAAC,WAAW,IACV,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAC1B,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAChE,MAAM,EAAE,KAAK,CAAC,MAAM,GACpB,CACH,CAAC,CAAC,CAAC,CACF,mBAAS,SAAS,EAAC,6BAA6B,aAC9C,aAAI,SAAS,EAAC,eAAe,YAAE,IAAI,GAAM,EACxC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAA4B,CAAC,IACzD,CACX,EACA,OAAO,IAAI,CACV,8BACE,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,gBAAgB,gBACd,GAAG,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,EACtC,KAAK,EAAE,KAAK,CAAC,MAAM,EACnB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,uBAG5B,EACR,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CACzC,KAAC,UAAU,IACT,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAClC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,GACxE,CACH,IACA,CACJ,KAzDI,IAAI,CAAC,IAAI,CAAC,EAAE,CA0Dd,CACN,CAAC;oBACJ,CAAC,CAAC,EACD,IAAI,KAAK,SAAS,IAAI,CACrB,aACE,SAAS,EAAC,sBAAsB,iBACpB,MAAM,EAClB,KAAK,EACH;4BACE,aAAa,EAAE,IAAI,CAAC,CAAC;4BACrB,aAAa,EAAE,IAAI,CAAC,CAAC;4BACrB,aAAa,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;4BAChD,aAAa,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;yBAChC,YAGnB,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAC9B,KAAC,WAAW,IAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,GAAI,CAC7D,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,6BAA6B,YAC1C,YAAG,SAAS,EAAC,eAAe,YAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAK,GACpD,CACP,GACE,CACN,IACE,IACD,CACP,CAAC;AACJ,CAAC"}
@@ -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,+BAuElD"}
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":"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"}
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;AAW5F;;;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
+ {"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 instanceof Error ? failure.message : String(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 instanceof Error ? failure.message : String(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 instanceof Error ? failure.message : String(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":"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"}
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+JhD;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"}
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"}