UNPKG

vitessce

Version:

Vitessce app and React component library

620 lines (573 loc) 380 kB
module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = "./"; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 173); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports) { module.exports = require("react"); /***/ }), /* 1 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // CONCATENATED MODULE: ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } // CONCATENATED MODULE: ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } // EXTERNAL MODULE: ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js var unsupportedIterableToArray = __webpack_require__(39); // CONCATENATED MODULE: ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } // CONCATENATED MODULE: ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _slicedToArray; }); function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || Object(unsupportedIterableToArray["a" /* default */])(arr, i) || _nonIterableRest(); } /***/ }), /* 2 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _defineProperty; }); function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /***/ }), /* 3 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _objectSpread2; }); /* harmony import */ var _defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { Object(_defineProperty__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } /***/ }), /* 4 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // EXTERNAL MODULE: ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js var arrayLikeToArray = __webpack_require__(36); // CONCATENATED MODULE: ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return Object(arrayLikeToArray["a" /* default */])(arr); } // CONCATENATED MODULE: ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } // EXTERNAL MODULE: ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js var unsupportedIterableToArray = __webpack_require__(39); // CONCATENATED MODULE: ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } // CONCATENATED MODULE: ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _toConsumableArray; }); function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || Object(unsupportedIterableToArray["a" /* default */])(arr) || _nonIterableSpread(); } /***/ }), /* 5 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return ViewConfigProvider; }); /* unused harmony export useViewConfigStore */ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "u", function() { return useViewConfigStoreApi; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AuxiliaryProvider; }); /* unused harmony export useAuxiliaryStore */ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return createViewConfigStore; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return useComponentLayout; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return createAuxiliaryStore; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return useCoordination; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return useAuxiliaryCoordination; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "n", function() { return useLoaders; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "m", function() { return useLayout; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "o", function() { return useRemoveComponent; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return useChangeLayout; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "r", function() { return useSetLoaders; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "s", function() { return useSetViewConfig; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return useComponentHover; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "p", function() { return useSetComponentHover; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "v", function() { return useWarning; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "t", function() { return useSetWarning; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return useComponentViewInfo; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "q", function() { return useSetComponentViewInfo; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return useGridResize; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return useEmitGridResize; }); /* harmony import */ var _home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1); /* harmony import */ var _home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2); /* harmony import */ var _home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(31); /* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(zustand__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var zustand_context__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(52); /* harmony import */ var zustand_context__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(zustand_context__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var zustand_shallow__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(53); /* harmony import */ var zustand_shallow__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(zustand_shallow__WEBPACK_IMPORTED_MODULE_6__); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(7); // Reference: https://github.com/pmndrs/zustand#react-context // Reference: https://github.com/pmndrs/zustand/blob/e47ea03/tests/context.test.tsx#L60 var _createContext=zustand_context__WEBPACK_IMPORTED_MODULE_5___default()(),ViewConfigProviderLocal=_createContext.Provider,useViewConfigStoreLocal=_createContext.useStore,useViewConfigStoreApiLocal=_createContext.useStoreApi;var ViewConfigProvider=ViewConfigProviderLocal;var useViewConfigStore=useViewConfigStoreLocal;var useViewConfigStoreApi=useViewConfigStoreApiLocal;var _createContext2=zustand_context__WEBPACK_IMPORTED_MODULE_5___default()(),AuxiliaryProviderLocal=_createContext2.Provider,useAuxiliaryStoreLocal=_createContext2.useStore;var AuxiliaryProvider=AuxiliaryProviderLocal;var useAuxiliaryStore=useAuxiliaryStoreLocal;/** * The useViewConfigStore hook is initialized via the zustand * create() function, which sets up both the state variables * and the reducer-type functions. * Reference: https://github.com/react-spring/zustand * @returns {function} The useStore hook. */var createViewConfigStore=function createViewConfigStore(){return zustand__WEBPACK_IMPORTED_MODULE_4___default()(function(set){return{// State: // The viewConfig is an object which must conform to the schema // found in src/schemas/config.schema.json. viewConfig:null,// The loaders object is a mapping from dataset ID to // data type to loader object instance. loaders:null,// Reducer functions which update the state // (although technically also part of state): setViewConfig:function setViewConfig(viewConfig){return set({viewConfig:viewConfig});},setLoaders:function setLoaders(loaders){return set({loaders:loaders});},setCoordinationValue:function setCoordinationValue(_ref){var parameter=_ref.parameter,scope=_ref.scope,value=_ref.value;return set(function(state){return{viewConfig:Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])({},state.viewConfig,{coordinationSpace:Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])({},state.viewConfig.coordinationSpace,Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])({},parameter,Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])({},state.viewConfig.coordinationSpace[parameter],Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])({},scope,value))))})};});},removeComponent:function removeComponent(i){return set(function(state){var newLayout=state.viewConfig.layout.slice();newLayout.splice(i,1);return{viewConfig:Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])({},state.viewConfig,{layout:newLayout})};});},changeLayout:function changeLayout(newComponentProps){return set(function(state){var newLayout=state.viewConfig.layout.slice();newComponentProps.forEach(function(_ref2){var _ref3=Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_ref2,2),i=_ref3[0],newProps=_ref3[1];newLayout[i]=Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])({},newLayout[i],{},newProps);});return{viewConfig:Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])({},state.viewConfig,{layout:newLayout})};});}};});};/** * Hook for getting components' layout from the view config based on * matching all coordination scopes. * @returns {Object} The components' layout. */var useComponentLayout=function useComponentLayout(component,scopes,coordinationScopes){return useViewConfigStore(function(state){return state.viewConfig.layout.filter(function(l){return l.component===component;}).filter(function(l){return scopes.every(function(scope){return l.coordinationScopes[scope]===coordinationScopes[scope];});});});};/** * The useAuxiliaryStore hook is initialized via the zustand * create() function, which sets up both the state variables * and the reducer-type functions. * Reference: https://github.com/react-spring/zustand * It is meant to be used for non-viewconfig-based coordination between components. * For example, as currently happens, the layer controller can coordinate * on-load callbacks with spatial view based on whether or not they are * coordinated via `spatialRasterLayers` - the callbacks are not part of the view config * though so they live here. * @returns {function} The useStore hook. */var createAuxiliaryStore=function createAuxiliaryStore(){return zustand__WEBPACK_IMPORTED_MODULE_4___default()(function(set){return{auxiliaryStore:null,setCoordinationValue:function setCoordinationValue(_ref4){var parameter=_ref4.parameter,scope=_ref4.scope,value=_ref4.value;return set(function(state){return{auxiliaryStore:Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])({},state.auxiliaryStore,Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])({},parameter,Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])({},scope,value)))};});}};});};/** * The hover store can be used to store global state * related to which component is currently hovered, * which is required for tooltip / crossover elements. * @returns {function} The useStore hook. */var useHoverStore=zustand__WEBPACK_IMPORTED_MODULE_4___default()(function(set){return{// Components may need to know if they are the "hover source" // for tooltip interactions. This value should be a unique // component ID, such as its index in the view config layout. componentHover:null,setComponentHover:function setComponentHover(componentHover){return set({componentHover:componentHover});}};});/** * The warning store can be used to store global state * related to app warning messages. * @returns {function} The useStore hook. */var useWarnStore=zustand__WEBPACK_IMPORTED_MODULE_4___default()(function(set){return{// Want a global state to collect warning messages // that occur anywhere in the app. warning:null,setWarning:function setWarning(warning){return set({warning:warning});}};});/** * The view info store can be used to store component-level * viewInfo objects, * which are required for tooltip / crossover elements. * @returns {function} The useStore hook. */var useViewInfoStore=zustand__WEBPACK_IMPORTED_MODULE_4___default()(function(set){return{// The viewInfo object is a mapping from // component IDs to component view info objects. // Each view info object must have a project() function. viewInfo:{},setComponentViewInfo:function setComponentViewInfo(uuid,viewInfo){return set(function(state){return{viewInfo:Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])({},state.viewInfo,Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])({},uuid,viewInfo))};});}};});/** * The grid size store can be used to store a * counter which updates on each window or react-grid-layout * resize event. * @returns {function} The useStore hook. */var useGridSizeStore=zustand__WEBPACK_IMPORTED_MODULE_4___default()(function(set){return{resizeCount:{},incrementResizeCount:function incrementResizeCount(){return set(function(state){return{resizeCount:state.resizeCount+1};});}};});/** * The useCoordination hook returns both the * values and setter functions for the coordination objects * in a particular coordination scope mapping. * This hook is intended to be used within the ___Subscriber * components to allow them to "hook into" only those coordination * objects and setter functions of relevance. * @param {string[]} parameters Array of coordination types. * @param {object} coordinationScopes Mapping of coordination types * to scope names. * @returns {array} Returns a tuple [values, setters] * where values is an object containing all coordination values, * and setters is an object containing all coordination setter * functions for the values in `values`, named with a "set" * prefix. */function useCoordination(parameters,coordinationScopes){var setCoordinationValue=useViewConfigStore(function(state){return state.setCoordinationValue;});var values=useViewConfigStore(function(state){var coordinationSpace=state.viewConfig.coordinationSpace;return Object(_utils__WEBPACK_IMPORTED_MODULE_7__[/* fromEntries */ "b"])(parameters.map(function(parameter){if(coordinationSpace&&coordinationSpace[parameter]){var value=coordinationSpace[parameter][coordinationScopes[parameter]];return[parameter,value];}return[parameter,undefined];}));},zustand_shallow__WEBPACK_IMPORTED_MODULE_6___default.a);var setters=Object(react__WEBPACK_IMPORTED_MODULE_3__["useMemo"])(function(){return Object(_utils__WEBPACK_IMPORTED_MODULE_7__[/* fromEntries */ "b"])(parameters.map(function(parameter){var setterName="set".concat(Object(_utils__WEBPACK_IMPORTED_MODULE_7__[/* capitalize */ "a"])(parameter));var setterFunc=function setterFunc(value){return setCoordinationValue({parameter:parameter,scope:coordinationScopes[parameter],value:value});};return[setterName,setterFunc];// eslint-disable-next-line react-hooks/exhaustive-deps }));},[parameters,coordinationScopes]);return[values,setters];}var AUXILIARY_COORDINATION_TYPES_MAP={spatialRasterLayers:['rasterLayersCallbacks','areLoadingRasterChannnels']};/** * The maps the coordination types of incoming scopes to new types * for the auxiliary store. * @param {object} coordinationScopes Mapping of coordination types * to scope names. * @returns {object} Mapping of coordination types * to new scope names for the auxiliary store. */var mapCoordinationScopes=function mapCoordinationScopes(coordinationScopes){var newCoordinationScopes={};Object.keys(coordinationScopes).forEach(function(key){var newCoordinationTypes=AUXILIARY_COORDINATION_TYPES_MAP[key]||[];newCoordinationTypes.forEach(function(coordinationType){newCoordinationScopes[coordinationType||key]=coordinationScopes[key];});});return newCoordinationScopes;};var mapParameters=function mapParameters(parameters){return parameters.map(function(parameter){return AUXILIARY_COORDINATION_TYPES_MAP[parameter];}).filter(Boolean).flat();};/** * The useAuxiliaryCoordination hook returns both the * values and setter functions for the auxiliary coordination objects * in a particular coordination scope mapping. * This hook is intended to be used within the ___Subscriber * components to allow them to "hook into" only those auxiliary coordination * objects and setter functions of relevance, for example "on load" callbacks. * @param {string[]} parameters Array of coordination types. * @param {object} coordinationScopes Mapping of coordination types * to scope names. * @returns {array} Returns a tuple [values, setters] * where values is an object containing all coordination values, * and setters is an object containing all coordination setter * functions for the values in `values`, named with a "set" * prefix. */function useAuxiliaryCoordination(parameters,coordinationScopes){var setCoordinationValue=useAuxiliaryStore(function(state){return state.setCoordinationValue;});var mappedCoordinationScopes=mapCoordinationScopes(coordinationScopes);var mappedParameters=mapParameters(parameters);var values=useAuxiliaryStore(function(state){var auxiliaryStore=state.auxiliaryStore;return Object(_utils__WEBPACK_IMPORTED_MODULE_7__[/* fromEntries */ "b"])(mappedParameters.map(function(parameter){if(auxiliaryStore&&auxiliaryStore[parameter]){var value=auxiliaryStore[parameter][mappedCoordinationScopes[parameter]];return[parameter,value];}return[parameter,undefined];}));},zustand_shallow__WEBPACK_IMPORTED_MODULE_6___default.a);var setters=Object(react__WEBPACK_IMPORTED_MODULE_3__["useMemo"])(function(){return Object(_utils__WEBPACK_IMPORTED_MODULE_7__[/* fromEntries */ "b"])(mappedParameters.map(function(parameter){var setterName="set".concat(Object(_utils__WEBPACK_IMPORTED_MODULE_7__[/* capitalize */ "a"])(parameter));var setterFunc=function setterFunc(value){return setCoordinationValue({parameter:parameter,scope:mappedCoordinationScopes[parameter],value:value});};return[setterName,setterFunc];// eslint-disable-next-line react-hooks/exhaustive-deps }));},[parameters,coordinationScopes]);return[values,setters];}/** * Obtain the loaders object from * the global app state. * @returns {object} The loaders object * in the `useViewConfigStore` store. */function useLoaders(){return useViewConfigStore(function(state){return state.loaders;});}/** * Obtain the view config layout array from * the global app state. * @returns {object[]} The layout array * in the `useViewConfigStore` store. */function useLayout(){return useViewConfigStore(function(state){var _state$viewConfig;return(_state$viewConfig=state.viewConfig)===null||_state$viewConfig===void 0?void 0:_state$viewConfig.layout;});}/** * Obtain the component removal function from * the global app state. * @returns {function} The remove component function * in the `useViewInfoStore` store. */function useRemoveComponent(){return useViewConfigStore(function(state){return state.removeComponent;});}/** * Obtain the component prop setter function from * the global app state. * @returns {function} The set component props function * in the `useViewInfoStore` store. */function useChangeLayout(){return useViewConfigStore(function(state){return state.changeLayout;});}/** * Obtain the loaders setter function from * the global app state. * @returns {function} The loaders setter function * in the `useViewConfigStore` store. */function useSetLoaders(){return useViewConfigStore(function(state){return state.setLoaders;});}/** * Obtain the view config setter function from * the global app state. * @returns {function} The view config setter function * in the `useViewConfigStore` store. */function useSetViewConfig(viewConfigStoreApi){var setViewConfigRef=Object(react__WEBPACK_IMPORTED_MODULE_3__["useRef"])(viewConfigStoreApi.getState().setViewConfig);var setViewConfig=setViewConfigRef.current;return setViewConfig;}/** * Obtain the component hover value from * the global app state. * @returns {number} The hovered component ID * in the `useHoverStore` store. */function useComponentHover(){return useHoverStore(function(state){return state.componentHover;});}/** * Obtain the component hover setter function from * the global app state. * @returns {function} The component hover setter function * in the `useHoverStore` store. */function useSetComponentHover(){return useHoverStore(function(state){return state.setComponentHover;});}/** * Obtain the warning message from * the global app state. * @returns {string} The warning message * in the `useWarnStore` store. */function useWarning(){return useWarnStore(function(state){return state.warning;});}/** * Obtain the warning setter function from * the global app state. * @returns {function} The warning setter function * in the `useWarnStore` store. */function useSetWarning(){return useWarnStore(function(state){return state.setWarning;});}/** * Obtain the component view info value from * the global app state. * @returns {object} The view info object for the component * in the `useViewInfoStore` store. */function useComponentViewInfo(uuid){return useViewInfoStore(Object(react__WEBPACK_IMPORTED_MODULE_3__["useCallback"])(function(state){return state.viewInfo[uuid];},[uuid]));}/** * Obtain the component view info setter function from * the global app state. * @returns {function} The component view info setter function * in the `useViewInfoStore` store. */function useSetComponentViewInfo(uuid){var setViewInfoRef=Object(react__WEBPACK_IMPORTED_MODULE_3__["useRef"])(useViewInfoStore.getState().setComponentViewInfo);var setComponentViewInfo=function setComponentViewInfo(viewInfo){return setViewInfoRef.current(uuid,viewInfo);};return setComponentViewInfo;}/** * Obtain the grid resize count value * from the global app state. * @returns {number} The grid resize increment value. */function useGridResize(){return useGridSizeStore(function(state){return state.resizeCount;});}/** * Obtain the grid resize count increment function * from the global app state. * @returns {function} The grid resize count increment * function. */function useEmitGridResize(){return useGridSizeStore(function(state){return state.incrementResizeCount;});} /***/ }), /* 6 */, /* 7 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return fromEntries; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return range; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return pluralize; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return capitalize; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return getNextScope; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return getSourceFromLoader; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return isRgb; }); /* harmony import */ var _home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); /* harmony import */ var _home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4); /* eslint-disable no-plusplus */ // Adapted from https://github.com/feross/fromentries/blob/29b52a850bb3a47c390937631c2638edf3443942/index.js function fromEntries(iterable){return Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(iterable).reduce(function(obj,_ref){var key=_ref[0],val=_ref[1];return Object.assign(obj,Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])({},key,val));},{});}function range(length){return Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(Array(length).keys());}/** * Select between a singular and plural version of a word, * based on an item count. * @param {string} singular The singular version of the word. * @param {string} plural The plural version of the word. * @param {number} count The number of items. * @returns {string} Singular if count is one, else plural. */function pluralize(singular,plural,count){return count===1?singular:plural;}/** * Capitalize a the first letter of a string. * @param {string} word A string to capitalize. * @returns {string} The word parameter with the first letter capitalized. */function capitalize(word){return word.charAt(0).toUpperCase()+word.slice(1);}/** * Generate a new scope name which does not * conflict / overlap with a previous scope name. * Really these just need to be unique within the coordination object. * So in theory they could be String(Math.random()) or uuidv4() or something. * However it may be good to make them more human-readable and memorable * since eventually we will want to expose a UI to update the coordination. * @param {string[]} prevScopes Previous scope names. * @returns {string} The new scope name. */function getNextScope(prevScopes){// Keep an ordered list of valid characters. var chars='ABCDEFGHIJKLMNOPQRSTUVWXYZ';// Store the value of the next character for each position // in the new string. // For example, [0] -> "A", [1] -> "B", [0, 1] -> "AB" var nextCharIndices=[0];// Generate a new scope name, // potentially conflicting with an existing name. // Reference: https://stackoverflow.com/a/12504061 function next(){var r=[];nextCharIndices.forEach(function(charIndex){r.unshift(chars[charIndex]);});var increment=true;for(var i=0;i<nextCharIndices.length;i++){var val=++nextCharIndices[i];if(val>=chars.length){nextCharIndices[i]=0;}else{increment=false;break;}}if(increment){nextCharIndices.push(0);}return r.join('');}var nextScope;do{nextScope=next();}while(prevScopes.includes(nextScope));return nextScope;}/** * Get a representative PixelSource from a loader object returned from * the Vitessce imaging loaders * @param {object} loader { data: (PixelSource[]|PixelSource), metadata, channels } object * @param {number=} level Level of the multiscale loader from which to get a PixelSource * @returns {object} PixelSource object */function getSourceFromLoader(loader,level){var data=loader.data;var source=Array.isArray(data)?data[level||data.length-1]:data;return source;}/* * Helper method to determine whether pixel data is interleaved and rgb or not. * @param {object} loader */function isRgb(loader){var source=getSourceFromLoader(loader);var shape=source.shape,dtype=source.dtype,labels=source.labels;var channelSize=shape[labels.indexOf('c')];return channelSize===3&&dtype==='Uint8';} /***/ }), /* 8 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _classCallCheck; }); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /***/ }), /* 9 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return TILE_SIZE; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return MIN_ROW_AGG; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return MAX_ROW_AGG; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return COLOR_BAR_SIZE; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return AXIS_LABEL_TEXT_SIZE; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return AXIS_TITLE_TEXT_SIZE; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return AXIS_MIN_SIZE; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return AXIS_MAX_SIZE; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return AXIS_MARGIN; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return THEME_TO_TEXT_COLOR; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AXIS_FONT_FAMILY; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return PIXELATED_TEXTURE_PARAMETERS; }); /* harmony import */ var _home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); /* harmony import */ var _luma_gl_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12); /* harmony import */ var _luma_gl_constants__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_luma_gl_constants__WEBPACK_IMPORTED_MODULE_1__); var _PIXELATED_TEXTURE_PA;// eslint-disable-line import/no-extraneous-dependencies var TILE_SIZE=2048;var MIN_ROW_AGG=1;var MAX_ROW_AGG=16;var COLOR_BAR_SIZE=20;var AXIS_LABEL_TEXT_SIZE=9;var AXIS_TITLE_TEXT_SIZE=15;var AXIS_MIN_SIZE=10;var AXIS_MAX_SIZE=90;var AXIS_MARGIN=3;var THEME_TO_TEXT_COLOR={dark:[224,224,224],light:[64,64,64]};var AXIS_FONT_FAMILY="-apple-system, 'Helvetica Neue', Arial, sans-serif";var PIXELATED_TEXTURE_PARAMETERS=(_PIXELATED_TEXTURE_PA={},Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_PIXELATED_TEXTURE_PA,_luma_gl_constants__WEBPACK_IMPORTED_MODULE_1___default.a.TEXTURE_MIN_FILTER,_luma_gl_constants__WEBPACK_IMPORTED_MODULE_1___default.a.NEAREST),Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_PIXELATED_TEXTURE_PA,_luma_gl_constants__WEBPACK_IMPORTED_MODULE_1___default.a.TEXTURE_MAG_FILTER,_luma_gl_constants__WEBPACK_IMPORTED_MODULE_1___default.a.NEAREST),Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_PIXELATED_TEXTURE_PA,_luma_gl_constants__WEBPACK_IMPORTED_MODULE_1___default.a.TEXTURE_WRAP_S,_luma_gl_constants__WEBPACK_IMPORTED_MODULE_1___default.a.CLAMP_TO_EDGE),Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_PIXELATED_TEXTURE_PA,_luma_gl_constants__WEBPACK_IMPORTED_MODULE_1___default.a.TEXTURE_WRAP_T,_luma_gl_constants__WEBPACK_IMPORTED_MODULE_1___default.a.CLAMP_TO_EDGE),_PIXELATED_TEXTURE_PA); /***/ }), /* 10 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _createClass; }); function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } /***/ }), /* 11 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* unused harmony export makeCellStatusMessage */ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return cellLayerDefaultProps; }); /* unused harmony export DEFAULT_DARK_COLOR */ /* unused harmony export DEFAULT_LIGHT_COLOR */ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "n", function() { return getDefaultColor; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return PALETTE; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return VIEWER_PALETTE; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return COLORMAP_OPTIONS; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return DEFAULT_GL_OPTIONS; }); /* unused harmony export createDefaultUpdateStatus */ /* unused harmony export createDefaultUpdateCellsSelection */ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return createDefaultUpdateCellsHover; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return createDefaultUpdateGenesHover; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return createDefaultUpdateViewInfo; }); /* unused harmony export createDefaultClearPleaseWait */ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return copyUint8Array; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "o", function() { return getNextNumberedNodeName; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "r", function() { return setCellSelection; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "q", function() { return mergeCellSets; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return createWarningComponent; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return asEsModule; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "m", function() { return formatBytes; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "p", function() { return getStatsForResolution; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return canLoadResolution; }); /* harmony import */ var _home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4); /* harmony import */ var _home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20); /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _sets_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(17); /* harmony import */ var _classNames__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(29); // eslint-disable-line import/no-extraneous-dependencies function makeCellStatusMessage(cellInfoFactors){return Object.entries(cellInfoFactors).map(function(_ref){var _ref2=Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_ref,2),factor=_ref2[0],value=_ref2[1];return"".concat(factor,": ").concat(value);}).join('; ');}function cellLayerDefaultProps(cells,updateStatus,setCellHighlight,setComponentHover){return{coordinateSystem:_deck_gl_core__WEBPACK_IMPORTED_MODULE_3__["COORDINATE_SYSTEM"].CARTESIAN,data:cells,pickable:true,autoHighlight:true,stroked:true,filled:true,getElevation:0,onHover:function onHover(info){// Notify the parent component that its child component is // the "hover source". if(setComponentHover){setComponentHover();}if(info.object){var _info$object=Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(info.object,2),cellId=_info$object[0],cellInfo=_info$object[1];var _cellInfo$factors=cellInfo.factors,factors=_cellInfo$factors===void 0?{}:_cellInfo$factors;if(updateStatus){updateStatus(makeCellStatusMessage(factors));}if(setCellHighlight){setCellHighlight(cellId);}}else if(setCellHighlight){// Clear the currently-hovered cell info by passing null. setCellHighlight('');}}};}var DEFAULT_DARK_COLOR=[50,50,50];var DEFAULT_LIGHT_COLOR=[200,200,200];function getDefaultColor(theme){return theme==='dark'?DEFAULT_DARK_COLOR:DEFAULT_LIGHT_COLOR;}// From https://personal.sron.nl/~pault/#sec:qualitative var PALETTE=[[68,119,170],[136,204,238],[68,170,153],[17,119,51],[153,153,51],[221,204,119],[204,102,119],[136,34,85],[170,68,153]];var VIEWER_PALETTE=[[0,0,255],[0,255,0],[255,0,255],[255,255,0],[0,255,255],[255,255,255],[255,128,0],[255,0,0]];var COLORMAP_OPTIONS=['viridis','greys','magma','jet','hot','bone','copper','summer','density','inferno'];var DEFAULT_GL_OPTIONS={webgl2:true};function createDefaultUpdateStatus(componentName){return function(message){return console.warn("".concat(componentName," updateStatus: ").concat(message));};}function createDefaultUpdateCellsSelection(componentName){return function(cellsSelection){return console.warn("".concat(componentName," updateCellsSelection: ").concat(cellsSelection));};}function createDefaultUpdateCellsHover(componentName){return function(hoverInfo){return console.warn("".concat(componentName," updateCellsHover: ").concat(hoverInfo.cellId));};}function createDefaultUpdateGenesHover(componentName){return function(hoverInfo){return console.warn("".concat(componentName," updateGenesHover: ").concat(hoverInfo.geneId));};}function createDefaultUpdateViewInfo(componentName){return function(viewInfo){return console.warn("".concat(componentName," updateViewInfo: ").concat(viewInfo));};}function createDefaultClearPleaseWait(){return function(){};}/** * Copy a typed array into a new array buffer. * @param {Uint8Array} arr The typed array to be copied. * @returns {Uint8Array} The copied array. */function copyUint8Array(arr){var newBuffer=new ArrayBuffer(arr.buffer.byteLength);var newArr=new Uint8Array(newBuffer);newArr.set(arr);return newArr;}function getNextNumberedNodeName(nodes,prefix){var i=1;if(nodes){// eslint-disable-next-line no-loop-func while(nodes.find(function(n){return n.name==="".concat(prefix).concat(i);})){// eslint-disable-next-line no-plusplus i++;}}return"".concat(prefix).concat(i);}/** * Create a new selected cell set based on a cell selection. * @param {string[]} cellSelection An array of cell IDs. * @param {object[]} additionalCellSets The previous array of user-defined cell sets. * @param {function} setCellSetSelection The setter function for cell set selections. * @param {function} setAdditionalCellSets The setter function for user-defined cell sets. */function setCellSelection(cellSelection,additionalCellSets,cellSetColor,setCellSetSelection,setAdditionalCellSets,setCellSetColor,setCellColorEncoding){var prefix=arguments.length>7&&arguments[7]!==undefined?arguments[7]:'Selection ';var CELL_SELECTIONS_LEVEL_ZERO_NAME='My Selections';var selectionsLevelZeroNode=additionalCellSets===null||additionalCellSets===void 0?void 0:additionalCellSets.tree.find(function(n){return n.name===CELL_SELECTIONS_LEVEL_ZERO_NAME;});var nextAdditionalCellSets={version:_sets_constants__WEBPACK_IMPORTED_MODULE_4__[/* HIERARCHICAL_SCHEMAS */ "c"][_sets_constants__WEBPACK_IMPORTED_MODULE_4__[/* SETS_DATATYPE_CELL */ "h"]].latestVersion,datatype:_sets_constants__WEBPACK_IMPORTED_MODULE_4__[/* SETS_DATATYPE_CELL */ "h"],tree:Object(_home_runner_work_vitessce_vitessce_node_modules_babel_preset_react_app_node_modules_babel_runtime