react-cheminfo 0.47.0 → 0.48.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.
Files changed (178) hide show
  1. package/README.md +69 -0
  2. package/lib/core.d.ts +1 -0
  3. package/lib/core.d.ts.map +1 -1
  4. package/lib/core.js +1 -0
  5. package/lib/core.js.map +1 -1
  6. package/lib/download/core/cssPaint.d.ts +27 -0
  7. package/lib/download/core/cssPaint.d.ts.map +1 -0
  8. package/lib/download/core/cssPaint.js +63 -0
  9. package/lib/download/core/cssPaint.js.map +1 -0
  10. package/lib/download/core/drawingMarkup.d.ts +11 -0
  11. package/lib/download/core/drawingMarkup.d.ts.map +1 -0
  12. package/lib/download/core/drawingMarkup.js +32 -0
  13. package/lib/download/core/drawingMarkup.js.map +1 -0
  14. package/lib/download/core/figureHtml.d.ts +25 -0
  15. package/lib/download/core/figureHtml.d.ts.map +1 -0
  16. package/lib/download/core/figureHtml.js +174 -0
  17. package/lib/download/core/figureHtml.js.map +1 -0
  18. package/lib/download/core/figureHtmlMarkup.d.ts +107 -0
  19. package/lib/download/core/figureHtmlMarkup.d.ts.map +1 -0
  20. package/lib/download/core/figureHtmlMarkup.js +75 -0
  21. package/lib/download/core/figureHtmlMarkup.js.map +1 -0
  22. package/lib/download/core/figureSvg.d.ts.map +1 -1
  23. package/lib/download/core/figureSvg.js +16 -35
  24. package/lib/download/core/figureSvg.js.map +1 -1
  25. package/lib/download/core/figureSvgDocument.d.ts +3 -3
  26. package/lib/download/core/figureSvgDocument.d.ts.map +1 -1
  27. package/lib/download/core/figureTarget.d.ts +14 -3
  28. package/lib/download/core/figureTarget.d.ts.map +1 -1
  29. package/lib/download/core/figureTarget.js +42 -3
  30. package/lib/download/core/figureTarget.js.map +1 -1
  31. package/lib/download/core/index.d.ts +1 -1
  32. package/lib/download/core/index.d.ts.map +1 -1
  33. package/lib/download/core/index.js +1 -1
  34. package/lib/download/core/index.js.map +1 -1
  35. package/lib/download/core/textLines.d.ts +27 -0
  36. package/lib/download/core/textLines.d.ts.map +1 -0
  37. package/lib/download/core/textLines.js +51 -0
  38. package/lib/download/core/textLines.js.map +1 -0
  39. package/lib/ecosystem/core/lookup.d.ts +2 -1
  40. package/lib/ecosystem/core/lookup.d.ts.map +1 -1
  41. package/lib/ecosystem/core/lookup.js +10 -3
  42. package/lib/ecosystem/core/lookup.js.map +1 -1
  43. package/lib/ecosystem/core/types.d.ts +2 -2
  44. package/lib/ecosystem/core/types.d.ts.map +1 -1
  45. package/lib/ecosystem/core/unlistedSites.d.ts +9 -0
  46. package/lib/ecosystem/core/unlistedSites.d.ts.map +1 -0
  47. package/lib/ecosystem/core/unlistedSites.js +35 -0
  48. package/lib/ecosystem/core/unlistedSites.js.map +1 -0
  49. package/lib/ecosystem/ui/glyphs.d.ts.map +1 -1
  50. package/lib/ecosystem/ui/glyphs.js +7 -0
  51. package/lib/ecosystem/ui/glyphs.js.map +1 -1
  52. package/lib/i18n/core/chromeCatalog.d.ts +1 -1
  53. package/lib/i18n/core/chromeCatalog.d.ts.map +1 -1
  54. package/lib/locales/de.json +55 -1
  55. package/lib/locales/en.json +55 -1
  56. package/lib/locales/es.json +55 -1
  57. package/lib/locales/fr.json +55 -1
  58. package/lib/locales/it.json +55 -1
  59. package/lib/periodic/ui/PeriodicTable.d.ts +3 -107
  60. package/lib/periodic/ui/PeriodicTable.d.ts.map +1 -1
  61. package/lib/periodic/ui/PeriodicTable.js +5 -82
  62. package/lib/periodic/ui/PeriodicTable.js.map +1 -1
  63. package/lib/periodic/ui/PeriodicTableChrome.d.ts.map +1 -1
  64. package/lib/periodic/ui/PeriodicTableChrome.js +3 -25
  65. package/lib/periodic/ui/PeriodicTableChrome.js.map +1 -1
  66. package/lib/periodic/ui/SelectAllCorner.d.ts +23 -0
  67. package/lib/periodic/ui/SelectAllCorner.d.ts.map +1 -0
  68. package/lib/periodic/ui/SelectAllCorner.js +40 -0
  69. package/lib/periodic/ui/SelectAllCorner.js.map +1 -0
  70. package/lib/periodic/ui/headerStyles.d.ts +17 -0
  71. package/lib/periodic/ui/headerStyles.d.ts.map +1 -0
  72. package/lib/periodic/ui/headerStyles.js +19 -0
  73. package/lib/periodic/ui/headerStyles.js.map +1 -0
  74. package/lib/periodic/ui/periodicTableProps.d.ts +115 -0
  75. package/lib/periodic/ui/periodicTableProps.d.ts.map +1 -0
  76. package/lib/periodic/ui/periodicTableProps.js +8 -0
  77. package/lib/periodic/ui/periodicTableProps.js.map +1 -0
  78. package/lib/periodic/ui/tableLayout.d.ts +26 -0
  79. package/lib/periodic/ui/tableLayout.d.ts.map +1 -0
  80. package/lib/periodic/ui/tableLayout.js +86 -0
  81. package/lib/periodic/ui/tableLayout.js.map +1 -0
  82. package/lib/split/ui/SplitColumn.d.ts +0 -1
  83. package/lib/split/ui/SplitColumn.d.ts.map +1 -1
  84. package/lib/split/ui/SplitColumn.js +0 -1
  85. package/lib/split/ui/SplitColumn.js.map +1 -1
  86. package/lib/split/ui/SplitRow.d.ts +0 -1
  87. package/lib/split/ui/SplitRow.d.ts.map +1 -1
  88. package/lib/split/ui/SplitRow.js +0 -1
  89. package/lib/split/ui/SplitRow.js.map +1 -1
  90. package/lib/split/ui/splitPanes.d.ts +12 -1
  91. package/lib/split/ui/splitPanes.d.ts.map +1 -1
  92. package/lib/split/ui/splitPanes.js +1 -4
  93. package/lib/split/ui/splitPanes.js.map +1 -1
  94. package/lib/taxonomy/core/index.d.ts +8 -0
  95. package/lib/taxonomy/core/index.d.ts.map +1 -0
  96. package/lib/taxonomy/core/index.js +5 -0
  97. package/lib/taxonomy/core/index.js.map +1 -0
  98. package/lib/taxonomy/core/lineage.d.ts +83 -0
  99. package/lib/taxonomy/core/lineage.d.ts.map +1 -0
  100. package/lib/taxonomy/core/lineage.js +126 -0
  101. package/lib/taxonomy/core/lineage.js.map +1 -0
  102. package/lib/taxonomy/core/ncbi.d.ts +8 -0
  103. package/lib/taxonomy/core/ncbi.d.ts.map +1 -0
  104. package/lib/taxonomy/core/ncbi.js +10 -0
  105. package/lib/taxonomy/core/ncbi.js.map +1 -0
  106. package/lib/taxonomy/core/organismName.d.ts +28 -0
  107. package/lib/taxonomy/core/organismName.d.ts.map +1 -0
  108. package/lib/taxonomy/core/organismName.js +188 -0
  109. package/lib/taxonomy/core/organismName.js.map +1 -0
  110. package/lib/taxonomy/core/organismWords.d.ts +20 -0
  111. package/lib/taxonomy/core/organismWords.d.ts.map +1 -0
  112. package/lib/taxonomy/core/organismWords.js +86 -0
  113. package/lib/taxonomy/core/organismWords.js.map +1 -0
  114. package/lib/taxonomy/core/ranks.d.ts +51 -0
  115. package/lib/taxonomy/core/ranks.d.ts.map +1 -0
  116. package/lib/taxonomy/core/ranks.js +123 -0
  117. package/lib/taxonomy/core/ranks.js.map +1 -0
  118. package/lib/taxonomy/ui/OrganismName.d.ts +28 -0
  119. package/lib/taxonomy/ui/OrganismName.d.ts.map +1 -0
  120. package/lib/taxonomy/ui/OrganismName.js +28 -0
  121. package/lib/taxonomy/ui/OrganismName.js.map +1 -0
  122. package/lib/taxonomy/ui/TaxonLineage.d.ts +67 -0
  123. package/lib/taxonomy/ui/TaxonLineage.d.ts.map +1 -0
  124. package/lib/taxonomy/ui/TaxonLineage.js +45 -0
  125. package/lib/taxonomy/ui/TaxonLineage.js.map +1 -0
  126. package/lib/taxonomy/ui/index.d.ts +6 -0
  127. package/lib/taxonomy/ui/index.d.ts.map +1 -0
  128. package/lib/taxonomy/ui/index.js +4 -0
  129. package/lib/taxonomy/ui/index.js.map +1 -0
  130. package/lib/taxonomy/ui/rankLabel.d.ts +17 -0
  131. package/lib/taxonomy/ui/rankLabel.d.ts.map +1 -0
  132. package/lib/taxonomy/ui/rankLabel.js +77 -0
  133. package/lib/taxonomy/ui/rankLabel.js.map +1 -0
  134. package/lib/ui.d.ts +1 -0
  135. package/lib/ui.d.ts.map +1 -1
  136. package/lib/ui.js +1 -0
  137. package/lib/ui.js.map +1 -1
  138. package/package.json +1 -1
  139. package/src/core.ts +1 -0
  140. package/src/download/core/cssPaint.ts +71 -0
  141. package/src/download/core/drawingMarkup.ts +35 -0
  142. package/src/download/core/figureHtml.ts +214 -0
  143. package/src/download/core/figureHtmlMarkup.ts +187 -0
  144. package/src/download/core/figureSvg.ts +17 -38
  145. package/src/download/core/figureSvgDocument.ts +3 -3
  146. package/src/download/core/figureTarget.ts +41 -8
  147. package/src/download/core/index.ts +1 -0
  148. package/src/download/core/textLines.ts +67 -0
  149. package/src/ecosystem/core/lookup.ts +11 -3
  150. package/src/ecosystem/core/types.ts +4 -2
  151. package/src/ecosystem/core/unlistedSites.ts +37 -0
  152. package/src/ecosystem/ui/glyphs.tsx +44 -0
  153. package/src/locales/de.json +55 -1
  154. package/src/locales/en.json +55 -1
  155. package/src/locales/es.json +55 -1
  156. package/src/locales/fr.json +55 -1
  157. package/src/locales/it.json +55 -1
  158. package/src/periodic/ui/PeriodicTable.tsx +16 -204
  159. package/src/periodic/ui/PeriodicTableChrome.tsx +3 -24
  160. package/src/periodic/ui/SelectAllCorner.tsx +65 -0
  161. package/src/periodic/ui/headerStyles.ts +23 -0
  162. package/src/periodic/ui/periodicTableProps.ts +117 -0
  163. package/src/periodic/ui/tableLayout.ts +96 -0
  164. package/src/split/ui/SplitColumn.tsx +0 -1
  165. package/src/split/ui/SplitRow.tsx +0 -1
  166. package/src/split/ui/splitPanes.tsx +21 -5
  167. package/src/taxonomy/core/index.ts +20 -0
  168. package/src/taxonomy/core/lineage.ts +161 -0
  169. package/src/taxonomy/core/ncbi.ts +9 -0
  170. package/src/taxonomy/core/organismName.ts +217 -0
  171. package/src/taxonomy/core/organismWords.ts +86 -0
  172. package/src/taxonomy/core/ranks.ts +134 -0
  173. package/src/taxonomy/ui/OrganismName.tsx +59 -0
  174. package/src/taxonomy/ui/TaxonLineage.tsx +183 -0
  175. package/src/taxonomy/ui/index.ts +5 -0
  176. package/src/taxonomy/ui/rankLabel.ts +81 -0
  177. package/src/ui.ts +1 -0
  178. 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('"', '&quot;');
63
+ }
64
+ function text(value) {
65
+ return value
66
+ .replaceAll('&', '&amp;')
67
+ .replaceAll('<', '&lt;')
68
+ .replaceAll('>', '&gt;');
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;AAcH,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,CA4CX"}
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 { cssTokenNames, resolveCssTokens } from "./cssTokens.js";
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
- if (drawings.length === 0) {
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":"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"}
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 key that
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;CAC7B;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"}
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 the page.
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 SVGSVGElement[]): FigureBounds;
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;AAQrD,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;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,aAAa,EAAE,CAazE;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,OAAO,EAAE,CAMlE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,GAAG,YAAY,CAgB7E;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,IAAI,CAYxE"}
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 the page.
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
- bounds = figureBounds(figureDrawings(figureElement(target)));
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":"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"}
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;AAGpE,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;;;;;GAKG;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
+ {"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 ECOSYSTEM_SITES) {
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 ECOSYSTEM_SITES) {
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;AAU7C;;;;;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;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAU;IACjC,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,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,eAAe,EAAE,CAAC;QACnC,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
+ {"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,mCAAmC;AACnC,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,UAAU,GACV,QAAQ,GACR,OAAO,GACP,OAAO,GACP,WAAW,GACX,YAAY,CAAC;AAEjB,+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"}
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"}