react-cheminfo 0.46.0 → 0.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -0
- package/lib/chart/core/chartDomain.d.ts +14 -0
- package/lib/chart/core/chartDomain.d.ts.map +1 -1
- package/lib/chart/core/chartDomain.js +1 -0
- package/lib/chart/core/chartDomain.js.map +1 -1
- package/lib/chart/core/selectionGeometry.d.ts +4 -2
- package/lib/chart/core/selectionGeometry.d.ts.map +1 -1
- package/lib/chart/core/selectionGeometry.js +4 -2
- package/lib/chart/core/selectionGeometry.js.map +1 -1
- package/lib/chart/core/zoomDomain.d.ts +11 -1
- package/lib/chart/core/zoomDomain.d.ts.map +1 -1
- package/lib/chart/core/zoomDomain.js +25 -5
- package/lib/chart/core/zoomDomain.js.map +1 -1
- package/lib/chart/ui/chartGestures.d.ts +26 -1
- package/lib/chart/ui/chartGestures.d.ts.map +1 -1
- package/lib/chart/ui/chartGestures.js +21 -0
- package/lib/chart/ui/chartGestures.js.map +1 -1
- package/lib/chart/ui/index.d.ts +1 -1
- package/lib/chart/ui/index.d.ts.map +1 -1
- package/lib/chart/ui/index.js +1 -1
- package/lib/chart/ui/index.js.map +1 -1
- package/lib/chart/ui/useChartZoom.d.ts.map +1 -1
- package/lib/chart/ui/useChartZoom.js +17 -1
- package/lib/chart/ui/useChartZoom.js.map +1 -1
- package/lib/core.d.ts +1 -0
- package/lib/core.d.ts.map +1 -1
- package/lib/core.js +1 -0
- package/lib/core.js.map +1 -1
- package/lib/download/core/cssPaint.d.ts +27 -0
- package/lib/download/core/cssPaint.d.ts.map +1 -0
- package/lib/download/core/cssPaint.js +63 -0
- package/lib/download/core/cssPaint.js.map +1 -0
- package/lib/download/core/drawingMarkup.d.ts +11 -0
- package/lib/download/core/drawingMarkup.d.ts.map +1 -0
- package/lib/download/core/drawingMarkup.js +32 -0
- package/lib/download/core/drawingMarkup.js.map +1 -0
- package/lib/download/core/figureHtml.d.ts +25 -0
- package/lib/download/core/figureHtml.d.ts.map +1 -0
- package/lib/download/core/figureHtml.js +174 -0
- package/lib/download/core/figureHtml.js.map +1 -0
- package/lib/download/core/figureHtmlMarkup.d.ts +107 -0
- package/lib/download/core/figureHtmlMarkup.d.ts.map +1 -0
- package/lib/download/core/figureHtmlMarkup.js +75 -0
- package/lib/download/core/figureHtmlMarkup.js.map +1 -0
- package/lib/download/core/figureSvg.d.ts.map +1 -1
- package/lib/download/core/figureSvg.js +16 -35
- package/lib/download/core/figureSvg.js.map +1 -1
- package/lib/download/core/figureSvgDocument.d.ts +3 -3
- package/lib/download/core/figureSvgDocument.d.ts.map +1 -1
- package/lib/download/core/figureTarget.d.ts +14 -3
- package/lib/download/core/figureTarget.d.ts.map +1 -1
- package/lib/download/core/figureTarget.js +42 -3
- package/lib/download/core/figureTarget.js.map +1 -1
- package/lib/download/core/index.d.ts +1 -1
- package/lib/download/core/index.d.ts.map +1 -1
- package/lib/download/core/index.js +1 -1
- package/lib/download/core/index.js.map +1 -1
- package/lib/download/core/textLines.d.ts +27 -0
- package/lib/download/core/textLines.d.ts.map +1 -0
- package/lib/download/core/textLines.js +51 -0
- package/lib/download/core/textLines.js.map +1 -0
- package/lib/ecosystem/core/lookup.d.ts +2 -1
- package/lib/ecosystem/core/lookup.d.ts.map +1 -1
- package/lib/ecosystem/core/lookup.js +10 -3
- package/lib/ecosystem/core/lookup.js.map +1 -1
- package/lib/ecosystem/core/types.d.ts +2 -2
- package/lib/ecosystem/core/types.d.ts.map +1 -1
- package/lib/ecosystem/core/unlistedSites.d.ts +9 -0
- package/lib/ecosystem/core/unlistedSites.d.ts.map +1 -0
- package/lib/ecosystem/core/unlistedSites.js +35 -0
- package/lib/ecosystem/core/unlistedSites.js.map +1 -0
- package/lib/ecosystem/ui/glyphs.d.ts.map +1 -1
- package/lib/ecosystem/ui/glyphs.js +7 -0
- package/lib/ecosystem/ui/glyphs.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/ir/core/irMode.d.ts.map +1 -1
- package/lib/ir/core/irMode.js +6 -1
- package/lib/ir/core/irMode.js.map +1 -1
- package/lib/locales/de.json +56 -1
- package/lib/locales/en.json +56 -1
- package/lib/locales/es.json +56 -1
- package/lib/locales/fr.json +56 -1
- package/lib/locales/it.json +56 -1
- package/lib/periodic/core/index.d.ts +1 -1
- package/lib/periodic/core/index.d.ts.map +1 -1
- package/lib/periodic/core/layout.d.ts +11 -0
- package/lib/periodic/core/layout.d.ts.map +1 -1
- package/lib/periodic/core/layout.js.map +1 -1
- package/lib/periodic/ui/ElementCell.d.ts +6 -2
- package/lib/periodic/ui/ElementCell.d.ts.map +1 -1
- package/lib/periodic/ui/ElementCell.js +2 -2
- package/lib/periodic/ui/ElementCell.js.map +1 -1
- package/lib/periodic/ui/PeriodicTable.d.ts +3 -98
- package/lib/periodic/ui/PeriodicTable.d.ts.map +1 -1
- package/lib/periodic/ui/PeriodicTable.js +9 -84
- package/lib/periodic/ui/PeriodicTable.js.map +1 -1
- package/lib/periodic/ui/PeriodicTableChrome.d.ts +13 -3
- package/lib/periodic/ui/PeriodicTableChrome.d.ts.map +1 -1
- package/lib/periodic/ui/PeriodicTableChrome.js +10 -20
- package/lib/periodic/ui/PeriodicTableChrome.js.map +1 -1
- package/lib/periodic/ui/SelectAllCorner.d.ts +23 -0
- package/lib/periodic/ui/SelectAllCorner.d.ts.map +1 -0
- package/lib/periodic/ui/SelectAllCorner.js +40 -0
- package/lib/periodic/ui/SelectAllCorner.js.map +1 -0
- package/lib/periodic/ui/headerStyles.d.ts +17 -0
- package/lib/periodic/ui/headerStyles.d.ts.map +1 -0
- package/lib/periodic/ui/headerStyles.js +19 -0
- package/lib/periodic/ui/headerStyles.js.map +1 -0
- package/lib/periodic/ui/periodicTableProps.d.ts +115 -0
- package/lib/periodic/ui/periodicTableProps.d.ts.map +1 -0
- package/lib/periodic/ui/periodicTableProps.js +8 -0
- package/lib/periodic/ui/periodicTableProps.js.map +1 -0
- package/lib/periodic/ui/tableLayout.d.ts +26 -0
- package/lib/periodic/ui/tableLayout.d.ts.map +1 -0
- package/lib/periodic/ui/tableLayout.js +86 -0
- package/lib/periodic/ui/tableLayout.js.map +1 -0
- package/lib/split/ui/SplitColumn.d.ts +29 -0
- package/lib/split/ui/SplitColumn.d.ts.map +1 -0
- package/lib/split/ui/SplitColumn.js +19 -0
- package/lib/split/ui/SplitColumn.js.map +1 -0
- package/lib/split/ui/SplitRow.d.ts +14 -53
- package/lib/split/ui/SplitRow.d.ts.map +1 -1
- package/lib/split/ui/SplitRow.js +8 -90
- package/lib/split/ui/SplitRow.js.map +1 -1
- package/lib/split/ui/index.d.ts +3 -0
- package/lib/split/ui/index.d.ts.map +1 -1
- package/lib/split/ui/index.js +1 -0
- package/lib/split/ui/index.js.map +1 -1
- package/lib/split/ui/splitPanes.d.ts +84 -0
- package/lib/split/ui/splitPanes.d.ts.map +1 -0
- package/lib/split/ui/splitPanes.js +125 -0
- package/lib/split/ui/splitPanes.js.map +1 -0
- package/lib/taxonomy/core/index.d.ts +8 -0
- package/lib/taxonomy/core/index.d.ts.map +1 -0
- package/lib/taxonomy/core/index.js +5 -0
- package/lib/taxonomy/core/index.js.map +1 -0
- package/lib/taxonomy/core/lineage.d.ts +83 -0
- package/lib/taxonomy/core/lineage.d.ts.map +1 -0
- package/lib/taxonomy/core/lineage.js +126 -0
- package/lib/taxonomy/core/lineage.js.map +1 -0
- package/lib/taxonomy/core/ncbi.d.ts +8 -0
- package/lib/taxonomy/core/ncbi.d.ts.map +1 -0
- package/lib/taxonomy/core/ncbi.js +10 -0
- package/lib/taxonomy/core/ncbi.js.map +1 -0
- package/lib/taxonomy/core/organismName.d.ts +28 -0
- package/lib/taxonomy/core/organismName.d.ts.map +1 -0
- package/lib/taxonomy/core/organismName.js +188 -0
- package/lib/taxonomy/core/organismName.js.map +1 -0
- package/lib/taxonomy/core/organismWords.d.ts +20 -0
- package/lib/taxonomy/core/organismWords.d.ts.map +1 -0
- package/lib/taxonomy/core/organismWords.js +86 -0
- package/lib/taxonomy/core/organismWords.js.map +1 -0
- package/lib/taxonomy/core/ranks.d.ts +51 -0
- package/lib/taxonomy/core/ranks.d.ts.map +1 -0
- package/lib/taxonomy/core/ranks.js +123 -0
- package/lib/taxonomy/core/ranks.js.map +1 -0
- package/lib/taxonomy/ui/OrganismName.d.ts +28 -0
- package/lib/taxonomy/ui/OrganismName.d.ts.map +1 -0
- package/lib/taxonomy/ui/OrganismName.js +28 -0
- package/lib/taxonomy/ui/OrganismName.js.map +1 -0
- package/lib/taxonomy/ui/TaxonLineage.d.ts +67 -0
- package/lib/taxonomy/ui/TaxonLineage.d.ts.map +1 -0
- package/lib/taxonomy/ui/TaxonLineage.js +45 -0
- package/lib/taxonomy/ui/TaxonLineage.js.map +1 -0
- package/lib/taxonomy/ui/index.d.ts +6 -0
- package/lib/taxonomy/ui/index.d.ts.map +1 -0
- package/lib/taxonomy/ui/index.js +4 -0
- package/lib/taxonomy/ui/index.js.map +1 -0
- package/lib/taxonomy/ui/rankLabel.d.ts +17 -0
- package/lib/taxonomy/ui/rankLabel.d.ts.map +1 -0
- package/lib/taxonomy/ui/rankLabel.js +77 -0
- package/lib/taxonomy/ui/rankLabel.js.map +1 -0
- package/lib/ui.d.ts +1 -0
- package/lib/ui.d.ts.map +1 -1
- package/lib/ui.js +1 -0
- package/lib/ui.js.map +1 -1
- package/package.json +1 -1
- package/src/chart/core/chartDomain.ts +15 -0
- package/src/chart/core/selectionGeometry.ts +4 -2
- package/src/chart/core/zoomDomain.ts +37 -5
- package/src/chart/ui/chartGestures.ts +41 -1
- package/src/chart/ui/index.ts +1 -1
- package/src/chart/ui/useChartZoom.ts +25 -1
- package/src/core.ts +1 -0
- package/src/download/core/cssPaint.ts +71 -0
- package/src/download/core/drawingMarkup.ts +35 -0
- package/src/download/core/figureHtml.ts +214 -0
- package/src/download/core/figureHtmlMarkup.ts +187 -0
- package/src/download/core/figureSvg.ts +17 -38
- package/src/download/core/figureSvgDocument.ts +3 -3
- package/src/download/core/figureTarget.ts +41 -8
- package/src/download/core/index.ts +1 -0
- package/src/download/core/textLines.ts +67 -0
- package/src/ecosystem/core/lookup.ts +11 -3
- package/src/ecosystem/core/types.ts +4 -2
- package/src/ecosystem/core/unlistedSites.ts +37 -0
- package/src/ecosystem/ui/glyphs.tsx +44 -0
- package/src/ir/core/irMode.ts +6 -1
- package/src/locales/de.json +56 -1
- package/src/locales/en.json +56 -1
- package/src/locales/es.json +56 -1
- package/src/locales/fr.json +56 -1
- package/src/locales/it.json +56 -1
- package/src/periodic/core/index.ts +1 -1
- package/src/periodic/core/layout.ts +12 -0
- package/src/periodic/ui/ElementCell.tsx +8 -4
- package/src/periodic/ui/PeriodicTable.tsx +27 -197
- package/src/periodic/ui/PeriodicTableChrome.tsx +23 -20
- package/src/periodic/ui/SelectAllCorner.tsx +65 -0
- package/src/periodic/ui/headerStyles.ts +23 -0
- package/src/periodic/ui/periodicTableProps.ts +117 -0
- package/src/periodic/ui/tableLayout.ts +96 -0
- package/src/split/ui/SplitColumn.tsx +35 -0
- package/src/split/ui/SplitRow.tsx +16 -208
- package/src/split/ui/index.ts +3 -0
- package/src/split/ui/splitPanes.tsx +283 -0
- package/src/taxonomy/core/index.ts +20 -0
- package/src/taxonomy/core/lineage.ts +161 -0
- package/src/taxonomy/core/ncbi.ts +9 -0
- package/src/taxonomy/core/organismName.ts +217 -0
- package/src/taxonomy/core/organismWords.ts +86 -0
- package/src/taxonomy/core/ranks.ts +134 -0
- package/src/taxonomy/ui/OrganismName.tsx +59 -0
- package/src/taxonomy/ui/TaxonLineage.tsx +183 -0
- package/src/taxonomy/ui/index.ts +5 -0
- package/src/taxonomy/ui/rankLabel.ts +81 -0
- package/src/ui.ts +1 -0
- package/styles/chrome.css +135 -6
package/README.md
CHANGED
|
@@ -114,6 +114,7 @@ through a wildcard subpath exactly as `react-science` serves its own.
|
|
|
114
114
|
| **Projections** | `pcaResult`, `embeddingResult`, `projectionTabs`, `loadingProfiles`, `explainedShares`, `confidenceEllipse`, `projectEllipse`, `pointsInPolygon`, `resolveProjectionGroups`, `resolveProjectionShapes`, `PROJECTION_COPY` | `PcaViewer`, `ProjectionViewer`, `ScatterPlot`, `ScatterMatrix` |
|
|
115
115
|
| **Parallel coordinates** | `parallelAxisOf`, `parallelAxisLayouts`, `parallelIncludedMask`, `parallelKeptCount`, `parallelNearestRow`, `parallelSegmentAt`, `parallelBandAt`, `parallelRangeOf`, `parallelPalette`, `parallelColorSteps`, `paintParallelLines` | `ParallelCoordinates` |
|
|
116
116
|
| **Periodic table** | `PERIODIC_ELEMENTS`, `elementBySymbol`, `elementByAtomicNumber`, `cellOf`, `placedElements`, `elementByArrowKey`, `EMPTY_BLOCK`, `categorySwatch`, `CATEGORY_LABELS` | `PeriodicTable`, `ElementCell`, `CategoryLegend` |
|
|
117
|
+
| **Taxonomy** | `TAXON_RANKS`, `PRINCIPAL_RANKS`, `rankOrder`, `isPrincipalRank`, `isGenusOrBelow`, `isAboveGenus`, `principalLineage`, `lineageFromNodes`, `lineageFromRanks`, `genusOrBelow`, `ncbiTaxonomyUrl`, `splitOrganismName` | `TaxonLineage`, `OrganismName`, `useRankLabel` |
|
|
117
118
|
|
|
118
119
|
Everything in that table is exported from `./core`, `./ui`, `./slides`,
|
|
119
120
|
`./vite` or `./structure` and nothing else is: the sub-components a component is built
|
|
@@ -637,6 +638,31 @@ stopped moving. Draw exactly what is on screen; only the box changes.
|
|
|
637
638
|
A chart that measures its own container can ignore `size`: the copy is mounted
|
|
638
639
|
in a box of exactly that size.
|
|
639
640
|
|
|
641
|
+
A figure drawn in HTML rather than SVG is saved too. Mark its box
|
|
642
|
+
`data-figure="html"`, and each ground, border, outline and line of words in it
|
|
643
|
+
is painted into the file from where the browser put it, so the copy matches the
|
|
644
|
+
screen. Anything marked `data-figure="chrome"` inside it stays behind. Images,
|
|
645
|
+
gradients, shadows and `::before` / `::after` content are not painted.
|
|
646
|
+
|
|
647
|
+
`PeriodicTable` is one, so the save glyph can sit wherever the site keeps its
|
|
648
|
+
controls. Point it at a box around the table and anything that belongs in the
|
|
649
|
+
picture, such as the site's own colour key:
|
|
650
|
+
|
|
651
|
+
```tsx
|
|
652
|
+
<div className="no-print">
|
|
653
|
+
<PropertySelect … />
|
|
654
|
+
<FigureDownload targetId="table-figure" fileName="electronegativity" />
|
|
655
|
+
</div>
|
|
656
|
+
<div id="table-figure" data-figure="html">
|
|
657
|
+
<PeriodicTable headers swatchOf={swatchFor} />
|
|
658
|
+
<Legend … />
|
|
659
|
+
</div>
|
|
660
|
+
```
|
|
661
|
+
|
|
662
|
+
Marking the box itself `data-figure="html"` paints everything in it, the key's
|
|
663
|
+
labels included. The corner that selects the whole table shows itself only when
|
|
664
|
+
pointed at or reached from the keyboard, and is neither printed nor saved.
|
|
665
|
+
|
|
640
666
|
`downloadFigure(target, options)`, `figureSvg` and `figurePng` are the same thing
|
|
641
667
|
without the button, for a site saving a figure from its own menu.
|
|
642
668
|
|
|
@@ -671,6 +697,49 @@ import { RangeSlider } from 'react-cheminfo/ui';
|
|
|
671
697
|
- **`histogram`** takes one count per equal-width bin, drawn over the track with
|
|
672
698
|
the part the handles keep in the brand colour.
|
|
673
699
|
|
|
700
|
+
### `TaxonLineage` and `OrganismName`
|
|
701
|
+
|
|
702
|
+
Where an organism sits in the tree of life, as a breadcrumb, and its name set
|
|
703
|
+
the way nomenclature sets it.
|
|
704
|
+
|
|
705
|
+
```tsx
|
|
706
|
+
import { lineageFromNodes } from 'react-cheminfo/core';
|
|
707
|
+
import { OrganismName, TaxonLineage } from 'react-cheminfo/ui';
|
|
708
|
+
|
|
709
|
+
<OrganismName name="Catharanthus roseus (L.) G. Don" />;
|
|
710
|
+
|
|
711
|
+
<TaxonLineage
|
|
712
|
+
lineage={lineageFromNodes(taxa, taxId)}
|
|
713
|
+
taxonHref={(taxon) => `/taxonomy/${taxon.taxId}`}
|
|
714
|
+
onTaxonSelect={(taxon) => navigate(`/taxonomy/${taxon.taxId}`)}
|
|
715
|
+
ncbiLink
|
|
716
|
+
/>;
|
|
717
|
+
```
|
|
718
|
+
|
|
719
|
+
- **A lineage is `{ rank, name, taxId? }[]`, from the top down.** It is read
|
|
720
|
+
from a map of NCBI nodes pointing at their parents (`lineageFromNodes`), from
|
|
721
|
+
a record of names by rank as octochemdb stores it (`lineageFromRanks`), or
|
|
722
|
+
written as it is.
|
|
723
|
+
- **The principal ranks are shown by default** — domain, kingdom, phylum,
|
|
724
|
+
class, order, family, genus, species — with the last taxon kept whatever its
|
|
725
|
+
rank. `principal={false}` shows every clade, for a page walking the tree.
|
|
726
|
+
- **Each rank is a tooltip, or a small label over the name** with `showRanks`.
|
|
727
|
+
The labels are the chrome's words, translated with it; `useRankLabel()` names
|
|
728
|
+
a rank the same way anywhere else on the page.
|
|
729
|
+
- **A taxon is a link only when `taxonHref` gives it an address**, and
|
|
730
|
+
`onTaxonSelect` takes over its plain click so the site moves without a
|
|
731
|
+
reload. `current` marks the last taxon as the page being read; `ncbiLink`
|
|
732
|
+
adds the way out to the NCBI Taxonomy Browser.
|
|
733
|
+
- **Italics follow the rank, then the name.** The names from the genus down go
|
|
734
|
+
through `splitOrganismName`, which sets the genus and the epithets in italics
|
|
735
|
+
and the authority, the strain, `sp.`, a cultivar and the words announcing a
|
|
736
|
+
rank (`subsp.`, `var.`, `f.`) upright. It reads a name by its shape, as the
|
|
737
|
+
source wrote it, and leaves upright what it cannot place.
|
|
738
|
+
|
|
739
|
+
The type is `TaxonLineage` in `react-cheminfo/core` and the component
|
|
740
|
+
`TaxonLineage` in `react-cheminfo/ui`; a file needing both imports one of them
|
|
741
|
+
under another name.
|
|
742
|
+
|
|
674
743
|
### `ParallelCoordinates`
|
|
675
744
|
|
|
676
745
|
Many rows against many properties at once: one vertical axis per column, one
|
|
@@ -152,6 +152,20 @@ export interface ZoomGestures {
|
|
|
152
152
|
* @default true
|
|
153
153
|
*/
|
|
154
154
|
wheel?: boolean;
|
|
155
|
+
/**
|
|
156
|
+
* Whether the chart answers `f` with a window fitted to everything drawn.
|
|
157
|
+
*
|
|
158
|
+
* The same thing the double click does, reachable without a pointer — and the
|
|
159
|
+
* one gesture a reader cannot discover by trying, which is why the key is the
|
|
160
|
+
* same `f` on every chart of the family rather than each one choosing.
|
|
161
|
+
*
|
|
162
|
+
* Turned off by a viewer that already owns its keys: the infrared shell runs
|
|
163
|
+
* `f` through its own command table, where the key is listed in a toolbar
|
|
164
|
+
* tooltip and in the documentation panel, and fits every pane of a stack
|
|
165
|
+
* rather than the one chart the pointer is on.
|
|
166
|
+
* @default true
|
|
167
|
+
*/
|
|
168
|
+
keys?: boolean;
|
|
155
169
|
}
|
|
156
170
|
/** What the gestures come to when a viewer states none of them. */
|
|
157
171
|
export declare const DEFAULT_ZOOM_GESTURES: Required<ZoomGestures>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chartDomain.d.ts","sourceRoot":"","sources":["../../../src/chart/core/chartDomain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,oDAAoD;AACpD,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpB,kFAAkF;IAClF,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,gEAAgE;AAChE,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,UAAU,CAIrD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAEpD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE/C,gEAAgE;AAChE,MAAM,WAAW,SAAU,SAAQ,UAAU;IAC3C;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"chartDomain.d.ts","sourceRoot":"","sources":["../../../src/chart/core/chartDomain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,oDAAoD;AACpD,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpB,kFAAkF;IAClF,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,gEAAgE;AAChE,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,UAAU,CAIrD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAEpD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE/C,gEAAgE;AAChE,MAAM,WAAW,SAAU,SAAQ,UAAU;IAC3C;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,mEAAmE;AACnE,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,YAAY,CAIxD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,WAAW,GAChB,OAAO,CAOT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chartDomain.js","sourceRoot":"","sources":["../../../src/chart/core/chartDomain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAoDH,gEAAgE;AAChE,MAAM,CAAC,MAAM,oBAAoB,GAAyB;IACxD,QAAQ,EAAE,CAAC;IACX,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,KAAK;CAClB,CAAC;
|
|
1
|
+
{"version":3,"file":"chartDomain.js","sourceRoot":"","sources":["../../../src/chart/core/chartDomain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAoDH,gEAAgE;AAChE,MAAM,CAAC,MAAM,oBAAoB,GAAyB;IACxD,QAAQ,EAAE,CAAC;IACX,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,KAAK;CAClB,CAAC;AA6GF,mEAAmE;AACnE,MAAM,CAAC,MAAM,qBAAqB,GAA2B;IAC3D,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,IAAI;CACX,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAoB,EACpB,IAAiB;IAEjB,OAAO,CACL,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAC3B,CAAC;AACJ,CAAC"}
|
|
@@ -25,8 +25,10 @@ export interface SelectionRectangle {
|
|
|
25
25
|
/**
|
|
26
26
|
* The rectangle to draw for a drag being made.
|
|
27
27
|
*
|
|
28
|
-
* A drag that takes the y axis with it is drawn at the height
|
|
29
|
-
*
|
|
28
|
+
* A drag that takes the y axis with it is drawn at the height `zoomSelection`
|
|
29
|
+
* worked out — the window the release will take, which is the drag's own height
|
|
30
|
+
* stretched to any baseline the viewer holds — and one that asks for the x axis
|
|
31
|
+
* alone spans the whole plot.
|
|
30
32
|
* That is the gesture announcing itself before the button is let go: the
|
|
31
33
|
* rectangle changing shape — as the pointer crosses the baseline, or as a
|
|
32
34
|
* `dual` drag leaves the level it started on — is the only warning a user gets
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectionGeometry.d.ts","sourceRoot":"","sources":["../../../src/chart/core/selectionGeometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,gDAAgD;AAChD,MAAM,WAAW,kBAAkB;IACjC,qBAAqB;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,oBAAoB;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED
|
|
1
|
+
{"version":3,"file":"selectionGeometry.d.ts","sourceRoot":"","sources":["../../../src/chart/core/selectionGeometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,gDAAgD;AAChD,MAAM,WAAW,kBAAkB;IACjC,qBAAqB;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,oBAAoB;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,aAAa,GAAG,IAAI,EAC/B,IAAI,EAAE,QAAQ,GACb,kBAAkB,GAAG,IAAI,CAe3B"}
|
|
@@ -14,8 +14,10 @@ import { MINIMUM_DRAG } from "./zoomDomain.js";
|
|
|
14
14
|
/**
|
|
15
15
|
* The rectangle to draw for a drag being made.
|
|
16
16
|
*
|
|
17
|
-
* A drag that takes the y axis with it is drawn at the height
|
|
18
|
-
*
|
|
17
|
+
* A drag that takes the y axis with it is drawn at the height `zoomSelection`
|
|
18
|
+
* worked out — the window the release will take, which is the drag's own height
|
|
19
|
+
* stretched to any baseline the viewer holds — and one that asks for the x axis
|
|
20
|
+
* alone spans the whole plot.
|
|
19
21
|
* That is the gesture announcing itself before the button is let go: the
|
|
20
22
|
* rectangle changing shape — as the pointer crosses the baseline, or as a
|
|
21
23
|
* `dual` drag leaves the level it started on — is the only warning a user gets
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectionGeometry.js","sourceRoot":"","sources":["../../../src/chart/core/selectionGeometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAInD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAc/C
|
|
1
|
+
{"version":3,"file":"selectionGeometry.js","sourceRoot":"","sources":["../../../src/chart/core/selectionGeometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAInD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAc/C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,kBAAkB,CAChC,SAA+B,EAC/B,IAAc;IAEd,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEpC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,CAAC,KAAK,IAAI,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IAC9D,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;AAC1D,CAAC"}
|
|
@@ -46,7 +46,17 @@ export interface DragBox {
|
|
|
46
46
|
/** Where it is vertically. */
|
|
47
47
|
toY: number;
|
|
48
48
|
}
|
|
49
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* The drag as it is being made, for the preview rectangle to be drawn from.
|
|
51
|
+
*
|
|
52
|
+
* Its **vertical corners are the window the release will take**, not the two
|
|
53
|
+
* places the hand passed through. The two differ by the baseline a viewer's
|
|
54
|
+
* rules hold: on a mirrored chart zero runs across the middle of the plot, so a
|
|
55
|
+
* drag made wholly inside the reflected half crosses the baseline without ever
|
|
56
|
+
* reaching it, and the release stretches the window back to zero. A rectangle
|
|
57
|
+
* drawn at the height of the hand would promise a band between two intensities
|
|
58
|
+
* that letting go does not give.
|
|
59
|
+
*/
|
|
50
60
|
export interface ZoomSelection extends DragBox {
|
|
51
61
|
/**
|
|
52
62
|
* Whether letting go here would take the y axis with it, which is what the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zoomDomain.d.ts","sourceRoot":"","sources":["../../../src/chart/core/zoomDomain.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAY,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,+DAA+D;AAC/D,MAAM,WAAW,OAAO;IACtB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,8BAA8B;IAC9B,GAAG,EAAE,MAAM,CAAC;CACb;AAED
|
|
1
|
+
{"version":3,"file":"zoomDomain.d.ts","sourceRoot":"","sources":["../../../src/chart/core/zoomDomain.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAY,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,+DAA+D;AAC/D,MAAM,WAAW,OAAO;IACtB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,8BAA8B;IAC9B,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,aAAc,SAAQ,OAAO;IAC5C;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,OAAO,GAAG,IAAI,EACpB,MAAM,EAAE,UAAU,EAClB,KAAK,GAAE,SAAc,GACpB,aAAa,GAAG,IAAI,CAqBtB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAEzD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,UAAU,EAClB,QAAQ,SAAgC,EACxC,UAAU,UAAkC,GAC3C,OAAO,CAIT;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,UAAU,EAClB,KAAK,GAAE,SAAc,GACpB,WAAW,GAAG,IAAI,CAyCpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,EACd,QAAQ,SAAgC,GACvC,WAAW,CAOb"}
|
|
@@ -54,13 +54,19 @@ export const DUAL_ZOOM_TRAVEL = 24;
|
|
|
54
54
|
export function zoomSelection(drag, yScale, rules = {}) {
|
|
55
55
|
if (drag === null)
|
|
56
56
|
return null;
|
|
57
|
-
const { baseline = DEFAULT_Y_AXIS_RULES.baseline, pointsDown = DEFAULT_Y_AXIS_RULES.pointsDown, drag: mode = 'xAxis', } = rules;
|
|
57
|
+
const { baseline = DEFAULT_Y_AXIS_RULES.baseline, keepBaseline = DEFAULT_Y_AXIS_RULES.keepBaseline, pointsDown = DEFAULT_Y_AXIS_RULES.pointsDown, drag: mode = 'xAxis', } = rules;
|
|
58
|
+
const zoomsYAxis = takesYAxis(drag, mode, yScale, baseline, pointsDown);
|
|
59
|
+
// Stretched in pixels rather than in values because the rectangle is drawn in
|
|
60
|
+
// pixels and the mapping is monotonic, so including the baseline's own pixel
|
|
61
|
+
// in the span is including the baseline in the window.
|
|
62
|
+
const held = zoomsYAxis && holdsBaseline(mode, keepBaseline);
|
|
63
|
+
const atBaseline = chartPixel(yScale, baseline);
|
|
58
64
|
return {
|
|
59
65
|
fromX: drag.fromX,
|
|
60
|
-
fromY: drag.fromY,
|
|
66
|
+
fromY: held ? Math.min(drag.fromY, drag.toY, atBaseline) : drag.fromY,
|
|
61
67
|
toX: drag.toX,
|
|
62
|
-
toY: drag.toY,
|
|
63
|
-
zoomsYAxis
|
|
68
|
+
toY: held ? Math.max(drag.fromY, drag.toY, atBaseline) : drag.toY,
|
|
69
|
+
zoomsYAxis,
|
|
64
70
|
};
|
|
65
71
|
}
|
|
66
72
|
/**
|
|
@@ -157,7 +163,7 @@ export function zoomedDomain(current, drag, plot, xScale, yScale, rules = {}) {
|
|
|
157
163
|
// tool or by a `dual` drag that left its level, is a promise about exactly
|
|
158
164
|
// that rectangle, and a viewer whose axis rules keep its baseline would
|
|
159
165
|
// otherwise see a taller window than the one drawn.
|
|
160
|
-
const holdBaseline =
|
|
166
|
+
const holdBaseline = holdsBaseline(mode, keepBaseline);
|
|
161
167
|
const bottom = holdBaseline
|
|
162
168
|
? Math.min(baseline, fromY, toY)
|
|
163
169
|
: Math.min(fromY, toY);
|
|
@@ -211,6 +217,20 @@ export function scaledYAxis(current, factor, baseline = DEFAULT_Y_AXIS_RULES.bas
|
|
|
211
217
|
* @param pointsDown - Whether the data hangs below that baseline.
|
|
212
218
|
* @returns Whether the height comes along.
|
|
213
219
|
*/
|
|
220
|
+
/**
|
|
221
|
+
* Whether the window keeps the baseline whatever the drag asked for, which the
|
|
222
|
+
* preview and the release must agree on as surely as they agree on the height.
|
|
223
|
+
*
|
|
224
|
+
* Only the reading gesture holds it. A rectangle dragged out deliberately — by
|
|
225
|
+
* the box tool, or by a `dual` drag that left its level — is a promise about
|
|
226
|
+
* exactly that rectangle.
|
|
227
|
+
* @param mode - What a drag on this chart asks for.
|
|
228
|
+
* @param keepBaseline - Whether the viewer's rules keep it.
|
|
229
|
+
* @returns Whether the baseline stays in the window.
|
|
230
|
+
*/
|
|
231
|
+
function holdsBaseline(mode, keepBaseline) {
|
|
232
|
+
return keepBaseline && mode === 'xAxis';
|
|
233
|
+
}
|
|
214
234
|
function takesYAxis(drag, mode, yScale, baseline, pointsDown) {
|
|
215
235
|
if (mode === 'box')
|
|
216
236
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zoomDomain.js","sourceRoot":"","sources":["../../../src/chart/core/zoomDomain.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAGnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGxD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAE9B;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"zoomDomain.js","sourceRoot":"","sources":["../../../src/chart/core/zoomDomain.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* exactly where it was, and deciding between them in one place is what stops a
|
|
14
14
|
* gesture reporting a range and a click for the same drag.
|
|
15
15
|
*/
|
|
16
|
-
import type { PointerEvent as ReactPointerEvent } from 'react';
|
|
16
|
+
import type { KeyboardEvent as ReactKeyboardEvent, PointerEvent as ReactPointerEvent } from 'react';
|
|
17
17
|
import type { ChartDomain, ZoomRules } from '../core/chartDomain.ts';
|
|
18
18
|
import type { PlotRect } from '../core/chartGeometry.ts';
|
|
19
19
|
import type { ChartScale } from '../core/chartScale.ts';
|
|
@@ -21,6 +21,7 @@ import type { ChartPoint } from '../core/svgPoint.ts';
|
|
|
21
21
|
import type { DragBox } from '../core/zoomDomain.ts';
|
|
22
22
|
/** One gesture on the SVG, as React hands it over. */
|
|
23
23
|
type PointerHandler = (event: ReactPointerEvent<SVGSVGElement>) => void;
|
|
24
|
+
type KeyboardHandler = (event: ReactKeyboardEvent<SVGSVGElement>) => void;
|
|
24
25
|
/**
|
|
25
26
|
* Which keys were held as a click was let go.
|
|
26
27
|
*
|
|
@@ -45,7 +46,31 @@ export interface ChartZoomHandlers {
|
|
|
45
46
|
onPointerUp: PointerHandler;
|
|
46
47
|
onPointerCancel: PointerHandler;
|
|
47
48
|
onDoubleClick: () => void;
|
|
49
|
+
onKeyDown: KeyboardHandler;
|
|
50
|
+
/**
|
|
51
|
+
* So the chart can hold the caret, which is what lets a key reach it.
|
|
52
|
+
*
|
|
53
|
+
* In the tab order rather than merely focusable by a click, because the chart
|
|
54
|
+
* is* the widget here: a reader who navigates by keyboard has no other way to
|
|
55
|
+
* reach it, and a chart nobody can focus answers no key at all. A viewer that
|
|
56
|
+
* answers none takes itself back out of the order.
|
|
57
|
+
*/
|
|
58
|
+
tabIndex: number;
|
|
48
59
|
}
|
|
60
|
+
/** The key that fits the window to everything drawn, on every chart. */
|
|
61
|
+
export declare const FIT_KEY = "f";
|
|
62
|
+
/**
|
|
63
|
+
* Whether a key press asks for the window to be fitted.
|
|
64
|
+
*
|
|
65
|
+
* A key pressed with a modifier belongs to the browser or to the page — Ctrl+F
|
|
66
|
+
* is a search, and a chart that swallowed it to fit itself would be a chart
|
|
67
|
+
* people stop typing near — and a key delivered to a field is part of what is
|
|
68
|
+
* being written. Compared case-insensitively, so a capital arriving from a held
|
|
69
|
+
* shift still fits.
|
|
70
|
+
* @param event - The key press, as React delivers it or as the DOM does.
|
|
71
|
+
* @returns Whether the chart should fit its window.
|
|
72
|
+
*/
|
|
73
|
+
export declare function asksToFit(event: Pick<KeyboardEvent, 'key' | 'ctrlKey' | 'metaKey' | 'altKey' | 'target'>): boolean;
|
|
49
74
|
/** What a host asks to be told, beyond the window it is shown anyway. */
|
|
50
75
|
export interface ChartGestureReports {
|
|
51
76
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chartGestures.d.ts","sourceRoot":"","sources":["../../../src/chart/ui/chartGestures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"chartGestures.d.ts","sourceRoot":"","sources":["../../../src/chart/ui/chartGestures.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,12 +13,33 @@
|
|
|
13
13
|
* exactly where it was, and deciding between them in one place is what stops a
|
|
14
14
|
* gesture reporting a range and a click for the same drag.
|
|
15
15
|
*/
|
|
16
|
+
import { isEditingField } from "../../panel/core/isEditingField.js";
|
|
16
17
|
import { chartValue } from "../core/chartScale.js";
|
|
17
18
|
import { svgPointAt } from "../core/svgPoint.js";
|
|
18
19
|
import { MINIMUM_DRAG, zoomedDomain } from "../core/zoomDomain.js";
|
|
19
20
|
import { isInsidePlot } from "./useChartPointer.js";
|
|
20
21
|
/** No key held, which is what a plain click reports. */
|
|
21
22
|
export const NO_MODIFIERS = { shift: false, alt: false };
|
|
23
|
+
/** The key that fits the window to everything drawn, on every chart. */
|
|
24
|
+
export const FIT_KEY = 'f';
|
|
25
|
+
/**
|
|
26
|
+
* Whether a key press asks for the window to be fitted.
|
|
27
|
+
*
|
|
28
|
+
* A key pressed with a modifier belongs to the browser or to the page — Ctrl+F
|
|
29
|
+
* is a search, and a chart that swallowed it to fit itself would be a chart
|
|
30
|
+
* people stop typing near — and a key delivered to a field is part of what is
|
|
31
|
+
* being written. Compared case-insensitively, so a capital arriving from a held
|
|
32
|
+
* shift still fits.
|
|
33
|
+
* @param event - The key press, as React delivers it or as the DOM does.
|
|
34
|
+
* @returns Whether the chart should fit its window.
|
|
35
|
+
*/
|
|
36
|
+
export function asksToFit(event) {
|
|
37
|
+
if (event.ctrlKey || event.metaKey || event.altKey)
|
|
38
|
+
return false;
|
|
39
|
+
if (isEditingField(event.target))
|
|
40
|
+
return false;
|
|
41
|
+
return event.key.toLowerCase() === FIT_KEY;
|
|
42
|
+
}
|
|
22
43
|
/**
|
|
23
44
|
* What letting go of a drag comes to, told to the host on the way.
|
|
24
45
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chartGestures.js","sourceRoot":"","sources":["../../../src/chart/ui/chartGestures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"chartGestures.js","sourceRoot":"","sources":["../../../src/chart/ui/chartGestures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAIpE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAsBpD,wDAAwD;AACxD,MAAM,CAAC,MAAM,YAAY,GAAwB,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAqB9E,wEAAwE;AACxE,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC;AAE3B;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CACvB,KAGC;IAED,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACjE,IAAI,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,OAAO,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC;AAC7C,CAAC;AAiED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAoB,EACpB,QAAiB,EACjB,IAAc,EACd,MAAkB,EAClB,MAAkB,EAClB,KAAgB,EAChB,OAA4B,EAC5B,YAAiC,YAAY;IAE7C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC;IACnC,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1E,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CACzB,KAAuC,EACvC,GAAyB,EACzB,eAA6D;IAE7D,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5D,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,eAAe,KAAK,SAAS,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1E,6EAA6E;IAC7E,8BAA8B;IAC9B,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACvD,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,KAAK,CAAC,CAAC;QACd,KAAK,EAAE,KAAK,CAAC,CAAC;QACd,GAAG,EAAE,KAAK,CAAC,CAAC;QACZ,GAAG,EAAE,KAAK,CAAC,CAAC;KACb,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CACvB,IAAiB,EACjB,KAAuC,EACvC,GAAyB;IAEzB,IAAI,IAAI,EAAE,SAAS,KAAK,KAAK,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IACrD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5D,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuC;IACjE,IAAI,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3D,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,WAAW,CAClB,QAAiB,EACjB,IAAc,EACd,MAAkB,EAClB,MAAkB,EAClB,OAC2E,EAC3E,SAA8B;IAE9B,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO;IAClC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,YAAY;QAAE,OAAO;IACpE,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,YAAY;QAAE,OAAO;IACpE,8EAA8E;IAC9E,+EAA+E;IAC/E,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;IACnD,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO;IACvC,OAAO,CACL,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAClE,SAAS,CACV,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,MAAM,WAAW,GAAG,CAAC,CAAC"}
|
package/lib/chart/ui/index.d.ts
CHANGED
|
@@ -34,7 +34,7 @@ export { SelectionRect } from './SelectionRect.tsx';
|
|
|
34
34
|
export type { LegendEntry, TraceLegendProps } from './TraceLegend.tsx';
|
|
35
35
|
export { TraceLegend } from './TraceLegend.tsx';
|
|
36
36
|
export type { ChartClickModifiers } from './chartGestures.ts';
|
|
37
|
-
export { NO_MODIFIERS } from './chartGestures.ts';
|
|
37
|
+
export { FIT_KEY, NO_MODIFIERS, asksToFit } from './chartGestures.ts';
|
|
38
38
|
export { chartSurfaceStyle } from './chartSurface.ts';
|
|
39
39
|
export type { ChartPointer, ChartPointerOptions } from './useChartPointer.ts';
|
|
40
40
|
export { isInsidePlot, leftChart, nextChartPointer, sameReading, useChartPointer, } from './useChartPointer.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chart/ui/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EACV,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EACV,WAAW,EACX,eAAe,EACf,eAAe,EACf,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chart/ui/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EACV,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EACV,WAAW,EACX,eAAe,EACf,eAAe,EACf,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EACL,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAChE,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/lib/chart/ui/index.js
CHANGED
|
@@ -18,7 +18,7 @@ export { ChartTracker } from "./ChartTracker.js";
|
|
|
18
18
|
export { PlotCaption } from "./PlotCaption.js";
|
|
19
19
|
export { SelectionRect } from "./SelectionRect.js";
|
|
20
20
|
export { TraceLegend } from "./TraceLegend.js";
|
|
21
|
-
export { NO_MODIFIERS } from "./chartGestures.js";
|
|
21
|
+
export { FIT_KEY, NO_MODIFIERS, asksToFit } from "./chartGestures.js";
|
|
22
22
|
export { chartSurfaceStyle } from "./chartSurface.js";
|
|
23
23
|
export { isInsidePlot, leftChart, nextChartPointer, sameReading, useChartPointer, } from "./useChartPointer.js";
|
|
24
24
|
export { nextChartSize, useChartSize } from "./useChartSize.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chart/ui/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAiB,CAAC;AAQ5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAA0B,CAAC;AAO9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAC;AAG1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAG5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAY,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAiB,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAkB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAqB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chart/ui/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAiB,CAAC;AAQ5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAA0B,CAAC;AAO9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAC;AAG1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAG5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAY,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAiB,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAkB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAqB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;AAEhD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EACL,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMhE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChartZoom.d.ts","sourceRoot":"","sources":["../../../src/chart/ui/useChartZoom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"useChartZoom.d.ts","sourceRoot":"","sources":["../../../src/chart/ui/useChartZoom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAGV,SAAS,EACV,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,YAAY,EAEb,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EAElB,MAAM,oBAAoB,CAAC;AAQ5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAI9D,sEAAsE;AACtE,MAAM,WAAW,gBACf,SAAQ,kBAAkB,EAAE,mBAAmB;IAC/C,uEAAuE;IACvE,MAAM,EAAE,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACxC;;;;OAIG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,mEAAmE;AACnE,MAAM,WAAW,SAAS;IACxB,iCAAiC;IACjC,MAAM,EAAE,WAAW,CAAC;IACpB;;;;OAIG;IACH,MAAM,EAAE,UAAU,CAAC;IACnB,mCAAmC;IACnC,MAAM,EAAE,UAAU,CAAC;IACnB,gDAAgD;IAChD,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC;IAChC,uDAAuD;IACvD,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,sBAAsB;IACtB,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CA8JjE;AAED,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -31,7 +31,7 @@ import { useCallback, useMemo, useState } from 'react';
|
|
|
31
31
|
import { DEFAULT_ZOOM_GESTURES } from "../core/chartDomain.js";
|
|
32
32
|
import { chartWheelFactor } from "../core/chartViewport.js";
|
|
33
33
|
import { scaledYAxis, zoomSelection } from "../core/zoomDomain.js";
|
|
34
|
-
import { answeredRelease, draggedTo, releaseDrag, startedDrag, } from "./chartGestures.js";
|
|
34
|
+
import { answeredRelease, asksToFit, draggedTo, releaseDrag, startedDrag, } from "./chartGestures.js";
|
|
35
35
|
import { useChartWindow } from "./useChartWindow.js";
|
|
36
36
|
import { useWheelListener } from "./useWheelListener.js";
|
|
37
37
|
/**
|
|
@@ -64,6 +64,7 @@ export function useChartZoom(options) {
|
|
|
64
64
|
const pointsDown = yAxis?.pointsDown;
|
|
65
65
|
const dragMode = gestures?.drag ?? DEFAULT_ZOOM_GESTURES.drag;
|
|
66
66
|
const wheel = gestures?.wheel ?? DEFAULT_ZOOM_GESTURES.wheel;
|
|
67
|
+
const keys = gestures?.keys ?? DEFAULT_ZOOM_GESTURES.keys;
|
|
67
68
|
const rules = useMemo(() => ({ baseline, keepBaseline, pointsDown, drag: dragMode }), [baseline, keepBaseline, pointsDown, dragMode]);
|
|
68
69
|
const [drag, setDrag] = useState(null);
|
|
69
70
|
const onWheel = useCallback((event) => {
|
|
@@ -123,6 +124,16 @@ export function useChartZoom(options) {
|
|
|
123
124
|
setDrag(null);
|
|
124
125
|
}, [drag]);
|
|
125
126
|
const selection = useMemo(() => zoomSelection(drag, yScale, rules), [drag, yScale, rules]);
|
|
127
|
+
const onKeyDown = useCallback((event) => {
|
|
128
|
+
if (!keys || !asksToFit(event))
|
|
129
|
+
return;
|
|
130
|
+
// Taken rather than passed on, so the page under a chart does not scroll
|
|
131
|
+
// to its own next heading as well — and so a second chart mounted beside
|
|
132
|
+
// this one is not fitted by a key aimed at this one.
|
|
133
|
+
event.preventDefault();
|
|
134
|
+
event.stopPropagation();
|
|
135
|
+
reset();
|
|
136
|
+
}, [keys, reset]);
|
|
126
137
|
return {
|
|
127
138
|
domain,
|
|
128
139
|
xScale,
|
|
@@ -135,6 +146,11 @@ export function useChartZoom(options) {
|
|
|
135
146
|
onPointerUp,
|
|
136
147
|
onPointerCancel,
|
|
137
148
|
onDoubleClick: reset,
|
|
149
|
+
onKeyDown,
|
|
150
|
+
// Out of the tab order again on a chart that answers no key: a stop on the
|
|
151
|
+
// way through a page that does nothing when it is reached is worse than no
|
|
152
|
+
// stop at all.
|
|
153
|
+
tabIndex: keys ? 0 : -1,
|
|
138
154
|
},
|
|
139
155
|
};
|
|
140
156
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChartZoom.js","sourceRoot":"","sources":["../../../src/chart/ui/useChartZoom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;
|
|
1
|
+
{"version":3,"file":"useChartZoom.js","sourceRoot":"","sources":["../../../src/chart/ui/useChartZoom.ts"],"names":[],"mappings":"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"}
|
package/lib/core.d.ts
CHANGED
|
@@ -31,6 +31,7 @@ export * from './slides/core/index.ts';
|
|
|
31
31
|
export * from './split/core/index.ts';
|
|
32
32
|
export * from './state/core/index.ts';
|
|
33
33
|
export * from './structure/core/index.ts';
|
|
34
|
+
export * from './taxonomy/core/index.ts';
|
|
34
35
|
export * from './tokens/core/index.ts';
|
|
35
36
|
export * from './worker/core/index.ts';
|
|
36
37
|
//# sourceMappingURL=core.d.ts.map
|
package/lib/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
|
package/lib/core.js
CHANGED
|
@@ -35,6 +35,7 @@ export * from "./state/core/index.js";
|
|
|
35
35
|
// Framework-free molfile and editor-value helpers, so a worker can read a
|
|
36
36
|
// molfile without loading the editor that `react-cheminfo/structure` exports.
|
|
37
37
|
export * from "./structure/core/index.js";
|
|
38
|
+
export * from "./taxonomy/core/index.js";
|
|
38
39
|
export * from "./tokens/core/index.js";
|
|
39
40
|
export * from "./worker/core/index.js";
|
|
40
41
|
//# sourceMappingURL=core.js.map
|
package/lib/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,+EAA+E;AAC/E,2EAA2E;AAC3E,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,0EAA0E;AAC1E,8EAA8E;AAC9E,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,+EAA+E;AAC/E,2EAA2E;AAC3E,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,0EAA0E;AAC1E,8EAA8E;AAC9E,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a computed style says is painted, read the way a figure file needs it.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* A colour, or nothing where the page paints nothing with it.
|
|
6
|
+
* @param color - A computed colour, as `getComputedStyle` writes it.
|
|
7
|
+
* @returns The colour, or undefined where it is transparent.
|
|
8
|
+
*/
|
|
9
|
+
export declare function visibleColor(color: string): string | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* The dashes a CSS line style is drawn with.
|
|
12
|
+
* @param style - The computed `border-*-style` or `outline-style`.
|
|
13
|
+
* @param width - The line's width, in pixels.
|
|
14
|
+
* @returns The dashes and gaps in pixels — empty for a solid line — or
|
|
15
|
+
* undefined where no line is drawn. `auto` is a focus ring, which is the
|
|
16
|
+
* state of the pointer rather than a part of the figure.
|
|
17
|
+
*/
|
|
18
|
+
export declare function lineDash(style: string, width: number): readonly number[] | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* A corner radius in pixels.
|
|
21
|
+
* @param radius - The computed `border-*-radius`, in pixels or as a share.
|
|
22
|
+
* @param width - The box's width, which a share is taken of.
|
|
23
|
+
* @param height - Its height.
|
|
24
|
+
* @returns The radius, in pixels.
|
|
25
|
+
*/
|
|
26
|
+
export declare function cornerRadius(radius: string, width: number, height: number): number;
|
|
27
|
+
//# sourceMappingURL=cssPaint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cssPaint.d.ts","sourceRoot":"","sources":["../../../src/download/core/cssPaint.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAO9D;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,SAAS,MAAM,EAAE,GAAG,SAAS,CAe/B;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,MAAM,CAOR"}
|