react-cheminfo 0.37.0 → 0.39.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 +77 -1
- package/bin/check-seo.mjs +43 -1
- package/lib/chart/ui/Axes.d.ts +19 -0
- package/lib/chart/ui/Axes.d.ts.map +1 -1
- package/lib/chart/ui/Axes.js +25 -5
- package/lib/chart/ui/Axes.js.map +1 -1
- package/lib/chrome/ui/NavMenuButton.d.ts.map +1 -1
- package/lib/chrome/ui/NavMenuButton.js +41 -11
- package/lib/chrome/ui/NavMenuButton.js.map +1 -1
- package/lib/chrome/ui/SiteHeader.js +24 -1
- package/lib/chrome/ui/SiteHeader.js.map +1 -1
- package/lib/chrome/ui/navItem.d.ts +7 -0
- package/lib/chrome/ui/navItem.d.ts.map +1 -1
- package/lib/chrome/ui/navItem.js.map +1 -1
- package/lib/citation/ui/entries.d.ts.map +1 -1
- package/lib/citation/ui/entries.js +6 -1
- package/lib/citation/ui/entries.js.map +1 -1
- package/lib/clipboard/ui/ClickToCopy.d.ts +11 -0
- package/lib/clipboard/ui/ClickToCopy.d.ts.map +1 -1
- package/lib/clipboard/ui/ClickToCopy.js +28 -10
- package/lib/clipboard/ui/ClickToCopy.js.map +1 -1
- package/lib/clipboard/ui/CopyButton.d.ts +2 -1
- package/lib/clipboard/ui/CopyButton.d.ts.map +1 -1
- package/lib/clipboard/ui/CopyButton.js +2 -1
- package/lib/clipboard/ui/CopyButton.js.map +1 -1
- package/lib/clipboard/ui/CopyableValue.d.ts +24 -4
- package/lib/clipboard/ui/CopyableValue.d.ts.map +1 -1
- package/lib/clipboard/ui/CopyableValue.js +35 -3
- package/lib/clipboard/ui/CopyableValue.js.map +1 -1
- package/lib/clipboard/ui/index.d.ts +1 -1
- package/lib/clipboard/ui/index.d.ts.map +1 -1
- package/lib/clipboard/ui/index.js.map +1 -1
- package/lib/confirm/ui/ConfirmButton.d.ts.map +1 -1
- package/lib/confirm/ui/ConfirmButton.js +2 -1
- package/lib/confirm/ui/ConfirmButton.js.map +1 -1
- package/lib/core.d.ts +1 -0
- package/lib/core.d.ts.map +1 -1
- package/lib/core.js +1 -0
- package/lib/core.js.map +1 -1
- package/lib/delimited/ui/TableDataButton.d.ts.map +1 -1
- package/lib/delimited/ui/TableDataButton.js +2 -1
- package/lib/delimited/ui/TableDataButton.js.map +1 -1
- package/lib/download/core/figureSvg.d.ts.map +1 -1
- package/lib/download/core/figureSvg.js +37 -12
- package/lib/download/core/figureSvg.js.map +1 -1
- package/lib/help/ui/HelpToolbarButton.d.ts.map +1 -1
- package/lib/help/ui/HelpToolbarButton.js +2 -1
- package/lib/help/ui/HelpToolbarButton.js.map +1 -1
- package/lib/i18n/core/chromeCatalog.d.ts +1 -1
- package/lib/i18n/core/chromeCatalog.d.ts.map +1 -1
- package/lib/locales/de.json +48 -5
- package/lib/locales/en.json +48 -5
- package/lib/locales/es.json +48 -5
- package/lib/locales/fr.json +48 -5
- package/lib/locales/it.json +48 -5
- package/lib/number/core/index.d.ts +1 -1
- package/lib/number/core/index.d.ts.map +1 -1
- package/lib/number/core/index.js +1 -1
- package/lib/number/core/index.js.map +1 -1
- package/lib/number/core/numberText.d.ts +13 -0
- package/lib/number/core/numberText.d.ts.map +1 -1
- package/lib/number/core/numberText.js +20 -0
- package/lib/number/core/numberText.js.map +1 -1
- package/lib/number/ui/NumberInput.js +1 -1
- package/lib/number/ui/NumberInput.js.map +1 -1
- package/lib/overlay/ui/OverlayIconButton.d.ts.map +1 -1
- package/lib/overlay/ui/OverlayIconButton.js +1 -1
- package/lib/overlay/ui/OverlayIconButton.js.map +1 -1
- package/lib/panel/ui/ClearButton.d.ts.map +1 -1
- package/lib/panel/ui/ClearButton.js +1 -1
- package/lib/panel/ui/ClearButton.js.map +1 -1
- package/lib/pedagogy/core/inlineMarks.d.ts +9 -5
- package/lib/pedagogy/core/inlineMarks.d.ts.map +1 -1
- package/lib/pedagogy/core/inlineMarks.js +14 -6
- package/lib/pedagogy/core/inlineMarks.js.map +1 -1
- package/lib/pedagogy/ui/GlossaryDefinition.d.ts +4 -10
- package/lib/pedagogy/ui/GlossaryDefinition.d.ts.map +1 -1
- package/lib/pedagogy/ui/GlossaryDefinition.js +7 -7
- package/lib/pedagogy/ui/GlossaryDefinition.js.map +1 -1
- package/lib/pedagogy/ui/GlossaryIndex.d.ts.map +1 -1
- package/lib/pedagogy/ui/GlossaryIndex.js +1 -1
- package/lib/pedagogy/ui/GlossaryIndex.js.map +1 -1
- package/lib/pedagogy/ui/GlossaryProvider.d.ts +7 -0
- package/lib/pedagogy/ui/GlossaryProvider.d.ts.map +1 -1
- package/lib/pedagogy/ui/GlossaryProvider.js +3 -2
- package/lib/pedagogy/ui/GlossaryProvider.js.map +1 -1
- package/lib/pedagogy/ui/GlossaryText.d.ts +7 -2
- package/lib/pedagogy/ui/GlossaryText.d.ts.map +1 -1
- package/lib/pedagogy/ui/GlossaryText.js +3 -2
- package/lib/pedagogy/ui/GlossaryText.js.map +1 -1
- package/lib/pedagogy/ui/InlineText.d.ts +8 -2
- package/lib/pedagogy/ui/InlineText.d.ts.map +1 -1
- package/lib/pedagogy/ui/InlineText.js +7 -2
- package/lib/pedagogy/ui/InlineText.js.map +1 -1
- package/lib/pedagogy/ui/ReferenceSectionBlock.d.ts +4 -1
- package/lib/pedagogy/ui/ReferenceSectionBlock.d.ts.map +1 -1
- package/lib/pedagogy/ui/ReferenceSectionBlock.js +2 -1
- package/lib/pedagogy/ui/ReferenceSectionBlock.js.map +1 -1
- package/lib/pedagogy/ui/SyntaxTooltip.d.ts.map +1 -1
- package/lib/pedagogy/ui/SyntaxTooltip.js +11 -10
- package/lib/pedagogy/ui/SyntaxTooltip.js.map +1 -1
- package/lib/pedagogy/ui/TutorialStepStrip.d.ts.map +1 -1
- package/lib/pedagogy/ui/TutorialStepStrip.js +18 -4
- package/lib/pedagogy/ui/TutorialStepStrip.js.map +1 -1
- package/lib/pedagogy/ui/glossaryContext.d.ts +7 -0
- package/lib/pedagogy/ui/glossaryContext.d.ts.map +1 -1
- package/lib/pedagogy/ui/glossaryContext.js.map +1 -1
- package/lib/pedagogy/ui/index.d.ts +1 -1
- package/lib/pedagogy/ui/index.d.ts.map +1 -1
- package/lib/pedagogy/ui/inlineSegments.d.ts +5 -0
- package/lib/pedagogy/ui/inlineSegments.d.ts.map +1 -1
- package/lib/pedagogy/ui/inlineSegments.js +2 -0
- package/lib/pedagogy/ui/inlineSegments.js.map +1 -1
- package/lib/pedagogy/ui/pedagogyStyle.d.ts +8 -9
- package/lib/pedagogy/ui/pedagogyStyle.d.ts.map +1 -1
- package/lib/pedagogy/ui/pedagogyStyle.js +10 -18
- package/lib/pedagogy/ui/pedagogyStyle.js.map +1 -1
- package/lib/range/core/index.d.ts +4 -0
- package/lib/range/core/index.d.ts.map +1 -0
- package/lib/range/core/index.js +3 -0
- package/lib/range/core/index.js.map +1 -0
- package/lib/range/core/rangeBounds.d.ts +79 -0
- package/lib/range/core/rangeBounds.d.ts.map +1 -0
- package/lib/range/core/rangeBounds.js +110 -0
- package/lib/range/core/rangeBounds.js.map +1 -0
- package/lib/range/core/rangeHistogram.d.ts +13 -0
- package/lib/range/core/rangeHistogram.d.ts.map +1 -0
- package/lib/range/core/rangeHistogram.js +39 -0
- package/lib/range/core/rangeHistogram.js.map +1 -0
- package/lib/range/ui/RangeHistogram.d.ts +20 -0
- package/lib/range/ui/RangeHistogram.d.ts.map +1 -0
- package/lib/range/ui/RangeHistogram.js +18 -0
- package/lib/range/ui/RangeHistogram.js.map +1 -0
- package/lib/range/ui/RangeSlider.d.ts +77 -0
- package/lib/range/ui/RangeSlider.d.ts.map +1 -0
- package/lib/range/ui/RangeSlider.js +60 -0
- package/lib/range/ui/RangeSlider.js.map +1 -0
- package/lib/range/ui/RangeValue.d.ts +41 -0
- package/lib/range/ui/RangeValue.d.ts.map +1 -0
- package/lib/range/ui/RangeValue.js +73 -0
- package/lib/range/ui/RangeValue.js.map +1 -0
- package/lib/range/ui/index.d.ts +3 -0
- package/lib/range/ui/index.d.ts.map +1 -0
- package/lib/range/ui/index.js +2 -0
- package/lib/range/ui/index.js.map +1 -0
- package/lib/seo/core/documentMeta.d.ts +16 -0
- package/lib/seo/core/documentMeta.d.ts.map +1 -1
- package/lib/seo/core/documentMeta.js +18 -0
- package/lib/seo/core/documentMeta.js.map +1 -1
- package/lib/seo/core/index.d.ts +3 -1
- package/lib/seo/core/index.d.ts.map +1 -1
- package/lib/seo/core/index.js +2 -1
- package/lib/seo/core/index.js.map +1 -1
- package/lib/seo/core/noscript.d.ts +8 -0
- package/lib/seo/core/noscript.d.ts.map +1 -1
- package/lib/seo/core/noscript.js +10 -3
- package/lib/seo/core/noscript.js.map +1 -1
- package/lib/seo/core/pageMeta.d.ts +10 -2
- package/lib/seo/core/pageMeta.d.ts.map +1 -1
- package/lib/seo/core/pageMeta.js +12 -3
- package/lib/seo/core/pageMeta.js.map +1 -1
- package/lib/seo/core/plainDescription.d.ts +2 -2
- package/lib/seo/core/plainDescription.js +5 -2
- package/lib/seo/core/plainDescription.js.map +1 -1
- package/lib/seo/core/siteFiles.d.ts +32 -3
- package/lib/seo/core/siteFiles.d.ts.map +1 -1
- package/lib/seo/core/siteFiles.js +13 -4
- package/lib/seo/core/siteFiles.js.map +1 -1
- package/lib/seo/core/startDocumentMeta.js +8 -7
- package/lib/seo/core/startDocumentMeta.js.map +1 -1
- package/lib/seo/vite/prerender.d.ts +26 -4
- package/lib/seo/vite/prerender.d.ts.map +1 -1
- package/lib/seo/vite/prerender.js +100 -30
- package/lib/seo/vite/prerender.js.map +1 -1
- package/lib/share/core/devices.d.ts +41 -0
- package/lib/share/core/devices.d.ts.map +1 -0
- package/lib/share/core/devices.js +58 -0
- package/lib/share/core/devices.js.map +1 -0
- package/lib/share/core/index.d.ts +4 -0
- package/lib/share/core/index.d.ts.map +1 -1
- package/lib/share/core/index.js +2 -0
- package/lib/share/core/index.js.map +1 -1
- package/lib/share/core/regions.d.ts +43 -0
- package/lib/share/core/regions.d.ts.map +1 -0
- package/lib/share/core/regions.js +71 -0
- package/lib/share/core/regions.js.map +1 -0
- package/lib/share/ui/HiddenPartsProvider.d.ts.map +1 -1
- package/lib/share/ui/HiddenPartsProvider.js +4 -1
- package/lib/share/ui/HiddenPartsProvider.js.map +1 -1
- package/lib/share/ui/PagePart.d.ts.map +1 -1
- package/lib/share/ui/PagePart.js +10 -1
- package/lib/share/ui/PagePart.js.map +1 -1
- package/lib/share/ui/ShareButton.d.ts.map +1 -1
- package/lib/share/ui/ShareButton.js +3 -4
- package/lib/share/ui/ShareButton.js.map +1 -1
- package/lib/share/ui/ShareConfigOptions.d.ts +6 -1
- package/lib/share/ui/ShareConfigOptions.d.ts.map +1 -1
- package/lib/share/ui/ShareConfigOptions.js +6 -13
- package/lib/share/ui/ShareConfigOptions.js.map +1 -1
- package/lib/share/ui/ShareDialog.d.ts +14 -0
- package/lib/share/ui/ShareDialog.d.ts.map +1 -1
- package/lib/share/ui/ShareDialog.js +3 -3
- package/lib/share/ui/ShareDialog.js.map +1 -1
- package/lib/share/ui/ShareDialogContent.d.ts +2 -2
- package/lib/share/ui/ShareDialogContent.d.ts.map +1 -1
- package/lib/share/ui/ShareDialogContent.js +36 -30
- package/lib/share/ui/ShareDialogContent.js.map +1 -1
- package/lib/share/ui/ShareLinkBar.d.ts +21 -0
- package/lib/share/ui/ShareLinkBar.d.ts.map +1 -0
- package/lib/share/ui/ShareLinkBar.js +32 -0
- package/lib/share/ui/ShareLinkBar.js.map +1 -0
- package/lib/share/ui/SharePanes.d.ts +17 -0
- package/lib/share/ui/SharePanes.d.ts.map +1 -0
- package/lib/share/ui/SharePanes.js +27 -0
- package/lib/share/ui/SharePanes.js.map +1 -0
- package/lib/share/ui/SharePartOptions.d.ts +9 -3
- package/lib/share/ui/SharePartOptions.d.ts.map +1 -1
- package/lib/share/ui/SharePartOptions.js +12 -16
- package/lib/share/ui/SharePartOptions.js.map +1 -1
- package/lib/share/ui/SharePartRow.d.ts +37 -0
- package/lib/share/ui/SharePartRow.d.ts.map +1 -0
- package/lib/share/ui/SharePartRow.js +25 -0
- package/lib/share/ui/SharePartRow.js.map +1 -0
- package/lib/share/ui/SharePresetTabs.d.ts +10 -7
- package/lib/share/ui/SharePresetTabs.d.ts.map +1 -1
- package/lib/share/ui/SharePresetTabs.js +17 -17
- package/lib/share/ui/SharePresetTabs.js.map +1 -1
- package/lib/share/ui/SharePreview.d.ts +32 -0
- package/lib/share/ui/SharePreview.d.ts.map +1 -0
- package/lib/share/ui/SharePreview.js +104 -0
- package/lib/share/ui/SharePreview.js.map +1 -0
- package/lib/share/ui/SharePreviewDevices.d.ts +20 -0
- package/lib/share/ui/SharePreviewDevices.d.ts.map +1 -0
- package/lib/share/ui/SharePreviewDevices.js +40 -0
- package/lib/share/ui/SharePreviewDevices.js.map +1 -0
- package/lib/share/ui/index.d.ts +1 -0
- package/lib/share/ui/index.d.ts.map +1 -1
- package/lib/share/ui/index.js.map +1 -1
- package/lib/share/ui/shareMarking.d.ts +14 -0
- package/lib/share/ui/shareMarking.d.ts.map +1 -0
- package/lib/share/ui/shareMarking.js +17 -0
- package/lib/share/ui/shareMarking.js.map +1 -0
- package/lib/share/ui/useShareRegionReports.d.ts +12 -0
- package/lib/share/ui/useShareRegionReports.d.ts.map +1 -0
- package/lib/share/ui/useShareRegionReports.js +73 -0
- package/lib/share/ui/useShareRegionReports.js.map +1 -0
- package/lib/shared/ui/ActionTooltip.d.ts +42 -0
- package/lib/shared/ui/ActionTooltip.d.ts.map +1 -0
- package/lib/shared/ui/ActionTooltip.js +21 -0
- package/lib/shared/ui/ActionTooltip.js.map +1 -0
- package/lib/shared/ui/index.d.ts +4 -0
- package/lib/shared/ui/index.d.ts.map +1 -1
- package/lib/shared/ui/index.js +2 -0
- package/lib/shared/ui/index.js.map +1 -1
- package/lib/shared/ui/useActionTooltip.d.ts +48 -0
- package/lib/shared/ui/useActionTooltip.d.ts.map +1 -0
- package/lib/shared/ui/useActionTooltip.js +78 -0
- package/lib/shared/ui/useActionTooltip.js.map +1 -0
- package/lib/structure/core/index.d.ts +2 -0
- package/lib/structure/core/index.d.ts.map +1 -1
- package/lib/structure/core/index.js +1 -0
- package/lib/structure/core/index.js.map +1 -1
- package/lib/structure/core/sourceMolecule.d.ts +18 -0
- package/lib/structure/core/sourceMolecule.d.ts.map +1 -0
- package/lib/structure/core/sourceMolecule.js +26 -0
- package/lib/structure/core/sourceMolecule.js.map +1 -0
- package/lib/structure/core/structureNotations.d.ts +57 -0
- package/lib/structure/core/structureNotations.d.ts.map +1 -0
- package/lib/structure/core/structureNotations.js +74 -0
- package/lib/structure/core/structureNotations.js.map +1 -0
- package/lib/structure/core/structurePicture.d.ts +49 -0
- package/lib/structure/core/structurePicture.d.ts.map +1 -0
- package/lib/structure/core/structurePicture.js +83 -0
- package/lib/structure/core/structurePicture.js.map +1 -0
- package/lib/structure/ui/EditorExportButton.d.ts +23 -0
- package/lib/structure/ui/EditorExportButton.d.ts.map +1 -0
- package/lib/structure/ui/EditorExportButton.js +23 -0
- package/lib/structure/ui/EditorExportButton.js.map +1 -0
- package/lib/structure/ui/EditorHelpButton.d.ts +5 -2
- package/lib/structure/ui/EditorHelpButton.d.ts.map +1 -1
- package/lib/structure/ui/EditorHelpButton.js +8 -9
- package/lib/structure/ui/EditorHelpButton.js.map +1 -1
- package/lib/structure/ui/StructureEditor.d.ts +8 -0
- package/lib/structure/ui/StructureEditor.d.ts.map +1 -1
- package/lib/structure/ui/StructureEditor.js +26 -3
- package/lib/structure/ui/StructureEditor.js.map +1 -1
- package/lib/structure/ui/StructureExportDialog.d.ts +34 -0
- package/lib/structure/ui/StructureExportDialog.d.ts.map +1 -0
- package/lib/structure/ui/StructureExportDialog.js +43 -0
- package/lib/structure/ui/StructureExportDialog.js.map +1 -0
- package/lib/structure/ui/StructureExportPanel.d.ts +37 -0
- package/lib/structure/ui/StructureExportPanel.d.ts.map +1 -0
- package/lib/structure/ui/StructureExportPanel.js +75 -0
- package/lib/structure/ui/StructureExportPanel.js.map +1 -0
- package/lib/structure/ui/StructureNotationRow.d.ts +22 -0
- package/lib/structure/ui/StructureNotationRow.d.ts.map +1 -0
- package/lib/structure/ui/StructureNotationRow.js +34 -0
- package/lib/structure/ui/StructureNotationRow.js.map +1 -0
- package/lib/structure/ui/StructurePicturePane.d.ts +23 -0
- package/lib/structure/ui/StructurePicturePane.d.ts.map +1 -0
- package/lib/structure/ui/StructurePicturePane.js +113 -0
- package/lib/structure/ui/StructurePicturePane.js.map +1 -0
- package/lib/structure/ui/StructureSvg.d.ts.map +1 -1
- package/lib/structure/ui/StructureSvg.js +2 -18
- package/lib/structure/ui/StructureSvg.js.map +1 -1
- package/lib/structure/ui/ToolbarTooltip.d.ts.map +1 -1
- package/lib/structure/ui/ToolbarTooltip.js +1 -2
- package/lib/structure/ui/ToolbarTooltip.js.map +1 -1
- package/lib/structure/ui/index.d.ts +7 -3
- package/lib/structure/ui/index.d.ts.map +1 -1
- package/lib/structure/ui/index.js +5 -3
- package/lib/structure/ui/index.js.map +1 -1
- package/lib/structure/ui/structureNotationText.d.ts +23 -0
- package/lib/structure/ui/structureNotationText.d.ts.map +1 -0
- package/lib/structure/ui/structureNotationText.js +42 -0
- package/lib/structure/ui/structureNotationText.js.map +1 -0
- package/lib/structure/ui/useEditorStructure.d.ts +37 -0
- package/lib/structure/ui/useEditorStructure.d.ts.map +1 -0
- package/lib/structure/ui/useEditorStructure.js +70 -0
- package/lib/structure/ui/useEditorStructure.js.map +1 -0
- package/lib/ui.d.ts +1 -0
- package/lib/ui.d.ts.map +1 -1
- package/lib/ui.js +1 -0
- package/lib/ui.js.map +1 -1
- package/package.json +1 -1
- package/src/chart/ui/Axes.tsx +53 -5
- package/src/chrome/ui/NavMenuButton.tsx +61 -18
- package/src/chrome/ui/SiteHeader.tsx +37 -1
- package/src/chrome/ui/navItem.ts +7 -0
- package/src/citation/ui/entries.tsx +10 -2
- package/src/clipboard/ui/ClickToCopy.tsx +47 -13
- package/src/clipboard/ui/CopyButton.tsx +4 -2
- package/src/clipboard/ui/CopyableValue.tsx +88 -13
- package/src/clipboard/ui/index.ts +5 -1
- package/src/confirm/ui/ConfirmButton.tsx +2 -0
- package/src/core.ts +1 -0
- package/src/delimited/ui/TableDataButton.tsx +2 -1
- package/src/download/core/figureSvg.ts +42 -10
- package/src/help/ui/HelpToolbarButton.tsx +2 -1
- package/src/locales/de.json +48 -5
- package/src/locales/en.json +48 -5
- package/src/locales/es.json +48 -5
- package/src/locales/fr.json +48 -5
- package/src/locales/it.json +48 -5
- package/src/number/core/index.ts +1 -0
- package/src/number/core/numberText.ts +20 -0
- package/src/number/ui/NumberInput.tsx +1 -1
- package/src/overlay/ui/OverlayIconButton.tsx +1 -0
- package/src/panel/ui/ClearButton.tsx +1 -0
- package/src/pedagogy/core/inlineMarks.ts +15 -7
- package/src/pedagogy/ui/GlossaryDefinition.tsx +8 -18
- package/src/pedagogy/ui/GlossaryIndex.tsx +0 -1
- package/src/pedagogy/ui/GlossaryProvider.tsx +10 -2
- package/src/pedagogy/ui/GlossaryText.tsx +10 -2
- package/src/pedagogy/ui/InlineText.tsx +21 -4
- package/src/pedagogy/ui/ReferenceSectionBlock.tsx +8 -2
- package/src/pedagogy/ui/SyntaxTooltip.tsx +11 -9
- package/src/pedagogy/ui/TutorialStepStrip.tsx +50 -18
- package/src/pedagogy/ui/glossaryContext.ts +7 -0
- package/src/pedagogy/ui/index.ts +1 -1
- package/src/pedagogy/ui/inlineSegments.tsx +7 -0
- package/src/pedagogy/ui/pedagogyStyle.ts +12 -24
- package/src/range/core/index.ts +11 -0
- package/src/range/core/rangeBounds.ts +143 -0
- package/src/range/core/rangeHistogram.ts +38 -0
- package/src/range/ui/RangeHistogram.tsx +49 -0
- package/src/range/ui/RangeSlider.tsx +209 -0
- package/src/range/ui/RangeValue.tsx +166 -0
- package/src/range/ui/index.ts +2 -0
- package/src/seo/core/documentMeta.ts +22 -0
- package/src/seo/core/index.ts +8 -1
- package/src/seo/core/noscript.ts +20 -2
- package/src/seo/core/pageMeta.ts +29 -5
- package/src/seo/core/plainDescription.ts +4 -2
- package/src/seo/core/siteFiles.ts +45 -10
- package/src/seo/core/startDocumentMeta.ts +9 -9
- package/src/seo/vite/prerender.ts +160 -36
- package/src/share/core/devices.ts +80 -0
- package/src/share/core/index.ts +14 -0
- package/src/share/core/regions.ts +87 -0
- package/src/share/ui/HiddenPartsProvider.tsx +6 -1
- package/src/share/ui/PagePart.tsx +12 -1
- package/src/share/ui/ShareButton.tsx +3 -6
- package/src/share/ui/ShareConfigOptions.tsx +25 -16
- package/src/share/ui/ShareDialog.tsx +17 -3
- package/src/share/ui/ShareDialogContent.tsx +80 -77
- package/src/share/ui/ShareLinkBar.tsx +70 -0
- package/src/share/ui/SharePanes.tsx +62 -0
- package/src/share/ui/SharePartOptions.tsx +25 -26
- package/src/share/ui/SharePartRow.tsx +78 -0
- package/src/share/ui/SharePresetTabs.tsx +36 -43
- package/src/share/ui/SharePreview.tsx +204 -0
- package/src/share/ui/SharePreviewDevices.tsx +70 -0
- package/src/share/ui/index.ts +1 -0
- package/src/share/ui/shareMarking.ts +18 -0
- package/src/share/ui/useShareRegionReports.ts +84 -0
- package/src/shared/ui/ActionTooltip.tsx +70 -0
- package/src/shared/ui/index.ts +7 -0
- package/src/shared/ui/useActionTooltip.ts +103 -0
- package/src/structure/core/index.ts +5 -0
- package/src/structure/core/sourceMolecule.ts +26 -0
- package/src/structure/core/structureNotations.ts +125 -0
- package/src/structure/core/structurePicture.ts +119 -0
- package/src/structure/ui/EditorExportButton.tsx +62 -0
- package/src/structure/ui/EditorHelpButton.tsx +26 -30
- package/src/structure/ui/StructureEditor.tsx +51 -5
- package/src/structure/ui/StructureExportDialog.tsx +90 -0
- package/src/structure/ui/StructureExportPanel.tsx +156 -0
- package/src/structure/ui/StructureNotationRow.tsx +74 -0
- package/src/structure/ui/StructurePicturePane.tsx +208 -0
- package/src/structure/ui/StructureSvg.tsx +3 -12
- package/src/structure/ui/ToolbarTooltip.tsx +1 -1
- package/src/structure/ui/index.ts +7 -3
- package/src/structure/ui/structureNotationText.ts +56 -0
- package/src/structure/ui/useEditorStructure.ts +119 -0
- package/src/ui.ts +1 -0
- package/styles/chrome.css +546 -11
|
@@ -24,8 +24,8 @@ export function plainDescription(prose, options = {}) {
|
|
|
24
24
|
return clipped(text, maxLength);
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
|
-
* Authored prose as plain text: glossary markers, code spans, strong
|
|
28
|
-
* emphasis resolved to the words they show, and the whitespace collapsed.
|
|
27
|
+
* Authored prose as plain text: glossary markers, code spans, formulas, strong
|
|
28
|
+
* and emphasis resolved to the words they show, and the whitespace collapsed.
|
|
29
29
|
* @param prose - The prose, markup and all.
|
|
30
30
|
* @returns The same words, unmarked.
|
|
31
31
|
*/
|
|
@@ -44,6 +44,9 @@ function textOf(segments) {
|
|
|
44
44
|
if ('children' in segment) {
|
|
45
45
|
text += textOf(segment.children);
|
|
46
46
|
}
|
|
47
|
+
else if (segment.kind === 'mf') {
|
|
48
|
+
text += segment.mf;
|
|
49
|
+
}
|
|
47
50
|
else {
|
|
48
51
|
text += segment.text;
|
|
49
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plainDescription.js","sourceRoot":"","sources":["../../../src/seo/core/plainDescription.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plainDescription.js","sourceRoot":"","sources":["../../../src/seo/core/plainDescription.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,9 +9,28 @@
|
|
|
9
9
|
* files hand out start where the site actually answers.
|
|
10
10
|
*/
|
|
11
11
|
import type { SiteId, SiteRecord } from '../../ecosystem/core/sites.ts';
|
|
12
|
+
import type { Language } from '../../i18n/core/languages.ts';
|
|
12
13
|
import type { RouteMeta } from './routes.ts';
|
|
14
|
+
/**
|
|
15
|
+
* Which site is being served, and where.
|
|
16
|
+
*
|
|
17
|
+
* The half of the options that says nothing about the pages, so the helpers
|
|
18
|
+
* that only resolve an address take this rather than the whole record — a
|
|
19
|
+
* caller whose `routes` is a function of the language is then still one of
|
|
20
|
+
* these.
|
|
21
|
+
*/
|
|
22
|
+
export interface SiteOrigin {
|
|
23
|
+
/** The site, named or passed. */
|
|
24
|
+
site: SiteRecord | SiteId;
|
|
25
|
+
/**
|
|
26
|
+
* Where the site is served, mount path included, e.g.
|
|
27
|
+
* `https://learn.cheminfo.org/surge`.
|
|
28
|
+
* @default `https://<the site's host>`
|
|
29
|
+
*/
|
|
30
|
+
origin?: string;
|
|
31
|
+
}
|
|
13
32
|
/** What a crawler is told about the site as a whole. */
|
|
14
|
-
export interface SiteFilesOptions {
|
|
33
|
+
export interface SiteFilesOptions extends SiteOrigin {
|
|
15
34
|
/** The site, named or passed. */
|
|
16
35
|
site: SiteRecord | SiteId;
|
|
17
36
|
/** Every address it answers. */
|
|
@@ -23,6 +42,16 @@ export interface SiteFilesOptions {
|
|
|
23
42
|
* @default `https://<the site's host>`
|
|
24
43
|
*/
|
|
25
44
|
origin?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Every language the site is written in, the default one included.
|
|
47
|
+
*
|
|
48
|
+
* A translated page is a page per language, so the sitemap lists every one of
|
|
49
|
+
* them: a variant it leaves out is a variant nothing points a crawler at, and
|
|
50
|
+
* the translation may as well not have been written. The `hreflang` set in
|
|
51
|
+
* each page's head is what then ties them back together.
|
|
52
|
+
* @default [the default language]
|
|
53
|
+
*/
|
|
54
|
+
languages?: readonly Language[];
|
|
26
55
|
}
|
|
27
56
|
/**
|
|
28
57
|
* Every routed address, as the sitemap lists them.
|
|
@@ -57,7 +86,7 @@ export declare function resolveSite(site: SiteRecord | SiteId): SiteRecord;
|
|
|
57
86
|
* @throws {Error} When the deployment named something that is not an absolute
|
|
58
87
|
* `http` or `https` address.
|
|
59
88
|
*/
|
|
60
|
-
export declare function originOf(options:
|
|
89
|
+
export declare function originOf(options: SiteOrigin): string;
|
|
61
90
|
/**
|
|
62
91
|
* The path the deployment is mounted at, read off the address it named.
|
|
63
92
|
* @param options - The site and where it is served.
|
|
@@ -65,5 +94,5 @@ export declare function originOf(options: SiteFilesOptions): string;
|
|
|
65
94
|
* @throws {Error} When the deployment named something that is not an absolute
|
|
66
95
|
* address, so there is no path to read off it.
|
|
67
96
|
*/
|
|
68
|
-
export declare function mountPathOf(options:
|
|
97
|
+
export declare function mountPathOf(options: SiteOrigin): string;
|
|
69
98
|
//# sourceMappingURL=siteFiles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siteFiles.d.ts","sourceRoot":"","sources":["../../../src/seo/core/siteFiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"siteFiles.d.ts","sourceRoot":"","sources":["../../../src/seo/core/siteFiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAO7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAO7C;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,iCAAiC;IACjC,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wDAAwD;AACxD,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,iCAAiC;IACjC,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC;IAC1B,gCAAgC;IAChC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IAC7B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;CACjC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAoB5D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,UAAU,CAEjE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAQpD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAEvD"}
|
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
* files hand out start where the site actually answers.
|
|
10
10
|
*/
|
|
11
11
|
import { siteById } from "../../ecosystem/core/lookup.js";
|
|
12
|
+
import { DEFAULT_LANGUAGE } from "../../i18n/core/languages.js";
|
|
13
|
+
import { withLanguagePath } from "../../language/core/languagePath.js";
|
|
12
14
|
import { trimTrailingSlash } from "../../router/core/address.js";
|
|
13
15
|
import { basePathOf } from "../../router/core/basePath.js";
|
|
14
16
|
import { escapeText } from "../../share/core/escape.js";
|
|
@@ -32,10 +34,17 @@ export function sitemapXml(options) {
|
|
|
32
34
|
if (options.routes.every((route) => route.indexed === false)) {
|
|
33
35
|
throw new Error('a sitemap lists at least one address');
|
|
34
36
|
}
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
.
|
|
37
|
+
const languages = options.languages ?? [DEFAULT_LANGUAGE];
|
|
38
|
+
const lines = [];
|
|
39
|
+
for (const route of options.routes) {
|
|
40
|
+
if (route.indexed === false)
|
|
41
|
+
continue;
|
|
42
|
+
for (const language of languages) {
|
|
43
|
+
const address = `${origin}${withLanguagePath(language, route.path)}`;
|
|
44
|
+
lines.push(` <url><loc>${escapeText(address)}</loc></url>`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const entries = lines.join('\n');
|
|
39
48
|
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
40
49
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
41
50
|
${entries}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siteFiles.js","sourceRoot":"","sources":["../../../src/seo/core/siteFiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"siteFiles.js","sourceRoot":"","sources":["../../../src/seo/core/siteFiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAG1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAIxD,+EAA+E;AAC/E,kFAAkF;AAClF,kEAAkE;AAClE,MAAM,WAAW,GAAG,eAAe,CAAC;AA8CpC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CAAC,OAAyB;IAClD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK;YAAE,SAAS;QACtC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,GAAG,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACrE,KAAK,CAAC,IAAI,CAAC,eAAe,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO;;EAEP,OAAO;;CAER,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,IAAyB;IACnD,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1D,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAmB;IAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,WAAW,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7E,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CACb,sEAAsE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAC/F,CAAC;IACJ,CAAC;IACD,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,OAAmB;IAC7C,OAAO,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -26,15 +26,16 @@ import { pageDocumentMeta } from "./pageMeta.js";
|
|
|
26
26
|
export function startDocumentMeta(options) {
|
|
27
27
|
if (typeof document === 'undefined')
|
|
28
28
|
return stopNothing;
|
|
29
|
+
// Everything the caller passed goes through, rather than the four fields this
|
|
30
|
+
// once named one by one: an option added to `PageMetaOptions` and forgotten
|
|
31
|
+
// here is dropped in silence. `languages` was, and every translated page took
|
|
32
|
+
// the English home page's title and canonical — type-checked, linted and unit
|
|
33
|
+
// tested all the way.
|
|
34
|
+
const { url, follow, ...page } = options;
|
|
29
35
|
const write = () => {
|
|
30
|
-
writeDocumentMeta(pageDocumentMeta({
|
|
31
|
-
site: options.site,
|
|
32
|
-
routes: options.routes,
|
|
33
|
-
url: options.url(),
|
|
34
|
-
origin: options.origin,
|
|
35
|
-
}));
|
|
36
|
+
writeDocumentMeta(pageDocumentMeta({ ...page, url: url() }));
|
|
36
37
|
};
|
|
37
|
-
return (
|
|
38
|
+
return (follow ?? writeOnce)(write);
|
|
38
39
|
}
|
|
39
40
|
function writeOnce(write) {
|
|
40
41
|
write();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startDocumentMeta.js","sourceRoot":"","sources":["../../../src/seo/core/startDocumentMeta.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAuBjD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAiC;IAEjC,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,WAAW,CAAC;IAExD,MAAM,
|
|
1
|
+
{"version":3,"file":"startDocumentMeta.js","sourceRoot":"","sources":["../../../src/seo/core/startDocumentMeta.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAuBjD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAiC;IAEjC,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,WAAW,CAAC;IAExD,8EAA8E;IAC9E,4EAA4E;IAC5E,8EAA8E;IAC9E,8EAA8E;IAC9E,sBAAsB;IACtB,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAEzC,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC;IAEF,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,SAAS,CAAC,KAAiB;IAClC,KAAK,EAAE,CAAC;IACR,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,WAAW;IAClB,qDAAqD;AACvD,CAAC"}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import type { Plugin } from 'vite';
|
|
20
20
|
import type { SiteId, SiteRecord } from '../../ecosystem/core/sites.ts';
|
|
21
|
+
import type { Language } from '../../i18n/core/languages.ts';
|
|
21
22
|
import type { NoscriptText } from '../core/noscript.ts';
|
|
22
23
|
import type { PageContent } from '../core/pageProse.ts';
|
|
23
24
|
import type { RobotsDisallow } from '../core/robots.ts';
|
|
@@ -26,8 +27,17 @@ import type { RouteMeta } from '../core/routes.ts';
|
|
|
26
27
|
export interface PrerenderOptions {
|
|
27
28
|
/** The site, named or passed. */
|
|
28
29
|
site: SiteRecord | SiteId;
|
|
29
|
-
/**
|
|
30
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Every address it answers, each with its title and description.
|
|
32
|
+
*
|
|
33
|
+
* A translated site passes a function instead: the build calls it once per
|
|
34
|
+
* language and writes that language's table, so the title and the description
|
|
35
|
+
* a search result shows are in the language of the page it points at. The
|
|
36
|
+
* paths are the same in every language — an id is never translated, or a
|
|
37
|
+
* progress key, a share link and a bookmark would all break on a language
|
|
38
|
+
* switch.
|
|
39
|
+
*/
|
|
40
|
+
routes: readonly RouteMeta[] | ((language: Language) => readonly RouteMeta[]);
|
|
31
41
|
/**
|
|
32
42
|
* Where the site is served, mount path included. Every absolute address is
|
|
33
43
|
* built on it, and `robots.txt` and the `noscript` index write their paths
|
|
@@ -77,7 +87,7 @@ export interface PrerenderOptions {
|
|
|
77
87
|
* `<!--cheminfo:body-->` at all.
|
|
78
88
|
* @default true
|
|
79
89
|
*/
|
|
80
|
-
noscript?: boolean | NoscriptText;
|
|
90
|
+
noscript?: boolean | NoscriptText | ((language: Language) => boolean | NoscriptText);
|
|
81
91
|
/**
|
|
82
92
|
* What each page says for itself, above the crawl path: its own heading, its
|
|
83
93
|
* prose and the facts it would show anyway, read from the same data the app
|
|
@@ -89,7 +99,19 @@ export interface PrerenderOptions {
|
|
|
89
99
|
* the bundle the browser downloads: only the build ever calls it.
|
|
90
100
|
* @default undefined — every page carries the menu alone
|
|
91
101
|
*/
|
|
92
|
-
content?: (route: RouteMeta) => PageContent | undefined;
|
|
102
|
+
content?: (route: RouteMeta, language: Language) => PageContent | undefined;
|
|
103
|
+
/**
|
|
104
|
+
* Every language the site is written in, the default one included.
|
|
105
|
+
*
|
|
106
|
+
* The build then writes one file per address per language — `/tutorial` and
|
|
107
|
+
* `/fr/tutorial` — each with its own `lang`, title, description and
|
|
108
|
+
* canonical, the `hreflang` set tying them together, and every variant in the
|
|
109
|
+
* sitemap. That is the whole of what makes a translation findable: a site
|
|
110
|
+
* keeping its language in a parameter or in storage serves five languages at
|
|
111
|
+
* one address, and a crawler indexes one.
|
|
112
|
+
* @default [the default language]
|
|
113
|
+
*/
|
|
114
|
+
languages?: readonly Language[];
|
|
93
115
|
}
|
|
94
116
|
/**
|
|
95
117
|
* Prerender every routed address of a cheminfo site.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prerender.d.ts","sourceRoot":"","sources":["../../../src/seo/vite/prerender.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,MAAM,CAAC;AAE3C,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAExE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAMnD,kEAAkE;AAClE,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC;IAC1B
|
|
1
|
+
{"version":3,"file":"prerender.d.ts","sourceRoot":"","sources":["../../../src/seo/vite/prerender.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,MAAM,CAAC;AAE3C,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAExE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAI7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAMnD,kEAAkE;AAClE,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC;IAC1B;;;;;;;;;OASG;IACH,MAAM,EAAE,SAAS,SAAS,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,SAAS,SAAS,EAAE,CAAC,CAAC;IAC9E;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;IACxD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC1B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,QAAQ,CAAC,EACP,OAAO,GAAG,YAAY,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,GAAG,YAAY,CAAC,CAAC;IAC5E;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,KAAK,WAAW,GAAG,SAAS,CAAC;IAC5E;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;CACjC;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CA2HnE"}
|
|
@@ -18,6 +18,9 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
20
20
|
import { dirname, join, resolve } from 'node:path';
|
|
21
|
+
import { CHROME_CATALOG } from "../../i18n/core/chromeCatalog.js";
|
|
22
|
+
import { DEFAULT_LANGUAGE } from "../../i18n/core/languages.js";
|
|
23
|
+
import { withLanguagePath } from "../../language/core/languagePath.js";
|
|
21
24
|
import { trimTrailingSlash } from "../../router/core/address.js";
|
|
22
25
|
import { noscriptIndex } from "../core/noscript.js";
|
|
23
26
|
import { pageHeadTags } from "../core/pageMeta.js";
|
|
@@ -34,15 +37,35 @@ import { PAGE_BODY_MARKER, PAGE_HEAD_MARKER, fill } from "../core/template.js";
|
|
|
34
37
|
* is not a path, or when the origin is not an absolute address.
|
|
35
38
|
*/
|
|
36
39
|
export function cheminfoPrerender(options) {
|
|
37
|
-
const { site,
|
|
40
|
+
const { site, origin, robots = [] } = options;
|
|
41
|
+
const languages = options.languages ?? [DEFAULT_LANGUAGE];
|
|
42
|
+
const tableFor = (language) => typeof options.routes === 'function'
|
|
43
|
+
? options.routes(language)
|
|
44
|
+
: options.routes;
|
|
45
|
+
// Every language answers the same addresses, so each table is checked and
|
|
46
|
+
// they are checked against each other: a translation that renames a path or
|
|
47
|
+
// drops a page writes a file the sitemap of another language names, and the
|
|
48
|
+
// `hreflang` set would point at an address that is not there.
|
|
49
|
+
const routes = tableFor(DEFAULT_LANGUAGE);
|
|
38
50
|
assertRoutes(routes);
|
|
39
|
-
const
|
|
51
|
+
for (const language of languages) {
|
|
52
|
+
if (language === DEFAULT_LANGUAGE)
|
|
53
|
+
continue;
|
|
54
|
+
assertSamePaths(routes, tableFor(language), language);
|
|
55
|
+
}
|
|
56
|
+
const structuredData = structuredDataOf(options, routes);
|
|
40
57
|
let out = 'dist';
|
|
41
58
|
let serve = false;
|
|
42
59
|
let logger = null;
|
|
43
|
-
const page = (template, route) => {
|
|
44
|
-
const head = fill(template, PAGE_HEAD_MARKER, `${pageHeadTags({
|
|
45
|
-
|
|
60
|
+
const page = (template, route, language) => {
|
|
61
|
+
const head = fill(withHtmlLang(template, language), PAGE_HEAD_MARKER, `${pageHeadTags({
|
|
62
|
+
site,
|
|
63
|
+
routes: tableFor(language),
|
|
64
|
+
origin,
|
|
65
|
+
languages,
|
|
66
|
+
url: withLanguagePath(language, route.path),
|
|
67
|
+
})}${structuredData}`);
|
|
68
|
+
const crawlPath = crawlPathOf(options, route, language, tableFor(language));
|
|
46
69
|
return crawlPath === '' ? head : fill(head, PAGE_BODY_MARKER, crawlPath);
|
|
47
70
|
};
|
|
48
71
|
return {
|
|
@@ -56,43 +79,59 @@ export function cheminfoPrerender(options) {
|
|
|
56
79
|
// from the home route rather than shipped with its markers showing.
|
|
57
80
|
transformIndexHtml: {
|
|
58
81
|
order: 'post',
|
|
59
|
-
handler: (html) =>
|
|
82
|
+
handler: (html) => serve ? page(html, homeRoute(routes), DEFAULT_LANGUAGE) : html,
|
|
60
83
|
},
|
|
61
|
-
closeBundle() {
|
|
84
|
+
async closeBundle() {
|
|
62
85
|
if (serve)
|
|
63
86
|
return;
|
|
87
|
+
// The crawl path names the family in the chrome's own words, and every
|
|
88
|
+
// language but the default arrives as a chunk of its own, so they are all
|
|
89
|
+
// fetched before a single file is written.
|
|
90
|
+
await Promise.all(languages
|
|
91
|
+
.filter((language) => language !== DEFAULT_LANGUAGE)
|
|
92
|
+
.map((language) => CHROME_CATALOG.load(language)));
|
|
64
93
|
const template = readFileSync(join(out, 'index.html'), 'utf8');
|
|
65
|
-
const write = (route, file) => {
|
|
94
|
+
const write = (route, language, file) => {
|
|
66
95
|
mkdirSync(dirname(file), { recursive: true });
|
|
67
|
-
writeFileSync(file, page(template, route));
|
|
96
|
+
writeFileSync(file, page(template, route, language));
|
|
68
97
|
};
|
|
69
|
-
let
|
|
70
|
-
for (const
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
98
|
+
let written = 0;
|
|
99
|
+
for (const language of languages) {
|
|
100
|
+
const table = tableFor(language);
|
|
101
|
+
let root = false;
|
|
102
|
+
for (const route of table) {
|
|
103
|
+
const address = trimTrailingSlash(withLanguagePath(language, route.path));
|
|
104
|
+
if (address === '/')
|
|
105
|
+
root = true;
|
|
106
|
+
write(route, language, address === '/'
|
|
107
|
+
? join(out, 'index.html')
|
|
108
|
+
: join(out, address.slice(1), 'index.html'));
|
|
109
|
+
written++;
|
|
110
|
+
}
|
|
111
|
+
// The file a static server hands out for the mount itself. A table
|
|
112
|
+
// naming no root would otherwise leave the template vite built, and
|
|
113
|
+
// ship a site whose front page carries its markers instead of a head.
|
|
114
|
+
// A language other than the default already has its own front page at
|
|
115
|
+
// `/<language>`, so only the unprefixed one is ever missing.
|
|
116
|
+
if (!root && language === DEFAULT_LANGUAGE) {
|
|
117
|
+
write(homeRoute(table), language, join(out, 'index.html'));
|
|
118
|
+
written++;
|
|
119
|
+
}
|
|
77
120
|
}
|
|
78
|
-
|
|
79
|
-
// no root would otherwise leave the template vite built, and ship a site
|
|
80
|
-
// whose front page carries its markers instead of a head.
|
|
81
|
-
if (!root)
|
|
82
|
-
write(homeRoute(routes), join(out, 'index.html'));
|
|
83
|
-
writeFileSync(join(out, 'sitemap.xml'), sitemapXml({ site, routes, origin }));
|
|
121
|
+
writeFileSync(join(out, 'sitemap.xml'), sitemapXml({ site, routes, origin, languages }));
|
|
84
122
|
if (robots !== false) {
|
|
85
123
|
writeFileSync(join(out, 'robots.txt'), robotsTxt({ site, routes, origin }, robots));
|
|
86
124
|
}
|
|
87
|
-
|
|
125
|
+
const spoken = languages.length > 1 ? ` in ${languages.length} languages` : '';
|
|
126
|
+
logger?.info(`${written} pages prerendered${spoken}, and listed in sitemap.xml`);
|
|
88
127
|
},
|
|
89
128
|
};
|
|
90
129
|
}
|
|
91
|
-
function structuredDataOf(options) {
|
|
130
|
+
function structuredDataOf(options, routes) {
|
|
92
131
|
const { category, ...rest } = options;
|
|
93
132
|
if (category === false)
|
|
94
133
|
return '';
|
|
95
|
-
const { site,
|
|
134
|
+
const { site, origin } = rest;
|
|
96
135
|
const { operatingSystem, description, browserRequirements, currency } = rest;
|
|
97
136
|
return `\n${structuredDataScript({
|
|
98
137
|
site,
|
|
@@ -105,18 +144,49 @@ function structuredDataOf(options) {
|
|
|
105
144
|
currency,
|
|
106
145
|
})}`;
|
|
107
146
|
}
|
|
108
|
-
function crawlPathOf(options, route) {
|
|
109
|
-
const { site,
|
|
147
|
+
function crawlPathOf(options, route, language, routes) {
|
|
148
|
+
const { site, origin } = options;
|
|
149
|
+
// The crawl path of a translated page is that language's: its heading, its
|
|
150
|
+
// intro and the label under every link. Declared as a function of the
|
|
151
|
+
// language, the site writes each of them from its own catalog; declared as a
|
|
152
|
+
// record, it is the same words on every language, which is what a site that
|
|
153
|
+
// speaks one wants and is what it used to be.
|
|
154
|
+
const declared = options.noscript ?? true;
|
|
155
|
+
const noscript = typeof declared === 'function' ? declared(language) : declared;
|
|
110
156
|
if (noscript === false)
|
|
111
157
|
return '';
|
|
112
|
-
const content = options.content?.(route);
|
|
158
|
+
const content = options.content?.(route, language);
|
|
113
159
|
const { routes: listed, ...prose } = noscript === true ? {} : noscript;
|
|
160
|
+
// The crawl path of a translated page links to that language's addresses: a
|
|
161
|
+
// French page listing the English ones is a crawler's only route out of it,
|
|
162
|
+
// and it would lead straight back out of the translation.
|
|
163
|
+
const menu = (listed ?? routes).map((entry) => ({
|
|
164
|
+
...entry,
|
|
165
|
+
path: withLanguagePath(language, entry.path),
|
|
166
|
+
}));
|
|
114
167
|
return noscriptIndex({
|
|
115
168
|
site,
|
|
116
169
|
origin,
|
|
117
170
|
...prose,
|
|
118
|
-
routes:
|
|
171
|
+
routes: menu,
|
|
119
172
|
content,
|
|
173
|
+
language,
|
|
120
174
|
});
|
|
121
175
|
}
|
|
176
|
+
// Two tables of one site answer the same addresses. A translated table that
|
|
177
|
+
// renames or drops a path leaves the `hreflang` set of every other language
|
|
178
|
+
// pointing at an address nothing wrote, which is a soft 404 on each of them.
|
|
179
|
+
function assertSamePaths(source, translated, language) {
|
|
180
|
+
const wanted = source.map((route) => route.path).join(' ');
|
|
181
|
+
const written = translated.map((route) => route.path).join(' ');
|
|
182
|
+
if (wanted !== written) {
|
|
183
|
+
throw new Error(`the ${language} route table answers different addresses than the source one: an address is the same in every language`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// The template is written in the default language, so each file says which
|
|
187
|
+
// language it is actually in. A page whose `lang` lies is read aloud wrong and
|
|
188
|
+
// offered to the wrong reader.
|
|
189
|
+
function withHtmlLang(template, language) {
|
|
190
|
+
return template.replace(/<html(?<attributes>[^>]*)\slang="[^"]*"/i, `<html$<attributes> lang="${language}"`);
|
|
191
|
+
}
|
|
122
192
|
//# sourceMappingURL=prerender.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prerender.js","sourceRoot":"","sources":["../../../src/seo/vite/prerender.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"prerender.js","sourceRoot":"","sources":["../../../src/seo/vite/prerender.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/** The screens a link can be looked at on, before it is handed out. */
|
|
2
|
+
export type SharePreviewDeviceKey = 'window' | 'mobile' | 'laptop' | 'hd';
|
|
3
|
+
/** A screen the preview lays the page out at. */
|
|
4
|
+
export interface SharePreviewSize {
|
|
5
|
+
/** Width in CSS pixels. */
|
|
6
|
+
width: number;
|
|
7
|
+
/** Height in CSS pixels. */
|
|
8
|
+
height: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The screens offered, in the order the capsules read. `window` is the
|
|
12
|
+
* reader's own, and is resolved against the browser rather than written here.
|
|
13
|
+
*/
|
|
14
|
+
export declare const SHARE_PREVIEW_DEVICES: readonly SharePreviewDeviceKey[];
|
|
15
|
+
/**
|
|
16
|
+
* The page size a device lays the preview out at.
|
|
17
|
+
* @param key - The device picked.
|
|
18
|
+
* @param window - The reader's own window, for the `window` device.
|
|
19
|
+
* @returns Its width and height in CSS pixels.
|
|
20
|
+
*/
|
|
21
|
+
export declare function sharePreviewSize(key: SharePreviewDeviceKey, window?: Partial<SharePreviewSize>): SharePreviewSize;
|
|
22
|
+
/**
|
|
23
|
+
* How far the page is shrunk to fit the pane it is previewed in.
|
|
24
|
+
*
|
|
25
|
+
* It is never enlarged: a phone shown bigger than a phone is not what the
|
|
26
|
+
* reader is checking.
|
|
27
|
+
* @param pane - The room the preview pane has.
|
|
28
|
+
* @param page - The size the page is laid out at.
|
|
29
|
+
* @returns The scale, between 0 and 1.
|
|
30
|
+
*/
|
|
31
|
+
export declare function sharePreviewScale(pane: Partial<SharePreviewSize>, page: SharePreviewSize): number;
|
|
32
|
+
/**
|
|
33
|
+
* The address as the preview's own bar writes it, without its scheme.
|
|
34
|
+
*
|
|
35
|
+
* What a reader checks there is the site and the query the link carries, and a
|
|
36
|
+
* bar as wide as a phone has no room for `https://`.
|
|
37
|
+
* @param url - The link the preview loads.
|
|
38
|
+
* @returns The address, scheme dropped.
|
|
39
|
+
*/
|
|
40
|
+
export declare function sharePreviewAddress(url: string): string;
|
|
41
|
+
//# sourceMappingURL=devices.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devices.d.ts","sourceRoot":"","sources":["../../../src/share/core/devices.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;AAE1E,iDAAiD;AACjD,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,qBAAqB,EAKjE,CAAC;AAcF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,qBAAqB,EAC1B,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GACjC,gBAAgB,CAKlB;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAC/B,IAAI,EAAE,gBAAgB,GACrB,MAAM,CAKR;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvD"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The screens offered, in the order the capsules read. `window` is the
|
|
3
|
+
* reader's own, and is resolved against the browser rather than written here.
|
|
4
|
+
*/
|
|
5
|
+
export const SHARE_PREVIEW_DEVICES = [
|
|
6
|
+
'window',
|
|
7
|
+
'mobile',
|
|
8
|
+
'laptop',
|
|
9
|
+
'hd',
|
|
10
|
+
];
|
|
11
|
+
const FIXED_SIZES = {
|
|
12
|
+
mobile: { width: 390, height: 844 },
|
|
13
|
+
laptop: { width: 1280, height: 800 },
|
|
14
|
+
hd: { width: 1920, height: 1080 },
|
|
15
|
+
};
|
|
16
|
+
/** What the preview falls back to where there is no window to measure. */
|
|
17
|
+
const FALLBACK_WINDOW = { width: 1280, height: 800 };
|
|
18
|
+
/**
|
|
19
|
+
* The page size a device lays the preview out at.
|
|
20
|
+
* @param key - The device picked.
|
|
21
|
+
* @param window - The reader's own window, for the `window` device.
|
|
22
|
+
* @returns Its width and height in CSS pixels.
|
|
23
|
+
*/
|
|
24
|
+
export function sharePreviewSize(key, window) {
|
|
25
|
+
if (key !== 'window')
|
|
26
|
+
return FIXED_SIZES[key];
|
|
27
|
+
const width = window?.width ?? 0;
|
|
28
|
+
const height = window?.height ?? 0;
|
|
29
|
+
return width > 0 && height > 0 ? { width, height } : FALLBACK_WINDOW;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* How far the page is shrunk to fit the pane it is previewed in.
|
|
33
|
+
*
|
|
34
|
+
* It is never enlarged: a phone shown bigger than a phone is not what the
|
|
35
|
+
* reader is checking.
|
|
36
|
+
* @param pane - The room the preview pane has.
|
|
37
|
+
* @param page - The size the page is laid out at.
|
|
38
|
+
* @returns The scale, between 0 and 1.
|
|
39
|
+
*/
|
|
40
|
+
export function sharePreviewScale(pane, page) {
|
|
41
|
+
const width = pane.width ?? 0;
|
|
42
|
+
const height = pane.height ?? 0;
|
|
43
|
+
if (width <= 0 || height <= 0)
|
|
44
|
+
return 1;
|
|
45
|
+
return Math.min(1, width / page.width, height / page.height);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The address as the preview's own bar writes it, without its scheme.
|
|
49
|
+
*
|
|
50
|
+
* What a reader checks there is the site and the query the link carries, and a
|
|
51
|
+
* bar as wide as a phone has no room for `https://`.
|
|
52
|
+
* @param url - The link the preview loads.
|
|
53
|
+
* @returns The address, scheme dropped.
|
|
54
|
+
*/
|
|
55
|
+
export function sharePreviewAddress(url) {
|
|
56
|
+
return url.replace(/^[a-z][\w+.-]*:\/\//i, '');
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=devices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devices.js","sourceRoot":"","sources":["../../../src/share/core/devices.ts"],"names":[],"mappings":"AAWA;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAqC;IACrE,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,IAAI;CACL,CAAC;AAEF,MAAM,WAAW,GAGb;IACF,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;IACnC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IACpC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;CAClC,CAAC;AAEF,0EAA0E;AAC1E,MAAM,eAAe,GAAqB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAA0B,EAC1B,MAAkC;IAElC,IAAI,GAAG,KAAK,QAAQ;QAAE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC;IACnC,OAAO,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;AACvE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAA+B,EAC/B,IAAsB;IAEtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IAChC,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,OAAO,GAAG,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
export type { ShareConfig } from './config.ts';
|
|
2
2
|
export { EMBED_PARAM, HIDE_PARAM, applyShareConfig, isHidden, isShareConfigured, parseShareConfig, suggestedShareConfig, visibleShareParts, } from './config.ts';
|
|
3
|
+
export type { SharePreviewDeviceKey, SharePreviewSize } from './devices.ts';
|
|
4
|
+
export { SHARE_PREVIEW_DEVICES, sharePreviewAddress, sharePreviewScale, sharePreviewSize, } from './devices.ts';
|
|
3
5
|
export { escapeAttribute, escapeText } from './escape.ts';
|
|
6
|
+
export type { ShareRegion } from './regions.ts';
|
|
7
|
+
export { SHARE_REGIONS_MESSAGE, SHARE_REGIONS_REQUEST, isShareRegionsRequest, readShareRegions, } from './regions.ts';
|
|
4
8
|
export type { BooleanParamOptions, IntegerParamOptions, NumberParamOptions, ShareParamCodec, StringParamOptions, } from './params.ts';
|
|
5
9
|
export { booleanParam, enumParam, integerParam, numberParam, stringParam, } from './params.ts';
|
|
6
10
|
export type { PreferenceHistory, PreferenceLocation, SyncPreferencesOptions, UrlPreference, UrlPreferences, } from './preferences.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/share/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EACL,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC1D,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,WAAW,EACX,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACjE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzD,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/share/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EACL,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC1D,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,WAAW,EACX,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACjE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzD,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,iBAAiB,CAAC"}
|
package/lib/share/core/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { EMBED_PARAM, HIDE_PARAM, applyShareConfig, isHidden, isShareConfigured, parseShareConfig, suggestedShareConfig, visibleShareParts, } from "./config.js";
|
|
2
|
+
export { SHARE_PREVIEW_DEVICES, sharePreviewAddress, sharePreviewScale, sharePreviewSize, } from "./devices.js";
|
|
2
3
|
export { escapeAttribute, escapeText } from "./escape.js";
|
|
4
|
+
export { SHARE_REGIONS_MESSAGE, SHARE_REGIONS_REQUEST, isShareRegionsRequest, readShareRegions, } from "./regions.js";
|
|
3
5
|
export { booleanParam, enumParam, integerParam, numberParam, stringParam, } from "./params.js";
|
|
4
6
|
export { applyPreferencesFromSearch, syncPreferencesWithUrl, writePreferencesToSearch, } from "./preferences.js";
|
|
5
7
|
export { applySharePreset, findSharePreset } from "./presets.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/share/core/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/share/core/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAQtB,OAAO,EACL,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,WAAW,EACX,WAAW,GACZ,MAAM,aAAa,CAAC;AAQrB,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC"}
|