@connextar/house 0.5.1 → 0.6.1
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 +87 -0
- package/dist/grid/columns.d.ts +47 -0
- package/dist/grid/columns.d.ts.map +1 -0
- package/dist/grid/columns.js +2 -0
- package/dist/grid/columns.js.map +1 -0
- package/dist/grid/compare.d.ts +16 -0
- package/dist/grid/compare.d.ts.map +1 -0
- package/dist/grid/compare.js +31 -0
- package/dist/grid/compare.js.map +1 -0
- package/dist/grid/hidden-columns.d.ts +8 -0
- package/dist/grid/hidden-columns.d.ts.map +1 -0
- package/dist/grid/hidden-columns.js +81 -0
- package/dist/grid/hidden-columns.js.map +1 -0
- package/dist/grid/index.d.ts +20 -0
- package/dist/grid/index.d.ts.map +1 -0
- package/dist/grid/index.js +5 -0
- package/dist/grid/index.js.map +1 -0
- package/dist/grid/use-grid.d.ts +86 -0
- package/dist/grid/use-grid.d.ts.map +1 -0
- package/dist/grid/use-grid.js +157 -0
- package/dist/grid/use-grid.js.map +1 -0
- package/dist/grid/views.d.ts +30 -0
- package/dist/grid/views.d.ts.map +1 -0
- package/dist/grid/views.js +51 -0
- package/dist/grid/views.js.map +1 -0
- package/dist/setup-guide/bits.js +1 -1
- package/dist/setup-guide/bits.js.map +1 -1
- package/dist/setup-guide/guide.d.ts +12 -3
- package/dist/setup-guide/guide.d.ts.map +1 -1
- package/dist/setup-guide/guide.js.map +1 -1
- package/dist/setup-guide/strip.d.ts.map +1 -1
- package/dist/setup-guide/strip.js +5 -2
- package/dist/setup-guide/strip.js.map +1 -1
- package/dist/trail/trail.d.ts +9 -1
- package/dist/trail/trail.d.ts.map +1 -1
- package/dist/trail/trail.js +46 -9
- package/dist/trail/trail.js.map +1 -1
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -234,6 +234,15 @@ export function DashboardShell({ userId, children }: { userId: string; children:
|
|
|
234
234
|
}
|
|
235
235
|
```
|
|
236
236
|
|
|
237
|
+
The trail lives in `sessionStorage`, so it belongs to one tab and survives a
|
|
238
|
+
reload but not a new window. **On a door whose URL _is_ the credential — a share
|
|
239
|
+
link with a token in the path — pass `persist={false}`.** A crumb carries the
|
|
240
|
+
`href` it points at, so persisting there would leave a bearer token in storage
|
|
241
|
+
for anything with DOM access to read; without it the trail still works for as
|
|
242
|
+
long as the tab stays put, and simply starts again after a reload. The `scope`
|
|
243
|
+
is only ever compared, never read back, so it is stored as a digest rather than
|
|
244
|
+
as the thing you handed over.
|
|
245
|
+
|
|
237
246
|
### `@connextar/house/editor`, `/editor/content`, `/editor/emoji`
|
|
238
247
|
|
|
239
248
|
`RichTextEditor` — Notion-style writing for any prose field. Formatting appears
|
|
@@ -372,6 +381,15 @@ react-hook-form, plain `useState` and MAS's state forms all host it unchanged. A
|
|
|
372
381
|
check may live on the form (`onValidateStep`) or on the step (`step.validate`);
|
|
373
382
|
both are asked, the step's first.
|
|
374
383
|
|
|
384
|
+
**`paysOnComplete` is presentational.** It says an item's steps are choices made
|
|
385
|
+
inside one flow that saves nothing until its last press, so the strip can say
|
|
386
|
+
"nothing lands until it is built" and tick them as `ready`. It is _not_ a rule
|
|
387
|
+
`rewardsOwed` enforces — that pays whatever is done and unpaid, as it does for
|
|
388
|
+
every item, and what keeps a half-built thing from paying is that the host's
|
|
389
|
+
records cannot say a step is done before the thing exists. It reads as "not
|
|
390
|
+
built yet" only while nothing has been earned: once the first reward lands the
|
|
391
|
+
thing plainly does exist, and the copy stops promising.
|
|
392
|
+
|
|
375
393
|
`stepValidator(form, report)` and `useStepValidator(form)` are in
|
|
376
394
|
`@connextar/house/wizard/react-hook-form` — its own entry point because
|
|
377
395
|
`react-hook-form` is an **optional** peer dependency. Every import of it there is
|
|
@@ -491,6 +509,75 @@ module to React and its icons — no router, no toast library, no design system
|
|
|
491
509
|
because the moment it reaches for one of those, the claim that six apps can host
|
|
492
510
|
it stops being true.
|
|
493
511
|
|
|
512
|
+
### `@connextar/house/grid`
|
|
513
|
+
|
|
514
|
+
Search, sorting, per-column filters, column visibility, saved views and paging
|
|
515
|
+
for a list screen — the arithmetic, with no markup in it.
|
|
516
|
+
|
|
517
|
+
This is the rule's second clause again, and the clearest case since `ux`: three
|
|
518
|
+
apps had written the same list behaviour three times. FB's grids sit on TanStack
|
|
519
|
+
Table with sticky columns and a context menu; AltEd hand-rolled the same
|
|
520
|
+
behaviour over its own `Column<T>`; PharmaLine had four hand-written `<table>`s
|
|
521
|
+
with one search box between them. What actually differed was entirely the
|
|
522
|
+
rendering. What was identical — and repeatedly wrong in small ways — was the
|
|
523
|
+
arithmetic underneath: which rows match, in what order, on which page.
|
|
524
|
+
|
|
525
|
+
Two of those small ways are worth naming, because both are in here now and
|
|
526
|
+
neither is obvious. A plain string sort files every "Year 1x" before "Year 2",
|
|
527
|
+
which reads as a broken table rather than a subtle one, so ordering goes through
|
|
528
|
+
an `Intl.Collator` with `numeric` and `sensitivity: "base"`. And filtering a list
|
|
529
|
+
while on page 4 strands the reader on a page that no longer exists — clamped
|
|
530
|
+
when the page is derived, not corrected afterwards by an effect, which rendered
|
|
531
|
+
the empty page once before putting it right.
|
|
532
|
+
|
|
533
|
+
There is deliberately no table here. Each app already has its own table
|
|
534
|
+
primitives and its own look, and bringing a second design system into an app
|
|
535
|
+
that has one is the cost this package exists to avoid. So a host declares
|
|
536
|
+
columns that extend `GridColumnSpec` with whatever its own table needs, and gets
|
|
537
|
+
the same objects back:
|
|
538
|
+
|
|
539
|
+
```tsx
|
|
540
|
+
interface Column<T> extends GridColumnSpec<T> {
|
|
541
|
+
header: ReactNode;
|
|
542
|
+
cell: (row: T) => ReactNode;
|
|
543
|
+
numeric?: boolean;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
const columns: Column<Patient>[] = [
|
|
547
|
+
{ key: "name", header: "Name", label: "Name", cell: (p) => p.name, sortValue: (p) => p.name },
|
|
548
|
+
// `filterValue` is what offers the column a filter — and only when the rows
|
|
549
|
+
// hold more than one distinct value, since a filter with one option is clutter.
|
|
550
|
+
{
|
|
551
|
+
key: "status",
|
|
552
|
+
header: "Status",
|
|
553
|
+
label: "Status",
|
|
554
|
+
cell: (p) => <Badge>{p.status}</Badge>,
|
|
555
|
+
sortValue: (p) => p.status,
|
|
556
|
+
filterValue: (p) => p.status,
|
|
557
|
+
},
|
|
558
|
+
];
|
|
559
|
+
|
|
560
|
+
const grid = useGrid({ rows, columns, storageKey: "patients", initialSort: { key: "name", direction: "asc" } });
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
`grid.rows` is the page to render and `grid.visibleColumns` the columns to draw;
|
|
564
|
+
`grid.matched` is everything the search and filters kept, for a total or a bulk
|
|
565
|
+
action. `storageKey` is what lets column choices be remembered — in the browser,
|
|
566
|
+
through `useHiddenColumns`, which is exported separately so a grid paging on the
|
|
567
|
+
server keeps the same behaviour and the same stored choice.
|
|
568
|
+
|
|
569
|
+
`GridController` is the contract a toolbar needs, and `useGrid` is only one thing
|
|
570
|
+
that satisfies it: an app whose list is too long to send in one response drives
|
|
571
|
+
the same search box, filter menus, column picker and saved-views menu from its
|
|
572
|
+
own server-backed hook, and the UI cannot tell.
|
|
573
|
+
|
|
574
|
+
`GridViewState` is what a saved view holds. It is written somewhere and read back
|
|
575
|
+
later, possibly by a newer build, so `parseGridView` repairs rather than trusts:
|
|
576
|
+
a view saved before `pageSize` existed is still a valid view, and one stale
|
|
577
|
+
filter is dropped rather than throwing when the menu entry is picked. Where views
|
|
578
|
+
are stored — a table keyed by account, or the browser — is the app's decision,
|
|
579
|
+
because only the app knows whether a view should follow someone to their phone.
|
|
580
|
+
|
|
494
581
|
### Styles — `@connextar/house/house.css`
|
|
495
582
|
|
|
496
583
|
What the components need that utility classes cannot say: rich text, the editor's
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { GridValue } from "./compare.js";
|
|
2
|
+
/**
|
|
3
|
+
* What the engine needs to know about a column — and nothing more.
|
|
4
|
+
*
|
|
5
|
+
* Deliberately free of `header`, `cell` and every other presentational field:
|
|
6
|
+
* the engine never renders anything, and each app's table already has its own
|
|
7
|
+
* column type with its own look. Hosts extend this interface and hand their own
|
|
8
|
+
* columns in; `useGrid` is generic over that type and gives the same objects
|
|
9
|
+
* back in `visibleColumns`, so nothing has to be mapped on the way through.
|
|
10
|
+
*/
|
|
11
|
+
export interface GridColumnSpec<T> {
|
|
12
|
+
/** Stable identity, used by sorting, filters, saved views and column choices. */
|
|
13
|
+
key: string;
|
|
14
|
+
/**
|
|
15
|
+
* Plain-text name for the column menu and the filter label. Falls back to
|
|
16
|
+
* `key` — which is a poor label, so hosts with a string header should pass it.
|
|
17
|
+
*/
|
|
18
|
+
label?: string;
|
|
19
|
+
/**
|
|
20
|
+
* The underlying value, for sorting and for matching a search term.
|
|
21
|
+
*
|
|
22
|
+
* A cell renders arbitrary markup, which cannot be sorted or searched, so a
|
|
23
|
+
* column that wants either has to say what it actually holds. Declaring this
|
|
24
|
+
* is also what makes a column sortable at all — better than sorting by
|
|
25
|
+
* something meaningless.
|
|
26
|
+
*/
|
|
27
|
+
sortValue?: (row: T) => GridValue;
|
|
28
|
+
/**
|
|
29
|
+
* A short, repeating label — a status, a type, a person — offered as a filter
|
|
30
|
+
* on the column. Only offered when the rows hold more than one distinct
|
|
31
|
+
* value: a filter with a single option is clutter.
|
|
32
|
+
*/
|
|
33
|
+
filterValue?: (row: T) => string | null | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Keep this column out of the global search. Use it for a column whose value
|
|
36
|
+
* is an opaque id or a duplicate of another column's — matches against it
|
|
37
|
+
* confuse more than they help.
|
|
38
|
+
*/
|
|
39
|
+
unsearchable?: boolean;
|
|
40
|
+
}
|
|
41
|
+
/** A column's distinct values, offered as a filter. */
|
|
42
|
+
export interface GridFacet {
|
|
43
|
+
key: string;
|
|
44
|
+
label: string;
|
|
45
|
+
values: string[];
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=columns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columns.d.ts","sourceRoot":"","sources":["../../src/grid/columns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,iFAAiF;IACjF,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,SAAS,CAAC;IAClC;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACpD;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,uDAAuD;AACvD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columns.js","sourceRoot":"","sources":["../../src/grid/columns.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ordering two cell values the way a reader expects them.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from AltEd, where the rule was learnt the hard way: a plain string
|
|
5
|
+
* comparison reads digits one character at a time and files every "Year 1x"
|
|
6
|
+
* before "Year 2", which looks exactly like a broken sort rather than a subtle
|
|
7
|
+
* one. `numeric` fixes that; `sensitivity: "base"` folds case and accents so
|
|
8
|
+
* "bertie" does not sort after "Cai".
|
|
9
|
+
*/
|
|
10
|
+
/** What a column contributes to sorting. Anything else is the host's business. */
|
|
11
|
+
export type GridValue = string | number | Date | null | undefined;
|
|
12
|
+
/** Order two labels the way a reader expects. Nullish sorts as an empty string. */
|
|
13
|
+
export declare function compareValues(a: GridValue, b: GridValue): number;
|
|
14
|
+
/** Compare two plain labels — for the value lists inside a column's filter. */
|
|
15
|
+
export declare function compareLabels(a: string, b: string): number;
|
|
16
|
+
//# sourceMappingURL=compare.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../src/grid/compare.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,kFAAkF;AAClF,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;AAIlE,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAOhE;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1D"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ordering two cell values the way a reader expects them.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from AltEd, where the rule was learnt the hard way: a plain string
|
|
5
|
+
* comparison reads digits one character at a time and files every "Year 1x"
|
|
6
|
+
* before "Year 2", which looks exactly like a broken sort rather than a subtle
|
|
7
|
+
* one. `numeric` fixes that; `sensitivity: "base"` folds case and accents so
|
|
8
|
+
* "bertie" does not sort after "Cai".
|
|
9
|
+
*/
|
|
10
|
+
const collator = new Intl.Collator("en-GB", { numeric: true, sensitivity: "base" });
|
|
11
|
+
/** Order two labels the way a reader expects. Nullish sorts as an empty string. */
|
|
12
|
+
export function compareValues(a, b) {
|
|
13
|
+
const left = normalise(a);
|
|
14
|
+
const right = normalise(b);
|
|
15
|
+
if (typeof left === "number" && typeof right === "number") {
|
|
16
|
+
return left === right ? 0 : left < right ? -1 : 1;
|
|
17
|
+
}
|
|
18
|
+
return collator.compare(String(left), String(right));
|
|
19
|
+
}
|
|
20
|
+
/** Compare two plain labels — for the value lists inside a column's filter. */
|
|
21
|
+
export function compareLabels(a, b) {
|
|
22
|
+
return collator.compare(a, b);
|
|
23
|
+
}
|
|
24
|
+
function normalise(value) {
|
|
25
|
+
if (value === null || value === undefined)
|
|
26
|
+
return "";
|
|
27
|
+
if (value instanceof Date)
|
|
28
|
+
return value.getTime();
|
|
29
|
+
return value;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=compare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/grid/compare.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;AAEpF,mFAAmF;AACnF,MAAM,UAAU,aAAa,CAAC,CAAY,EAAE,CAAY;IACtD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC1D,OAAO,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,aAAa,CAAC,CAAS,EAAE,CAAS;IAChD,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,SAAS,CAAC,KAAgB;IACjC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACrD,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;IAClD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface HiddenColumns {
|
|
2
|
+
hiddenColumns: string[];
|
|
3
|
+
setHidden: (next: string[]) => void;
|
|
4
|
+
toggleColumn: (key: string) => void;
|
|
5
|
+
showAllColumns: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function useHiddenColumns(grid: string | undefined): HiddenColumns;
|
|
8
|
+
//# sourceMappingURL=hidden-columns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hidden-columns.d.ts","sourceRoot":"","sources":["../../src/grid/hidden-columns.ts"],"names":[],"mappings":"AAoDA,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACpC,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,CAmCxE"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useState, useSyncExternalStore } from "react";
|
|
3
|
+
/**
|
|
4
|
+
* Which columns the reader has switched off, remembered per grid.
|
|
5
|
+
*
|
|
6
|
+
* Kept separate from the engine so a grid driven by the server — paging and
|
|
7
|
+
* filtering in the database rather than in the browser — keeps the same
|
|
8
|
+
* behaviour and the same stored choice. The store belongs to the browser, not
|
|
9
|
+
* to whichever hook happens to be driving the table.
|
|
10
|
+
*/
|
|
11
|
+
/** Shared empty array: `useSyncExternalStore` compares snapshots by identity. */
|
|
12
|
+
const NONE = [];
|
|
13
|
+
const storeKey = (grid) => `cx-grid:${grid}:hidden`;
|
|
14
|
+
// Parsing yields a fresh array each call, which would look like a new snapshot
|
|
15
|
+
// on every render, so the parse is cached against the text it came from.
|
|
16
|
+
const cache = new Map();
|
|
17
|
+
function read(grid) {
|
|
18
|
+
if (!grid)
|
|
19
|
+
return NONE;
|
|
20
|
+
let raw = null;
|
|
21
|
+
try {
|
|
22
|
+
raw = window.localStorage.getItem(storeKey(grid));
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
// A blocked store is not worth breaking the grid over.
|
|
26
|
+
}
|
|
27
|
+
const cached = cache.get(grid);
|
|
28
|
+
if (cached && cached.raw === raw)
|
|
29
|
+
return cached.value;
|
|
30
|
+
let value = NONE;
|
|
31
|
+
try {
|
|
32
|
+
if (raw) {
|
|
33
|
+
const parsed = JSON.parse(raw);
|
|
34
|
+
if (Array.isArray(parsed))
|
|
35
|
+
value = parsed.filter((key) => typeof key === "string");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
// A corrupt entry reads as "nothing hidden".
|
|
40
|
+
}
|
|
41
|
+
cache.set(grid, { raw, value });
|
|
42
|
+
return value;
|
|
43
|
+
}
|
|
44
|
+
/** Another tab changing the saved columns should move this one too. */
|
|
45
|
+
function subscribe(onChange) {
|
|
46
|
+
window.addEventListener("storage", onChange);
|
|
47
|
+
return () => window.removeEventListener("storage", onChange);
|
|
48
|
+
}
|
|
49
|
+
export function useHiddenColumns(grid) {
|
|
50
|
+
/**
|
|
51
|
+
* Read through `useSyncExternalStore` rather than copied into state by an
|
|
52
|
+
* effect — an effect meant one render with every column showing and a second
|
|
53
|
+
* with the reader's choice. `chosen` wins once they pick, which is also what
|
|
54
|
+
* keeps the control working where the store is blocked.
|
|
55
|
+
*/
|
|
56
|
+
const stored = useSyncExternalStore(subscribe, () => read(grid), () => NONE);
|
|
57
|
+
const [chosen, setChosen] = useState(null);
|
|
58
|
+
const hiddenColumns = chosen ?? stored;
|
|
59
|
+
function setHidden(next) {
|
|
60
|
+
setChosen(next);
|
|
61
|
+
if (!grid)
|
|
62
|
+
return;
|
|
63
|
+
try {
|
|
64
|
+
window.localStorage.setItem(storeKey(grid), JSON.stringify(next));
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// Ignore — the choice just will not survive a reload.
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
hiddenColumns,
|
|
72
|
+
setHidden,
|
|
73
|
+
toggleColumn(key) {
|
|
74
|
+
setHidden(hiddenColumns.includes(key) ? hiddenColumns.filter((k) => k !== key) : [...hiddenColumns, key]);
|
|
75
|
+
},
|
|
76
|
+
showAllColumns() {
|
|
77
|
+
setHidden([]);
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=hidden-columns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hidden-columns.js","sourceRoot":"","sources":["../../src/grid/hidden-columns.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAEvD;;;;;;;GAOG;AAEH,iFAAiF;AACjF,MAAM,IAAI,GAAa,EAAE,CAAC;AAE1B,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,WAAW,IAAI,SAAS,CAAC;AAE5D,+EAA+E;AAC/E,yEAAyE;AACzE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmD,CAAC;AAEzE,SAAS,IAAI,CAAC,IAAwB;IACpC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,GAAG,GAAkB,IAAI,CAAC;IAC9B,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,uDAAuD;IACzD,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,MAAM,IAAI,MAAM,CAAC,GAAG,KAAK,GAAG;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IAEtD,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAAE,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,6CAA6C;IAC/C,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAChC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,uEAAuE;AACvE,SAAS,SAAS,CAAC,QAAoB;IACrC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC7C,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC/D,CAAC;AASD,MAAM,UAAU,gBAAgB,CAAC,IAAwB;IACvD;;;;;OAKG;IACH,MAAM,MAAM,GAAG,oBAAoB,CACjC,SAAS,EACT,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAChB,GAAG,EAAE,CAAC,IAAI,CACX,CAAC;IACF,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAkB,IAAI,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,MAAM,IAAI,MAAM,CAAC;IAEvC,SAAS,SAAS,CAAC,IAAc;QAC/B,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,CAAC;YACH,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,sDAAsD;QACxD,CAAC;IACH,CAAC;IAED,OAAO;QACL,aAAa;QACb,SAAS;QACT,YAAY,CAAC,GAAW;YACtB,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5G,CAAC;QACD,cAAc;YACZ,SAAS,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@connextar/house/grid` — the arithmetic behind a list screen.
|
|
3
|
+
*
|
|
4
|
+
* Search, sorting, per-column filters, column visibility, saved views and
|
|
5
|
+
* paging, with no markup and no design system in them: React, and nothing else.
|
|
6
|
+
* Every app already has its own table primitives and its own look, so what it
|
|
7
|
+
* gets from here is the behaviour, not the appearance — the same bargain the
|
|
8
|
+
* error shell and the wizard offer.
|
|
9
|
+
*
|
|
10
|
+
* A host declares columns that extend `GridColumnSpec` with whatever its own
|
|
11
|
+
* table needs (`header`, `cell`, alignment, an inline editor) and hands them
|
|
12
|
+
* straight in; `useGrid` is generic over that type and returns the same objects
|
|
13
|
+
* in `visibleColumns`, so nothing is mapped on the way through.
|
|
14
|
+
*/
|
|
15
|
+
export type { GridColumnSpec, GridFacet } from "./columns.js";
|
|
16
|
+
export { compareLabels, compareValues, type GridValue } from "./compare.js";
|
|
17
|
+
export { useHiddenColumns, type HiddenColumns } from "./hidden-columns.js";
|
|
18
|
+
export { DEFAULT_PAGE_SIZE, useGrid, type Grid, type GridController, type GridSort, type SortDirection, type UseGridOptions, } from "./use-grid.js";
|
|
19
|
+
export { EMPTY_VIEW, parseGridView, type GridViewState } from "./views.js";
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/grid/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EACL,iBAAiB,EACjB,OAAO,EACP,KAAK,IAAI,EACT,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { compareLabels, compareValues } from "./compare.js";
|
|
2
|
+
export { useHiddenColumns } from "./hidden-columns.js";
|
|
3
|
+
export { DEFAULT_PAGE_SIZE, useGrid, } from "./use-grid.js";
|
|
4
|
+
export { EMPTY_VIEW, parseGridView } from "./views.js";
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/grid/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAkB,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAsB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EACL,iBAAiB,EACjB,OAAO,GAMR,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAsB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { GridColumnSpec, GridFacet } from "./columns.js";
|
|
2
|
+
import type { GridViewState } from "./views.js";
|
|
3
|
+
/**
|
|
4
|
+
* Search, sort, filter, hide columns and paginate one list — the behaviour
|
|
5
|
+
* every list screen in the portfolio should have and, before this, three apps
|
|
6
|
+
* had written three times.
|
|
7
|
+
*
|
|
8
|
+
* It is a hook over the host's own column type rather than a table library,
|
|
9
|
+
* because the thing that differs between those three apps is entirely the
|
|
10
|
+
* rendering: the cells hold arbitrary markup, each has its own table
|
|
11
|
+
* primitives, and adopting a library would mean rewriting every call site's
|
|
12
|
+
* column API to arrive at the same arithmetic. So the arithmetic is here and
|
|
13
|
+
* the markup stays where it belongs.
|
|
14
|
+
*
|
|
15
|
+
* Everything is client-side. These lists arrive already scoped to the signed-in
|
|
16
|
+
* account, so there is nothing to gain from another round trip and a great deal
|
|
17
|
+
* to gain from a filter that answers as it is typed. A list long enough to need
|
|
18
|
+
* server-side paging should drive `GridController` from its own hook instead —
|
|
19
|
+
* the toolbar contract below is what makes that swap invisible to the UI.
|
|
20
|
+
*/
|
|
21
|
+
export type SortDirection = "asc" | "desc";
|
|
22
|
+
export interface GridSort {
|
|
23
|
+
key: string;
|
|
24
|
+
direction: SortDirection;
|
|
25
|
+
}
|
|
26
|
+
export declare const DEFAULT_PAGE_SIZE = 25;
|
|
27
|
+
/**
|
|
28
|
+
* What a toolbar needs from whichever hook is driving a table.
|
|
29
|
+
*
|
|
30
|
+
* `useGrid` satisfies it, and so can an app's own server-driven hook, which is
|
|
31
|
+
* what lets the search box, filter menus, column picker and saved views be
|
|
32
|
+
* written once and behave identically either way.
|
|
33
|
+
*/
|
|
34
|
+
export interface GridController {
|
|
35
|
+
query: string;
|
|
36
|
+
setQuery: (next: string) => void;
|
|
37
|
+
sort: GridSort | null;
|
|
38
|
+
toggleSort: (key: string) => void;
|
|
39
|
+
facetOptions: GridFacet[];
|
|
40
|
+
facets: Record<string, string[]>;
|
|
41
|
+
toggleFacet: (key: string, value: string) => void;
|
|
42
|
+
clearFacet: (key: string) => void;
|
|
43
|
+
activeFacetCount: number;
|
|
44
|
+
isFiltered: boolean;
|
|
45
|
+
reset: () => void;
|
|
46
|
+
total: number;
|
|
47
|
+
hiddenColumns: string[];
|
|
48
|
+
toggleColumn: (key: string) => void;
|
|
49
|
+
showAllColumns: () => void;
|
|
50
|
+
viewState: GridViewState;
|
|
51
|
+
applyView: (view: GridViewState) => void;
|
|
52
|
+
}
|
|
53
|
+
export interface UseGridOptions<T, C extends GridColumnSpec<T>> {
|
|
54
|
+
rows: T[];
|
|
55
|
+
columns: C[];
|
|
56
|
+
/** How the list is ordered before anyone touches a header. */
|
|
57
|
+
initialSort?: GridSort;
|
|
58
|
+
/** A pre-filled search term — how a deep link lands on one row. */
|
|
59
|
+
initialQuery?: string;
|
|
60
|
+
pageSize?: number;
|
|
61
|
+
/** Extra text per row to match on, for values no column displays. */
|
|
62
|
+
searchExtra?: (row: T) => string | null | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Identifies this grid so column choices can be remembered and saved views
|
|
65
|
+
* can be filed against it. Without one the grid still works; it just forgets.
|
|
66
|
+
*/
|
|
67
|
+
storageKey?: string;
|
|
68
|
+
}
|
|
69
|
+
export interface Grid<T, C extends GridColumnSpec<T>> extends GridController {
|
|
70
|
+
/** The rows to render: this page of the searched, filtered, sorted list. */
|
|
71
|
+
rows: T[];
|
|
72
|
+
/** Everything matching the search and filters, before paging. */
|
|
73
|
+
matched: T[];
|
|
74
|
+
/** Render these, not the full set — respects what the reader switched off. */
|
|
75
|
+
visibleColumns: C[];
|
|
76
|
+
page: number;
|
|
77
|
+
setPage: (page: number) => void;
|
|
78
|
+
pageCount: number;
|
|
79
|
+
pageSize: number;
|
|
80
|
+
setPageSize: (size: number) => void;
|
|
81
|
+
/** 1-based index of the first row on this page; 0 when there are none. */
|
|
82
|
+
from: number;
|
|
83
|
+
to: number;
|
|
84
|
+
}
|
|
85
|
+
export declare function useGrid<T, C extends GridColumnSpec<T> = GridColumnSpec<T>>({ rows, columns, initialSort, initialQuery, pageSize: initialPageSize, searchExtra, storageKey, }: UseGridOptions<T, C>): Grid<T, C>;
|
|
86
|
+
//# sourceMappingURL=use-grid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-grid.d.ts","sourceRoot":"","sources":["../../src/grid/use-grid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useMemo, useState } from "react";
|
|
3
|
+
import { compareLabels, compareValues } from "./compare.js";
|
|
4
|
+
import { useHiddenColumns } from "./hidden-columns.js";
|
|
5
|
+
export const DEFAULT_PAGE_SIZE = 25;
|
|
6
|
+
export function useGrid({ rows, columns, initialSort, initialQuery, pageSize: initialPageSize = DEFAULT_PAGE_SIZE, searchExtra, storageKey, }) {
|
|
7
|
+
const [query, setQuery] = useState(initialQuery ?? "");
|
|
8
|
+
const [sort, setSort] = useState(initialSort ?? null);
|
|
9
|
+
const [facets, setFacets] = useState({});
|
|
10
|
+
const [pageSize, setPageSizeState] = useState(initialPageSize);
|
|
11
|
+
const [requestedPage, setPage] = useState(1);
|
|
12
|
+
const { hiddenColumns, setHidden, toggleColumn, showAllColumns } = useHiddenColumns(storageKey);
|
|
13
|
+
/** The columns actually rendered, in declared order. */
|
|
14
|
+
const visibleColumns = useMemo(() => columns.filter((column) => !hiddenColumns.includes(column.key)), [columns, hiddenColumns]);
|
|
15
|
+
/** Columns that opted into a filter, with the distinct values they hold. */
|
|
16
|
+
const facetOptions = useMemo(() => columns
|
|
17
|
+
.filter((column) => column.filterValue)
|
|
18
|
+
.map((column) => ({
|
|
19
|
+
key: column.key,
|
|
20
|
+
label: column.label ?? column.key,
|
|
21
|
+
values: [
|
|
22
|
+
...new Set(rows.map((row) => column.filterValue?.(row)).filter((v) => Boolean(v))),
|
|
23
|
+
].sort(compareLabels),
|
|
24
|
+
}))
|
|
25
|
+
.filter((facet) => facet.values.length > 1), [columns, rows]);
|
|
26
|
+
const matched = useMemo(() => {
|
|
27
|
+
const term = query.trim().toLowerCase();
|
|
28
|
+
const filtered = rows.filter((row) => {
|
|
29
|
+
// Every active filter must match — narrowing, not widening.
|
|
30
|
+
for (const [key, kept] of Object.entries(facets)) {
|
|
31
|
+
if (kept.length === 0)
|
|
32
|
+
continue;
|
|
33
|
+
const column = columns.find((c) => c.key === key);
|
|
34
|
+
const value = column?.filterValue?.(row);
|
|
35
|
+
if (!value || !kept.includes(value))
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
if (!term)
|
|
39
|
+
return true;
|
|
40
|
+
const haystack = [...columns.filter((c) => !c.unsearchable).map((c) => valueOf(c, row)), searchExtra?.(row)]
|
|
41
|
+
.filter((value) => value !== null && value !== undefined)
|
|
42
|
+
.map((value) => (value instanceof Date ? value.toISOString() : String(value)))
|
|
43
|
+
.join(" ")
|
|
44
|
+
.toLowerCase();
|
|
45
|
+
return haystack.includes(term);
|
|
46
|
+
});
|
|
47
|
+
if (!sort)
|
|
48
|
+
return filtered;
|
|
49
|
+
const column = columns.find((c) => c.key === sort.key);
|
|
50
|
+
const sortValue = column?.sortValue;
|
|
51
|
+
if (!sortValue)
|
|
52
|
+
return filtered;
|
|
53
|
+
// Copy before sorting: the caller's array is not ours to reorder.
|
|
54
|
+
return [...filtered].sort((a, b) => {
|
|
55
|
+
const result = compareValues(sortValue(a), sortValue(b));
|
|
56
|
+
return sort.direction === "asc" ? result : -result;
|
|
57
|
+
});
|
|
58
|
+
}, [rows, columns, query, facets, searchExtra, sort]);
|
|
59
|
+
const total = matched.length;
|
|
60
|
+
const pageCount = Math.max(1, Math.ceil(total / pageSize));
|
|
61
|
+
// Never strand someone on a page that no longer exists after a filter.
|
|
62
|
+
// Clamped here rather than corrected from an effect, which rendered the
|
|
63
|
+
// empty page once before putting it right.
|
|
64
|
+
const page = Math.min(requestedPage, pageCount);
|
|
65
|
+
const pageRows = useMemo(() => matched.slice((page - 1) * pageSize, page * pageSize), [matched, page, pageSize]);
|
|
66
|
+
/** Cycle a column: ascending → descending → unsorted. */
|
|
67
|
+
function toggleSort(key) {
|
|
68
|
+
setSort((current) => {
|
|
69
|
+
if (current?.key !== key)
|
|
70
|
+
return { key, direction: "asc" };
|
|
71
|
+
if (current.direction === "asc")
|
|
72
|
+
return { key, direction: "desc" };
|
|
73
|
+
return null;
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/** A new search starts at the beginning of the results, not on page 4. */
|
|
77
|
+
function search(next) {
|
|
78
|
+
setQuery(next);
|
|
79
|
+
setPage(1);
|
|
80
|
+
}
|
|
81
|
+
function toggleFacet(key, value) {
|
|
82
|
+
setPage(1);
|
|
83
|
+
setFacets((current) => {
|
|
84
|
+
const kept = current[key] ?? [];
|
|
85
|
+
const next = kept.includes(value) ? kept.filter((v) => v !== value) : [...kept, value];
|
|
86
|
+
if (next.length === 0)
|
|
87
|
+
return withoutKey(current, key);
|
|
88
|
+
return { ...current, [key]: next };
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
function clearFacet(key) {
|
|
92
|
+
setPage(1);
|
|
93
|
+
setFacets((current) => withoutKey(current, key));
|
|
94
|
+
}
|
|
95
|
+
function setPageSize(size) {
|
|
96
|
+
setPageSizeState(size);
|
|
97
|
+
setPage(1);
|
|
98
|
+
}
|
|
99
|
+
const activeFacetCount = Object.values(facets).reduce((sum, values) => sum + values.length, 0);
|
|
100
|
+
const isFiltered = query.trim().length > 0 || activeFacetCount > 0;
|
|
101
|
+
function reset() {
|
|
102
|
+
setQuery("");
|
|
103
|
+
setFacets({});
|
|
104
|
+
setPage(1);
|
|
105
|
+
}
|
|
106
|
+
/** Restore a saved view: search, sort, filters and columns together. */
|
|
107
|
+
function applyView(view) {
|
|
108
|
+
setQuery(view.query);
|
|
109
|
+
setSort(view.sort);
|
|
110
|
+
setFacets(view.facets);
|
|
111
|
+
setHidden(view.hiddenColumns);
|
|
112
|
+
if (view.pageSize)
|
|
113
|
+
setPageSizeState(view.pageSize);
|
|
114
|
+
setPage(1);
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
rows: pageRows,
|
|
118
|
+
matched,
|
|
119
|
+
total,
|
|
120
|
+
query,
|
|
121
|
+
setQuery: search,
|
|
122
|
+
sort,
|
|
123
|
+
toggleSort,
|
|
124
|
+
facetOptions,
|
|
125
|
+
facets,
|
|
126
|
+
toggleFacet,
|
|
127
|
+
clearFacet,
|
|
128
|
+
activeFacetCount,
|
|
129
|
+
isFiltered,
|
|
130
|
+
reset,
|
|
131
|
+
visibleColumns,
|
|
132
|
+
hiddenColumns,
|
|
133
|
+
toggleColumn,
|
|
134
|
+
showAllColumns,
|
|
135
|
+
viewState: { query, sort, facets, hiddenColumns, pageSize },
|
|
136
|
+
applyView,
|
|
137
|
+
page,
|
|
138
|
+
setPage,
|
|
139
|
+
pageCount,
|
|
140
|
+
pageSize,
|
|
141
|
+
setPageSize,
|
|
142
|
+
from: total === 0 ? 0 : (page - 1) * pageSize + 1,
|
|
143
|
+
to: Math.min(page * pageSize, total),
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
/** The value a column contributes to the search haystack. */
|
|
147
|
+
function valueOf(column, row) {
|
|
148
|
+
if (column.sortValue)
|
|
149
|
+
return column.sortValue(row);
|
|
150
|
+
if (column.filterValue)
|
|
151
|
+
return column.filterValue(row);
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
function withoutKey(facets, key) {
|
|
155
|
+
return Object.fromEntries(Object.entries(facets).filter(([candidate]) => candidate !== key));
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=use-grid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-grid.js","sourceRoot":"","sources":["../../src/grid/use-grid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { GridSort } from "./use-grid.js";
|
|
2
|
+
/**
|
|
3
|
+
* Everything a saved view captures: how the list was searched, ordered,
|
|
4
|
+
* filtered and which columns were showing.
|
|
5
|
+
*
|
|
6
|
+
* This shape is written to a database or a browser store and read back later,
|
|
7
|
+
* possibly by a newer version of the app, so it is validated on the way in
|
|
8
|
+
* rather than trusted. A view saved before `pageSize` existed is still a valid
|
|
9
|
+
* view — every field is checked independently and a bad one is dropped, which
|
|
10
|
+
* is why this returns a repaired state rather than a boolean.
|
|
11
|
+
*/
|
|
12
|
+
export interface GridViewState {
|
|
13
|
+
query: string;
|
|
14
|
+
sort: GridSort | null;
|
|
15
|
+
/** Column key → the values kept. An absent key means "all values". */
|
|
16
|
+
facets: Record<string, string[]>;
|
|
17
|
+
hiddenColumns: string[];
|
|
18
|
+
/** Rows per page, when the view was saved with one. */
|
|
19
|
+
pageSize?: number;
|
|
20
|
+
}
|
|
21
|
+
export declare const EMPTY_VIEW: GridViewState;
|
|
22
|
+
/**
|
|
23
|
+
* Read a stored view, keeping what is intelligible and discarding what is not.
|
|
24
|
+
*
|
|
25
|
+
* Returns `null` only when the input is not an object at all. A partly corrupt
|
|
26
|
+
* view is worth more than no view: losing one stale filter is a smaller failure
|
|
27
|
+
* than a menu entry that throws when picked.
|
|
28
|
+
*/
|
|
29
|
+
export declare function parseGridView(input: unknown): GridViewState | null;
|
|
30
|
+
//# sourceMappingURL=views.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../../src/grid/views.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACjC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,UAAU,EAAE,aAAwE,CAAC;AAElG;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAalE"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export const EMPTY_VIEW = { query: "", sort: null, facets: {}, hiddenColumns: [] };
|
|
2
|
+
/**
|
|
3
|
+
* Read a stored view, keeping what is intelligible and discarding what is not.
|
|
4
|
+
*
|
|
5
|
+
* Returns `null` only when the input is not an object at all. A partly corrupt
|
|
6
|
+
* view is worth more than no view: losing one stale filter is a smaller failure
|
|
7
|
+
* than a menu entry that throws when picked.
|
|
8
|
+
*/
|
|
9
|
+
export function parseGridView(input) {
|
|
10
|
+
if (typeof input !== "object" || input === null || Array.isArray(input))
|
|
11
|
+
return null;
|
|
12
|
+
const raw = input;
|
|
13
|
+
return {
|
|
14
|
+
query: typeof raw.query === "string" ? raw.query : "",
|
|
15
|
+
sort: parseSort(raw.sort),
|
|
16
|
+
facets: parseFacets(raw.facets),
|
|
17
|
+
hiddenColumns: parseStrings(raw.hiddenColumns),
|
|
18
|
+
...(typeof raw.pageSize === "number" && Number.isInteger(raw.pageSize) && raw.pageSize > 0
|
|
19
|
+
? { pageSize: raw.pageSize }
|
|
20
|
+
: {}),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function parseSort(input) {
|
|
24
|
+
if (typeof input !== "object" || input === null)
|
|
25
|
+
return null;
|
|
26
|
+
const raw = input;
|
|
27
|
+
if (typeof raw.key !== "string" || raw.key.length === 0)
|
|
28
|
+
return null;
|
|
29
|
+
if (raw.direction !== "asc" && raw.direction !== "desc")
|
|
30
|
+
return null;
|
|
31
|
+
return { key: raw.key, direction: raw.direction };
|
|
32
|
+
}
|
|
33
|
+
function parseFacets(input) {
|
|
34
|
+
if (typeof input !== "object" || input === null || Array.isArray(input))
|
|
35
|
+
return {};
|
|
36
|
+
const out = {};
|
|
37
|
+
for (const [key, value] of Object.entries(input)) {
|
|
38
|
+
const values = parseStrings(value);
|
|
39
|
+
// An empty list means "all values" — the same as the key being absent, so
|
|
40
|
+
// it is dropped rather than stored as a filter that filters nothing.
|
|
41
|
+
if (values.length > 0)
|
|
42
|
+
out[key] = values;
|
|
43
|
+
}
|
|
44
|
+
return out;
|
|
45
|
+
}
|
|
46
|
+
function parseStrings(input) {
|
|
47
|
+
if (!Array.isArray(input))
|
|
48
|
+
return [];
|
|
49
|
+
return input.filter((value) => typeof value === "string");
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=views.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"views.js","sourceRoot":"","sources":["../../src/grid/views.ts"],"names":[],"mappings":"AAsBA,MAAM,CAAC,MAAM,UAAU,GAAkB,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;AAElG;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrF,MAAM,GAAG,GAAG,KAAgC,CAAC;IAE7C,OAAO;QACL,KAAK,EAAE,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACrD,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;QACzB,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;QAC/B,aAAa,EAAE,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC;QAC9C,GAAG,CAAC,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,GAAG,CAAC;YACxF,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE;YAC5B,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC7D,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrE,IAAI,GAAG,CAAC,SAAS,KAAK,KAAK,IAAI,GAAG,CAAC,SAAS,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACrE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnF,MAAM,GAAG,GAA6B,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;QAC5E,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,0EAA0E;QAC1E,qEAAqE;QACrE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IAC3C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;AAC7E,CAAC"}
|
package/dist/setup-guide/bits.js
CHANGED
|
@@ -135,6 +135,6 @@ export function ItemHelp({ item, className, classNames, }) {
|
|
|
135
135
|
return (_jsxs("span", { className: cx("inline-flex items-center", className), children: [_jsx(HowToButton, { classNames: classNames, how: {
|
|
136
136
|
title: `What “${item.title}” asks for`,
|
|
137
137
|
steps: item.steps.map((step) => `${step.done ? "Done — " : ""}**${step.title}**${step.reward > 0 ? ` · ${step.reward} ${rewardWord(step.reward, words)}` : ""}`),
|
|
138
|
-
}, guide: first.guide, footer: _jsxs("p", { className: "mt-3 text-xs text-muted-foreground", children: ["Each step, with how to do it, is on the screen it's done on.", item.paysOnComplete ? "
|
|
138
|
+
}, guide: first.guide, footer: _jsxs("p", { className: "mt-3 text-xs text-muted-foreground", children: ["Each step, with how to do it, is on the screen it's done on.", item.paysOnComplete && item.earnedReward === 0 ? " Nothing is paid until the whole thing is built." : ""] }) }), _jsx(GuideIconLink, { guide: first.guide, classNames: classNames })] }));
|
|
139
139
|
}
|
|
140
140
|
//# sourceMappingURL=bits.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bits.js","sourceRoot":"","sources":["../../src/setup-guide/bits.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"bits.js","sourceRoot":"","sources":["../../src/setup-guide/bits.tsx"],"names":[],"mappings":"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"}
|
|
@@ -56,9 +56,18 @@ export interface SetupItemDef {
|
|
|
56
56
|
/** What to say while it is blocked, e.g. "After your first learner". */
|
|
57
57
|
blockedLabel?: string;
|
|
58
58
|
/**
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
59
|
+
* This item's steps are choices made inside one flow that saves nothing until
|
|
60
|
+
* its last press, so they tick as they are made and nothing exists to pay for
|
|
61
|
+
* until the whole thing is built.
|
|
62
|
+
*
|
|
63
|
+
* **It describes the host's flow; it is not a rule this module enforces.**
|
|
64
|
+
* `rewardsOwed` pays whatever is done and unpaid, as it does for every other
|
|
65
|
+
* item — what keeps a half-built thing from paying is that the host's records
|
|
66
|
+
* cannot say a step is done before the thing exists. Setting it changes only
|
|
67
|
+
* what is *said* on screen, and it is read as "not built yet" only while
|
|
68
|
+
* nothing has been earned: once the first reward lands, the thing plainly
|
|
69
|
+
* does exist, and going on saying "when it is built" would be untrue
|
|
70
|
+
* (round 19's 19.16).
|
|
62
71
|
*/
|
|
63
72
|
paysOnComplete?: boolean;
|
|
64
73
|
steps: readonly SetupStepDef[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guide.d.ts","sourceRoot":"","sources":["../../src/setup-guide/guide.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,iGAAiG;AACjG,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED,uFAAuF;AACvF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,+CAA+C;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yGAAyG;IACzG,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB
|
|
1
|
+
{"version":3,"file":"guide.d.ts","sourceRoot":"","sources":["../../src/setup-guide/guide.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guide.js","sourceRoot":"","sources":["../../src/setup-guide/guide.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"guide.js","sourceRoot":"","sources":["../../src/setup-guide/guide.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strip.d.ts","sourceRoot":"","sources":["../../src/setup-guide/strip.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAqE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAYvH,MAAM,WAAW,eAAe;IAC9B,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"strip.d.ts","sourceRoot":"","sources":["../../src/setup-guide/strip.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAqE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAYvH,MAAM,WAAW,eAAe;IAC9B,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,eAAe,4BA0FpF"}
|
|
@@ -31,12 +31,15 @@ export function SetupStrip({ itemKey, ready, className, classNames }) {
|
|
|
31
31
|
const words = setup.words;
|
|
32
32
|
const { progressed, total, percent, nextKey } = itemProgress(item, ready);
|
|
33
33
|
const owing = item.reward - item.earnedReward;
|
|
34
|
-
|
|
34
|
+
// Once anything has been earned the thing exists, so "when it is built" stops
|
|
35
|
+
// being true and the ordinary count takes over (round 19's 19.16).
|
|
36
|
+
const awaitingBuild = item.paysOnComplete === true && item.earnedReward === 0;
|
|
37
|
+
const summary = awaitingBuild
|
|
35
38
|
? `${progressed} of ${total} ready · ${owing} ${rewardWord(owing, words)} ${owing === 1 ? "lands" : "land"} when it is built`
|
|
36
39
|
: `${item.doneCount} of ${total} done · ${item.earnedReward} of ${item.reward} ${rewardWord(item.reward, words)} earned`;
|
|
37
40
|
return (_jsxs("section", { "aria-label": item.title, className: cx("@container", c.strip, className), children: [_jsxs("div", { className: "flex flex-wrap items-center gap-x-3.5 gap-y-3", children: [item.icon ? (_jsx("span", { className: "flex size-9 shrink-0 items-center justify-center rounded-xl bg-secondary", children: item.icon })) : null, _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("h2", { className: c.stripTitle, children: item.title }), _jsx("p", { className: c.stripSummary, children: summary })] }), _jsxs("div", { className: "flex w-full items-center gap-3 sm:w-auto", children: [_jsx("div", { role: "progressbar", "aria-label": `${item.title}: ${percent}%`, "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": percent, className: cx(c.bar, "flex-1 sm:w-56"), children: _jsx("div", { className: c.barFill, style: { width: `${percent}%` } }) }), _jsxs("span", { className: "text-[13px] font-semibold tabular-nums", children: [percent, "%"] }), _jsx("button", { type: "button", "aria-expanded": open, "aria-label": open ? "Hide the steps" : "Show the steps", onClick: () => setOpen((current) => !current), className: c.iconButton, children: _jsx(ChevronDown, { className: cx("size-4 transition-transform", !open && "-rotate-90"), "aria-hidden": true }) })] })] }), open ? (_jsx("ol", { className: cx("mt-3.5 grid gap-2.5 @md:grid-cols-2", COLUMNS[total]), children: item.steps.map((step, index) => {
|
|
38
41
|
const state = stepState(step, nextKey, ready);
|
|
39
|
-
return (_jsxs("li", { className: cx(c.stripTile, state === "next" && c.stripTileNext), children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx(StepCircle, { state: state, n: index + 1, size: "sm", classNames: classNames }), step.reward > 0 ? (_jsx(RewardChip, { reward: step.reward, state: step.earned ? "earned" :
|
|
42
|
+
return (_jsxs("li", { className: cx(c.stripTile, state === "next" && c.stripTileNext), children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx(StepCircle, { state: state, n: index + 1, size: "sm", classNames: classNames }), step.reward > 0 ? (_jsx(RewardChip, { reward: step.reward, state: step.earned ? "earned" : awaitingBuild ? "on-complete" : "todo", words: words, classNames: classNames })) : null] }), _jsxs("p", { className: cx("text-[13.5px] leading-snug font-semibold", step.done && c.rowTitleDone), children: [step.title, _jsx("span", { className: c.srOnly, children: step.done ? " (done)" : state === "ready" ? " (ready — pays when built)" : " (to do)" })] }), _jsxs("div", { className: "-ml-1.5 mt-auto flex items-center", children: [step.how ? (_jsx(HowToButton, { how: step.how, guide: step.guide, className: "size-7", classNames: classNames })) : null, _jsx(GuideIconLink, { guide: step.guide, className: "size-7", classNames: classNames }), state === "next" ? _jsx("span", { className: "ml-auto text-xs font-semibold text-primary", children: "Next" }) : null] })] }, step.key));
|
|
40
43
|
}) })) : null] }));
|
|
41
44
|
}
|
|
42
45
|
//# sourceMappingURL=strip.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strip.js","sourceRoot":"","sources":["../../src/setup-guide/strip.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAA2B,MAAM,WAAW,CAAC;AACvH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE/D,+EAA+E;AAC/E,gDAAgD;AAChD,MAAM,OAAO,GAA2B;IACtC,CAAC,EAAE,kBAAkB;IACrB,CAAC,EAAE,kBAAkB;IACrB,CAAC,EAAE,kBAAkB;CACtB,CAAC;AAcF;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAmB;IACnF,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IACpC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAE7C,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9D,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;IAC9C,MAAM,
|
|
1
|
+
{"version":3,"file":"strip.js","sourceRoot":"","sources":["../../src/setup-guide/strip.tsx"],"names":[],"mappings":"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"}
|
package/dist/trail/trail.d.ts
CHANGED
|
@@ -3,9 +3,17 @@ import { type Crumb } from "./rules.js";
|
|
|
3
3
|
/**
|
|
4
4
|
* `scope` is what the trail is made in — typically `${user.id}:${view}`.
|
|
5
5
|
* Mount it once in the layout that frames the pages which register crumbs.
|
|
6
|
+
*
|
|
7
|
+
* **`persist={false}` keeps the trail in memory only.** A crumb carries the
|
|
8
|
+
* `href` it points at, so on a door whose URLs *are* the credential — a
|
|
9
|
+
* share link with a token in the path — persisting would leave that token in
|
|
10
|
+
* `sessionStorage` for anything with DOM access to read. Turn it off there: the
|
|
11
|
+
* trail still works for as long as the tab stays on the page, and simply starts
|
|
12
|
+
* again after a reload (round 19's 19.15).
|
|
6
13
|
*/
|
|
7
|
-
export declare function TrailProvider({ scope, children }: {
|
|
14
|
+
export declare function TrailProvider({ scope, persist, children, }: {
|
|
8
15
|
scope?: string;
|
|
16
|
+
persist?: boolean;
|
|
9
17
|
children: ReactNode;
|
|
10
18
|
}): import("react").JSX.Element;
|
|
11
19
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trail.d.ts","sourceRoot":"","sources":["../../src/trail/trail.tsx"],"names":[],"mappings":"AAKA,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,EAA+B,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"trail.d.ts","sourceRoot":"","sources":["../../src/trail/trail.tsx"],"names":[],"mappings":"AAKA,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,EAA+B,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAoFrE;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAU,EACV,OAAc,EACd,QAAQ,GACT,EAAE;IACD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;CACrB,+BA2CA;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,GAAG,IAAI,CAapD;AAED,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,KAAK,EAAE,CAAA;CAAE,QAGtD;AAED,kFAAkF;AAClF,wBAAgB,UAAU,IAAI,IAAI,CAMjC;AAED,qFAAqF;AACrF,wBAAgB,cAAc,IAAI,KAAK,EAAE,GAAG,IAAI,CAK/C;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,sCAEhE;AAED,4EAA4E;AAC5E,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,GAAY,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,sCAoE1F;AAED,iFAAiF;AACjF,wBAAgB,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAY,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,sCA2DzF;AAED;;;;GAIG;AACH,wBAAgB,YAAY,SAW3B"}
|
package/dist/trail/trail.js
CHANGED
|
@@ -38,42 +38,79 @@ const CARRY_MS = 15_000;
|
|
|
38
38
|
// again, forever.
|
|
39
39
|
const TrailStateContext = createContext(null);
|
|
40
40
|
const TrailRegisterContext = createContext(null);
|
|
41
|
+
/**
|
|
42
|
+
* A short digest of the scope.
|
|
43
|
+
*
|
|
44
|
+
* The scope is only ever compared, never read back, so there is no reason to
|
|
45
|
+
* write down the thing itself — and an app may reasonably scope a trail by
|
|
46
|
+
* something it would rather not leave in storage. Not a boundary on its own:
|
|
47
|
+
* for a scope that carries a secret, see `persist`.
|
|
48
|
+
*/
|
|
49
|
+
function digest(scope) {
|
|
50
|
+
let a = 0x811c9dc5;
|
|
51
|
+
let b = 0x9e3779b9;
|
|
52
|
+
for (let i = 0; i < scope.length; i++) {
|
|
53
|
+
const code = scope.charCodeAt(i);
|
|
54
|
+
a = Math.imul(a ^ code, 0x01000193);
|
|
55
|
+
b = Math.imul(b + code, 0x85ebca6b) ^ (b >>> 13);
|
|
56
|
+
}
|
|
57
|
+
return `${(a >>> 0).toString(36)}.${(b >>> 0).toString(36)}`;
|
|
58
|
+
}
|
|
59
|
+
/** Whether a reference link carried the trail here. Holds nothing but a timestamp. */
|
|
60
|
+
function readCarried() {
|
|
61
|
+
try {
|
|
62
|
+
const stamp = Number(sessionStorage.getItem(CARRY) ?? 0);
|
|
63
|
+
return stamp > 0 && Date.now() - stamp < CARRY_MS;
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
41
69
|
function readStored(scope) {
|
|
42
70
|
try {
|
|
43
71
|
const parsed = JSON.parse(sessionStorage.getItem(STORE) ?? "null");
|
|
44
72
|
const stored = typeof parsed === "object" && parsed !== null ? parsed : {};
|
|
45
|
-
|
|
46
|
-
const stamp = Number(sessionStorage.getItem(CARRY) ?? 0);
|
|
47
|
-
return { previous, carried: stamp > 0 && Date.now() - stamp < CARRY_MS };
|
|
73
|
+
return stored.scope === digest(scope) && Array.isArray(stored.crumbs) ? stored.crumbs.filter(isCrumb) : [];
|
|
48
74
|
}
|
|
49
75
|
catch {
|
|
50
|
-
return
|
|
76
|
+
return [];
|
|
51
77
|
}
|
|
52
78
|
}
|
|
53
79
|
/**
|
|
54
80
|
* `scope` is what the trail is made in — typically `${user.id}:${view}`.
|
|
55
81
|
* Mount it once in the layout that frames the pages which register crumbs.
|
|
82
|
+
*
|
|
83
|
+
* **`persist={false}` keeps the trail in memory only.** A crumb carries the
|
|
84
|
+
* `href` it points at, so on a door whose URLs *are* the credential — a
|
|
85
|
+
* share link with a token in the path — persisting would leave that token in
|
|
86
|
+
* `sessionStorage` for anything with DOM access to read. Turn it off there: the
|
|
87
|
+
* trail still works for as long as the tab stays on the page, and simply starts
|
|
88
|
+
* again after a reload (round 19's 19.15).
|
|
56
89
|
*/
|
|
57
|
-
export function TrailProvider({ scope = "", children }) {
|
|
90
|
+
export function TrailProvider({ scope = "", persist = true, children, }) {
|
|
58
91
|
const [state, setState] = useState(null);
|
|
59
92
|
const [shownScope, setShownScope] = useState(scope);
|
|
93
|
+
// Where the trail lives when it is not written down.
|
|
94
|
+
const held = useRef([]);
|
|
60
95
|
// Switched scope on this page: the trail on screen goes with the old one.
|
|
61
96
|
if (shownScope !== scope) {
|
|
62
97
|
setShownScope(scope);
|
|
63
98
|
setState(null);
|
|
64
99
|
}
|
|
65
100
|
const register = useCallback((path, chain) => {
|
|
66
|
-
const
|
|
67
|
-
const crumbs = nextTrail(previous, chain,
|
|
101
|
+
const previous = persist ? readStored(scope) : held.current;
|
|
102
|
+
const crumbs = nextTrail(previous, chain, readCarried());
|
|
103
|
+
held.current = crumbs;
|
|
68
104
|
try {
|
|
69
|
-
|
|
105
|
+
if (persist)
|
|
106
|
+
sessionStorage.setItem(STORE, JSON.stringify({ scope: digest(scope), crumbs }));
|
|
70
107
|
sessionStorage.removeItem(CARRY);
|
|
71
108
|
}
|
|
72
109
|
catch {
|
|
73
110
|
// Storage can be unavailable (private windows); the trail just won't persist.
|
|
74
111
|
}
|
|
75
112
|
setState({ path, crumbs });
|
|
76
|
-
}, [scope]);
|
|
113
|
+
}, [scope, persist]);
|
|
77
114
|
// A link marked `data-trail-carry` — a reference in read-only text — carries
|
|
78
115
|
// the trail, as the editor's references do.
|
|
79
116
|
useEffect(() => {
|
package/dist/trail/trail.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trail.js","sourceRoot":"","sources":["../../src/trail/trail.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EACL,aAAa,EACb,WAAW,EACX,UAAU,EACV,SAAS,EACT,eAAe,EACf,MAAM,EACN,QAAQ,GAET,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAc,MAAM,YAAY,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,KAAK,GAAG,aAAa,CAAC;AAC5B,MAAM,KAAK,GAAG,mBAAmB,CAAC;AAClC,kFAAkF;AAClF,MAAM,QAAQ,GAAG,MAAM,CAAC;AASxB,gFAAgF;AAChF,uEAAuE;AACvE,4EAA4E;AAC5E,kBAAkB;AAClB,MAAM,iBAAiB,GAAG,aAAa,CAAoB,IAAI,CAAC,CAAC;AACjE,MAAM,oBAAoB,GAAG,aAAa,CAAkB,IAAI,CAAC,CAAC;AAElE,SAAS,
|
|
1
|
+
{"version":3,"file":"trail.js","sourceRoot":"","sources":["../../src/trail/trail.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EACL,aAAa,EACb,WAAW,EACX,UAAU,EACV,SAAS,EACT,eAAe,EACf,MAAM,EACN,QAAQ,GAET,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAc,MAAM,YAAY,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,KAAK,GAAG,aAAa,CAAC;AAC5B,MAAM,KAAK,GAAG,mBAAmB,CAAC;AAClC,kFAAkF;AAClF,MAAM,QAAQ,GAAG,MAAM,CAAC;AASxB,gFAAgF;AAChF,uEAAuE;AACvE,4EAA4E;AAC5E,kBAAkB;AAClB,MAAM,iBAAiB,GAAG,aAAa,CAAoB,IAAI,CAAC,CAAC;AACjE,MAAM,oBAAoB,GAAG,aAAa,CAAkB,IAAI,CAAC,CAAC;AAElE;;;;;;;GAOG;AACH,SAAS,MAAM,CAAC,KAAa;IAC3B,IAAI,CAAC,GAAG,UAAU,CAAC;IACnB,IAAI,CAAC,GAAG,UAAU,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC;QACpC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,sFAAsF;AACtF,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACzD,OAAO,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,QAAQ,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC;QAC5E,MAAM,MAAM,GACV,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAE,MAAgD,CAAC,CAAC,CAAC,EAAE,CAAC;QACzG,OAAO,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7G,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,GAAG,EAAE,EACV,OAAO,GAAG,IAAI,EACd,QAAQ,GAKT;IACC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAoB,IAAI,CAAC,CAAC;IAC5D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,qDAAqD;IACrD,MAAM,IAAI,GAAG,MAAM,CAAU,EAAE,CAAC,CAAC;IAEjC,0EAA0E;IAC1E,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACzB,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAC1B,CAAC,IAAY,EAAE,KAAc,EAAE,EAAE;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QAC5D,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC;YACH,IAAI,OAAO;gBAAE,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAC7F,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,8EAA8E;QAChF,CAAC;QACD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7B,CAAC,EACD,CAAC,KAAK,EAAE,OAAO,CAAC,CACjB,CAAC;IAEF,6EAA6E;IAC7E,4CAA4C;IAC5C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,CAAC,KAAiB,EAAE,EAAE;YACpC,IAAI,KAAK,CAAC,MAAM,YAAY,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC;gBAAE,UAAU,EAAE,CAAC;QACnG,CAAC,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,KAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,QAAQ,YAC5C,KAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAA8B,GACnD,CACjC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAqB;IAC5C,MAAM,QAAQ,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,eAAe,CAAC,GAAG,EAAE;QACnB,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC7E,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAsB;IACrD,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,+CAA+C;IACjD,CAAC;AACH,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,cAAc;IAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9E,OAAO,KAAK,CAAC,MAAM,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,EAAE,QAAQ,EAA2B;IAC/D,OAAO,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,4BAAG,QAAQ,GAAI,CAAC;AACnD,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,GAAG,MAAM,EAAwC;IACzF,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAChC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAE/B,OAAO,CACL,4BACa,mBAAmB,EAC9B,SAAS,EAAE,EAAE,CACX,gGAAgG,EAChG,SAAS,CACV,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,GAAG,GAAG,EAAE,YAE/C,aAAI,SAAS,EAAC,MAAM,YACjB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBAC3B,MAAM,OAAO,GAAG,KAAK,KAAK,IAAI,CAAC;gBAC/B,MAAM,IAAI,GAAG,CACX,8BACE,eACE,SAAS,EAAE,EAAE,CACX,iEAAiE,EACjE,OAAO,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,wCAAwC,CAC1F,iCAGA,OAAO,CAAC,KAAK,CAAC,GACV,EACP,eACE,SAAS,EAAE,EAAE,CACX,8JAA8J,EAC9J,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,uBAAuB,CACtD,YAEA,KAAK,CAAC,KAAK,GACP,IACN,CACJ,CAAC;gBACF,MAAM,MAAM,GACV,+FAA+F,CAAC;gBAClG,oEAAoE;gBACpE,yEAAyE;gBACzE,MAAM,KAAK,GAAG,EAAE,oBAAoB,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAyB,CAAC;gBAClF,OAAO,CACL,aAAoB,SAAS,EAAC,MAAM,YACjC,OAAO,CAAC,CAAC,CAAC,CACT,+BAAmB,MAAM,EAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,kBAAe,EAAE,YAC3F,IAAI,GACA,CACR,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IACH,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,WAAW,KAAK,CAAC,KAAK,EAAE,EAC/B,SAAS,EAAE,EAAE,CACX,MAAM,EACN,oIAAoI,CACrI,EACD,KAAK,EAAE,KAAK,YAEX,IAAI,GACA,CACR,IAjBM,KAAK,CAAC,GAAG,CAkBb,CACN,CAAC;YACJ,CAAC,CAAC,GACC,GACD,CACP,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,GAAG,MAAM,EAAwC;IACxF,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAE/C,0EAA0E;IAC1E,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;QAC7B,IAAI,IAAI;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;IAC/C,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,QAAQ,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAE/B,OAAO,CACL,6BACa,mBAAmB,oBAGf,EAAE,EACjB,SAAS,EAAE,EAAE,CACX,wJAAwJ,EACxJ,SAAS,CACV,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,aAEd,MAAC,IAAI,IACH,IAAI,EAAE,QAAQ,CAAC,IAAI,EACnB,SAAS,EAAC,+GAA+G,gBAC7G,WAAW,QAAQ,CAAC,KAAK,EAAE,aAEvC,KAAC,WAAW,IAAC,SAAS,EAAC,QAAQ,wBAAe,YAEzC,EACP,aAAI,GAAG,EAAE,OAAO,EAAE,SAAS,EAAC,4EAA4E,YACrG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAC5B,cAAoB,SAAS,EAAC,mBAAmB,aAC9C,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CACX,eAAM,SAAS,EAAC,+BAA+B,uCAExC,CACR,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAChB,+BAAmB,MAAM,EAAC,SAAS,EAAC,oCAAoC,YACrE,KAAK,CAAC,KAAK,GACP,CACR,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IACH,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,SAAS,EAAC,iHAAiH,YAE1H,KAAK,CAAC,KAAK,GACP,CACR,KAjBM,KAAK,CAAC,GAAG,CAkBb,CACN,CAAC,GACC,IACD,CACP,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,GAAG,EAAE;YACd,MAAM,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,IAAI,EAAE;gBAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1E,CAAC,CAAC;QACF,EAAE,EAAE,CAAC;QACL,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAC1C,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@connextar/house",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "The pieces every app we build needs and none of them should own a copy of.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -50,6 +50,10 @@
|
|
|
50
50
|
"types": "./dist/ux/navigation-index.d.ts",
|
|
51
51
|
"default": "./dist/ux/navigation-index.js"
|
|
52
52
|
},
|
|
53
|
+
"./grid": {
|
|
54
|
+
"types": "./dist/grid/index.d.ts",
|
|
55
|
+
"default": "./dist/grid/index.js"
|
|
56
|
+
},
|
|
53
57
|
"./wizard": {
|
|
54
58
|
"types": "./dist/wizard/index.d.ts",
|
|
55
59
|
"default": "./dist/wizard/index.js"
|