react-cheminfo 0.21.0 → 0.23.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 (253) hide show
  1. package/README.md +14 -4
  2. package/lib/build/vite/gitHead.d.ts.map +1 -1
  3. package/lib/build/vite/gitHead.js +17 -2
  4. package/lib/build/vite/gitHead.js.map +1 -1
  5. package/lib/clipboard/ui/ClickToCopy.d.ts +69 -0
  6. package/lib/clipboard/ui/ClickToCopy.d.ts.map +1 -0
  7. package/lib/clipboard/ui/ClickToCopy.js +66 -0
  8. package/lib/clipboard/ui/ClickToCopy.js.map +1 -0
  9. package/lib/clipboard/ui/CopyButton.d.ts +1 -1
  10. package/lib/clipboard/ui/CopyButton.js +1 -1
  11. package/lib/clipboard/ui/CopyableValue.d.ts +3 -3
  12. package/lib/clipboard/ui/CopyableValue.d.ts.map +1 -1
  13. package/lib/clipboard/ui/CopyableValue.js +5 -5
  14. package/lib/clipboard/ui/CopyableValue.js.map +1 -1
  15. package/lib/clipboard/ui/index.d.ts +2 -0
  16. package/lib/clipboard/ui/index.d.ts.map +1 -1
  17. package/lib/clipboard/ui/index.js +1 -0
  18. package/lib/clipboard/ui/index.js.map +1 -1
  19. package/lib/ecosystem/core/groups.d.ts +4 -3
  20. package/lib/ecosystem/core/groups.d.ts.map +1 -1
  21. package/lib/ecosystem/core/groups.js +8 -2
  22. package/lib/ecosystem/core/groups.js.map +1 -1
  23. package/lib/ecosystem/core/sites.d.ts.map +1 -1
  24. package/lib/ecosystem/core/sites.js +39 -0
  25. package/lib/ecosystem/core/sites.js.map +1 -1
  26. package/lib/ecosystem/core/types.d.ts +1 -1
  27. package/lib/ecosystem/core/types.d.ts.map +1 -1
  28. package/lib/ecosystem/ui/glyphs.d.ts.map +1 -1
  29. package/lib/ecosystem/ui/glyphs.js +9 -0
  30. package/lib/ecosystem/ui/glyphs.js.map +1 -1
  31. package/lib/error/ui/ErrorFallback.d.ts.map +1 -1
  32. package/lib/error/ui/ErrorFallback.js +1 -1
  33. package/lib/error/ui/ErrorFallback.js.map +1 -1
  34. package/lib/overlay/core/index.d.ts +2 -2
  35. package/lib/overlay/core/index.d.ts.map +1 -1
  36. package/lib/overlay/core/index.js +1 -1
  37. package/lib/overlay/core/index.js.map +1 -1
  38. package/lib/overlay/core/overlayMarks.d.ts +20 -5
  39. package/lib/overlay/core/overlayMarks.d.ts.map +1 -1
  40. package/lib/overlay/core/overlayMarks.js +31 -5
  41. package/lib/overlay/core/overlayMarks.js.map +1 -1
  42. package/lib/overlay/ui/OverlayLegendMark.js +5 -0
  43. package/lib/overlay/ui/OverlayLegendMark.js.map +1 -1
  44. package/lib/pedagogy/ui/ReferenceSectionBlock.d.ts.map +1 -1
  45. package/lib/pedagogy/ui/ReferenceSectionBlock.js +2 -1
  46. package/lib/pedagogy/ui/ReferenceSectionBlock.js.map +1 -1
  47. package/lib/projection/core/index.d.ts +4 -4
  48. package/lib/projection/core/index.d.ts.map +1 -1
  49. package/lib/projection/core/index.js +2 -2
  50. package/lib/projection/core/index.js.map +1 -1
  51. package/lib/projection/core/projectionCopy.d.ts +2 -0
  52. package/lib/projection/core/projectionCopy.d.ts.map +1 -1
  53. package/lib/projection/core/projectionCopy.js +1 -0
  54. package/lib/projection/core/projectionCopy.js.map +1 -1
  55. package/lib/projection/core/projectionGroupings.d.ts +44 -0
  56. package/lib/projection/core/projectionGroupings.d.ts.map +1 -0
  57. package/lib/projection/core/projectionGroupings.js +132 -0
  58. package/lib/projection/core/projectionGroupings.js.map +1 -0
  59. package/lib/projection/core/projectionOptions.d.ts +16 -6
  60. package/lib/projection/core/projectionOptions.d.ts.map +1 -1
  61. package/lib/projection/core/projectionOptions.js +7 -1
  62. package/lib/projection/core/projectionOptions.js.map +1 -1
  63. package/lib/projection/core/projectionPanelWords.d.ts +6 -0
  64. package/lib/projection/core/projectionPanelWords.d.ts.map +1 -1
  65. package/lib/projection/core/projectionPanelWords.js +4 -0
  66. package/lib/projection/core/projectionPanelWords.js.map +1 -1
  67. package/lib/projection/core/projectionSamples.d.ts +63 -32
  68. package/lib/projection/core/projectionSamples.d.ts.map +1 -1
  69. package/lib/projection/core/projectionSamples.js +1 -80
  70. package/lib/projection/core/projectionSamples.js.map +1 -1
  71. package/lib/projection/core/projectionStrings.d.ts +2 -0
  72. package/lib/projection/core/projectionStrings.d.ts.map +1 -1
  73. package/lib/projection/core/projectionStrings.js +10 -1
  74. package/lib/projection/core/projectionStrings.js.map +1 -1
  75. package/lib/projection/core/resolveProjectionOptions.d.ts +8 -3
  76. package/lib/projection/core/resolveProjectionOptions.d.ts.map +1 -1
  77. package/lib/projection/core/resolveProjectionOptions.js +58 -5
  78. package/lib/projection/core/resolveProjectionOptions.js.map +1 -1
  79. package/lib/projection/ui/ProjectionBar.d.ts +1 -1
  80. package/lib/projection/ui/ProjectionBar.d.ts.map +1 -1
  81. package/lib/projection/ui/ProjectionBar.js +3 -1
  82. package/lib/projection/ui/ProjectionBar.js.map +1 -1
  83. package/lib/projection/ui/ProjectionGroupingPickers.d.ts +38 -0
  84. package/lib/projection/ui/ProjectionGroupingPickers.d.ts.map +1 -0
  85. package/lib/projection/ui/ProjectionGroupingPickers.js +33 -0
  86. package/lib/projection/ui/ProjectionGroupingPickers.js.map +1 -0
  87. package/lib/projection/ui/ProjectionMapControls.d.ts +6 -7
  88. package/lib/projection/ui/ProjectionMapControls.d.ts.map +1 -1
  89. package/lib/projection/ui/ProjectionMapControls.js +11 -9
  90. package/lib/projection/ui/ProjectionMapControls.js.map +1 -1
  91. package/lib/projection/ui/ProjectionMapLegend.d.ts.map +1 -1
  92. package/lib/projection/ui/ProjectionMapLegend.js +1 -1
  93. package/lib/projection/ui/ProjectionMapLegend.js.map +1 -1
  94. package/lib/projection/ui/ProjectionMapMore.d.ts +2 -2
  95. package/lib/projection/ui/ProjectionMapMore.d.ts.map +1 -1
  96. package/lib/projection/ui/ProjectionMapMore.js +7 -5
  97. package/lib/projection/ui/ProjectionMapMore.js.map +1 -1
  98. package/lib/projection/ui/ProjectionMapTab.d.ts +15 -6
  99. package/lib/projection/ui/ProjectionMapTab.d.ts.map +1 -1
  100. package/lib/projection/ui/ProjectionMapTab.js +11 -7
  101. package/lib/projection/ui/ProjectionMapTab.js.map +1 -1
  102. package/lib/projection/ui/ProjectionPairsMore.d.ts +3 -7
  103. package/lib/projection/ui/ProjectionPairsMore.d.ts.map +1 -1
  104. package/lib/projection/ui/ProjectionPairsMore.js +4 -5
  105. package/lib/projection/ui/ProjectionPairsMore.js.map +1 -1
  106. package/lib/projection/ui/ProjectionPairsTab.d.ts.map +1 -1
  107. package/lib/projection/ui/ProjectionPairsTab.js +2 -2
  108. package/lib/projection/ui/ProjectionPairsTab.js.map +1 -1
  109. package/lib/projection/ui/ProjectionPanel.d.ts +1 -1
  110. package/lib/projection/ui/ProjectionPanel.d.ts.map +1 -1
  111. package/lib/projection/ui/ProjectionPanel.js +1 -1
  112. package/lib/projection/ui/ProjectionPanel.js.map +1 -1
  113. package/lib/projection/ui/ProjectionReadout.d.ts +7 -1
  114. package/lib/projection/ui/ProjectionReadout.d.ts.map +1 -1
  115. package/lib/projection/ui/ProjectionReadout.js +19 -7
  116. package/lib/projection/ui/ProjectionReadout.js.map +1 -1
  117. package/lib/projection/ui/ProjectionSpaceControls.d.ts +3 -5
  118. package/lib/projection/ui/ProjectionSpaceControls.d.ts.map +1 -1
  119. package/lib/projection/ui/ProjectionSpaceControls.js +9 -7
  120. package/lib/projection/ui/ProjectionSpaceControls.js.map +1 -1
  121. package/lib/projection/ui/ProjectionSpaceMore.d.ts +2 -2
  122. package/lib/projection/ui/ProjectionSpaceMore.d.ts.map +1 -1
  123. package/lib/projection/ui/ProjectionSpaceMore.js +5 -4
  124. package/lib/projection/ui/ProjectionSpaceMore.js.map +1 -1
  125. package/lib/projection/ui/ProjectionSpaceTab.d.ts +11 -3
  126. package/lib/projection/ui/ProjectionSpaceTab.d.ts.map +1 -1
  127. package/lib/projection/ui/ProjectionSpaceTab.js +7 -4
  128. package/lib/projection/ui/ProjectionSpaceTab.js.map +1 -1
  129. package/lib/projection/ui/ProjectionViewer.d.ts.map +1 -1
  130. package/lib/projection/ui/ProjectionViewer.js +1 -0
  131. package/lib/projection/ui/ProjectionViewer.js.map +1 -1
  132. package/lib/projection/ui/projectionBarReadings.d.ts +4 -1
  133. package/lib/projection/ui/projectionBarReadings.d.ts.map +1 -1
  134. package/lib/projection/ui/projectionBarReadings.js +14 -4
  135. package/lib/projection/ui/projectionBarReadings.js.map +1 -1
  136. package/lib/projection/ui/projectionBarSlots.d.ts +4 -2
  137. package/lib/projection/ui/projectionBarSlots.d.ts.map +1 -1
  138. package/lib/projection/ui/projectionBarSlots.js +3 -7
  139. package/lib/projection/ui/projectionBarSlots.js.map +1 -1
  140. package/lib/projection/ui/projectionMapChoices.d.ts +31 -6
  141. package/lib/projection/ui/projectionMapChoices.d.ts.map +1 -1
  142. package/lib/projection/ui/projectionMapChoices.js +58 -9
  143. package/lib/projection/ui/projectionMapChoices.js.map +1 -1
  144. package/lib/projection/ui/projectionMapChrome.d.ts +3 -9
  145. package/lib/projection/ui/projectionMapChrome.d.ts.map +1 -1
  146. package/lib/projection/ui/projectionMapChrome.js +41 -27
  147. package/lib/projection/ui/projectionMapChrome.js.map +1 -1
  148. package/lib/projection/ui/projectionMapCorner.d.ts +25 -0
  149. package/lib/projection/ui/projectionMapCorner.d.ts.map +1 -0
  150. package/lib/projection/ui/projectionMapCorner.js +46 -0
  151. package/lib/projection/ui/projectionMapCorner.js.map +1 -0
  152. package/lib/projection/ui/projectionMapModel.d.ts +9 -18
  153. package/lib/projection/ui/projectionMapModel.d.ts.map +1 -1
  154. package/lib/projection/ui/projectionMapModel.js +14 -39
  155. package/lib/projection/ui/projectionMapModel.js.map +1 -1
  156. package/lib/projection/ui/projectionMapView.d.ts +3 -1
  157. package/lib/projection/ui/projectionMapView.d.ts.map +1 -1
  158. package/lib/projection/ui/projectionMapView.js +9 -4
  159. package/lib/projection/ui/projectionMapView.js.map +1 -1
  160. package/lib/projection/ui/projectionSelectionSentence.d.ts +10 -0
  161. package/lib/projection/ui/projectionSelectionSentence.d.ts.map +1 -0
  162. package/lib/projection/ui/projectionSelectionSentence.js +18 -0
  163. package/lib/projection/ui/projectionSelectionSentence.js.map +1 -0
  164. package/lib/projection/ui/projectionStateApi.d.ts +47 -0
  165. package/lib/projection/ui/projectionStateApi.d.ts.map +1 -0
  166. package/lib/projection/ui/projectionStateApi.js +9 -0
  167. package/lib/projection/ui/projectionStateApi.js.map +1 -0
  168. package/lib/projection/ui/projectionTabModels.js +1 -1
  169. package/lib/projection/ui/projectionTabModels.js.map +1 -1
  170. package/lib/projection/ui/useProjectionState.d.ts +1 -29
  171. package/lib/projection/ui/useProjectionState.d.ts.map +1 -1
  172. package/lib/projection/ui/useProjectionState.js +13 -5
  173. package/lib/projection/ui/useProjectionState.js.map +1 -1
  174. package/lib/scatter/core/index.d.ts +1 -0
  175. package/lib/scatter/core/index.d.ts.map +1 -1
  176. package/lib/scatter/core/index.js +1 -0
  177. package/lib/scatter/core/index.js.map +1 -1
  178. package/lib/scatter/core/pointShape.d.ts +18 -0
  179. package/lib/scatter/core/pointShape.d.ts.map +1 -0
  180. package/lib/scatter/core/pointShape.js +70 -0
  181. package/lib/scatter/core/pointShape.js.map +1 -0
  182. package/lib/scatter/ui/ScatterPlot.d.ts.map +1 -1
  183. package/lib/scatter/ui/ScatterPlot.js +3 -2
  184. package/lib/scatter/ui/ScatterPlot.js.map +1 -1
  185. package/lib/scatter/ui/ScatterPointLayer.d.ts +14 -1
  186. package/lib/scatter/ui/ScatterPointLayer.d.ts.map +1 -1
  187. package/lib/scatter/ui/ScatterPointLayer.js +15 -3
  188. package/lib/scatter/ui/ScatterPointLayer.js.map +1 -1
  189. package/lib/scatter/ui/scatterFigureProps.d.ts +13 -0
  190. package/lib/scatter/ui/scatterFigureProps.d.ts.map +1 -1
  191. package/lib/scatter/ui/scatterMarkGlyph.d.ts +2 -1
  192. package/lib/scatter/ui/scatterMarkGlyph.d.ts.map +1 -1
  193. package/lib/scatter/ui/scatterMarkGlyph.js +7 -1
  194. package/lib/scatter/ui/scatterMarkGlyph.js.map +1 -1
  195. package/lib/scatter3d/ui/ScatterCloud.d.ts.map +1 -1
  196. package/lib/scatter3d/ui/ScatterCloud.js +2 -1
  197. package/lib/scatter3d/ui/ScatterCloud.js.map +1 -1
  198. package/package.json +1 -1
  199. package/src/build/vite/gitHead.ts +17 -2
  200. package/src/clipboard/ui/ClickToCopy.tsx +190 -0
  201. package/src/clipboard/ui/CopyButton.tsx +2 -2
  202. package/src/clipboard/ui/CopyableValue.tsx +11 -6
  203. package/src/clipboard/ui/index.ts +2 -0
  204. package/src/ecosystem/core/groups.ts +10 -3
  205. package/src/ecosystem/core/sites.ts +39 -0
  206. package/src/ecosystem/core/types.ts +4 -1
  207. package/src/ecosystem/ui/glyphs.tsx +51 -0
  208. package/src/error/ui/ErrorFallback.tsx +3 -1
  209. package/src/overlay/core/index.ts +6 -2
  210. package/src/overlay/core/overlayMarks.ts +51 -6
  211. package/src/overlay/ui/OverlayLegendMark.tsx +5 -0
  212. package/src/pedagogy/ui/ReferenceSectionBlock.tsx +10 -1
  213. package/src/projection/core/index.ts +11 -3
  214. package/src/projection/core/projectionCopy.ts +3 -0
  215. package/src/projection/core/projectionGroupings.ts +174 -0
  216. package/src/projection/core/projectionOptions.ts +18 -7
  217. package/src/projection/core/projectionPanelWords.ts +10 -0
  218. package/src/projection/core/projectionSamples.ts +62 -120
  219. package/src/projection/core/projectionStrings.ts +12 -1
  220. package/src/projection/core/resolveProjectionOptions.ts +66 -4
  221. package/src/projection/ui/ProjectionBar.tsx +4 -2
  222. package/src/projection/ui/ProjectionGroupingPickers.tsx +91 -0
  223. package/src/projection/ui/ProjectionMapControls.tsx +29 -32
  224. package/src/projection/ui/ProjectionMapLegend.tsx +1 -1
  225. package/src/projection/ui/ProjectionMapMore.tsx +14 -4
  226. package/src/projection/ui/ProjectionMapTab.tsx +27 -9
  227. package/src/projection/ui/ProjectionPairsMore.tsx +12 -21
  228. package/src/projection/ui/ProjectionPairsTab.tsx +5 -2
  229. package/src/projection/ui/ProjectionPanel.tsx +7 -3
  230. package/src/projection/ui/ProjectionReadout.tsx +28 -8
  231. package/src/projection/ui/ProjectionSpaceControls.tsx +20 -27
  232. package/src/projection/ui/ProjectionSpaceMore.tsx +12 -3
  233. package/src/projection/ui/ProjectionSpaceTab.tsx +23 -6
  234. package/src/projection/ui/ProjectionViewer.tsx +1 -0
  235. package/src/projection/ui/projectionBarReadings.ts +24 -8
  236. package/src/projection/ui/projectionBarSlots.tsx +10 -9
  237. package/src/projection/ui/projectionMapChoices.ts +71 -14
  238. package/src/projection/ui/projectionMapChrome.ts +55 -30
  239. package/src/projection/ui/projectionMapCorner.ts +67 -0
  240. package/src/projection/ui/projectionMapModel.ts +20 -59
  241. package/src/projection/ui/projectionMapView.ts +15 -8
  242. package/src/projection/ui/projectionSelectionSentence.ts +22 -0
  243. package/src/projection/ui/projectionStateApi.ts +57 -0
  244. package/src/projection/ui/projectionTabModels.ts +1 -1
  245. package/src/projection/ui/useProjectionState.ts +33 -37
  246. package/src/scatter/core/index.ts +1 -0
  247. package/src/scatter/core/pointShape.ts +80 -0
  248. package/src/scatter/ui/ScatterPlot.tsx +4 -1
  249. package/src/scatter/ui/ScatterPointLayer.tsx +39 -11
  250. package/src/scatter/ui/scatterFigureProps.ts +13 -0
  251. package/src/scatter/ui/scatterMarkGlyph.tsx +9 -1
  252. package/src/scatter3d/ui/ScatterCloud.tsx +3 -0
  253. package/styles/chrome.css +163 -0
@@ -1 +1 @@
1
- {"version":3,"file":"projectionMapModel.js","sourceRoot":"","sources":["../../../src/projection/ui/projectionMapModel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projectionMapModel.js","sourceRoot":"","sources":["../../../src/projection/ui/projectionMapModel.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ import type { OrbitCamera } from '../../scatter3d/core/orbitCamera.ts';
14
14
  import type { ProjectionCopy } from '../core/projectionCopy.ts';
15
15
  import type { ProjectionOptions } from '../core/projectionOptions.ts';
16
16
  import type { ProjectionResult } from '../core/projectionResult.ts';
17
- import type { ResolvedProjectionGroups } from '../core/projectionSamples.ts';
17
+ import type { ResolvedProjectionGroups, ResolvedProjectionShapes } from '../core/projectionSamples.ts';
18
18
  import type { SelectionReport } from './ProjectionMapCaption.tsx';
19
19
  import type { ProjectionMapChrome } from './projectionMapChrome.ts';
20
20
  /** What {@link useProjectionMapView} needs. */
@@ -25,6 +25,8 @@ interface ProjectionMapViewInput {
25
25
  copy: ProjectionCopy;
26
26
  /** The groups as every figure of this viewer draws them. */
27
27
  groups: ResolvedProjectionGroups;
28
+ /** The grouping the dots are shaped by, or `null` while they are all discs. */
29
+ shapes: ResolvedProjectionShapes | null;
28
30
  /** Every option, already made safe against the result. */
29
31
  options: ProjectionOptions;
30
32
  /** The selected rows, as indices into the score matrix. */
@@ -1 +1 @@
1
- {"version":3,"file":"projectionMapView.d.ts","sourceRoot":"","sources":["../../../src/projection/ui/projectionMapView.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAEvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAE7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAYpE,+CAA+C;AAC/C,UAAU,sBAAsB;IAC9B,mDAAmD;IACnD,MAAM,EAAE,gBAAgB,CAAC;IACzB,qEAAqE;IACrE,IAAI,EAAE,cAAc,CAAC;IACrB,4DAA4D;IAC5D,MAAM,EAAE,wBAAwB,CAAC;IACjC,0DAA0D;IAC1D,OAAO,EAAE,iBAAiB,CAAC;IAC3B,2DAA2D;IAC3D,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,6CAA6C;IAC7C,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;CAC7C;AAED,0EAA0E;AAC1E,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,MAAM,EAAE,mBAAmB,CAAC;IAC5B,sEAAsE;IACtE,WAAW,EAAE,mBAAmB,CAAC;IACjC,iDAAiD;IACjD,MAAM,EAAE,WAAW,CAAC;IACpB,oBAAoB;IACpB,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,gFAAgF;IAChF,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,qFAAqF;IACrF,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,mEAAmE;IACnE,WAAW,EAAE,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,KAAK,IAAI,CAAC;IACtD,wEAAwE;IACxE,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,2DAA2D;IAC3D,MAAM,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1C,kDAAkD;IAClD,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,8CAA8C;IAC9C,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,2BAA2B;IAC3B,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,sBAAsB,GAC5B,iBAAiB,CA6HnB"}
1
+ {"version":3,"file":"projectionMapView.d.ts","sourceRoot":"","sources":["../../../src/projection/ui/projectionMapView.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAEvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EACV,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAUpE,+CAA+C;AAC/C,UAAU,sBAAsB;IAC9B,mDAAmD;IACnD,MAAM,EAAE,gBAAgB,CAAC;IACzB,qEAAqE;IACrE,IAAI,EAAE,cAAc,CAAC;IACrB,4DAA4D;IAC5D,MAAM,EAAE,wBAAwB,CAAC;IACjC,+EAA+E;IAC/E,MAAM,EAAE,wBAAwB,GAAG,IAAI,CAAC;IACxC,0DAA0D;IAC1D,OAAO,EAAE,iBAAiB,CAAC;IAC3B,2DAA2D;IAC3D,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,6CAA6C;IAC7C,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;CAC7C;AAED,0EAA0E;AAC1E,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,MAAM,EAAE,mBAAmB,CAAC;IAC5B,sEAAsE;IACtE,WAAW,EAAE,mBAAmB,CAAC;IACjC,iDAAiD;IACjD,MAAM,EAAE,WAAW,CAAC;IACpB,oBAAoB;IACpB,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,gFAAgF;IAChF,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,qFAAqF;IACrF,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,mEAAmE;IACnE,WAAW,EAAE,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,KAAK,IAAI,CAAC;IACtD,wEAAwE;IACxE,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,2DAA2D;IAC3D,MAAM,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1C,kDAAkD;IAClD,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,8CAA8C;IAC9C,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,2BAA2B;IAC3B,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,sBAAsB,GAC5B,iBAAiB,CAgInB"}
@@ -11,8 +11,10 @@
11
11
  import { useCallback, useMemo, useState } from 'react';
12
12
  import { chartClampViewport } from "../../chart/core/chartViewport.js";
13
13
  import { DEFAULT_ORBIT_CAMERA } from "../../scatter3d/core/orbitCamera.js";
14
- import { projectionMapChrome, projectionSelectionSentence, } from "./projectionMapChrome.js";
14
+ import { NO_GROUPING } from "../core/projectionOptions.js";
15
+ import { projectionMapChrome } from "./projectionMapChrome.js";
15
16
  import { MINIMUM_OUTLINE_POINTS, projectionMapDomain, projectionMapViewport, } from "./projectionMapModel.js";
17
+ import { projectionSelectionSentence } from "./projectionSelectionSentence.js";
16
18
  import { MINIMUM_SHELL_POINTS } from "./projectionSpaceModel.js";
17
19
  /**
18
20
  * The map's frame, its last report, and the words around it.
@@ -20,7 +22,7 @@ import { MINIMUM_SHELL_POINTS } from "./projectionSpaceModel.js";
20
22
  * @returns See {@link ProjectionMapView}.
21
23
  */
22
24
  export function useProjectionMapView(input) {
23
- const { result, copy, groups, options, selected, onSettle } = input;
25
+ const { result, copy, groups, shapes, options, selected, onSettle } = input;
24
26
  const { scores, fittedCount, markers } = result;
25
27
  const { colorBy, ellipse, showGroupMeans, xAxis, yAxis } = options;
26
28
  const [zoom, setZoom] = useState(null);
@@ -51,11 +53,12 @@ export function useProjectionMapView(input) {
51
53
  setCamera(DEFAULT_ORBIT_CAMERA);
52
54
  setCloudZoom(1);
53
55
  }, []);
54
- const colored = colorBy === 'group' && groups.entries.length > 0;
56
+ const colored = colorBy !== NO_GROUPING && groups.entries.length > 0;
55
57
  const chrome = useMemo(() => projectionMapChrome({
56
58
  copy,
57
59
  groups,
58
60
  colored,
61
+ shapes,
59
62
  ellipse: colored ? ellipse : null,
60
63
  minimumPoints: MINIMUM_OUTLINE_POINTS,
61
64
  showGroupMeans,
@@ -66,6 +69,7 @@ export function useProjectionMapView(input) {
66
69
  copy,
67
70
  groups,
68
71
  colored,
72
+ shapes,
69
73
  ellipse,
70
74
  showGroupMeans,
71
75
  markers,
@@ -76,6 +80,7 @@ export function useProjectionMapView(input) {
76
80
  copy,
77
81
  groups,
78
82
  colored,
83
+ shapes,
79
84
  ellipse: colored ? ellipse : null,
80
85
  minimumPoints: MINIMUM_SHELL_POINTS,
81
86
  showGroupMeans: false,
@@ -83,7 +88,7 @@ export function useProjectionMapView(input) {
83
88
  fittedCount: fittedCount ?? scores.rows,
84
89
  total: scores.rows,
85
90
  figure: 'space',
86
- }), [copy, groups, colored, ellipse, fittedCount, scores]);
91
+ }), [copy, groups, colored, shapes, ellipse, fittedCount, scores]);
87
92
  const settle = useCallback((change) => {
88
93
  setReport((previous) => ({
89
94
  text: projectionSelectionSentence(copy, change.indices.length, scores.rows),
@@ -1 +1 @@
1
- {"version":3,"file":"projectionMapView.js","sourceRoot":"","sources":["../../../src/projection/ui/projectionMapView.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projectionMapView.js","sourceRoot":"","sources":["../../../src/projection/ui/projectionMapView.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { ProjectionCopy } from '../core/projectionCopy.ts';
2
+ /**
3
+ * The sentence reporting what a gesture picked out.
4
+ * @param copy - The words the map writes.
5
+ * @param count - How many samples are selected.
6
+ * @param total - How many there are in all.
7
+ * @returns The sentence.
8
+ */
9
+ export declare function projectionSelectionSentence(copy: ProjectionCopy, count: number, total: number): string;
10
+ //# sourceMappingURL=projectionSelectionSentence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectionSelectionSentence.d.ts","sourceRoot":"","sources":["../../../src/projection/ui/projectionSelectionSentence.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,MAAM,CAMR"}
@@ -0,0 +1,18 @@
1
+ import { formatInteger } from "../../format/core/numbers.js";
2
+ import { fillCopy } from "../core/fillCopy.js";
3
+ /**
4
+ * The sentence reporting what a gesture picked out.
5
+ * @param copy - The words the map writes.
6
+ * @param count - How many samples are selected.
7
+ * @param total - How many there are in all.
8
+ * @returns The sentence.
9
+ */
10
+ export function projectionSelectionSentence(copy, count, total) {
11
+ if (count === 0)
12
+ return copy.sentence.selectionNone;
13
+ return fillCopy(copy.sentence.selection, {
14
+ count: formatInteger(count),
15
+ total: formatInteger(total),
16
+ });
17
+ }
18
+ //# sourceMappingURL=projectionSelectionSentence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectionSelectionSentence.js","sourceRoot":"","sources":["../../../src/projection/ui/projectionSelectionSentence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAAoB,EACpB,KAAa,EACb,KAAa;IAEb,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;IACpD,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;QACvC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC;QAC3B,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC;KAC5B,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * What the one hook every tab shares hands out.
3
+ *
4
+ * The type lives beside the hook rather than inside it because the hook is
5
+ * short and its answer is not: a reader looking for how the state is kept
6
+ * should not have to scroll past a page of documented fields to find it.
7
+ */
8
+ import type { ScatterSelectionMode } from '../../scatter/core/scatterSelection.ts';
9
+ import type { SelectionChange } from '../../scatter/ui/useScatterSelection.ts';
10
+ import type { ProjectionOptions } from '../core/projectionOptions.ts';
11
+ import type { ProjectionGrouping, ResolvedProjectionGroups, ResolvedProjectionShapes } from '../core/projectionSamples.ts';
12
+ import type { ProjectionTab } from '../core/projectionTabs.ts';
13
+ import type { ProjectionSelection } from './projectionSelection.ts';
14
+ /** What every tab reads, and the five ways any of them changes it. */
15
+ export interface ProjectionStateApi {
16
+ /** The tabs this result can fill, in reading order. */
17
+ tabs: readonly ProjectionTab[];
18
+ /** The one showing. */
19
+ tab: ProjectionTab;
20
+ /** Move to another tab. One the result cannot fill is ignored. */
21
+ setTab: (tab: ProjectionTab) => void;
22
+ /**
23
+ * The grouping the dots are coloured by, resolved once per change; empty
24
+ * while the colour stands for nothing.
25
+ */
26
+ groups: ResolvedProjectionGroups;
27
+ /**
28
+ * The grouping the dots are shaped by, resolved once per change, or `null`
29
+ * while they are all discs.
30
+ */
31
+ shapes: ResolvedProjectionShapes | null;
32
+ /** Every grouping the samples carry, for the pickers that choose between them. */
33
+ groupings: readonly ProjectionGrouping[];
34
+ /** Every option, already made safe against the result. */
35
+ options: ProjectionOptions;
36
+ /** Change some of them; the rest are carried over and checked again. */
37
+ setOptions: (patch: Partial<ProjectionOptions>) => void;
38
+ /** The selected rows, as indices, which is what a plot draws. */
39
+ selected: readonly number[];
40
+ /** Settle a selection a plot's own gesture produced. */
41
+ settleSelection: (change: SelectionChange) => void;
42
+ /** Settle one from elsewhere — a legend entry, a table beside the figure. */
43
+ selectRows: (rows: readonly number[], mode: ScatterSelectionMode, source: ProjectionSelection['source']) => void;
44
+ /** Draw one pair of axes on the map, which is what a cell of the grid does. */
45
+ selectPair: (xAxis: number, yAxis: number) => void;
46
+ }
47
+ //# sourceMappingURL=projectionStateApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectionStateApi.d.ts","sourceRoot":"","sources":["../../../src/projection/ui/projectionStateApi.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EACV,kBAAkB,EAClB,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,sEAAsE;AACtE,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,IAAI,EAAE,SAAS,aAAa,EAAE,CAAC;IAC/B,uBAAuB;IACvB,GAAG,EAAE,aAAa,CAAC;IACnB,kEAAkE;IAClE,MAAM,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,MAAM,EAAE,wBAAwB,CAAC;IACjC;;;OAGG;IACH,MAAM,EAAE,wBAAwB,GAAG,IAAI,CAAC;IACxC,kFAAkF;IAClF,SAAS,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACzC,0DAA0D;IAC1D,OAAO,EAAE,iBAAiB,CAAC;IAC3B,wEAAwE;IACxE,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACxD,iEAAiE;IACjE,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,wDAAwD;IACxD,eAAe,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IACnD,6EAA6E;IAC7E,UAAU,EAAE,CACV,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,KAClC,IAAI,CAAC;IACV,+EAA+E;IAC/E,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * What the one hook every tab shares hands out.
3
+ *
4
+ * The type lives beside the hook rather than inside it because the hook is
5
+ * short and its answer is not: a reader looking for how the state is kept
6
+ * should not have to scroll past a page of documented fields to find it.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=projectionStateApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectionStateApi.js","sourceRoot":"","sources":["../../../src/projection/ui/projectionStateApi.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -40,7 +40,7 @@ export function useProjectionModels(input) {
40
40
  return {
41
41
  profiles,
42
42
  shares,
43
- sampleName: samples.ids[one] ?? `Row ${one + 1}`,
43
+ sampleName: samples.labels?.[one] ?? samples.ids[one] ?? `Row ${one + 1}`,
44
44
  };
45
45
  }
46
46
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"projectionTabModels.js","sourceRoot":"","sources":["../../../src/projection/ui/projectionTabModels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIhC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAqC7D;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAA4B;IAE5B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IACtC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAE1C,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7D,MAAM,QAAQ,GAAG,OAAO,CAAyB,GAAG,EAAE;QACpD,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACxC,OAAO,eAAe,CAAC;YACrB,QAAQ;YACR,IAAI;YACJ,IAAI,EAAE,OAAO,CAAC,aAAa;YAC3B,KAAK,EAAE,OAAO,CAAC,cAAc;YAC7B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,KAAK,EAAE,OAAO,CAAC,aAAa;YAC5B,WAAW;YACX,YAAY,EACV,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC;SACvE,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;IAExD,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,EAC5D,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAC5B,CAAC;IAEF,OAAO;QACL,QAAQ;QACR,MAAM;QACN,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,GAAG,CAAC,EAAE;KACjD,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,MAAkB,EAAE,GAAW,EAAE,KAAa;IAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,KAAK,CAAS,MAAM,CAAC,CAAC;IACzC,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"projectionTabModels.js","sourceRoot":"","sources":["../../../src/projection/ui/projectionTabModels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIhC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAqC7D;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAA4B;IAE5B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IACtC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAE1C,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7D,MAAM,QAAQ,GAAG,OAAO,CAAyB,GAAG,EAAE;QACpD,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACxC,OAAO,eAAe,CAAC;YACrB,QAAQ;YACR,IAAI;YACJ,IAAI,EAAE,OAAO,CAAC,aAAa;YAC3B,KAAK,EAAE,OAAO,CAAC,cAAc;YAC7B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,KAAK,EAAE,OAAO,CAAC,aAAa;YAC5B,WAAW;YACX,YAAY,EACV,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC;SACvE,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;IAExD,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,EAC5D,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAC5B,CAAC;IAEF,OAAO;QACL,QAAQ;QACR,MAAM;QACN,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,GAAG,CAAC,EAAE;KAC1E,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,MAAkB,EAAE,GAAW,EAAE,KAAa;IAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,KAAK,CAAS,MAAM,CAAC,CAAC;IACzC,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,9 +1,4 @@
1
- import type { ScatterSelectionMode } from '../../scatter/core/scatterSelection.ts';
2
- import type { SelectionChange } from '../../scatter/ui/useScatterSelection.ts';
3
- import type { ProjectionOptions } from '../core/projectionOptions.ts';
4
- import type { ResolvedProjectionGroups } from '../core/projectionSamples.ts';
5
- import type { ProjectionTab } from '../core/projectionTabs.ts';
6
- import type { ProjectionSelection } from './projectionSelection.ts';
1
+ import type { ProjectionStateApi } from './projectionStateApi.ts';
7
2
  import type { ProjectionViewerProps } from './projectionViewerProps.ts';
8
3
  /**
9
4
  * What {@link useProjectionState} needs: the run, the rows, and the three
@@ -14,29 +9,6 @@ import type { ProjectionViewerProps } from './projectionViewerProps.ts';
14
9
  * hook actually applies and the two cannot drift apart.
15
10
  */
16
11
  type ProjectionStateOptions = Pick<ProjectionViewerProps, 'result' | 'samples' | 'tab' | 'defaultTab' | 'onTabChange' | 'selected' | 'defaultSelected' | 'onSelectionChange' | 'options' | 'panels' | 'defaultOptions' | 'onOptionsChange'>;
17
- /** What every tab reads, and the five ways any of them changes it. */
18
- export interface ProjectionStateApi {
19
- /** The tabs this result can fill, in reading order. */
20
- tabs: readonly ProjectionTab[];
21
- /** The one showing. */
22
- tab: ProjectionTab;
23
- /** Move to another tab. One the result cannot fill is ignored. */
24
- setTab: (tab: ProjectionTab) => void;
25
- /** The groups as every figure draws them, resolved once per change. */
26
- groups: ResolvedProjectionGroups;
27
- /** Every option, already made safe against the result. */
28
- options: ProjectionOptions;
29
- /** Change some of them; the rest are carried over and checked again. */
30
- setOptions: (patch: Partial<ProjectionOptions>) => void;
31
- /** The selected rows, as indices, which is what a plot draws. */
32
- selected: readonly number[];
33
- /** Settle a selection a plot's own gesture produced. */
34
- settleSelection: (change: SelectionChange) => void;
35
- /** Settle one from elsewhere — a legend entry, a table beside the figure. */
36
- selectRows: (rows: readonly number[], mode: ScatterSelectionMode, source: ProjectionSelection['source']) => void;
37
- /** Draw one pair of axes on the map, which is what a cell of the grid does. */
38
- selectPair: (xAxis: number, yAxis: number) => void;
39
- }
40
12
  /**
41
13
  * The tab, the pair of axes, the selection and the options, controlled or not.
42
14
  *
@@ -1 +1 @@
1
- {"version":3,"file":"useProjectionState.d.ts","sourceRoot":"","sources":["../../../src/projection/ui/useProjectionState.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAI/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAMpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAExE;;;;;;;GAOG;AACH,KAAK,sBAAsB,GAAG,IAAI,CAChC,qBAAqB,EACnB,QAAQ,GACR,SAAS,GACT,KAAK,GACL,YAAY,GACZ,aAAa,GACb,UAAU,GACV,iBAAiB,GACjB,mBAAmB,GACnB,SAAS,GACT,QAAQ,GACR,gBAAgB,GAChB,iBAAiB,CACpB,CAAC;AAEF,sEAAsE;AACtE,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,IAAI,EAAE,SAAS,aAAa,EAAE,CAAC;IAC/B,uBAAuB;IACvB,GAAG,EAAE,aAAa,CAAC;IACnB,kEAAkE;IAClE,MAAM,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;IACrC,uEAAuE;IACvE,MAAM,EAAE,wBAAwB,CAAC;IACjC,0DAA0D;IAC1D,OAAO,EAAE,iBAAiB,CAAC;IAC3B,wEAAwE;IACxE,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACxD,iEAAiE;IACjE,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,wDAAwD;IACxD,eAAe,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IACnD,6EAA6E;IAC7E,UAAU,EAAE,CACV,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,KAClC,IAAI,CAAC;IACV,+EAA+E;IAC/E,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,sBAAsB,GAC9B,kBAAkB,CA0GpB"}
1
+ {"version":3,"file":"useProjectionState.d.ts","sourceRoot":"","sources":["../../../src/projection/ui/useProjectionState.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAExE;;;;;;;GAOG;AACH,KAAK,sBAAsB,GAAG,IAAI,CAChC,qBAAqB,EACnB,QAAQ,GACR,SAAS,GACT,KAAK,GACL,YAAY,GACZ,aAAa,GACb,UAAU,GACV,iBAAiB,GACjB,mBAAmB,GACnB,SAAS,GACT,QAAQ,GACR,gBAAgB,GAChB,iBAAiB,CACpB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,sBAAsB,GAC9B,kBAAkB,CA0HpB"}
@@ -1,5 +1,5 @@
1
1
  import { useCallback, useMemo, useState } from 'react';
2
- import { resolveProjectionGroups } from "../core/projectionSamples.js";
2
+ import { projectionGrouping, resolveProjectionGroups, resolveProjectionShapes, } from "../core/projectionGroupings.js";
3
3
  import { projectionTabs } from "../core/projectionTabs.js";
4
4
  import { resolveProjectionOptions } from "../core/resolveProjectionOptions.js";
5
5
  import { indexProjectionIds, projectionNamesOf, projectionRowsOf, } from "./projectionSelection.js";
@@ -33,8 +33,12 @@ export function useProjectionState(options) {
33
33
  const [ownTab, setOwnTab] = useState(defaultTab);
34
34
  const [ownSelected, setOwnSelected] = useState(() => projectionRowsOf(defaultSelected, rowOfId));
35
35
  const [ownOptions, setOwnOptions] = useState(() => defaultOptions ?? {});
36
- const groups = useMemo(() => resolveProjectionGroups(samples, result.scores.rows), [result, samples]);
37
- const settled = useMemo(() => resolveProjectionOptions(heldOptions ?? ownOptions, result), [heldOptions, ownOptions, result]);
36
+ const groupings = samples.groupings ?? NO_GROUPINGS;
37
+ const settled = useMemo(() => resolveProjectionOptions(heldOptions ?? ownOptions, result, groupings), [groupings, heldOptions, ownOptions, result]);
38
+ const { colorBy, shapeBy } = settled;
39
+ const rowCount = result.scores.rows;
40
+ const groups = useMemo(() => resolveProjectionGroups(projectionGrouping(samples, colorBy), rowCount), [colorBy, rowCount, samples]);
41
+ const shapes = useMemo(() => resolveProjectionShapes(projectionGrouping(samples, shapeBy), rowCount), [rowCount, samples, shapeBy]);
38
42
  const setTab = useCallback((wanted) => {
39
43
  const reachable = inReach(wanted, tabs);
40
44
  if (reachable === undefined)
@@ -44,11 +48,11 @@ export function useProjectionState(options) {
44
48
  onTabChange?.(reachable);
45
49
  }, [onTabChange, tab, tabs]);
46
50
  const setOptions = useCallback((patch) => {
47
- const next = resolveProjectionOptions({ ...settled, ...patch }, result);
51
+ const next = resolveProjectionOptions({ ...settled, ...patch }, result, groupings);
48
52
  if (heldOptions === undefined)
49
53
  setOwnOptions(next);
50
54
  onOptionsChange?.(next);
51
- }, [heldOptions, onOptionsChange, result, settled]);
55
+ }, [groupings, heldOptions, onOptionsChange, result, settled]);
52
56
  const selectRows = useCallback((rows, mode, source) => {
53
57
  if (selected === undefined)
54
58
  setOwnSelected(rows);
@@ -74,6 +78,8 @@ export function useProjectionState(options) {
74
78
  tab: inReach(tab, tabs) ?? inReach(ownTab, tabs) ?? tabs[0] ?? 'map',
75
79
  setTab,
76
80
  groups,
81
+ shapes,
82
+ groupings,
77
83
  options: settled,
78
84
  setOptions,
79
85
  selected: selected === undefined
@@ -104,4 +110,6 @@ function inReach(wanted, tabs) {
104
110
  }
105
111
  return undefined;
106
112
  }
113
+ /** No groupings at all, shared so an absent list keeps one identity. */
114
+ const NO_GROUPINGS = [];
107
115
  //# sourceMappingURL=useProjectionState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useProjectionState.js","sourceRoot":"","sources":["../../../src/projection/ui/useProjectionState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useProjectionState.js","sourceRoot":"","sources":["../../../src/projection/ui/useProjectionState.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ export { ellipsePolygon, projectEllipse } from './ellipseProjection.ts';
19
19
  export type { LassoPath } from './lassoPath.ts';
20
20
  export { appendLassoPoint, createLassoPath, lassoPathData, resetLassoPath, } from './lassoPath.ts';
21
21
  export { pointInPolygon, pointsInPolygon, polygonBounds } from './polygon.ts';
22
+ export { pointShapePath } from './pointShape.ts';
22
23
  export type { ScatterGroupMoments } from './scatterGroupMoments.ts';
23
24
  export type { ScatterGroupSpread, ScatterGroupSpreadOptions, } from './scatterGroupSpread.ts';
24
25
  export { scatterGroupSpread, scatterPairEllipse, scatterSkippedGroups, } from './scatterGroupSpread.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scatter/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,YAAY,EACV,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,4BAA4B,GAC7B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9E,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,YAAY,EACV,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scatter/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,YAAY,EACV,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,4BAA4B,GAC7B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,YAAY,EACV,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -15,6 +15,7 @@ export { coverageForStandardDeviations, standardDeviationsForCoverage, } from ".
15
15
  export { ellipsePolygon, projectEllipse } from "./ellipseProjection.js";
16
16
  export { appendLassoPoint, createLassoPath, lassoPathData, resetLassoPath, } from "./lassoPath.js";
17
17
  export { pointInPolygon, pointsInPolygon, polygonBounds } from "./polygon.js";
18
+ export { pointShapePath } from "./pointShape.js";
18
19
  export { scatterGroupSpread, scatterPairEllipse, scatterSkippedGroups, } from "./scatterGroupSpread.js";
19
20
  export { mergeScatterSelection, scatterSelectedIndices, scatterSelectionMask, } from "./scatterSelection.js";
20
21
  export { nearestPointIndex, pointsWithinBounds } from "./screenPoints.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scatter/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAUH,OAAO,EACL,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExE,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAM9E,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scatter/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAUH,OAAO,EACL,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExE,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAMjD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { OverlayMarkShape } from '../../overlay/core/overlayMarks.ts';
2
+ /**
3
+ * The outline of a mark drawn as a filled polygon — a sample shaped by a
4
+ * second grouping, or a marker drawn in one of those shapes — as SVG path data.
5
+ *
6
+ * Every shape covers the area of the disc it stands in for. The eye weighs a
7
+ * mark by its ink, so a square drawn in the disc's own box would make its
8
+ * group read as the heavier one — which is a claim about the data that nothing
9
+ * in the data supports.
10
+ * @param shape - The shape.
11
+ * @param x - Horizontal centre, in pixels.
12
+ * @param y - Vertical centre, in pixels.
13
+ * @param radius - Radius of the disc the shape stands in for, in pixels.
14
+ * @returns The path data, or `null` for a disc, which is drawn as a circle,
15
+ * and for every mark that is not a filled polygon.
16
+ */
17
+ export declare function pointShapePath(shape: OverlayMarkShape, x: number, y: number, radius: number): string | null;
18
+ //# sourceMappingURL=pointShape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pointShape.d.ts","sourceRoot":"","sources":["../../../src/scatter/core/pointShape.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAE3E;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,gBAAgB,EACvB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,IAAI,CAiCf"}
@@ -0,0 +1,70 @@
1
+ import { chartRoundPixel } from "../../chart/core/chartScale.js";
2
+ /**
3
+ * The outline of a mark drawn as a filled polygon — a sample shaped by a
4
+ * second grouping, or a marker drawn in one of those shapes — as SVG path data.
5
+ *
6
+ * Every shape covers the area of the disc it stands in for. The eye weighs a
7
+ * mark by its ink, so a square drawn in the disc's own box would make its
8
+ * group read as the heavier one — which is a claim about the data that nothing
9
+ * in the data supports.
10
+ * @param shape - The shape.
11
+ * @param x - Horizontal centre, in pixels.
12
+ * @param y - Vertical centre, in pixels.
13
+ * @param radius - Radius of the disc the shape stands in for, in pixels.
14
+ * @returns The path data, or `null` for a disc, which is drawn as a circle,
15
+ * and for every mark that is not a filled polygon.
16
+ */
17
+ export function pointShapePath(shape, x, y, radius) {
18
+ if (shape === 'square') {
19
+ const half = SQUARE_HALF * radius;
20
+ return polygon([
21
+ [x - half, y - half],
22
+ [x + half, y - half],
23
+ [x + half, y + half],
24
+ [x - half, y + half],
25
+ ]);
26
+ }
27
+ if (shape === 'diamond') {
28
+ const reach = DIAMOND_REACH * radius;
29
+ return polygon([
30
+ [x, y - reach],
31
+ [x + reach, y],
32
+ [x, y + reach],
33
+ [x - reach, y],
34
+ ]);
35
+ }
36
+ if (shape === 'triangle' || shape === 'triangle-down') {
37
+ // The centroid sits on the point, so the triangle is balanced on the
38
+ // sample rather than hanging from it.
39
+ const tip = TRIANGLE_TIP * radius;
40
+ const half = TRIANGLE_HALF_BASE * radius;
41
+ const base = (TRIANGLE_TIP / 2) * radius;
42
+ const flip = shape === 'triangle' ? 1 : -1;
43
+ return polygon([
44
+ [x, y - flip * tip],
45
+ [x + half, y + flip * base],
46
+ [x - half, y + flip * base],
47
+ ]);
48
+ }
49
+ return null;
50
+ }
51
+ function polygon(corners) {
52
+ let path = '';
53
+ for (const [x, y] of corners) {
54
+ path += `${path === '' ? 'M' : 'L'}${chartRoundPixel(x)} ${chartRoundPixel(y)}`;
55
+ }
56
+ return `${path}Z`;
57
+ }
58
+ /** Half the side of a square as large as a disc of radius one: √π / 2. */
59
+ const SQUARE_HALF = Math.sqrt(Math.PI) / 2;
60
+ /** How far a diamond as large as that disc reaches from its centre: √(π / 2). */
61
+ const DIAMOND_REACH = Math.sqrt(Math.PI / 2);
62
+ /**
63
+ * The side of an equilateral triangle as large as that disc is √(4π / √3). Its
64
+ * tip stands side / √3 from the centroid, and its base half as far on the other
65
+ * side.
66
+ */
67
+ const TRIANGLE_SIDE = Math.sqrt((4 * Math.PI) / Math.sqrt(3));
68
+ const TRIANGLE_TIP = TRIANGLE_SIDE / Math.sqrt(3);
69
+ const TRIANGLE_HALF_BASE = TRIANGLE_SIDE / 2;
70
+ //# sourceMappingURL=pointShape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pointShape.js","sourceRoot":"","sources":["../../../src/scatter/core/pointShape.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScatterPlot.d.ts","sourceRoot":"","sources":["../../../src/scatter/ui/ScatterPlot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiC,YAAY,EAAE,MAAM,OAAO,CAAC;AAezE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAK9D;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,CAiIjE"}
1
+ {"version":3,"file":"ScatterPlot.d.ts","sourceRoot":"","sources":["../../../src/scatter/ui/ScatterPlot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiC,YAAY,EAAE,MAAM,OAAO,CAAC;AAezE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAK9D;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,CAoIjE"}
@@ -23,7 +23,8 @@ import { useScatterLabels } from "./useScatterLabels.js";
23
23
  */
24
24
  export function ScatterPlot(props) {
25
25
  const { x, y, width, height, xAxis, yAxis, groupOf, groups } = props;
26
- const { mutedGroups, ellipse = null, ellipseMinimumPoints } = props;
26
+ const { mutedGroups, shapeOf, shapes } = props;
27
+ const { ellipse = null, ellipseMinimumPoints } = props;
27
28
  const { ellipseFillOpacity, showGroupMeans, markers } = props;
28
29
  const { pointRadius = 3.5, outlinedFrom, pointLabels } = props;
29
30
  const { showGroupLabels = false, selected, defaultSelected } = props;
@@ -78,6 +79,6 @@ export function ScatterPlot(props) {
78
79
  }
79
80
  onPointDoubleClick(opened);
80
81
  }
81
- return (_jsx(ChartFrame, { width: width, height: height, x: frame.xAxis, y: frame.yAxis, geometry: geometry, busy: interaction.lasso.drawing, overlay: overlay, className: className, testId: testId, label: label ?? scatterPlotLabel(xAxis, yAxis, points.x.length), children: () => (_jsxs(_Fragment, { children: [ellipse === null || groupOf === undefined ? null : (_jsx(ScatterEllipseLayer, { x: x, y: y, groupOf: groupOf, colors: ink.colors, opacities: ink.opacities, scaleX: toX, scaleY: toY, size: ellipse, minimumPoints: ellipseMinimumPoints, fillOpacity: ellipseFillOpacity })), _jsx(ScatterPointLayer, { points: points, groupOf: groupOf, colors: ink.colors, opacities: ink.opacities, radius: pointRadius, outlinedFrom: outlinedFrom }), _jsx(ScatterMarkLayer, { points: points, selected: interaction.selection.mask, hovered: interaction.hover.hovered, focused: interaction.keyboard.cursor, radius: pointRadius, groupOf: groupOf, colors: ink.colors, showGroupMeans: showGroupMeans, marks: scatterPixelMarks(markers, toX, toY) }), _jsx(ScatterOverlayLayers, { labels: labels, radius: pointRadius, lassoPath: interaction.lasso.pathData }), _jsx("rect", { ...rect, ref: surface, fill: "transparent", tabIndex: 0, onKeyDown: interaction.keyboard.onKeyDown, onDoubleClick: handleDoubleClick, ...interaction.surface })] })) }));
82
+ return (_jsx(ChartFrame, { width: width, height: height, x: frame.xAxis, y: frame.yAxis, geometry: geometry, busy: interaction.lasso.drawing, overlay: overlay, className: className, testId: testId, label: label ?? scatterPlotLabel(xAxis, yAxis, points.x.length), children: () => (_jsxs(_Fragment, { children: [ellipse === null || groupOf === undefined ? null : (_jsx(ScatterEllipseLayer, { x: x, y: y, groupOf: groupOf, colors: ink.colors, opacities: ink.opacities, scaleX: toX, scaleY: toY, size: ellipse, minimumPoints: ellipseMinimumPoints, fillOpacity: ellipseFillOpacity })), _jsx(ScatterPointLayer, { points: points, groupOf: groupOf, colors: ink.colors, opacities: ink.opacities, shapeOf: shapeOf, shapes: shapes, radius: pointRadius, outlinedFrom: outlinedFrom }), _jsx(ScatterMarkLayer, { points: points, selected: interaction.selection.mask, hovered: interaction.hover.hovered, focused: interaction.keyboard.cursor, radius: pointRadius, groupOf: groupOf, colors: ink.colors, showGroupMeans: showGroupMeans, marks: scatterPixelMarks(markers, toX, toY) }), _jsx(ScatterOverlayLayers, { labels: labels, radius: pointRadius, lassoPath: interaction.lasso.pathData }), _jsx("rect", { ...rect, ref: surface, fill: "transparent", tabIndex: 0, onKeyDown: interaction.keyboard.onKeyDown, onDoubleClick: handleDoubleClick, ...interaction.surface })] })) }));
82
83
  }
83
84
  //# sourceMappingURL=ScatterPlot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScatterPlot.js","sourceRoot":"","sources":["../../../src/scatter/ui/ScatterPlot.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA+B,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA2B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA4B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAC5D,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACrE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI,EAAE,oBAAoB,EAAE,GAAG,KAAK,CAAC;IACpE,MAAM,EAAE,kBAAkB,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC9D,MAAM,EAAE,WAAW,GAAG,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAC/D,MAAM,EAAE,eAAe,GAAG,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IACrE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAC5E,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC1E,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IACvE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAE3C,MAAM,KAAK,GAAG,eAAe,CAAC;QAC5B,CAAC;QACD,CAAC;QACD,KAAK;QACL,MAAM;QACN,KAAK;QACL,KAAK;QACL,QAAQ;QACR,gBAAgB;QAChB,SAAS;QACT,cAAc;KACf,CAAC,CAAC;IACH,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3D,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACtC,MAAM,GAAG,GAAG,OAAO,CACjB,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,EAC1C,CAAC,MAAM,EAAE,WAAW,CAAC,CACtB,CAAC;IACF,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE;QACtC,WAAW;QACX,eAAe;QACf,MAAM;QACN,OAAO;QACP,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,qBAAqB,CAAC;QACxC,MAAM;QACN,OAAO,EAAE,IAAI,CAAC,CAAC;QACf,OAAO,EAAE,IAAI,CAAC,CAAC;QACf,QAAQ;QACR,eAAe;QACf,iBAAiB;QACjB,UAAU;QACV,UAAU;QACV,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,WAAW,GAAG,mBAAmB;QAC9C,aAAa;QACb,WAAW;QACX,aAAa;KACd,CAAC,CAAC;IAEH,SAAS,iBAAiB,CAAC,KAAsC;QAC/D,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,MAAM,KAAK,IAAI,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACxD,KAAK,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QACD,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,CACL,KAAC,UAAU,IACT,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,CAAC,EAAE,KAAK,CAAC,KAAK,EACd,CAAC,EAAE,KAAK,CAAC,KAAK,EACd,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,EAC/B,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,IAAI,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,YAE9D,GAAG,EAAE,CAAC,CACL,8BACG,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAClD,KAAC,mBAAmB,IAClB,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,EACJ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,SAAS,EAAE,GAAG,CAAC,SAAS,EACxB,MAAM,EAAE,GAAG,EACX,MAAM,EAAE,GAAG,EACX,IAAI,EAAE,OAAO,EACb,aAAa,EAAE,oBAAoB,EACnC,WAAW,EAAE,kBAAkB,GAC/B,CACH,EACD,KAAC,iBAAiB,IAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,SAAS,EAAE,GAAG,CAAC,SAAS,EACxB,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,YAAY,GAC1B,EACF,KAAC,gBAAgB,IACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,IAAI,EACpC,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,EAClC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,MAAM,EACpC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,iBAAiB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAC3C,EACF,KAAC,oBAAoB,IACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,QAAQ,GACrC,EACF,kBACM,IAAI,EACR,GAAG,EAAE,OAAO,EACZ,IAAI,EAAC,aAAa,EAClB,QAAQ,EAAE,CAAC,EACX,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,SAAS,EACzC,aAAa,EAAE,iBAAiB,KAC5B,WAAW,CAAC,OAAO,GACvB,IACD,CACJ,GACU,CACd,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ScatterPlot.js","sourceRoot":"","sources":["../../../src/scatter/ui/ScatterPlot.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { ReactElement } from 'react';
2
+ import type { OverlaySampleShape } from '../../overlay/core/overlayMarks.ts';
2
3
  import type { ScreenPoints } from '../core/screenPoints.ts';
3
4
  /** What {@link ScatterPointLayer} draws. */
4
5
  export interface ScatterPointLayerProps {
@@ -26,6 +27,17 @@ export interface ScatterPointLayerProps {
26
27
  * @default undefined — every group is drawn at full strength
27
28
  */
28
29
  opacities?: readonly number[];
30
+ /**
31
+ * Which shape each point takes, as an index into `shapes`. An entry of `-1`,
32
+ * or one outside the range, is a disc.
33
+ * @default undefined — every point is a disc
34
+ */
35
+ shapeOf?: ArrayLike<number>;
36
+ /**
37
+ * The shapes, in the order `shapeOf` names them.
38
+ * @default undefined
39
+ */
40
+ shapes?: readonly OverlaySampleShape[];
29
41
  /**
30
42
  * Colour of a point belonging to no group. It has to be the one ink on the
31
43
  * plot that names nothing, or a reader counts it as one more group.
@@ -71,7 +83,8 @@ export interface ScatterPointLayerProps {
71
83
  *
72
84
  * A hollow dot is the same dot at the same radius with its colour moved from
73
85
  * the fill to the stroke, so the two read as one kind of thing seen at two
74
- * levels of confidence rather than as two unrelated marks.
86
+ * levels of confidence rather than as two unrelated marks. A shaped point
87
+ * follows the same rule, and covers the area of the disc it stands in for.
75
88
  * @param props - See {@link ScatterPointLayerProps}.
76
89
  * @returns The cloud.
77
90
  */