react-cheminfo 0.29.0 → 0.31.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 (126) hide show
  1. package/README.md +62 -2
  2. package/lib/chrome/ui/AccountButton.d.ts +76 -0
  3. package/lib/chrome/ui/AccountButton.d.ts.map +1 -0
  4. package/lib/chrome/ui/AccountButton.js +66 -0
  5. package/lib/chrome/ui/AccountButton.js.map +1 -0
  6. package/lib/chrome/ui/index.d.ts +2 -0
  7. package/lib/chrome/ui/index.d.ts.map +1 -1
  8. package/lib/chrome/ui/index.js +1 -0
  9. package/lib/chrome/ui/index.js.map +1 -1
  10. package/lib/clipboard/ui/ClickToCopy.d.ts +6 -0
  11. package/lib/clipboard/ui/ClickToCopy.d.ts.map +1 -1
  12. package/lib/clipboard/ui/ClickToCopy.js +3 -3
  13. package/lib/clipboard/ui/ClickToCopy.js.map +1 -1
  14. package/lib/download/core/downloadFigure.d.ts +7 -5
  15. package/lib/download/core/downloadFigure.d.ts.map +1 -1
  16. package/lib/download/core/downloadFigure.js +7 -6
  17. package/lib/download/core/downloadFigure.js.map +1 -1
  18. package/lib/download/core/figureLayout.d.ts +55 -0
  19. package/lib/download/core/figureLayout.d.ts.map +1 -0
  20. package/lib/download/core/figureLayout.js +89 -0
  21. package/lib/download/core/figureLayout.js.map +1 -0
  22. package/lib/download/core/figureScale.d.ts +9 -0
  23. package/lib/download/core/figureScale.d.ts.map +1 -1
  24. package/lib/download/core/figureScale.js +10 -0
  25. package/lib/download/core/figureScale.js.map +1 -1
  26. package/lib/download/core/figureSettle.d.ts +51 -0
  27. package/lib/download/core/figureSettle.d.ts.map +1 -0
  28. package/lib/download/core/figureSettle.js +81 -0
  29. package/lib/download/core/figureSettle.js.map +1 -0
  30. package/lib/download/core/figureSvg.d.ts +7 -1
  31. package/lib/download/core/figureSvg.d.ts.map +1 -1
  32. package/lib/download/core/figureSvg.js +1 -0
  33. package/lib/download/core/figureSvg.js.map +1 -1
  34. package/lib/download/core/figureSvgDocument.d.ts +7 -0
  35. package/lib/download/core/figureSvgDocument.d.ts.map +1 -1
  36. package/lib/download/core/figureSvgDocument.js +11 -2
  37. package/lib/download/core/figureSvgDocument.js.map +1 -1
  38. package/lib/download/core/index.d.ts +5 -1
  39. package/lib/download/core/index.d.ts.map +1 -1
  40. package/lib/download/core/index.js +3 -1
  41. package/lib/download/core/index.js.map +1 -1
  42. package/lib/download/ui/FigureDownload.d.ts +18 -4
  43. package/lib/download/ui/FigureDownload.d.ts.map +1 -1
  44. package/lib/download/ui/FigureDownload.js +35 -9
  45. package/lib/download/ui/FigureDownload.js.map +1 -1
  46. package/lib/download/ui/FigureDownloadPanel.d.ts +17 -7
  47. package/lib/download/ui/FigureDownloadPanel.d.ts.map +1 -1
  48. package/lib/download/ui/FigureDownloadPanel.js +30 -22
  49. package/lib/download/ui/FigureDownloadPanel.js.map +1 -1
  50. package/lib/download/ui/FigureSizeField.d.ts +27 -0
  51. package/lib/download/ui/FigureSizeField.d.ts.map +1 -0
  52. package/lib/download/ui/FigureSizeField.js +87 -0
  53. package/lib/download/ui/FigureSizeField.js.map +1 -0
  54. package/lib/download/ui/FigureSizeRows.d.ts +34 -0
  55. package/lib/download/ui/FigureSizeRows.d.ts.map +1 -0
  56. package/lib/download/ui/FigureSizeRows.js +54 -0
  57. package/lib/download/ui/FigureSizeRows.js.map +1 -0
  58. package/lib/download/ui/index.d.ts +2 -0
  59. package/lib/download/ui/index.d.ts.map +1 -1
  60. package/lib/download/ui/index.js.map +1 -1
  61. package/lib/download/ui/useFigureRedraw.d.ts +27 -0
  62. package/lib/download/ui/useFigureRedraw.d.ts.map +1 -0
  63. package/lib/download/ui/useFigureRedraw.js +78 -0
  64. package/lib/download/ui/useFigureRedraw.js.map +1 -0
  65. package/lib/i18n/core/chromeCatalog.d.ts +1 -1
  66. package/lib/i18n/core/chromeCatalog.d.ts.map +1 -1
  67. package/lib/locales/de.json +13 -2
  68. package/lib/locales/en.json +13 -2
  69. package/lib/locales/es.json +13 -2
  70. package/lib/locales/fr.json +13 -2
  71. package/lib/overlay/ui/OverlayValueMenu.d.ts.map +1 -1
  72. package/lib/overlay/ui/OverlayValueMenu.js +7 -1
  73. package/lib/overlay/ui/OverlayValueMenu.js.map +1 -1
  74. package/lib/structure/core/conformerBoltzmann.d.ts +56 -0
  75. package/lib/structure/core/conformerBoltzmann.d.ts.map +1 -0
  76. package/lib/structure/core/conformerBoltzmann.js +96 -0
  77. package/lib/structure/core/conformerBoltzmann.js.map +1 -0
  78. package/lib/structure/core/conformerEnergy.d.ts +69 -0
  79. package/lib/structure/core/conformerEnergy.d.ts.map +1 -0
  80. package/lib/structure/core/conformerEnergy.js +47 -0
  81. package/lib/structure/core/conformerEnergy.js.map +1 -0
  82. package/lib/structure/core/index.d.ts +3 -0
  83. package/lib/structure/core/index.d.ts.map +1 -1
  84. package/lib/structure/core/index.js +2 -0
  85. package/lib/structure/core/index.js.map +1 -1
  86. package/lib/structure/ui/ConformerTable.d.ts +73 -0
  87. package/lib/structure/ui/ConformerTable.d.ts.map +1 -0
  88. package/lib/structure/ui/ConformerTable.js +259 -0
  89. package/lib/structure/ui/ConformerTable.js.map +1 -0
  90. package/lib/structure/ui/conformerColumns.d.ts +30 -0
  91. package/lib/structure/ui/conformerColumns.d.ts.map +1 -0
  92. package/lib/structure/ui/conformerColumns.js +37 -0
  93. package/lib/structure/ui/conformerColumns.js.map +1 -0
  94. package/lib/ui.d.ts +4 -0
  95. package/lib/ui.d.ts.map +1 -1
  96. package/lib/ui.js +2 -0
  97. package/lib/ui.js.map +1 -1
  98. package/package.json +1 -1
  99. package/src/chrome/ui/AccountButton.tsx +185 -0
  100. package/src/chrome/ui/index.ts +2 -0
  101. package/src/clipboard/ui/ClickToCopy.tsx +9 -1
  102. package/src/download/core/downloadFigure.ts +12 -9
  103. package/src/download/core/figureLayout.ts +114 -0
  104. package/src/download/core/figureScale.ts +13 -0
  105. package/src/download/core/figureSettle.ts +112 -0
  106. package/src/download/core/figureSvg.ts +8 -1
  107. package/src/download/core/figureSvgDocument.ts +19 -2
  108. package/src/download/core/index.ts +13 -0
  109. package/src/download/ui/FigureDownload.tsx +88 -35
  110. package/src/download/ui/FigureDownloadPanel.tsx +45 -22
  111. package/src/download/ui/FigureSizeField.tsx +153 -0
  112. package/src/download/ui/FigureSizeRows.tsx +108 -0
  113. package/src/download/ui/index.ts +2 -0
  114. package/src/download/ui/useFigureRedraw.tsx +115 -0
  115. package/src/locales/de.json +13 -2
  116. package/src/locales/en.json +13 -2
  117. package/src/locales/es.json +13 -2
  118. package/src/locales/fr.json +13 -2
  119. package/src/overlay/ui/OverlayValueMenu.tsx +7 -1
  120. package/src/structure/core/conformerBoltzmann.ts +102 -0
  121. package/src/structure/core/conformerEnergy.ts +97 -0
  122. package/src/structure/core/index.ts +15 -0
  123. package/src/structure/ui/ConformerTable.tsx +429 -0
  124. package/src/structure/ui/conformerColumns.ts +55 -0
  125. package/src/ui.ts +12 -0
  126. package/styles/chrome.css +55 -0
@@ -3,16 +3,19 @@ import { useChromeT } from "../../i18n/ui/useT.js";
3
3
  import { OverlayAction } from "../../overlay/ui/OverlayAction.js";
4
4
  import { OverlayPanel } from "../../overlay/ui/OverlayPanel.js";
5
5
  import { OverlaySegmented } from "../../overlay/ui/OverlaySegmented.js";
6
+ import { figureLayoutSize } from "../core/figureLayout.js";
6
7
  import { figurePixels, figureScaleFits, figureScaleLabel, formatFigurePixels, } from "../core/figureScale.js";
8
+ import { FigureSizeRows } from "./FigureSizeRows.js";
7
9
  /**
8
- * The two choices behind the save glyph, and the button that writes the file.
10
+ * The choices behind the save glyph, and the button that writes the file.
9
11
  *
10
- * The resolution stays in place and greyed while an SVG is selected rather
11
- * than disappearing, because a control that vanishes is a control the reader
12
- * concludes the figure does not have — and the sentence at the foot says why
13
- * it is greyed, which is that an SVG has no resolution to choose.
12
+ * The resolution applies to both formats, and means what the reader needs it
13
+ * to: a PNG is painted with that many more pixels, and an SVG, drawn the same,
14
+ * opens that many times larger in the slide or the document it is dropped
15
+ * into. Only a PNG meets the ceiling of what a browser can paint, so only its
16
+ * choices past that ceiling are greyed.
14
17
  *
15
- * That sentence is the panel's own hint line rather than a row of its own: it
18
+ * The sentence at the foot is the panel's own hint line rather than a row of its own: it
16
19
  * is not a setting, it is what the two settings above it currently amount to,
17
20
  * and it is the only thing here that answers the question a reader actually
18
21
  * has, which is how big the file is going to be. Saving itself is a command
@@ -24,19 +27,24 @@ import { figurePixels, figureScaleFits, figureScaleLabel, formatFigurePixels, }
24
27
  export function FigureDownloadPanel(props) {
25
28
  const { title, format, scale, scales, size, failure, saving } = props;
26
29
  const { onFormatChange, onScaleChange, onSave, rasterSvg = false } = props;
30
+ const { sizing } = props;
27
31
  const t = useChromeT();
28
- const vector = format === 'svg' && !rasterSvg;
29
- return (_jsxs(OverlayPanel, { title: title, hint: hintOf(format, size, scale, failure, rasterSvg, t), actions: _jsx(OverlayAction, { text: t('download.save'), icon: "download", intent: "primary", disabled: saving || size === null, onClick: onSave }), children: [_jsx(OverlaySegmented, { label: t('download.format'), help: {
32
+ // What the file is drawn at: the figure on screen, or the shape picked.
33
+ const drawn = size === null || sizing === undefined
34
+ ? size
35
+ : figureLayoutSize(sizing.layout, size, sizing.custom ?? size);
36
+ const painted = format === 'png' || rasterSvg;
37
+ return (_jsxs(OverlayPanel, { title: title, hint: hintOf(format, drawn, scale, failure, rasterSvg, t), actions: _jsx(OverlayAction, { text: t('download.save'), icon: "download", intent: "primary", disabled: saving || size === null, onClick: onSave }), children: [_jsx(OverlaySegmented, { label: t('download.format'), help: {
30
38
  title: t('download.format'),
31
39
  body: t('download.formatHelp'),
32
- }, value: format, options: FORMAT_CHOICES, onChange: onFormatChange }), _jsx(OverlaySegmented, { label: t('download.resolution'), help: {
40
+ }, value: format, options: FORMAT_CHOICES, onChange: onFormatChange }), sizing === undefined ? null : (_jsx(FigureSizeRows, { sizing: sizing, size: size })), _jsx(OverlaySegmented, { label: t('download.resolution'), help: {
33
41
  title: t('download.resolution'),
34
42
  body: t('download.resolutionHelp'),
35
43
  example: {
36
44
  code: '2×',
37
45
  note: t('download.resolutionExample'),
38
46
  },
39
- }, value: String(scale), options: scaleChoices(scales, size), disabled: vector, onChange: (picked) => onScaleChange(Number(picked)) })] }));
47
+ }, value: String(scale), options: scaleChoices(scales, drawn, painted), onChange: (picked) => onScaleChange(Number(picked)) })] }));
40
48
  }
41
49
  /** The two files a figure can leave the page as. */
42
50
  const FORMAT_CHOICES = [
@@ -47,12 +55,14 @@ const FORMAT_CHOICES = [
47
55
  * The multiples offered, each saying what it would actually produce.
48
56
  *
49
57
  * One too large for the browser to paint is greyed rather than dropped, so the
50
- * reader learns the ceiling exists before they meet it as a blank file.
58
+ * reader learns the ceiling exists before they meet it as a blank file. An SVG
59
+ * is not painted, so it has no such ceiling.
51
60
  * @param scales - The multiples the caller offers.
52
- * @param size - How big the figure is on the page.
61
+ * @param size - How big the figure is drawn for the file.
62
+ * @param painted - Whether the file is painted into pixels.
53
63
  * @returns The choices, in the order offered.
54
64
  */
55
- function scaleChoices(scales, size) {
65
+ function scaleChoices(scales, size, painted) {
56
66
  const choices = [];
57
67
  for (const scale of scales) {
58
68
  const pixels = size === null ? null : figurePixels(size, scale);
@@ -60,7 +70,7 @@ function scaleChoices(scales, size) {
60
70
  value: String(scale),
61
71
  label: figureScaleLabel(scale),
62
72
  title: pixels === null ? undefined : formatFigurePixels(pixels),
63
- disabled: size !== null && !figureScaleFits(size, scale),
73
+ disabled: painted && size !== null && !figureScaleFits(size, scale),
64
74
  });
65
75
  }
66
76
  return choices;
@@ -68,8 +78,8 @@ function scaleChoices(scales, size) {
68
78
  /**
69
79
  * The line at the foot of the panel: what pressing save is about to do.
70
80
  * @param format - Which file the reader is about to write.
71
- * @param size - How big the figure is on the page.
72
- * @param scale - The multiple it is painted at.
81
+ * @param size - How big the figure is drawn for the file.
82
+ * @param scale - The multiple it is saved at.
73
83
  * @param failure - What went wrong last time, if anything.
74
84
  * @param rasterSvg - Whether the SVG embeds a rendered picture.
75
85
  * @param t - The chrome's formatter, so the sentence is in the language of
@@ -86,11 +96,9 @@ function hintOf(format, size, scale, failure, rasterSvg, t) {
86
96
  pixels: formatFigurePixels(figurePixels(size, scale)),
87
97
  });
88
98
  }
89
- if (format === 'svg') {
90
- return t('download.hintSvg', { pixels: formatFigurePixels(size) });
91
- }
92
- return t('download.hintPng', {
93
- pixels: formatFigurePixels(figurePixels(size, scale)),
94
- });
99
+ const pixels = formatFigurePixels(figurePixels(size, scale));
100
+ return format === 'svg'
101
+ ? t('download.hintSvg', { pixels })
102
+ : t('download.hintPng', { pixels });
95
103
  }
96
104
  //# sourceMappingURL=FigureDownloadPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FigureDownloadPanel.js","sourceRoot":"","sources":["../../../src/download/ui/FigureDownloadPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FigureDownloadPanel.js","sourceRoot":"","sources":["../../../src/download/ui/FigureDownloadPanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { FigurePixels } from '../core/figureScale.ts';
3
+ /** What {@link FigureSizeField} needs. */
4
+ export interface FigureSizeFieldProps {
5
+ /** What the row is called. */
6
+ label: string;
7
+ /** What the first box is called, for a screen reader. */
8
+ widthLabel: string;
9
+ /** What the second box is called. */
10
+ heightLabel: string;
11
+ /** The size typed so far. */
12
+ value: FigurePixels;
13
+ /** Called with the size, each side already held to the range. */
14
+ onChange: (size: FigurePixels) => void;
15
+ }
16
+ /**
17
+ * The two sides of a figure, typed in pixels.
18
+ *
19
+ * These are typed rather than stepped: a reader asking for 1920 × 1080 knows
20
+ * the numbers, and a stepper would take a hundred presses to reach them. A side
21
+ * is taken when the reader leaves its box or presses Enter, never on each key,
22
+ * since the `1` of a `1200` on its way in is not a width anybody asked for.
23
+ * @param props - See {@link FigureSizeFieldProps}.
24
+ * @returns The row.
25
+ */
26
+ export declare function FigureSizeField(props: FigureSizeFieldProps): ReactElement;
27
+ //# sourceMappingURL=FigureSizeField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FigureSizeField.d.ts","sourceRoot":"","sources":["../../../src/download/ui/FigureSizeField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgC,YAAY,EAAE,MAAM,OAAO,CAAC;AAQxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,0CAA0C;AAC1C,MAAM,WAAW,oBAAoB;IACnC,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,KAAK,EAAE,YAAY,CAAC;IACpB,iEAAiE;IACjE,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;CACxC;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,YAAY,CAwBzE"}
@@ -0,0 +1,87 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { OverlayRow } from "../../overlay/ui/OverlayRow.js";
4
+ import { useOverlaySurface } from "../../overlay/ui/overlaySurface.js";
5
+ import { overlayFocusRing } from "../../overlay/ui/overlayValueStyles.js";
6
+ import { figureLayoutSide } from "../core/figureLayout.js";
7
+ /**
8
+ * The two sides of a figure, typed in pixels.
9
+ *
10
+ * These are typed rather than stepped: a reader asking for 1920 × 1080 knows
11
+ * the numbers, and a stepper would take a hundred presses to reach them. A side
12
+ * is taken when the reader leaves its box or presses Enter, never on each key,
13
+ * since the `1` of a `1200` on its way in is not a width anybody asked for.
14
+ * @param props - See {@link FigureSizeFieldProps}.
15
+ * @returns The row.
16
+ */
17
+ export function FigureSizeField(props) {
18
+ const { label, widthLabel, heightLabel, value, onChange } = props;
19
+ const { metrics } = useOverlaySurface();
20
+ return (_jsx(OverlayRow, { label: label, children: _jsxs("span", { style: { ...FIELD_STYLE, fontSize: metrics.fontSize }, children: [_jsx(SideInput, { label: widthLabel, value: value.width, metrics: metrics, onCommit: (width) => onChange({ ...value, width }) }), _jsx("span", { "aria-hidden": "true", children: "\u00D7" }), _jsx(SideInput, { label: heightLabel, value: value.height, metrics: metrics, onCommit: (height) => onChange({ ...value, height }) }), _jsx("span", { style: UNIT_STYLE, children: "px" })] }) }));
21
+ }
22
+ /**
23
+ * One side, typed.
24
+ * @param props - See {@link SideInputProps}.
25
+ * @returns The box.
26
+ */
27
+ function SideInput(props) {
28
+ const { label, value, metrics, onCommit } = props;
29
+ const [draft, setDraft] = useState(String(value));
30
+ const [taken, setTaken] = useState(value);
31
+ const [focused, setFocused] = useState(false);
32
+ // A side changed from outside — another shape picked, a clamp — replaces
33
+ // whatever was being typed.
34
+ if (taken !== value) {
35
+ setTaken(value);
36
+ setDraft(String(value));
37
+ }
38
+ function commit() {
39
+ const typed = Number.parseFloat(draft);
40
+ const side = Number.isFinite(typed) ? figureLayoutSide(typed) : value;
41
+ setDraft(String(side));
42
+ if (side !== value)
43
+ onCommit(side);
44
+ }
45
+ function onKeyDown(event) {
46
+ if (event.key !== 'Enter')
47
+ return;
48
+ event.preventDefault();
49
+ commit();
50
+ }
51
+ return (_jsx("input", { type: "text", inputMode: "numeric", "aria-label": label, value: draft, style: { ...sideStyle(metrics), ...overlayFocusRing(focused) }, onChange: (event) => setDraft(event.currentTarget.value), onFocus: () => setFocused(true), onBlur: () => {
52
+ setFocused(false);
53
+ commit();
54
+ }, onKeyDown: onKeyDown }));
55
+ }
56
+ /**
57
+ * A box as tall as every other control of the panel, and wide enough for four
58
+ * digits.
59
+ * @param metrics - The measurements the panel is drawn from.
60
+ * @returns The box's rules.
61
+ */
62
+ function sideStyle(metrics) {
63
+ return {
64
+ boxSizing: 'border-box',
65
+ width: '5em',
66
+ height: metrics.controlHeight,
67
+ padding: '0 6px',
68
+ border: '1px solid var(--border)',
69
+ borderRadius: metrics.controlRadius,
70
+ background: 'var(--surface)',
71
+ color: 'var(--text)',
72
+ font: 'inherit',
73
+ fontSize: metrics.fontSize,
74
+ fontVariantNumeric: 'tabular-nums',
75
+ textAlign: 'right',
76
+ };
77
+ }
78
+ const FIELD_STYLE = {
79
+ display: 'inline-flex',
80
+ alignItems: 'center',
81
+ gap: 6,
82
+ color: 'var(--text-muted)',
83
+ };
84
+ const UNIT_STYLE = {
85
+ color: 'var(--text-faint)',
86
+ };
87
+ //# sourceMappingURL=FigureSizeField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FigureSizeField.js","sourceRoot":"","sources":["../../../src/download/ui/FigureSizeField.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { FigureLayout } from '../core/figureLayout.ts';
3
+ import type { FigurePixels } from '../core/figureScale.ts';
4
+ /** The shape a figure is saved at, and what changes it. */
5
+ export interface FigureSizing {
6
+ /** The shape picked. */
7
+ layout: FigureLayout;
8
+ /**
9
+ * The size typed for `custom`, or `null` before anything was typed, when it
10
+ * starts from the figure on screen.
11
+ */
12
+ custom: FigurePixels | null;
13
+ /** Called with the shape picked. */
14
+ onLayoutChange: (layout: FigureLayout) => void;
15
+ /** Called with the size typed. */
16
+ onCustomChange: (size: FigurePixels) => void;
17
+ }
18
+ /** What {@link FigureSizeRows} needs. */
19
+ export interface FigureSizeRowsProps {
20
+ /** The shape and what changes it. */
21
+ sizing: FigureSizing;
22
+ /** How big the figure is on the page, or `null` where there is none. */
23
+ size: FigurePixels | null;
24
+ }
25
+ /**
26
+ * The shape the figure is drawn at, and the two sides of a custom one.
27
+ *
28
+ * Each shape says the pixels it would produce, so choosing `16:9` for a figure
29
+ * already close to it is visibly a choice that changes little.
30
+ * @param props - See {@link FigureSizeRowsProps}.
31
+ * @returns The rows.
32
+ */
33
+ export declare function FigureSizeRows(props: FigureSizeRowsProps): ReactElement;
34
+ //# sourceMappingURL=FigureSizeRows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FigureSizeRows.d.ts","sourceRoot":"","sources":["../../../src/download/ui/FigureSizeRows.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAO1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAK3D,2DAA2D;AAC3D,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB;;;OAGG;IACH,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,oCAAoC;IACpC,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC/C,kCAAkC;IAClC,cAAc,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;CAC9C;AAED,yCAAyC;AACzC,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,MAAM,EAAE,YAAY,CAAC;IACrB,wEAAwE;IACxE,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,YAAY,CAsCvE"}
@@ -0,0 +1,54 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useChromeT } from "../../i18n/ui/useT.js";
3
+ import { OverlaySelect } from "../../overlay/ui/OverlaySelect.js";
4
+ import { FIGURE_LAYOUTS, figureLayoutSize } from "../core/figureLayout.js";
5
+ import { formatFigurePixels } from "../core/figureScale.js";
6
+ import { FigureSizeField } from "./FigureSizeField.js";
7
+ /**
8
+ * The shape the figure is drawn at, and the two sides of a custom one.
9
+ *
10
+ * Each shape says the pixels it would produce, so choosing `16:9` for a figure
11
+ * already close to it is visibly a choice that changes little.
12
+ * @param props - See {@link FigureSizeRowsProps}.
13
+ * @returns The rows.
14
+ */
15
+ export function FigureSizeRows(props) {
16
+ const { sizing, size } = props;
17
+ const { layout, custom, onLayoutChange, onCustomChange } = sizing;
18
+ const t = useChromeT();
19
+ const options = [];
20
+ for (const shape of FIGURE_LAYOUTS) {
21
+ options.push({
22
+ value: shape,
23
+ label: layoutLabel(shape, t),
24
+ title: size === null
25
+ ? undefined
26
+ : formatFigurePixels(figureLayoutSize(shape, size, custom ?? size)),
27
+ });
28
+ }
29
+ return (_jsxs(_Fragment, { children: [_jsx(OverlaySelect, { label: t('download.size'), help: { title: t('download.size'), body: t('download.sizeHelp') }, value: layout, options: options, disabled: size === null, onChange: onLayoutChange }), layout === 'custom' && size !== null ? (_jsx(FigureSizeField, { label: t('download.customSize'), widthLabel: t('download.width'), heightLabel: t('download.height'), value: figureLayoutSize('custom', size, custom ?? size), onChange: onCustomChange })) : null] }));
30
+ }
31
+ /**
32
+ * What a shape reads in the picker. A ratio is written as a ratio in every
33
+ * language.
34
+ * @param layout - The shape.
35
+ * @param t - The chrome's formatter.
36
+ * @returns Its label.
37
+ */
38
+ function layoutLabel(layout, t) {
39
+ switch (layout) {
40
+ case 'standard':
41
+ return '4:3';
42
+ case 'wide':
43
+ return '16:9';
44
+ case 'column':
45
+ return t('download.sizeColumn');
46
+ case 'custom':
47
+ return t('download.sizeCustom');
48
+ case 'screen':
49
+ return t('download.sizeScreen');
50
+ default:
51
+ throw new Error(`unknown figure layout: ${String(layout)}`);
52
+ }
53
+ }
54
+ //# sourceMappingURL=FigureSizeRows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FigureSizeRows.js","sourceRoot":"","sources":["../../../src/download/ui/FigureSizeRows.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAoC,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAC;AAyBxD;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAC/B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC;IAClE,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IAEvB,MAAM,OAAO,GAAuC,EAAE,CAAC;IACvD,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5B,KAAK,EACH,IAAI,KAAK,IAAI;gBACX,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC;SACxE,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CACL,8BACE,KAAC,aAAa,IACZ,KAAK,EAAE,CAAC,CAAC,eAAe,CAAC,EACzB,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAAE,EACjE,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,IAAI,KAAK,IAAI,EACvB,QAAQ,EAAE,cAAc,GACxB,EACD,MAAM,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CACtC,KAAC,eAAe,IACd,KAAK,EAAE,CAAC,CAAC,qBAAqB,CAAC,EAC/B,UAAU,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAC/B,WAAW,EAAE,CAAC,CAAC,iBAAiB,CAAC,EACjC,KAAK,EAAE,gBAAgB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,EACvD,QAAQ,EAAE,cAAc,GACxB,CACH,CAAC,CAAC,CAAC,IAAI,IACP,CACJ,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,MAAoB,EAAE,CAAuB;IAChE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU;YACb,OAAO,KAAK,CAAC;QACf,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC;QAClC,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC;QAClC,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC;QAClC;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
@@ -10,6 +10,8 @@ export type { FigureDownloadProps } from './FigureDownload.tsx';
10
10
  export { FigureDownload } from './FigureDownload.tsx';
11
11
  export type { FigureDownloadPanelProps } from './FigureDownloadPanel.tsx';
12
12
  export { FigureDownloadPanel } from './FigureDownloadPanel.tsx';
13
+ export type { FigureSizing } from './FigureSizeRows.tsx';
14
+ export type { FigureRenderer } from './useFigureRedraw.tsx';
13
15
  export type { ExportDialogFrameProps } from './ExportDialogFrame.tsx';
14
16
  export { ExportDialogFrame } from './ExportDialogFrame.tsx';
15
17
  export type { ExportImageDialogProps } from './ExportImageDialog.tsx';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/download/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/download/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/download/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAsB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA2B,CAAC;AAGhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA4B,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/download/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAsB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA2B,CAAC;AAKhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA4B,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { FigurePixels } from '../core/figureScale.ts';
3
+ /** Draws a figure at the size asked for, for a file. */
4
+ export type FigureRenderer = (size: FigurePixels) => ReactNode;
5
+ /** What {@link useFigureRedraw} hands back. */
6
+ export interface FigureRedraw {
7
+ /**
8
+ * Draw the figure off the page at a size, wait for it to settle, and hand
9
+ * the box it was drawn in to `save`.
10
+ */
11
+ redraw: (targetId: string, size: FigurePixels, save: (box: Element) => Promise<void>) => Promise<void>;
12
+ /** The copy being drawn, to be rendered anywhere in the caller's tree. */
13
+ portal: ReactNode;
14
+ }
15
+ /**
16
+ * A second copy of a figure, drawn at another size for as long as it takes to
17
+ * save it.
18
+ *
19
+ * The copy is rendered through a portal, so it sees every provider the figure
20
+ * on the page sees, and the portal's box is placed next to the figure's own,
21
+ * so it inherits the same tokens and the same type. It sits far to the left of
22
+ * the page, out of sight, and is taken away once the file is written.
23
+ * @param render - Draws the figure at a size.
24
+ * @returns See {@link FigureRedraw}.
25
+ */
26
+ export declare function useFigureRedraw(render?: FigureRenderer): FigureRedraw;
27
+ //# sourceMappingURL=useFigureRedraw.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFigureRedraw.d.ts","sourceRoot":"","sources":["../../../src/download/ui/useFigureRedraw.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI3D,wDAAwD;AACxD,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,YAAY,KAAK,SAAS,CAAC;AAE/D,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,MAAM,EAAE,CACN,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,KAClC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,0EAA0E;IAC1E,MAAM,EAAE,SAAS,CAAC;CACnB;AASD;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,YAAY,CA+BrE"}
@@ -0,0 +1,78 @@
1
+ import { useEffect, useRef, useState } from 'react';
2
+ import { createPortal } from 'react-dom';
3
+ import { whenFigureSettles } from "../core/figureSettle.js";
4
+ import { figureElement } from "../core/figureTarget.js";
5
+ /**
6
+ * A second copy of a figure, drawn at another size for as long as it takes to
7
+ * save it.
8
+ *
9
+ * The copy is rendered through a portal, so it sees every provider the figure
10
+ * on the page sees, and the portal's box is placed next to the figure's own,
11
+ * so it inherits the same tokens and the same type. It sits far to the left of
12
+ * the page, out of sight, and is taken away once the file is written.
13
+ * @param render - Draws the figure at a size.
14
+ * @returns See {@link FigureRedraw}.
15
+ */
16
+ export function useFigureRedraw(render) {
17
+ const [job, setJob] = useState(null);
18
+ const controllerRef = useRef(null);
19
+ useEffect(() => () => controllerRef.current?.abort(), []);
20
+ async function redraw(targetId, size, save) {
21
+ const box = mountRedrawBox(figureElement(targetId), size);
22
+ const controller = new AbortController();
23
+ controllerRef.current = controller;
24
+ setJob({ box, size });
25
+ try {
26
+ await whenFigureSettles(box, { signal: controller.signal });
27
+ await save(box);
28
+ }
29
+ finally {
30
+ controllerRef.current = null;
31
+ setJob(null);
32
+ box.remove();
33
+ }
34
+ }
35
+ const portal = job === null || render === undefined
36
+ ? null
37
+ : createPortal(render(job.size), job.box);
38
+ return { redraw, portal };
39
+ }
40
+ /**
41
+ * The box the copy is drawn in, beside the figure it copies.
42
+ *
43
+ * Its type is copied from the figure's box, since a chart inherits its labels'
44
+ * size from wherever it is mounted and the copy is mounted one level up.
45
+ * @param target - The box the figure on the page is mounted in.
46
+ * @param size - The size the copy is drawn at.
47
+ * @returns The box, already in the document.
48
+ */
49
+ function mountRedrawBox(target, size) {
50
+ const box = document.createElement('div');
51
+ box.setAttribute('aria-hidden', 'true');
52
+ box.inert = true;
53
+ const type = window.getComputedStyle(target);
54
+ Object.assign(box.style, {
55
+ position: 'absolute',
56
+ top: '0',
57
+ left: '-100000px',
58
+ width: `${size.width}px`,
59
+ height: `${size.height}px`,
60
+ pointerEvents: 'none',
61
+ fontFamily: type.fontFamily,
62
+ fontSize: type.fontSize,
63
+ lineHeight: type.lineHeight,
64
+ color: type.color,
65
+ });
66
+ if (target instanceof HTMLElement) {
67
+ target.after(box);
68
+ return box;
69
+ }
70
+ // A figure named by its `<svg>` gets the box beside the nearest element
71
+ // that may hold a `<div>`.
72
+ let host = target;
73
+ while (host instanceof SVGElement)
74
+ host = host.parentElement;
75
+ (host ?? document.body).append(box);
76
+ return box;
77
+ }
78
+ //# sourceMappingURL=useFigureRedraw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFigureRedraw.js","sourceRoot":"","sources":["../../../src/download/ui/useFigureRedraw.tsx"],"names":[],"mappings":"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"}
@@ -17,5 +17,5 @@ export type ChromeKey = keyof typeof en;
17
17
  * missing message falls back to; the other three arrive as a chunk of their
18
18
  * own, so a site read only in English downloads none of them.
19
19
  */
20
- export declare const CHROME_CATALOG: MessageCatalog<"language.label" | "chrome.pages" | "ecosystem.tools" | "ecosystem.menuHeading" | "ecosystem.otherTools" | "ecosystem.youAreHere" | "ecosystem.group.basics.label" | "ecosystem.group.basics.blurb" | "ecosystem.group.practice.label" | "ecosystem.group.practice.blurb" | "ecosystem.group.structures.label" | "ecosystem.group.structures.blurb" | "ecosystem.group.spectra.label" | "ecosystem.group.spectra.blurb" | "ecosystem.group.research.label" | "ecosystem.group.research.blurb" | "ecosystem.group.computing.label" | "ecosystem.group.computing.blurb" | "site.learn.tagline" | "site.inchi.tagline" | "site.vcl.tagline" | "site.smiles.tagline" | "site.openbabel.tagline" | "site.chemcalc.tagline" | "site.dbe.tagline" | "site.nmrium.tagline" | "site.metabo.tagline" | "site.derepflow.tagline" | "site.surge.tagline" | "site.tex.tagline" | "site.lcao.tagline" | "site.regexp.tagline" | "site.pdb.tagline" | "site.elucidation.tagline" | "site.equilibrium.tagline" | "site.polycarp.tagline" | "site.3d.tagline" | "site.periodic-table.tagline" | "site.database.tagline" | "site.symmetry.tagline" | "site.osiris.tagline" | "site.atoms.tagline" | "site.moles.tagline" | "site.inorganic.tagline" | "share.button" | "share.buttonTitle" | "share.dialogTitle" | "share.lead" | "share.layout" | "share.embed" | "share.embedHint" | "share.showOnPage" | "share.custom" | "share.link" | "share.copyLink" | "share.openInNewTab" | "share.iframe" | "share.copyIframe" | "share.done" | "cite.button" | "cite.copyReferenceAs" | "cite.pleaseCiteBoth" | "cite.pleaseCiteEvery" | "cite.copyBothAs" | "cite.copyEveryAs" | "cite.importIntoManager" | "cite.openArticle" | "cite.copyThisAs" | "cite.importThis" | "cite.copied" | "cite.copyFailed" | "cite.format.doi" | "cite.download.ris" | "cite.download.bibtex" | "clipboard.copied" | "clipboard.failed" | "clipboard.copy" | "clipboard.copyThe" | "clipboard.copyValue" | "clipboard.copyToClipboard" | "about.providedBy" | "about.whatYouCanDo" | "about.builtOn" | "about.howToCite" | "about.licenceAndSource" | "about.licence" | "about.foundAProblem" | "about.reportIt" | "about.citeWork" | "about.built" | "about.builtFromCommit" | "about.nameList" | "credits.openbabel.description" | "credits.openchemlib.description" | "credits.openchemlib-utils.description" | "credits.osiris-property-explorer.description" | "credits.react-ocl.description" | "credits.react-mf.description" | "credits.mass-tools.description" | "credits.chem-equilibrium.description" | "credits.ml-matrix.description" | "credits.ml-xsadd.description" | "credits.cif-to-json.description" | "credits.ml-spectra-processing.description" | "credits.occ.description" | "credits.xtb-wasm.description" | "credits.molstar.description" | "credits.blueprint.description" | "credits.react-science.description" | "credits.react-cheminfo.description" | "credits.cheminfo-font.description" | "credits.nivo.description" | "credits.mathjax.description" | "credits.lexical.description" | "credits.katex.description" | "credits.dnd-kit.description" | "credits.react-roi.description" | "credits.file-collection.description" | "credits.zip-js.description" | "credits.preact-signals.description" | "credits.fastify.description" | "credits.sqlite.description" | "credits.sqlite-wasm.description" | "credits.pouchdb.description" | "credits.chemexper.description" | "credits.react.description" | "credits.vite.description" | "help.label" | "help.learnMore" | "help.on" | "confirm.delete" | "confirm.cancel" | "error.title" | "error.tryAgain" | "error.noMessage" | "capsule.filter" | "color.scales" | "color.done" | "color.custom" | "color.customEllipsis" | "color.inUse" | "color.colourScale" | "color.legendLabel" | "color.scaleBeingEdited" | "color.anchorColour" | "color.anchorPosition" | "color.removeAnchor" | "color.addColour" | "color.path" | "color.interpolation.rgb" | "color.interpolation.hsv" | "color.interpolation.hsv-long" | "color.kind.sequential" | "color.kind.diverging" | "color.kind.cyclic" | "color.scale.viridis.label" | "color.scale.viridis.description" | "color.scale.plasma.label" | "color.scale.plasma.description" | "color.scale.magma.label" | "color.scale.magma.description" | "color.scale.inferno.label" | "color.scale.inferno.description" | "color.scale.cividis.label" | "color.scale.cividis.description" | "color.scale.turbo.label" | "color.scale.turbo.description" | "color.scale.greys.label" | "color.scale.greys.description" | "color.scale.cool-warm.label" | "color.scale.cool-warm.description" | "color.scale.blue-red.label" | "color.scale.blue-red.description" | "color.scale.rainbow.label" | "color.scale.rainbow.description" | "download.save" | "download.saveFigure" | "download.saveThisFigure" | "download.format" | "download.formatHelp" | "download.resolution" | "download.resolutionHelp" | "download.resolutionExample" | "download.noFigure" | "download.hintRasterSvg" | "download.hintSvg" | "download.hintPng" | "pedagogy.check" | "pedagogy.revealHint" | "pedagogy.revealHintCount" | "pedagogy.revealHintLadder" | "pedagogy.hideSolution" | "pedagogy.revealSolution" | "pedagogy.reset" | "pedagogy.hints" | "pedagogy.solvedCount" | "pedagogy.clearAll" | "pedagogy.keepAnswers" | "pedagogy.clearEverything" | "pedagogy.clearWarning" | "pedagogy.filterTerms" | "pedagogy.noTermDefined" | "pedagogy.noTermMatches" | "pedagogy.example" | "pedagogy.input" | "pedagogy.previous" | "pedagogy.next" | "pedagogy.stepOf" | "slides.exit" | "slides.previousSlide" | "slides.nextSlide" | "slides.toggleFullscreen" | "slides.backToSlides" | "slides.backToSlide" | "slides.noAddress" | "slides.liveDemos" | "slides.noTalkYet" | "overlay.options" | "overlay.whatAmILookingAt" | "overlay.reset" | "overlay.hoverAName" | "overlay.dismiss" | "delimited.copyTable" | "delimited.close" | "delimited.separator" | "delimited.save" | "delimited.copy" | "delimited.tableAsText" | "chart.measurement" | "chart.measurements" | "delimited.descriptionOne" | "delimited.descriptionMany" | "structure.guide.atom.title" | "structure.guide.atom.element" | "structure.guide.atom.group" | "structure.guide.atom.applyOrForget" | "structure.guide.atom.chain" | "structure.guide.atom.charge" | "structure.guide.atom.radical" | "structure.guide.atom.spin" | "structure.guide.atom.attachment" | "structure.guide.atom.query" | "structure.guide.atom.halogen" | "structure.guide.atom.delete" | "structure.guide.atom.note" | "structure.guide.bond.title" | "structure.guide.bond.order" | "structure.guide.bond.zeroOrder" | "structure.guide.bond.stereo" | "structure.guide.bond.unknownGeometry" | "structure.guide.bond.threeRing" | "structure.guide.bond.ring" | "structure.guide.bond.benzene" | "structure.guide.bond.query" | "structure.guide.bond.delete" | "structure.guide.anywhere.title" | "structure.guide.anywhere.undo" | "structure.guide.anywhere.copy" | "structure.guide.anywhere.paste" | "structure.guide.anywhere.deleteSelection" | "structure.guide.anywhere.flip" | "structure.guide.anywhere.help" | "structure.guide.anywhere.note" | "structure.guide.selecting.title" | "structure.guide.selecting.lasso" | "structure.guide.selecting.rectangle" | "structure.guide.selecting.add" | "structure.guide.selecting.move" | "structure.guide.selecting.duplicate" | "structure.guide.selecting.queryFeatures" | "structure.guide.selecting.note" | "structure.guide.stereochemistry.title" | "structure.guide.stereochemistry.note" | "structure.input.type" | "structure.input.or" | "structure.input.drag" | "structure.input.plusDrag" | "structure.input.dragSelection" | "structure.input.plusDragSelection" | "structure.input.doubleClick" | "structure.docs.toolsAndKeys" | "structure.docs.atomProperties" | "structure.docs.stereochemistry" | "structure.help.hoverToolbar" | "structure.help.learnMore" | "structure.mouseAndKeyboard" | "structure.tool.clear.name" | "structure.tool.clear.description" | "structure.tool.cleanUp.name" | "structure.tool.cleanUp.description" | "structure.tool.select.name" | "structure.tool.select.description" | "structure.tool.unknownConfiguration.name" | "structure.tool.unknownConfiguration.description" | "structure.tool.delete.name" | "structure.tool.delete.description" | "structure.tool.singleBond.name" | "structure.tool.singleBond.description" | "structure.tool.upBond.name" | "structure.tool.upBond.description" | "structure.tool.positiveCharge.name" | "structure.tool.positiveCharge.description" | "structure.tool.undo.name" | "structure.tool.undo.description" | "structure.tool.zoomAndRotate.name" | "structure.tool.zoomAndRotate.description" | "structure.tool.atomMapping.name" | "structure.tool.atomMapping.description" | "structure.tool.enhancedStereo.name" | "structure.tool.enhancedStereo.description" | "structure.tool.text.name" | "structure.tool.text.description" | "structure.tool.chain.name" | "structure.tool.chain.description" | "structure.tool.downBond.name" | "structure.tool.downBond.description" | "structure.tool.negativeCharge.name" | "structure.tool.negativeCharge.description" | "structure.tool.anyAtom.name" | "structure.tool.anyAtom.description" | "structure.tool.ring3.name" | "structure.tool.ring3.description" | "structure.tool.ring5.name" | "structure.tool.ring5.description" | "structure.tool.ring7.name" | "structure.tool.ring7.description" | "structure.tool.ring4.name" | "structure.tool.ring4.description" | "structure.tool.ring6.name" | "structure.tool.ring6.description" | "structure.tool.benzene.name" | "structure.tool.benzene.description" | "structure.tool.carbon.name" | "structure.tool.carbon.description" | "structure.tool.nitrogen.name" | "structure.tool.nitrogen.description" | "structure.tool.oxygen.name" | "structure.tool.oxygen.description" | "structure.tool.fluorine.name" | "structure.tool.fluorine.description" | "structure.tool.bromine.name" | "structure.tool.bromine.description" | "structure.tool.hydrogen.name" | "structure.tool.hydrogen.description" | "structure.tool.silicon.name" | "structure.tool.silicon.description" | "structure.tool.phosphorus.name" | "structure.tool.phosphorus.description" | "structure.tool.sulfur.name" | "structure.tool.sulfur.description" | "structure.tool.chlorine.name" | "structure.tool.chlorine.description" | "structure.tool.iodine.name" | "structure.tool.iodine.description" | "structure.tool.reactionOnly" | "structure.tool.unavailable" | "structure.loadingEditor" | "periodic.table" | "periodic.group" | "periodic.period" | "periodic.cellLabel" | "periodic.category.alkali-metal" | "periodic.category.alkaline-earth-metal" | "periodic.category.transition-metal" | "periodic.category.post-transition-metal" | "periodic.category.metalloid" | "periodic.category.nonmetal" | "periodic.category.halogen" | "periodic.category.noble-gas" | "periodic.category.lanthanoid" | "periodic.category.actinoid" | "molecule3d.view" | "molecule3d.resetView" | "molecule3d.spin" | "molecule3d.surface" | "molecule3d.molecularSurface" | "molecule3d.displayOptions" | "molecule3d.exportImage" | "molecule3d.measure" | "molecule3d.clearMeasurements" | "molecule3d.measurement.distance" | "molecule3d.measurement.angle" | "molecule3d.measurement.dihedral" | "molecule3d.measurementTooltip" | "molecule3d.representation.ball-and-stick" | "molecule3d.representation.spacefill" | "molecule3d.representation.stick" | "molecule3d.size" | "molecule3d.surfaceOpacity" | "molecule3d.solventProbe" | "molecule3d.solventProbeHelp" | "molecule3d.surfaceColour" | "molecule3d.colour" | "molecule3d.coloring.uniform" | "molecule3d.coloring.element" | "molecule3d.coloring.polarity" | "molecule3d.neutral" | "molecule3d.tpsaHelp" | "molecule3d.loadingViewer" | "molecule3d.couldNotDraw" | "molecule3d.gesture.rotate" | "molecule3d.gesture.rollDrag" | "molecule3d.gesture.rollKeys" | "molecule3d.gesture.moveDrag" | "molecule3d.gesture.moveCtrl" | "molecule3d.gesture.zoom" | "molecule3d.gesture.clip" | "molecule3d.gesture.centreAtom" | "molecule3d.gesture.centreMolecule" | "molecule3d.input.drag" | "molecule3d.input.plus" | "molecule3d.input.plusDrag" | "molecule3d.input.plusScroll" | "molecule3d.input.or" | "molecule3d.input.rightDrag" | "molecule3d.input.scroll" | "molecule3d.input.clickAtom" | "molecule3d.input.clickBackground" | "molecule3d.helpNote" | "orbital.couldNotDraw" | "orbital.sampling" | "orbital.showAxes" | "orbital.axesTitle" | "orbital.axesBody" | "orbital.axesExample" | "orbital.resetTitle" | "orbital.resetBody" | "viewer.capability.noWindow" | "viewer.capability.noContext" | "viewer.capability.noFloatTextures" | "viewer.capability.ready" | "conformers.strategy.adaptive-random" | "conformers.strategy.likely-random" | "conformers.strategy.pure-random" | "conformers.strategy.likely-systematic" | "conformers.strategyDetail.adaptive-random" | "conformers.strategyDetail.likely-random" | "conformers.strategyDetail.pure-random" | "conformers.strategyDetail.likely-systematic" | "conformers.minimisation.none">;
20
+ export declare const CHROME_CATALOG: MessageCatalog<"language.label" | "chrome.pages" | "account.signIn" | "account.signOut" | "account.signedInAs" | "ecosystem.tools" | "ecosystem.menuHeading" | "ecosystem.otherTools" | "ecosystem.youAreHere" | "ecosystem.group.basics.label" | "ecosystem.group.basics.blurb" | "ecosystem.group.practice.label" | "ecosystem.group.practice.blurb" | "ecosystem.group.structures.label" | "ecosystem.group.structures.blurb" | "ecosystem.group.spectra.label" | "ecosystem.group.spectra.blurb" | "ecosystem.group.research.label" | "ecosystem.group.research.blurb" | "ecosystem.group.computing.label" | "ecosystem.group.computing.blurb" | "site.learn.tagline" | "site.inchi.tagline" | "site.vcl.tagline" | "site.smiles.tagline" | "site.openbabel.tagline" | "site.chemcalc.tagline" | "site.dbe.tagline" | "site.nmrium.tagline" | "site.metabo.tagline" | "site.derepflow.tagline" | "site.surge.tagline" | "site.tex.tagline" | "site.lcao.tagline" | "site.regexp.tagline" | "site.pdb.tagline" | "site.elucidation.tagline" | "site.equilibrium.tagline" | "site.polycarp.tagline" | "site.3d.tagline" | "site.periodic-table.tagline" | "site.database.tagline" | "site.symmetry.tagline" | "site.osiris.tagline" | "site.atoms.tagline" | "site.moles.tagline" | "site.inorganic.tagline" | "share.button" | "share.buttonTitle" | "share.dialogTitle" | "share.lead" | "share.layout" | "share.embed" | "share.embedHint" | "share.showOnPage" | "share.custom" | "share.link" | "share.copyLink" | "share.openInNewTab" | "share.iframe" | "share.copyIframe" | "share.done" | "cite.button" | "cite.copyReferenceAs" | "cite.pleaseCiteBoth" | "cite.pleaseCiteEvery" | "cite.copyBothAs" | "cite.copyEveryAs" | "cite.importIntoManager" | "cite.openArticle" | "cite.copyThisAs" | "cite.importThis" | "cite.copied" | "cite.copyFailed" | "cite.format.doi" | "cite.download.ris" | "cite.download.bibtex" | "clipboard.copied" | "clipboard.failed" | "clipboard.copy" | "clipboard.copyThe" | "clipboard.copyValue" | "clipboard.copyToClipboard" | "about.providedBy" | "about.whatYouCanDo" | "about.builtOn" | "about.howToCite" | "about.licenceAndSource" | "about.licence" | "about.foundAProblem" | "about.reportIt" | "about.citeWork" | "about.built" | "about.builtFromCommit" | "about.nameList" | "credits.openbabel.description" | "credits.openchemlib.description" | "credits.openchemlib-utils.description" | "credits.osiris-property-explorer.description" | "credits.react-ocl.description" | "credits.react-mf.description" | "credits.mass-tools.description" | "credits.chem-equilibrium.description" | "credits.ml-matrix.description" | "credits.ml-xsadd.description" | "credits.cif-to-json.description" | "credits.ml-spectra-processing.description" | "credits.occ.description" | "credits.xtb-wasm.description" | "credits.molstar.description" | "credits.blueprint.description" | "credits.react-science.description" | "credits.react-cheminfo.description" | "credits.cheminfo-font.description" | "credits.nivo.description" | "credits.mathjax.description" | "credits.lexical.description" | "credits.katex.description" | "credits.dnd-kit.description" | "credits.react-roi.description" | "credits.file-collection.description" | "credits.zip-js.description" | "credits.preact-signals.description" | "credits.fastify.description" | "credits.sqlite.description" | "credits.sqlite-wasm.description" | "credits.pouchdb.description" | "credits.chemexper.description" | "credits.react.description" | "credits.vite.description" | "help.label" | "help.learnMore" | "help.on" | "confirm.delete" | "confirm.cancel" | "error.title" | "error.tryAgain" | "error.noMessage" | "capsule.filter" | "color.scales" | "color.done" | "color.custom" | "color.customEllipsis" | "color.inUse" | "color.colourScale" | "color.legendLabel" | "color.scaleBeingEdited" | "color.anchorColour" | "color.anchorPosition" | "color.removeAnchor" | "color.addColour" | "color.path" | "color.interpolation.rgb" | "color.interpolation.hsv" | "color.interpolation.hsv-long" | "color.kind.sequential" | "color.kind.diverging" | "color.kind.cyclic" | "color.scale.viridis.label" | "color.scale.viridis.description" | "color.scale.plasma.label" | "color.scale.plasma.description" | "color.scale.magma.label" | "color.scale.magma.description" | "color.scale.inferno.label" | "color.scale.inferno.description" | "color.scale.cividis.label" | "color.scale.cividis.description" | "color.scale.turbo.label" | "color.scale.turbo.description" | "color.scale.greys.label" | "color.scale.greys.description" | "color.scale.cool-warm.label" | "color.scale.cool-warm.description" | "color.scale.blue-red.label" | "color.scale.blue-red.description" | "color.scale.rainbow.label" | "color.scale.rainbow.description" | "download.save" | "download.saveFigure" | "download.saveThisFigure" | "download.format" | "download.formatHelp" | "download.resolution" | "download.resolutionHelp" | "download.resolutionExample" | "download.noFigure" | "download.hintRasterSvg" | "download.hintSvg" | "download.hintPng" | "download.size" | "download.sizeHelp" | "download.sizeScreen" | "download.sizeColumn" | "download.sizeCustom" | "download.customSize" | "download.width" | "download.height" | "pedagogy.check" | "pedagogy.revealHint" | "pedagogy.revealHintCount" | "pedagogy.revealHintLadder" | "pedagogy.hideSolution" | "pedagogy.revealSolution" | "pedagogy.reset" | "pedagogy.hints" | "pedagogy.solvedCount" | "pedagogy.clearAll" | "pedagogy.keepAnswers" | "pedagogy.clearEverything" | "pedagogy.clearWarning" | "pedagogy.filterTerms" | "pedagogy.noTermDefined" | "pedagogy.noTermMatches" | "pedagogy.example" | "pedagogy.input" | "pedagogy.previous" | "pedagogy.next" | "pedagogy.stepOf" | "slides.exit" | "slides.previousSlide" | "slides.nextSlide" | "slides.toggleFullscreen" | "slides.backToSlides" | "slides.backToSlide" | "slides.noAddress" | "slides.liveDemos" | "slides.noTalkYet" | "overlay.options" | "overlay.whatAmILookingAt" | "overlay.reset" | "overlay.hoverAName" | "overlay.dismiss" | "delimited.copyTable" | "delimited.close" | "delimited.separator" | "delimited.save" | "delimited.copy" | "delimited.tableAsText" | "chart.measurement" | "chart.measurements" | "delimited.descriptionOne" | "delimited.descriptionMany" | "structure.guide.atom.title" | "structure.guide.atom.element" | "structure.guide.atom.group" | "structure.guide.atom.applyOrForget" | "structure.guide.atom.chain" | "structure.guide.atom.charge" | "structure.guide.atom.radical" | "structure.guide.atom.spin" | "structure.guide.atom.attachment" | "structure.guide.atom.query" | "structure.guide.atom.halogen" | "structure.guide.atom.delete" | "structure.guide.atom.note" | "structure.guide.bond.title" | "structure.guide.bond.order" | "structure.guide.bond.zeroOrder" | "structure.guide.bond.stereo" | "structure.guide.bond.unknownGeometry" | "structure.guide.bond.threeRing" | "structure.guide.bond.ring" | "structure.guide.bond.benzene" | "structure.guide.bond.query" | "structure.guide.bond.delete" | "structure.guide.anywhere.title" | "structure.guide.anywhere.undo" | "structure.guide.anywhere.copy" | "structure.guide.anywhere.paste" | "structure.guide.anywhere.deleteSelection" | "structure.guide.anywhere.flip" | "structure.guide.anywhere.help" | "structure.guide.anywhere.note" | "structure.guide.selecting.title" | "structure.guide.selecting.lasso" | "structure.guide.selecting.rectangle" | "structure.guide.selecting.add" | "structure.guide.selecting.move" | "structure.guide.selecting.duplicate" | "structure.guide.selecting.queryFeatures" | "structure.guide.selecting.note" | "structure.guide.stereochemistry.title" | "structure.guide.stereochemistry.note" | "structure.input.type" | "structure.input.or" | "structure.input.drag" | "structure.input.plusDrag" | "structure.input.dragSelection" | "structure.input.plusDragSelection" | "structure.input.doubleClick" | "structure.docs.toolsAndKeys" | "structure.docs.atomProperties" | "structure.docs.stereochemistry" | "structure.help.hoverToolbar" | "structure.help.learnMore" | "structure.mouseAndKeyboard" | "structure.tool.clear.name" | "structure.tool.clear.description" | "structure.tool.cleanUp.name" | "structure.tool.cleanUp.description" | "structure.tool.select.name" | "structure.tool.select.description" | "structure.tool.unknownConfiguration.name" | "structure.tool.unknownConfiguration.description" | "structure.tool.delete.name" | "structure.tool.delete.description" | "structure.tool.singleBond.name" | "structure.tool.singleBond.description" | "structure.tool.upBond.name" | "structure.tool.upBond.description" | "structure.tool.positiveCharge.name" | "structure.tool.positiveCharge.description" | "structure.tool.undo.name" | "structure.tool.undo.description" | "structure.tool.zoomAndRotate.name" | "structure.tool.zoomAndRotate.description" | "structure.tool.atomMapping.name" | "structure.tool.atomMapping.description" | "structure.tool.enhancedStereo.name" | "structure.tool.enhancedStereo.description" | "structure.tool.text.name" | "structure.tool.text.description" | "structure.tool.chain.name" | "structure.tool.chain.description" | "structure.tool.downBond.name" | "structure.tool.downBond.description" | "structure.tool.negativeCharge.name" | "structure.tool.negativeCharge.description" | "structure.tool.anyAtom.name" | "structure.tool.anyAtom.description" | "structure.tool.ring3.name" | "structure.tool.ring3.description" | "structure.tool.ring5.name" | "structure.tool.ring5.description" | "structure.tool.ring7.name" | "structure.tool.ring7.description" | "structure.tool.ring4.name" | "structure.tool.ring4.description" | "structure.tool.ring6.name" | "structure.tool.ring6.description" | "structure.tool.benzene.name" | "structure.tool.benzene.description" | "structure.tool.carbon.name" | "structure.tool.carbon.description" | "structure.tool.nitrogen.name" | "structure.tool.nitrogen.description" | "structure.tool.oxygen.name" | "structure.tool.oxygen.description" | "structure.tool.fluorine.name" | "structure.tool.fluorine.description" | "structure.tool.bromine.name" | "structure.tool.bromine.description" | "structure.tool.hydrogen.name" | "structure.tool.hydrogen.description" | "structure.tool.silicon.name" | "structure.tool.silicon.description" | "structure.tool.phosphorus.name" | "structure.tool.phosphorus.description" | "structure.tool.sulfur.name" | "structure.tool.sulfur.description" | "structure.tool.chlorine.name" | "structure.tool.chlorine.description" | "structure.tool.iodine.name" | "structure.tool.iodine.description" | "structure.tool.reactionOnly" | "structure.tool.unavailable" | "structure.loadingEditor" | "periodic.table" | "periodic.group" | "periodic.period" | "periodic.cellLabel" | "periodic.category.alkali-metal" | "periodic.category.alkaline-earth-metal" | "periodic.category.transition-metal" | "periodic.category.post-transition-metal" | "periodic.category.metalloid" | "periodic.category.nonmetal" | "periodic.category.halogen" | "periodic.category.noble-gas" | "periodic.category.lanthanoid" | "periodic.category.actinoid" | "molecule3d.view" | "molecule3d.resetView" | "molecule3d.spin" | "molecule3d.surface" | "molecule3d.molecularSurface" | "molecule3d.displayOptions" | "molecule3d.exportImage" | "molecule3d.measure" | "molecule3d.clearMeasurements" | "molecule3d.measurement.distance" | "molecule3d.measurement.angle" | "molecule3d.measurement.dihedral" | "molecule3d.measurementTooltip" | "molecule3d.representation.ball-and-stick" | "molecule3d.representation.spacefill" | "molecule3d.representation.stick" | "molecule3d.size" | "molecule3d.surfaceOpacity" | "molecule3d.solventProbe" | "molecule3d.solventProbeHelp" | "molecule3d.surfaceColour" | "molecule3d.colour" | "molecule3d.coloring.uniform" | "molecule3d.coloring.element" | "molecule3d.coloring.polarity" | "molecule3d.neutral" | "molecule3d.tpsaHelp" | "molecule3d.loadingViewer" | "molecule3d.couldNotDraw" | "molecule3d.gesture.rotate" | "molecule3d.gesture.rollDrag" | "molecule3d.gesture.rollKeys" | "molecule3d.gesture.moveDrag" | "molecule3d.gesture.moveCtrl" | "molecule3d.gesture.zoom" | "molecule3d.gesture.clip" | "molecule3d.gesture.centreAtom" | "molecule3d.gesture.centreMolecule" | "molecule3d.input.drag" | "molecule3d.input.plus" | "molecule3d.input.plusDrag" | "molecule3d.input.plusScroll" | "molecule3d.input.or" | "molecule3d.input.rightDrag" | "molecule3d.input.scroll" | "molecule3d.input.clickAtom" | "molecule3d.input.clickBackground" | "molecule3d.helpNote" | "orbital.couldNotDraw" | "orbital.sampling" | "orbital.showAxes" | "orbital.axesTitle" | "orbital.axesBody" | "orbital.axesExample" | "orbital.resetTitle" | "orbital.resetBody" | "viewer.capability.noWindow" | "viewer.capability.noContext" | "viewer.capability.noFloatTextures" | "viewer.capability.ready" | "conformers.strategy.adaptive-random" | "conformers.strategy.likely-random" | "conformers.strategy.pure-random" | "conformers.strategy.likely-systematic" | "conformers.strategyDetail.adaptive-random" | "conformers.strategyDetail.likely-random" | "conformers.strategyDetail.pure-random" | "conformers.strategyDetail.likely-systematic" | "conformers.minimisation.none">;
21
21
  //# sourceMappingURL=chromeCatalog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chromeCatalog.d.ts","sourceRoot":"","sources":["../../../src/i18n/core/chromeCatalog.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,uBAAuB,CAAuB;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAElD,qCAAqC;AACrC,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,EAAE,CAAC;AAExC;;;;GAIG;AACH,eAAO,MAAM,cAAc,mmZAUzB,CAAC"}
1
+ {"version":3,"file":"chromeCatalog.d.ts","sourceRoot":"","sources":["../../../src/i18n/core/chromeCatalog.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,uBAAuB,CAAuB;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAElD,qCAAqC;AACrC,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,EAAE,CAAC;AAExC;;;;GAIG;AACH,eAAO,MAAM,cAAc,g1ZAUzB,CAAC"}