@openbraininstitute/morphoviewer 0.27.2 → 0.30.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 (60) hide show
  1. package/dist/components/morpho-viewer-octree/morpho-viewer-octree.d.ts.map +1 -1
  2. package/dist/components/morpho-viewer-octree/morpho-viewer-octree.js +3 -2
  3. package/dist/components/morpho-viewer-scalebar/morpho-viewer-scalebar.d.ts +4 -3
  4. package/dist/components/morpho-viewer-scalebar/morpho-viewer-scalebar.d.ts.map +1 -1
  5. package/dist/components/morpho-viewer-scalebar/morpho-viewer-scalebar.js +61 -10
  6. package/dist/components/morpho-viewer-scalebar/morpho-viewer-scalebar.module.css +19 -9
  7. package/dist/components/morpho-viewer-scalebar/painter.d.ts +2 -1
  8. package/dist/components/morpho-viewer-scalebar/painter.d.ts.map +1 -1
  9. package/dist/components/morpho-viewer-scalebar/painter.js +113 -10
  10. package/dist/components/morpho-viewer-scalebar/resolve.d.ts +36 -0
  11. package/dist/components/morpho-viewer-scalebar/resolve.d.ts.map +1 -0
  12. package/dist/components/morpho-viewer-scalebar/resolve.js +129 -0
  13. package/dist/components/morpho-viewer-simul/morpho-viewer-simul.d.ts.map +1 -1
  14. package/dist/components/morpho-viewer-simul/morpho-viewer-simul.js +3 -2
  15. package/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.d.ts.map +1 -1
  16. package/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.js +3 -2
  17. package/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts +9 -1
  18. package/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts.map +1 -1
  19. package/dist/components/morpho-viewer-small-circuit/painter/manager.js +54 -5
  20. package/dist/components/morpho-viewer-small-circuit/painter/painter-synapses/index.d.ts +2 -0
  21. package/dist/components/morpho-viewer-small-circuit/painter/painter-synapses/index.d.ts.map +1 -0
  22. package/dist/components/morpho-viewer-small-circuit/painter/painter-synapses/index.js +2 -0
  23. package/dist/components/morpho-viewer-small-circuit/painter/painter-synapses/painter-synapses.d.ts +23 -0
  24. package/dist/components/morpho-viewer-small-circuit/painter/painter-synapses/painter-synapses.d.ts.map +1 -0
  25. package/dist/components/morpho-viewer-small-circuit/painter/painter-synapses/painter-synapses.js +79 -0
  26. package/dist/components/morpho-viewer-small-circuit/types.d.ts +8 -0
  27. package/dist/components/morpho-viewer-small-circuit/types.d.ts.map +1 -1
  28. package/dist/components/morpho-viewer-somas-only/index.d.ts +1 -0
  29. package/dist/components/morpho-viewer-somas-only/index.d.ts.map +1 -1
  30. package/dist/components/morpho-viewer-somas-only/index.js +2 -1
  31. package/dist/components/morpho-viewer-somas-only/manager/adaptative-resolution.d.ts.map +1 -1
  32. package/dist/components/morpho-viewer-somas-only/manager/adaptative-resolution.js +7 -5
  33. package/dist/components/morpho-viewer-somas-only/manager/manager.d.ts +10 -1
  34. package/dist/components/morpho-viewer-somas-only/manager/manager.d.ts.map +1 -1
  35. package/dist/components/morpho-viewer-somas-only/manager/manager.js +103 -6
  36. package/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.d.ts.map +1 -1
  37. package/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.js +69 -7
  38. package/dist/components/morpho-viewer-somas-only/morpho-viewer-somas-only.d.ts.map +1 -1
  39. package/dist/components/morpho-viewer-somas-only/morpho-viewer-somas-only.js +3 -2
  40. package/dist/components/morpho-viewer-somas-only/types.d.ts +4 -0
  41. package/dist/components/morpho-viewer-somas-only/types.d.ts.map +1 -1
  42. package/dist/components/signals.d.ts +15 -0
  43. package/dist/components/signals.d.ts.map +1 -0
  44. package/dist/components/signals.js +27 -0
  45. package/dist/components/snapshot.d.ts +3 -0
  46. package/dist/components/snapshot.d.ts.map +1 -0
  47. package/dist/components/snapshot.js +32 -0
  48. package/dist/components/types.d.ts +57 -1
  49. package/dist/components/types.d.ts.map +1 -1
  50. package/dist/components/types.js +24 -2
  51. package/dist/index.d.ts +3 -0
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +2 -1
  54. package/dist/package.json +2 -2
  55. package/dist/painters/gizmo.d.ts +1 -0
  56. package/dist/painters/gizmo.d.ts.map +1 -1
  57. package/dist/painters/gizmo.js +9 -2
  58. package/dist/utils.d.ts.map +1 -1
  59. package/dist/utils.js +1 -1
  60. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"morpho-viewer-octree.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-octree/morpho-viewer-octree.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAIvD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,qBAgChE"}
1
+ {"version":3,"file":"morpho-viewer-octree.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-octree/morpho-viewer-octree.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAIvD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,qBAqChE"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { tgdFullscreenToggle } from "@tolokoban/tgd";
3
3
  import React from "react";
4
+ import { version } from "./../../package.json";
4
5
  import { classNames } from "./../../utils";
5
6
  import { MorphoViewerIconCenter } from "../icons/center";
6
7
  import { MorphoViewerIconFullscreen } from "../icons/fullscreen";
@@ -19,7 +20,7 @@ export function MorphoViewerOctree(props) {
19
20
  const handleResetCamera = () => {
20
21
  manager.resetCamera();
21
22
  };
22
- return (_jsxs("div", { className: classNames(props.className, styles.morphoViewerOctree), ref: ref, children: [_jsx(Canvas, { painterManager: manager }), _jsxs("header", { children: [_jsx("button", { type: "button", onClick: handleResetCamera, children: _jsx(MorphoViewerIconCenter, {}) }), _jsx("button", { type: "button", onClick: handleFullscreen, children: _jsx(MorphoViewerIconFullscreen, {}) })] }), props.scalebar && (_jsx(MorphoViewerScalebar, { className: props.scalebar, spacePerPixelEvent: manager.eventScalebar }))] }));
23
+ return (_jsxs("div", { className: classNames(props.className, styles.morphoViewerOctree), ref: ref, "data-version": version, children: [_jsx(Canvas, { painterManager: manager }), _jsxs("header", { children: [_jsx("button", { type: "button", onClick: handleResetCamera, children: _jsx(MorphoViewerIconCenter, {}) }), _jsx("button", { type: "button", onClick: handleFullscreen, children: _jsx(MorphoViewerIconFullscreen, {}) })] }), props.scalebar && (_jsx(MorphoViewerScalebar, { className: props.scalebar, spacePerPixelEvent: manager.eventScalebar, unit: props.scalebar }))] }));
23
24
  }
24
25
  const Canvas = React.memo(({ painterManager }) => {
25
26
  return (_jsx("canvas", { className: styles.webgl, ref: (canvas) => {
@@ -29,4 +30,4 @@ const Canvas = React.memo(({ painterManager }) => {
29
30
  };
30
31
  } }, "canvas"));
31
32
  });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ycGhvLXZpZXdlci1vY3RyZWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb3JwaG8tdmlld2VyLW9jdHJlZS9tb3JwaG8tdmlld2VyLW9jdHJlZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXJDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pFLE9BQU8sb0JBQW9CLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFzQixnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSXpFLE9BQU8sTUFBTSxNQUFNLG1DQUFtQyxDQUFDO0FBRXZELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUE4QjtJQUMvRCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUF3QixJQUFJLENBQUMsQ0FBQztJQUN0RCxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsRUFBRTtRQUM1QixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTztRQUVqQixtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDLENBQUM7SUFDRixNQUFNLGlCQUFpQixHQUFHLEdBQUcsRUFBRTtRQUM3QixPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxDQUNMLGVBQUssU0FBUyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLGFBQzlFLEtBQUMsTUFBTSxJQUFDLGNBQWMsRUFBRSxPQUFPLEdBQUksRUFDbkMsNkJBQ0UsaUJBQVEsSUFBSSxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLFlBQzlDLEtBQUMsc0JBQXNCLEtBQUcsR0FDbkIsRUFDVCxpQkFBUSxJQUFJLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBRSxnQkFBZ0IsWUFDN0MsS0FBQywwQkFBMEIsS0FBRyxHQUN2QixJQUNGLEVBQ1IsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUNqQixLQUFDLG9CQUFvQixJQUNuQixTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFDekIsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLGFBQWEsR0FDekMsQ0FDSCxJQUNHLENBQ1AsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQXFDLEVBQUUsRUFBRTtJQUNsRixPQUFPLENBQ0wsaUJBRUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQ3ZCLEdBQUcsRUFBRSxDQUFDLE1BQWdDLEVBQUUsRUFBRTtZQUN4QyxjQUFjLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUMvQixPQUFPLEdBQUcsRUFBRTtnQkFDVixjQUFjLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUMvQixDQUFDLENBQUM7UUFDSixDQUFDLElBUEcsUUFBUSxDQVFaLENBQ0gsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDIn0=
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ycGhvLXZpZXdlci1vY3RyZWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb3JwaG8tdmlld2VyLW9jdHJlZS9tb3JwaG8tdmlld2VyLW9jdHJlZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVyQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLG9CQUFvQixNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBc0IsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUl6RSxPQUFPLE1BQU0sTUFBTSxtQ0FBbUMsQ0FBQztBQUV2RCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBOEI7SUFDL0QsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBd0IsSUFBSSxDQUFDLENBQUM7SUFDdEQsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUU7UUFDNUIsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUN4QixJQUFJLENBQUMsR0FBRztZQUFFLE9BQU87UUFFakIsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQyxDQUFDO0lBQ0YsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLEVBQUU7UUFDN0IsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUMsQ0FBQztJQUVGLE9BQU8sQ0FDTCxlQUNFLFNBQVMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsa0JBQWtCLENBQUMsRUFDakUsR0FBRyxFQUFFLEdBQUcsa0JBQ00sT0FBTyxhQUVyQixLQUFDLE1BQU0sSUFBQyxjQUFjLEVBQUUsT0FBTyxHQUFJLEVBQ25DLDZCQUNFLGlCQUFRLElBQUksRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFFLGlCQUFpQixZQUM5QyxLQUFDLHNCQUFzQixLQUFHLEdBQ25CLEVBQ1QsaUJBQVEsSUFBSSxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUUsZ0JBQWdCLFlBQzdDLEtBQUMsMEJBQTBCLEtBQUcsR0FDdkIsSUFDRixFQUNSLEtBQUssQ0FBQyxRQUFRLElBQUksQ0FDakIsS0FBQyxvQkFBb0IsSUFDbkIsU0FBUyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQ3pCLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQ3pDLElBQUksRUFBRSxLQUFLLENBQUMsUUFBUSxHQUNwQixDQUNILElBQ0csQ0FDUCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBcUMsRUFBRSxFQUFFO0lBQ2xGLE9BQU8sQ0FDTCxpQkFFRSxTQUFTLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFDdkIsR0FBRyxFQUFFLENBQUMsTUFBZ0MsRUFBRSxFQUFFO1lBQ3hDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQy9CLE9BQU8sR0FBRyxFQUFFO2dCQUNWLGNBQWMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQy9CLENBQUMsQ0FBQztRQUNKLENBQUMsSUFQRyxRQUFRLENBUVosQ0FDSCxDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUMifQ==
@@ -1,9 +1,10 @@
1
1
  import React from "react";
2
+ import { type PropsForScalebar } from "../types";
2
3
  import type { TgdEvent } from "@tolokoban/tgd";
3
4
  export interface MorphoViewerScalebarProps {
4
- className?: string | boolean;
5
+ className?: PropsForScalebar["scalebar"];
5
6
  spacePerPixelEvent: TgdEvent<number>;
6
- unit?: number;
7
+ unit?: number | PropsForScalebar["scalebar"];
7
8
  }
8
- export default function MorphoViewerScalebar({ className, spacePerPixelEvent, unit, }: MorphoViewerScalebarProps): React.JSX.Element;
9
+ export default function MorphoViewerScalebar({ className, spacePerPixelEvent, unit: unitProp, }: MorphoViewerScalebarProps): React.JSX.Element;
9
10
  //# sourceMappingURL=morpho-viewer-scalebar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"morpho-viewer-scalebar.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-scalebar/morpho-viewer-scalebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAIrC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAC3C,SAAS,EACT,kBAAkB,EAClB,IAAW,GACZ,EAAE,yBAAyB,qBA+B3B"}
1
+ {"version":3,"file":"morpho-viewer-scalebar.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-scalebar/morpho-viewer-scalebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,KAAK,gBAAgB,EAA4C,MAAM,UAAU,CAAC;AAU3F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACzC,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAIrC,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;CAC9C;AAED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAC3C,SAAS,EACT,kBAAkB,EAClB,IAAI,EAAE,QAAQ,GACf,EAAE,yBAAyB,qBAW3B"}
@@ -1,30 +1,81 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import React from "react";
3
3
  import { classNames } from "./../../utils";
4
+ import { ScalebarOrientation } from "../types";
4
5
  import { paint } from "./painter";
6
+ import { normalizeScalebarConfig, resolveHorizontalScalebar, resolvePixelRatio, resolveUnitFactor, resolveVerticalScalebar, } from "./resolve";
5
7
  import styles from "./morpho-viewer-scalebar.module.css";
6
- export default function MorphoViewerScalebar({ className, spacePerPixelEvent, unit = 1e-6, }) {
8
+ export default function MorphoViewerScalebar({ className, spacePerPixelEvent, unit: unitProp, }) {
9
+ const config = React.useMemo(() => normalizeScalebarConfig(className), [className]);
10
+ const unit = resolveUnitFactor(config, unitProp);
11
+ const pixelRatio = resolvePixelRatio(config);
7
12
  const spacePerPixel = useSpacePerPixel(spacePerPixelEvent);
13
+ const sub = { config, unit, pixelRatio, spacePerPixel };
14
+ if (config.orientation === ScalebarOrientation.Vertical) {
15
+ return _jsx(VerticalScalebar, Object.assign({}, sub));
16
+ }
17
+ return _jsx(HorizontalScalebar, Object.assign({}, sub));
18
+ }
19
+ function VerticalScalebar({ config, unit, pixelRatio, spacePerPixel }) {
20
+ const resolved = React.useMemo(() => resolveVerticalScalebar(config), [config]);
8
21
  const ref = React.useRef(null);
9
- React.useEffect(() => {
22
+ const [hovered, setHovered] = React.useState(false);
23
+ const effectiveHover = resolved.needsHover && hovered;
24
+ const repaint = React.useCallback(() => {
10
25
  const canvas = ref.current;
11
26
  if (!canvas)
12
27
  return;
13
- paint(canvas, spacePerPixel, unit);
14
- }, [spacePerPixel, unit]);
28
+ paint(canvas, spacePerPixel, unit, ScalebarOrientation.Vertical, resolved.paintParams(effectiveHover), pixelRatio);
29
+ }, [spacePerPixel, unit, resolved, effectiveHover, pixelRatio]);
30
+ useCanvasRepaint(ref, repaint, pixelRatio);
31
+ const enter = resolved.needsHover ? () => setHovered(true) : undefined;
32
+ const leave = resolved.needsHover ? () => setHovered(false) : undefined;
33
+ const canvasStyle = {
34
+ color: resolved.color,
35
+ fontSize: resolved.fontSize,
36
+ width: "100%",
37
+ height: "100%",
38
+ };
39
+ if (resolved.className) {
40
+ return (_jsx("canvas", { ref: ref, onMouseEnter: enter, onMouseLeave: leave, className: classNames(resolved.className, styles.morphoViewerScalebar), style: canvasStyle }));
41
+ }
42
+ let width = resolved.expandedWidth;
43
+ if (resolved.widthAnimates) {
44
+ width = effectiveHover ? resolved.expandedWidth : resolved.collapsedWidth;
45
+ }
46
+ return (_jsx("div", { className: styles.verticalContainer, style: Object.assign(Object.assign({}, resolved.containerStyle), { width, pointerEvents: resolved.needsHover ? "auto" : "none" }), onMouseEnter: enter, onMouseLeave: leave, children: _jsx("canvas", { ref: ref, className: styles.morphoViewerScalebar, style: canvasStyle }) }));
47
+ }
48
+ function HorizontalScalebar({ config, unit, pixelRatio, spacePerPixel }) {
49
+ var _a;
50
+ const resolved = React.useMemo(() => resolveHorizontalScalebar(config), [config]);
51
+ const ref = React.useRef(null);
52
+ const repaint = React.useCallback(() => {
53
+ const canvas = ref.current;
54
+ if (!canvas)
55
+ return;
56
+ paint(canvas, spacePerPixel, unit, ScalebarOrientation.Horizontal, undefined, pixelRatio);
57
+ }, [spacePerPixel, unit, pixelRatio]);
58
+ useCanvasRepaint(ref, repaint, pixelRatio);
59
+ const className = (_a = resolved.className) !== null && _a !== void 0 ? _a : (resolved.style ? undefined : styles.defaultLayout);
60
+ return (_jsx("canvas", { ref: ref, className: classNames(className, styles.morphoViewerScalebar), style: resolved.style }));
61
+ }
62
+ function useCanvasRepaint(ref, repaint, pixelRatio) {
63
+ React.useEffect(() => {
64
+ repaint();
65
+ }, [repaint]);
15
66
  React.useEffect(() => {
16
67
  const canvas = ref.current;
17
68
  if (!canvas)
18
69
  return;
70
+ const dpr = pixelRatio > 0 ? pixelRatio : 1;
19
71
  const observer = new ResizeObserver(() => {
20
- canvas.width = canvas.clientWidth;
21
- canvas.height = canvas.clientHeight;
22
- paint(canvas, spacePerPixel, unit);
72
+ canvas.width = Math.max(1, Math.round(canvas.clientWidth * dpr));
73
+ canvas.height = Math.max(1, Math.round(canvas.clientHeight * dpr));
74
+ repaint();
23
75
  });
24
76
  observer.observe(canvas);
25
77
  return () => observer.unobserve(canvas);
26
- }, [spacePerPixel, unit]);
27
- return (_jsx("canvas", { ref: ref, className: classNames(typeof className === "string" ? className : styles.defaultLayout, styles.morphoViewerScalebar) }));
78
+ }, [ref, repaint, pixelRatio]);
28
79
  }
29
80
  function useSpacePerPixel(spacePerPixelEvent) {
30
81
  const [spacePerPixel, setSpacePerPixel] = React.useState(-1);
@@ -34,4 +85,4 @@ function useSpacePerPixel(spacePerPixelEvent) {
34
85
  }, [spacePerPixelEvent]);
35
86
  return spacePerPixel;
36
87
  }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ycGhvLXZpZXdlci1zY2FsZWJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc2NhbGViYXIvbW9ycGhvLXZpZXdlci1zY2FsZWJhci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXJDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFJbEMsT0FBTyxNQUFNLE1BQU0scUNBQXFDLENBQUM7QUFXekQsTUFBTSxDQUFDLE9BQU8sVUFBVSxvQkFBb0IsQ0FBQyxFQUMzQyxTQUFTLEVBQ1Qsa0JBQWtCLEVBQ2xCLElBQUksR0FBRyxJQUFJLEdBQ2U7SUFDMUIsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUMzRCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUEyQixJQUFJLENBQUMsQ0FBQztJQUN6RCxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNuQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUVwQixLQUFLLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxQixLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNuQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUVwQixNQUFNLFFBQVEsR0FBRyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUU7WUFDdkMsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztZQUNwQyxLQUFLLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztRQUNILFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekIsT0FBTyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRTFCLE9BQU8sQ0FDTCxpQkFDRSxHQUFHLEVBQUUsR0FBRyxFQUNSLFNBQVMsRUFBRSxVQUFVLENBQ25CLE9BQU8sU0FBUyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUNoRSxNQUFNLENBQUMsb0JBQW9CLENBQzVCLEdBQ08sQ0FDWCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsa0JBQW9DO0lBQzVELE1BQU0sQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDbkIsa0JBQWtCLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDakQsT0FBTyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNuRSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFDekIsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQyJ9
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ycGhvLXZpZXdlci1zY2FsZWJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc2NhbGViYXIvbW9ycGhvLXZpZXdlci1zY2FsZWJhci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXJDLE9BQU8sRUFBOEMsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDM0YsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6QixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLHVCQUF1QixHQUN4QixNQUFNLFdBQVcsQ0FBQztBQUluQixPQUFPLE1BQU0sTUFBTSxxQ0FBcUMsQ0FBQztBQVd6RCxNQUFNLENBQUMsT0FBTyxVQUFVLG9CQUFvQixDQUFDLEVBQzNDLFNBQVMsRUFDVCxrQkFBa0IsRUFDbEIsSUFBSSxFQUFFLFFBQVEsR0FDWTtJQUMxQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNwRixNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDakQsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUUzRCxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxDQUFDO0lBQ3hELElBQUksTUFBTSxD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
@@ -1,13 +1,23 @@
1
1
  .morphoViewerScalebar {
2
- background: transparent;
3
- z-index: 1;
2
+ background: transparent;
3
+ z-index: 1;
4
4
  }
5
5
 
6
6
  .defaultLayout {
7
- position: absolute;
8
- left: 8px;
9
- bottom: 8px;
10
- width: calc(100% - 16px - 128px);
11
- height: 1.4em;
12
- pointer-events: none;
13
- }
7
+ position: absolute;
8
+ left: 8px;
9
+ bottom: 8px;
10
+ width: calc(100% - 16px - 128px);
11
+ height: 1.4em;
12
+ pointer-events: none;
13
+ }
14
+
15
+ /* vertical ruler container. Position/size come from the resolved inline style;
16
+ * this class only carries stacking + the width transition used when the ruler
17
+ * expands on hover. */
18
+ .verticalContainer {
19
+ z-index: 3;
20
+ line-height: 1;
21
+ box-sizing: border-box;
22
+ transition: width 0.12s ease;
23
+ }
@@ -1,2 +1,3 @@
1
- export declare function paint(canvas: HTMLCanvasElement, spacePerPixel: number, unitFactor?: number): void;
1
+ import type { VerticalPaintParams } from "./resolve";
2
+ export declare function paint(canvas: HTMLCanvasElement, spacePerPixel: number, unitFactor?: number, orientation?: "horizontal" | "vertical", vertical?: VerticalPaintParams, pixelRatio?: number): void;
2
3
  //# sourceMappingURL=painter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"painter.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-scalebar/painter.ts"],"names":[],"mappings":"AAGA,wBAAgB,KAAK,CAAC,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,SAAO,QAkCxF"}
1
+ {"version":3,"file":"painter.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-scalebar/painter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AA+BrD,wBAAgB,KAAK,CACnB,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,MAAM,EACrB,UAAU,SAAO,EACjB,WAAW,GAAE,YAAY,GAAG,UAAyB,EACrD,QAAQ,CAAC,EAAE,mBAAmB,EAC9B,UAAU,SAAI,QAuBf"}
@@ -1,17 +1,40 @@
1
1
  const UNITS = ["m", "mm", "μm", "nm", "pm", "fm"];
2
2
  const VALUES = [1, 2, 5, 10, 20, 25, 50, 100, 200, 250, 300, 400, 500, 600, 700, 800, 900];
3
- export function paint(canvas, spacePerPixel, unitFactor = 1e-6) {
3
+ const LABEL_GAP = 4;
4
+ const HORIZONTAL_THICKNESS = 2;
5
+ function createSnapper(thickness, dpr) {
6
+ const widthDevice = Math.max(1, Math.round(thickness * dpr));
7
+ const halfOffset = widthDevice % 2 ? 0.5 : 0;
8
+ return {
9
+ lineWidth: widthDevice / dpr,
10
+ snap: (posCss) => (Math.round(posCss * dpr - halfOffset) + halfOffset) / dpr,
11
+ snapPoint: (posCss) => Math.round(posCss * dpr) / dpr,
12
+ };
13
+ }
14
+ export function paint(canvas, spacePerPixel, unitFactor = 1e-6, orientation = "horizontal", vertical, pixelRatio = 1) {
4
15
  const ctx = canvas.getContext("2d");
5
16
  if (!ctx)
6
17
  return;
7
- const w = canvas.width;
8
- const h = canvas.height;
9
- ctx.lineWidth = 2;
18
+ const dpr = pixelRatio > 0 ? pixelRatio : 1;
19
+ const w = canvas.width / dpr;
20
+ const h = canvas.height / dpr;
21
+ ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
10
22
  ctx.clearRect(0, 0, w, h);
11
23
  const css = globalThis.getComputedStyle(canvas);
12
24
  ctx.fillStyle = css.color;
13
25
  ctx.strokeStyle = css.color;
14
26
  ctx.font = `${css.fontSize} ${css.fontFamily}`;
27
+ if (orientation === "vertical" && vertical) {
28
+ ctx.fillStyle = vertical.color;
29
+ ctx.strokeStyle = vertical.color;
30
+ paintVertical(ctx, w, h, spacePerPixel, unitFactor, vertical, dpr);
31
+ return;
32
+ }
33
+ paintHorizontal(ctx, w, h, spacePerPixel, unitFactor, dpr);
34
+ }
35
+ function paintHorizontal(ctx, w, h, spacePerPixel, unitFactor, dpr) {
36
+ const { snap, snapPoint, lineWidth } = createSnapper(HORIZONTAL_THICKNESS, dpr);
37
+ ctx.lineWidth = lineWidth;
15
38
  const minStepWidth = 3 * ctx.measureText("999 mm").width;
16
39
  const { unitText, width, value } = computeBestFit(w, spacePerPixel, unitFactor, minStepWidth);
17
40
  let step = 0;
@@ -20,12 +43,12 @@ export function paint(canvas, spacePerPixel, unitFactor = 1e-6) {
20
43
  step++;
21
44
  const text = `${value * step} ${unitText} `;
22
45
  const measure = ctx.measureText(text);
23
- const y = Math.round(measure.actualBoundingBoxAscent + measure.actualBoundingBoxDescent) + .5;
24
- const x = Math.round(stepX1 - (width + measure.width) / 2) + .5;
46
+ const y = snapPoint(measure.actualBoundingBoxAscent + measure.actualBoundingBoxDescent);
47
+ const x = snapPoint(stepX1 - (width + measure.width) / 2);
25
48
  ctx.fillText(text, x, y);
26
- const x0 = Math.round(stepX0) + .5;
27
- const x1 = Math.round(stepX1) + .5;
28
- const yy = h - measure.actualBoundingBoxAscent;
49
+ const x0 = snap(stepX0);
50
+ const x1 = snap(stepX1);
51
+ const yy = snap(h - measure.actualBoundingBoxAscent);
29
52
  ctx.beginPath();
30
53
  ctx.moveTo(x0, yy);
31
54
  ctx.lineTo(x0, h);
@@ -36,6 +59,86 @@ export function paint(canvas, spacePerPixel, unitFactor = 1e-6) {
36
59
  break;
37
60
  }
38
61
  }
62
+ function buildMajorPositions(bottomY, topY, majorStep, snap) {
63
+ const span = bottomY - topY;
64
+ const majorCount = Math.max(1, Math.round(span / majorStep));
65
+ const majors = [];
66
+ for (let m = 0; m <= majorCount; m++) {
67
+ majors.push(snap(bottomY - (m / majorCount) * span));
68
+ }
69
+ return majors;
70
+ }
71
+ function paintVertical(ctx, w, h, spacePerPixel, unitFactor, params, dpr) {
72
+ const { anchor, outerReserve, majorLength, minorLength, minorPerMajor } = params;
73
+ const { snap, lineWidth } = createSnapper(params.thickness, dpr);
74
+ ctx.lineWidth = lineWidth;
75
+ const sample = ctx.measureText("999 mm");
76
+ const textHeight = sample.actualBoundingBoxAscent + sample.actualBoundingBoxDescent;
77
+ const minStepHeight = 3 * textHeight;
78
+ const xBase = snap(anchor === "left" ? outerReserve : Math.round(w) - outerReserve);
79
+ const labelPad = params.labels
80
+ ? Math.ceil((sample.actualBoundingBoxAscent + sample.actualBoundingBoxDescent) / 2) + 1
81
+ : 0;
82
+ const topY = snap(labelPad);
83
+ const bottomY = snap(h - labelPad);
84
+ const rulerHeight = bottomY - topY;
85
+ if (rulerHeight <= 0)
86
+ return;
87
+ const { unitText: fitUnitText, width: fitMajorStep, value: fitValue, } = computeBestFit(rulerHeight, spacePerPixel, unitFactor, minStepHeight);
88
+ if (!Number.isFinite(fitMajorStep) || fitMajorStep <= 0)
89
+ return;
90
+ const majors = buildMajorPositions(bottomY, topY, fitMajorStep, snap);
91
+ ctx.beginPath();
92
+ ctx.moveTo(xBase, topY);
93
+ ctx.lineTo(xBase, bottomY);
94
+ ctx.stroke();
95
+ for (let m = 0; m < majors.length - 1; m++) {
96
+ const lower = majors[m];
97
+ const upper = majors[m + 1];
98
+ const segmentStep = (lower - upper) / minorPerMajor;
99
+ for (let k = 1; k < minorPerMajor; k++) {
100
+ drawPin(ctx, xBase, snap(lower - k * segmentStep), minorLength, params);
101
+ }
102
+ }
103
+ for (let m = 0; m < majors.length; m++) {
104
+ const yy = majors[m];
105
+ drawPin(ctx, xBase, yy, majorLength, params);
106
+ if (params.labels) {
107
+ drawLabel(ctx, params, xBase, majorLength, yy, `${m * fitValue} ${fitUnitText}`);
108
+ }
109
+ }
110
+ ctx.textAlign = "start";
111
+ ctx.textBaseline = "alphabetic";
112
+ }
113
+ function drawPin(ctx, xBase, yy, len, params) {
114
+ if (params.leftPins) {
115
+ ctx.beginPath();
116
+ ctx.moveTo(xBase, yy);
117
+ ctx.lineTo(xBase - len, yy);
118
+ ctx.stroke();
119
+ }
120
+ if (params.rightPins) {
121
+ ctx.beginPath();
122
+ ctx.moveTo(xBase, yy);
123
+ ctx.lineTo(xBase + len, yy);
124
+ ctx.stroke();
125
+ }
126
+ }
127
+ function drawLabel(ctx, params, xBase, majorLength, yy, text) {
128
+ ctx.textBaseline = "middle";
129
+ const pinOnRight = params.rightPins;
130
+ const pinOnLeft = params.leftPins;
131
+ if (params.labelSide === "right") {
132
+ ctx.textAlign = "left";
133
+ const x = pinOnRight ? xBase + majorLength + LABEL_GAP : xBase + LABEL_GAP;
134
+ ctx.fillText(text, x, yy);
135
+ }
136
+ else {
137
+ ctx.textAlign = "right";
138
+ const x = pinOnLeft ? xBase - majorLength - LABEL_GAP : xBase - LABEL_GAP;
139
+ ctx.fillText(text, x, yy);
140
+ }
141
+ }
39
142
  function computeBestFit(scalebarSize, spacePerPixel, unitFactor, minStepWidth) {
40
143
  const steps = Math.max(1, Math.floor(scalebarSize / minStepWidth));
41
144
  const stepSize = scalebarSize / steps;
@@ -58,4 +161,4 @@ function computeBestFit(scalebarSize, spacePerPixel, unitFactor, minStepWidth) {
58
161
  const width = bestValue / (spacePerPixel * factor);
59
162
  return { unitText, width, value: bestValue };
60
163
  }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpbnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc2NhbGViYXIvcGFpbnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7QUFDakQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFFMUYsTUFBTSxVQUFVLEtBQUssQ0FBQyxNQUF5QixFQUFFLGFBQXFCLEVBQUUsVUFBVSxHQUFHLElBQUk7SUFDckYsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNuQyxJQUFJLENBQUMsR0FBRztRQUFFLE9BQU07SUFFaEIsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQTtJQUN0QixNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFBO0lBQ3ZCLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFBO0lBQ2pCLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDekIsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQy9DLEdBQUcsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQTtJQUN6QixHQUFHLENBQUMsV0FBVyxH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
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpbnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc2NhbGViYXIvcGFpbnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFFM0YsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBRXBCLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBYy9CLFNBQVMsYUFBYSxDQUFDLFNBQWlCLEVBQUUsR0FBVztJQUNuRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdELE1BQU0sVUFBVSxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLE9BQU87UUFDTCxTQUFTLEVBQUUsV0FBVyxHQUFHLEdBQUc7UUFDNUIsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxHQUFHO1FBQzVFLFNBQVMsRUFBRSxDQUFD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
@@ -0,0 +1,36 @@
1
+ import { type ScalebarConfig, type TScalebarSide } from "../types";
2
+ import type React from "react";
3
+ export interface VerticalPaintParams {
4
+ anchor: TScalebarSide;
5
+ outerReserve: number;
6
+ majorLength: number;
7
+ minorLength: number;
8
+ minorPerMajor: number;
9
+ leftPins: boolean;
10
+ rightPins: boolean;
11
+ labels: boolean;
12
+ labelSide: TScalebarSide;
13
+ color: string;
14
+ thickness: number;
15
+ }
16
+ export interface ResolvedVerticalScalebar {
17
+ className?: string;
18
+ containerStyle: React.CSSProperties;
19
+ collapsedWidth: number;
20
+ expandedWidth: number;
21
+ widthAnimates: boolean;
22
+ needsHover: boolean;
23
+ color: string;
24
+ fontSize: number;
25
+ paintParams(hovered: boolean): VerticalPaintParams;
26
+ }
27
+ export declare function normalizeScalebarConfig(value: boolean | string | ScalebarConfig | undefined): ScalebarConfig;
28
+ export declare function resolveUnitFactor(config: ScalebarConfig, unitProp?: unknown): number;
29
+ export declare function resolvePixelRatio(config: ScalebarConfig): number;
30
+ export declare function resolveVerticalScalebar(config: ScalebarConfig): ResolvedVerticalScalebar;
31
+ export interface ResolvedHorizontalScalebar {
32
+ className?: string;
33
+ style?: React.CSSProperties;
34
+ }
35
+ export declare function resolveHorizontalScalebar(config: ScalebarConfig): ResolvedHorizontalScalebar;
36
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-scalebar/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,aAAa,EAEnB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,WAAW,mBAAmB;IAElC,MAAM,EAAE,aAAa,CAAC;IAEtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IAEtB,QAAQ,EAAE,OAAO,CAAC;IAElB,SAAS,EAAE,OAAO,CAAC;IAEnB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IAEvC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IAEtB,aAAa,EAAE,OAAO,CAAC;IAEvB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IAEjB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,mBAAmB,CAAC;CACpD;AAgBD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,cAAc,GAAG,SAAS,GACnD,cAAc,CAIhB;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAEpF;AAGD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAGhE;AAuBD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,wBAAwB,CAuFxF;AAYD,MAAM,WAAW,0BAA0B;IAEzC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAOD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,cAAc,GAAG,0BAA0B,CAgB5F"}
@@ -0,0 +1,129 @@
1
+ import { ScalebarSide, ScalebarWhen, } from "../types";
2
+ const DEFAULT_MAJOR_LENGTH = 10;
3
+ const DEFAULT_MINOR_LENGTH = 5;
4
+ const DEFAULT_MINOR_PER_MAJOR = 5;
5
+ const DEFAULT_COLOR = "#9ca3af";
6
+ const DEFAULT_THICKNESS = 1;
7
+ const DEFAULT_MARGIN_X = 2;
8
+ const DEFAULT_MARGIN_Y = 12;
9
+ const DEFAULT_HEIGHT = "min(180px, 42%)";
10
+ const FONT_SIZE = 10;
11
+ const LABEL_GAP = 4;
12
+ const LABEL_RESERVE = 40;
13
+ export function normalizeScalebarConfig(value) {
14
+ if (!value || value === true)
15
+ return {};
16
+ if (typeof value === "string")
17
+ return { className: value };
18
+ return value;
19
+ }
20
+ export function resolveUnitFactor(config, unitProp) {
21
+ var _a, _b;
22
+ return (_b = (_a = config.unit) !== null && _a !== void 0 ? _a : (typeof unitProp === "number" ? unitProp : undefined)) !== null && _b !== void 0 ? _b : 1e-6;
23
+ }
24
+ export function resolvePixelRatio(config) {
25
+ if (!config.hiDPI)
26
+ return 1;
27
+ return Math.max(1, globalThis.devicePixelRatio || 1);
28
+ }
29
+ function visible(when, hovered) {
30
+ if (when === ScalebarWhen.Always)
31
+ return true;
32
+ if (when === ScalebarWhen.Never)
33
+ return false;
34
+ return hovered;
35
+ }
36
+ function marginXY(config) {
37
+ var _a, _b;
38
+ const m = config.margin;
39
+ if (typeof m === "number")
40
+ return { x: m, y: m };
41
+ return { x: (_a = m === null || m === void 0 ? void 0 : m.x) !== null && _a !== void 0 ? _a : DEFAULT_MARGIN_X, y: (_b = m === null || m === void 0 ? void 0 : m.y) !== null && _b !== void 0 ? _b : DEFAULT_MARGIN_Y };
42
+ }
43
+ function sideExtent(pinsShown, labelsShown, majorLength) {
44
+ const pinExtent = pinsShown ? majorLength : 0;
45
+ if (!labelsShown)
46
+ return pinExtent;
47
+ const labelStart = (pinsShown ? majorLength : 0) + LABEL_GAP;
48
+ return Math.max(pinExtent, labelStart + LABEL_RESERVE);
49
+ }
50
+ export function resolveVerticalScalebar(config) {
51
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
52
+ const placement = (_a = config.placement) !== null && _a !== void 0 ? _a : "bottom-left";
53
+ const anchor = placement.includes("right")
54
+ ? ScalebarSide.Right
55
+ : ScalebarSide.Left;
56
+ const innerSide = anchor === ScalebarSide.Left ? ScalebarSide.Right : ScalebarSide.Left;
57
+ const reveal = config.reveal;
58
+ const pinsLeftWhen = (_c = (_b = config.pins) === null || _b === void 0 ? void 0 : _b.left) !== null && _c !== void 0 ? _c : ScalebarWhen.Always;
59
+ const pinsRightWhen = (_f = (_e = (_d = config.pins) === null || _d === void 0 ? void 0 : _d.right) !== null && _e !== void 0 ? _e : reveal) !== null && _f !== void 0 ? _f : ScalebarWhen.Hover;
60
+ const labelsWhen = (_j = (_h = (_g = config.labels) === null || _g === void 0 ? void 0 : _g.show) !== null && _h !== void 0 ? _h : reveal) !== null && _j !== void 0 ? _j : ScalebarWhen.Hover;
61
+ const labelSide = (_l = (_k = config.labels) === null || _k === void 0 ? void 0 : _k.side) !== null && _l !== void 0 ? _l : innerSide;
62
+ const majorLength = (_o = (_m = config.pins) === null || _m === void 0 ? void 0 : _m.majorLength) !== null && _o !== void 0 ? _o : DEFAULT_MAJOR_LENGTH;
63
+ const minorLength = (_q = (_p = config.pins) === null || _p === void 0 ? void 0 : _p.minorLength) !== null && _q !== void 0 ? _q : DEFAULT_MINOR_LENGTH;
64
+ const minorPerMajor = (_s = (_r = config.pins) === null || _r === void 0 ? void 0 : _r.minorPerMajor) !== null && _s !== void 0 ? _s : DEFAULT_MINOR_PER_MAJOR;
65
+ const color = (_t = config.color) !== null && _t !== void 0 ? _t : DEFAULT_COLOR;
66
+ const thickness = (_u = config.thickness) !== null && _u !== void 0 ? _u : DEFAULT_THICKNESS;
67
+ const whenForSide = (side) => side === ScalebarSide.Left ? pinsLeftWhen : pinsRightWhen;
68
+ const outerWhen = whenForSide(anchor);
69
+ const innerWhen = whenForSide(innerSide);
70
+ const labelsOnOuter = labelSide === anchor;
71
+ const labelsOnInner = labelSide === innerSide;
72
+ const outerReserve = Math.max(majorLength, sideExtent(outerWhen !== ScalebarWhen.Never, labelsOnOuter, majorLength));
73
+ const innerExtent = (hovered) => sideExtent(visible(innerWhen, hovered), labelsOnInner && visible(labelsWhen, hovered), majorLength);
74
+ const needsHover = pinsLeftWhen === ScalebarWhen.Hover ||
75
+ pinsRightWhen === ScalebarWhen.Hover ||
76
+ labelsWhen === ScalebarWhen.Hover;
77
+ const width = (hovered) => outerReserve + innerExtent(needsHover ? hovered : true) + 1;
78
+ const collapsedWidth = Math.ceil(width(false));
79
+ const expandedWidth = Math.ceil(width(true));
80
+ const { x: mx, y: my } = marginXY(config);
81
+ const containerStyle = config.className
82
+ ? {}
83
+ : Object.assign(Object.assign(Object.assign({ position: "absolute", height: DEFAULT_HEIGHT }, (anchor === ScalebarSide.Left ? { left: mx } : { right: mx })), verticalEdgeStyle(placement, my)), config.style);
84
+ return {
85
+ className: config.className,
86
+ containerStyle,
87
+ collapsedWidth,
88
+ expandedWidth,
89
+ widthAnimates: collapsedWidth !== expandedWidth,
90
+ needsHover,
91
+ color,
92
+ fontSize: FONT_SIZE,
93
+ paintParams(hovered) {
94
+ return {
95
+ anchor,
96
+ outerReserve,
97
+ majorLength,
98
+ minorLength,
99
+ minorPerMajor,
100
+ leftPins: visible(pinsLeftWhen, hovered),
101
+ rightPins: visible(pinsRightWhen, hovered),
102
+ labels: visible(labelsWhen, hovered),
103
+ labelSide,
104
+ color,
105
+ thickness,
106
+ };
107
+ },
108
+ };
109
+ }
110
+ function verticalEdgeStyle(placement, my) {
111
+ if (placement.startsWith("top"))
112
+ return { top: my };
113
+ if (placement.startsWith("bottom"))
114
+ return { bottom: my };
115
+ return { top: "50%", transform: "translateY(-50%)" };
116
+ }
117
+ const HORIZONTAL_FAR_RESERVE = 128;
118
+ export function resolveHorizontalScalebar(config) {
119
+ var _a;
120
+ if (config.className)
121
+ return { className: config.className };
122
+ if (!config.placement && !config.style && config.margin === undefined)
123
+ return {};
124
+ const { x: mx, y: my } = marginXY(config);
125
+ const placement = (_a = config.placement) !== null && _a !== void 0 ? _a : "bottom";
126
+ const style = Object.assign(Object.assign({ position: "absolute", height: "1.4em", left: mx, right: mx + HORIZONTAL_FAR_RESERVE, pointerEvents: "none" }, (placement.startsWith("top") ? { top: my } : { bottom: my })), config.style);
127
+ return { style };
128
+ }
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc2NhbGViYXIvcmVzb2x2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsWUFBWSxFQUNaLFlBQVksR0FHYixNQUFNLFVBQVUsQ0FBQztBQXlDbEIsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFDaEMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQUM7QUFDL0IsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLENBQUM7QUFDbEMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ2hDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0FBQzVCLE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDO0FBQ3pDLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNyQixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFFcEIsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBR3pCLE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsS0FBb0Q7SUFFcEQsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssSUFBSTtRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3hDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDM0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLE1BQXNCLEVBQUUsUUFBa0I7O0lBQzFFLE9BQU8sTUFBQSxNQUFBLE1BQU0sQ0FBQyxJQUFJLG1DQUFJLENBQUMsT0FBTyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMs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
@@ -1 +1 @@
1
- {"version":3,"file":"morpho-viewer-simul.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-simul/morpho-viewer-simul.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAqB1B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAK7D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,qBAkD9D"}
1
+ {"version":3,"file":"morpho-viewer-simul.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-simul/morpho-viewer-simul.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAsB1B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAK7D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,qBAkD9D"}