@vitessce/heatmap 3.8.10 → 3.8.13

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.
@@ -1,5 +1,5 @@
1
1
  import { i as inflate_1 } from "./pako.esm-SxljTded.js";
2
- import { B as BaseDecoder } from "./index-CIYB_Yf2.js";
2
+ import { B as BaseDecoder } from "./index-BB2ssozJ.js";
3
3
  class DeflateDecoder extends BaseDecoder {
4
4
  decodeBlock(buffer) {
5
5
  return inflate_1(new Uint8Array(buffer)).buffer;
@@ -788,6 +788,34 @@ class Pool {
788
788
  }
789
789
  }
790
790
  }
791
+ function extent$1(values2, valueof) {
792
+ let min;
793
+ let max2;
794
+ {
795
+ for (const value of values2) {
796
+ if (value != null) {
797
+ if (min === void 0) {
798
+ if (value >= value) min = max2 = value;
799
+ } else {
800
+ if (min > value) min = value;
801
+ if (max2 < value) max2 = value;
802
+ }
803
+ }
804
+ }
805
+ }
806
+ return [min, max2];
807
+ }
808
+ function max(values2, valueof) {
809
+ let max2;
810
+ {
811
+ for (const value of values2) {
812
+ if (value != null && (max2 < value || max2 === void 0 && value >= value)) {
813
+ max2 = value;
814
+ }
815
+ }
816
+ }
817
+ return max2;
818
+ }
791
819
  let getRandomValues$1;
792
820
  const rnds8$1 = new Uint8Array(16);
793
821
  function rng$1() {
@@ -9787,6 +9815,8 @@ const CoordinationType$1 = {
9787
9815
  // Per-spatial-layer
9788
9816
  SPATIAL_MAX_RESOLUTION: "spatialMaxResolution",
9789
9817
  // Per-image-channel (for spatial-accelerated)
9818
+ SPATIAL_LOD_FACTOR: "spatialLodFactor",
9819
+ // LOD factor for 3D volume rendering
9790
9820
  // For clipping plane sliders
9791
9821
  SPATIAL_SLICE_X: "spatialSliceX",
9792
9822
  SPATIAL_SLICE_Y: "spatialSliceY",
@@ -25090,11 +25120,6 @@ const { tss } = createTss({
25090
25120
  "usePlugin": useMuiThemeStyleOverridesPlugin
25091
25121
  });
25092
25122
  const useStyles$3 = tss.create({});
25093
- function chainPropTypes(propType1, propType2) {
25094
- return function validate2(...args) {
25095
- return propType1(...args) || propType2(...args);
25096
- };
25097
- }
25098
25123
  const memoTheme = unstable_memoTheme;
25099
25124
  ({
25100
25125
  // ┌────────────────────────────── Warning ──────────────────────────────┐
@@ -25113,332 +25138,6 @@ const memoTheme = unstable_memoTheme;
25113
25138
  function useDefaultProps(params) {
25114
25139
  return useDefaultProps$1(params);
25115
25140
  }
25116
- function _extends$1() {
25117
- return _extends$1 = Object.assign ? Object.assign.bind() : function(n2) {
25118
- for (var e3 = 1; e3 < arguments.length; e3++) {
25119
- var t = arguments[e3];
25120
- for (var r2 in t) ({}).hasOwnProperty.call(t, r2) && (n2[r2] = t[r2]);
25121
- }
25122
- return n2;
25123
- }, _extends$1.apply(null, arguments);
25124
- }
25125
- function _objectWithoutPropertiesLoose(r2, e3) {
25126
- if (null == r2) return {};
25127
- var t = {};
25128
- for (var n2 in r2) if ({}.hasOwnProperty.call(r2, n2)) {
25129
- if (-1 !== e3.indexOf(n2)) continue;
25130
- t[n2] = r2[n2];
25131
- }
25132
- return t;
25133
- }
25134
- function _setPrototypeOf(t, e3) {
25135
- return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e4) {
25136
- return t2.__proto__ = e4, t2;
25137
- }, _setPrototypeOf(t, e3);
25138
- }
25139
- function _inheritsLoose(t, o2) {
25140
- t.prototype = Object.create(o2.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o2);
25141
- }
25142
- const TransitionGroupContext = React__default.createContext(null);
25143
- function _assertThisInitialized(e3) {
25144
- if (void 0 === e3) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
25145
- return e3;
25146
- }
25147
- function getChildMapping(children2, mapFn) {
25148
- var mapper = function mapper2(child) {
25149
- return mapFn && isValidElement(child) ? mapFn(child) : child;
25150
- };
25151
- var result = /* @__PURE__ */ Object.create(null);
25152
- if (children2) Children.map(children2, function(c) {
25153
- return c;
25154
- }).forEach(function(child) {
25155
- result[child.key] = mapper(child);
25156
- });
25157
- return result;
25158
- }
25159
- function mergeChildMappings(prev2, next2) {
25160
- prev2 = prev2 || {};
25161
- next2 = next2 || {};
25162
- function getValueForKey(key) {
25163
- return key in next2 ? next2[key] : prev2[key];
25164
- }
25165
- var nextKeysPending = /* @__PURE__ */ Object.create(null);
25166
- var pendingKeys = [];
25167
- for (var prevKey in prev2) {
25168
- if (prevKey in next2) {
25169
- if (pendingKeys.length) {
25170
- nextKeysPending[prevKey] = pendingKeys;
25171
- pendingKeys = [];
25172
- }
25173
- } else {
25174
- pendingKeys.push(prevKey);
25175
- }
25176
- }
25177
- var i2;
25178
- var childMapping = {};
25179
- for (var nextKey in next2) {
25180
- if (nextKeysPending[nextKey]) {
25181
- for (i2 = 0; i2 < nextKeysPending[nextKey].length; i2++) {
25182
- var pendingNextKey = nextKeysPending[nextKey][i2];
25183
- childMapping[nextKeysPending[nextKey][i2]] = getValueForKey(pendingNextKey);
25184
- }
25185
- }
25186
- childMapping[nextKey] = getValueForKey(nextKey);
25187
- }
25188
- for (i2 = 0; i2 < pendingKeys.length; i2++) {
25189
- childMapping[pendingKeys[i2]] = getValueForKey(pendingKeys[i2]);
25190
- }
25191
- return childMapping;
25192
- }
25193
- function getProp(child, prop, props) {
25194
- return props[prop] != null ? props[prop] : child.props[prop];
25195
- }
25196
- function getInitialChildMapping(props, onExited) {
25197
- return getChildMapping(props.children, function(child) {
25198
- return cloneElement(child, {
25199
- onExited: onExited.bind(null, child),
25200
- in: true,
25201
- appear: getProp(child, "appear", props),
25202
- enter: getProp(child, "enter", props),
25203
- exit: getProp(child, "exit", props)
25204
- });
25205
- });
25206
- }
25207
- function getNextChildMapping(nextProps, prevChildMapping, onExited) {
25208
- var nextChildMapping = getChildMapping(nextProps.children);
25209
- var children2 = mergeChildMappings(prevChildMapping, nextChildMapping);
25210
- Object.keys(children2).forEach(function(key) {
25211
- var child = children2[key];
25212
- if (!isValidElement(child)) return;
25213
- var hasPrev = key in prevChildMapping;
25214
- var hasNext = key in nextChildMapping;
25215
- var prevChild = prevChildMapping[key];
25216
- var isLeaving = isValidElement(prevChild) && !prevChild.props.in;
25217
- if (hasNext && (!hasPrev || isLeaving)) {
25218
- children2[key] = cloneElement(child, {
25219
- onExited: onExited.bind(null, child),
25220
- in: true,
25221
- exit: getProp(child, "exit", nextProps),
25222
- enter: getProp(child, "enter", nextProps)
25223
- });
25224
- } else if (!hasNext && hasPrev && !isLeaving) {
25225
- children2[key] = cloneElement(child, {
25226
- in: false
25227
- });
25228
- } else if (hasNext && hasPrev && isValidElement(prevChild)) {
25229
- children2[key] = cloneElement(child, {
25230
- onExited: onExited.bind(null, child),
25231
- in: prevChild.props.in,
25232
- exit: getProp(child, "exit", nextProps),
25233
- enter: getProp(child, "enter", nextProps)
25234
- });
25235
- }
25236
- });
25237
- return children2;
25238
- }
25239
- var values = Object.values || function(obj) {
25240
- return Object.keys(obj).map(function(k) {
25241
- return obj[k];
25242
- });
25243
- };
25244
- var defaultProps$P = {
25245
- component: "div",
25246
- childFactory: function childFactory(child) {
25247
- return child;
25248
- }
25249
- };
25250
- var TransitionGroup = /* @__PURE__ */ function(_React$Component) {
25251
- _inheritsLoose(TransitionGroup2, _React$Component);
25252
- function TransitionGroup2(props, context) {
25253
- var _this;
25254
- _this = _React$Component.call(this, props, context) || this;
25255
- var handleExited = _this.handleExited.bind(_assertThisInitialized(_this));
25256
- _this.state = {
25257
- contextValue: {
25258
- isMounting: true
25259
- },
25260
- handleExited,
25261
- firstRender: true
25262
- };
25263
- return _this;
25264
- }
25265
- var _proto = TransitionGroup2.prototype;
25266
- _proto.componentDidMount = function componentDidMount() {
25267
- this.mounted = true;
25268
- this.setState({
25269
- contextValue: {
25270
- isMounting: false
25271
- }
25272
- });
25273
- };
25274
- _proto.componentWillUnmount = function componentWillUnmount() {
25275
- this.mounted = false;
25276
- };
25277
- TransitionGroup2.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {
25278
- var prevChildMapping = _ref.children, handleExited = _ref.handleExited, firstRender = _ref.firstRender;
25279
- return {
25280
- children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),
25281
- firstRender: false
25282
- };
25283
- };
25284
- _proto.handleExited = function handleExited(child, node2) {
25285
- var currentChildMapping = getChildMapping(this.props.children);
25286
- if (child.key in currentChildMapping) return;
25287
- if (child.props.onExited) {
25288
- child.props.onExited(node2);
25289
- }
25290
- if (this.mounted) {
25291
- this.setState(function(state) {
25292
- var children2 = _extends$1({}, state.children);
25293
- delete children2[child.key];
25294
- return {
25295
- children: children2
25296
- };
25297
- });
25298
- }
25299
- };
25300
- _proto.render = function render() {
25301
- var _this$props = this.props, Component2 = _this$props.component, childFactory2 = _this$props.childFactory, props = _objectWithoutPropertiesLoose(_this$props, ["component", "childFactory"]);
25302
- var contextValue = this.state.contextValue;
25303
- var children2 = values(this.state.children).map(childFactory2);
25304
- delete props.appear;
25305
- delete props.enter;
25306
- delete props.exit;
25307
- if (Component2 === null) {
25308
- return /* @__PURE__ */ React__default.createElement(TransitionGroupContext.Provider, {
25309
- value: contextValue
25310
- }, children2);
25311
- }
25312
- return /* @__PURE__ */ React__default.createElement(TransitionGroupContext.Provider, {
25313
- value: contextValue
25314
- }, /* @__PURE__ */ React__default.createElement(Component2, props, children2));
25315
- };
25316
- return TransitionGroup2;
25317
- }(React__default.Component);
25318
- TransitionGroup.propTypes = {
25319
- /**
25320
- * `<TransitionGroup>` renders a `<div>` by default. You can change this
25321
- * behavior by providing a `component` prop.
25322
- * If you use React v16+ and would like to avoid a wrapping `<div>` element
25323
- * you can pass in `component={null}`. This is useful if the wrapping div
25324
- * borks your css styles.
25325
- */
25326
- component: PropTypes.any,
25327
- /**
25328
- * A set of `<Transition>` components, that are toggled `in` and out as they
25329
- * leave. the `<TransitionGroup>` will inject specific transition props, so
25330
- * remember to spread them through if you are wrapping the `<Transition>` as
25331
- * with our `<Fade>` example.
25332
- *
25333
- * While this component is meant for multiple `Transition` or `CSSTransition`
25334
- * children, sometimes you may want to have a single transition child with
25335
- * content that you want to be transitioned out and in when you change it
25336
- * (e.g. routes, images etc.) In that case you can change the `key` prop of
25337
- * the transition child as you change its content, this will cause
25338
- * `TransitionGroup` to transition the child out and back in.
25339
- */
25340
- children: PropTypes.node,
25341
- /**
25342
- * A convenience prop that enables or disables appear animations
25343
- * for all children. Note that specifying this will override any defaults set
25344
- * on individual children Transitions.
25345
- */
25346
- appear: PropTypes.bool,
25347
- /**
25348
- * A convenience prop that enables or disables enter animations
25349
- * for all children. Note that specifying this will override any defaults set
25350
- * on individual children Transitions.
25351
- */
25352
- enter: PropTypes.bool,
25353
- /**
25354
- * A convenience prop that enables or disables exit animations
25355
- * for all children. Note that specifying this will override any defaults set
25356
- * on individual children Transitions.
25357
- */
25358
- exit: PropTypes.bool,
25359
- /**
25360
- * You may need to apply reactive updates to a child as it is exiting.
25361
- * This is generally done by using `cloneElement` however in the case of an exiting
25362
- * child the element has already been removed and not accessible to the consumer.
25363
- *
25364
- * If you do need to update a child as it leaves you can provide a `childFactory`
25365
- * to wrap every child, even the ones that are leaving.
25366
- *
25367
- * @type Function(child: ReactElement) -> ReactElement
25368
- */
25369
- childFactory: PropTypes.func
25370
- };
25371
- TransitionGroup.defaultProps = defaultProps$P;
25372
- const UNINITIALIZED = {};
25373
- function useLazyRef(init, initArg) {
25374
- const ref = React.useRef(UNINITIALIZED);
25375
- if (ref.current === UNINITIALIZED) {
25376
- ref.current = init(initArg);
25377
- }
25378
- return ref;
25379
- }
25380
- const EMPTY$1 = [];
25381
- function useOnMount(fn) {
25382
- React.useEffect(fn, EMPTY$1);
25383
- }
25384
- class Timeout {
25385
- constructor() {
25386
- __publicField(this, "currentId", null);
25387
- __publicField(this, "clear", () => {
25388
- if (this.currentId !== null) {
25389
- clearTimeout(this.currentId);
25390
- this.currentId = null;
25391
- }
25392
- });
25393
- __publicField(this, "disposeEffect", () => {
25394
- return this.clear;
25395
- });
25396
- }
25397
- static create() {
25398
- return new Timeout();
25399
- }
25400
- /**
25401
- * Executes `fn` after `delay`, clearing any previously scheduled call.
25402
- */
25403
- start(delay, fn) {
25404
- this.clear();
25405
- this.currentId = setTimeout(() => {
25406
- this.currentId = null;
25407
- fn();
25408
- }, delay);
25409
- }
25410
- }
25411
- function useTimeout() {
25412
- const timeout = useLazyRef(Timeout.create).current;
25413
- useOnMount(timeout.disposeEffect);
25414
- return timeout;
25415
- }
25416
- function isClassComponent(elementType) {
25417
- const {
25418
- prototype = {}
25419
- } = elementType;
25420
- return Boolean(prototype.isReactComponent);
25421
- }
25422
- function elementTypeAcceptingRef(props, propName, componentName, location, propFullName) {
25423
- const propValue = props[propName];
25424
- const safePropName = propFullName || propName;
25425
- if (propValue == null || // When server-side rendering React doesn't warn either.
25426
- // This is not an accurate check for SSR.
25427
- // This is only in place for emotion compat.
25428
- // TODO: Revisit once https://github.com/facebook/react/issues/20047 is resolved.
25429
- typeof window === "undefined") {
25430
- return null;
25431
- }
25432
- let warningHint;
25433
- if (typeof propValue === "function" && !isClassComponent(propValue)) {
25434
- warningHint = "Did you accidentally provide a plain function component instead?";
25435
- }
25436
- if (warningHint !== void 0) {
25437
- return new Error(`Invalid ${location} \`${safePropName}\` supplied to \`${componentName}\`. Expected an element type that can hold a ref. ${warningHint} For more information see https://mui.com/r/caveat-with-refs-guide`);
25438
- }
25439
- return null;
25440
- }
25441
- const elementTypeAcceptingRef$1 = chainPropTypes(PropTypes.elementType, elementTypeAcceptingRef);
25442
25141
  function getSvgIconUtilityClass(slot) {
25443
25142
  return generateUtilityClass("MuiSvgIcon", slot);
25444
25143
  }
@@ -25855,6 +25554,337 @@ function mergeSlotProps$1(externalSlotProps, defaultSlotProps) {
25855
25554
  }
25856
25555
  };
25857
25556
  }
25557
+ function chainPropTypes(propType1, propType2) {
25558
+ return function validate2(...args) {
25559
+ return propType1(...args) || propType2(...args);
25560
+ };
25561
+ }
25562
+ function _extends$1() {
25563
+ return _extends$1 = Object.assign ? Object.assign.bind() : function(n2) {
25564
+ for (var e3 = 1; e3 < arguments.length; e3++) {
25565
+ var t = arguments[e3];
25566
+ for (var r2 in t) ({}).hasOwnProperty.call(t, r2) && (n2[r2] = t[r2]);
25567
+ }
25568
+ return n2;
25569
+ }, _extends$1.apply(null, arguments);
25570
+ }
25571
+ function _objectWithoutPropertiesLoose(r2, e3) {
25572
+ if (null == r2) return {};
25573
+ var t = {};
25574
+ for (var n2 in r2) if ({}.hasOwnProperty.call(r2, n2)) {
25575
+ if (-1 !== e3.indexOf(n2)) continue;
25576
+ t[n2] = r2[n2];
25577
+ }
25578
+ return t;
25579
+ }
25580
+ function _setPrototypeOf(t, e3) {
25581
+ return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e4) {
25582
+ return t2.__proto__ = e4, t2;
25583
+ }, _setPrototypeOf(t, e3);
25584
+ }
25585
+ function _inheritsLoose(t, o2) {
25586
+ t.prototype = Object.create(o2.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o2);
25587
+ }
25588
+ const TransitionGroupContext = React__default.createContext(null);
25589
+ function _assertThisInitialized(e3) {
25590
+ if (void 0 === e3) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
25591
+ return e3;
25592
+ }
25593
+ function getChildMapping(children2, mapFn) {
25594
+ var mapper = function mapper2(child) {
25595
+ return mapFn && isValidElement(child) ? mapFn(child) : child;
25596
+ };
25597
+ var result = /* @__PURE__ */ Object.create(null);
25598
+ if (children2) Children.map(children2, function(c) {
25599
+ return c;
25600
+ }).forEach(function(child) {
25601
+ result[child.key] = mapper(child);
25602
+ });
25603
+ return result;
25604
+ }
25605
+ function mergeChildMappings(prev2, next2) {
25606
+ prev2 = prev2 || {};
25607
+ next2 = next2 || {};
25608
+ function getValueForKey(key) {
25609
+ return key in next2 ? next2[key] : prev2[key];
25610
+ }
25611
+ var nextKeysPending = /* @__PURE__ */ Object.create(null);
25612
+ var pendingKeys = [];
25613
+ for (var prevKey in prev2) {
25614
+ if (prevKey in next2) {
25615
+ if (pendingKeys.length) {
25616
+ nextKeysPending[prevKey] = pendingKeys;
25617
+ pendingKeys = [];
25618
+ }
25619
+ } else {
25620
+ pendingKeys.push(prevKey);
25621
+ }
25622
+ }
25623
+ var i2;
25624
+ var childMapping = {};
25625
+ for (var nextKey in next2) {
25626
+ if (nextKeysPending[nextKey]) {
25627
+ for (i2 = 0; i2 < nextKeysPending[nextKey].length; i2++) {
25628
+ var pendingNextKey = nextKeysPending[nextKey][i2];
25629
+ childMapping[nextKeysPending[nextKey][i2]] = getValueForKey(pendingNextKey);
25630
+ }
25631
+ }
25632
+ childMapping[nextKey] = getValueForKey(nextKey);
25633
+ }
25634
+ for (i2 = 0; i2 < pendingKeys.length; i2++) {
25635
+ childMapping[pendingKeys[i2]] = getValueForKey(pendingKeys[i2]);
25636
+ }
25637
+ return childMapping;
25638
+ }
25639
+ function getProp(child, prop, props) {
25640
+ return props[prop] != null ? props[prop] : child.props[prop];
25641
+ }
25642
+ function getInitialChildMapping(props, onExited) {
25643
+ return getChildMapping(props.children, function(child) {
25644
+ return cloneElement(child, {
25645
+ onExited: onExited.bind(null, child),
25646
+ in: true,
25647
+ appear: getProp(child, "appear", props),
25648
+ enter: getProp(child, "enter", props),
25649
+ exit: getProp(child, "exit", props)
25650
+ });
25651
+ });
25652
+ }
25653
+ function getNextChildMapping(nextProps, prevChildMapping, onExited) {
25654
+ var nextChildMapping = getChildMapping(nextProps.children);
25655
+ var children2 = mergeChildMappings(prevChildMapping, nextChildMapping);
25656
+ Object.keys(children2).forEach(function(key) {
25657
+ var child = children2[key];
25658
+ if (!isValidElement(child)) return;
25659
+ var hasPrev = key in prevChildMapping;
25660
+ var hasNext = key in nextChildMapping;
25661
+ var prevChild = prevChildMapping[key];
25662
+ var isLeaving = isValidElement(prevChild) && !prevChild.props.in;
25663
+ if (hasNext && (!hasPrev || isLeaving)) {
25664
+ children2[key] = cloneElement(child, {
25665
+ onExited: onExited.bind(null, child),
25666
+ in: true,
25667
+ exit: getProp(child, "exit", nextProps),
25668
+ enter: getProp(child, "enter", nextProps)
25669
+ });
25670
+ } else if (!hasNext && hasPrev && !isLeaving) {
25671
+ children2[key] = cloneElement(child, {
25672
+ in: false
25673
+ });
25674
+ } else if (hasNext && hasPrev && isValidElement(prevChild)) {
25675
+ children2[key] = cloneElement(child, {
25676
+ onExited: onExited.bind(null, child),
25677
+ in: prevChild.props.in,
25678
+ exit: getProp(child, "exit", nextProps),
25679
+ enter: getProp(child, "enter", nextProps)
25680
+ });
25681
+ }
25682
+ });
25683
+ return children2;
25684
+ }
25685
+ var values = Object.values || function(obj) {
25686
+ return Object.keys(obj).map(function(k) {
25687
+ return obj[k];
25688
+ });
25689
+ };
25690
+ var defaultProps$P = {
25691
+ component: "div",
25692
+ childFactory: function childFactory(child) {
25693
+ return child;
25694
+ }
25695
+ };
25696
+ var TransitionGroup = /* @__PURE__ */ function(_React$Component) {
25697
+ _inheritsLoose(TransitionGroup2, _React$Component);
25698
+ function TransitionGroup2(props, context) {
25699
+ var _this;
25700
+ _this = _React$Component.call(this, props, context) || this;
25701
+ var handleExited = _this.handleExited.bind(_assertThisInitialized(_this));
25702
+ _this.state = {
25703
+ contextValue: {
25704
+ isMounting: true
25705
+ },
25706
+ handleExited,
25707
+ firstRender: true
25708
+ };
25709
+ return _this;
25710
+ }
25711
+ var _proto = TransitionGroup2.prototype;
25712
+ _proto.componentDidMount = function componentDidMount() {
25713
+ this.mounted = true;
25714
+ this.setState({
25715
+ contextValue: {
25716
+ isMounting: false
25717
+ }
25718
+ });
25719
+ };
25720
+ _proto.componentWillUnmount = function componentWillUnmount() {
25721
+ this.mounted = false;
25722
+ };
25723
+ TransitionGroup2.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {
25724
+ var prevChildMapping = _ref.children, handleExited = _ref.handleExited, firstRender = _ref.firstRender;
25725
+ return {
25726
+ children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),
25727
+ firstRender: false
25728
+ };
25729
+ };
25730
+ _proto.handleExited = function handleExited(child, node2) {
25731
+ var currentChildMapping = getChildMapping(this.props.children);
25732
+ if (child.key in currentChildMapping) return;
25733
+ if (child.props.onExited) {
25734
+ child.props.onExited(node2);
25735
+ }
25736
+ if (this.mounted) {
25737
+ this.setState(function(state) {
25738
+ var children2 = _extends$1({}, state.children);
25739
+ delete children2[child.key];
25740
+ return {
25741
+ children: children2
25742
+ };
25743
+ });
25744
+ }
25745
+ };
25746
+ _proto.render = function render() {
25747
+ var _this$props = this.props, Component2 = _this$props.component, childFactory2 = _this$props.childFactory, props = _objectWithoutPropertiesLoose(_this$props, ["component", "childFactory"]);
25748
+ var contextValue = this.state.contextValue;
25749
+ var children2 = values(this.state.children).map(childFactory2);
25750
+ delete props.appear;
25751
+ delete props.enter;
25752
+ delete props.exit;
25753
+ if (Component2 === null) {
25754
+ return /* @__PURE__ */ React__default.createElement(TransitionGroupContext.Provider, {
25755
+ value: contextValue
25756
+ }, children2);
25757
+ }
25758
+ return /* @__PURE__ */ React__default.createElement(TransitionGroupContext.Provider, {
25759
+ value: contextValue
25760
+ }, /* @__PURE__ */ React__default.createElement(Component2, props, children2));
25761
+ };
25762
+ return TransitionGroup2;
25763
+ }(React__default.Component);
25764
+ TransitionGroup.propTypes = {
25765
+ /**
25766
+ * `<TransitionGroup>` renders a `<div>` by default. You can change this
25767
+ * behavior by providing a `component` prop.
25768
+ * If you use React v16+ and would like to avoid a wrapping `<div>` element
25769
+ * you can pass in `component={null}`. This is useful if the wrapping div
25770
+ * borks your css styles.
25771
+ */
25772
+ component: PropTypes.any,
25773
+ /**
25774
+ * A set of `<Transition>` components, that are toggled `in` and out as they
25775
+ * leave. the `<TransitionGroup>` will inject specific transition props, so
25776
+ * remember to spread them through if you are wrapping the `<Transition>` as
25777
+ * with our `<Fade>` example.
25778
+ *
25779
+ * While this component is meant for multiple `Transition` or `CSSTransition`
25780
+ * children, sometimes you may want to have a single transition child with
25781
+ * content that you want to be transitioned out and in when you change it
25782
+ * (e.g. routes, images etc.) In that case you can change the `key` prop of
25783
+ * the transition child as you change its content, this will cause
25784
+ * `TransitionGroup` to transition the child out and back in.
25785
+ */
25786
+ children: PropTypes.node,
25787
+ /**
25788
+ * A convenience prop that enables or disables appear animations
25789
+ * for all children. Note that specifying this will override any defaults set
25790
+ * on individual children Transitions.
25791
+ */
25792
+ appear: PropTypes.bool,
25793
+ /**
25794
+ * A convenience prop that enables or disables enter animations
25795
+ * for all children. Note that specifying this will override any defaults set
25796
+ * on individual children Transitions.
25797
+ */
25798
+ enter: PropTypes.bool,
25799
+ /**
25800
+ * A convenience prop that enables or disables exit animations
25801
+ * for all children. Note that specifying this will override any defaults set
25802
+ * on individual children Transitions.
25803
+ */
25804
+ exit: PropTypes.bool,
25805
+ /**
25806
+ * You may need to apply reactive updates to a child as it is exiting.
25807
+ * This is generally done by using `cloneElement` however in the case of an exiting
25808
+ * child the element has already been removed and not accessible to the consumer.
25809
+ *
25810
+ * If you do need to update a child as it leaves you can provide a `childFactory`
25811
+ * to wrap every child, even the ones that are leaving.
25812
+ *
25813
+ * @type Function(child: ReactElement) -> ReactElement
25814
+ */
25815
+ childFactory: PropTypes.func
25816
+ };
25817
+ TransitionGroup.defaultProps = defaultProps$P;
25818
+ const UNINITIALIZED = {};
25819
+ function useLazyRef(init, initArg) {
25820
+ const ref = React.useRef(UNINITIALIZED);
25821
+ if (ref.current === UNINITIALIZED) {
25822
+ ref.current = init(initArg);
25823
+ }
25824
+ return ref;
25825
+ }
25826
+ const EMPTY$1 = [];
25827
+ function useOnMount(fn) {
25828
+ React.useEffect(fn, EMPTY$1);
25829
+ }
25830
+ class Timeout {
25831
+ constructor() {
25832
+ __publicField(this, "currentId", null);
25833
+ __publicField(this, "clear", () => {
25834
+ if (this.currentId !== null) {
25835
+ clearTimeout(this.currentId);
25836
+ this.currentId = null;
25837
+ }
25838
+ });
25839
+ __publicField(this, "disposeEffect", () => {
25840
+ return this.clear;
25841
+ });
25842
+ }
25843
+ static create() {
25844
+ return new Timeout();
25845
+ }
25846
+ /**
25847
+ * Executes `fn` after `delay`, clearing any previously scheduled call.
25848
+ */
25849
+ start(delay, fn) {
25850
+ this.clear();
25851
+ this.currentId = setTimeout(() => {
25852
+ this.currentId = null;
25853
+ fn();
25854
+ }, delay);
25855
+ }
25856
+ }
25857
+ function useTimeout() {
25858
+ const timeout = useLazyRef(Timeout.create).current;
25859
+ useOnMount(timeout.disposeEffect);
25860
+ return timeout;
25861
+ }
25862
+ function isClassComponent(elementType) {
25863
+ const {
25864
+ prototype = {}
25865
+ } = elementType;
25866
+ return Boolean(prototype.isReactComponent);
25867
+ }
25868
+ function elementTypeAcceptingRef(props, propName, componentName, location, propFullName) {
25869
+ const propValue = props[propName];
25870
+ const safePropName = propFullName || propName;
25871
+ if (propValue == null || // When server-side rendering React doesn't warn either.
25872
+ // This is not an accurate check for SSR.
25873
+ // This is only in place for emotion compat.
25874
+ // TODO: Revisit once https://github.com/facebook/react/issues/20047 is resolved.
25875
+ typeof window === "undefined") {
25876
+ return null;
25877
+ }
25878
+ let warningHint;
25879
+ if (typeof propValue === "function" && !isClassComponent(propValue)) {
25880
+ warningHint = "Did you accidentally provide a plain function component instead?";
25881
+ }
25882
+ if (warningHint !== void 0) {
25883
+ return new Error(`Invalid ${location} \`${safePropName}\` supplied to \`${componentName}\`. Expected an element type that can hold a ref. ${warningHint} For more information see https://mui.com/r/caveat-with-refs-guide`);
25884
+ }
25885
+ return null;
25886
+ }
25887
+ const elementTypeAcceptingRef$1 = chainPropTypes(PropTypes.elementType, elementTypeAcceptingRef);
25858
25888
  function getTypeByValue(value) {
25859
25889
  const valueType = typeof value;
25860
25890
  switch (valueType) {
@@ -33878,7 +33908,7 @@ function Legend(props) {
33878
33908
  }
33879
33909
  }
33880
33910
  if (isStaticColor) {
33881
- g2.append("rect").attr("x", 0).attr("y", titleHeight).attr("width", width2).attr("height", rectHeight).attr("fill", `rgb(${staticColor[0]},${staticColor[1]},${staticColor[2]})`);
33911
+ g2.append("rect").attr("x", 0).attr("y", titleHeight).attr("width", width2 - 4).attr("height", rectHeight).attr("fill", `rgb(${staticColor[0]},${staticColor[1]},${staticColor[2]})`);
33882
33912
  }
33883
33913
  if (isSetColor && obsSetSelection && obsSetColor) {
33884
33914
  const obsSetSelectionByLevelZero = {};
@@ -33912,9 +33942,17 @@ function Legend(props) {
33912
33942
  const i2 = featureAggregationStrategy;
33913
33943
  featureSelectionLabelRawStr = featureSelectionLabelRaw == null ? void 0 : featureSelectionLabelRaw[i2];
33914
33944
  } else if (featureAggregationStrategy === "sum") {
33915
- featureSelectionLabelRawStr = "Sum of features";
33945
+ if (Array.isArray(featureSelection) && featureSelection.length === 1) {
33946
+ featureSelectionLabelRawStr = featureSelectionLabelRaw == null ? void 0 : featureSelectionLabelRaw[0];
33947
+ } else {
33948
+ featureSelectionLabelRawStr = "Sum of features";
33949
+ }
33916
33950
  } else if (featureAggregationStrategy === "mean") {
33917
- featureSelectionLabelRawStr = "Mean of features";
33951
+ if (Array.isArray(featureSelection) && featureSelection.length === 1) {
33952
+ featureSelectionLabelRawStr = featureSelectionLabelRaw == null ? void 0 : featureSelectionLabelRaw[0];
33953
+ } else {
33954
+ featureSelectionLabelRawStr = "Mean of features";
33955
+ }
33918
33956
  } else {
33919
33957
  featureSelectionLabelRawStr = featureSelectionLabelRaw == null ? void 0 : featureSelectionLabelRaw[0];
33920
33958
  }
@@ -33928,7 +33966,7 @@ function Legend(props) {
33928
33966
  if (!isSetColor) {
33929
33967
  g2.append("text").attr("text-anchor", hasSubLabel ? "start" : "end").attr("dominant-baseline", "hanging").attr("x", hasSubLabel ? 0 : width2 - 4).attr("y", 0).text(mainLabel ?? "").style("font-size", "10px").style("fill", foregroundColor);
33930
33968
  if (hasSubLabel) {
33931
- g2.append("text").attr("text-anchor", "end").attr("dominant-baseline", "hanging").attr("x", width2).attr("y", titleHeight + rectHeight).text(subLabel ?? "").style("font-size", "9px").style("fill", foregroundColor);
33969
+ g2.append("text").attr("text-anchor", "end").attr("dominant-baseline", "hanging").attr("x", width2 - 5).attr("y", titleHeight + rectHeight).text(subLabel ?? "").style("font-size", "9px").style("fill", foregroundColor);
33932
33970
  }
33933
33971
  }
33934
33972
  }, [
@@ -112869,7 +112907,7 @@ function clipExtent(x02, y02, x12, y12) {
112869
112907
  return clipStream;
112870
112908
  };
112871
112909
  }
112872
- function extent$1() {
112910
+ function extent() {
112873
112911
  var x02 = 0, y02 = 0, x12 = 960, y12 = 500, cache2, cacheStream, clip2;
112874
112912
  return clip2 = {
112875
112913
  stream: function(stream) {
@@ -114203,7 +114241,7 @@ const d3Geo = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePropert
114203
114241
  geoBounds: bounds,
114204
114242
  geoCentroid: centroid,
114205
114243
  geoCircle: circle$1,
114206
- geoClipExtent: extent$1,
114244
+ geoClipExtent: extent,
114207
114245
  geoConicConformal: conicConformal,
114208
114246
  geoConicConformalRaw: conicConformalRaw,
114209
114247
  geoConicEqualArea: conicEqualArea,
@@ -138034,22 +138072,22 @@ function addDecoder(cases, importFn) {
138034
138072
  }
138035
138073
  cases.forEach((c) => registry$1.set(c, importFn));
138036
138074
  }
138037
- addDecoder([void 0, 1], () => import("./raw-CVpDtOvK.js").then((m) => m.default));
138038
- addDecoder(5, () => import("./lzw-Bk7eILPv.js").then((m) => m.default));
138075
+ addDecoder([void 0, 1], () => import("./raw-DBEZoTXk.js").then((m) => m.default));
138076
+ addDecoder(5, () => import("./lzw-DIDyT49t.js").then((m) => m.default));
138039
138077
  addDecoder(6, () => {
138040
138078
  throw new Error("old style JPEG compression is not supported.");
138041
138079
  });
138042
- addDecoder(7, () => import("./jpeg-BwtBYp_n.js").then((m) => m.default));
138043
- addDecoder([8, 32946], () => import("./deflate-BCK9hcdb.js").then((m) => m.default));
138044
- addDecoder(32773, () => import("./packbits-DwgrK_HN.js").then((m) => m.default));
138080
+ addDecoder(7, () => import("./jpeg-BQH57nGA.js").then((m) => m.default));
138081
+ addDecoder([8, 32946], () => import("./deflate-C6kM_d3H.js").then((m) => m.default));
138082
+ addDecoder(32773, () => import("./packbits-x4mUZGOp.js").then((m) => m.default));
138045
138083
  addDecoder(
138046
138084
  34887,
138047
- () => import("./lerc-C6yVuiGq.js").then(async (m) => {
138085
+ () => import("./lerc-Bcypgvlf.js").then(async (m) => {
138048
138086
  await m.zstd.init();
138049
138087
  return m;
138050
138088
  }).then((m) => m.default)
138051
138089
  );
138052
- addDecoder(50001, () => import("./webimage-DpgOps3O.js").then((m) => m.default));
138090
+ addDecoder(50001, () => import("./webimage-DNvdSc-_.js").then((m) => m.default));
138053
138091
  function decodeRowAcc(row, stride) {
138054
138092
  let length2 = row.length - stride;
138055
138093
  let offset2 = 0;
@@ -148018,36 +148056,8 @@ void main() {
148018
148056
  DECKGL_FILTER_COLOR(gl_FragColor, geometry);
148019
148057
  }
148020
148058
  `;
148021
- function extent(values2, valueof) {
148022
- let min;
148023
- let max2;
148024
- {
148025
- for (const value of values2) {
148026
- if (value != null) {
148027
- if (min === void 0) {
148028
- if (value >= value) min = max2 = value;
148029
- } else {
148030
- if (min > value) min = value;
148031
- if (max2 < value) max2 = value;
148032
- }
148033
- }
148034
- }
148035
- }
148036
- return [min, max2];
148037
- }
148038
- function max(values2, valueof) {
148039
- let max2;
148040
- {
148041
- for (const value of values2) {
148042
- if (value != null && (max2 < value || max2 === void 0 && value >= value)) {
148043
- max2 = value;
148044
- }
148045
- }
148046
- }
148047
- return max2;
148048
- }
148049
148059
  function normalize(arr) {
148050
- const [min, max2] = extent(arr);
148060
+ const [min, max2] = extent$1(arr);
148051
148061
  const ratio = 255 / (max2 - min);
148052
148062
  const data = new Uint8Array(arr.map((i2) => Math.floor((i2 - min) * ratio)));
148053
148063
  return data;
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a, H } from "./index-CIYB_Yf2.js";
1
+ import { a, H } from "./index-BB2ssozJ.js";
2
2
  export {
3
3
  a as Heatmap,
4
4
  H as HeatmapSubscriber
@@ -1,4 +1,4 @@
1
- import { B as BaseDecoder } from "./index-CIYB_Yf2.js";
1
+ import { B as BaseDecoder } from "./index-BB2ssozJ.js";
2
2
  const dctZigZag = new Int32Array([
3
3
  0,
4
4
  1,
@@ -1,5 +1,5 @@
1
1
  import { i as inflate_1 } from "./pako.esm-SxljTded.js";
2
- import { g as getDefaultExportFromCjs, B as BaseDecoder } from "./index-CIYB_Yf2.js";
2
+ import { g as getDefaultExportFromCjs, B as BaseDecoder } from "./index-BB2ssozJ.js";
3
3
  const LercParameters = {
4
4
  AddCompression: 1
5
5
  };
@@ -1,4 +1,4 @@
1
- import { B as BaseDecoder } from "./index-CIYB_Yf2.js";
1
+ import { B as BaseDecoder } from "./index-BB2ssozJ.js";
2
2
  const MIN_BITS = 9;
3
3
  const CLEAR_CODE = 256;
4
4
  const EOI_CODE = 257;
@@ -1,4 +1,4 @@
1
- import { B as BaseDecoder } from "./index-CIYB_Yf2.js";
1
+ import { B as BaseDecoder } from "./index-BB2ssozJ.js";
2
2
  class PackbitsDecoder extends BaseDecoder {
3
3
  decodeBlock(buffer) {
4
4
  const dataView = new DataView(buffer);
@@ -1,4 +1,4 @@
1
- import { B as BaseDecoder } from "./index-CIYB_Yf2.js";
1
+ import { B as BaseDecoder } from "./index-BB2ssozJ.js";
2
2
  class RawDecoder extends BaseDecoder {
3
3
  decodeBlock(buffer) {
4
4
  return buffer;
@@ -1,4 +1,4 @@
1
- import { B as BaseDecoder } from "./index-CIYB_Yf2.js";
1
+ import { B as BaseDecoder } from "./index-BB2ssozJ.js";
2
2
  class WebImageDecoder extends BaseDecoder {
3
3
  constructor() {
4
4
  super();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vitessce/heatmap",
3
- "version": "3.8.10",
3
+ "version": "3.8.13",
4
4
  "author": "HIDIVE Lab at HMS",
5
5
  "homepage": "http://vitessce.io",
6
6
  "repository": {
@@ -19,15 +19,15 @@
19
19
  "lodash-es": "^4.17.21",
20
20
  "uuid": "^9.0.0",
21
21
  "react-aria": "^3.28.0",
22
- "@vitessce/styles": "3.8.10",
23
- "@vitessce/constants-internal": "3.8.10",
24
- "@vitessce/gl": "3.8.10",
25
- "@vitessce/legend": "3.8.10",
26
- "@vitessce/sets-utils": "3.8.10",
27
- "@vitessce/tooltip": "3.8.10",
28
- "@vitessce/utils": "3.8.10",
29
- "@vitessce/vit-s": "3.8.10",
30
- "@vitessce/workers": "3.8.10"
22
+ "@vitessce/styles": "3.8.13",
23
+ "@vitessce/constants-internal": "3.8.13",
24
+ "@vitessce/gl": "3.8.13",
25
+ "@vitessce/sets-utils": "3.8.13",
26
+ "@vitessce/tooltip": "3.8.13",
27
+ "@vitessce/utils": "3.8.13",
28
+ "@vitessce/legend": "3.8.13",
29
+ "@vitessce/vit-s": "3.8.13",
30
+ "@vitessce/workers": "3.8.13"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@testing-library/jest-dom": "^6.6.3",