@vitessce/vit-s 2.0.3 → 3.0.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 (216) hide show
  1. package/dist/index.js +41348 -0
  2. package/dist-tsc/CallbackPublisher.d.ts +18 -0
  3. package/dist-tsc/CallbackPublisher.d.ts.map +1 -0
  4. package/dist-tsc/CallbackPublisher.js +62 -0
  5. package/dist-tsc/LoadingIndicator.d.ts +2 -0
  6. package/dist-tsc/LoadingIndicator.d.ts.map +1 -0
  7. package/dist-tsc/LoadingIndicator.js +26 -0
  8. package/dist-tsc/TitleInfo.d.ts +2 -0
  9. package/dist-tsc/TitleInfo.d.ts.map +1 -0
  10. package/dist-tsc/TitleInfo.js +74 -0
  11. package/dist-tsc/VitS.d.ts +45 -0
  12. package/dist-tsc/VitS.d.ts.map +1 -0
  13. package/dist-tsc/VitS.js +119 -0
  14. package/dist-tsc/VitessceGrid.d.ts +23 -0
  15. package/dist-tsc/VitessceGrid.d.ts.map +1 -0
  16. package/dist-tsc/VitessceGrid.js +60 -0
  17. package/dist-tsc/VitessceGrid.test.d.ts +2 -0
  18. package/dist-tsc/VitessceGrid.test.d.ts.map +1 -0
  19. package/dist-tsc/VitessceGrid.test.js +40 -0
  20. package/dist-tsc/Warning.d.ts +2 -0
  21. package/dist-tsc/Warning.d.ts.map +1 -0
  22. package/dist-tsc/Warning.js +45 -0
  23. package/dist-tsc/classNames.d.ts +8 -0
  24. package/dist-tsc/classNames.d.ts.map +1 -0
  25. package/dist-tsc/classNames.js +8 -0
  26. package/dist-tsc/data/AbstractLoader.d.ts +22 -0
  27. package/dist-tsc/data/AbstractLoader.d.ts.map +1 -0
  28. package/dist-tsc/data/AbstractLoader.js +18 -0
  29. package/dist-tsc/data/AbstractTwoStepLoader.d.ts +6 -0
  30. package/dist-tsc/data/AbstractTwoStepLoader.d.ts.map +1 -0
  31. package/dist-tsc/data/AbstractTwoStepLoader.js +7 -0
  32. package/dist-tsc/data/LoaderResult.d.ts +7 -0
  33. package/dist-tsc/data/LoaderResult.d.ts.map +1 -0
  34. package/dist-tsc/data/LoaderResult.js +7 -0
  35. package/dist-tsc/data/index.d.ts +4 -0
  36. package/dist-tsc/data/index.d.ts.map +1 -0
  37. package/dist-tsc/data/index.js +3 -0
  38. package/dist-tsc/data/loader-registry.d.ts +9 -0
  39. package/dist-tsc/data/loader-registry.d.ts.map +1 -0
  40. package/dist-tsc/data/loader-registry.js +27 -0
  41. package/dist-tsc/data-hook-utils.d.ts +69 -0
  42. package/dist-tsc/data-hook-utils.d.ts.map +1 -0
  43. package/dist-tsc/data-hook-utils.js +173 -0
  44. package/dist-tsc/data-hooks.d.ts +77 -0
  45. package/dist-tsc/data-hooks.d.ts.map +1 -0
  46. package/dist-tsc/data-hooks.js +241 -0
  47. package/dist-tsc/errors/AbstractLoaderError.d.ts +10 -0
  48. package/dist-tsc/errors/AbstractLoaderError.d.ts.map +1 -0
  49. package/dist-tsc/errors/AbstractLoaderError.js +13 -0
  50. package/dist-tsc/errors/DataSourceFetchError.d.ts +8 -0
  51. package/dist-tsc/errors/DataSourceFetchError.d.ts.map +1 -0
  52. package/dist-tsc/errors/DataSourceFetchError.js +13 -0
  53. package/dist-tsc/errors/DatasetNotFoundError.d.ts +6 -0
  54. package/dist-tsc/errors/DatasetNotFoundError.d.ts.map +1 -0
  55. package/dist-tsc/errors/DatasetNotFoundError.js +17 -0
  56. package/dist-tsc/errors/LoaderNotFoundError.d.ts +10 -0
  57. package/dist-tsc/errors/LoaderNotFoundError.d.ts.map +1 -0
  58. package/dist-tsc/errors/LoaderNotFoundError.js +17 -0
  59. package/dist-tsc/errors/LoaderValidationError.d.ts +10 -0
  60. package/dist-tsc/errors/LoaderValidationError.d.ts.map +1 -0
  61. package/dist-tsc/errors/LoaderValidationError.js +15 -0
  62. package/dist-tsc/errors/index.d.ts +6 -0
  63. package/dist-tsc/errors/index.d.ts.map +1 -0
  64. package/dist-tsc/errors/index.js +5 -0
  65. package/dist-tsc/hooks.d.ts +80 -0
  66. package/dist-tsc/hooks.d.ts.map +1 -0
  67. package/dist-tsc/hooks.js +271 -0
  68. package/dist-tsc/index.d.ts +11 -0
  69. package/dist-tsc/index.d.ts.map +1 -0
  70. package/dist-tsc/index.js +10 -17
  71. package/dist-tsc/plugins.test.fixtures.d.ts +61 -0
  72. package/dist-tsc/plugins.test.fixtures.d.ts.map +1 -0
  73. package/dist-tsc/plugins.test.fixtures.js +76 -0
  74. package/dist-tsc/schemas/config-0.1.0.schema.json +84 -0
  75. package/dist-tsc/schemas/config-1.0.0.schema.json +733 -0
  76. package/dist-tsc/schemas/config-1.0.1.schema.json +909 -0
  77. package/dist-tsc/schemas/config-1.0.10.schema.json +969 -0
  78. package/dist-tsc/schemas/config-1.0.11.schema.json +990 -0
  79. package/dist-tsc/schemas/config-1.0.12.schema.json +997 -0
  80. package/dist-tsc/schemas/config-1.0.13.schema.json +1013 -0
  81. package/dist-tsc/schemas/config-1.0.14.schema.json +1048 -0
  82. package/dist-tsc/schemas/config-1.0.15.schema.json +1048 -0
  83. package/dist-tsc/schemas/config-1.0.16.schema.json +1089 -0
  84. package/dist-tsc/schemas/config-1.0.2.schema.json +910 -0
  85. package/dist-tsc/schemas/config-1.0.3.schema.json +910 -0
  86. package/dist-tsc/schemas/config-1.0.4.schema.json +949 -0
  87. package/dist-tsc/schemas/config-1.0.5.schema.json +949 -0
  88. package/dist-tsc/schemas/config-1.0.6.schema.json +949 -0
  89. package/dist-tsc/schemas/config-1.0.7.schema.json +949 -0
  90. package/dist-tsc/schemas/config-1.0.8.schema.json +965 -0
  91. package/dist-tsc/schemas/config-1.0.9.schema.json +965 -0
  92. package/dist-tsc/schemas/obsSets.schema.d.ts +179 -0
  93. package/dist-tsc/schemas/obsSets.schema.d.ts.map +1 -0
  94. package/dist-tsc/schemas/obsSets.schema.js +195 -0
  95. package/dist-tsc/schemas/obsSetsTabular.schema.d.ts +57 -0
  96. package/dist-tsc/schemas/obsSetsTabular.schema.d.ts.map +1 -0
  97. package/dist-tsc/schemas/obsSetsTabular.schema.js +38 -0
  98. package/dist-tsc/schemas/raster.schema.d.ts +239 -0
  99. package/dist-tsc/schemas/raster.schema.d.ts.map +1 -0
  100. package/dist-tsc/schemas/raster.schema.js +120 -0
  101. package/dist-tsc/shared-mui/components.d.ts +2 -0
  102. package/dist-tsc/shared-mui/components.d.ts.map +1 -0
  103. package/dist-tsc/shared-mui/components.js +29 -0
  104. package/dist-tsc/shared-mui/container.d.ts +2 -0
  105. package/dist-tsc/shared-mui/container.d.ts.map +1 -0
  106. package/dist-tsc/shared-mui/container.js +211 -0
  107. package/dist-tsc/shared-mui/styles.d.ts +5 -0
  108. package/dist-tsc/shared-mui/styles.d.ts.map +1 -0
  109. package/dist-tsc/shared-mui/styles.js +109 -0
  110. package/dist-tsc/shared-plot-options/CellColorEncodingOption.d.ts +2 -0
  111. package/dist-tsc/shared-plot-options/CellColorEncodingOption.d.ts.map +1 -0
  112. package/dist-tsc/shared-plot-options/CellColorEncodingOption.js +17 -0
  113. package/dist-tsc/shared-plot-options/OptionSelect.d.ts +2 -0
  114. package/dist-tsc/shared-plot-options/OptionSelect.d.ts.map +1 -0
  115. package/dist-tsc/shared-plot-options/OptionSelect.js +12 -0
  116. package/dist-tsc/shared-plot-options/OptionsContainer.d.ts +2 -0
  117. package/dist-tsc/shared-plot-options/OptionsContainer.d.ts.map +1 -0
  118. package/dist-tsc/shared-plot-options/OptionsContainer.js +9 -0
  119. package/dist-tsc/shared-plot-options/index.d.ts +5 -0
  120. package/dist-tsc/shared-plot-options/index.d.ts.map +1 -0
  121. package/dist-tsc/shared-plot-options/index.js +4 -0
  122. package/dist-tsc/shared-plot-options/styles.d.ts +2 -0
  123. package/dist-tsc/shared-plot-options/styles.d.ts.map +1 -0
  124. package/dist-tsc/shared-plot-options/styles.js +48 -0
  125. package/dist-tsc/state/hooks.d.ts +216 -0
  126. package/dist-tsc/state/hooks.d.ts.map +1 -0
  127. package/dist-tsc/state/hooks.js +575 -0
  128. package/dist-tsc/title-styles.d.ts +2 -0
  129. package/dist-tsc/title-styles.d.ts.map +1 -0
  130. package/dist-tsc/title-styles.js +72 -0
  131. package/dist-tsc/view-config-utils.d.ts +30 -0
  132. package/dist-tsc/view-config-utils.d.ts.map +1 -0
  133. package/dist-tsc/view-config-utils.js +234 -0
  134. package/dist-tsc/view-config-utils.test.d.ts +2 -0
  135. package/dist-tsc/view-config-utils.test.d.ts.map +1 -0
  136. package/dist-tsc/view-config-utils.test.fixtures.d.ts +1049 -0
  137. package/dist-tsc/view-config-utils.test.fixtures.d.ts.map +1 -0
  138. package/dist-tsc/view-config-utils.test.fixtures.js +883 -0
  139. package/dist-tsc/view-config-utils.test.js +209 -0
  140. package/dist-tsc/vitessce-grid-layout/VitessceGridLayout.d.ts +8 -0
  141. package/dist-tsc/vitessce-grid-layout/VitessceGridLayout.d.ts.map +1 -0
  142. package/dist-tsc/vitessce-grid-layout/VitessceGridLayout.js +114 -0
  143. package/dist-tsc/vitessce-grid-layout/VitessceGridLayout.test.d.ts +2 -0
  144. package/dist-tsc/vitessce-grid-layout/VitessceGridLayout.test.d.ts.map +1 -0
  145. package/dist-tsc/vitessce-grid-layout/VitessceGridLayout.test.js +48 -0
  146. package/dist-tsc/vitessce-grid-layout/index.d.ts +2 -0
  147. package/dist-tsc/vitessce-grid-layout/index.d.ts.map +1 -0
  148. package/dist-tsc/vitessce-grid-layout/index.js +1 -0
  149. package/dist-tsc/vitessce-grid-layout/layout-utils.d.ts +15 -0
  150. package/dist-tsc/vitessce-grid-layout/layout-utils.d.ts.map +1 -0
  151. package/dist-tsc/vitessce-grid-layout/layout-utils.js +61 -0
  152. package/dist-tsc/vitessce-grid-layout/layout-utils.test.d.ts +2 -0
  153. package/dist-tsc/vitessce-grid-layout/layout-utils.test.d.ts.map +1 -0
  154. package/dist-tsc/vitessce-grid-layout/layout-utils.test.js +148 -0
  155. package/dist-tsc/vitessce-grid-utils.d.ts +13 -0
  156. package/dist-tsc/vitessce-grid-utils.d.ts.map +1 -0
  157. package/dist-tsc/vitessce-grid-utils.js +141 -0
  158. package/package.json +23 -10
  159. package/src/CallbackPublisher.js +7 -11
  160. package/src/LoadingIndicator.js +1 -2
  161. package/src/TitleInfo.js +12 -85
  162. package/src/VitS.js +72 -50
  163. package/src/VitessceGrid.js +21 -13
  164. package/src/VitessceGrid.test.jsx +16 -7
  165. package/src/Warning.js +2 -2
  166. package/src/data/AbstractLoader.js +2 -25
  167. package/src/data/AbstractTwoStepLoader.js +1 -1
  168. package/src/data/index.js +3 -3
  169. package/src/data/loader-registry.js +22 -13
  170. package/src/data-hook-utils.js +4 -6
  171. package/src/data-hooks.js +4 -4
  172. package/src/errors/DataSourceFetchError.js +1 -1
  173. package/src/errors/DatasetNotFoundError.js +1 -1
  174. package/src/errors/LoaderNotFoundError.js +1 -1
  175. package/src/errors/LoaderValidationError.js +1 -1
  176. package/src/errors/index.js +5 -6
  177. package/src/hooks.js +70 -5
  178. package/src/index.js +21 -46
  179. package/src/schemas/config-1.0.16.schema.json +21 -1
  180. package/src/shared-mui/components.js +10 -8
  181. package/src/shared-mui/container.js +1 -1
  182. package/src/shared-mui/styles.js +5 -2
  183. package/src/shared-plot-options/CellColorEncodingOption.js +3 -4
  184. package/src/shared-plot-options/OptionSelect.js +2 -2
  185. package/src/shared-plot-options/OptionsContainer.js +2 -5
  186. package/src/shared-plot-options/index.js +4 -4
  187. package/src/shared-plot-options/styles.js +1 -1
  188. package/src/state/hooks.js +10 -3
  189. package/src/title-styles.js +73 -0
  190. package/src/view-config-utils.js +46 -98
  191. package/src/view-config-utils.test.jsx +222 -0
  192. package/src/vitessce-grid-layout/VitessceGridLayout.js +51 -30
  193. package/src/vitessce-grid-layout/VitessceGridLayout.test.jsx +17 -9
  194. package/src/vitessce-grid-layout/index.js +1 -1
  195. package/src/vitessce-grid-layout/layout-utils.js +1 -1
  196. package/src/vitessce-grid-layout/layout-utils.test.js +1 -1
  197. package/src/vitessce-grid-utils.js +27 -15
  198. package/dist/index.mjs +0 -84801
  199. package/src/component-registry.js +0 -21
  200. package/src/errors/OptionsValidationError.js +0 -25
  201. package/src/file-options-schemas-legacy.js +0 -139
  202. package/src/file-options-schemas-legacy.test.js +0 -138
  203. package/src/file-options-schemas.js +0 -327
  204. package/src/file-options-schemas.test.js +0 -26
  205. package/src/joint-file-types-legacy.js +0 -298
  206. package/src/joint-file-types-legacy.test.js +0 -412
  207. package/src/joint-file-types.js +0 -171
  208. package/src/joint-file-types.test.js +0 -144
  209. package/src/json-schemas.js +0 -9
  210. package/src/plugins.js +0 -186
  211. package/src/plugins.test.js +0 -42
  212. package/src/schemas/config-1.0.16.schema.test.js +0 -32
  213. package/src/schemas/schema.test-old.js +0 -49
  214. package/src/view-config-upgraders.js +0 -628
  215. package/src/view-config-utils.test.js +0 -95
  216. package/src/view-config-versions.js +0 -68
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractLoaderError.d.ts","sourceRoot":"","sources":["../../src/errors/AbstractLoaderError.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH;IACE,0BAEC;IADC,aAAsB;IAIxB,sBAEC;CACF"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * A loader error ancestor class containing a default constructor
3
+ * and a stub for the required warnInConsole() method.
4
+ */
5
+ export default class AbstractLoaderError {
6
+ constructor(message) {
7
+ this.message = message;
8
+ }
9
+ // eslint-disable-next-line class-methods-use-this
10
+ warnInConsole() {
11
+ throw new Error('The warnInConsole() method has not been implemented.');
12
+ }
13
+ }
@@ -0,0 +1,8 @@
1
+ export default class DataSourceFetchError extends AbstractLoaderError {
2
+ constructor(source: any, url: any, headers: any);
3
+ source: any;
4
+ url: any;
5
+ headers: any;
6
+ }
7
+ import AbstractLoaderError from "./AbstractLoaderError.js";
8
+ //# sourceMappingURL=DataSourceFetchError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataSourceFetchError.d.ts","sourceRoot":"","sources":["../../src/errors/DataSourceFetchError.js"],"names":[],"mappings":"AAEA;IACE,iDAKC;IAHC,YAAoB;IACpB,SAAc;IACd,aAAsB;CAOzB"}
@@ -0,0 +1,13 @@
1
+ import AbstractLoaderError from './AbstractLoaderError.js';
2
+ export default class DataSourceFetchError extends AbstractLoaderError {
3
+ constructor(source, url, headers) {
4
+ super(`${source} Error HTTP Status fetching from ${url}`);
5
+ this.source = source;
6
+ this.url = url;
7
+ this.headers = headers;
8
+ }
9
+ warnInConsole() {
10
+ const { source, url, headers } = this;
11
+ console.warn(`${source} failed to fetch from ${url} with headers ${headers}`);
12
+ }
13
+ }
@@ -0,0 +1,6 @@
1
+ export default class DatasetNotFoundError extends AbstractLoaderError {
2
+ name: string;
3
+ datasetUid: any;
4
+ }
5
+ import AbstractLoaderError from "./AbstractLoaderError.js";
6
+ //# sourceMappingURL=DatasetNotFoundError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatasetNotFoundError.d.ts","sourceRoot":"","sources":["../../src/errors/DatasetNotFoundError.js"],"names":[],"mappings":"AAEA;IAGI,aAAkC;IAElC,gBAA4B;CAe/B"}
@@ -0,0 +1,17 @@
1
+ import AbstractLoaderError from './AbstractLoaderError.js';
2
+ export default class DatasetNotFoundError extends AbstractLoaderError {
3
+ constructor(datasetUid) {
4
+ super(`Error finding dataset for ${datasetUid}. Please check that at least one dataset exists in the view config.`);
5
+ this.name = 'DatasetNotFoundError';
6
+ this.datasetUid = datasetUid;
7
+ }
8
+ warnInConsole() {
9
+ const { datasetUid, } = this;
10
+ if (datasetUid) {
11
+ console.warn(`Unable to find dataset for ${datasetUid}`);
12
+ }
13
+ else {
14
+ console.warn('No dataset uid specified.');
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,10 @@
1
+ export default class LoaderNotFoundError extends AbstractLoaderError {
2
+ constructor(loaders: any, dataset: any, fileType: any, viewCoordinationValues: any);
3
+ name: string;
4
+ loaders: any;
5
+ dataset: any;
6
+ fileType: any;
7
+ viewCoordinationValues: any;
8
+ }
9
+ import AbstractLoaderError from "./AbstractLoaderError.js";
10
+ //# sourceMappingURL=LoaderNotFoundError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoaderNotFoundError.d.ts","sourceRoot":"","sources":["../../src/errors/LoaderNotFoundError.js"],"names":[],"mappings":"AAEA;IACE,oFAQC;IANC,aAAiC;IAEjC,aAAsB;IACtB,aAAsB;IACtB,cAAwB;IACxB,4BAAoD;CAavD"}
@@ -0,0 +1,17 @@
1
+ import AbstractLoaderError from './AbstractLoaderError.js';
2
+ export default class LoaderNotFoundError extends AbstractLoaderError {
3
+ constructor(loaders, dataset, fileType, viewCoordinationValues) {
4
+ super(`Error: unable to find matching ${fileType} file in dataset ${dataset}.`);
5
+ this.name = 'LoaderNotFoundError';
6
+ this.loaders = loaders;
7
+ this.dataset = dataset;
8
+ this.fileType = fileType;
9
+ this.viewCoordinationValues = viewCoordinationValues;
10
+ }
11
+ warnInConsole() {
12
+ const { loaders, viewCoordinationValues, } = this;
13
+ console.warn(
14
+ // eslint-disable-next-line prefer-template
15
+ `Expected to match on { ${Object.entries(viewCoordinationValues).map(([k, v]) => k + ': ' + v).join(', ')} }`, loaders);
16
+ }
17
+ }
@@ -0,0 +1,10 @@
1
+ export default class LoaderValidationError extends AbstractLoaderError {
2
+ constructor(datasetType: any, datasetFileType: any, datasetUrl: any, reason: any);
3
+ name: string;
4
+ datasetType: any;
5
+ datasetFileType: any;
6
+ datasetUrl: any;
7
+ reason: any;
8
+ }
9
+ import AbstractLoaderError from "./AbstractLoaderError.js";
10
+ //# sourceMappingURL=LoaderValidationError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoaderValidationError.d.ts","sourceRoot":"","sources":["../../src/errors/LoaderValidationError.js"],"names":[],"mappings":"AAEA;IACE,kFAQC;IANC,aAAmC;IAEnC,iBAA8B;IAC9B,qBAAsC;IACtC,gBAA4B;IAC5B,YAAoB;CAYvB"}
@@ -0,0 +1,15 @@
1
+ import AbstractLoaderError from './AbstractLoaderError.js';
2
+ export default class LoaderValidationError extends AbstractLoaderError {
3
+ constructor(datasetType, datasetFileType, datasetUrl, reason) {
4
+ super(`Error while validating ${datasetType}.`);
5
+ this.name = 'LoaderValidationError';
6
+ this.datasetType = datasetType;
7
+ this.datasetFileType = datasetFileType;
8
+ this.datasetUrl = datasetUrl;
9
+ this.reason = reason;
10
+ }
11
+ warnInConsole() {
12
+ const { datasetType, datasetUrl, reason, } = this;
13
+ console.warn(`${datasetType} from ${datasetUrl}: validation failed`, JSON.stringify(reason, null, 2));
14
+ }
15
+ }
@@ -0,0 +1,6 @@
1
+ export { default as AbstractLoaderError } from "./AbstractLoaderError.js";
2
+ export { default as LoaderValidationError } from "./LoaderValidationError.js";
3
+ export { default as LoaderNotFoundError } from "./LoaderNotFoundError.js";
4
+ export { default as DatasetNotFoundError } from "./DatasetNotFoundError.js";
5
+ export { default as DataSourceFetchError } from "./DataSourceFetchError.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.js"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export { default as AbstractLoaderError } from './AbstractLoaderError.js';
2
+ export { default as LoaderValidationError } from './LoaderValidationError.js';
3
+ export { default as LoaderNotFoundError } from './LoaderNotFoundError.js';
4
+ export { default as DatasetNotFoundError } from './DatasetNotFoundError.js';
5
+ export { default as DataSourceFetchError } from './DataSourceFetchError.js';
@@ -0,0 +1,80 @@
1
+ export function useVitessceContainer(ref: any): any;
2
+ /**
3
+ * Custom hook, gets the full window dimensions.
4
+ * @returns {array} `[width, height]` where width and height
5
+ * are numbers.
6
+ */
7
+ export function useWindowDimensions(): array;
8
+ /**
9
+ * Custom hook, subscribes to GRID_RESIZE and window resize events.
10
+ * @returns {array} `[width, height, containerRef]` where width and height
11
+ * are numbers and containerRef is a React ref.
12
+ */
13
+ export function useGridItemSize(): array;
14
+ /**
15
+ * Custom hook, subscribes to GRID_RESIZE and window resize events.
16
+ * @returns {array} `[width, height, deckRef]` where width and height
17
+ * are numbers and deckRef is a React ref to be used with
18
+ * a <DeckGL/> element (or a forwardRef to one).
19
+ */
20
+ export function useDeckCanvasSize(): array;
21
+ /**
22
+ * This hook handles a boolean isReady value,
23
+ * which only returns true once every item in the
24
+ * input list has been marked as "ready".
25
+ * @param {string[]} statusValues The items to wait on.
26
+ * @returns {boolean} Whether the status values are all success.
27
+ */
28
+ export function useReady(statusValues: string[]): boolean;
29
+ /**
30
+ * This hook helps manage a list of URLs.
31
+ * @param {object} loaders The loaders dependency.
32
+ * @param {string} dataset The dataset UID dependency.
33
+ * @returns {array} An array
34
+ * [urls, addUrl]
35
+ * where urls is the array of URL objects,
36
+ * and addUrl is a function for adding a URL to the array.
37
+ */
38
+ export function useUrls(loaders: object, dataset: string): array;
39
+ /**
40
+ * Custom hook, subscribes to the width and height of the closest .vitessce-container
41
+ * element and updates upon window resize events.
42
+ * @param {Ref} ref A React ref object within the `.vitessce-container`.
43
+ * @returns {array} `[width, height]` where width and height
44
+ * are numbers.
45
+ */
46
+ export function useClosestVitessceContainerSize(ref: Ref): array;
47
+ /**
48
+ * Normalize an obsFeatureMatrix to a Uint8Array.
49
+ * @param {object} params
50
+ * @param {object} params.obsFeatureMatrix The obsFeatureMatrix
51
+ * returned by the useObsFeatureMatrix hook.
52
+ * @returns {array} A tuple [obsFeatureMatrix, dataExtent]
53
+ * where obsFeatureMatrix
54
+ * is a Uint8Array with the same shape as
55
+ * params.obsFeatureMatrix.data, and dataExtent is the
56
+ * [min, max] of the original data.
57
+ */
58
+ export function useUint8ObsFeatureMatrix({ obsFeatureMatrix }: {
59
+ obsFeatureMatrix: object;
60
+ }): array;
61
+ /**
62
+ * Normalize a feature selection (data for selected
63
+ * columns of an obsFeatureMatrix) to a Uint8Array.
64
+ * @param {array|null} expressionData The expressionData
65
+ * returned by the useFeatureSelection hook,
66
+ * where each element corresponds to an
67
+ * array of values for a selected feature.
68
+ * @returns {array} A tuple [normData, extents] where
69
+ * normData is an array of Uint8Arrays (or null), and extents is
70
+ * an array of [min, max] values for each feature (or null).
71
+ */
72
+ export function useUint8FeatureSelection(expressionData: array | null): array;
73
+ export function useExpressionValueGetter({ instanceObsIndex, matrixObsIndex, expressionData }: {
74
+ instanceObsIndex: any;
75
+ matrixObsIndex: any;
76
+ expressionData: any;
77
+ }): any;
78
+ export function useGetObsMembership(obsSetsMembership: any): any;
79
+ export function useGetObsInfo(obsType: any, obsLabelsTypes: any, obsLabelsData: any, obsSetsMembership: any): any;
80
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.js"],"names":[],"mappings":"AAiBA,oDAOC;AAED;;;;GAIG;AACH,6CAgBC;AAED;;;;GAIG;AACH,yCAiCC;AAED;;;;;GAKG;AACH,2CAiCC;AAED;;;;;;GAMG;AACH,uCAHW,MAAM,EAAE,GACN,OAAO,CAOnB;AAED;;;;;;;;GAQG;AACH,iCAPW,MAAM,WACN,MAAM,SAoBhB;AAED;;;;;;GAMG;AACH,iEAuBC;AAED;;;;;;;;;;GAUG;AACH;IAR0B,gBAAgB,EAA/B,MAAM;UAqBhB;AAED;;;;;;;;;;GAUG;AACH,yDARW,QAAM,IAAI,SAuBpB;AAED;;;;QA2BC;AAED,iEAOC;AAED,kHAuBC"}
@@ -0,0 +1,271 @@
1
+ import { useRef, useState, useEffect, useCallback, useMemo, } from 'react';
2
+ import { debounce, every } from 'lodash-es';
3
+ import { extent } from 'd3-array';
4
+ import { capitalize, fromEntries } from '@vitessce/utils';
5
+ import { useGridResize, useEmitGridResize } from './state/hooks.js';
6
+ import { VITESSCE_CONTAINER } from './classNames.js';
7
+ function getWindowDimensions() {
8
+ const { innerWidth: width, innerHeight: height } = window;
9
+ return {
10
+ width,
11
+ height,
12
+ };
13
+ }
14
+ export function useVitessceContainer(ref) {
15
+ return useCallback(() => {
16
+ if (ref.current) {
17
+ return ref.current.closest(`.${VITESSCE_CONTAINER}`);
18
+ }
19
+ return null;
20
+ }, [ref]);
21
+ }
22
+ /**
23
+ * Custom hook, gets the full window dimensions.
24
+ * @returns {array} `[width, height]` where width and height
25
+ * are numbers.
26
+ */
27
+ export function useWindowDimensions() {
28
+ const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());
29
+ useEffect(() => {
30
+ function handleResize() {
31
+ setWindowDimensions(getWindowDimensions());
32
+ }
33
+ const onResizeDebounced = debounce(handleResize, 100, { trailing: true });
34
+ window.addEventListener('resize', onResizeDebounced);
35
+ return () => window.removeEventListener('resize', onResizeDebounced);
36
+ }, []);
37
+ return windowDimensions;
38
+ }
39
+ /**
40
+ * Custom hook, subscribes to GRID_RESIZE and window resize events.
41
+ * @returns {array} `[width, height, containerRef]` where width and height
42
+ * are numbers and containerRef is a React ref.
43
+ */
44
+ export function useGridItemSize() {
45
+ const containerRef = useRef();
46
+ const [height, setHeight] = useState();
47
+ const [width, setWidth] = useState();
48
+ const resizeCount = useGridResize();
49
+ const incrementResizeCount = useEmitGridResize();
50
+ // On window resize events, increment the grid resize count.
51
+ useEffect(() => {
52
+ function onWindowResize() {
53
+ incrementResizeCount();
54
+ }
55
+ const onResizeDebounced = debounce(onWindowResize, 100, { trailing: true });
56
+ window.addEventListener('resize', onResizeDebounced);
57
+ onWindowResize();
58
+ return () => {
59
+ window.removeEventListener('resize', onResizeDebounced);
60
+ };
61
+ }, [incrementResizeCount]);
62
+ // On new grid resize counts, re-compute the component
63
+ // width/height.
64
+ useEffect(() => {
65
+ if (!containerRef.current)
66
+ return;
67
+ const container = containerRef.current;
68
+ const containerRect = container.getBoundingClientRect();
69
+ setHeight(containerRect.height);
70
+ setWidth(containerRect.width);
71
+ }, [resizeCount]);
72
+ return [width, height, containerRef];
73
+ }
74
+ /**
75
+ * Custom hook, subscribes to GRID_RESIZE and window resize events.
76
+ * @returns {array} `[width, height, deckRef]` where width and height
77
+ * are numbers and deckRef is a React ref to be used with
78
+ * a <DeckGL/> element (or a forwardRef to one).
79
+ */
80
+ export function useDeckCanvasSize() {
81
+ const deckRef = useRef();
82
+ const [height, setHeight] = useState();
83
+ const [width, setWidth] = useState();
84
+ const resizeCount = useGridResize();
85
+ const incrementResizeCount = useEmitGridResize();
86
+ // On window resize events, increment the grid resize count.
87
+ useEffect(() => {
88
+ function onWindowResize() {
89
+ incrementResizeCount();
90
+ }
91
+ const onResizeDebounced = debounce(onWindowResize, 100, { trailing: true });
92
+ window.addEventListener('resize', onResizeDebounced);
93
+ onWindowResize();
94
+ return () => {
95
+ window.removeEventListener('resize', onResizeDebounced);
96
+ };
97
+ }, [incrementResizeCount]);
98
+ // On new grid resize counts, re-compute the DeckGL canvas
99
+ // width/height.
100
+ useEffect(() => {
101
+ if (!deckRef.current)
102
+ return;
103
+ const { canvas } = deckRef.current.deck;
104
+ const canvasRect = canvas.getBoundingClientRect();
105
+ setHeight(canvasRect.height);
106
+ setWidth(canvasRect.width);
107
+ }, [resizeCount]);
108
+ return [width, height, deckRef];
109
+ }
110
+ /**
111
+ * This hook handles a boolean isReady value,
112
+ * which only returns true once every item in the
113
+ * input list has been marked as "ready".
114
+ * @param {string[]} statusValues The items to wait on.
115
+ * @returns {boolean} Whether the status values are all success.
116
+ */
117
+ export function useReady(statusValues) {
118
+ return useMemo(() => every(statusValues, val => val === 'success'), statusValues);
119
+ }
120
+ /**
121
+ * This hook helps manage a list of URLs.
122
+ * @param {object} loaders The loaders dependency.
123
+ * @param {string} dataset The dataset UID dependency.
124
+ * @returns {array} An array
125
+ * [urls, addUrl]
126
+ * where urls is the array of URL objects,
127
+ * and addUrl is a function for adding a URL to the array.
128
+ */
129
+ export function useUrls(loaders, dataset) {
130
+ const [urls, setUrls] = useState([]);
131
+ const addUrl = useCallback((url, name) => {
132
+ if (url) {
133
+ setUrls(prev => ([...prev, { url, name }]));
134
+ }
135
+ }, [setUrls]);
136
+ useEffect(() => {
137
+ setUrls([]);
138
+ }, [loaders, dataset]);
139
+ return [urls, addUrl];
140
+ }
141
+ /**
142
+ * Custom hook, subscribes to the width and height of the closest .vitessce-container
143
+ * element and updates upon window resize events.
144
+ * @param {Ref} ref A React ref object within the `.vitessce-container`.
145
+ * @returns {array} `[width, height]` where width and height
146
+ * are numbers.
147
+ */
148
+ export function useClosestVitessceContainerSize(ref) {
149
+ const [height, setHeight] = useState();
150
+ const [width, setWidth] = useState();
151
+ useEffect(() => {
152
+ function onWindowResize() {
153
+ if (ref.current) {
154
+ const { clientHeight: componentHeight, clientWidth: componentWidth, } = ref.current.closest(`.${VITESSCE_CONTAINER}`);
155
+ setWidth(componentWidth);
156
+ setHeight(componentHeight);
157
+ }
158
+ }
159
+ const onResizeDebounced = debounce(onWindowResize, 100, { trailing: true });
160
+ window.addEventListener('resize', onResizeDebounced);
161
+ onWindowResize();
162
+ return () => {
163
+ window.removeEventListener('resize', onResizeDebounced);
164
+ };
165
+ }, [ref]);
166
+ return [width, height];
167
+ }
168
+ /**
169
+ * Normalize an obsFeatureMatrix to a Uint8Array.
170
+ * @param {object} params
171
+ * @param {object} params.obsFeatureMatrix The obsFeatureMatrix
172
+ * returned by the useObsFeatureMatrix hook.
173
+ * @returns {array} A tuple [obsFeatureMatrix, dataExtent]
174
+ * where obsFeatureMatrix
175
+ * is a Uint8Array with the same shape as
176
+ * params.obsFeatureMatrix.data, and dataExtent is the
177
+ * [min, max] of the original data.
178
+ */
179
+ export function useUint8ObsFeatureMatrix({ obsFeatureMatrix }) {
180
+ return useMemo(() => {
181
+ if (obsFeatureMatrix && obsFeatureMatrix.data) {
182
+ const dataExtent = extent(obsFeatureMatrix.data);
183
+ const [min, max] = dataExtent;
184
+ const ratio = 255 / (max - min);
185
+ const data = new Uint8Array(obsFeatureMatrix.data.map(i => Math.floor((i - min) * ratio)));
186
+ return [{ data }, dataExtent];
187
+ }
188
+ return [null, null];
189
+ }, [obsFeatureMatrix]);
190
+ }
191
+ /**
192
+ * Normalize a feature selection (data for selected
193
+ * columns of an obsFeatureMatrix) to a Uint8Array.
194
+ * @param {array|null} expressionData The expressionData
195
+ * returned by the useFeatureSelection hook,
196
+ * where each element corresponds to an
197
+ * array of values for a selected feature.
198
+ * @returns {array} A tuple [normData, extents] where
199
+ * normData is an array of Uint8Arrays (or null), and extents is
200
+ * an array of [min, max] values for each feature (or null).
201
+ */
202
+ export function useUint8FeatureSelection(expressionData) {
203
+ return useMemo(() => {
204
+ if (expressionData && expressionData[0]) {
205
+ const extents = expressionData.map(arr => extent(arr));
206
+ const normData = expressionData.map((arr, i) => {
207
+ const [min, max] = extents[i];
208
+ const ratio = 255 / (max - min);
209
+ return new Uint8Array(arr.map(j => Math.floor((j - min) * ratio)));
210
+ });
211
+ return [normData, extents];
212
+ }
213
+ return [null, null];
214
+ }, [expressionData]);
215
+ }
216
+ export function useExpressionValueGetter({ instanceObsIndex, matrixObsIndex, expressionData }) {
217
+ // Get a mapping from cell ID to row index in the gene expression matrix.
218
+ // Since the two obsIndices (instanceObsIndex = the obsIndex from obsEmbedding)
219
+ // may be ordered differently (matrixObsIndex = the obsIndex from obsFeatureMatrix),
220
+ // we need a way to look up an obsFeatureMatrix obsIndex index
221
+ // given an obsEmbedding obsIndex index.
222
+ const toMatrixIndexMap = useMemo(() => {
223
+ if (instanceObsIndex && matrixObsIndex) {
224
+ const matrixIndexMap = new Map(matrixObsIndex.map((key, i) => ([key, i])));
225
+ return instanceObsIndex.map(key => matrixIndexMap.get(key));
226
+ }
227
+ return null;
228
+ }, [instanceObsIndex, matrixObsIndex]);
229
+ // Set up a getter function for gene expression values, to be used
230
+ // by the DeckGL layer to obtain values for instanced attributes.
231
+ const getExpressionValue = useCallback((entry, { index: instanceIndex }) => {
232
+ if (toMatrixIndexMap && expressionData && expressionData[0]) {
233
+ const rowIndex = toMatrixIndexMap[instanceIndex];
234
+ const val = expressionData[0][rowIndex];
235
+ return val;
236
+ }
237
+ return 0;
238
+ }, [toMatrixIndexMap, expressionData]);
239
+ return getExpressionValue;
240
+ }
241
+ export function useGetObsMembership(obsSetsMembership) {
242
+ return useCallback((obsId) => {
243
+ if (obsId) {
244
+ return obsSetsMembership?.get(obsId) || [];
245
+ }
246
+ return [];
247
+ }, [obsSetsMembership]);
248
+ }
249
+ export function useGetObsInfo(obsType, obsLabelsTypes, obsLabelsData, obsSetsMembership) {
250
+ return useCallback((obsId) => {
251
+ if (obsId) {
252
+ const obsMembership = obsSetsMembership?.get(obsId) || [];
253
+ return {
254
+ [`${capitalize(obsType)} ID`]: obsId,
255
+ ...fromEntries(obsMembership.flatMap(path => path.slice(1).map((pathEl, elLevel) => ([
256
+ `${path[0]}${path.length > 2 ? ` L${elLevel + 1}` : ''}`,
257
+ pathEl,
258
+ ])))),
259
+ ...fromEntries(Object.entries(obsLabelsTypes).map(([scopeKey, obsLabelsType]) => ([
260
+ obsLabelsType,
261
+ obsLabelsData?.[scopeKey]?.obsLabels?.[
262
+ // TODO: Maybe all loaders that return obsIndex should also return an obsIndexMap
263
+ // with keys: obsId, values: obsIdx
264
+ // which would avoid the indexOf calls.
265
+ obsLabelsData?.[scopeKey]?.obsIndex?.indexOf(obsId)],
266
+ ])).filter(([obsLabelsType]) => Boolean(obsLabelsType))),
267
+ };
268
+ }
269
+ return null;
270
+ }, [obsType, obsLabelsTypes, obsLabelsData, obsSetsMembership]);
271
+ }
@@ -0,0 +1,11 @@
1
+ export { VitS } from "./VitS.js";
2
+ export { TitleInfo } from "./TitleInfo.js";
3
+ export { PopperMenu } from "./shared-mui/components.js";
4
+ export { useHasLoader } from "./data-hook-utils.js";
5
+ export { useReady, useUrls, useVitessceContainer, useDeckCanvasSize, useUint8ObsFeatureMatrix, useUint8FeatureSelection, useExpressionValueGetter, useGetObsMembership, useGetObsInfo, useClosestVitessceContainerSize, useWindowDimensions, useGridItemSize } from "./hooks.js";
6
+ export { useCoordination, useComplexCoordination, useMultiCoordinationValues, useMultiDatasetCoordination, useDatasetUids, useLoaders, useMatchingLoader, useViewConfigStore, useViewConfigStoreApi, useComponentHover, useSetComponentHover, useComponentViewInfo, useSetComponentViewInfo, useWarning, useSetWarning, useAuxiliaryCoordination, useComponentLayout } from "./state/hooks.js";
7
+ export { useDescription, useImageData, useObsSetsData, useObsEmbeddingData, useFeatureSelection, useObsFeatureMatrixIndices, useMultiObsLabels, useObsLocationsData, useObsSegmentationsData, useNeighborhoodsData, useObsLabelsData, useObsFeatureMatrixData, useFeatureLabelsData, useGenomicProfilesData } from "./data-hooks.js";
8
+ export { AbstractLoader, AbstractTwoStepLoader, LoaderResult } from "./data/index.js";
9
+ export { AbstractLoaderError, DatasetNotFoundError, LoaderNotFoundError, LoaderValidationError, DataSourceFetchError } from "./errors/index.js";
10
+ export { CellColorEncodingOption, OptionsContainer, OptionSelect, usePlotOptionsStyles } from "./shared-plot-options/index.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":""}
package/dist-tsc/index.js CHANGED
@@ -1,18 +1,11 @@
1
- export { VitS } from './VitS';
2
- export { TitleInfo } from './TitleInfo';
3
- export { PopperMenu } from './shared-mui/components';
4
- export { registerPluginViewType, registerPluginCoordinationType, registerPluginFileType, registerPluginJointFileType, } from './plugins';
1
+ export { VitS } from './VitS.js';
2
+ export { TitleInfo } from './TitleInfo.js';
3
+ export { PopperMenu } from './shared-mui/components.js';
5
4
  // For plugin view types:
6
- export { useReady, useUrls, useVitessceContainer, useDeckCanvasSize, useExpressionValueGetter, useGetObsInfo, useClosestVitessceContainerSize, useWindowDimensions, useGridItemSize, } from './hooks';
7
- export { useCoordination, useComplexCoordination, useMultiCoordinationValues, useMultiDatasetCoordination, useDatasetUids, useLoaders, useMatchingLoader, useViewConfigStore, useViewConfigStoreApi, useComponentHover, useSetComponentHover, useComponentViewInfo, useSetComponentViewInfo, useWarning, useSetWarning, useAuxiliaryCoordination, useComponentLayout, } from './state/hooks';
8
- export { useDescription, useImageData, useObsSetsData, useObsEmbeddingData, useFeatureSelection, useObsFeatureMatrixIndices, useMultiObsLabels, useObsLocationsData, useObsSegmentationsData, useNeighborhoodsData, useObsLabelsData, useObsFeatureMatrixData, useFeatureLabelsData, useGenomicProfilesData, } from './data-hooks';
9
- export { useHasLoader, } from './data-hook-utils';
10
- export { AbstractLoader, AbstractTwoStepLoader, LoaderResult, } from './data/index';
11
- export { AbstractLoaderError, DatasetNotFoundError, LoaderNotFoundError, LoaderValidationError, OptionsValidationError, DataSourceFetchError, } from './errors/index';
12
- export {
13
- // TODO(monorepo): should these be in here? or within file-types/
14
- obsEmbeddingAnndataSchema, obsLocationsAnndataSchema, obsSegmentationsAnndataSchema, obsSetsAnndataSchema, obsFeatureMatrixAnndataSchema, obsLabelsAnndataSchema, featureLabelsAnndataSchema, obsEmbeddingCsvSchema, obsLocationsCsvSchema, obsLabelsCsvSchema, featureLabelsCsvSchema, obsSetsCsvSchema, anndataZarrSchema, emptySchema, } from './file-options-schemas';
15
- export { SCHEMA_HANDLERS, LATEST_VERSION, } from './view-config-versions';
16
- export { upgradeAndValidate, } from './view-config-utils';
17
- export { CellColorEncodingOption, OptionsContainer, OptionSelect, usePlotOptionsStyles, } from './shared-plot-options';
18
- export * from './json-schemas';
5
+ export { useReady, useUrls, useVitessceContainer, useDeckCanvasSize, useUint8ObsFeatureMatrix, useUint8FeatureSelection, useExpressionValueGetter, useGetObsMembership, useGetObsInfo, useClosestVitessceContainerSize, useWindowDimensions, useGridItemSize, } from './hooks.js';
6
+ export { useCoordination, useComplexCoordination, useMultiCoordinationValues, useMultiDatasetCoordination, useDatasetUids, useLoaders, useMatchingLoader, useViewConfigStore, useViewConfigStoreApi, useComponentHover, useSetComponentHover, useComponentViewInfo, useSetComponentViewInfo, useWarning, useSetWarning, useAuxiliaryCoordination, useComponentLayout, } from './state/hooks.js';
7
+ export { useDescription, useImageData, useObsSetsData, useObsEmbeddingData, useFeatureSelection, useObsFeatureMatrixIndices, useMultiObsLabels, useObsLocationsData, useObsSegmentationsData, useNeighborhoodsData, useObsLabelsData, useObsFeatureMatrixData, useFeatureLabelsData, useGenomicProfilesData, } from './data-hooks.js';
8
+ export { useHasLoader, } from './data-hook-utils.js';
9
+ export { AbstractLoader, AbstractTwoStepLoader, LoaderResult, } from './data/index.js';
10
+ export { AbstractLoaderError, DatasetNotFoundError, LoaderNotFoundError, LoaderValidationError, DataSourceFetchError, } from './errors/index.js';
11
+ export { CellColorEncodingOption, OptionsContainer, OptionSelect, usePlotOptionsStyles, } from './shared-plot-options/index.js';
@@ -0,0 +1,61 @@
1
+ export function pluginExpandAnnDataConvenience(fileDef: any): {
2
+ fileType: string;
3
+ url: any;
4
+ options: any;
5
+ }[];
6
+ export namespace convenienceFileDefsCollapsed {
7
+ const version: string;
8
+ const name: string;
9
+ const description: string;
10
+ const initStrategy: string;
11
+ const datasets: {
12
+ files: {
13
+ fileType: string;
14
+ url: string;
15
+ options: {
16
+ cells: {
17
+ xy: string;
18
+ };
19
+ cellSets: {
20
+ groupName: string;
21
+ setName: string;
22
+ }[];
23
+ };
24
+ }[];
25
+ name: string;
26
+ uid: string;
27
+ }[];
28
+ const layout: never[];
29
+ }
30
+ export namespace convenienceFileDefsExpanded {
31
+ const version_1: string;
32
+ export { version_1 as version };
33
+ const name_1: string;
34
+ export { name_1 as name };
35
+ const description_1: string;
36
+ export { description_1 as description };
37
+ const initStrategy_1: string;
38
+ export { initStrategy_1 as initStrategy };
39
+ const datasets_1: {
40
+ files: ({
41
+ fileType: string;
42
+ url: string;
43
+ options: {
44
+ xy: string;
45
+ };
46
+ } | {
47
+ fileType: string;
48
+ url: string;
49
+ options: {
50
+ groupName: string;
51
+ setName: string;
52
+ }[];
53
+ })[];
54
+ name: string;
55
+ uid: string;
56
+ }[];
57
+ export { datasets_1 as datasets };
58
+ const layout_1: never[];
59
+ export { layout_1 as layout };
60
+ }
61
+ //# sourceMappingURL=plugins.test.fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.test.fixtures.d.ts","sourceRoot":"","sources":["../src/plugins.test.fixtures.js"],"names":[],"mappings":"AA+BA;;;;IAaC"}