import type { ArrayShape, Dataset, DType, Primitive, ScalarShape, } from '@h5web/shared'; import { assertArray } from '@h5web/shared'; import { AxiosError } from 'axios'; import { isString } from 'lodash'; import ndarray from 'ndarray'; import { applyMapping } from '../vis-packs/core/utils'; export const CANCELLED_ERROR_MSG = 'Request cancelled'; export function flattenValue( value: unknown, dataset: Dataset, selection?: string ): unknown[] { assertArray(value); const slicedDims = selection?.split(',').filter((s) => s.includes(':')); const dims = slicedDims || dataset.shape; return value.flat(dims.length - 1); } export async function handleAxiosError( func: () => Promise, getErrorToThrow: (status: number, errorData: unknown) => string | undefined ): Promise { try { return await func(); } catch (error) { if (error instanceof AxiosError && error.response) { const { status, data } = error.response; const errorToThrow = getErrorToThrow(status, data); if (errorToThrow) { throw new Error(errorToThrow); } } throw error; } } export function getNameFromPath(path: string) { const segments = path.split('/'); return segments[segments.length - 1]; } export function getFileNameFromFilePath(path: string) { // const segments = path.split('.'); return 'aaaa'; // return segments[0]; } // export function getFileNameFromFilePath(path:string[],ext:string[]){ // var storNameFrompath = [] // for (var i = 0;i( value: unknown, dataset: Dataset, selection: string ): Primitive[] { const { shape, type } = dataset; const dataArray = ndarray(value as Primitive[], shape); const mappedArray = applyMapping( dataArray, selection.split(',').map((s) => (s === ':' ? s : Number.parseInt(s, 10))) ); return mappedArray.data; }