react-cheminfo 0.70.0 → 0.72.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/README.md +57 -2
  2. package/lib/about/core/providers.d.ts +6 -0
  3. package/lib/about/core/providers.d.ts.map +1 -1
  4. package/lib/about/core/providers.js +7 -0
  5. package/lib/about/core/providers.js.map +1 -1
  6. package/lib/about/ui/AboutProvidedBy.js +34 -0
  7. package/lib/about/ui/AboutProvidedBy.js.map +1 -1
  8. package/lib/credits/core/credits.d.ts +6 -0
  9. package/lib/credits/core/credits.d.ts.map +1 -1
  10. package/lib/credits/core/credits.js +8 -0
  11. package/lib/credits/core/credits.js.map +1 -1
  12. package/lib/download/core/figurePng.d.ts +14 -0
  13. package/lib/download/core/figurePng.d.ts.map +1 -1
  14. package/lib/download/core/figurePng.js +21 -6
  15. package/lib/download/core/figurePng.js.map +1 -1
  16. package/lib/download/core/svgToPng.d.ts.map +1 -1
  17. package/lib/download/core/svgToPng.js +4 -2
  18. package/lib/download/core/svgToPng.js.map +1 -1
  19. package/lib/format/core/relativeTime.d.ts +8 -3
  20. package/lib/format/core/relativeTime.d.ts.map +1 -1
  21. package/lib/format/core/relativeTime.js +19 -7
  22. package/lib/format/core/relativeTime.js.map +1 -1
  23. package/lib/host/core/connectHost.d.ts +25 -34
  24. package/lib/host/core/connectHost.d.ts.map +1 -1
  25. package/lib/host/core/connectHost.js +43 -89
  26. package/lib/host/core/connectHost.js.map +1 -1
  27. package/lib/host/core/hostOutputs.d.ts +58 -0
  28. package/lib/host/core/hostOutputs.d.ts.map +1 -0
  29. package/lib/host/core/hostOutputs.js +151 -0
  30. package/lib/host/core/hostOutputs.js.map +1 -0
  31. package/lib/host/core/index.d.ts +9 -3
  32. package/lib/host/core/index.d.ts.map +1 -1
  33. package/lib/host/core/index.js +4 -1
  34. package/lib/host/core/index.js.map +1 -1
  35. package/lib/host/core/irKinds.d.ts +124 -0
  36. package/lib/host/core/irKinds.d.ts.map +1 -0
  37. package/lib/host/core/irKinds.js +46 -0
  38. package/lib/host/core/irKinds.js.map +1 -0
  39. package/lib/host/core/kinds.d.ts +13 -5
  40. package/lib/host/core/kinds.d.ts.map +1 -1
  41. package/lib/host/core/kinds.js +11 -5
  42. package/lib/host/core/kinds.js.map +1 -1
  43. package/lib/host/core/protocol.d.ts +50 -7
  44. package/lib/host/core/protocol.d.ts.map +1 -1
  45. package/lib/host/core/protocol.js +10 -6
  46. package/lib/host/core/protocol.js.map +1 -1
  47. package/lib/host/core/selectInputs.d.ts +37 -0
  48. package/lib/host/core/selectInputs.d.ts.map +1 -0
  49. package/lib/host/core/selectInputs.js +110 -0
  50. package/lib/host/core/selectInputs.js.map +1 -0
  51. package/lib/host/testing/sciPeaks.d.ts +31 -0
  52. package/lib/host/testing/sciPeaks.d.ts.map +1 -1
  53. package/lib/host/testing/sciPeaks.js +73 -0
  54. package/lib/host/testing/sciPeaks.js.map +1 -1
  55. package/lib/host/testing/standInHost.d.ts +9 -1
  56. package/lib/host/testing/standInHost.d.ts.map +1 -1
  57. package/lib/host/testing/standInHost.js +19 -1
  58. package/lib/host/testing/standInHost.js.map +1 -1
  59. package/lib/host/ui/useHostConnection.d.ts +13 -5
  60. package/lib/host/ui/useHostConnection.d.ts.map +1 -1
  61. package/lib/host/ui/useHostConnection.js +4 -3
  62. package/lib/host/ui/useHostConnection.js.map +1 -1
  63. package/lib/host-testing.d.ts +2 -2
  64. package/lib/host-testing.d.ts.map +1 -1
  65. package/lib/host-testing.js +2 -2
  66. package/lib/host-testing.js.map +1 -1
  67. package/lib/i18n/core/chromeCatalog.d.ts +1 -1
  68. package/lib/i18n/core/chromeCatalog.d.ts.map +1 -1
  69. package/lib/ir/core/handPicking.d.ts +58 -0
  70. package/lib/ir/core/handPicking.d.ts.map +1 -0
  71. package/lib/ir/core/handPicking.js +130 -0
  72. package/lib/ir/core/handPicking.js.map +1 -0
  73. package/lib/ir/core/index.d.ts +3 -0
  74. package/lib/ir/core/index.d.ts.map +1 -1
  75. package/lib/ir/core/index.js +3 -0
  76. package/lib/ir/core/index.js.map +1 -1
  77. package/lib/ir/core/irBandState.d.ts +57 -0
  78. package/lib/ir/core/irBandState.d.ts.map +1 -0
  79. package/lib/ir/core/irBandState.js +119 -0
  80. package/lib/ir/core/irBandState.js.map +1 -0
  81. package/lib/ir/core/irCommands.d.ts +11 -0
  82. package/lib/ir/core/irCommands.d.ts.map +1 -1
  83. package/lib/ir/core/irCommands.js +6 -0
  84. package/lib/ir/core/irCommands.js.map +1 -1
  85. package/lib/ir/core/irPeaks.d.ts +28 -0
  86. package/lib/ir/core/irPeaks.d.ts.map +1 -0
  87. package/lib/ir/core/irPeaks.js +66 -0
  88. package/lib/ir/core/irPeaks.js.map +1 -0
  89. package/lib/ir/core/irReducer.d.ts +8 -0
  90. package/lib/ir/core/irReducer.d.ts.map +1 -1
  91. package/lib/ir/core/irReducer.js +15 -32
  92. package/lib/ir/core/irReducer.js.map +1 -1
  93. package/lib/ir/core/irSpectrum.d.ts +15 -0
  94. package/lib/ir/core/irSpectrum.d.ts.map +1 -1
  95. package/lib/ir/core/irSpectrum.js.map +1 -1
  96. package/lib/ir/core/irState.d.ts +9 -6
  97. package/lib/ir/core/irState.d.ts.map +1 -1
  98. package/lib/ir/core/irState.js +10 -6
  99. package/lib/ir/core/irState.js.map +1 -1
  100. package/lib/ir/core/pickBands.d.ts +14 -0
  101. package/lib/ir/core/pickBands.d.ts.map +1 -1
  102. package/lib/ir/core/pickBands.js +39 -33
  103. package/lib/ir/core/pickBands.js.map +1 -1
  104. package/lib/ir/core/ramanBands.d.ts +9 -1
  105. package/lib/ir/core/ramanBands.d.ts.map +1 -1
  106. package/lib/ir/core/ramanBands.js +2 -2
  107. package/lib/ir/core/ramanBands.js.map +1 -1
  108. package/lib/ir/core/spectrumBands.d.ts +46 -0
  109. package/lib/ir/core/spectrumBands.d.ts.map +1 -0
  110. package/lib/ir/core/spectrumBands.js +98 -0
  111. package/lib/ir/core/spectrumBands.js.map +1 -0
  112. package/lib/ir/ui/BandRow.d.ts +5 -0
  113. package/lib/ir/ui/BandRow.d.ts.map +1 -1
  114. package/lib/ir/ui/BandRow.js +4 -3
  115. package/lib/ir/ui/BandRow.js.map +1 -1
  116. package/lib/ir/ui/BandsPanel.d.ts +5 -0
  117. package/lib/ir/ui/BandsPanel.d.ts.map +1 -1
  118. package/lib/ir/ui/BandsPanel.js +36 -16
  119. package/lib/ir/ui/BandsPanel.js.map +1 -1
  120. package/lib/ir/ui/BandsToolbar.d.ts +9 -0
  121. package/lib/ir/ui/BandsToolbar.d.ts.map +1 -0
  122. package/lib/ir/ui/BandsToolbar.js +61 -0
  123. package/lib/ir/ui/BandsToolbar.js.map +1 -0
  124. package/lib/ir/ui/IrCanvas.d.ts +2 -1
  125. package/lib/ir/ui/IrCanvas.d.ts.map +1 -1
  126. package/lib/ir/ui/IrCanvas.js +19 -5
  127. package/lib/ir/ui/IrCanvas.js.map +1 -1
  128. package/lib/ir/ui/IrChart.d.ts.map +1 -1
  129. package/lib/ir/ui/IrChart.js +8 -1
  130. package/lib/ir/ui/IrChart.js.map +1 -1
  131. package/lib/ir/ui/IrDocumentationDialog.js +1 -1
  132. package/lib/ir/ui/IrDocumentationDialog.js.map +1 -1
  133. package/lib/ir/ui/IrEditor.d.ts +4 -2
  134. package/lib/ir/ui/IrEditor.d.ts.map +1 -1
  135. package/lib/ir/ui/IrEditor.js.map +1 -1
  136. package/lib/ir/ui/IrShell.d.ts.map +1 -1
  137. package/lib/ir/ui/IrShell.js +6 -0
  138. package/lib/ir/ui/IrShell.js.map +1 -1
  139. package/lib/ir/ui/IrStatusBar.d.ts.map +1 -1
  140. package/lib/ir/ui/IrStatusBar.js +1 -1
  141. package/lib/ir/ui/IrStatusBar.js.map +1 -1
  142. package/lib/ir/ui/IrToolbar.d.ts +4 -3
  143. package/lib/ir/ui/IrToolbar.d.ts.map +1 -1
  144. package/lib/ir/ui/IrToolbar.js +5 -4
  145. package/lib/ir/ui/IrToolbar.js.map +1 -1
  146. package/lib/ir/ui/VibrationalEditor.d.ts +2 -1
  147. package/lib/ir/ui/VibrationalEditor.d.ts.map +1 -1
  148. package/lib/ir/ui/VibrationalEditor.js.map +1 -1
  149. package/lib/ir/ui/irActions.d.ts +5 -0
  150. package/lib/ir/ui/irActions.d.ts.map +1 -1
  151. package/lib/ir/ui/irActions.js +6 -0
  152. package/lib/ir/ui/irActions.js.map +1 -1
  153. package/lib/ir/ui/irChartProps.d.ts +4 -1
  154. package/lib/ir/ui/irChartProps.d.ts.map +1 -1
  155. package/lib/ir/ui/useIrEditor.d.ts +5 -11
  156. package/lib/ir/ui/useIrEditor.d.ts.map +1 -1
  157. package/lib/ir/ui/useIrEditor.js +17 -18
  158. package/lib/ir/ui/useIrEditor.js.map +1 -1
  159. package/lib/locales/de.json +63 -0
  160. package/lib/locales/en.json +63 -0
  161. package/lib/locales/es.json +63 -0
  162. package/lib/locales/fr.json +63 -0
  163. package/lib/locales/it.json +63 -0
  164. package/lib/slides/ui/slideSanitizeSchema.d.ts +3 -2
  165. package/lib/slides/ui/slideSanitizeSchema.d.ts.map +1 -1
  166. package/lib/slides/ui/slideSanitizeSchema.js +82 -2
  167. package/lib/slides/ui/slideSanitizeSchema.js.map +1 -1
  168. package/package.json +1 -1
  169. package/src/about/core/providers.ts +7 -0
  170. package/src/about/ui/AboutProvidedBy.tsx +49 -0
  171. package/src/credits/core/credits.ts +9 -0
  172. package/src/download/core/figurePng.ts +21 -8
  173. package/src/download/core/svgToPng.ts +3 -4
  174. package/src/format/core/relativeTime.ts +29 -7
  175. package/src/host/core/connectHost.ts +77 -120
  176. package/src/host/core/hostOutputs.ts +197 -0
  177. package/src/host/core/index.ts +13 -7
  178. package/src/host/core/irKinds.ts +92 -0
  179. package/src/host/core/kinds.ts +16 -6
  180. package/src/host/core/protocol.ts +50 -8
  181. package/src/host/core/selectInputs.ts +145 -0
  182. package/src/host/testing/sciPeaks.ts +140 -0
  183. package/src/host/testing/standInHost.ts +30 -5
  184. package/src/host/ui/useHostConnection.ts +17 -8
  185. package/src/host-testing.ts +4 -0
  186. package/src/ir/core/handPicking.ts +154 -0
  187. package/src/ir/core/index.ts +14 -0
  188. package/src/ir/core/irBandState.ts +155 -0
  189. package/src/ir/core/irCommands.ts +7 -0
  190. package/src/ir/core/irPeaks.ts +79 -0
  191. package/src/ir/core/irReducer.ts +27 -34
  192. package/src/ir/core/irSpectrum.ts +16 -0
  193. package/src/ir/core/irState.ts +15 -8
  194. package/src/ir/core/pickBands.ts +46 -39
  195. package/src/ir/core/ramanBands.ts +2 -2
  196. package/src/ir/core/spectrumBands.ts +113 -0
  197. package/src/ir/ui/BandRow.tsx +20 -2
  198. package/src/ir/ui/BandsPanel.tsx +46 -88
  199. package/src/ir/ui/BandsToolbar.tsx +152 -0
  200. package/src/ir/ui/IrCanvas.tsx +22 -11
  201. package/src/ir/ui/IrChart.tsx +10 -1
  202. package/src/ir/ui/IrDocumentationDialog.tsx +7 -0
  203. package/src/ir/ui/IrEditor.tsx +4 -2
  204. package/src/ir/ui/IrShell.tsx +5 -0
  205. package/src/ir/ui/IrStatusBar.tsx +4 -1
  206. package/src/ir/ui/IrToolbar.tsx +14 -5
  207. package/src/ir/ui/VibrationalEditor.tsx +2 -1
  208. package/src/ir/ui/irActions.ts +11 -0
  209. package/src/ir/ui/irChartProps.ts +4 -1
  210. package/src/ir/ui/useIrEditor.ts +21 -21
  211. package/src/locales/de.json +63 -0
  212. package/src/locales/en.json +63 -0
  213. package/src/locales/es.json +63 -0
  214. package/src/locales/fr.json +63 -0
  215. package/src/locales/it.json +63 -0
  216. package/src/slides/ui/slideSanitizeSchema.ts +86 -2
  217. package/styles/chrome.css +7 -0
  218. package/styles/slides.css +47 -0
package/README.md CHANGED
@@ -134,7 +134,7 @@ through a wildcard subpath exactly as `react-science` serves its own.
134
134
  | **Chemistry** | `atomicOrbitalsOf`, `configurationOf`, `classifyMolfile`, `readStructure`, `toMolfileExport` | `AtomicOrbitalViewer` (`/orbital`), `StructureEditor`, `Structure` (`/structure`) |
135
135
  | **Conformers** | `generateConformers`, `continueConformers`, `refineConformers`, `conformerShape`, `isSameMinimum`, `rankByEnergy`, `minimiseConformer`, `DEFAULT_CONFORMER_OPTIONS`, `CONFORMER_STRATEGIES` (all `/conformers`); `GeometryRelaxer`, `readRelaxableGeometry`, `centredRmsd` | — |
136
136
  | **Spectrum charts** | `chartScale`, `chartAxisScale`, `plotRect`, `zoomDomain`, `zoomSelection`, `labelStackBaselines`, `layoutAnnotationBoxes`, `profilePath`, `stickPath`, `guidePlacement`, `readoutPlacement`, `stackCapacity`, `nextSpectrumColor`, `panelStyles`, `statusBar` | `Axes`, `AxisGuide`, `ChartTracker`, `ChartStack`, `SelectionRect`, `TraceLegend`, `PlotCaption`, `useChartZoom`, `useChartPointer`, `useChartSize`, `SidePanelStack`, `PanelRail`, `Section`, `FilterInput`, `AboutDialogFrame`, `DocumentationDialogFrame`, `FigureDownload`, `useFigureDownload` |
137
- | **Infrared and Raman** | `loadIrSpectra`, `toIrSpectrum`, `pickBands`, `assignBands`, `BAND_ASSIGNMENTS`, `irSpectrumToJcamp`, `IR_MODE_RULES`, `IR_TECHNIQUE_RULES`, `nearestBandAt`, `planBandLabels`, `irReducer` (all `/ir`) | `IrEditor`, `IrChart`, `BandsPanel`, `SpectraPanel`, `MetadataPanel`, `useIrEditor` (all `/ir`); `RamanEditor` (`/raman`) |
137
+ | **Infrared and Raman** | `loadIrSpectra`, `toIrSpectrum`, `pickBands`, `pickBandAt`, `editBandsAt`, `bandsFromPeaks`, `peaksFromBands`, `assignBands`, `BAND_ASSIGNMENTS`, `irSpectrumToJcamp`, `IR_MODE_RULES`, `IR_TECHNIQUE_RULES`, `nearestBandAt`, `planBandLabels`, `irReducer` (all `/ir`) | `IrEditor`, `IrChart`, `BandsPanel`, `SpectraPanel`, `MetadataPanel`, `useIrEditor` (all `/ir`); `RamanEditor` (`/raman`) |
138
138
  | **Mass spectra** | `loadMassSpectra`, `toMassSpectra`, `analyseSpectrum`, `decideResolution`, `resolutionOf`, `mzDecimalsOf`, `planPeakLabels`, `peakTableRows`, `massSpectrumToJcamp`, `massReducer` (all `/mass`) | `MassEditor`, `MassChart`, `SpectraPanel`, `PeaksPanel`, `MetadataPanel`, `useMassEditor` (all `/mass`) |
139
139
  | **Spectra** | `FILTER_CATALOG`, `filterMenu`, `settingsProblems`, `normalizationFilters`, `addFilter`, `moveFilter`, `setFilterOption`, `principalComponentChoices`, `clampPrincipalComponents`, `EMPTY_SETTINGS` (all `/spectra`) | `SpectraSettingsEditor`, `FilterChainEditor`, `PrincipalComponentSelect` (all `/spectra`) |
140
140
  | **About** | `resolveAbout`, `aboutProblems` | `AboutPage` |
@@ -146,7 +146,7 @@ through a wildcard subpath exactly as `react-science` serves its own.
146
146
  | **Parallel coordinates** | `parallelAxisOf`, `parallelAxisLayouts`, `parallelIncludedMask`, `parallelKeptCount`, `parallelNearestRow`, `parallelSegmentAt`, `parallelBandAt`, `parallelRangeOf`, `parallelPalette`, `parallelColorSteps`, `paintParallelLines` | `ParallelCoordinates` |
147
147
  | **Periodic table** | `PERIODIC_ELEMENTS`, `elementBySymbol`, `elementByAtomicNumber`, `cellOf`, `placedElements`, `elementByArrowKey`, `EMPTY_BLOCK`, `categorySwatch`, `CATEGORY_LABELS` | `PeriodicTable`, `ElementCell`, `CategoryLegend` |
148
148
  | **Taxonomy** | `TAXON_RANKS`, `PRINCIPAL_RANKS`, `rankOrder`, `isPrincipalRank`, `isGenusOrBelow`, `isAboveGenus`, `principalLineage`, `lineageFromNodes`, `lineageFromRanks`, `genusOrBelow`, `ncbiTaxonomyUrl`, `splitOrganismName` | `TaxonLineage`, `OrganismName`, `useRankLabel` |
149
- | **Framed by a host** | `hostStructureLoader`, `readHostMolecule`, `STRUCTURE_KINDS`, `connectHost`, `selectInputs`, `checkValue`, `kindAccepts`, `parseRequest` (all `/host`); `startStandInHost`, `SCIPEAKS_ETHYLBENZENE_LOAD` (`/host-testing`) | `useHostConnection` (`/host`) |
149
+ | **Framed by a host** | `hostStructureLoader`, `readHostMolecule`, `STRUCTURE_KINDS`, `IR_JDX_SCHEMA`, `IR_PEAKS_SCHEMA`, `connectHost`, `selectInputs`, `checkValue`, `kindAccepts`, `parseRequest`, `OUTPUT_DELAY` (all `/host`); `startStandInHost`, `sendStandInHostRequest`, `SCIPEAKS_ETHYLBENZENE_LOAD`, `sciPeaksEthylbenzeneIrLoad` (`/host-testing`) | `useHostConnection` (`/host`) |
150
150
  | **Answer cards** | `CARD_PARAM`, `isCardAddress`, `sitePageUrl`, `cardPageUrl`, `framedPageUrl`, `roomForPanels`; `answerAddresses`, `joinAddress`, `viewOrigins`, `cardMeta`, `pageAnswer`, `siteView` (all `/server`) | `CardFrame`, `CardDetailsButton`, `CardFigure`, `CopyTableButton`, `fitCardToFrame`, `useFitCardToFrame`, `useOverlayRoom`, `holdRoomForPanels` (all `/card`); `StructureExportButton`, `useStructureDraft` (`/structure`) |
151
151
 
152
152
  Everything in that table is exported from `./core`, `./ui`, `./slides`,
@@ -321,6 +321,9 @@ import { AccountButton } from 'react-cheminfo/ui';
321
321
  - `items` are the account's own pages, listed in the menu above Sign out.
322
322
  - `signInHref` keeps the invitation a real link, so a middle click opens a tab;
323
323
  a site with no page for it passes `onSignIn` alone and opens a dialog.
324
+ - A site on the shared accounts draws the `AccountMenu` of
325
+ [service-accounts-frontend](https://github.com/cheminfo/service-monitor/tree/main/accounts-frontend),
326
+ which feeds this button from the session.
324
327
 
325
328
  ### `AtomicOrbitalViewer`
326
329
 
@@ -985,6 +988,54 @@ useHostConnection(TOOL, { load: loadFromHost, build: BUILD_INFO });
985
988
  - **The same document twice is applied once**, so a host re-sending a sample
986
989
  never overwrites what the visitor did with it.
987
990
 
991
+ ### Spectra in, bands back
992
+
993
+ A measured infrared spectrum travels as `spectra.ir.jdx` — the JCAMP-DX text
994
+ and the bands picked on it — and its bands alone as `spectra.ir.peaks`. A band
995
+ is written the way SciPeaks stores one, so what comes back is saved as it
996
+ arrives:
997
+
998
+ ```json
999
+ {
1000
+ "wavenumber": 1613.86,
1001
+ "absorbance": 0.4737,
1002
+ "transmittance": 0.336,
1003
+ "kind": "m"
1004
+ }
1005
+ ```
1006
+
1007
+ `transmittance` is a fraction, not a percentage, and only `wavenumber` is
1008
+ required. Pipeline's own `spectra.ir` is a computed spectrum, not a measurement.
1009
+
1010
+ An input with `many: true` takes every item of its kinds, and one with
1011
+ `optional: true` may go without; the request is refused only when no input got
1012
+ anything. `load` may return a promise, and requests are served in order.
1013
+
1014
+ A tool hands values back through `outputs`, a store read synchronously — a
1015
+ `computed` signal does it:
1016
+
1017
+ ```ts
1018
+ // One item per value, with its `key` and the `id` of the item it came from.
1019
+ const peaks = computed(() => peakItems(measured.value, hostIds.value));
1020
+
1021
+ useHostConnection(TOOL, {
1022
+ load,
1023
+ outputs: {
1024
+ read: () => peaks.value,
1025
+ subscribe: (heard) => peaks.subscribe(heard),
1026
+ },
1027
+ build: BUILD_INFO,
1028
+ });
1029
+ ```
1030
+
1031
+ - **`get`** is answered with the current values: `{ ok: true, items }`.
1032
+ - **`output`** is sent unasked when a value the host's load `accept`s, by
1033
+ its key or its kind, changes: `{ type: 'output', document, items }`, 300 ms after the
1034
+ last edit. It carries only the items that changed, each with the `id` of the
1035
+ item it was made from, so a host knows which spectrum to save them on.
1036
+ - **Opening a document sends nothing back.** What the tool shows once `load`
1037
+ returns is what the host already has, so `read` must reflect a load by then.
1038
+
988
1039
  `react-cheminfo/host-testing` serves a stand-in host for Playwright on
989
1040
  `127.0.0.1`, and exports `SCIPEAKS_ETHYLBENZENE_LOAD`: the message SciPeaks'
990
1041
  tool tab sends for a sample, byte for byte. visualizer-helper's tests pin the
@@ -998,6 +1049,10 @@ await page.goto(
998
1049
  const { results } = await page.evaluate(readStandInHostLog);
999
1050
  ```
1000
1051
 
1052
+ `sciPeaksEthylbenzeneIrLoad(jdx)` is the load SciPeaks' tool tab is to send
1053
+ for that sample's infrared spectrum, its bands as stored. Hand it the
1054
+ attachment's JCAMP-DX. `sendStandInHostRequest` sends a later `get`.
1055
+
1001
1056
  ## Protecting a link
1002
1057
 
1003
1058
  The share dialog can hand out a **sealed link**: the whole query string moved
@@ -27,5 +27,11 @@ export declare const PROVIDERS: readonly [{
27
27
  readonly fullName: "École polytechnique fédérale de Lausanne";
28
28
  readonly href: "https://www.epfl.ch";
29
29
  readonly location: "Lausanne, Switzerland";
30
+ }, {
31
+ readonly id: "unil-esc";
32
+ readonly name: "ESC";
33
+ readonly fullName: "École des sciences criminelles, Université de Lausanne";
34
+ readonly href: "https://www.unil.ch/esc/";
35
+ readonly location: "Lausanne, Switzerland";
30
36
  }];
31
37
  //# sourceMappingURL=providers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../src/about/core/providers.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,EAAE,EAAE,MAAM,CAAC;IACX,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,8CAA8C;AAC9C,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAE1D;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,SAAS,UAAU,EAAE,GAAG,aAAa,EAAE,CAUrE;AAED,uEAAuE;AACvE,eAAO,MAAM,SAAS;;;;;;EAQuB,CAAC"}
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../src/about/core/providers.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,EAAE,EAAE,MAAM,CAAC;IACX,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,8CAA8C;AAC9C,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAE1D;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,SAAS,UAAU,EAAE,GAAG,aAAa,EAAE,CAUrE;AAED,uEAAuE;AACvE,eAAO,MAAM,SAAS;;;;;;;;;;;;EAeuB,CAAC"}
@@ -24,5 +24,12 @@ export const PROVIDERS = [
24
24
  href: 'https://www.epfl.ch',
25
25
  location: 'Lausanne, Switzerland',
26
26
  },
27
+ {
28
+ id: 'unil-esc',
29
+ name: 'ESC',
30
+ fullName: 'École des sciences criminelles, Université de Lausanne',
31
+ href: 'https://www.unil.ch/esc/',
32
+ location: 'Lausanne, Switzerland',
33
+ },
27
34
  ];
28
35
  //# sourceMappingURL=providers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../src/about/core/providers.ts"],"names":[],"mappings":"AAiBA;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,GAA0B;IAClD,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACjE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,uEAAuE;AACvE,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,0CAA0C;QACpD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,uBAAuB;KAClC;CAC0C,CAAC"}
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../src/about/core/providers.ts"],"names":[],"mappings":"AAiBA;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,GAA0B;IAClD,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACjE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,uEAAuE;AACvE,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,0CAA0C;QACpD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,uBAAuB;KAClC;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,wDAAwD;QAClE,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,uBAAuB;KAClC;CAC0C,CAAC"}
@@ -28,10 +28,18 @@ function ProviderLogo(props) {
28
28
  switch (provider.id) {
29
29
  case 'epfl':
30
30
  return _jsx(EpflLogo, { label: label });
31
+ case 'unil-esc':
32
+ return _jsx(UnilEscLockup, { label: label });
31
33
  default:
32
34
  return _jsx("span", { children: provider.name });
33
35
  }
34
36
  }
37
+ // The school's name set in type beside its university's, in the black the
38
+ // university writes its name in: no drawing of its emblem is kept here, and a
39
+ // name nobody can misread credits it better than a guess at one.
40
+ function UnilEscLockup(props) {
41
+ return (_jsxs("span", { role: "img", "aria-label": props.label, style: UNIL_LOCKUP_STYLE, children: [_jsx("span", { style: UNIL_NAME_STYLE, children: "UNIL" }), _jsx("span", { style: UNIL_RULE_STYLE }), _jsxs("span", { style: UNIL_SCHOOL_STYLE, children: ["\u00C9cole des", _jsx("br", {}), "sciences criminelles"] })] }));
42
+ }
35
43
  function EpflLogo(props) {
36
44
  return (_jsx("svg", { width: 112, height: (112 * 53) / 182.4, viewBox: "0 0 182.4 53", role: "img", "aria-label": props.label, style: { display: 'block' }, children: _jsxs("g", { fill: "red", children: [_jsx("polygon", { points: "0 21.6 11.43 21.6 11.43 9.8 38.34 9.8 38.34 0 0 0 0 21.6" }), _jsx("polygon", { points: "0 53 38.34 53 38.34 43.2 11.43 43.2 11.43 31.4 0 31.4 0 53" }), _jsx("rect", { x: "11.43", y: "21.6", width: "24.61", height: "9.8" }), _jsx("path", { d: "M86,4.87a16.12,16.12,0,0,0-5.68-3.53A23.76,23.76,0,0,0,71.82,0H48.14V53H59.57V31.4H71.82a23.76,23.76,0,0,0,8.46-1.34A16.12,16.12,0,0,0,86,26.53a13.43,13.43,0,0,0,3.19-5,17.38,17.38,0,0,0,0-11.62A13.52,13.52,0,0,0,86,4.87ZM78,18.73a5.7,5.7,0,0,1-2.26,1.8,11.33,11.33,0,0,1-3.27.85,32,32,0,0,1-3.86.22H59.57V9.8h9.05a32,32,0,0,1,3.86.22,11,11,0,0,1,3.27.86A5.59,5.59,0,0,1,78,12.67a5,5,0,0,1,.86,3A5,5,0,0,1,78,18.73Z" }), _jsx("polygon", { points: "155.47 43.2 155.47 0 144.04 0 144.04 53 182.38 53 182.38 43.2 155.47 43.2" }), _jsx("polygon", { points: "97.42 21.6 108.85 21.6 108.85 9.8 135.76 9.8 135.76 0 97.42 0 97.42 21.6" }), _jsx("rect", { x: "97.42", y: "31.4", width: "11.43", height: "21.6" }), _jsx("rect", { x: "108.85", y: "21.6", width: "24.61", height: "9.8" })] }) }));
37
45
  }
@@ -83,4 +91,30 @@ const ROLES_STYLE = {
83
91
  paddingLeft: 20,
84
92
  borderTop: '1px solid var(--border)',
85
93
  };
94
+ const UNIL_LOCKUP_STYLE = {
95
+ display: 'flex',
96
+ alignItems: 'center',
97
+ gap: 8,
98
+ height: 31,
99
+ // The institution's own colour, not a family token: the tile is white on
100
+ // every theme.
101
+ color: 'black',
102
+ };
103
+ const UNIL_NAME_STYLE = {
104
+ fontSize: 24,
105
+ fontWeight: 800,
106
+ letterSpacing: '0.02em',
107
+ lineHeight: 1,
108
+ };
109
+ const UNIL_RULE_STYLE = {
110
+ alignSelf: 'stretch',
111
+ width: 1,
112
+ background: 'black',
113
+ };
114
+ const UNIL_SCHOOL_STYLE = {
115
+ fontSize: 10.5,
116
+ fontWeight: 600,
117
+ lineHeight: 1.15,
118
+ whiteSpace: 'nowrap',
119
+ };
86
120
  //# sourceMappingURL=AboutProvidedBy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AboutProvidedBy.js","sourceRoot":"","sources":["../../../src/about/ui/AboutProvidedBy.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AboutProvidedBy.js","sourceRoot":"","sources":["../../../src/about/ui/AboutProvidedBy.tsx"],"names":[],"mappings":"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"}
@@ -216,6 +216,12 @@ export declare const CREDITS: readonly [{
216
216
  readonly href: "https://www.nmrium.org/";
217
217
  readonly description: "displays and processes the NMR spectra, read from their original files.";
218
218
  readonly license: "MIT AND CC-BY-NC-SA-4.0";
219
+ }, {
220
+ readonly id: "nmr-processing";
221
+ readonly name: "nmr-processing";
222
+ readonly href: "https://www.npmjs.com/package/nmr-processing";
223
+ readonly description: "simulates NMR spectra from chemical shifts and coupling constants.";
224
+ readonly license: "CC-BY-NC-SA-4.0";
219
225
  }, {
220
226
  readonly id: "blueprint";
221
227
  readonly name: "Blueprint";
@@ -1 +1 @@
1
- {"version":3,"file":"credits.d.ts","sourceRoot":"","sources":["../../../src/credits/core/credits.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qCAAqC;AACrC,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAEtD;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,QAAQ,EAAE,GAAG,WAAW,EAAE,CAU/D;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAE5D;AAED;;;GAGG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6ZuB,CAAC"}
1
+ {"version":3,"file":"credits.d.ts","sourceRoot":"","sources":["../../../src/credits/core/credits.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qCAAqC;AACrC,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAEtD;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,QAAQ,EAAE,GAAG,WAAW,EAAE,CAU/D;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAE5D;AAED;;;GAGG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsauB,CAAC"}
@@ -243,6 +243,14 @@ export const CREDITS = [
243
243
  description: 'displays and processes the NMR spectra, read from their original files.',
244
244
  license: 'MIT AND CC-BY-NC-SA-4.0',
245
245
  },
246
+ {
247
+ // 22.x publishes no repository URL, so its npm page stands for it.
248
+ id: 'nmr-processing',
249
+ name: 'nmr-processing',
250
+ href: 'https://www.npmjs.com/package/nmr-processing',
251
+ description: 'simulates NMR spectra from chemical shifts and coupling constants.',
252
+ license: 'CC-BY-NC-SA-4.0',
253
+ },
246
254
  {
247
255
  id: 'blueprint',
248
256
  name: 'Blueprint',
@@ -1 +1 @@
1
- {"version":3,"file":"credits.js","sourceRoot":"","sources":["../../../src/credits/core/credits.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credits.js","sourceRoot":"","sources":["../../../src/credits/core/credits.ts"],"names":[],"mappings":"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"}
@@ -18,4 +18,18 @@ export declare const FIGURE_PNG_TYPE = "image/png";
18
18
  * @throws {Error} When the browser cannot paint or encode it.
19
19
  */
20
20
  export declare function figurePng(figure: FigureSvg, scale?: number): Promise<Blob>;
21
+ /**
22
+ * Where the browser reads an SVG document back from, to paint it.
23
+ *
24
+ * An object URL rather than a `data:` one, because a figure of a few thousand
25
+ * dots runs to hundreds of kilobytes and a `data:` URL that long is refused
26
+ * outright by some browsers — except for a document holding a
27
+ * `<foreignObject>`, which is how native MathML sits in a chart. Chromium
28
+ * taints any canvas that paints such a document read from an object URL, and
29
+ * the figure then cannot be saved at all; read from a `data:` URL it paints
30
+ * clean. Such a figure carries a handful of labels, far short of that length.
31
+ * @param markup - The SVG document.
32
+ * @returns The URL; one starting with `blob:` is revoked once read.
33
+ */
34
+ export declare function svgImageUrl(markup: string): string;
21
35
  //# sourceMappingURL=figurePng.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"figurePng.d.ts","sourceRoot":"","sources":["../../../src/download/core/figurePng.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,qCAAqC;AACrC,eAAO,MAAM,eAAe,cAAc,CAAC;AAE3C;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,SAAS,EACjB,KAAK,GAAE,MAA6B,GACnC,OAAO,CAAC,IAAI,CAAC,CAcf"}
1
+ {"version":3,"file":"figurePng.d.ts","sourceRoot":"","sources":["../../../src/download/core/figurePng.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,qCAAqC;AACrC,eAAO,MAAM,eAAe,cAAc,CAAC;AAE3C;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,SAAS,EACjB,KAAK,GAAE,MAA6B,GACnC,OAAO,CAAC,IAAI,CAAC,CAcf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIlD"}
@@ -32,16 +32,30 @@ export async function figurePng(figure, scale = DEFAULT_FIGURE_SCALE) {
32
32
  return encode(canvas);
33
33
  }
34
34
  /**
35
- * The SVG document, decoded and ready to be painted.
35
+ * Where the browser reads an SVG document back from, to paint it.
36
36
  *
37
- * It goes through an object URL rather than a `data:` one because a figure of
38
- * a few thousand dots runs to hundreds of kilobytes, and a `data:` URL that
39
- * long is refused outright by some browsers.
37
+ * An object URL rather than a `data:` one, because a figure of a few thousand
38
+ * dots runs to hundreds of kilobytes and a `data:` URL that long is refused
39
+ * outright by some browsers — except for a document holding a
40
+ * `<foreignObject>`, which is how native MathML sits in a chart. Chromium
41
+ * taints any canvas that paints such a document read from an object URL, and
42
+ * the figure then cannot be saved at all; read from a `data:` URL it paints
43
+ * clean. Such a figure carries a handful of labels, far short of that length.
44
+ * @param markup - The SVG document.
45
+ * @returns The URL; one starting with `blob:` is revoked once read.
46
+ */
47
+ export function svgImageUrl(markup) {
48
+ return markup.includes('<foreignObject')
49
+ ? `data:${FIGURE_SVG_TYPE},${encodeURIComponent(markup)}`
50
+ : URL.createObjectURL(new Blob([markup], { type: FIGURE_SVG_TYPE }));
51
+ }
52
+ /**
53
+ * The SVG document, decoded and ready to be painted.
40
54
  * @param figure - The figure, already copied off the page.
41
55
  * @returns The decoded image.
42
56
  */
43
57
  async function loadFigure(figure) {
44
- const url = URL.createObjectURL(new Blob([figure.markup], { type: FIGURE_SVG_TYPE }));
58
+ const url = svgImageUrl(figure.markup);
45
59
  try {
46
60
  const image = new Image(figure.width, figure.height);
47
61
  await new Promise((resolve, reject) => {
@@ -54,7 +68,8 @@ async function loadFigure(figure) {
54
68
  return image;
55
69
  }
56
70
  finally {
57
- URL.revokeObjectURL(url);
71
+ if (url.startsWith('blob:'))
72
+ URL.revokeObjectURL(url);
58
73
  }
59
74
  }
60
75
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"figurePng.js","sourceRoot":"","sources":["../../../src/download/core/figurePng.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,qCAAqC;AACrC,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAiB,EACjB,QAAgB,oBAAoB;IAEpC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IAEzC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAE9D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,UAAU,CAAC,MAAiB;IACzC,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAC7B,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CACrD,CAAC;IACF,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAChD,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBACnC,MAAM,CAAC,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;YAAS,CAAC;QACT,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,MAAM,CAAC,MAAyB;IACvC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,EAAE,eAAe,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"figurePng.js","sourceRoot":"","sources":["../../../src/download/core/figurePng.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,qCAAqC;AACrC,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAiB,EACjB,QAAgB,oBAAoB;IAEpC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IAEzC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAE9D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,OAAO,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACtC,CAAC,CAAC,QAAQ,eAAe,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE;QACzD,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;AACzE,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,UAAU,CAAC,MAAiB;IACzC,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAChD,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBACnC,MAAM,CAAC,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;YAAS,CAAC;QACT,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,MAAM,CAAC,MAAyB;IACvC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,EAAE,eAAe,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"svgToPng.d.ts","sourceRoot":"","sources":["../../../src/download/core/svgToPng.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAM7C,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,aAAa,EAClB,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
1
+ {"version":3,"file":"svgToPng.d.ts","sourceRoot":"","sources":["../../../src/download/core/svgToPng.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAM7C,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,aAAa,EAClB,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
@@ -1,3 +1,4 @@
1
+ import { svgImageUrl } from "./figurePng.js";
1
2
  import { svgToString } from "./svgToString.js";
2
3
  /** How many device pixels a PNG gets per pixel the drawing is shown at. */
3
4
  const DEFAULT_SCALE = 2;
@@ -49,7 +50,7 @@ function side(value) {
49
50
  * @returns The image, already decoded, so it can be drawn straight away.
50
51
  */
51
52
  async function loadImage(source) {
52
- const url = URL.createObjectURL(new Blob([source], { type: 'image/svg+xml' }));
53
+ const url = svgImageUrl(source);
53
54
  try {
54
55
  const image = new Image();
55
56
  image.src = url;
@@ -58,7 +59,8 @@ async function loadImage(source) {
58
59
  }
59
60
  finally {
60
61
  // The decoded image no longer needs the URL it came from.
61
- URL.revokeObjectURL(url);
62
+ if (url.startsWith('blob:'))
63
+ URL.revokeObjectURL(url);
62
64
  }
63
65
  }
64
66
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"svgToPng.js","sourceRoot":"","sources":["../../../src/download/core/svgToPng.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"svgToPng.js","sourceRoot":"","sources":["../../../src/download/core/svgToPng.ts"],"names":[],"mappings":"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"}
@@ -12,15 +12,20 @@ export interface FormatRelativeTimeOptions {
12
12
  * @default MISSING_VALUE
13
13
  */
14
14
  missing?: string;
15
+ /**
16
+ * The language the phrase is written in: the page's, from `useLanguage()`.
17
+ * @default 'en-US'
18
+ */
19
+ locale?: string;
15
20
  }
16
21
  /**
17
22
  * How far an instant is from now, in words: `just now`, `5 minutes ago`,
18
- * `yesterday`, `in 3 weeks`.
23
+ * `yesterday`, `in 3 weeks` — or `il y a 5 minutes` in French.
19
24
  *
20
25
  * The largest unit that fits is used and the count is rounded towards zero, so
21
26
  * ninety minutes read `1 hour ago` rather than claiming two. Under a minute
22
- * either way is `just now`, which also absorbs a clock that is a few seconds
23
- * ahead. The locale is fixed to `en-US`, like every formatter of this module.
27
+ * either way is `just now` (the language's own word for now, outside
28
+ * English), which also absorbs a clock that is a few seconds ahead.
24
29
  * @param instant - Epoch milliseconds, an ISO timestamp or a date.
25
30
  * @param options - See {@link FormatRelativeTimeOptions}.
26
31
  * @returns The phrase, or the missing text when the instant is absent or unreadable.
@@ -1 +1 @@
1
- {"version":3,"file":"relativeTime.d.ts","sourceRoot":"","sources":["../../../src/format/core/relativeTime.ts"],"names":[],"mappings":"AAoBA,8EAA8E;AAC9E,MAAM,WAAW,yBAAyB;IACxC;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EAC3C,OAAO,GAAE,yBAA8B,GACtC,MAAM,CAeR"}
1
+ {"version":3,"file":"relativeTime.d.ts","sourceRoot":"","sources":["../../../src/format/core/relativeTime.ts"],"names":[],"mappings":"AAqBA,8EAA8E;AAC9E,MAAM,WAAW,yBAAyB;IACxC;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EAC3C,OAAO,GAAE,yBAA8B,GACtC,MAAM,CAsBR"}
@@ -10,34 +10,46 @@ const UNITS = [
10
10
  { unit: 'hour', milliseconds: HOUR },
11
11
  { unit: 'minute', milliseconds: MINUTE },
12
12
  ];
13
- const FORMATTER = new Intl.RelativeTimeFormat('en-US', { numeric: 'auto' });
13
+ /** One formatter per locale, made the first time that locale is asked for. */
14
+ const FORMATTERS = new Map();
14
15
  /**
15
16
  * How far an instant is from now, in words: `just now`, `5 minutes ago`,
16
- * `yesterday`, `in 3 weeks`.
17
+ * `yesterday`, `in 3 weeks` — or `il y a 5 minutes` in French.
17
18
  *
18
19
  * The largest unit that fits is used and the count is rounded towards zero, so
19
20
  * ninety minutes read `1 hour ago` rather than claiming two. Under a minute
20
- * either way is `just now`, which also absorbs a clock that is a few seconds
21
- * ahead. The locale is fixed to `en-US`, like every formatter of this module.
21
+ * either way is `just now` (the language's own word for now, outside
22
+ * English), which also absorbs a clock that is a few seconds ahead.
22
23
  * @param instant - Epoch milliseconds, an ISO timestamp or a date.
23
24
  * @param options - See {@link FormatRelativeTimeOptions}.
24
25
  * @returns The phrase, or the missing text when the instant is absent or unreadable.
25
26
  */
26
27
  export function formatRelativeTime(instant, options = {}) {
27
- const { now = Date.now(), missing = MISSING_VALUE } = options;
28
+ const { now = Date.now(), missing = MISSING_VALUE, locale = 'en-US', } = options;
28
29
  const time = toTime(instant);
29
30
  const reference = toTime(now);
30
31
  if (time === undefined || reference === undefined)
31
32
  return missing;
33
+ const formatter = formatterOf(locale);
32
34
  const elapsed = time - reference;
33
35
  const distance = Math.abs(elapsed);
34
36
  for (const { unit, milliseconds } of UNITS) {
35
37
  if (distance >= milliseconds) {
36
38
  const count = Math.floor(distance / milliseconds);
37
- return FORMATTER.format(elapsed < 0 ? -count : count, unit);
39
+ return formatter.format(elapsed < 0 ? -count : count, unit);
38
40
  }
39
41
  }
40
- return 'just now';
42
+ return locale.toLowerCase().startsWith('en')
43
+ ? 'just now'
44
+ : formatter.format(0, 'second');
45
+ }
46
+ function formatterOf(locale) {
47
+ let formatter = FORMATTERS.get(locale);
48
+ if (formatter === undefined) {
49
+ formatter = new Intl.RelativeTimeFormat(locale, { numeric: 'auto' });
50
+ FORMATTERS.set(locale, formatter);
51
+ }
52
+ return formatter;
41
53
  }
42
54
  function toTime(instant) {
43
55
  if (instant === undefined || instant === '')
@@ -1 +1 @@
1
- {"version":3,"file":"relativeTime.js","sourceRoot":"","sources":["../../../src/format/core/relativeTime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,MAAM,GAAG,MAAM,CAAC;AACtB,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC;AACzB,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC;AAEtB,MAAM,KAAK,GAGN;IACH,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,GAAG,GAAG,EAAE;IACzC,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,GAAG,GAAG,EAAE;IACzC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,GAAG,EAAE;IACvC,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE;IAClC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE;IACpC,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE;CACzC,CAAC;AAEF,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AAkB5E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAA2C,EAC3C,UAAqC,EAAE;IAEvC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;IAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,IAAI,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAElE,MAAM,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,KAAK,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,KAAK,EAAE,CAAC;QAC3C,IAAI,QAAQ,IAAI,YAAY,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC,CAAC;YAClD,OAAO,SAAS,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,MAAM,CACb,OAA2C;IAE3C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAC9D,MAAM,IAAI,GACR,OAAO,OAAO,KAAK,QAAQ;QACzB,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,OAAO,OAAO,KAAK,QAAQ;YAC3B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YACrB,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"relativeTime.js","sourceRoot":"","sources":["../../../src/format/core/relativeTime.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,16 @@
1
1
  /**
2
2
  * A tool's side of the host protocol: introduce itself to the page that
3
- * frames it, take the private port that page answers with, and serve what
4
- * arrives through it.
3
+ * frames it, take the private port that page answers with, serve what arrives
4
+ * through it, and send back what the host takes back.
5
5
  *
6
6
  * Free of React and of the DOM — the window is handed in — so a test drives the
7
7
  * whole exchange with a fake host and a real `MessageChannel`.
8
8
  */
9
- import type { CheckedValue } from './kinds.ts';
10
- import type { HostError, HostItem, ToolInterface } from './protocol.ts';
11
- /** The item an input took, and its value as the input's kind reads it. */
12
- export interface LoadedInput {
13
- key: string;
14
- item: HostItem;
15
- checked: CheckedValue;
16
- }
9
+ import type { HostOutputs } from './hostOutputs.ts';
10
+ import type { ToolInterface } from './protocol.ts';
11
+ import type { LoadedInput } from './selectInputs.ts';
12
+ export type { InputSelection, LoadedInput } from './selectInputs.ts';
13
+ export { selectInputs } from './selectInputs.ts';
17
14
  /** What a window `message` event carries, as far as the protocol reads it. */
18
15
  export interface HostMessageEvent {
19
16
  data: unknown;
@@ -35,20 +32,24 @@ export interface HostConnectionOptions {
35
32
  /** The build that is running, as the About states it, or `null`. */
36
33
  build: unknown;
37
34
  /**
38
- * Show the inputs of a new document. Throwing means they could not be read:
39
- * the error's message goes back to the host, and the document is not marked
40
- * as applied.
35
+ * Show the inputs of a new document. Throwing, or rejecting, means they
36
+ * could not be read: the error's message goes back to the host, and the
37
+ * document is not marked as applied.
38
+ */
39
+ load: (inputs: readonly LoadedInput[]) => void | Promise<void>;
40
+ /**
41
+ * Where the values of the tool's outputs are read, for `get` and for the
42
+ * `output` sent when one the host accepted changes.
43
+ * @default undefined — nothing goes back
44
+ */
45
+ outputs?: HostOutputs;
46
+ /**
47
+ * How long the outputs must stay still before a change is sent, in
48
+ * milliseconds.
49
+ * @default OUTPUT_DELAY
41
50
  */
42
- load: (inputs: readonly LoadedInput[]) => void;
51
+ outputDelay?: number;
43
52
  }
44
- /** What choosing the items of a request gave. */
45
- export type InputSelection = {
46
- ok: true;
47
- inputs: LoadedInput[];
48
- } | {
49
- ok: false;
50
- error: HostError;
51
- };
52
53
  /**
53
54
  * Say `hello` to the host, and serve its requests once it connects.
54
55
  *
@@ -56,20 +57,10 @@ export type InputSelection = {
56
57
  * one replaces the first — a host that reloads its own script connects again.
57
58
  * A document is applied once: the same one again is answered as before and
58
59
  * changes nothing, so a host re-sending it never overwrites the user's work.
60
+ * Requests are served one at a time, in order, so a `get` sent after a `load`
61
+ * reads what that load showed, however long it took.
59
62
  * @param options - The window, the tool, and its load function.
60
63
  * @returns The function that stops listening and closes the port.
61
64
  */
62
65
  export declare function connectHost(options: HostConnectionOptions): () => void;
63
- /**
64
- * Give each input of the tool one item of a request.
65
- *
66
- * Each input tries its kinds in its own order of preference, and takes the
67
- * first item that falls under one and passes that kind's schema: the tool
68
- * knows which notation serves it best, whatever order the host listed them in.
69
- * An item naming another input's `key` is left to that input.
70
- * @param tool - What the tool takes.
71
- * @param items - What the host sent.
72
- * @returns One item per input, or why an input got none.
73
- */
74
- export declare function selectInputs(tool: ToolInterface, items: readonly HostItem[]): InputSelection;
75
66
  //# sourceMappingURL=connectHost.d.ts.map