react-cheminfo 0.47.0 → 0.49.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 +71 -2
- package/bin/check-seo.mjs +4 -3
- package/lib/core.d.ts +1 -0
- package/lib/core.d.ts.map +1 -1
- package/lib/core.js +1 -0
- package/lib/core.js.map +1 -1
- package/lib/download/core/cssPaint.d.ts +27 -0
- package/lib/download/core/cssPaint.d.ts.map +1 -0
- package/lib/download/core/cssPaint.js +63 -0
- package/lib/download/core/cssPaint.js.map +1 -0
- package/lib/download/core/drawingMarkup.d.ts +11 -0
- package/lib/download/core/drawingMarkup.d.ts.map +1 -0
- package/lib/download/core/drawingMarkup.js +32 -0
- package/lib/download/core/drawingMarkup.js.map +1 -0
- package/lib/download/core/figureHtml.d.ts +25 -0
- package/lib/download/core/figureHtml.d.ts.map +1 -0
- package/lib/download/core/figureHtml.js +174 -0
- package/lib/download/core/figureHtml.js.map +1 -0
- package/lib/download/core/figureHtmlMarkup.d.ts +107 -0
- package/lib/download/core/figureHtmlMarkup.d.ts.map +1 -0
- package/lib/download/core/figureHtmlMarkup.js +75 -0
- package/lib/download/core/figureHtmlMarkup.js.map +1 -0
- package/lib/download/core/figureSvg.d.ts.map +1 -1
- package/lib/download/core/figureSvg.js +16 -35
- package/lib/download/core/figureSvg.js.map +1 -1
- package/lib/download/core/figureSvgDocument.d.ts +3 -3
- package/lib/download/core/figureSvgDocument.d.ts.map +1 -1
- package/lib/download/core/figureTarget.d.ts +14 -3
- package/lib/download/core/figureTarget.d.ts.map +1 -1
- package/lib/download/core/figureTarget.js +42 -3
- package/lib/download/core/figureTarget.js.map +1 -1
- package/lib/download/core/index.d.ts +1 -1
- package/lib/download/core/index.d.ts.map +1 -1
- package/lib/download/core/index.js +1 -1
- package/lib/download/core/index.js.map +1 -1
- package/lib/download/core/textLines.d.ts +27 -0
- package/lib/download/core/textLines.d.ts.map +1 -0
- package/lib/download/core/textLines.js +51 -0
- package/lib/download/core/textLines.js.map +1 -0
- package/lib/ecosystem/core/lookup.d.ts +2 -1
- package/lib/ecosystem/core/lookup.d.ts.map +1 -1
- package/lib/ecosystem/core/lookup.js +10 -3
- package/lib/ecosystem/core/lookup.js.map +1 -1
- package/lib/ecosystem/core/types.d.ts +2 -2
- package/lib/ecosystem/core/types.d.ts.map +1 -1
- package/lib/ecosystem/core/unlistedSites.d.ts +9 -0
- package/lib/ecosystem/core/unlistedSites.d.ts.map +1 -0
- package/lib/ecosystem/core/unlistedSites.js +35 -0
- package/lib/ecosystem/core/unlistedSites.js.map +1 -0
- package/lib/ecosystem/ui/glyphs.d.ts.map +1 -1
- package/lib/ecosystem/ui/glyphs.js +7 -0
- package/lib/ecosystem/ui/glyphs.js.map +1 -1
- package/lib/i18n/core/chromeCatalog.d.ts +1 -1
- package/lib/i18n/core/chromeCatalog.d.ts.map +1 -1
- package/lib/locales/de.json +55 -1
- package/lib/locales/en.json +55 -1
- package/lib/locales/es.json +55 -1
- package/lib/locales/fr.json +55 -1
- package/lib/locales/it.json +55 -1
- package/lib/periodic/ui/PeriodicTable.d.ts +3 -107
- package/lib/periodic/ui/PeriodicTable.d.ts.map +1 -1
- package/lib/periodic/ui/PeriodicTable.js +5 -82
- package/lib/periodic/ui/PeriodicTable.js.map +1 -1
- package/lib/periodic/ui/PeriodicTableChrome.d.ts.map +1 -1
- package/lib/periodic/ui/PeriodicTableChrome.js +3 -25
- package/lib/periodic/ui/PeriodicTableChrome.js.map +1 -1
- package/lib/periodic/ui/SelectAllCorner.d.ts +23 -0
- package/lib/periodic/ui/SelectAllCorner.d.ts.map +1 -0
- package/lib/periodic/ui/SelectAllCorner.js +40 -0
- package/lib/periodic/ui/SelectAllCorner.js.map +1 -0
- package/lib/periodic/ui/headerStyles.d.ts +17 -0
- package/lib/periodic/ui/headerStyles.d.ts.map +1 -0
- package/lib/periodic/ui/headerStyles.js +19 -0
- package/lib/periodic/ui/headerStyles.js.map +1 -0
- package/lib/periodic/ui/periodicTableProps.d.ts +115 -0
- package/lib/periodic/ui/periodicTableProps.d.ts.map +1 -0
- package/lib/periodic/ui/periodicTableProps.js +8 -0
- package/lib/periodic/ui/periodicTableProps.js.map +1 -0
- package/lib/periodic/ui/tableLayout.d.ts +26 -0
- package/lib/periodic/ui/tableLayout.d.ts.map +1 -0
- package/lib/periodic/ui/tableLayout.js +86 -0
- package/lib/periodic/ui/tableLayout.js.map +1 -0
- package/lib/seo/core/routes.d.ts +1 -1
- package/lib/seo/core/routes.js +1 -1
- package/lib/seo/vite/prerender.d.ts +6 -0
- package/lib/seo/vite/prerender.d.ts.map +1 -1
- package/lib/seo/vite/prerender.js +7 -1
- package/lib/seo/vite/prerender.js.map +1 -1
- package/lib/split/ui/SplitColumn.d.ts +0 -1
- package/lib/split/ui/SplitColumn.d.ts.map +1 -1
- package/lib/split/ui/SplitColumn.js +0 -1
- package/lib/split/ui/SplitColumn.js.map +1 -1
- package/lib/split/ui/SplitRow.d.ts +0 -1
- package/lib/split/ui/SplitRow.d.ts.map +1 -1
- package/lib/split/ui/SplitRow.js +0 -1
- package/lib/split/ui/SplitRow.js.map +1 -1
- package/lib/split/ui/splitPanes.d.ts +12 -1
- package/lib/split/ui/splitPanes.d.ts.map +1 -1
- package/lib/split/ui/splitPanes.js +1 -4
- package/lib/split/ui/splitPanes.js.map +1 -1
- package/lib/taxonomy/core/index.d.ts +8 -0
- package/lib/taxonomy/core/index.d.ts.map +1 -0
- package/lib/taxonomy/core/index.js +5 -0
- package/lib/taxonomy/core/index.js.map +1 -0
- package/lib/taxonomy/core/lineage.d.ts +83 -0
- package/lib/taxonomy/core/lineage.d.ts.map +1 -0
- package/lib/taxonomy/core/lineage.js +126 -0
- package/lib/taxonomy/core/lineage.js.map +1 -0
- package/lib/taxonomy/core/ncbi.d.ts +8 -0
- package/lib/taxonomy/core/ncbi.d.ts.map +1 -0
- package/lib/taxonomy/core/ncbi.js +10 -0
- package/lib/taxonomy/core/ncbi.js.map +1 -0
- package/lib/taxonomy/core/organismName.d.ts +28 -0
- package/lib/taxonomy/core/organismName.d.ts.map +1 -0
- package/lib/taxonomy/core/organismName.js +188 -0
- package/lib/taxonomy/core/organismName.js.map +1 -0
- package/lib/taxonomy/core/organismWords.d.ts +20 -0
- package/lib/taxonomy/core/organismWords.d.ts.map +1 -0
- package/lib/taxonomy/core/organismWords.js +86 -0
- package/lib/taxonomy/core/organismWords.js.map +1 -0
- package/lib/taxonomy/core/ranks.d.ts +51 -0
- package/lib/taxonomy/core/ranks.d.ts.map +1 -0
- package/lib/taxonomy/core/ranks.js +123 -0
- package/lib/taxonomy/core/ranks.js.map +1 -0
- package/lib/taxonomy/ui/OrganismName.d.ts +28 -0
- package/lib/taxonomy/ui/OrganismName.d.ts.map +1 -0
- package/lib/taxonomy/ui/OrganismName.js +28 -0
- package/lib/taxonomy/ui/OrganismName.js.map +1 -0
- package/lib/taxonomy/ui/TaxonLineage.d.ts +67 -0
- package/lib/taxonomy/ui/TaxonLineage.d.ts.map +1 -0
- package/lib/taxonomy/ui/TaxonLineage.js +45 -0
- package/lib/taxonomy/ui/TaxonLineage.js.map +1 -0
- package/lib/taxonomy/ui/index.d.ts +6 -0
- package/lib/taxonomy/ui/index.d.ts.map +1 -0
- package/lib/taxonomy/ui/index.js +4 -0
- package/lib/taxonomy/ui/index.js.map +1 -0
- package/lib/taxonomy/ui/rankLabel.d.ts +17 -0
- package/lib/taxonomy/ui/rankLabel.d.ts.map +1 -0
- package/lib/taxonomy/ui/rankLabel.js +77 -0
- package/lib/taxonomy/ui/rankLabel.js.map +1 -0
- package/lib/ui.d.ts +1 -0
- package/lib/ui.d.ts.map +1 -1
- package/lib/ui.js +1 -0
- package/lib/ui.js.map +1 -1
- package/package.json +1 -1
- package/src/core.ts +1 -0
- package/src/download/core/cssPaint.ts +71 -0
- package/src/download/core/drawingMarkup.ts +35 -0
- package/src/download/core/figureHtml.ts +214 -0
- package/src/download/core/figureHtmlMarkup.ts +187 -0
- package/src/download/core/figureSvg.ts +17 -38
- package/src/download/core/figureSvgDocument.ts +3 -3
- package/src/download/core/figureTarget.ts +41 -8
- package/src/download/core/index.ts +1 -0
- package/src/download/core/textLines.ts +67 -0
- package/src/ecosystem/core/lookup.ts +11 -3
- package/src/ecosystem/core/types.ts +4 -2
- package/src/ecosystem/core/unlistedSites.ts +37 -0
- package/src/ecosystem/ui/glyphs.tsx +44 -0
- package/src/locales/de.json +55 -1
- package/src/locales/en.json +55 -1
- package/src/locales/es.json +55 -1
- package/src/locales/fr.json +55 -1
- package/src/locales/it.json +55 -1
- package/src/periodic/ui/PeriodicTable.tsx +16 -204
- package/src/periodic/ui/PeriodicTableChrome.tsx +3 -24
- package/src/periodic/ui/SelectAllCorner.tsx +65 -0
- package/src/periodic/ui/headerStyles.ts +23 -0
- package/src/periodic/ui/periodicTableProps.ts +117 -0
- package/src/periodic/ui/tableLayout.ts +96 -0
- package/src/seo/core/routes.ts +1 -1
- package/src/seo/vite/prerender.ts +7 -1
- package/src/split/ui/SplitColumn.tsx +0 -1
- package/src/split/ui/SplitRow.tsx +0 -1
- package/src/split/ui/splitPanes.tsx +21 -5
- package/src/taxonomy/core/index.ts +20 -0
- package/src/taxonomy/core/lineage.ts +161 -0
- package/src/taxonomy/core/ncbi.ts +9 -0
- package/src/taxonomy/core/organismName.ts +217 -0
- package/src/taxonomy/core/organismWords.ts +86 -0
- package/src/taxonomy/core/ranks.ts +134 -0
- package/src/taxonomy/ui/OrganismName.tsx +59 -0
- package/src/taxonomy/ui/TaxonLineage.tsx +183 -0
- package/src/taxonomy/ui/index.ts +5 -0
- package/src/taxonomy/ui/rankLabel.ts +81 -0
- package/src/ui.ts +1 -0
- package/styles/chrome.css +135 -6
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A part of a figure drawn in HTML, written out as SVG.
|
|
3
|
+
*
|
|
4
|
+
* The part is measured off the page first (`figureHtml.ts`); what reaches this
|
|
5
|
+
* module is already a list of boxes, runs of words and drawings with where each
|
|
6
|
+
* one sits, so the file it becomes can be read — and tested — without a page.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* The part, as the markup that goes into the saved figure.
|
|
10
|
+
* @param paints - What was measured, in the order it is painted.
|
|
11
|
+
* @returns The markup, in the part's own coordinates: the caller places it.
|
|
12
|
+
*/
|
|
13
|
+
export function figureHtmlMarkup(paints) {
|
|
14
|
+
let markup = '';
|
|
15
|
+
for (const paint of paints)
|
|
16
|
+
markup += paintMarkup(paint);
|
|
17
|
+
return markup;
|
|
18
|
+
}
|
|
19
|
+
function paintMarkup(paint) {
|
|
20
|
+
switch (paint.kind) {
|
|
21
|
+
case 'box':
|
|
22
|
+
return boxMarkup(paint);
|
|
23
|
+
case 'text':
|
|
24
|
+
return textMarkup(paint);
|
|
25
|
+
case 'drawing':
|
|
26
|
+
return `<g transform="translate(${round(paint.x)} ${round(paint.y)})">${paint.markup}</g>`;
|
|
27
|
+
case 'group':
|
|
28
|
+
return `<g opacity="${round(paint.opacity)}">${figureHtmlMarkup(paint.children)}</g>`;
|
|
29
|
+
default:
|
|
30
|
+
return '';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function boxMarkup(box) {
|
|
34
|
+
const { x, y, width, height, fill, stroke, dash } = box;
|
|
35
|
+
const { radius = 0, strokeWidth = 1 } = box;
|
|
36
|
+
if (fill === undefined && stroke === undefined)
|
|
37
|
+
return '';
|
|
38
|
+
const line = stroke === undefined
|
|
39
|
+
? ''
|
|
40
|
+
: ` stroke="${attribute(stroke)}" stroke-width="${round(strokeWidth)}"${dash === undefined || dash.length === 0
|
|
41
|
+
? ''
|
|
42
|
+
: ` stroke-dasharray="${dash.map(round).join(' ')}"`}`;
|
|
43
|
+
return (`<rect x="${round(x)}" y="${round(y)}"` +
|
|
44
|
+
` width="${round(Math.max(0, width))}" height="${round(Math.max(0, height))}"${radius > 0 ? ` rx="${round(radius)}"` : ''} fill="${attribute(fill ?? 'none')}"${line}/>`);
|
|
45
|
+
}
|
|
46
|
+
function textMarkup(run) {
|
|
47
|
+
if (run.text === '')
|
|
48
|
+
return '';
|
|
49
|
+
const style = run.fontStyle === undefined || run.fontStyle === 'normal'
|
|
50
|
+
? ''
|
|
51
|
+
: ` font-style="${attribute(run.fontStyle)}"`;
|
|
52
|
+
const family = run.fontFamily === undefined
|
|
53
|
+
? ''
|
|
54
|
+
: ` font-family="${attribute(run.fontFamily)}"`;
|
|
55
|
+
return (`<text x="${round(run.x)}" y="${round(run.y)}" dominant-baseline="central"` +
|
|
56
|
+
` textLength="${round(run.width)}" lengthAdjust="spacingAndGlyphs"` +
|
|
57
|
+
` fill="${attribute(run.color)}" font-size="${round(run.fontSize)}px"` +
|
|
58
|
+
` font-weight="${attribute(run.fontWeight)}"${style}${family}>` +
|
|
59
|
+
`${text(run.text)}</text>`);
|
|
60
|
+
}
|
|
61
|
+
function attribute(value) {
|
|
62
|
+
return text(value).replaceAll('"', '"');
|
|
63
|
+
}
|
|
64
|
+
function text(value) {
|
|
65
|
+
return value
|
|
66
|
+
.replaceAll('&', '&')
|
|
67
|
+
.replaceAll('<', '<')
|
|
68
|
+
.replaceAll('>', '>');
|
|
69
|
+
}
|
|
70
|
+
function round(value) {
|
|
71
|
+
if (!Number.isFinite(value))
|
|
72
|
+
return 0;
|
|
73
|
+
return Math.round(value * 100) / 100;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=figureHtmlMarkup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"figureHtmlMarkup.js","sourceRoot":"","sources":["../../../src/download/core/figureHtmlMarkup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figureSvg.d.ts","sourceRoot":"","sources":["../../../src/download/core/figureSvg.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"figureSvg.d.ts","sourceRoot":"","sources":["../../../src/download/core/figureSvg.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgBH,gCAAgC;AAChC,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,kDAAkD;AAClD,MAAM,WAAW,SAAS;IACxB,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,gFAAgF;AAChF,eAAO,MAAM,eAAe,gCAAgC,CAAC;AAe7D;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,GAAG,OAAO,EACxB,OAAO,GAAE,gBAAqB,GAC7B,SAAS,CAuDX"}
|
|
@@ -6,10 +6,11 @@
|
|
|
6
6
|
* page resolves to nothing. And the type, which a chart inherits from the page
|
|
7
7
|
* around it and would otherwise be reset to whatever opens the file.
|
|
8
8
|
*/
|
|
9
|
-
import {
|
|
9
|
+
import { drawingMarkup } from "./drawingMarkup.js";
|
|
10
|
+
import { figureHtml } from "./figureHtml.js";
|
|
10
11
|
import { figureLegendMarkup } from "./figureLegend.js";
|
|
11
12
|
import { figureSvgDocument } from "./figureSvgDocument.js";
|
|
12
|
-
import { figureBounds, figureDrawings, figureElement, figureLegends, } from "./figureTarget.js";
|
|
13
|
+
import { figureBounds, figureDrawings, figureElement, figureLegends, figurePaintings, } from "./figureTarget.js";
|
|
13
14
|
/** What a saved SVG figure is, for the file and for the renderer reading it. */
|
|
14
15
|
export const FIGURE_SVG_TYPE = 'image/svg+xml;charset=utf-8';
|
|
15
16
|
/** The token a figure's own ground is named by. */
|
|
@@ -26,10 +27,12 @@ const FALLBACK_SURFACE = '#ffffff';
|
|
|
26
27
|
export function figureSvg(target, options = {}) {
|
|
27
28
|
const element = figureElement(target);
|
|
28
29
|
const drawings = figureDrawings(element);
|
|
29
|
-
|
|
30
|
+
const paintings = figurePaintings(element);
|
|
31
|
+
if (drawings.length === 0 && paintings.length === 0) {
|
|
30
32
|
throw new Error('That part of the page holds no figure to save.');
|
|
31
33
|
}
|
|
32
|
-
const bounds = figureBounds(drawings);
|
|
34
|
+
const bounds = figureBounds([...drawings, ...paintings]);
|
|
35
|
+
const styles = window.getComputedStyle(element);
|
|
33
36
|
const pieces = [];
|
|
34
37
|
for (const drawing of drawings) {
|
|
35
38
|
const box = drawing.getBoundingClientRect();
|
|
@@ -39,6 +42,15 @@ export function figureSvg(target, options = {}) {
|
|
|
39
42
|
y: box.top - bounds.top,
|
|
40
43
|
});
|
|
41
44
|
}
|
|
45
|
+
for (const part of paintings) {
|
|
46
|
+
const box = part.getBoundingClientRect();
|
|
47
|
+
pieces.push({
|
|
48
|
+
markup: figureHtml(part, styles.fontFamily),
|
|
49
|
+
x: box.left - bounds.left,
|
|
50
|
+
y: box.top - bounds.top,
|
|
51
|
+
kind: 'html',
|
|
52
|
+
});
|
|
53
|
+
}
|
|
42
54
|
for (const legend of figureLegends(element)) {
|
|
43
55
|
const box = legend.getBoundingClientRect();
|
|
44
56
|
if (box.width <= 0 || box.height <= 0)
|
|
@@ -50,7 +62,6 @@ export function figureSvg(target, options = {}) {
|
|
|
50
62
|
kind: 'legend',
|
|
51
63
|
});
|
|
52
64
|
}
|
|
53
|
-
const styles = window.getComputedStyle(element);
|
|
54
65
|
const markup = figureSvgDocument(pieces, {
|
|
55
66
|
width: bounds.width,
|
|
56
67
|
height: bounds.height,
|
|
@@ -148,36 +159,6 @@ function textRuns(legend) {
|
|
|
148
159
|
}
|
|
149
160
|
return runs;
|
|
150
161
|
}
|
|
151
|
-
/**
|
|
152
|
-
* One drawing, serialized with every token it names written out.
|
|
153
|
-
*
|
|
154
|
-
* The copy is taken first and read from the original, because the values are a
|
|
155
|
-
* property of where the figure sits on the page: a detached clone inherits
|
|
156
|
-
* nothing and would resolve every token to an empty string.
|
|
157
|
-
* @param drawing - The drawing, as it sits on the page.
|
|
158
|
-
* @returns Its markup.
|
|
159
|
-
*/
|
|
160
|
-
function drawingMarkup(drawing) {
|
|
161
|
-
const clone = drawing.cloneNode(true);
|
|
162
|
-
const markup = new XMLSerializer().serializeToString(clone);
|
|
163
|
-
return resolveCssTokens(markup, tokenValues(drawing, cssTokenNames(markup)));
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* What each token the markup names is worth where the figure is drawn.
|
|
167
|
-
* @param drawing - The drawing, as it sits on the page.
|
|
168
|
-
* @param names - The tokens it asks for.
|
|
169
|
-
* @returns The values, keyed by token name.
|
|
170
|
-
*/
|
|
171
|
-
function tokenValues(drawing, names) {
|
|
172
|
-
const values = {};
|
|
173
|
-
if (names.length === 0)
|
|
174
|
-
return values;
|
|
175
|
-
const styles = window.getComputedStyle(drawing);
|
|
176
|
-
for (const name of names) {
|
|
177
|
-
values[name] = styles.getPropertyValue(name);
|
|
178
|
-
}
|
|
179
|
-
return values;
|
|
180
|
-
}
|
|
181
162
|
/**
|
|
182
163
|
* The ground the figure is standing on.
|
|
183
164
|
* @param styles - The computed style of the box it is mounted in.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figureSvg.js","sourceRoot":"","sources":["../../../src/download/core/figureSvg.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"figureSvg.js","sourceRoot":"","sources":["../../../src/download/core/figureSvg.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,11 +21,11 @@ export interface FigurePiece {
|
|
|
21
21
|
y: number;
|
|
22
22
|
/**
|
|
23
23
|
* What it is. Written into the file, so a reader — a test, or somebody
|
|
24
|
-
* editing the figure afterwards — can tell the drawings from the
|
|
25
|
-
* was painted over them.
|
|
24
|
+
* editing the figure afterwards — can tell the drawings from a part the page
|
|
25
|
+
* drew in HTML and from the key that was painted over them.
|
|
26
26
|
* @default 'drawing'
|
|
27
27
|
*/
|
|
28
|
-
kind?: 'drawing' | 'legend';
|
|
28
|
+
kind?: 'drawing' | 'html' | 'legend';
|
|
29
29
|
}
|
|
30
30
|
/** How the file around the drawings is written. */
|
|
31
31
|
export interface FigureSvgDocumentOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figureSvgDocument.d.ts","sourceRoot":"","sources":["../../../src/download/core/figureSvgDocument.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,wEAAwE;AACxE,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,CAAC,EAAE,MAAM,CAAC;IACV,gEAAgE;IAChE,CAAC,EAAE,MAAM,CAAC;IACV;;;;;OAKG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"figureSvgDocument.d.ts","sourceRoot":"","sources":["../../../src/download/core/figureSvgDocument.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,wEAAwE;AACxE,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,CAAC,EAAE,MAAM,CAAC;IACV,gEAAgE;IAChE,CAAC,EAAE,MAAM,CAAC;IACV;;;;;OAKG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;CACtC;AAED,mDAAmD;AACnD,MAAM,WAAW,wBAAwB;IACvC,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,OAAO,EAAE,wBAAwB,GAChC,MAAM,CAsBR"}
|
|
@@ -35,11 +35,21 @@ export declare function figureElement(target: string | Element): Element;
|
|
|
35
35
|
* over a figure are `<svg>` too, so anything inside an element marked as
|
|
36
36
|
* chrome is left behind — a cog saved into the middle of a scatter plot is the
|
|
37
37
|
* bug this exists to prevent. A drawing with no area is left behind as well,
|
|
38
|
-
* because a tab that is not showing is still in the document
|
|
38
|
+
* because a tab that is not showing is still in the document, and so is one
|
|
39
|
+
* inside a part drawn in HTML, which paints its own.
|
|
39
40
|
* @param element - The box the figure is mounted in.
|
|
40
41
|
* @returns The drawings.
|
|
41
42
|
*/
|
|
42
43
|
export declare function figureDrawings(element: Element): readonly SVGSVGElement[];
|
|
44
|
+
/**
|
|
45
|
+
* The parts of it drawn in HTML: a table of buttons, a grid of cards — anything
|
|
46
|
+
* that is a picture on the page without being an `<svg>`. A component opts in
|
|
47
|
+
* by marking its box `data-figure="html"`, and the part is then painted into
|
|
48
|
+
* the file from where the browser put each box and each line of words.
|
|
49
|
+
* @param element - The box the figure is mounted in.
|
|
50
|
+
* @returns The parts, outermost only, in the order they are painted.
|
|
51
|
+
*/
|
|
52
|
+
export declare function figurePaintings(element: Element): readonly Element[];
|
|
43
53
|
/**
|
|
44
54
|
* The keys inside it.
|
|
45
55
|
*
|
|
@@ -53,10 +63,11 @@ export declare function figureDrawings(element: Element): readonly SVGSVGElement
|
|
|
53
63
|
export declare function figureLegends(element: Element): readonly Element[];
|
|
54
64
|
/**
|
|
55
65
|
* The box every drawing of a figure fits in.
|
|
56
|
-
* @param drawings - The drawings, as they sit on
|
|
66
|
+
* @param drawings - The drawings, and the parts drawn in HTML, as they sit on
|
|
67
|
+
* the page.
|
|
57
68
|
* @returns The box, or one with no area where there are no drawings.
|
|
58
69
|
*/
|
|
59
|
-
export declare function figureBounds(drawings: readonly
|
|
70
|
+
export declare function figureBounds(drawings: readonly Element[]): FigureBounds;
|
|
60
71
|
/**
|
|
61
72
|
* How big the saved figure would be at its own size, for a control that has to
|
|
62
73
|
* write the resulting file size before anybody presses save.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figureTarget.d.ts","sourceRoot":"","sources":["../../../src/download/core/figureTarget.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"figureTarget.d.ts","sourceRoot":"","sources":["../../../src/download/core/figureTarget.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAWrD,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IAC3B,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAS/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,aAAa,EAAE,CAczE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,OAAO,EAAE,CAUpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,OAAO,EAAE,CAOlE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,YAAY,CAgBvE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,IAAI,CAgBxE"}
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
const CHROME = '[data-figure="chrome"]';
|
|
12
12
|
/** A key floating over a figure, which is. */
|
|
13
13
|
const LEGEND = '[data-figure="legend"]';
|
|
14
|
+
/** A part of the figure the page draws in HTML rather than in SVG. */
|
|
15
|
+
const HTML = '[data-figure="html"]';
|
|
14
16
|
/**
|
|
15
17
|
* The element a caller named.
|
|
16
18
|
* @param target - The `id` of the box the figure is mounted in, or the element
|
|
@@ -37,7 +39,8 @@ export function figureElement(target) {
|
|
|
37
39
|
* over a figure are `<svg>` too, so anything inside an element marked as
|
|
38
40
|
* chrome is left behind — a cog saved into the middle of a scatter plot is the
|
|
39
41
|
* bug this exists to prevent. A drawing with no area is left behind as well,
|
|
40
|
-
* because a tab that is not showing is still in the document
|
|
42
|
+
* because a tab that is not showing is still in the document, and so is one
|
|
43
|
+
* inside a part drawn in HTML, which paints its own.
|
|
41
44
|
* @param element - The box the figure is mounted in.
|
|
42
45
|
* @returns The drawings.
|
|
43
46
|
*/
|
|
@@ -49,6 +52,8 @@ export function figureDrawings(element) {
|
|
|
49
52
|
for (const drawing of element.querySelectorAll('svg')) {
|
|
50
53
|
if (drawing.closest(CHROME) !== null)
|
|
51
54
|
continue;
|
|
55
|
+
if (drawing.closest(HTML) !== null)
|
|
56
|
+
continue;
|
|
52
57
|
if (isNested(drawings, drawing))
|
|
53
58
|
continue;
|
|
54
59
|
const box = drawing.getBoundingClientRect();
|
|
@@ -58,6 +63,29 @@ export function figureDrawings(element) {
|
|
|
58
63
|
}
|
|
59
64
|
return drawings;
|
|
60
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* The parts of it drawn in HTML: a table of buttons, a grid of cards — anything
|
|
68
|
+
* that is a picture on the page without being an `<svg>`. A component opts in
|
|
69
|
+
* by marking its box `data-figure="html"`, and the part is then painted into
|
|
70
|
+
* the file from where the browser put each box and each line of words.
|
|
71
|
+
* @param element - The box the figure is mounted in.
|
|
72
|
+
* @returns The parts, outermost only, in the order they are painted.
|
|
73
|
+
*/
|
|
74
|
+
export function figurePaintings(element) {
|
|
75
|
+
if (element.matches(HTML))
|
|
76
|
+
return hasArea(element) ? [element] : [];
|
|
77
|
+
const parts = [];
|
|
78
|
+
for (const part of element.querySelectorAll(HTML)) {
|
|
79
|
+
if (part.closest(CHROME) !== null)
|
|
80
|
+
continue;
|
|
81
|
+
if (isNested(parts, part))
|
|
82
|
+
continue;
|
|
83
|
+
if (!hasArea(part))
|
|
84
|
+
continue;
|
|
85
|
+
parts.push(part);
|
|
86
|
+
}
|
|
87
|
+
return parts;
|
|
88
|
+
}
|
|
61
89
|
/**
|
|
62
90
|
* The keys inside it.
|
|
63
91
|
*
|
|
@@ -71,13 +99,16 @@ export function figureDrawings(element) {
|
|
|
71
99
|
export function figureLegends(element) {
|
|
72
100
|
const legends = [];
|
|
73
101
|
for (const legend of element.querySelectorAll(LEGEND)) {
|
|
102
|
+
if (legend.closest(HTML) !== null)
|
|
103
|
+
continue;
|
|
74
104
|
legends.push(legend);
|
|
75
105
|
}
|
|
76
106
|
return legends;
|
|
77
107
|
}
|
|
78
108
|
/**
|
|
79
109
|
* The box every drawing of a figure fits in.
|
|
80
|
-
* @param drawings - The drawings, as they sit on
|
|
110
|
+
* @param drawings - The drawings, and the parts drawn in HTML, as they sit on
|
|
111
|
+
* the page.
|
|
81
112
|
* @returns The box, or one with no area where there are no drawings.
|
|
82
113
|
*/
|
|
83
114
|
export function figureBounds(drawings) {
|
|
@@ -110,7 +141,11 @@ export function figureBounds(drawings) {
|
|
|
110
141
|
export function figureSize(target) {
|
|
111
142
|
let bounds;
|
|
112
143
|
try {
|
|
113
|
-
|
|
144
|
+
const element = figureElement(target);
|
|
145
|
+
bounds = figureBounds([
|
|
146
|
+
...figureDrawings(element),
|
|
147
|
+
...figurePaintings(element),
|
|
148
|
+
]);
|
|
114
149
|
}
|
|
115
150
|
catch {
|
|
116
151
|
return null;
|
|
@@ -135,4 +170,8 @@ function isNested(taken, drawing) {
|
|
|
135
170
|
}
|
|
136
171
|
return false;
|
|
137
172
|
}
|
|
173
|
+
function hasArea(element) {
|
|
174
|
+
const box = element.getBoundingClientRect();
|
|
175
|
+
return box.width > 0 && box.height > 0;
|
|
176
|
+
}
|
|
138
177
|
//# sourceMappingURL=figureTarget.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figureTarget.js","sourceRoot":"","sources":["../../../src/download/core/figureTarget.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,uEAAuE;AACvE,MAAM,MAAM,GAAG,wBAAwB,CAAC;AAExC,8CAA8C;AAC9C,MAAM,MAAM,GAAG,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"figureTarget.js","sourceRoot":"","sources":["../../../src/download/core/figureTarget.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ export { figureSvgDocument } from './figureSvgDocument.ts';
|
|
|
17
17
|
export type { FigureLegendCard, FigureLegendMark, FigureLegendPrint, FigureLegendText, } from './figureLegend.ts';
|
|
18
18
|
export { figureLegendMarkup } from './figureLegend.ts';
|
|
19
19
|
export type { FigureBounds } from './figureTarget.ts';
|
|
20
|
-
export { figureBounds, figureDrawings, figureElement, figureLegends, figureSize, } from './figureTarget.ts';
|
|
20
|
+
export { figureBounds, figureDrawings, figureElement, figureLegends, figurePaintings, figureSize, } from './figureTarget.ts';
|
|
21
21
|
export { sanitizeFileName } from './sanitizeFileName.ts';
|
|
22
22
|
export { drawingIn, stackDrawings } from './stackedDrawing.ts';
|
|
23
23
|
export type { SvgBox } from './svgBounds.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/download/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC5D,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC5D,YAAY,EACV,WAAW,EACX,wBAAwB,GACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/D,YAAY,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/download/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC5D,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC5D,YAAY,EACV,WAAW,EACX,wBAAwB,GACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/D,YAAY,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -9,7 +9,7 @@ export { DEFAULT_FIGURE_SCALE, FIGURE_MAX_PIXELS, FIGURE_SCALES, defaultFigureSc
|
|
|
9
9
|
export { FIGURE_SVG_TYPE, figureSvg } from "./figureSvg.js";
|
|
10
10
|
export { figureSvgDocument } from "./figureSvgDocument.js";
|
|
11
11
|
export { figureLegendMarkup } from "./figureLegend.js";
|
|
12
|
-
export { figureBounds, figureDrawings, figureElement, figureLegends, figureSize, } from "./figureTarget.js";
|
|
12
|
+
export { figureBounds, figureDrawings, figureElement, figureLegends, figurePaintings, figureSize, } from "./figureTarget.js";
|
|
13
13
|
export { sanitizeFileName } from "./sanitizeFileName.js";
|
|
14
14
|
export { drawingIn, stackDrawings } from "./stackedDrawing.js";
|
|
15
15
|
export { CONTENT_ATTRIBUTE, contentBox, elementBox } from "./svgBounds.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/download/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAO3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/download/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAO3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where the browser broke a run of words into lines, measured off the page.
|
|
3
|
+
*/
|
|
4
|
+
/** One line of a run of words, as the browser broke it. */
|
|
5
|
+
export interface LineBox {
|
|
6
|
+
/** Offset of its first character in the run. */
|
|
7
|
+
start: number;
|
|
8
|
+
/** Offset just past its last character. */
|
|
9
|
+
end: number;
|
|
10
|
+
/** Its left edge on the page. */
|
|
11
|
+
left: number;
|
|
12
|
+
/** Its top edge. */
|
|
13
|
+
top: number;
|
|
14
|
+
/** Its right edge. */
|
|
15
|
+
right: number;
|
|
16
|
+
/** Its bottom edge. */
|
|
17
|
+
bottom: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The lines a run of words was broken into, read one character at a time:
|
|
21
|
+
* a character starts a new line when it sits below the middle of the last.
|
|
22
|
+
* @param node - The run.
|
|
23
|
+
* @param range - A range to measure with.
|
|
24
|
+
* @returns The lines, in the order they are read.
|
|
25
|
+
*/
|
|
26
|
+
export declare function lineBoxes(node: Text, range: Range): LineBox[];
|
|
27
|
+
//# sourceMappingURL=textLines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textLines.d.ts","sourceRoot":"","sources":["../../../src/download/core/textLines.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,2DAA2D;AAC3D,MAAM,WAAW,OAAO;IACtB,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE,CAkC7D"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where the browser broke a run of words into lines, measured off the page.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* The lines a run of words was broken into, read one character at a time:
|
|
6
|
+
* a character starts a new line when it sits below the middle of the last.
|
|
7
|
+
* @param node - The run.
|
|
8
|
+
* @param range - A range to measure with.
|
|
9
|
+
* @returns The lines, in the order they are read.
|
|
10
|
+
*/
|
|
11
|
+
export function lineBoxes(node, range) {
|
|
12
|
+
const lines = [];
|
|
13
|
+
const { data } = node;
|
|
14
|
+
let line;
|
|
15
|
+
let start = 0;
|
|
16
|
+
while (start < data.length) {
|
|
17
|
+
const end = isAstral(data.codePointAt(start) ?? 0)
|
|
18
|
+
? Math.min(start + 2, data.length)
|
|
19
|
+
: start + 1;
|
|
20
|
+
range.setStart(node, start);
|
|
21
|
+
range.setEnd(node, end);
|
|
22
|
+
const rect = range.getBoundingClientRect();
|
|
23
|
+
if (rect.width > 0 && rect.height > 0) {
|
|
24
|
+
if (line === undefined || rect.top + rect.height / 2 > line.bottom) {
|
|
25
|
+
line = {
|
|
26
|
+
start,
|
|
27
|
+
end,
|
|
28
|
+
left: rect.left,
|
|
29
|
+
top: rect.top,
|
|
30
|
+
right: rect.right,
|
|
31
|
+
bottom: rect.bottom,
|
|
32
|
+
};
|
|
33
|
+
lines.push(line);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
line.end = end;
|
|
37
|
+
line.left = Math.min(line.left, rect.left);
|
|
38
|
+
line.top = Math.min(line.top, rect.top);
|
|
39
|
+
line.right = Math.max(line.right, rect.right);
|
|
40
|
+
line.bottom = Math.max(line.bottom, rect.bottom);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
start = end;
|
|
44
|
+
}
|
|
45
|
+
return lines;
|
|
46
|
+
}
|
|
47
|
+
// A character outside the first plane is two UTF-16 units, measured as one.
|
|
48
|
+
function isAstral(code) {
|
|
49
|
+
return code > 0xff_ff;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=textLines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textLines.js","sourceRoot":"","sources":["../../../src/download/core/textLines.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkBH;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,IAAU,EAAE,KAAY;IAChD,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACtB,IAAI,IAAyB,CAAC;IAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;YAClC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5B,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBACnE,IAAI,GAAG;oBACL,KAAK;oBACL,GAAG;oBACH,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB,CAAC;gBACF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;gBACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QACD,KAAK,GAAG,GAAG,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,4EAA4E;AAC5E,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,IAAI,GAAG,OAAO,CAAC;AACxB,CAAC"}
|
|
@@ -21,7 +21,8 @@ export declare function groupedSites(): GroupedSites[];
|
|
|
21
21
|
*/
|
|
22
22
|
export declare function sitesInGroup(id: SiteGroupId): EcosystemSite[];
|
|
23
23
|
/**
|
|
24
|
-
* One site of the family, by the identifier its entry carries
|
|
24
|
+
* One site of the family, by the identifier its entry carries — listed in the
|
|
25
|
+
* menu or not yet.
|
|
25
26
|
* @param id - The site being asked for.
|
|
26
27
|
* @returns The site.
|
|
27
28
|
* @throws {Error} When no site of the family carries that identifier.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lookup.d.ts","sourceRoot":"","sources":["../../../src/ecosystem/core/lookup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"lookup.d.ts","sourceRoot":"","sources":["../../../src/ecosystem/core/lookup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAUpE,gDAAgD;AAChD,MAAM,WAAW,YAAY;IAC3B,iBAAiB;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,iDAAiD;IACjD,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,YAAY,EAAE,CAO7C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,WAAW,GAAG,aAAa,EAAE,CAM7D;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAKlD;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAIxD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAQtE"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { SITE_GROUPS } from "./groups.js";
|
|
2
2
|
import { ECOSYSTEM_SITES } from "./sites.js";
|
|
3
|
+
import { UNLISTED_SITES } from "./unlistedSites.js";
|
|
4
|
+
// What a site is looked up in: the listed ones, then those no menu shows yet.
|
|
5
|
+
const KNOWN_SITES = [
|
|
6
|
+
...ECOSYSTEM_SITES,
|
|
7
|
+
...UNLISTED_SITES,
|
|
8
|
+
];
|
|
3
9
|
/**
|
|
4
10
|
* The family gathered under its topics, which is how a menu and a footer list
|
|
5
11
|
* it. A topic nobody is written under is left out rather than headed over an
|
|
@@ -29,13 +35,14 @@ export function sitesInGroup(id) {
|
|
|
29
35
|
return sites;
|
|
30
36
|
}
|
|
31
37
|
/**
|
|
32
|
-
* One site of the family, by the identifier its entry carries
|
|
38
|
+
* One site of the family, by the identifier its entry carries — listed in the
|
|
39
|
+
* menu or not yet.
|
|
33
40
|
* @param id - The site being asked for.
|
|
34
41
|
* @returns The site.
|
|
35
42
|
* @throws {Error} When no site of the family carries that identifier.
|
|
36
43
|
*/
|
|
37
44
|
export function siteById(id) {
|
|
38
|
-
for (const site of
|
|
45
|
+
for (const site of KNOWN_SITES) {
|
|
39
46
|
if (site.id === id)
|
|
40
47
|
return site;
|
|
41
48
|
}
|
|
@@ -71,7 +78,7 @@ export function findSiteByHost(host) {
|
|
|
71
78
|
const wanted = normalizeHost(host);
|
|
72
79
|
if (wanted === '')
|
|
73
80
|
return undefined;
|
|
74
|
-
for (const site of
|
|
81
|
+
for (const site of KNOWN_SITES) {
|
|
75
82
|
if (normalizeHost(site.host) === wanted)
|
|
76
83
|
return site;
|
|
77
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../../src/ecosystem/core/lookup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../../src/ecosystem/core/lookup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,8EAA8E;AAC9E,MAAM,WAAW,GAA6B;IAC5C,GAAG,eAAe;IAClB,GAAG,cAAc;CAClB,CAAC;AAUF;;;;;GAKG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,EAAe;IAC1C,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAU;IACjC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;IAClC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,IAAgB;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI;QAC3B,CAAC,CAAC,IAAI,CAAC,IAAI;QACX,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,MAAM,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;IACvD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACrE,OAAO,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC7E,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { SiteGroupId } from './groups.ts';
|
|
2
|
-
/** The sites the menu links to. */
|
|
3
|
-
export type SiteId = 'learn' | 'inchi' | 'vcl' | 'smiles' | 'iupac-name' | 'openbabel' | 'chemcalc' | 'dbe' | 'nmrium' | 'metabo' | 'derepflow' | 'surge' | 'tex' | 'lcao' | 'regexp' | 'pdb' | 'elucidation' | 'equilibrium' | 'polycarp' | '3d' | 'periodic-table' | 'database' | 'symmetry' | 'osiris' | 'atoms' | 'moles' | 'inorganic' | 'powerpoint';
|
|
2
|
+
/** The sites of the family, whether the menu links to them yet or not. */
|
|
3
|
+
export type SiteId = 'learn' | 'inchi' | 'vcl' | 'smiles' | 'iupac-name' | 'openbabel' | 'chemcalc' | 'dbe' | 'nmrium' | 'metabo' | 'derepflow' | 'surge' | 'tex' | 'lcao' | 'regexp' | 'pdb' | 'elucidation' | 'equilibrium' | 'polycarp' | '3d' | 'periodic-table' | 'database' | 'molecules' | 'symmetry' | 'osiris' | 'atoms' | 'moles' | 'inorganic' | 'powerpoint' | 'naturals';
|
|
4
4
|
/** A site's name, split the way its own wordmark splits it. */
|
|
5
5
|
export interface SiteName {
|
|
6
6
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ecosystem/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ecosystem/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,0EAA0E;AAC1E,MAAM,MAAM,MAAM,GACd,OAAO,GACP,OAAO,GACP,KAAK,GACL,QAAQ,GACR,YAAY,GACZ,WAAW,GACX,UAAU,GACV,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,OAAO,GACP,KAAK,GACL,MAAM,GACN,QAAQ,GACR,KAAK,GACL,aAAa,GACb,aAAa,GACb,UAAU,GACV,IAAI,GACJ,gBAAgB,GAChB,UAAU,GACV,WAAW,GACX,UAAU,GACV,QAAQ,GACR,OAAO,GACP,OAAO,GACP,WAAW,GACX,YAAY,GACZ,UAAU,CAAC;AAEf,+DAA+D;AAC/D,MAAM,WAAW,QAAQ;IACvB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IACd;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,iEAAiE;IACjE,IAAI,EAAE,QAAQ,CAAC;IACf,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,IAAI,EAAE,cAAc,CAAC;CACtB;AAED,4EAA4E;AAC5E,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C,mEAAmE;IACnE,EAAE,EAAE,MAAM,CAAC;IACX;;;OAGG;IACH,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { EcosystemSite } from './types.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Sites of the family that no other site links to yet. No menu, footer or
|
|
4
|
+
* grid lists them, but `siteById` finds them, so each still draws its mark,
|
|
5
|
+
* its wordmark and its palette from here. Listing one is moving its entry
|
|
6
|
+
* into `ECOSYSTEM_SITES`, under the topic it already names.
|
|
7
|
+
*/
|
|
8
|
+
export declare const UNLISTED_SITES: readonly EcosystemSite[];
|
|
9
|
+
//# sourceMappingURL=unlistedSites.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unlistedSites.d.ts","sourceRoot":"","sources":["../../../src/ecosystem/core/unlistedSites.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,aAAa,EA2BlD,CAAC"}
|