@mosaicajs/components 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/aggregate.d.ts +4 -10
- package/dist/aggregate.js +7 -13
- package/dist/artifact-card.d.ts +21 -7
- package/dist/artifact-card.js +136 -79
- package/dist/base.d.ts +44 -5
- package/dist/base.js +54 -5
- package/dist/cluster-filter.d.ts +29 -25
- package/dist/cluster-filter.js +123 -106
- package/dist/colour-editor.d.ts +15 -4
- package/dist/colour-editor.js +107 -34
- package/dist/colour-picker.d.ts +12 -5
- package/dist/colour-picker.js +119 -32
- package/dist/display.js +77 -9
- package/dist/events.d.ts +21 -7
- package/dist/explorer.d.ts +118 -37
- package/dist/explorer.js +487 -212
- package/dist/field-card.d.ts +304 -48
- package/dist/field-card.js +1364 -244
- package/dist/filter-panel.d.ts +54 -10
- package/dist/filter-panel.js +242 -42
- package/dist/filter.d.ts +22 -4
- package/dist/filter.js +113 -34
- package/dist/hierarchy.d.ts +68 -45
- package/dist/hierarchy.js +320 -243
- package/dist/item-card.d.ts +62 -14
- package/dist/item-card.js +310 -110
- package/dist/key-picker.d.ts +2 -1
- package/dist/key-picker.js +4 -3
- package/dist/layer-picker.d.ts +4 -2
- package/dist/layer-picker.js +16 -7
- package/dist/lineage.d.ts +132 -0
- package/dist/lineage.js +307 -0
- package/dist/map.d.ts +135 -24
- package/dist/map.js +387 -117
- package/dist/mosaica-components.js +1848 -832
- package/dist/mosaica-components.js.sri +1 -1
- package/dist/mosaica-components.json +2 -2
- package/dist/parts.d.ts +4 -4
- package/dist/parts.js +18 -4
- package/dist/paths.d.ts +34 -12
- package/dist/paths.js +84 -46
- package/dist/selection.d.ts +22 -3
- package/dist/selection.js +125 -59
- package/dist/states.d.ts +72 -0
- package/dist/states.js +135 -26
- package/dist/status.d.ts +63 -5
- package/dist/status.js +215 -36
- package/dist/tokens.d.ts +8 -4
- package/dist/tokens.js +144 -14
- package/dist/view-picker.js +5 -0
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
sha384-
|
|
1
|
+
sha384-pA1hzsfbruonlvsvA6of9R0WEX1tWRvy8k5/KB6GJUoHlGUKGJ9dyezet7X6Qoow
|
package/dist/parts.d.ts
CHANGED
|
@@ -11,18 +11,18 @@
|
|
|
11
11
|
*/
|
|
12
12
|
export declare const PARTS: {
|
|
13
13
|
readonly map: readonly ["attribution", "canvas", "controls", "density-key", "note", "overlay", "region-tag", "tooltip", ...string[]];
|
|
14
|
-
readonly status: readonly ["card", "strip", "count-shown", "count-matched", "count-highlighted", "count-of", "count-visible", ...string[]];
|
|
14
|
+
readonly status: readonly ["cancel", "card", "spinner", "strip", "count-shown", "count-matched", "count-highlighted", "count-of", "count-visible", ...string[]];
|
|
15
15
|
readonly 'view-picker': readonly ["field", "select"];
|
|
16
16
|
readonly 'key-picker': readonly ["entry", "field", "label", "select", "step"];
|
|
17
17
|
readonly 'layer-picker': readonly ["entry", "name", "note", "title", ...string[]];
|
|
18
|
-
readonly filter: readonly ["bar", "entry", "mode", "more", "operator", "operators", "refusal", "tick", "value-count", "values"];
|
|
18
|
+
readonly filter: readonly ["bar", "entry", "mode", "more", "operator", "operators", "refusal", "spinner", "tick", "value-count", "values"];
|
|
19
19
|
readonly 'cluster-filter': readonly ["entry", "more", "name", "option", "path", "refusal", "value-count", "values"];
|
|
20
20
|
readonly 'filter-panel': readonly ["add", "add-list", "add-note", "add-option", "add-search", "all", "all-count", "card", "chip", "chips", "clear", "clear-highlight", "edit", "subject", "subject-count", "subject-key", "subject-name", ...string[]];
|
|
21
|
-
readonly 'field-card': readonly ["axis", "band", "bar-match", "bar-subject", "bin", "brush", "brush-filter", "brush-highlight", "choice", "colour-popover", "count", "filter", "fold", "head", "hex", "highlight", "hue", "level-select", "more", "name", "paint", "
|
|
21
|
+
readonly 'field-card': readonly ["also", "axis", "band", "bar-match", "bar-subject", "bin", "brush", "brush-filter", "brush-from", "brush-highlight", "brush-to", "chip", "chip-name", "chip-remove", "chips", "choice", "colour-popover", "count", "crumb", "crumb-name", "crumbs", "filter", "fold", "head", "hex", "highlight", "hue", "level", "level-select", "more", "name", "paint", "plot", "ramp", "range", "refusal", "remainder", "reset", "row", "rows", "spark", "step", "sub", "sv", "swatch", "title", "verbs"];
|
|
22
22
|
readonly 'colour-editor': readonly ["changed", "check", "choice", "close", "colour-popover", "columns", "count", "deselect", "dialog", "done", "hex", "hue", "name", "path", "reset", "reset-all", "row", "rows", "selected", "set-colour", "sub", "sv", "swatch", "title"];
|
|
23
23
|
readonly hierarchy: readonly ["actions", "also", "children", "count-masked", "count-matched", "counts", "dismiss", "expander", "filter", "fit", "highlight", "layer", "more", "name", "row", "search", "title", "tree", ...string[]];
|
|
24
24
|
readonly selection: readonly ["action", "actions", "count-matched", "count-served", "count-visible", "counts", "item", "items", "label", "reason", "refusal", "retry", "state", "title"];
|
|
25
|
-
readonly 'item-card': readonly ["close", "copy", "field", "headline", "key", "label", "open", "scoped", "show-all", "subtitle", "title", "value", "view-chip", ...string[]];
|
|
25
|
+
readonly 'item-card': readonly ["close", "copy", "field", "headline", "image", "key", "label", "more", "open", "scoped", "show-all", "subtitle", "title", "value", "view-chip", ...string[]];
|
|
26
26
|
readonly 'artifact-card': readonly ["child", "children", "close", "content", "count", "filter", "fit", "headline", "highlight", "label", "name", "outside", "parent", "parents", "shape", "title", "value", "verbs", ...string[]];
|
|
27
27
|
};
|
|
28
28
|
/** An element name `PARTS` lists: `map`, `status`, `item-card`, and so on. */
|
package/dist/parts.js
CHANGED
|
@@ -13,14 +13,15 @@ const STATE = ['state', 'refusal', 'reason', 'refresh', 'retry', 'reauthorise'];
|
|
|
13
13
|
*/
|
|
14
14
|
export const PARTS = {
|
|
15
15
|
map: ['attribution', 'canvas', 'controls', 'density-key', 'note', 'overlay', 'region-tag', 'tooltip', ...STATE],
|
|
16
|
-
status: ['card', 'strip', 'count-shown', 'count-matched', 'count-highlighted', 'count-of', 'count-visible', ...STATE],
|
|
16
|
+
status: ['cancel', 'card', 'spinner', 'strip', 'count-shown', 'count-matched', 'count-highlighted', 'count-of', 'count-visible', ...STATE],
|
|
17
17
|
'view-picker': ['field', 'select'],
|
|
18
18
|
'key-picker': ['entry', 'field', 'label', 'select', 'step'],
|
|
19
19
|
'layer-picker': ['entry', 'name', 'note', 'title', ...STATE],
|
|
20
|
-
filter: ['bar', 'entry', 'mode', 'more', 'operator', 'operators', 'refusal', 'tick', 'value-count', 'values'],
|
|
20
|
+
filter: ['bar', 'entry', 'mode', 'more', 'operator', 'operators', 'refusal', 'spinner', 'tick', 'value-count', 'values'],
|
|
21
21
|
'cluster-filter': ['entry', 'more', 'name', 'option', 'path', 'refusal', 'value-count', 'values'],
|
|
22
22
|
'filter-panel': ['add', 'add-list', 'add-note', 'add-option', 'add-search', 'all', 'all-count', 'card', 'chip', 'chips', 'clear', 'clear-highlight', 'edit', 'subject', 'subject-count', 'subject-key', 'subject-name', ...STATE],
|
|
23
23
|
'field-card': [
|
|
24
|
+
'also',
|
|
24
25
|
'axis',
|
|
25
26
|
'band',
|
|
26
27
|
'bar-match',
|
|
@@ -28,27 +29,40 @@ export const PARTS = {
|
|
|
28
29
|
'bin',
|
|
29
30
|
'brush',
|
|
30
31
|
'brush-filter',
|
|
32
|
+
'brush-from',
|
|
31
33
|
'brush-highlight',
|
|
34
|
+
'brush-to',
|
|
35
|
+
'chip',
|
|
36
|
+
'chip-name',
|
|
37
|
+
'chip-remove',
|
|
38
|
+
'chips',
|
|
32
39
|
'choice',
|
|
33
40
|
'colour-popover',
|
|
34
41
|
'count',
|
|
42
|
+
'crumb',
|
|
43
|
+
'crumb-name',
|
|
44
|
+
'crumbs',
|
|
35
45
|
'filter',
|
|
36
46
|
'fold',
|
|
37
47
|
'head',
|
|
38
48
|
'hex',
|
|
39
49
|
'highlight',
|
|
40
50
|
'hue',
|
|
51
|
+
'level',
|
|
41
52
|
'level-select',
|
|
42
53
|
'more',
|
|
43
54
|
'name',
|
|
44
55
|
'paint',
|
|
45
|
-
'path',
|
|
46
56
|
'plot',
|
|
47
57
|
'ramp',
|
|
58
|
+
'range',
|
|
59
|
+
'refusal',
|
|
60
|
+
'remainder',
|
|
48
61
|
'reset',
|
|
49
62
|
'row',
|
|
50
63
|
'rows',
|
|
51
64
|
'spark',
|
|
65
|
+
'step',
|
|
52
66
|
'sub',
|
|
53
67
|
'sv',
|
|
54
68
|
'swatch',
|
|
@@ -58,7 +72,7 @@ export const PARTS = {
|
|
|
58
72
|
'colour-editor': ['changed', 'check', 'choice', 'close', 'colour-popover', 'columns', 'count', 'deselect', 'dialog', 'done', 'hex', 'hue', 'name', 'path', 'reset', 'reset-all', 'row', 'rows', 'selected', 'set-colour', 'sub', 'sv', 'swatch', 'title'],
|
|
59
73
|
hierarchy: ['actions', 'also', 'children', 'count-masked', 'count-matched', 'counts', 'dismiss', 'expander', 'filter', 'fit', 'highlight', 'layer', 'more', 'name', 'row', 'search', 'title', 'tree', ...STATE],
|
|
60
74
|
selection: ['action', 'actions', 'count-matched', 'count-served', 'count-visible', 'counts', 'item', 'items', 'label', 'reason', 'refusal', 'retry', 'state', 'title'],
|
|
61
|
-
'item-card': ['close', 'copy', 'field', 'headline', 'key', 'label', 'open', 'scoped', 'show-all', 'subtitle', 'title', 'value', 'view-chip', ...STATE],
|
|
75
|
+
'item-card': ['close', 'copy', 'field', 'headline', 'image', 'key', 'label', 'more', 'open', 'scoped', 'show-all', 'subtitle', 'title', 'value', 'view-chip', ...STATE],
|
|
62
76
|
'artifact-card': ['child', 'children', 'close', 'content', 'count', 'filter', 'fit', 'headline', 'highlight', 'label', 'name', 'outside', 'parent', 'parents', 'shape', 'title', 'value', 'verbs', ...STATE]
|
|
63
77
|
};
|
|
64
78
|
/**
|
package/dist/paths.d.ts
CHANGED
|
@@ -1,24 +1,46 @@
|
|
|
1
|
-
import { type Layer, type Store } from '@mosaicajs/client';
|
|
1
|
+
import { type BrowseRow, type Layer, type Store } from '@mosaicajs/client';
|
|
2
|
+
import { type Called } from './base.js';
|
|
3
|
+
/** A cluster's path of what its parents are called, nearest last, and whether parents above the first step are left out. */
|
|
4
|
+
export type Path = {
|
|
5
|
+
steps: string[];
|
|
6
|
+
beyond: boolean;
|
|
7
|
+
};
|
|
2
8
|
/**
|
|
3
|
-
* The names of clusters
|
|
4
|
-
* cluster asked about,
|
|
5
|
-
*
|
|
9
|
+
* The names and parents of clusters on a layer with parent edges, learnt from browse pages. For
|
|
10
|
+
* each cluster asked about, the children form of the cluster names its served parents, and the
|
|
11
|
+
* walk goes on up from the first of them as each answer lands. A cluster is asked about once until
|
|
12
|
+
* {@link reset}, which also drops an answer still loading.
|
|
6
13
|
*/
|
|
7
14
|
export declare class ClusterPaths {
|
|
8
15
|
private readonly changed;
|
|
9
|
-
/** Every cluster
|
|
16
|
+
/** Every cluster a page has served. */
|
|
10
17
|
private readonly met;
|
|
11
|
-
/** Each cluster's served parents,
|
|
12
|
-
private readonly
|
|
18
|
+
/** Each cluster's served parents, as the children form gave them. */
|
|
19
|
+
private readonly parentsGiven;
|
|
13
20
|
private readonly asked;
|
|
21
|
+
/** The clusters whose children form has been answered or refused. */
|
|
22
|
+
private readonly done;
|
|
23
|
+
/** How many steps up each cluster asked about is walked. */
|
|
24
|
+
private readonly walks;
|
|
14
25
|
private epoch;
|
|
15
26
|
/** `changed` is called as each page lands. */
|
|
16
27
|
constructor(changed: () => void);
|
|
17
28
|
reset(): void;
|
|
18
|
-
/**
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
|
|
29
|
+
/** Note the rows a page served, whose names and parents are then known. */
|
|
30
|
+
meet(rows: Iterable<BrowseRow>): void;
|
|
31
|
+
/** What a cluster is called from the row a page served, or `null` where no page has met it. */
|
|
32
|
+
nameOf(id: bigint): Called | null;
|
|
33
|
+
private parentsOf;
|
|
34
|
+
/** Walk `depth` steps up from each of `ids` on a layer with parent edges, asking for each step's parents not yet met. */
|
|
35
|
+
ask(store: Store, layer: Layer, ids: readonly bigint[], depth?: number): void;
|
|
36
|
+
private walk;
|
|
37
|
+
private fetch;
|
|
38
|
+
/**
|
|
39
|
+
* A cluster's path of parents up to `depth` steps, nearest last, as far up as the pages have
|
|
40
|
+
* named them; `null` while a step's parents are on their way. A step names every served parent
|
|
41
|
+
* of the step below it, and the step above is taken from the first of them.
|
|
42
|
+
*/
|
|
43
|
+
path(id: bigint, depth: number): Path | null;
|
|
44
|
+
/** A cluster's path two steps up as one line, as far as it is known. */
|
|
23
45
|
pathOf(id: bigint): string;
|
|
24
46
|
}
|
package/dist/paths.js
CHANGED
|
@@ -1,18 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { UNNAMED } from './base.js';
|
|
1
|
+
import { isLinked } from './aggregate.js';
|
|
2
|
+
import { called } from './base.js';
|
|
4
3
|
/**
|
|
5
|
-
* The names of clusters
|
|
6
|
-
* cluster asked about,
|
|
7
|
-
*
|
|
4
|
+
* The names and parents of clusters on a layer with parent edges, learnt from browse pages. For
|
|
5
|
+
* each cluster asked about, the children form of the cluster names its served parents, and the
|
|
6
|
+
* walk goes on up from the first of them as each answer lands. A cluster is asked about once until
|
|
7
|
+
* {@link reset}, which also drops an answer still loading.
|
|
8
8
|
*/
|
|
9
9
|
export class ClusterPaths {
|
|
10
10
|
changed;
|
|
11
|
-
/** Every cluster
|
|
11
|
+
/** Every cluster a page has served. */
|
|
12
12
|
met = new Map();
|
|
13
|
-
/** Each cluster's served parents,
|
|
14
|
-
|
|
13
|
+
/** Each cluster's served parents, as the children form gave them. */
|
|
14
|
+
parentsGiven = new Map();
|
|
15
15
|
asked = new Set();
|
|
16
|
+
/** The clusters whose children form has been answered or refused. */
|
|
17
|
+
done = new Set();
|
|
18
|
+
/** How many steps up each cluster asked about is walked. */
|
|
19
|
+
walks = new Map();
|
|
16
20
|
epoch = 0;
|
|
17
21
|
/** `changed` is called as each page lands. */
|
|
18
22
|
constructor(changed) {
|
|
@@ -21,52 +25,86 @@ export class ClusterPaths {
|
|
|
21
25
|
reset() {
|
|
22
26
|
this.epoch += 1;
|
|
23
27
|
this.met.clear();
|
|
24
|
-
this.
|
|
28
|
+
this.parentsGiven.clear();
|
|
25
29
|
this.asked.clear();
|
|
30
|
+
this.done.clear();
|
|
31
|
+
this.walks.clear();
|
|
26
32
|
}
|
|
27
|
-
/**
|
|
28
|
-
|
|
29
|
-
|
|
33
|
+
/** Note the rows a page served, whose names and parents are then known. */
|
|
34
|
+
meet(rows) {
|
|
35
|
+
for (const r of rows)
|
|
36
|
+
this.met.set(r.mosaicaId, r);
|
|
30
37
|
}
|
|
31
|
-
/**
|
|
32
|
-
|
|
33
|
-
|
|
38
|
+
/** What a cluster is called from the row a page served, or `null` where no page has met it. */
|
|
39
|
+
nameOf(id) {
|
|
40
|
+
const row = this.met.get(id);
|
|
41
|
+
return row ? called(row.name, row.key) : null;
|
|
42
|
+
}
|
|
43
|
+
parentsOf(id) {
|
|
44
|
+
return this.parentsGiven.get(id) ?? this.met.get(id)?.parentIds;
|
|
45
|
+
}
|
|
46
|
+
/** Walk `depth` steps up from each of `ids` on a layer with parent edges, asking for each step's parents not yet met. */
|
|
47
|
+
ask(store, layer, ids, depth = 2) {
|
|
48
|
+
if (!isLinked(layer))
|
|
49
|
+
return;
|
|
50
|
+
for (const id of ids)
|
|
51
|
+
this.walks.set(id, Math.max(depth, this.walks.get(id) ?? 0));
|
|
52
|
+
this.walk(store, layer, ids);
|
|
53
|
+
}
|
|
54
|
+
walk(store, layer, ids) {
|
|
55
|
+
for (const id of ids) {
|
|
56
|
+
let at = id;
|
|
57
|
+
for (let i = 0; i < (this.walks.get(id) ?? 0) && at !== undefined; i++) {
|
|
58
|
+
const parents = this.parentsOf(at);
|
|
59
|
+
if (parents === undefined || parents.some((p) => !this.met.has(p))) {
|
|
60
|
+
this.fetch(store, layer, at);
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
at = parents[0];
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
fetch(store, layer, id) {
|
|
68
|
+
if (this.asked.has(id))
|
|
34
69
|
return;
|
|
70
|
+
this.asked.add(id);
|
|
35
71
|
const epoch = this.epoch;
|
|
36
|
-
const
|
|
37
|
-
if (this.
|
|
72
|
+
const landed = (parents) => {
|
|
73
|
+
if (epoch !== this.epoch)
|
|
38
74
|
return;
|
|
39
|
-
this.
|
|
40
|
-
|
|
41
|
-
.
|
|
42
|
-
.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
this.met.set(r.mosaicaId, r);
|
|
47
|
-
this.parentsOf.set(id, p.parents.map((r) => r.mosaicaId));
|
|
48
|
-
this.changed();
|
|
49
|
-
})
|
|
50
|
-
.catch(() => undefined);
|
|
75
|
+
this.done.add(id);
|
|
76
|
+
if (parents) {
|
|
77
|
+
this.meet(parents);
|
|
78
|
+
this.parentsGiven.set(id, parents.map((r) => r.mosaicaId));
|
|
79
|
+
}
|
|
80
|
+
this.walk(store, layer, [...this.walks.keys()]);
|
|
81
|
+
this.changed();
|
|
51
82
|
};
|
|
52
|
-
|
|
53
|
-
ask(id);
|
|
54
|
-
const first = this.parentsOf.get(id)?.[0];
|
|
55
|
-
if (first !== undefined)
|
|
56
|
-
ask(first);
|
|
57
|
-
}
|
|
83
|
+
store.browse({ layer: layer.name, filters: null, parent: id, limit: 1 }).then((p) => landed(p.parents), () => landed(null));
|
|
58
84
|
}
|
|
59
|
-
/**
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
85
|
+
/**
|
|
86
|
+
* A cluster's path of parents up to `depth` steps, nearest last, as far up as the pages have
|
|
87
|
+
* named them; `null` while a step's parents are on their way. A step names every served parent
|
|
88
|
+
* of the step below it, and the step above is taken from the first of them.
|
|
89
|
+
*/
|
|
90
|
+
path(id, depth) {
|
|
91
|
+
const steps = [];
|
|
92
|
+
let parents = this.parentsOf(id) ?? [];
|
|
93
|
+
let at = id;
|
|
94
|
+
for (let i = 0; i < depth && parents.length > 0; i++) {
|
|
95
|
+
const named = parents.flatMap((p) => this.met.get(p) ?? []);
|
|
96
|
+
if (named.length < parents.length && this.asked.has(at) && !this.done.has(at))
|
|
97
|
+
return null;
|
|
98
|
+
if (named.length === 0)
|
|
66
99
|
break;
|
|
67
|
-
|
|
68
|
-
|
|
100
|
+
steps.unshift(named.map((r) => called(r.name, r.key).text).join(', '));
|
|
101
|
+
at = named[0].mosaicaId;
|
|
102
|
+
parents = this.parentsOf(at) ?? [];
|
|
69
103
|
}
|
|
70
|
-
return
|
|
104
|
+
return { steps, beyond: parents.length > 0 };
|
|
105
|
+
}
|
|
106
|
+
/** A cluster's path two steps up as one line, as far as it is known. */
|
|
107
|
+
pathOf(id) {
|
|
108
|
+
return this.path(id, 2)?.steps.join(' › ') ?? '';
|
|
71
109
|
}
|
|
72
110
|
}
|
package/dist/selection.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { nothing, type TemplateResult } from 'lit';
|
|
1
|
+
import { nothing, type PropertyValues, type TemplateResult } from 'lit';
|
|
2
2
|
import { type RegionProjection } from '@mosaicajs/client';
|
|
3
3
|
import { MosaicaElement } from './base.js';
|
|
4
4
|
import './count.js';
|
|
@@ -6,7 +6,7 @@ import './count.js';
|
|
|
6
6
|
* Use the selection card beside a map so that viewers can see what is inside the region they have
|
|
7
7
|
* drawn. It reads the store's selected region, or the `region` you set. It counts the items inside
|
|
8
8
|
* that the filters match, the items the viewer may see there and the marks drawn there. The drawn
|
|
9
|
-
* marks are listed below the counts,
|
|
9
|
+
* marks are listed below the counts, each a button that picks it.
|
|
10
10
|
*
|
|
11
11
|
* The region acts as a filter, which means the map and every other count narrow to it once it
|
|
12
12
|
* settles. Outside flips it to everything outside the shape, and Clear removes it. The counts are
|
|
@@ -14,6 +14,12 @@ import './count.js';
|
|
|
14
14
|
* says when that is so. Export and Save as artifact are shown disabled because they are not
|
|
15
15
|
* available yet.
|
|
16
16
|
*
|
|
17
|
+
* Screen readers announce the state line as it changes: that the selection is being counted, a
|
|
18
|
+
* refusal, and, once, when the query has finished loading, the matched and visible counts with
|
|
19
|
+
* whether they are exact for the shape. The counts and that verdict are read out and not drawn on
|
|
20
|
+
* the line, since the figures are below it. With `quiet`, the card shows the same and announces
|
|
21
|
+
* nothing.
|
|
22
|
+
*
|
|
17
23
|
* @summary A card showing the counts and marks inside the selected region.
|
|
18
24
|
* @tagname mosaica-selection
|
|
19
25
|
* @category Elements
|
|
@@ -32,7 +38,7 @@ import './count.js';
|
|
|
32
38
|
* @csspart count-visible - The `<mosaica-count>` of items the viewer may see inside (or outside).
|
|
33
39
|
* @csspart label - The heading above the list.
|
|
34
40
|
* @csspart items - The list of drawn marks inside.
|
|
35
|
-
* @csspart item - One drawn mark, by `mosaica_id`.
|
|
41
|
+
* @csspart item - One drawn mark's row, holding a button named by its `mosaica_id`.
|
|
36
42
|
* @csspart actions - The action buttons.
|
|
37
43
|
* @csspart action - One action button.
|
|
38
44
|
*/
|
|
@@ -40,7 +46,20 @@ export declare class MosaicaSelection extends MosaicaElement {
|
|
|
40
46
|
static styles: import("lit").CSSResult[];
|
|
41
47
|
/** A region to show instead of the store's `region` projection. */
|
|
42
48
|
accessor region: RegionProjection | null;
|
|
49
|
+
/**
|
|
50
|
+
* Announces nothing: the state line and the counts are still shown, and none is put in a live
|
|
51
|
+
* region. Set it when another element on the page says the same things.
|
|
52
|
+
*/
|
|
53
|
+
accessor quiet: boolean;
|
|
43
54
|
private get shown();
|
|
55
|
+
private readonly actionFocus;
|
|
56
|
+
protected willUpdate(changed: PropertyValues<this>): void;
|
|
57
|
+
protected updated(): void;
|
|
58
|
+
/**
|
|
59
|
+
* The state and its line for a region: what the server said of its count, or how the count
|
|
60
|
+
* stands. Once it is counted, `verdict` says whether the counts are exact for the shape.
|
|
61
|
+
*/
|
|
62
|
+
private stateOfRegion;
|
|
44
63
|
render(): TemplateResult | typeof nothing;
|
|
45
64
|
}
|
|
46
65
|
declare global {
|