react-cheminfo 0.55.1 → 0.57.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 (67) hide show
  1. package/bin/check-deploy.mjs +7 -1
  2. package/lib/credits/core/credits.d.ts +30 -0
  3. package/lib/credits/core/credits.d.ts.map +1 -1
  4. package/lib/credits/core/credits.js +35 -0
  5. package/lib/credits/core/credits.js.map +1 -1
  6. package/lib/deploy/core/checkDeploy.d.ts.map +1 -1
  7. package/lib/deploy/core/checkDeploy.js +4 -1
  8. package/lib/deploy/core/checkDeploy.js.map +1 -1
  9. package/lib/deploy/core/types.d.ts +7 -0
  10. package/lib/deploy/core/types.d.ts.map +1 -1
  11. package/lib/deploy/core/types.js.map +1 -1
  12. package/lib/ecosystem/core/types.d.ts +1 -1
  13. package/lib/ecosystem/core/types.d.ts.map +1 -1
  14. package/lib/ecosystem/core/unlistedSites.d.ts.map +1 -1
  15. package/lib/ecosystem/core/unlistedSites.js +16 -0
  16. package/lib/ecosystem/core/unlistedSites.js.map +1 -1
  17. package/lib/ecosystem/ui/glyphs.d.ts.map +1 -1
  18. package/lib/ecosystem/ui/glyphs.js +4 -0
  19. package/lib/ecosystem/ui/glyphs.js.map +1 -1
  20. package/lib/i18n/core/chromeCatalog.d.ts +1 -1
  21. package/lib/i18n/core/chromeCatalog.d.ts.map +1 -1
  22. package/lib/locales/de.json +1 -0
  23. package/lib/locales/en.json +1 -0
  24. package/lib/locales/es.json +1 -0
  25. package/lib/locales/fr.json +1 -0
  26. package/lib/locales/it.json +1 -0
  27. package/lib/molecule3d/core/settings.d.ts +6 -0
  28. package/lib/molecule3d/core/settings.d.ts.map +1 -1
  29. package/lib/molecule3d/core/settings.js +1 -0
  30. package/lib/molecule3d/core/settings.js.map +1 -1
  31. package/lib/molecule3d/ui/Molecule3DStage.d.ts +29 -0
  32. package/lib/molecule3d/ui/Molecule3DStage.d.ts.map +1 -0
  33. package/lib/molecule3d/ui/Molecule3DStage.js +40 -0
  34. package/lib/molecule3d/ui/Molecule3DStage.js.map +1 -0
  35. package/lib/molecule3d/ui/Molecule3DToolbar.d.ts +14 -1
  36. package/lib/molecule3d/ui/Molecule3DToolbar.d.ts.map +1 -1
  37. package/lib/molecule3d/ui/Molecule3DToolbar.js +5 -3
  38. package/lib/molecule3d/ui/Molecule3DToolbar.js.map +1 -1
  39. package/lib/molecule3d/ui/MoleculeCanvas3D.d.ts +2 -1
  40. package/lib/molecule3d/ui/MoleculeCanvas3D.d.ts.map +1 -1
  41. package/lib/molecule3d/ui/MoleculeCanvas3D.js +7 -6
  42. package/lib/molecule3d/ui/MoleculeCanvas3D.js.map +1 -1
  43. package/lib/molecule3d/ui/MoleculeViewer3D.d.ts +2 -1
  44. package/lib/molecule3d/ui/MoleculeViewer3D.d.ts.map +1 -1
  45. package/lib/molecule3d/ui/MoleculeViewer3D.js +2 -1
  46. package/lib/molecule3d/ui/MoleculeViewer3D.js.map +1 -1
  47. package/lib/molecule3d/ui/index.d.ts +1 -1
  48. package/lib/molecule3d/ui/index.d.ts.map +1 -1
  49. package/lib/molecule3d/ui/index.js.map +1 -1
  50. package/package.json +1 -1
  51. package/src/credits/core/credits.ts +38 -0
  52. package/src/deploy/core/checkDeploy.ts +4 -1
  53. package/src/deploy/core/types.ts +7 -0
  54. package/src/ecosystem/core/types.ts +2 -1
  55. package/src/ecosystem/core/unlistedSites.ts +16 -0
  56. package/src/ecosystem/ui/glyphs.tsx +16 -0
  57. package/src/locales/de.json +1 -0
  58. package/src/locales/en.json +1 -0
  59. package/src/locales/es.json +1 -0
  60. package/src/locales/fr.json +1 -0
  61. package/src/locales/it.json +1 -0
  62. package/src/molecule3d/core/settings.ts +7 -0
  63. package/src/molecule3d/ui/Molecule3DStage.tsx +80 -0
  64. package/src/molecule3d/ui/Molecule3DToolbar.tsx +28 -1
  65. package/src/molecule3d/ui/MoleculeCanvas3D.tsx +48 -37
  66. package/src/molecule3d/ui/MoleculeViewer3D.tsx +2 -1
  67. package/src/molecule3d/ui/index.ts +4 -1
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * The toolbars floating over the molecule canvas: the view — reset, spin,
3
- * surface, and the options, export and help popovers — in one vertical
3
+ * surface, the options and export popovers, full screen and help — in one vertical
4
4
  * react-science `Toolbar`, and the measuring tools with their own clear button
5
5
  * in a second one under it.
6
6
  */
@@ -26,6 +26,14 @@ import {
26
26
  SurfaceIcon,
27
27
  } from './molecule3dIcons.tsx';
28
28
 
29
+ /** Whether the canvas fills the screen, and how to change that. */
30
+ export interface Molecule3DFullscreen {
31
+ /** Whether the canvas and its toolbars fill the screen. */
32
+ active: boolean;
33
+ /** Fill the screen, or leave it. */
34
+ toggle: () => void;
35
+ }
36
+
29
37
  /** Props of {@link Molecule3DToolbar}. */
30
38
  export interface Molecule3DToolbarProps {
31
39
  /** Which tools to show; every one it does not name is on. */
@@ -44,6 +52,12 @@ export interface Molecule3DToolbarProps {
44
52
  options?: ReactElement;
45
53
  /** Content of the export popover; its tool is left out without one. */
46
54
  exportPanel?: ReactElement;
55
+ /**
56
+ * Whether the canvas fills the screen, and the toggle; its tool is left out
57
+ * without one, which is what a browser that cannot fill the screen gets.
58
+ * @default undefined
59
+ */
60
+ fullscreen?: Molecule3DFullscreen;
47
61
  }
48
62
 
49
63
  /**
@@ -65,18 +79,21 @@ export function Molecule3DToolbar(props: Molecule3DToolbarProps): ReactElement {
65
79
  onResetView,
66
80
  options,
67
81
  exportPanel,
82
+ fullscreen,
68
83
  } = props;
69
84
  const t = useChromeT();
70
85
  const tools = resolveMolecule3DTools(toolsProp);
71
86
  const showOptions = tools.options && options !== undefined;
72
87
  const showSurfaceTool = tools.surface && onShowSurfaceChange !== undefined;
73
88
  const showExport = tools.export && exportPanel !== undefined;
89
+ const showFullscreen = tools.fullscreen && fullscreen !== undefined;
74
90
  const hasView =
75
91
  tools.spin ||
76
92
  tools.surface ||
77
93
  tools.reset ||
78
94
  showOptions ||
79
95
  showExport ||
96
+ showFullscreen ||
80
97
  tools.help;
81
98
 
82
99
  return (
@@ -141,6 +158,16 @@ export function Molecule3DToolbar(props: Molecule3DToolbarProps): ReactElement {
141
158
  }}
142
159
  />
143
160
  )}
161
+ {showFullscreen && (
162
+ <Toolbar.Item
163
+ icon={fullscreen.active ? 'minimize' : 'fullscreen'}
164
+ active={fullscreen.active}
165
+ aria-label={t('molecule3d.fullScreen')}
166
+ tooltip={t('molecule3d.fullScreen')}
167
+ tooltipProps={TOOLTIP_PROPS}
168
+ onClick={fullscreen.toggle}
169
+ />
170
+ )}
144
171
  {tools.help && (
145
172
  <Toolbar.PopoverItem
146
173
  placement="right-start"
@@ -1,5 +1,6 @@
1
1
  /**
2
- * The molstar canvas of `MoleculeViewer3D`, with its toolbars over it.
2
+ * The molstar canvas of `MoleculeViewer3D`, with its toolbars over it, in a
3
+ * box that can fill the screen.
3
4
  *
4
5
  * Reached through `React.lazy`, so a page that never shows a molecule never
5
6
  * downloads molstar.
@@ -17,6 +18,7 @@ import {
17
18
 
18
19
  import { Molecule3DExport } from './Molecule3DExport.tsx';
19
20
  import { Molecule3DOptions } from './Molecule3DOptions.tsx';
21
+ import { Molecule3DStage } from './Molecule3DStage.tsx';
20
22
  import { Molecule3DToolbar } from './Molecule3DToolbar.tsx';
21
23
  import { createMolecule3DViewer } from './createViewer.ts';
22
24
  import type { MoleculeViewer3DProps } from './moleculeViewer3DProps.ts';
@@ -150,44 +152,53 @@ export function MoleculeCanvas3D(props: MoleculeCanvas3DProps): ReactElement {
150
152
  );
151
153
 
152
154
  return (
153
- <div style={{ ...STAGE_STYLE, minHeight }}>
154
- <div ref={setContainer} style={CANVAS_STYLE} data-testid="molecule3d" />
155
- {molfile !== null && (
156
- <div style={OVERLAY_STYLE}>
157
- <Molecule3DToolbar
158
- tools={tools}
159
- measureKind={measureKind}
160
- onMeasureKindChange={setMeasureKind}
161
- measurementCount={measurements.length}
162
- onClearMeasurements={() => {
163
- setMeasurements(NO_MEASUREMENTS);
164
- }}
165
- spinning={spinning}
166
- onSpinningChange={setSpinning}
167
- showSurface={settings.showSurface}
168
- onShowSurfaceChange={(showSurface) => {
169
- setSettings({ ...settings, showSurface });
170
- }}
171
- onResetView={resetView}
172
- options={
173
- <Molecule3DOptions
174
- settings={settings}
175
- onChange={setSettings}
176
- polarSurfaceArea={polarSurfaceArea}
177
- defaults={initialSettings}
178
- />
179
- }
180
- exportPanel={
181
- <Molecule3DExport
182
- getSize={canvasSize}
183
- onExport={exportImage}
184
- onCopy={copyImage}
185
- />
186
- }
155
+ <Molecule3DStage style={{ ...STAGE_STYLE, minHeight }}>
156
+ {(fullscreen) => (
157
+ <>
158
+ <div
159
+ ref={setContainer}
160
+ style={CANVAS_STYLE}
161
+ data-testid="molecule3d"
187
162
  />
188
- </div>
163
+ {molfile !== null && (
164
+ <div style={OVERLAY_STYLE}>
165
+ <Molecule3DToolbar
166
+ tools={tools}
167
+ fullscreen={fullscreen}
168
+ measureKind={measureKind}
169
+ onMeasureKindChange={setMeasureKind}
170
+ measurementCount={measurements.length}
171
+ onClearMeasurements={() => {
172
+ setMeasurements(NO_MEASUREMENTS);
173
+ }}
174
+ spinning={spinning}
175
+ onSpinningChange={setSpinning}
176
+ showSurface={settings.showSurface}
177
+ onShowSurfaceChange={(showSurface) => {
178
+ setSettings({ ...settings, showSurface });
179
+ }}
180
+ onResetView={resetView}
181
+ options={
182
+ <Molecule3DOptions
183
+ settings={settings}
184
+ onChange={setSettings}
185
+ polarSurfaceArea={polarSurfaceArea}
186
+ defaults={initialSettings}
187
+ />
188
+ }
189
+ exportPanel={
190
+ <Molecule3DExport
191
+ getSize={canvasSize}
192
+ onExport={exportImage}
193
+ onCopy={copyImage}
194
+ />
195
+ }
196
+ />
197
+ </div>
198
+ )}
199
+ </>
189
200
  )}
190
- </div>
201
+ </Molecule3DStage>
191
202
  );
192
203
  }
193
204
 
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * A molecule in three dimensions, with a toolbar to measure it, turn it, wrap
3
- * it in its surface and restyle it — and what to say when there cannot be one.
3
+ * it in its surface, restyle it and fill the screen with it — and what to say
4
+ * when there cannot be one.
4
5
  *
5
6
  * The WebGL probe runs before molstar is touched, so a machine without WebGL
6
7
  * gets an explanation instead of a blank rectangle, and the canvas sits behind
@@ -11,7 +11,10 @@ export { Molecule3DExport } from './Molecule3DExport.tsx';
11
11
  export type { Molecule3DExportProps } from './Molecule3DExport.tsx';
12
12
  export { Molecule3DHelp } from './Molecule3DHelp.tsx';
13
13
  export { Molecule3DToolbar } from './Molecule3DToolbar.tsx';
14
- export type { Molecule3DToolbarProps } from './Molecule3DToolbar.tsx';
14
+ export type {
15
+ Molecule3DFullscreen,
16
+ Molecule3DToolbarProps,
17
+ } from './Molecule3DToolbar.tsx';
15
18
  export type {
16
19
  MoleculeImageRequest,
17
20
  SceneCapture,