react-cheminfo 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -2
- package/bin/check-tokens.mjs +105 -0
- package/lib/about/core/about.d.ts +95 -0
- package/lib/about/core/about.d.ts.map +1 -0
- package/lib/about/core/about.js +78 -0
- package/lib/about/core/about.js.map +1 -0
- package/lib/about/core/index.d.ts +3 -0
- package/lib/about/core/index.d.ts.map +1 -0
- package/lib/about/core/index.js +2 -0
- package/lib/about/core/index.js.map +1 -0
- package/lib/about/ui/AboutCitations.d.ts +14 -0
- package/lib/about/ui/AboutCitations.d.ts.map +1 -0
- package/lib/about/ui/AboutCitations.js +40 -0
- package/lib/about/ui/AboutCitations.js.map +1 -0
- package/lib/about/ui/AboutPage.d.ts +32 -0
- package/lib/about/ui/AboutPage.d.ts.map +1 -0
- package/lib/about/ui/AboutPage.js +70 -0
- package/lib/about/ui/AboutPage.js.map +1 -0
- package/lib/about/ui/AboutSection.d.ts +23 -0
- package/lib/about/ui/AboutSection.d.ts.map +1 -0
- package/lib/about/ui/AboutSection.js +28 -0
- package/lib/about/ui/AboutSection.js.map +1 -0
- package/lib/about/ui/index.d.ts +7 -0
- package/lib/about/ui/index.d.ts.map +1 -0
- package/lib/about/ui/index.js +4 -0
- package/lib/about/ui/index.js.map +1 -0
- package/lib/chrome/ui/index.d.ts +1 -0
- package/lib/chrome/ui/index.d.ts.map +1 -1
- package/lib/chrome/ui/index.js +3 -0
- package/lib/chrome/ui/index.js.map +1 -1
- package/lib/clipboard/ui/CodeBlock.d.ts.map +1 -1
- package/lib/clipboard/ui/CodeBlock.js +4 -1
- package/lib/clipboard/ui/CodeBlock.js.map +1 -1
- package/lib/color/ui/ColorScaleLegend.js +1 -1
- package/lib/color/ui/ColorScaleLegend.js.map +1 -1
- package/lib/core.d.ts +3 -0
- package/lib/core.d.ts.map +1 -1
- package/lib/core.js +5 -0
- package/lib/core.js.map +1 -1
- package/lib/credits/core/credits.d.ts +36 -0
- package/lib/credits/core/credits.d.ts.map +1 -1
- package/lib/credits/core/credits.js +42 -0
- package/lib/credits/core/credits.js.map +1 -1
- package/lib/credits/ui/CreditsList.js +1 -1
- package/lib/credits/ui/CreditsList.js.map +1 -1
- package/lib/delimited/ui/DelimitedTextPanel.js +1 -1
- package/lib/delimited/ui/DelimitedTextPanel.js.map +1 -1
- package/lib/ecosystem/core/sites.d.ts +1 -1
- package/lib/ecosystem/core/sites.d.ts.map +1 -1
- package/lib/ecosystem/core/sites.js +10 -0
- package/lib/ecosystem/core/sites.js.map +1 -1
- package/lib/ecosystem/core/tokens.d.ts.map +1 -1
- package/lib/ecosystem/core/tokens.js +1 -0
- package/lib/ecosystem/core/tokens.js.map +1 -1
- package/lib/ecosystem/ui/EcosystemLinks.js +2 -2
- package/lib/ecosystem/ui/EcosystemLinks.js.map +1 -1
- package/lib/ecosystem/ui/EcosystemMenu.js +1 -1
- package/lib/ecosystem/ui/EcosystemMenu.js.map +1 -1
- package/lib/ecosystem/ui/SiteTile.d.ts.map +1 -1
- package/lib/ecosystem/ui/SiteTile.js +5 -5
- package/lib/ecosystem/ui/SiteTile.js.map +1 -1
- package/lib/ecosystem/ui/glyphs.d.ts.map +1 -1
- package/lib/ecosystem/ui/glyphs.js +3 -0
- package/lib/ecosystem/ui/glyphs.js.map +1 -1
- package/lib/orbital/core/index.d.ts +1 -1
- package/lib/orbital/core/index.d.ts.map +1 -1
- package/lib/orbital/core/index.js +1 -1
- package/lib/orbital/core/index.js.map +1 -1
- package/lib/orbital/core/realHarmonics.d.ts +5 -2
- package/lib/orbital/core/realHarmonics.d.ts.map +1 -1
- package/lib/orbital/core/realHarmonics.js.map +1 -1
- package/lib/orbital/ui/AtomicOrbitalCanvas.d.ts +18 -0
- package/lib/orbital/ui/AtomicOrbitalCanvas.d.ts.map +1 -1
- package/lib/orbital/ui/AtomicOrbitalCanvas.js +84 -7
- package/lib/orbital/ui/AtomicOrbitalCanvas.js.map +1 -1
- package/lib/orbital/ui/AtomicOrbitalViewer.d.ts +13 -0
- package/lib/orbital/ui/AtomicOrbitalViewer.d.ts.map +1 -1
- package/lib/orbital/ui/AtomicOrbitalViewer.js +1 -1
- package/lib/orbital/ui/AtomicOrbitalViewer.js.map +1 -1
- package/lib/orbital/ui/camera.d.ts +15 -0
- package/lib/orbital/ui/camera.d.ts.map +1 -1
- package/lib/orbital/ui/camera.js +68 -0
- package/lib/orbital/ui/camera.js.map +1 -1
- package/lib/orbital/ui/renderVolume.d.ts.map +1 -1
- package/lib/orbital/ui/renderVolume.js +8 -1
- package/lib/orbital/ui/renderVolume.js.map +1 -1
- package/lib/orbital/ui/serial.d.ts +25 -0
- package/lib/orbital/ui/serial.d.ts.map +1 -0
- package/lib/orbital/ui/serial.js +25 -0
- package/lib/orbital/ui/serial.js.map +1 -0
- package/lib/orbital/ui/viewer.d.ts +23 -0
- package/lib/orbital/ui/viewer.d.ts.map +1 -1
- package/lib/orbital/ui/viewer.js +70 -17
- package/lib/orbital/ui/viewer.js.map +1 -1
- package/lib/pedagogy/ui/ExerciseProgressHeader.js +1 -1
- package/lib/pedagogy/ui/ExerciseProgressHeader.js.map +1 -1
- package/lib/pedagogy/ui/GlossaryText.js +2 -2
- package/lib/pedagogy/ui/GlossaryText.js.map +1 -1
- package/lib/pedagogy/ui/ReferenceSectionBlock.js +5 -2
- package/lib/pedagogy/ui/ReferenceSectionBlock.js.map +1 -1
- package/lib/pedagogy/ui/SyntaxTooltip.js +2 -2
- package/lib/pedagogy/ui/SyntaxTooltip.js.map +1 -1
- package/lib/pedagogy/ui/TutorialStepStrip.js +4 -1
- package/lib/pedagogy/ui/TutorialStepStrip.js.map +1 -1
- package/lib/periodic/ui/CategoryLegend.js +1 -1
- package/lib/periodic/ui/CategoryLegend.js.map +1 -1
- package/lib/periodic/ui/PeriodicTableChrome.js +2 -2
- package/lib/periodic/ui/PeriodicTableChrome.js.map +1 -1
- package/lib/seo/vite/ogCard.d.ts.map +1 -1
- package/lib/seo/vite/ogCard.js +1 -0
- package/lib/seo/vite/ogCard.js.map +1 -1
- package/lib/share/ui/ShareDialogContent.d.ts.map +1 -1
- package/lib/share/ui/ShareDialogContent.js +5 -2
- package/lib/share/ui/ShareDialogContent.js.map +1 -1
- package/lib/share/ui/SharePartOptions.js +1 -1
- package/lib/share/ui/SharePartOptions.js.map +1 -1
- package/lib/slides/core/demoLinks.d.ts +43 -0
- package/lib/slides/core/demoLinks.d.ts.map +1 -0
- package/lib/slides/core/demoLinks.js +104 -0
- package/lib/slides/core/demoLinks.js.map +1 -0
- package/lib/slides/core/index.d.ts +13 -0
- package/lib/slides/core/index.d.ts.map +1 -0
- package/lib/slides/core/index.js +7 -0
- package/lib/slides/core/index.js.map +1 -0
- package/lib/slides/core/sectionHeading.d.ts +19 -0
- package/lib/slides/core/sectionHeading.d.ts.map +1 -0
- package/lib/slides/core/sectionHeading.js +19 -0
- package/lib/slides/core/sectionHeading.js.map +1 -0
- package/lib/slides/core/slideNavigation.d.ts +38 -0
- package/lib/slides/core/slideNavigation.d.ts.map +1 -0
- package/lib/slides/core/slideNavigation.js +65 -0
- package/lib/slides/core/slideNavigation.js.map +1 -0
- package/lib/slides/core/talk.d.ts +82 -0
- package/lib/slides/core/talk.d.ts.map +1 -0
- package/lib/slides/core/talk.js +134 -0
- package/lib/slides/core/talk.js.map +1 -0
- package/lib/slides/core/talkManifest.d.ts +90 -0
- package/lib/slides/core/talkManifest.d.ts.map +1 -0
- package/lib/slides/core/talkManifest.js +109 -0
- package/lib/slides/core/talkManifest.js.map +1 -0
- package/lib/slides/core/talkOrigin.d.ts +50 -0
- package/lib/slides/core/talkOrigin.d.ts.map +1 -0
- package/lib/slides/core/talkOrigin.js +62 -0
- package/lib/slides/core/talkOrigin.js.map +1 -0
- package/lib/slides/ui/BackToSlides.d.ts +26 -0
- package/lib/slides/ui/BackToSlides.d.ts.map +1 -0
- package/lib/slides/ui/BackToSlides.js +24 -0
- package/lib/slides/ui/BackToSlides.js.map +1 -0
- package/lib/slides/ui/DemoLink.d.ts +42 -0
- package/lib/slides/ui/DemoLink.d.ts.map +1 -0
- package/lib/slides/ui/DemoLink.js +17 -0
- package/lib/slides/ui/DemoLink.js.map +1 -0
- package/lib/slides/ui/EmbedSlide.d.ts +19 -0
- package/lib/slides/ui/EmbedSlide.d.ts.map +1 -0
- package/lib/slides/ui/EmbedSlide.js +56 -0
- package/lib/slides/ui/EmbedSlide.js.map +1 -0
- package/lib/slides/ui/SectionSlide.d.ts +18 -0
- package/lib/slides/ui/SectionSlide.d.ts.map +1 -0
- package/lib/slides/ui/SectionSlide.js +18 -0
- package/lib/slides/ui/SectionSlide.js.map +1 -0
- package/lib/slides/ui/Slide.d.ts +52 -0
- package/lib/slides/ui/Slide.d.ts.map +1 -0
- package/lib/slides/ui/Slide.js +58 -0
- package/lib/slides/ui/Slide.js.map +1 -0
- package/lib/slides/ui/SlideBody.d.ts +32 -0
- package/lib/slides/ui/SlideBody.d.ts.map +1 -0
- package/lib/slides/ui/SlideBody.js +27 -0
- package/lib/slides/ui/SlideBody.js.map +1 -0
- package/lib/slides/ui/Slideshow.d.ts +93 -0
- package/lib/slides/ui/Slideshow.d.ts.map +1 -0
- package/lib/slides/ui/Slideshow.js +122 -0
- package/lib/slides/ui/Slideshow.js.map +1 -0
- package/lib/slides/ui/SlideshowBar.d.ts +33 -0
- package/lib/slides/ui/SlideshowBar.d.ts.map +1 -0
- package/lib/slides/ui/SlideshowBar.js +20 -0
- package/lib/slides/ui/SlideshowBar.js.map +1 -0
- package/lib/slides/ui/TalkList.d.ts +37 -0
- package/lib/slides/ui/TalkList.d.ts.map +1 -0
- package/lib/slides/ui/TalkList.js +68 -0
- package/lib/slides/ui/TalkList.js.map +1 -0
- package/lib/slides/ui/index.d.ts +19 -0
- package/lib/slides/ui/index.d.ts.map +1 -0
- package/lib/slides/ui/index.js +10 -0
- package/lib/slides/ui/index.js.map +1 -0
- package/lib/slides/vite/index.d.ts +3 -0
- package/lib/slides/vite/index.d.ts.map +1 -0
- package/lib/slides/vite/index.js +2 -0
- package/lib/slides/vite/index.js.map +1 -0
- package/lib/slides/vite/talks.d.ts +50 -0
- package/lib/slides/vite/talks.d.ts.map +1 -0
- package/lib/slides/vite/talks.js +87 -0
- package/lib/slides/vite/talks.js.map +1 -0
- package/lib/slides.d.ts +3 -0
- package/lib/slides.d.ts.map +1 -0
- package/lib/slides.js +3 -0
- package/lib/slides.js.map +1 -0
- package/lib/structure/ui/StructureEditor.js +2 -2
- package/lib/structure/ui/StructureEditor.js.map +1 -1
- package/lib/structure/ui/StructurePlaceholder.js +1 -1
- package/lib/structure/ui/StructurePlaceholder.js.map +1 -1
- package/lib/tokens/core/checkTokens.d.ts +51 -0
- package/lib/tokens/core/checkTokens.d.ts.map +1 -0
- package/lib/tokens/core/checkTokens.js +188 -0
- package/lib/tokens/core/checkTokens.js.map +1 -0
- package/lib/tokens/core/colors.d.ts +42 -0
- package/lib/tokens/core/colors.d.ts.map +1 -0
- package/lib/tokens/core/colors.js +119 -0
- package/lib/tokens/core/colors.js.map +1 -0
- package/lib/tokens/core/index.d.ts +3 -0
- package/lib/tokens/core/index.d.ts.map +1 -0
- package/lib/tokens/core/index.js +2 -0
- package/lib/tokens/core/index.js.map +1 -0
- package/lib/tokens/core/rules.d.ts +23 -0
- package/lib/tokens/core/rules.d.ts.map +1 -0
- package/lib/tokens/core/rules.js +90 -0
- package/lib/tokens/core/rules.js.map +1 -0
- package/lib/ui.d.ts +1 -0
- package/lib/ui.d.ts.map +1 -1
- package/lib/ui.js +1 -0
- package/lib/ui.js.map +1 -1
- package/lib/vite.d.ts +1 -0
- package/lib/vite.d.ts.map +1 -1
- package/lib/vite.js +1 -0
- package/lib/vite.js.map +1 -1
- package/package.json +11 -3
- package/src/about/core/about.ts +176 -0
- package/src/about/core/index.ts +2 -0
- package/src/about/ui/AboutCitations.tsx +79 -0
- package/src/about/ui/AboutPage.tsx +177 -0
- package/src/about/ui/AboutSection.tsx +56 -0
- package/src/about/ui/index.ts +6 -0
- package/src/chrome/ui/index.ts +3 -0
- package/src/clipboard/ui/CodeBlock.tsx +4 -1
- package/src/color/ui/ColorScaleLegend.tsx +1 -1
- package/src/core.ts +5 -0
- package/src/credits/core/credits.ts +42 -0
- package/src/credits/ui/CreditsList.tsx +1 -1
- package/src/delimited/ui/DelimitedTextPanel.tsx +1 -1
- package/src/ecosystem/core/sites.ts +12 -0
- package/src/ecosystem/core/tokens.ts +1 -0
- package/src/ecosystem/ui/EcosystemLinks.tsx +2 -2
- package/src/ecosystem/ui/EcosystemMenu.tsx +1 -1
- package/src/ecosystem/ui/SiteTile.tsx +7 -5
- package/src/ecosystem/ui/glyphs.tsx +40 -0
- package/src/orbital/core/index.ts +4 -1
- package/src/orbital/core/realHarmonics.ts +5 -2
- package/src/orbital/ui/AtomicOrbitalCanvas.tsx +126 -4
- package/src/orbital/ui/AtomicOrbitalViewer.tsx +14 -1
- package/src/orbital/ui/camera.ts +81 -0
- package/src/orbital/ui/renderVolume.ts +8 -1
- package/src/orbital/ui/serial.ts +35 -0
- package/src/orbital/ui/viewer.ts +72 -13
- package/src/pedagogy/ui/ExerciseProgressHeader.tsx +1 -1
- package/src/pedagogy/ui/GlossaryText.tsx +2 -2
- package/src/pedagogy/ui/ReferenceSectionBlock.tsx +5 -2
- package/src/pedagogy/ui/SyntaxTooltip.tsx +2 -2
- package/src/pedagogy/ui/TutorialStepStrip.tsx +4 -1
- package/src/periodic/ui/CategoryLegend.tsx +1 -1
- package/src/periodic/ui/PeriodicTableChrome.tsx +2 -2
- package/src/seo/vite/ogCard.ts +1 -0
- package/src/share/ui/ShareDialogContent.tsx +5 -2
- package/src/share/ui/SharePartOptions.tsx +1 -1
- package/src/slides/core/demoLinks.ts +113 -0
- package/src/slides/core/index.ts +22 -0
- package/src/slides/core/sectionHeading.ts +29 -0
- package/src/slides/core/slideNavigation.ts +77 -0
- package/src/slides/core/talk.ts +203 -0
- package/src/slides/core/talkManifest.ts +158 -0
- package/src/slides/core/talkOrigin.ts +83 -0
- package/src/slides/ui/BackToSlides.tsx +49 -0
- package/src/slides/ui/DemoLink.tsx +67 -0
- package/src/slides/ui/EmbedSlide.tsx +85 -0
- package/src/slides/ui/SectionSlide.tsx +44 -0
- package/src/slides/ui/Slide.tsx +143 -0
- package/src/slides/ui/SlideBody.tsx +64 -0
- package/src/slides/ui/Slideshow.tsx +282 -0
- package/src/slides/ui/SlideshowBar.tsx +83 -0
- package/src/slides/ui/TalkList.tsx +146 -0
- package/src/slides/ui/index.ts +18 -0
- package/src/slides/vite/index.ts +2 -0
- package/src/slides/vite/talks.ts +126 -0
- package/src/slides.ts +2 -0
- package/src/structure/ui/StructureEditor.tsx +2 -2
- package/src/structure/ui/StructurePlaceholder.tsx +1 -1
- package/src/tokens/core/checkTokens.ts +242 -0
- package/src/tokens/core/colors.ts +122 -0
- package/src/tokens/core/index.ts +6 -0
- package/src/tokens/core/rules.ts +103 -0
- package/src/ui.ts +1 -0
- package/src/vite.ts +1 -0
- package/styles/chrome.css +1 -0
- package/styles/slides.css +667 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { atomicGridResolution } from "./atomicGrid.js";
|
|
1
|
+
export { atomicGridResolution, createAtomicOrbitalEvaluator, } from "./atomicGrid.js";
|
|
2
2
|
export { atomicOrbitalsOf, defaultOrbitalId, findAtomicOrbital, hydrogenicParametersOf, } from "./atomicOrbitals.js";
|
|
3
3
|
export { BOHR_IN_ANGSTROM, RYDBERG_ELECTRONVOLTS } from "./constants.js";
|
|
4
4
|
export { ELEMENT_ANOMALIES, HIGHEST_ATOMIC_NUMBER, MADELUNG_ORDER, NOBLE_GASES, aufbauConfigurationOf, configurationOf, coreAtomicNumber, formatConfiguration, formatOccupancy, isAnomalous, subshellCapacity, subshellLabel, } from "./electronConfiguration.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/orbital/core/index.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/orbital/core/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEzE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,WAAW,EACX,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,aAAa,GACd,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEhF,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,UAAU,EACV,aAAa,EACb,eAAe,EACf,eAAe,EACf,eAAe,EACf,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,cAAc,GACf,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -30,8 +30,11 @@ export interface RealHarmonic {
|
|
|
30
30
|
* @param y - Offset from the nucleus along y, ångström.
|
|
31
31
|
* @param z - Offset from the nucleus along z, ångström.
|
|
32
32
|
* @param radius - Length of `(x, y, z)`, passed in because the caller has
|
|
33
|
-
* already computed it for the radial part.
|
|
34
|
-
*
|
|
33
|
+
* already computed it for the radial part. Never 0: a harmonic names a
|
|
34
|
+
* direction and the nucleus has none, so every ℓ > 0 divides by it. Build
|
|
35
|
+
* `ψ` with `createAtomicOrbitalEvaluator`, which answers that one point
|
|
36
|
+
* itself rather than paying for a branch on every sample.
|
|
37
|
+
* @returns The dimensionless amplitude.
|
|
35
38
|
*/
|
|
36
39
|
evaluate: (x: number, y: number, z: number, radius: number) => number;
|
|
37
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realHarmonics.d.ts","sourceRoot":"","sources":["../../../src/orbital/core/realHarmonics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,0DAA0D;AAC1D,eAAO,MAAM,gBAAgB,+BAAgC,CAAC;AAE9D,mCAAmC;AACnC,MAAM,WAAW,YAAY;IAC3B,wEAAwE;IACxE,CAAC,EAAE,MAAM,CAAC;IACV,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAC;IACZ,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd
|
|
1
|
+
{"version":3,"file":"realHarmonics.d.ts","sourceRoot":"","sources":["../../../src/orbital/core/realHarmonics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,0DAA0D;AAC1D,eAAO,MAAM,gBAAgB,+BAAgC,CAAC;AAE9D,mCAAmC;AACnC,MAAM,WAAW,YAAY;IAC3B,wEAAwE;IACxE,CAAC,EAAE,MAAM,CAAC;IACV,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAC;IACZ,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;;;;;OAWG;IACH,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;CACvE;AAeD;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,YAAY,EAAE,EAsF1C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAMrD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAMhD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realHarmonics.js","sourceRoot":"","sources":["../../../src/orbital/core/realHarmonics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,0DAA0D;AAC1D,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"realHarmonics.js","sourceRoot":"","sources":["../../../src/orbital/core/realHarmonics.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,24 @@ export interface AtomicOrbitalCanvasProps {
|
|
|
29
29
|
* @default 56
|
|
30
30
|
*/
|
|
31
31
|
resolution?: number | ResolutionLimits;
|
|
32
|
+
/**
|
|
33
|
+
* Whether the labelled x, y, z frame is drawn through the nucleus when the
|
|
34
|
+
* canvas opens. A `3d_xz` is only `3d_xz` because of where its lobes sit
|
|
35
|
+
* against those axes, and a lone isosurface says nothing about that, so the
|
|
36
|
+
* frame is on unless a site says otherwise.
|
|
37
|
+
*
|
|
38
|
+
* The canvas owns the state from then on: the button in its corner flips it,
|
|
39
|
+
* and {@link AtomicOrbitalCanvasProps.onAxesChange} reports the new value to
|
|
40
|
+
* a site that wants to remember it for the next mount.
|
|
41
|
+
* @default true
|
|
42
|
+
*/
|
|
43
|
+
axes?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Called when the student flips the frame, with its new state — so a site can
|
|
46
|
+
* persist the choice and pass it back as `axes`.
|
|
47
|
+
* @default undefined
|
|
48
|
+
*/
|
|
49
|
+
onAxesChange?: (axes: boolean) => void;
|
|
32
50
|
/**
|
|
33
51
|
* Whether the scene turns on its own, which is what makes a still screenshot
|
|
34
52
|
* of a 3D shape readable.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AtomicOrbitalCanvas.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalCanvas.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"AtomicOrbitalCanvas.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalCanvas.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAKzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAOvD,4CAA4C;AAC5C,MAAM,WAAW,wBAAwB;IACvC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvC;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,YAAY,CAoId"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* The molstar canvas showing one atomic orbital.
|
|
4
|
+
*
|
|
5
|
+
* `AtomicOrbitalViewer` reaches this through `React.lazy`, so a page that
|
|
6
|
+
* never shows an orbital never downloads molstar for it — which is the whole
|
|
7
|
+
* reason the two components are separate files.
|
|
8
|
+
*/
|
|
9
|
+
import { Button } from '@blueprintjs/core';
|
|
2
10
|
import { useEffect, useRef, useState } from 'react';
|
|
11
|
+
import { HelpTooltip } from "../../help/ui/HelpTooltip.js";
|
|
3
12
|
import { PHASE_PALETTES } from "../core/palette.js";
|
|
4
13
|
import { sampleInProcess } from "../core/sample.js";
|
|
5
14
|
import { DEFAULT_SPIN_SPEED } from "./camera.js";
|
|
@@ -10,19 +19,26 @@ import { createOrbitalViewer } from "./viewer.js";
|
|
|
10
19
|
* @returns The canvas, with a progress note while it samples.
|
|
11
20
|
*/
|
|
12
21
|
export function AtomicOrbitalCanvas(props) {
|
|
13
|
-
const { atomicNumber, orbitalId, palette = PHASE_PALETTES.textbook, resolution = DEFAULT_RESOLUTION, spinning = false, spinSpeed = DEFAULT_SPIN_SPEED, sample = sampleInProcess, onNodeRadii, onError, } = props;
|
|
22
|
+
const { atomicNumber, orbitalId, palette = PHASE_PALETTES.textbook, resolution = DEFAULT_RESOLUTION, axes: initialAxes = true, spinning = false, spinSpeed = DEFAULT_SPIN_SPEED, sample = sampleInProcess, onAxesChange, onNodeRadii, onError, } = props;
|
|
14
23
|
const containerRef = useRef(null);
|
|
15
24
|
const viewerRef = useRef(null);
|
|
16
25
|
const [drawn, setDrawn] = useState(null);
|
|
26
|
+
// How far the drawn surface reaches, and whether the frame is wanted around
|
|
27
|
+
// it. Both are read by the sampling effect, which finishes long after the
|
|
28
|
+
// render that started it; keeping them in refs is what lets the frame be
|
|
29
|
+
// switched on without re-sampling the orbital.
|
|
30
|
+
const reachRef = useRef(null);
|
|
31
|
+
const axesRef = useRef(initialAxes);
|
|
32
|
+
const [axes, setAxes] = useState(initialAxes);
|
|
17
33
|
// What the canvas is being asked to show. Comparing it with what it *is*
|
|
18
34
|
// showing gives the progress note without a state write on every prop change.
|
|
19
35
|
const wanted = `${atomicNumber}|${orbitalId}|${resolutionKey(resolution)}|${palette.id}`;
|
|
20
36
|
const busy = drawn !== wanted;
|
|
21
37
|
// Callbacks are read through refs so a caller passing an inline arrow does
|
|
22
38
|
// not re-sample the orbital on every render of its parent.
|
|
23
|
-
const callbacks = useRef({ onNodeRadii, onError });
|
|
39
|
+
const callbacks = useRef({ onAxesChange, onNodeRadii, onError });
|
|
24
40
|
useEffect(() => {
|
|
25
|
-
callbacks.current = { onNodeRadii, onError };
|
|
41
|
+
callbacks.current = { onAxesChange, onNodeRadii, onError };
|
|
26
42
|
});
|
|
27
43
|
// Created and disposed once per mount. React 19 runs this twice in
|
|
28
44
|
// development; `createOrbitalViewer` is synchronous so the first canvas is
|
|
@@ -57,7 +73,8 @@ export function AtomicOrbitalCanvas(props) {
|
|
|
57
73
|
positiveColour: palette.positive,
|
|
58
74
|
negativeColour: palette.negative,
|
|
59
75
|
});
|
|
60
|
-
|
|
76
|
+
reachRef.current = reach ?? null;
|
|
77
|
+
await viewer.refit(await fitAxes(viewer, reach, axesRef.current));
|
|
61
78
|
if (!cancelled)
|
|
62
79
|
setDrawn(wanted);
|
|
63
80
|
})
|
|
@@ -70,11 +87,58 @@ export function AtomicOrbitalCanvas(props) {
|
|
|
70
87
|
cancelled = true;
|
|
71
88
|
};
|
|
72
89
|
}, [atomicNumber, orbitalId, resolution, palette, sample, wanted]);
|
|
90
|
+
// Toggling the frame on an orbital already on screen: the field it was drawn
|
|
91
|
+
// from is unchanged, so nothing is re-sampled.
|
|
92
|
+
useEffect(() => {
|
|
93
|
+
axesRef.current = axes;
|
|
94
|
+
const viewer = viewerRef.current;
|
|
95
|
+
const reach = reachRef.current;
|
|
96
|
+
if (viewer === null || reach === null)
|
|
97
|
+
return;
|
|
98
|
+
void fitAxes(viewer, reach, axes).then((framed) => viewer.refit(framed));
|
|
99
|
+
}, [axes]);
|
|
73
100
|
useEffect(() => {
|
|
74
101
|
void viewerRef.current?.setSpin(spinning, spinSpeed);
|
|
75
102
|
}, [spinning, spinSpeed]);
|
|
76
|
-
return (
|
|
103
|
+
return (_jsxs("div", { ref: containerRef, style: CANVAS_STYLE, children: [busy && _jsx("div", { style: BUSY_STYLE, children: "Sampling\u2026" }), _jsxs("div", { style: CONTROLS_STYLE, children: [_jsx(HelpTooltip, { content: AXES_HELP, placement: "bottom", children: _jsx(Button, { variant: "minimal", size: "small", icon: "grid", active: axes, "aria-label": "Show the x, y, z axes", "aria-pressed": axes, onClick: () => {
|
|
104
|
+
setAxes(!axes);
|
|
105
|
+
callbacks.current.onAxesChange?.(!axes);
|
|
106
|
+
} }) }), _jsx(HelpTooltip, { content: RESET_HELP, placement: "bottom", children: _jsx(Button, { variant: "minimal", size: "small", icon: "zoom-to-fit", "aria-label": "Reset the view", onClick: () => {
|
|
107
|
+
void viewerRef.current?.resetView();
|
|
108
|
+
} }) })] })] }));
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Draw the cartesian frame around the orbital, or remove it.
|
|
112
|
+
* @param viewer - The viewer holding the canvas.
|
|
113
|
+
* @param reach - How far the drawn surface reaches, as `showOrbital` returned
|
|
114
|
+
* it.
|
|
115
|
+
* @param axes - Whether the frame is wanted.
|
|
116
|
+
* @returns What the camera has to fit: the frame reaches past the surface, so
|
|
117
|
+
* turning it on has to zoom out or the labels sit off screen.
|
|
118
|
+
*/
|
|
119
|
+
async function fitAxes(viewer, reach, axes) {
|
|
120
|
+
if (!axes) {
|
|
121
|
+
await viewer.hideAxes();
|
|
122
|
+
return reach;
|
|
123
|
+
}
|
|
124
|
+
if (reach === undefined)
|
|
125
|
+
return undefined;
|
|
126
|
+
return (await viewer.showAxes(reach)) ?? reach;
|
|
77
127
|
}
|
|
128
|
+
/** What the frame button says it is for. */
|
|
129
|
+
const AXES_HELP = {
|
|
130
|
+
title: 'Cartesian axes',
|
|
131
|
+
body: 'Draw x, y and z through the nucleus. The label names an orbital by where its lobes sit against them.',
|
|
132
|
+
example: {
|
|
133
|
+
code: '3d_yz',
|
|
134
|
+
note: 'four lobes between the y and z axes, none on either.',
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
/** What the reset button says it is for. */
|
|
138
|
+
const RESET_HELP = {
|
|
139
|
+
title: 'Reset the view',
|
|
140
|
+
body: 'Back to the angle and zoom the orbital opened on. A change of orbital keeps whatever view you have turned it to.',
|
|
141
|
+
};
|
|
78
142
|
/** Samples per edge; 56 resolves the radial node of a 3s in about 25 ms. */
|
|
79
143
|
const DEFAULT_RESOLUTION = 56;
|
|
80
144
|
/**
|
|
@@ -102,6 +166,19 @@ const CANVAS_STYLE = {
|
|
|
102
166
|
borderRadius: 3,
|
|
103
167
|
overflow: 'hidden',
|
|
104
168
|
};
|
|
169
|
+
/**
|
|
170
|
+
* The two controls the canvas owns: the frame, and the way back to the framing
|
|
171
|
+
* the orbital opened on — a change of orbital now keeps whatever angle and zoom
|
|
172
|
+
* the student is on.
|
|
173
|
+
*/
|
|
174
|
+
const CONTROLS_STYLE = {
|
|
175
|
+
position: 'absolute',
|
|
176
|
+
top: 4,
|
|
177
|
+
right: 4,
|
|
178
|
+
zIndex: 1,
|
|
179
|
+
display: 'flex',
|
|
180
|
+
gap: 2,
|
|
181
|
+
};
|
|
105
182
|
const BUSY_STYLE = {
|
|
106
183
|
position: 'absolute',
|
|
107
184
|
top: 8,
|
|
@@ -110,7 +187,7 @@ const BUSY_STYLE = {
|
|
|
110
187
|
padding: '3px 8px',
|
|
111
188
|
borderRadius: 3,
|
|
112
189
|
background: 'rgba(255, 255, 255, 0.85)',
|
|
113
|
-
color: '#5f6b7c',
|
|
190
|
+
color: 'var(--text-muted, #5f6b7c)',
|
|
114
191
|
fontSize: 11,
|
|
115
192
|
};
|
|
116
193
|
//# sourceMappingURL=AtomicOrbitalCanvas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AtomicOrbitalCanvas.js","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalCanvas.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"AtomicOrbitalCanvas.js","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalCanvas.tsx"],"names":[],"mappings":";AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA+B,CAAC;AAG5D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAsElD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAA+B;IAE/B,MAAM,EACJ,YAAY,EACZ,SAAS,EACT,OAAO,GAAG,cAAc,CAAC,QAAQ,EACjC,UAAU,GAAG,kBAAkB,EAC/B,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,kBAAkB,EAC9B,MAAM,GAAG,eAAe,EACxB,YAAY,EACZ,WAAW,EACX,OAAO,GACR,GAAG,KAAK,CAAC;IAEV,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,MAAM,CAAuB,IAAI,CAAC,CAAC;IACrD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,4EAA4E;IAC5E,0EAA0E;IAC1E,yEAAyE;IACzE,+CAA+C;IAC/C,MAAM,QAAQ,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAEpC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAE9C,yEAAyE;IACzE,8EAA8E;IAC9E,MAAM,MAAM,GAAG,GAAG,YAAY,IAAI,SAAS,IAAI,aAAa,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IACzF,MAAM,IAAI,GAAG,KAAK,KAAK,MAAM,CAAC;IAE9B,2EAA2E;IAC3E,2DAA2D;IAC3D,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;IACjE,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,CAAC,OAAO,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,mEAAmE;IACnE,2EAA2E;IAC3E,wDAAwD;IACxD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;QACvC,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO;QAC/B,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAC9C,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE;YACvC,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5B,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,UAAU,EAAE,CAAC;YACtB,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;YACzB,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;QACjC,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO;QAC5B,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,MAAM,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;aACjD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACrB,IAAI,SAAS;gBAAE,OAAO;YACtB,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE;gBAClE,cAAc,EAAE,OAAO,CAAC,QAAQ;gBAChC,cAAc,EAAE,OAAO,CAAC,QAAQ;aACjC,CAAC,CAAC;YACH,QAAQ,CAAC,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC;YACjC,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,SAAS;gBAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACxB,IAAI,SAAS;gBAAE,OAAO;YACtB,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,CACzB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACJ,CAAC,CAAC,CAAC;QACL,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAEnE,6EAA6E;IAC7E,+CAA+C;IAC/C,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;QACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;QAC/B,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO;QAC9C,KAAK,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3E,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAE1B,OAAO,CACL,eAAK,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,aACxC,IAAI,IAAI,cAAK,KAAK,EAAE,UAAU,+BAAiB,EAChD,eAAK,KAAK,EAAE,cAAc,aACxB,KAAC,WAAW,IAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAC,QAAQ,YACjD,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,IAAI,gBACD,uBAAuB,kBACpB,IAAI,EAClB,OAAO,EAAE,GAAG,EAAE;gCACZ,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;gCACf,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;4BAC1C,CAAC,GACD,GACU,EACd,KAAC,WAAW,IAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAC,QAAQ,YAClD,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,aAAa,gBACP,gBAAgB,EAC3B,OAAO,EAAE,GAAG,EAAE;gCACZ,KAAK,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;4BACtC,CAAC,GACD,GACU,IACV,IACF,CACP,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,OAAO,CACpB,MAAqB,EACrB,KAAyB,EACzB,IAAa;IAEb,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC;AACjD,CAAC;AAED,4CAA4C;AAC5C,MAAM,SAAS,GAAgB;IAC7B,KAAK,EAAE,gBAAgB;IACvB,IAAI,EAAE,sGAAsG;IAC5G,OAAO,EAAE;QACP,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,sDAAsD;KAC7D;CACF,CAAC;AAEF,4CAA4C;AAC5C,MAAM,UAAU,GAAgB;IAC9B,KAAK,EAAE,gBAAgB;IACvB,IAAI,EAAE,kHAAkH;CACzH,CAAC;AAEF,4EAA4E;AAC5E,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B;;;;GAIG;AACH,SAAS,aAAa,CAAC,UAAqC;IAC1D,OAAO,OAAO,UAAU,KAAK,QAAQ;QACnC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;QACpB,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,YAAY,GAAkB;IAClC,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,iBAAiB;IAC3B,WAAW,EAAE,OAAO;IACpB,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,GAAG;IACd,YAAY,EAAE,CAAC;IACf,QAAQ,EAAE,QAAQ;CACnB,CAAC;AAEF;;;;GAIG;AACH,MAAM,cAAc,GAAkB;IACpC,QAAQ,EAAE,UAAU;IACpB,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,MAAM;IACf,GAAG,EAAE,CAAC;CACP,CAAC;AAEF,MAAM,UAAU,GAAkB;IAChC,QAAQ,EAAE,UAAU;IACpB,GAAG,EAAE,CAAC;IACN,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,2BAA2B;IACvC,KAAK,EAAE,4BAA4B;IACnC,QAAQ,EAAE,EAAE;CACb,CAAC"}
|
|
@@ -38,6 +38,19 @@ export interface AtomicOrbitalViewerProps {
|
|
|
38
38
|
* @default 56
|
|
39
39
|
*/
|
|
40
40
|
resolution?: number | ResolutionLimits;
|
|
41
|
+
/**
|
|
42
|
+
* Whether the labelled x, y, z frame is drawn through the nucleus when the
|
|
43
|
+
* canvas opens — it is what tells a `3d_xz` from a `3d_yz`. The button in the
|
|
44
|
+
* canvas's corner flips it from there.
|
|
45
|
+
* @default true
|
|
46
|
+
*/
|
|
47
|
+
axes?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Called when the student flips the frame, with its new state — so a site can
|
|
50
|
+
* persist the choice and pass it back as `axes`.
|
|
51
|
+
* @default undefined
|
|
52
|
+
*/
|
|
53
|
+
onAxesChange?: (axes: boolean) => void;
|
|
41
54
|
/**
|
|
42
55
|
* Whether the scene turns on its own.
|
|
43
56
|
* @default false
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AtomicOrbitalViewer.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalViewer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAQxD,4CAA4C;AAC5C,MAAM,WAAW,wBAAwB;IACvC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,SAAS,CAAC;CACjE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,YAAY,CAkCd"}
|
|
1
|
+
{"version":3,"file":"AtomicOrbitalViewer.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalViewer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAQxD,4CAA4C;AAC5C,MAAM,WAAW,wBAAwB;IACvC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,SAAS,CAAC;CACjE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,YAAY,CAkCd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AtomicOrbitalViewer.js","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalViewer.tsx"],"names":[],"mappings":";AAkBA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AASjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;IAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,0BAA2B,CAAC,CAAC;IACzD,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACjD,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"AtomicOrbitalViewer.js","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalViewer.tsx"],"names":[],"mappings":";AAkBA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AASjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;IAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,0BAA2B,CAAC,CAAC;IACzD,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACjD,CAAC,CAAC,CAAC;AAsEH;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAA+B;IAE/B,MAAM,EACJ,QAAQ,GAAG,wBAAwB,EACnC,iBAAiB,EACjB,GAAG,MAAM,EACV,GAAG,KAAK,CAAC;IACV,MAAM,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IACrD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAE5D,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QAC1B,OAAO,CACL,cAAK,KAAK,EAAE,UAAU,YACnB,iBAAiB,EAAE,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,OAAO,GAClD,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,KAAK,EAAE,UAAU,aACpB,KAAC,QAAQ,IAAC,QAAQ,EAAE,cAAK,KAAK,EAAE,UAAU,YAAG,QAAQ,GAAO,YAC1D,KAAC,mBAAmB,OACd,MAAM,EACV,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;wBACnB,UAAU,CAAC,OAAO,CAAC,CAAC;oBACtB,CAAC,GACD,GACO,EACV,OAAO,KAAK,IAAI,IAAI,CACnB,eAAK,KAAK,EAAE,aAAa,kDACW,OAAO,IACrC,CACP,IACG,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAkB;IAChC,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;IACvB,GAAG,EAAE,CAAC;IACN,QAAQ,EAAE,CAAC;CACZ,CAAC;AAEF,MAAM,UAAU,GAAkB;IAChC,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,QAAQ;IACxB,SAAS,EAAE,GAAG;IACd,OAAO,EAAE,EAAE;IACX,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,kBAAkB;IAC9B,KAAK,EAAE,4BAA4B;IACnC,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,QAAQ;CACpB,CAAC;AAEF,MAAM,aAAa,GAAkB;IACnC,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,EAAE;CACb,CAAC"}
|
|
@@ -33,6 +33,21 @@ export declare function resetCamera(plugin: PluginContext, durationMs?: number):
|
|
|
33
33
|
* @param durationMs - Transition length. Pass 0 for an instant jump.
|
|
34
34
|
*/
|
|
35
35
|
export declare function frameOrbital(plugin: PluginContext, orbitalRadius?: number, durationMs?: number): void;
|
|
36
|
+
/**
|
|
37
|
+
* Keep the view the student has set, and rescale it for an orbital of a
|
|
38
|
+
* different extent.
|
|
39
|
+
*
|
|
40
|
+
* Every atomic orbital is drawn at one canonical size, so the two extents are
|
|
41
|
+
* normally equal and the camera does not move at all: clicking through a shell
|
|
42
|
+
* keeps the rotation and the zoom instead of throwing them away. When they do
|
|
43
|
+
* differ, the offset from the target and the radius are multiplied by the same
|
|
44
|
+
* factor, which keeps the zoom *relative* to the orbital.
|
|
45
|
+
* @param plugin - The molstar context.
|
|
46
|
+
* @param previousRadius - Extent the camera is currently fitted to.
|
|
47
|
+
* @param orbitalRadius - Extent to fit now.
|
|
48
|
+
* @param durationMs - Transition length. Pass 0 for an instant jump.
|
|
49
|
+
*/
|
|
50
|
+
export declare function refitOrbital(plugin: PluginContext, previousRadius: number, orbitalRadius: number, durationMs?: number): void;
|
|
36
51
|
/**
|
|
37
52
|
* Turn the automatic spin on or off.
|
|
38
53
|
* @param plugin - The molstar context.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/camera.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAYtC;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,aAAa,EACrB,UAAU,SAA0B,GACnC,IAAI,CAWN;AAkBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,UAAU,SAA0B,GACnC,IAAI,
|
|
1
|
+
{"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/camera.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAYtC;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,aAAa,EACrB,UAAU,SAA0B,GACnC,IAAI,CAWN;AAkBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,UAAU,SAA0B,GACnC,IAAI,CA6BN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,UAAU,SAA0B,GACnC,IAAI,CA0BN;AAmCD;;;;;GAKG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,OAAO,EACjB,KAAK,SAAqB,GACzB,IAAI,CAQN"}
|
package/lib/orbital/ui/camera.js
CHANGED
|
@@ -85,8 +85,76 @@ export function frameOrbital(plugin, orbitalRadius, durationMs = DEFAULT_CAMERA_
|
|
|
85
85
|
position: Vec3.add(Vec3.zero(), centre, offset),
|
|
86
86
|
up: Vec3.clone(ORBITAL_VIEW_UP),
|
|
87
87
|
radius,
|
|
88
|
+
...radiusMaxOf(canvas3d),
|
|
88
89
|
}, durationMs);
|
|
89
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Keep the view the student has set, and rescale it for an orbital of a
|
|
93
|
+
* different extent.
|
|
94
|
+
*
|
|
95
|
+
* Every atomic orbital is drawn at one canonical size, so the two extents are
|
|
96
|
+
* normally equal and the camera does not move at all: clicking through a shell
|
|
97
|
+
* keeps the rotation and the zoom instead of throwing them away. When they do
|
|
98
|
+
* differ, the offset from the target and the radius are multiplied by the same
|
|
99
|
+
* factor, which keeps the zoom *relative* to the orbital.
|
|
100
|
+
* @param plugin - The molstar context.
|
|
101
|
+
* @param previousRadius - Extent the camera is currently fitted to.
|
|
102
|
+
* @param orbitalRadius - Extent to fit now.
|
|
103
|
+
* @param durationMs - Transition length. Pass 0 for an instant jump.
|
|
104
|
+
*/
|
|
105
|
+
export function refitOrbital(plugin, previousRadius, orbitalRadius, durationMs = DEFAULT_CAMERA_DURATION) {
|
|
106
|
+
const canvas3d = plugin.canvas3d;
|
|
107
|
+
if (canvas3d === undefined)
|
|
108
|
+
return;
|
|
109
|
+
const scale = orbitalRadius / previousRadius;
|
|
110
|
+
if (!Number.isFinite(scale) || scale <= 0) {
|
|
111
|
+
frameOrbital(plugin, orbitalRadius, durationMs);
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
// The box a sampled orbital lives in changes with the orbital, and molstar
|
|
115
|
+
// only tracks that for a camera it also reframes, which this one is not.
|
|
116
|
+
const radiusMax = radiusMaxOf(canvas3d);
|
|
117
|
+
if (scale === 1) {
|
|
118
|
+
canvas3d.camera.setState(radiusMax, 0);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
const { target, position, radius } = canvas3d.camera.state;
|
|
122
|
+
const offset = Vec3.sub(Vec3.zero(), position, target);
|
|
123
|
+
Vec3.scale(offset, offset, scale);
|
|
124
|
+
canvas3d.camera.setState({
|
|
125
|
+
position: Vec3.add(Vec3.zero(), target, offset),
|
|
126
|
+
radius: radius * scale,
|
|
127
|
+
...radiusMax,
|
|
128
|
+
}, durationMs);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* The far plane's share of a camera state, left out when the scene cannot be
|
|
132
|
+
* measured yet.
|
|
133
|
+
* @param canvas3d - The canvas whose scene to measure.
|
|
134
|
+
* @returns `{ radiusMax }`, or an empty object to keep the camera's own value.
|
|
135
|
+
*/
|
|
136
|
+
function radiusMaxOf(canvas3d) {
|
|
137
|
+
const radiusMax = sceneRadius(canvas3d);
|
|
138
|
+
return radiusMax > 0 ? { radiusMax } : {};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* How far the whole scene reaches, as molstar measures it for its near and far
|
|
142
|
+
* planes.
|
|
143
|
+
*
|
|
144
|
+
* `boundingSphere` covers the whole scene but is only recomputed on a draw, so
|
|
145
|
+
* in the moment after a representation was added it still reads 0 — and a zero
|
|
146
|
+
* `radiusMax` collapses the near and far planes onto the target, leaving the
|
|
147
|
+
* orbital sliced into a few thin arcs. The visible sphere is current there, so
|
|
148
|
+
* it stands in.
|
|
149
|
+
* @param canvas3d - The canvas whose scene to measure.
|
|
150
|
+
* @returns The radius, in scene units; 0 when neither sphere is ready.
|
|
151
|
+
*/
|
|
152
|
+
function sceneRadius(canvas3d) {
|
|
153
|
+
const radius = canvas3d.boundingSphere.radius > 0
|
|
154
|
+
? canvas3d.boundingSphere.radius
|
|
155
|
+
: canvas3d.boundingSphereVisible.radius;
|
|
156
|
+
return radius * canvas3d.props.sceneRadiusFactor;
|
|
157
|
+
}
|
|
90
158
|
/**
|
|
91
159
|
* Turn the automatic spin on or off.
|
|
92
160
|
* @param plugin - The molstar context.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"camera.js","sourceRoot":"","sources":["../../../src/orbital/ui/camera.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,wCAAwC,CAAC;AAG9D,8EAA8E;AAC9E,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAEtC;;;;;;;GAOG;AACH,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,MAAqB,EACrB,UAAU,GAAG,uBAAuB;IAEpC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IACrD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IACD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE;QACxC,WAAW,EAAE,KAAK,CAAC,MAAM,GAAG,cAAc;QAC1C,SAAS,EAAE,GAAG;QACd,UAAU;KACX,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAEvD;;;GAGG;AACH,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAE7C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAqB,EACrB,aAAsB,EACtB,UAAU,GAAG,uBAAuB;IAEpC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACjC,MAAM,KAAK,GAAG,QAAQ,EAAE,qBAAqB,CAAC;IAC9C,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACvE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GACV,aAAa,KAAK,SAAS,IAAI,aAAa,GAAG,CAAC;QAC9C,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC;QACtC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAC9B,IAAI,CAAC,IAAI,EAAE,EACX,mBAAmB,EACnB,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAC1C,CAAC;IACF,0EAA0E;IAC1E,2EAA2E;IAC3E,MAAM,MAAM,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACxE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CACtB;QACE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAC1B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC;QAC/C,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;QAC/B,MAAM;
|
|
1
|
+
{"version":3,"file":"camera.js","sourceRoot":"","sources":["../../../src/orbital/ui/camera.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderVolume.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/renderVolume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAMvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D,yDAAyD;AACzD,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,cAAc,EACvB,KAAK,GAAE,WAAgB,GACtB,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"renderVolume.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/renderVolume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAMvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D,yDAAyD;AACzD,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,cAAc,EACvB,KAAK,GAAE,WAAgB,GACtB,OAAO,CAAC,MAAM,CAAC,CAqDjB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAQ9D"}
|
|
@@ -49,7 +49,14 @@ export async function renderSampledVolume(plugin, field, contour, style = {}) {
|
|
|
49
49
|
maybeSurface(plugin, volume, field.min <= -cutoff ? -cutoff : undefined, relativeIsovalue, { colour: negativeColour, alpha }),
|
|
50
50
|
]);
|
|
51
51
|
const drawn = surfaces.filter((surface) => surface !== null);
|
|
52
|
-
|
|
52
|
+
// Added to whatever is already recorded rather than replacing it, so the
|
|
53
|
+
// record is every surface on the canvas and the next clear can take them all
|
|
54
|
+
// away. Overwriting it would strand any pair that reached the canvas without
|
|
55
|
+
// being the last one recorded, and a stranded pair is on screen for good.
|
|
56
|
+
representations.set(plugin, [
|
|
57
|
+
...(representations.get(plugin) ?? []),
|
|
58
|
+
...drawn,
|
|
59
|
+
]);
|
|
53
60
|
for (const representation of drawn)
|
|
54
61
|
canvas3d.add(representation);
|
|
55
62
|
// add() only queues; nothing appears until the queue is committed.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderVolume.js","sourceRoot":"","sources":["../../../src/orbital/ui/renderVolume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,gCAAgC,EAAE,MAAM,sEAAsE,CAAC;AAExH,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAK5D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AA2B3D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAqB,EACrB,KAAkB,EAClB,OAAuB,EACvB,QAAqB,EAAE;IAEvB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACjC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,EACJ,cAAc,GAAG,SAAS,EAC1B,cAAc,GAAG,SAAS,EAC1B,gBAAgB,GAAG,CAAC,EACpB,KAAK,GAAG,IAAI,GACb,GAAG,KAAK,CAAC;IACV,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE3B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAClC,6EAA6E;IAC7E,4EAA4E;IAC5E,wEAAwE;IACxE,2EAA2E;IAC3E,4EAA4E;IAC5E,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,8EAA8E;IAC9E,sDAAsD;IACtD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACjC,YAAY,CACV,MAAM,EACN,MAAM,EACN,KAAK,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACxC,gBAAgB,EAChB,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,CAClC;QACD,YAAY,CACV,MAAM,EACN,MAAM,EACN,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC1C,gBAAgB,EAChB,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,CAClC;KACF,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAC3B,CAAC,OAAO,EAAiC,EAAE,CAAC,OAAO,KAAK,IAAI,CAC7D,CAAC;IACF,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"renderVolume.js","sourceRoot":"","sources":["../../../src/orbital/ui/renderVolume.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Running asynchronous work one piece at a time.
|
|
3
|
+
*
|
|
4
|
+
* Everything the viewer does mutates one canvas, and it does it across an
|
|
5
|
+
* `await`: replacing an orbital removes the surfaces on screen before it has
|
|
6
|
+
* finished building the new ones. Two of those interleaved both add their own
|
|
7
|
+
* pair and only one of them is remembered, so the atom ends up wearing several
|
|
8
|
+
* orbitals at once and the ones nobody recorded can never be removed again.
|
|
9
|
+
*/
|
|
10
|
+
/** Runs what it is given after everything handed to it before. */
|
|
11
|
+
export interface SerialRunner {
|
|
12
|
+
/**
|
|
13
|
+
* Queue `task`, and resolve to what it returns.
|
|
14
|
+
* @param task - The work to run once the queue reaches it.
|
|
15
|
+
* @returns What `task` resolved to; its rejection reaches this caller alone.
|
|
16
|
+
*/
|
|
17
|
+
run: <Result>(task: () => Promise<Result>) => Promise<Result>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* A queue of one.
|
|
21
|
+
* @returns The runner. A task that throws is reported to whoever queued it and
|
|
22
|
+
* never stalls the tasks behind it.
|
|
23
|
+
*/
|
|
24
|
+
export declare function createSerialRunner(): SerialRunner;
|
|
25
|
+
//# sourceMappingURL=serial.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serial.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/serial.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,kEAAkE;AAClE,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CASjD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Running asynchronous work one piece at a time.
|
|
3
|
+
*
|
|
4
|
+
* Everything the viewer does mutates one canvas, and it does it across an
|
|
5
|
+
* `await`: replacing an orbital removes the surfaces on screen before it has
|
|
6
|
+
* finished building the new ones. Two of those interleaved both add their own
|
|
7
|
+
* pair and only one of them is remembered, so the atom ends up wearing several
|
|
8
|
+
* orbitals at once and the ones nobody recorded can never be removed again.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* A queue of one.
|
|
12
|
+
* @returns The runner. A task that throws is reported to whoever queued it and
|
|
13
|
+
* never stalls the tasks behind it.
|
|
14
|
+
*/
|
|
15
|
+
export function createSerialRunner() {
|
|
16
|
+
let tail = Promise.resolve();
|
|
17
|
+
return {
|
|
18
|
+
run: (task) => {
|
|
19
|
+
const result = tail.then(task);
|
|
20
|
+
tail = result.catch(() => undefined);
|
|
21
|
+
return result;
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=serial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serial.js","sourceRoot":"","sources":["../../../src/orbital/ui/serial.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAYH;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,IAAI,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/C,OAAO;QACL,GAAG,EAAE,CAAS,IAA2B,EAAmB,EAAE;YAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACrC,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -86,6 +86,29 @@ export declare class OrbitalViewer {
|
|
|
86
86
|
* @returns Nothing, once the camera has been set.
|
|
87
87
|
*/
|
|
88
88
|
frame(orbitalRadius?: number, durationMs?: number): Promise<void>;
|
|
89
|
+
/**
|
|
90
|
+
* Fit a newly drawn orbital without disturbing the view.
|
|
91
|
+
*
|
|
92
|
+
* The first call frames the orbital, since there is no view to keep yet.
|
|
93
|
+
* Later ones leave the rotation and the zoom the student set and only rescale
|
|
94
|
+
* them when the drawn extent changed — clicking through a shell must not
|
|
95
|
+
* throw their view away.
|
|
96
|
+
* @param orbitalRadius - Extent of the drawn surface, as `showOrbital`
|
|
97
|
+
* returned it.
|
|
98
|
+
* @param durationMs - Transition length; 0 jumps.
|
|
99
|
+
* @returns Nothing, once the camera has been set.
|
|
100
|
+
*/
|
|
101
|
+
refit(orbitalRadius?: number, durationMs?: number): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* Put the camera back where the orbital was first framed from.
|
|
104
|
+
*
|
|
105
|
+
* The counterpart of `refit`: since a view is now kept across a change of
|
|
106
|
+
* orbital, a student who has turned the atom into an unreadable angle needs
|
|
107
|
+
* one way back.
|
|
108
|
+
* @param durationMs - Transition length; 0 jumps.
|
|
109
|
+
* @returns Nothing, once the camera has been set.
|
|
110
|
+
*/
|
|
111
|
+
resetView(durationMs?: number): Promise<void>;
|
|
89
112
|
/**
|
|
90
113
|
* Turn the automatic spin on or off.
|
|
91
114
|
* @param spinning - Whether the scene should keep turning.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewer.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/viewer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"viewer.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/viewer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAS1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIrD,+CAA+C;AAC/C,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,WAAW,EACtB,OAAO,GAAE,oBAAyB,GACjC,aAAa,CAEf;AAED;;;;;GAKG;AACH,qBAAa,aAAa;;IASxB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAElB,SAAS,EAAE,WAAW,EAAE,OAAO,GAAE,oBAAyB;IA0BtE;;;OAGG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;;;;;OAOG;IACH,WAAW,CACT,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,cAAc,EACvB,KAAK,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAM9B;;;;;;;;OAQG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIvE;;;OAGG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAMzB;;;OAGG;IACH,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;;;;;;OAOG;IACH,KAAK,CACH,aAAa,CAAC,EAAE,MAAM,EACtB,UAAU,SAA0B,GACnC,OAAO,CAAC,IAAI,CAAC;IAOhB;;;;;;;;;;;OAWG;IACH,KAAK,CACH,aAAa,CAAC,EAAE,MAAM,EACtB,UAAU,SAA0B,GACnC,OAAO,CAAC,IAAI,CAAC;IAWhB;;;;;;;;OAQG;IACH,SAAS,CAAC,UAAU,SAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,SAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrE,kEAAkE;IAClE,YAAY,IAAI,IAAI;IAKpB;;;OAGG;IACH,OAAO,IAAI,IAAI;CAqChB"}
|