react-cheminfo 0.38.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/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/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 +39 -4
- package/lib/locales/en.json +39 -4
- package/lib/locales/es.json +39 -4
- package/lib/locales/fr.json +39 -4
- package/lib/locales/it.json +39 -4
- 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/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/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/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/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 +39 -4
- package/src/locales/en.json +39 -4
- package/src/locales/es.json +39 -4
- package/src/locales/fr.json +39 -4
- package/src/locales/it.json +39 -4
- 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/seo/core/plainDescription.ts +4 -2
- 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/styles/chrome.css +414 -14
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { AnchorButton } from '@blueprintjs/core';
|
|
3
|
+
import { CopyButton } from "../../clipboard/ui/index.js";
|
|
4
|
+
import { HelpTooltip } from "../../help/ui/index.js";
|
|
5
|
+
import { useChromeT } from "../../i18n/ui/useT.js";
|
|
6
|
+
/**
|
|
7
|
+
* The three things one does with a share link, kept above the options and
|
|
8
|
+
* never scrolled away: a dialog whose Copy button is below the fold is a dialog
|
|
9
|
+
* one scrolls through every single time.
|
|
10
|
+
*
|
|
11
|
+
* Neither the address nor the frame markup is printed. A teacher reads neither
|
|
12
|
+
* before pasting it, and a hundred characters of query string set in monospace
|
|
13
|
+
* is the widest thing in the dialog; what tells them which button to press is
|
|
14
|
+
* the help on it.
|
|
15
|
+
* @param props - The address, and the frame markup the third button copies.
|
|
16
|
+
* @returns The bar.
|
|
17
|
+
*/
|
|
18
|
+
export function ShareLinkBar(props) {
|
|
19
|
+
const { url, frame } = props;
|
|
20
|
+
const t = useChromeT();
|
|
21
|
+
return (_jsxs("div", { className: "share-linkbar", children: [_jsx(HelpTooltip, { content: {
|
|
22
|
+
title: t('share.copyLinkHelpTitle'),
|
|
23
|
+
body: t('share.copyLinkHelp'),
|
|
24
|
+
}, children: _jsx(CopyButton, { content: url, label: t('share.copyLink'), title: "" }) }), _jsx(HelpTooltip, { content: {
|
|
25
|
+
title: t('share.openInNewTabHelpTitle'),
|
|
26
|
+
body: t('share.openInNewTabHelp'),
|
|
27
|
+
}, children: _jsx(AnchorButton, { icon: "share", text: t('share.openInNewTab'), href: url, target: "_blank", rel: "noopener noreferrer" }) }), _jsx(HelpTooltip, { content: {
|
|
28
|
+
title: t('share.copyIframeHelpTitle'),
|
|
29
|
+
body: t('share.copyIframeHelp'),
|
|
30
|
+
}, children: _jsx(CopyButton, { content: frame, icon: "code", label: t('share.copyIframe'), title: "" }) })] }));
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=ShareLinkBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShareLinkBar.js","sourceRoot":"","sources":["../../../src/share/ui/ShareLinkBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AASnD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAC7B,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IAEvB,OAAO,CACL,eAAK,SAAS,EAAC,eAAe,aAC5B,KAAC,WAAW,IACV,OAAO,EAAE;oBACP,KAAK,EAAE,CAAC,CAAC,yBAAyB,CAAC;oBACnC,IAAI,EAAE,CAAC,CAAC,oBAAoB,CAAC;iBAC9B,YAED,KAAC,UAAU,IAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAC,EAAE,GAAG,GACrD,EACd,KAAC,WAAW,IACV,OAAO,EAAE;oBACP,KAAK,EAAE,CAAC,CAAC,6BAA6B,CAAC;oBACvC,IAAI,EAAE,CAAC,CAAC,wBAAwB,CAAC;iBAClC,YAED,KAAC,YAAY,IACX,IAAI,EAAC,OAAO,EACZ,IAAI,EAAE,CAAC,CAAC,oBAAoB,CAAC,EAC7B,IAAI,EAAE,GAAG,EACT,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,GACzB,GACU,EACd,KAAC,WAAW,IACV,OAAO,EAAE;oBACP,KAAK,EAAE,CAAC,CAAC,2BAA2B,CAAC;oBACrC,IAAI,EAAE,CAAC,CAAC,sBAAsB,CAAC;iBAChC,YAED,KAAC,UAAU,IACT,OAAO,EAAE,KAAK,EACd,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,CAAC,CAAC,kBAAkB,CAAC,EAC5B,KAAK,EAAC,EAAE,GACR,GACU,IACV,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
export interface SharePanesProps {
|
|
3
|
+
/** What the link says: the presets, the boxes, and the tool's own section. */
|
|
4
|
+
options: ReactElement;
|
|
5
|
+
/** The live page, or nothing when the dialog shows no preview. */
|
|
6
|
+
preview: ReactElement | null;
|
|
7
|
+
/** Whether the dialog is too narrow to hold the two panes side by side. */
|
|
8
|
+
narrow: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The options and the page they write: side by side where there is room, and
|
|
12
|
+
* two tabs where there is not.
|
|
13
|
+
* @param props - The two panes, and whether they still fit together.
|
|
14
|
+
* @returns The panes, or the tabs holding them.
|
|
15
|
+
*/
|
|
16
|
+
export declare function SharePanes(props: SharePanesProps): ReactElement;
|
|
17
|
+
//# sourceMappingURL=SharePanes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SharePanes.d.ts","sourceRoot":"","sources":["../../../src/share/ui/SharePanes.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAQ1C,MAAM,WAAW,eAAe;IAC9B,8EAA8E;IAC9E,OAAO,EAAE,YAAY,CAAC;IACtB,kEAAkE;IAClE,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,2EAA2E;IAC3E,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,CAqC/D"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Tab, Tabs } from '@blueprintjs/core';
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
import { useChromeT } from "../../i18n/ui/useT.js";
|
|
5
|
+
const OPTIONS_TAB = 'options';
|
|
6
|
+
const PREVIEW_TAB = 'preview';
|
|
7
|
+
/**
|
|
8
|
+
* The options and the page they write: side by side where there is room, and
|
|
9
|
+
* two tabs where there is not.
|
|
10
|
+
* @param props - The two panes, and whether they still fit together.
|
|
11
|
+
* @returns The panes, or the tabs holding them.
|
|
12
|
+
*/
|
|
13
|
+
export function SharePanes(props) {
|
|
14
|
+
const { options, preview, narrow } = props;
|
|
15
|
+
const t = useChromeT();
|
|
16
|
+
const [tab, setTab] = useState(OPTIONS_TAB);
|
|
17
|
+
if (preview === null) {
|
|
18
|
+
return (_jsx("div", { className: "share-dialog__panes share-dialog__panes--single", children: options }));
|
|
19
|
+
}
|
|
20
|
+
if (narrow) {
|
|
21
|
+
return (_jsxs(Tabs, { id: "share-panes", className: "share-dialog__tabs", animate: false, renderActiveTabPanelOnly: true, selectedTabId: tab, onChange: (tabId) => {
|
|
22
|
+
setTab(String(tabId));
|
|
23
|
+
}, children: [_jsx(Tab, { id: OPTIONS_TAB, title: t('share.options'), panel: options }), _jsx(Tab, { id: PREVIEW_TAB, title: t('share.preview'), panel: preview })] }));
|
|
24
|
+
}
|
|
25
|
+
return (_jsxs("div", { className: "share-dialog__panes", children: [options, preview] }));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=SharePanes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SharePanes.js","sourceRoot":"","sources":["../../../src/share/ui/SharePanes.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,WAAW,GAAG,SAAS,CAAC;AAW9B;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAC3C,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAS,WAAW,CAAC,CAAC;IAEpD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,CACL,cAAK,SAAS,EAAC,iDAAiD,YAC7D,OAAO,GACJ,CACP,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CACL,MAAC,IAAI,IACH,EAAE,EAAC,aAAa,EAChB,SAAS,EAAC,oBAAoB,EAC9B,OAAO,EAAE,KAAK,EACd,wBAAwB,QACxB,aAAa,EAAE,GAAG,EAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACxB,CAAC,aAED,KAAC,GAAG,IAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,GAAI,EACnE,KAAC,GAAG,IAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,GAAI,IAC9D,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aACjC,OAAO,EACP,OAAO,IACJ,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
import type { ReactElement } from 'react';
|
|
2
2
|
import type { HideablePart } from '../core/index.ts';
|
|
3
|
+
import type { SharePartDescriptions } from './SharePartRow.tsx';
|
|
3
4
|
export interface SharePartOptionsProps {
|
|
4
5
|
/** The parts this page can switch off, in the order the vocabulary lists them. */
|
|
5
6
|
parts: readonly HideablePart[];
|
|
6
7
|
/** The parts the draft currently switches off. */
|
|
7
8
|
hidden: readonly string[];
|
|
9
|
+
/** Where each row says what switching it off does. */
|
|
10
|
+
descriptions: SharePartDescriptions;
|
|
8
11
|
/** Called with the part and whether the link should switch it off. */
|
|
9
12
|
onChange: (part: string, hidden: boolean) => void;
|
|
13
|
+
/** Called with the part the pointer is on, or `null` when it leaves. */
|
|
14
|
+
onPointed: (part: string | null) => void;
|
|
10
15
|
}
|
|
11
16
|
/**
|
|
12
|
-
* One
|
|
13
|
-
* link keeps, which is how somebody building a course tile thinks
|
|
17
|
+
* One switch per part of the page, worded positively: a part that is `On` is a
|
|
18
|
+
* part the link keeps, which is how somebody building a course tile thinks
|
|
19
|
+
* about it.
|
|
14
20
|
* @param props - The parts, what is switched off, and how to change it.
|
|
15
|
-
* @returns The
|
|
21
|
+
* @returns The rows.
|
|
16
22
|
*/
|
|
17
23
|
export declare function SharePartOptions(props: SharePartOptionsProps): ReactElement;
|
|
18
24
|
//# sourceMappingURL=SharePartOptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SharePartOptions.d.ts","sourceRoot":"","sources":["../../../src/share/ui/SharePartOptions.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SharePartOptions.d.ts","sourceRoot":"","sources":["../../../src/share/ui/SharePartOptions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAGhE,MAAM,WAAW,qBAAqB;IACpC,kFAAkF;IAClF,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/B,kDAAkD;IAClD,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,sDAAsD;IACtD,YAAY,EAAE,qBAAqB,CAAC;IACpC,sEAAsE;IACtE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,wEAAwE;IACxE,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC1C;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,CAsB3E"}
|
|
@@ -1,22 +1,18 @@
|
|
|
1
|
-
import { jsx as _jsx,
|
|
2
|
-
import {
|
|
3
|
-
const OPTION_STYLE = { marginBottom: 8 };
|
|
4
|
-
const DESCRIPTION_STYLE = {
|
|
5
|
-
display: 'block',
|
|
6
|
-
marginLeft: 26,
|
|
7
|
-
color: 'var(--text-muted, #5b6875)',
|
|
8
|
-
fontSize: 12,
|
|
9
|
-
};
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { SharePartRow } from "./SharePartRow.js";
|
|
10
3
|
/**
|
|
11
|
-
* One
|
|
12
|
-
* link keeps, which is how somebody building a course tile thinks
|
|
4
|
+
* One switch per part of the page, worded positively: a part that is `On` is a
|
|
5
|
+
* part the link keeps, which is how somebody building a course tile thinks
|
|
6
|
+
* about it.
|
|
13
7
|
* @param props - The parts, what is switched off, and how to change it.
|
|
14
|
-
* @returns The
|
|
8
|
+
* @returns The rows.
|
|
15
9
|
*/
|
|
16
10
|
export function SharePartOptions(props) {
|
|
17
|
-
const { parts, hidden, onChange } = props;
|
|
18
|
-
return (_jsx(_Fragment, { children: parts.map((part) => (
|
|
19
|
-
|
|
20
|
-
|
|
11
|
+
const { parts, hidden, descriptions, onChange, onPointed } = props;
|
|
12
|
+
return (_jsx(_Fragment, { children: parts.map((part) => (_jsx(SharePartRow, { label: part.label, description: part.description, on: !hidden.includes(part.key), descriptions: descriptions, onChange: (on) => {
|
|
13
|
+
onChange(part.key, !on);
|
|
14
|
+
}, onPointed: (pointed) => {
|
|
15
|
+
onPointed(pointed ? part.key : null);
|
|
16
|
+
} }, part.key))) }));
|
|
21
17
|
}
|
|
22
18
|
//# sourceMappingURL=SharePartOptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SharePartOptions.js","sourceRoot":"","sources":["../../../src/share/ui/SharePartOptions.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"SharePartOptions.js","sourceRoot":"","sources":["../../../src/share/ui/SharePartOptions.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAC;AAelD;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAEnE,OAAO,CACL,4BACG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,KAAC,YAAY,IAEX,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAC9B,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE;gBACf,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC,EACD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;gBACrB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC,IAVI,IAAI,CAAC,GAAG,CAWb,CACH,CAAC,GACD,CACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Where a row says what switching it off does: behind a help glyph beside the
|
|
4
|
+
* label, or on a line of its own under it.
|
|
5
|
+
*/
|
|
6
|
+
export type SharePartDescriptions = 'help' | 'inline';
|
|
7
|
+
export interface SharePartRowProps {
|
|
8
|
+
/** What the row switches, named as the reader sees it on the page. */
|
|
9
|
+
label: string;
|
|
10
|
+
/** What switching it off does, in one sentence. */
|
|
11
|
+
description: string;
|
|
12
|
+
/** Whether the link keeps it. */
|
|
13
|
+
on: boolean;
|
|
14
|
+
/** Where the description is shown. */
|
|
15
|
+
descriptions: SharePartDescriptions;
|
|
16
|
+
/** Called with the state the reader asked for. */
|
|
17
|
+
onChange: (on: boolean) => void;
|
|
18
|
+
/**
|
|
19
|
+
* Called when the pointer enters or leaves the row, so the preview can draw
|
|
20
|
+
* the region it names.
|
|
21
|
+
* @default undefined — the row is not pointed out anywhere
|
|
22
|
+
*/
|
|
23
|
+
onPointed?: (pointed: boolean) => void;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* One row of the share dialog: what it is on the left, whether the link keeps
|
|
27
|
+
* it on the right.
|
|
28
|
+
*
|
|
29
|
+
* The state is written inside the switch rather than left to a tick, because a
|
|
30
|
+
* tick means nothing without the heading above the column — and the heading is
|
|
31
|
+
* the first thing a reader scrolls past. A row that says `On` reads correctly
|
|
32
|
+
* on its own, in every language.
|
|
33
|
+
* @param props - See {@link SharePartRowProps}.
|
|
34
|
+
* @returns The row.
|
|
35
|
+
*/
|
|
36
|
+
export declare function SharePartRow(props: SharePartRowProps): ReactElement;
|
|
37
|
+
//# sourceMappingURL=SharePartRow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SharePartRow.d.ts","sourceRoot":"","sources":["../../../src/share/ui/SharePartRow.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAM1C;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,sCAAsC;IACtC,YAAY,EAAE,qBAAqB,CAAC;IACpC,kDAAkD;IAClD,QAAQ,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC;IAChC;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,CAkCnE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Switch } from '@blueprintjs/core';
|
|
3
|
+
import { useId } from 'react';
|
|
4
|
+
import { HelpIcon } from "../../help/ui/index.js";
|
|
5
|
+
import { useChromeT } from "../../i18n/ui/useT.js";
|
|
6
|
+
/**
|
|
7
|
+
* One row of the share dialog: what it is on the left, whether the link keeps
|
|
8
|
+
* it on the right.
|
|
9
|
+
*
|
|
10
|
+
* The state is written inside the switch rather than left to a tick, because a
|
|
11
|
+
* tick means nothing without the heading above the column — and the heading is
|
|
12
|
+
* the first thing a reader scrolls past. A row that says `On` reads correctly
|
|
13
|
+
* on its own, in every language.
|
|
14
|
+
* @param props - See {@link SharePartRowProps}.
|
|
15
|
+
* @returns The row.
|
|
16
|
+
*/
|
|
17
|
+
export function SharePartRow(props) {
|
|
18
|
+
const { label, description, on, descriptions, onChange, onPointed } = props;
|
|
19
|
+
const t = useChromeT();
|
|
20
|
+
const id = useId();
|
|
21
|
+
return (_jsxs("div", { className: "share-part", onMouseEnter: () => onPointed?.(true), onMouseLeave: () => onPointed?.(false), onFocus: () => onPointed?.(true), onBlur: () => onPointed?.(false), children: [_jsx("label", { className: "share-part__label", htmlFor: id, children: label }), descriptions === 'help' ? (_jsx(HelpIcon, { content: { title: label, body: description }, label: label })) : null, _jsx(Switch, { id: id, className: "share-part__switch", checked: on, innerLabel: t('share.off'), innerLabelChecked: t('share.on'), onChange: (event) => {
|
|
22
|
+
onChange(event.currentTarget.checked);
|
|
23
|
+
} }), descriptions === 'inline' ? (_jsx("p", { className: "share-part__description", children: description })) : null] }));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=SharePartRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SharePartRow.js","sourceRoot":"","sources":["../../../src/share/ui/SharePartRow.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AA2BnD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC5E,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IAEnB,OAAO,CACL,eACE,SAAS,EAAC,YAAY,EACtB,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EACrC,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,EACtC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAChC,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,aAEhC,gBAAO,SAAS,EAAC,mBAAmB,EAAC,OAAO,EAAE,EAAE,YAC7C,KAAK,GACA,EACP,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,CACzB,KAAC,QAAQ,IAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,GAAI,CACzE,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,MAAM,IACL,EAAE,EAAE,EAAE,EACN,SAAS,EAAC,oBAAoB,EAC9B,OAAO,EAAE,EAAE,EACX,UAAU,EAAE,CAAC,CAAC,WAAW,CAAC,EAC1B,iBAAiB,EAAE,CAAC,CAAC,UAAU,CAAC,EAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBACxC,CAAC,GACD,EACD,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC3B,YAAG,SAAS,EAAC,yBAAyB,YAAE,WAAW,GAAK,CACzD,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ReactElement
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
2
|
import type { ShareParamCodecs, SharePreset } from '../core/index.ts';
|
|
3
3
|
export interface SharePresetTabsProps<Codecs extends ShareParamCodecs = Record<string, never>> {
|
|
4
4
|
/** The presets, in the order the tabs list them. */
|
|
@@ -7,14 +7,17 @@ export interface SharePresetTabsProps<Codecs extends ShareParamCodecs = Record<s
|
|
|
7
7
|
selected: string | null;
|
|
8
8
|
/** Called with the key of the preset picked, `null` for the custom tab. */
|
|
9
9
|
onSelect: (key: string | null) => void;
|
|
10
|
-
/** What the custom tab holds: the boxes of the draft. */
|
|
11
|
-
custom: ReactNode;
|
|
12
10
|
}
|
|
13
11
|
/**
|
|
14
|
-
* One tab per
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
12
|
+
* One tab per ready-made link, then a last Custom tab for building any other
|
|
13
|
+
* one.
|
|
14
|
+
*
|
|
15
|
+
* The strip runs the width of the dialog rather than sitting in the column of
|
|
16
|
+
* options, because the choice governs the preview as much as the switches: in
|
|
17
|
+
* a third of the width, four tabs wrap onto a second row and the last of them
|
|
18
|
+
* — the one holding every switch — reads as an afterthought.
|
|
19
|
+
* @param props - The presets, and which one is open.
|
|
20
|
+
* @returns The tab strip.
|
|
18
21
|
*/
|
|
19
22
|
export declare function SharePresetTabs<Codecs extends ShareParamCodecs = Record<string, never>>(props: SharePresetTabsProps<Codecs>): ReactElement;
|
|
20
23
|
//# sourceMappingURL=SharePresetTabs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SharePresetTabs.d.ts","sourceRoot":"","sources":["../../../src/share/ui/SharePresetTabs.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"SharePresetTabs.d.ts","sourceRoot":"","sources":["../../../src/share/ui/SharePresetTabs.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAKtE,MAAM,WAAW,oBAAoB,CACnC,MAAM,SAAS,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAEvD,oDAAoD;IACpD,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2EAA2E;IAC3E,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CACxC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,MAAM,SAAS,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACvD,KAAK,EAAE,oBAAoB,CAAC,MAAM,CAAC,GAAG,YAAY,CA+BnD"}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { jsx as _jsx,
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Tab, Tabs } from '@blueprintjs/core';
|
|
3
3
|
import { useChromeT } from "../../i18n/ui/useT.js";
|
|
4
|
-
const SECTION_STYLE = { marginBottom: 18 };
|
|
5
|
-
const DESCRIPTION_STYLE = {
|
|
6
|
-
margin: 0,
|
|
7
|
-
color: 'var(--text-muted, #5b6875)',
|
|
8
|
-
};
|
|
9
4
|
const CUSTOM_TAB = 'custom';
|
|
10
5
|
const PRESET_TAB_PREFIX = 'preset-';
|
|
11
6
|
/**
|
|
12
|
-
* One tab per
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
7
|
+
* One tab per ready-made link, then a last Custom tab for building any other
|
|
8
|
+
* one.
|
|
9
|
+
*
|
|
10
|
+
* The strip runs the width of the dialog rather than sitting in the column of
|
|
11
|
+
* options, because the choice governs the preview as much as the switches: in
|
|
12
|
+
* a third of the width, four tabs wrap onto a second row and the last of them
|
|
13
|
+
* — the one holding every switch — reads as an afterthought.
|
|
14
|
+
* @param props - The presets, and which one is open.
|
|
15
|
+
* @returns The tab strip.
|
|
16
16
|
*/
|
|
17
17
|
export function SharePresetTabs(props) {
|
|
18
|
-
const { presets, selected, onSelect
|
|
18
|
+
const { presets, selected, onSelect } = props;
|
|
19
19
|
const t = useChromeT();
|
|
20
|
-
return (
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
return (_jsxs(Tabs, { id: "share-presets", className: "share-presets", animate: false, selectedTabId: selected === null ? CUSTOM_TAB : `${PRESET_TAB_PREFIX}${selected}`, onChange: (tabId) => {
|
|
21
|
+
const id = String(tabId);
|
|
22
|
+
onSelect(id.startsWith(PRESET_TAB_PREFIX)
|
|
23
|
+
? id.slice(PRESET_TAB_PREFIX.length)
|
|
24
|
+
: null);
|
|
25
|
+
}, children: [presets.map((preset) => (_jsx(Tab, { id: `${PRESET_TAB_PREFIX}${preset.key}`, title: preset.label }, preset.key))), _jsx(Tab, { id: CUSTOM_TAB, title: t('share.custom') })] }));
|
|
26
26
|
}
|
|
27
27
|
//# sourceMappingURL=SharePresetTabs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SharePresetTabs.js","sourceRoot":"","sources":["../../../src/share/ui/SharePresetTabs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAG9C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD,MAAM,
|
|
1
|
+
{"version":3,"file":"SharePresetTabs.js","sourceRoot":"","sources":["../../../src/share/ui/SharePresetTabs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAG9C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD,MAAM,UAAU,GAAG,QAAQ,CAAC;AAC5B,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAapC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAE7B,KAAmC;IACnC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC9C,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IAEvB,OAAO,CACL,MAAC,IAAI,IACH,EAAE,EAAC,eAAe,EAClB,SAAS,EAAC,eAAe,EACzB,OAAO,EAAE,KAAK,EACd,aAAa,EACX,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,iBAAiB,GAAG,QAAQ,EAAE,EAEpE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YAClB,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YACzB,QAAQ,CACN,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC;gBAC9B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC;gBACpC,CAAC,CAAC,IAAI,CACT,CAAC;QACJ,CAAC,aAEA,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,KAAC,GAAG,IAEF,EAAE,EAAE,GAAG,iBAAiB,GAAG,MAAM,CAAC,GAAG,EAAE,EACvC,KAAK,EAAE,MAAM,CAAC,KAAK,IAFd,MAAM,CAAC,GAAG,CAGf,CACH,CAAC,EACF,KAAC,GAAG,IAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,GAAI,IAC5C,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
export interface SharePreviewProps {
|
|
3
|
+
/** The address the frame loads — the link as it stands. */
|
|
4
|
+
url: string;
|
|
5
|
+
/** What a screen reader announces the frame as. */
|
|
6
|
+
title: string;
|
|
7
|
+
/**
|
|
8
|
+
* The part the reader is pointing at in the list, drawn on the page so the
|
|
9
|
+
* name in the list and the thing on the page are the same thing.
|
|
10
|
+
* @default null — nothing is pointed at
|
|
11
|
+
*/
|
|
12
|
+
highlight?: {
|
|
13
|
+
part: string;
|
|
14
|
+
label: string;
|
|
15
|
+
} | null;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The page as the link hands it out, live, beside the options that write it.
|
|
19
|
+
*
|
|
20
|
+
* It is drawn as a window of its own — named above it, with the address it
|
|
21
|
+
* loads on its own bar — because a page scaled into a pane otherwise reads as
|
|
22
|
+
* the site itself, and a reader who takes the preview for the tool ticks a box
|
|
23
|
+
* in it and believes the link now carries it.
|
|
24
|
+
*
|
|
25
|
+
* The frame is laid out at the screen the reader picks — their own window, a
|
|
26
|
+
* phone, a laptop or a large display — and scaled into whatever room the pane
|
|
27
|
+
* has, so a course tile can be checked at the size a student will meet it.
|
|
28
|
+
* @param props - The address and the name of the frame.
|
|
29
|
+
* @returns The preview pane.
|
|
30
|
+
*/
|
|
31
|
+
export declare function SharePreview(props: SharePreviewProps): ReactElement;
|
|
32
|
+
//# sourceMappingURL=SharePreview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SharePreview.d.ts","sourceRoot":"","sources":["../../../src/share/ui/SharePreview.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAuBzD,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACpD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,CAgHnE"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { H6, Icon } from '@blueprintjs/core';
|
|
3
|
+
import { useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { formatInteger } from "../../format/core/index.js";
|
|
5
|
+
import { HelpIcon } from "../../help/ui/index.js";
|
|
6
|
+
import { useContainerSize } from "../../hooks/ui/useContainerSize.js";
|
|
7
|
+
import { useDebouncedValue } from "../../hooks/ui/useDebouncedValue.js";
|
|
8
|
+
import { useChromeT } from "../../i18n/ui/useT.js";
|
|
9
|
+
import { SHARE_REGIONS_REQUEST, readShareRegions, sharePreviewAddress, sharePreviewScale, sharePreviewSize, } from "../core/index.js";
|
|
10
|
+
import { SharePreviewDevices } from "./SharePreviewDevices.js";
|
|
11
|
+
/** Room the window's own bar takes, which the page is not scaled into. */
|
|
12
|
+
const CHROME_HEIGHT = 26;
|
|
13
|
+
/**
|
|
14
|
+
* The page as the link hands it out, live, beside the options that write it.
|
|
15
|
+
*
|
|
16
|
+
* It is drawn as a window of its own — named above it, with the address it
|
|
17
|
+
* loads on its own bar — because a page scaled into a pane otherwise reads as
|
|
18
|
+
* the site itself, and a reader who takes the preview for the tool ticks a box
|
|
19
|
+
* in it and believes the link now carries it.
|
|
20
|
+
*
|
|
21
|
+
* The frame is laid out at the screen the reader picks — their own window, a
|
|
22
|
+
* phone, a laptop or a large display — and scaled into whatever room the pane
|
|
23
|
+
* has, so a course tile can be checked at the size a student will meet it.
|
|
24
|
+
* @param props - The address and the name of the frame.
|
|
25
|
+
* @returns The preview pane.
|
|
26
|
+
*/
|
|
27
|
+
export function SharePreview(props) {
|
|
28
|
+
const { url, title, highlight = null } = props;
|
|
29
|
+
const t = useChromeT();
|
|
30
|
+
const stage = useRef(null);
|
|
31
|
+
const frame = useRef(null);
|
|
32
|
+
const pane = useContainerSize(stage);
|
|
33
|
+
const [device, setDevice] = useState('window');
|
|
34
|
+
const [regions, setRegions] = useState(NO_REGIONS);
|
|
35
|
+
const mark = useRef(null);
|
|
36
|
+
// Every box ticked reloads the frame; a number typed into a tool's own field
|
|
37
|
+
// would otherwise reload it once per keystroke.
|
|
38
|
+
const src = useDebouncedValue(url, 400);
|
|
39
|
+
const windowSize = {
|
|
40
|
+
width: globalThis.innerWidth,
|
|
41
|
+
height: globalThis.innerHeight,
|
|
42
|
+
};
|
|
43
|
+
const page = sharePreviewSize(device, windowSize);
|
|
44
|
+
const scale = sharePreviewScale({ width: pane.width, height: pane.height - CHROME_HEIGHT }, page);
|
|
45
|
+
const region = highlight === null ? undefined : regionOf(regions, highlight.part);
|
|
46
|
+
const help = {
|
|
47
|
+
title: t('share.preview'),
|
|
48
|
+
body: [t('share.previewWhat'), t('share.previewLive')],
|
|
49
|
+
};
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
function onMessage(event) {
|
|
52
|
+
if (event.source !== frame.current?.contentWindow)
|
|
53
|
+
return;
|
|
54
|
+
const reported = readShareRegions(event.data);
|
|
55
|
+
if (reported !== null)
|
|
56
|
+
setRegions(reported);
|
|
57
|
+
}
|
|
58
|
+
globalThis.addEventListener('message', onMessage);
|
|
59
|
+
return () => {
|
|
60
|
+
globalThis.removeEventListener('message', onMessage);
|
|
61
|
+
};
|
|
62
|
+
}, []);
|
|
63
|
+
// A region further down the page than the stage shows is brought into view,
|
|
64
|
+
// or pointing at a row would mark something the reader cannot see.
|
|
65
|
+
useEffect(() => {
|
|
66
|
+
mark.current?.scrollIntoView({ block: 'nearest', inline: 'nearest' });
|
|
67
|
+
}, [highlight?.part]);
|
|
68
|
+
return (_jsxs("section", { className: "share-preview", "aria-label": t('share.preview'), children: [_jsxs("header", { className: "share-preview__header", children: [_jsxs(H6, { className: "share-preview__label", children: [_jsx(Icon, { icon: "eye-open", size: 13 }), t('share.preview'), _jsx(HelpIcon, { content: help })] }), _jsx(SharePreviewDevices, { value: device, onChange: setDevice, windowSize: windowSize })] }), _jsx("div", { className: "share-preview__stage", ref: stage, children: _jsxs("div", { className: "share-preview__device", style: { width: page.width * scale }, children: [_jsxs("div", { className: "share-preview__chrome", children: [_jsx(Icon, { icon: "eye-open", size: 11 }), _jsx("span", { className: "share-preview__address", children: sharePreviewAddress(url) }), _jsx("span", { className: "share-preview__size", children: sizeNote(page.width, page.height, scale) })] }), _jsxs("div", { className: "share-preview__page", style: { height: page.height * scale }, children: [_jsx("iframe", { ref: frame, className: "share-preview__frame", src: src, title: title, style: frameStyle(page.width, page.height, scale), onLoad: () => {
|
|
69
|
+
// What the page before it reported is where its own parts
|
|
70
|
+
// were, so it is dropped rather than drawn over this one.
|
|
71
|
+
setRegions(NO_REGIONS);
|
|
72
|
+
frame.current?.contentWindow?.postMessage({ type: SHARE_REGIONS_REQUEST }, '*');
|
|
73
|
+
} }), region === undefined || highlight === null ? null : (_jsx("div", { ref: mark, className: "share-preview__region", style: regionStyle(region, scale), children: _jsx("span", { className: "share-preview__region-name", children: highlight.label }) }))] })] }) })] }));
|
|
74
|
+
}
|
|
75
|
+
const NO_REGIONS = [];
|
|
76
|
+
function regionOf(regions, part) {
|
|
77
|
+
for (const region of regions) {
|
|
78
|
+
if (region.part === part)
|
|
79
|
+
return region;
|
|
80
|
+
}
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
function regionStyle(region, scale) {
|
|
84
|
+
return {
|
|
85
|
+
left: region.x * scale,
|
|
86
|
+
top: region.y * scale,
|
|
87
|
+
width: region.width * scale,
|
|
88
|
+
height: region.height * scale,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function frameStyle(width, height, scale) {
|
|
92
|
+
return {
|
|
93
|
+
width,
|
|
94
|
+
height,
|
|
95
|
+
border: 0,
|
|
96
|
+
transform: `scale(${scale})`,
|
|
97
|
+
transformOrigin: 'top left',
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
function sizeNote(width, height, scale) {
|
|
101
|
+
const size = `${formatInteger(width)} × ${formatInteger(height)}`;
|
|
102
|
+
return scale === 1 ? size : `${size} · ${Math.round(scale * 100)}%`;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=SharePreview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SharePreview.js","sourceRoot":"","sources":["../../../src/share/ui/SharePreview.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
import type { SharePreviewDeviceKey, SharePreviewSize } from '../core/index.ts';
|
|
3
|
+
export interface SharePreviewDevicesProps {
|
|
4
|
+
/** The screen the preview is laid out at. */
|
|
5
|
+
value: SharePreviewDeviceKey;
|
|
6
|
+
/** Called with the screen picked. */
|
|
7
|
+
onChange: (value: SharePreviewDeviceKey) => void;
|
|
8
|
+
/** The reader's own window, which the first screen is measured from. */
|
|
9
|
+
windowSize: Partial<SharePreviewSize>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The screens a link can be looked at on, as one row of glyphs.
|
|
13
|
+
*
|
|
14
|
+
* Each carries its name and its size, so a pointer resting on one says what it
|
|
15
|
+
* lays the page out at rather than leaving the reader to guess the icon.
|
|
16
|
+
* @param props - See {@link SharePreviewDevicesProps}.
|
|
17
|
+
* @returns The row of screen buttons.
|
|
18
|
+
*/
|
|
19
|
+
export declare function SharePreviewDevices(props: SharePreviewDevicesProps): ReactElement;
|
|
20
|
+
//# sourceMappingURL=SharePreviewDevices.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SharePreviewDevices.d.ts","sourceRoot":"","sources":["../../../src/share/ui/SharePreviewDevices.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAehF,MAAM,WAAW,wBAAwB;IACvC,6CAA6C;IAC7C,KAAK,EAAE,qBAAqB,CAAC;IAC7B,qCAAqC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACjD,wEAAwE;IACxE,UAAU,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACvC;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,YAAY,CA8Bd"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Button, ButtonGroup } from '@blueprintjs/core';
|
|
3
|
+
import { useChromeT } from "../../i18n/ui/useT.js";
|
|
4
|
+
import { SHARE_PREVIEW_DEVICES, sharePreviewSize } from "../core/index.js";
|
|
5
|
+
/**
|
|
6
|
+
* The glyph each screen is picked by: a window of one's own, a phone, a
|
|
7
|
+
* monitor, a projected display. The row reads as four screen sizes at a
|
|
8
|
+
* glance, which four words never did.
|
|
9
|
+
*/
|
|
10
|
+
const DEVICE_ICONS = {
|
|
11
|
+
window: 'application',
|
|
12
|
+
mobile: 'mobile-phone',
|
|
13
|
+
laptop: 'desktop',
|
|
14
|
+
hd: 'presentation',
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* The screens a link can be looked at on, as one row of glyphs.
|
|
18
|
+
*
|
|
19
|
+
* Each carries its name and its size, so a pointer resting on one says what it
|
|
20
|
+
* lays the page out at rather than leaving the reader to guess the icon.
|
|
21
|
+
* @param props - See {@link SharePreviewDevicesProps}.
|
|
22
|
+
* @returns The row of screen buttons.
|
|
23
|
+
*/
|
|
24
|
+
export function SharePreviewDevices(props) {
|
|
25
|
+
const { value, onChange, windowSize } = props;
|
|
26
|
+
const t = useChromeT();
|
|
27
|
+
return (_jsx(ButtonGroup, { className: "share-preview__devices", variant: "minimal", children: SHARE_PREVIEW_DEVICES.map((key) => {
|
|
28
|
+
const size = sharePreviewSize(key, windowSize);
|
|
29
|
+
const name = t(`share.device.${key}`);
|
|
30
|
+
const label = t('share.deviceSize', {
|
|
31
|
+
name,
|
|
32
|
+
width: size.width,
|
|
33
|
+
height: size.height,
|
|
34
|
+
});
|
|
35
|
+
return (_jsx(Button, { icon: DEVICE_ICONS[key], active: key === value, title: label, "aria-label": label, onClick: () => {
|
|
36
|
+
onChange(key);
|
|
37
|
+
} }, key));
|
|
38
|
+
}) }));
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=SharePreviewDevices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SharePreviewDevices.js","sourceRoot":"","sources":["../../../src/share/ui/SharePreviewDevices.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE3E;;;;GAIG;AACH,MAAM,YAAY,GAA4C;IAC5D,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,cAAc;IACtB,MAAM,EAAE,SAAS;IACjB,EAAE,EAAE,cAAc;CACnB,CAAC;AAWF;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAA+B;IAE/B,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAC9C,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IAEvB,OAAO,CACL,KAAC,WAAW,IAAC,SAAS,EAAC,wBAAwB,EAAC,OAAO,EAAC,SAAS,YAC9D,qBAAqB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACjC,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;YACtC,MAAM,KAAK,GAAG,CAAC,CAAC,kBAAkB,EAAE;gBAClC,IAAI;gBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;YAEH,OAAO,CACL,KAAC,MAAM,IAEL,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,EACvB,MAAM,EAAE,GAAG,KAAK,KAAK,EACrB,KAAK,EAAE,KAAK,gBACA,KAAK,EACjB,OAAO,EAAE,GAAG,EAAE;oBACZ,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC,IAPI,GAAG,CAQR,CACH,CAAC;QACJ,CAAC,CAAC,GACU,CACf,CAAC;AACJ,CAAC"}
|
package/lib/share/ui/index.d.ts
CHANGED
|
@@ -6,5 +6,6 @@ export { PagePart } from './PagePart.tsx';
|
|
|
6
6
|
export type { ShareButtonProps, ShareButtonVariant } from './ShareButton.tsx';
|
|
7
7
|
export { ShareButton } from './ShareButton.tsx';
|
|
8
8
|
export type { ShareDialogProps } from './ShareDialog.tsx';
|
|
9
|
+
export type { SharePartDescriptions } from './SharePartRow.tsx';
|
|
9
10
|
export { ShareDialog } from './ShareDialog.tsx';
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/share/ui/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/share/ui/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/share/ui/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA2B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAgB,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/share/ui/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA2B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAgB,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;AAGhD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether the page is being looked at through a share dialog's preview, and so
|
|
3
|
+
* marks each of its parts in the DOM for the dialog to find.
|
|
4
|
+
*
|
|
5
|
+
* A page nobody is framing marks nothing: the marker is a wrapper, and a
|
|
6
|
+
* wrapper changes what a `>` selector in a site's own stylesheet matches.
|
|
7
|
+
*/
|
|
8
|
+
export declare const ShareMarkingContext: import("react").Context<boolean>;
|
|
9
|
+
/**
|
|
10
|
+
* Whether this page marks its parts for a share dialog looking at it.
|
|
11
|
+
* @returns Whether the markers are rendered.
|
|
12
|
+
*/
|
|
13
|
+
export declare function useShareMarking(): boolean;
|
|
14
|
+
//# sourceMappingURL=shareMarking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shareMarking.d.ts","sourceRoot":"","sources":["../../../src/share/ui/shareMarking.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,kCAAuB,CAAC;AAExD;;;GAGG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC"}
|