@loaders.gl/geotiff 3.1.0-alpha.4 → 3.1.0-beta.3

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 (76) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +26 -0
  4. package/dist/es5/bundle.js +2 -4
  5. package/dist/es5/bundle.js.map +1 -1
  6. package/dist/es5/index.js +2 -2
  7. package/dist/es5/lib/load-geotiff.js +27 -85
  8. package/dist/es5/lib/load-geotiff.js.map +1 -1
  9. package/dist/es5/lib/ome/load-ome-tiff.js +45 -62
  10. package/dist/es5/lib/ome/load-ome-tiff.js.map +1 -1
  11. package/dist/es5/lib/ome/ome-indexers.js +75 -117
  12. package/dist/es5/lib/ome/ome-indexers.js.map +1 -1
  13. package/dist/es5/lib/ome/ome-utils.js +18 -21
  14. package/dist/es5/lib/ome/ome-utils.js.map +1 -1
  15. package/dist/es5/lib/ome/omexml.js +30 -35
  16. package/dist/es5/lib/ome/omexml.js.map +1 -1
  17. package/dist/es5/lib/ome/utils.js +3 -5
  18. package/dist/es5/lib/ome/utils.js.map +1 -1
  19. package/dist/es5/lib/tiff-pixel-source.js +83 -169
  20. package/dist/es5/lib/tiff-pixel-source.js.map +1 -1
  21. package/dist/es5/lib/utils/Pool.js +53 -141
  22. package/dist/es5/lib/utils/Pool.js.map +1 -1
  23. package/dist/es5/lib/utils/proxies.js +13 -22
  24. package/dist/es5/lib/utils/proxies.js.map +1 -1
  25. package/dist/es5/lib/utils/tiff-utils.js +9 -18
  26. package/dist/es5/lib/utils/tiff-utils.js.map +1 -1
  27. package/dist/esm/lib/ome/ome-indexers.js +2 -2
  28. package/dist/esm/lib/ome/ome-indexers.js.map +1 -1
  29. package/dist/esm/lib/ome/ome-utils.js +1 -1
  30. package/dist/esm/lib/ome/ome-utils.js.map +1 -1
  31. package/dist/esm/lib/ome/omexml.js +5 -5
  32. package/dist/esm/lib/ome/omexml.js.map +1 -1
  33. package/dist/esm/lib/utils/proxies.js +2 -2
  34. package/dist/esm/lib/utils/proxies.js.map +1 -1
  35. package/dist/index.d.ts +3 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +10 -0
  38. package/dist/lib/load-geotiff.d.ts +28 -0
  39. package/dist/lib/load-geotiff.d.ts.map +1 -0
  40. package/dist/lib/load-geotiff.js +57 -0
  41. package/dist/lib/ome/load-ome-tiff.d.ts +50 -0
  42. package/dist/lib/ome/load-ome-tiff.d.ts.map +1 -0
  43. package/dist/lib/ome/load-ome-tiff.js +46 -0
  44. package/dist/lib/ome/ome-indexers.d.ts +11 -0
  45. package/dist/lib/ome/ome-indexers.d.ts.map +1 -0
  46. package/dist/lib/ome/ome-indexers.js +108 -0
  47. package/dist/lib/ome/ome-utils.d.ts +28 -0
  48. package/dist/lib/ome/ome-utils.d.ts.map +1 -0
  49. package/dist/lib/ome/ome-utils.js +63 -0
  50. package/dist/lib/ome/omexml.d.ts +49 -0
  51. package/dist/lib/ome/omexml.d.ts.map +1 -0
  52. package/dist/lib/ome/omexml.js +66 -0
  53. package/dist/lib/ome/utils.d.ts +5 -0
  54. package/dist/lib/ome/utils.d.ts.map +1 -0
  55. package/dist/lib/ome/utils.js +30 -0
  56. package/dist/lib/tiff-pixel-source.d.ts +18 -0
  57. package/dist/lib/tiff-pixel-source.d.ts.map +1 -0
  58. package/dist/lib/tiff-pixel-source.js +64 -0
  59. package/dist/lib/utils/Pool.d.ts +29 -0
  60. package/dist/lib/utils/Pool.d.ts.map +1 -0
  61. package/dist/lib/utils/Pool.js +83 -0
  62. package/dist/lib/utils/proxies.d.ts +6 -0
  63. package/dist/lib/utils/proxies.d.ts.map +1 -0
  64. package/dist/lib/utils/proxies.js +86 -0
  65. package/dist/lib/utils/tiff-utils.d.ts +10 -0
  66. package/dist/lib/utils/tiff-utils.d.ts.map +1 -0
  67. package/dist/lib/utils/tiff-utils.js +44 -0
  68. package/dist/types.d.ts +47 -0
  69. package/dist/types.d.ts.map +1 -0
  70. package/dist/types.js +2 -0
  71. package/dist/typings/geotiff.d.ts +60 -0
  72. package/dist/typings/geotiff.d.ts.map +1 -0
  73. package/dist/typings/geotiff.js +1 -0
  74. package/package.json +5 -5
  75. package/dist/dist.min.js +0 -13
  76. package/dist/dist.min.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":""}
package/dist/bundle.js ADDED
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ const moduleExports = __importStar(require("./index"));
23
+ // @ts-ignore
24
+ globalThis.loaders = globalThis.loaders || {};
25
+ // @ts-ignore
26
+ module.exports = Object.assign(globalThis.loaders, moduleExports);
@@ -1,12 +1,10 @@
1
1
  "use strict";
2
2
 
3
- var _typeof = require("@babel/runtime/helpers/typeof");
4
-
5
3
  var moduleExports = _interopRequireWildcard(require("./index"));
6
4
 
7
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
5
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
8
6
 
9
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
7
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
10
8
 
11
9
  globalThis.loaders = globalThis.loaders || {};
12
10
  module.exports = Object.assign(globalThis.loaders, moduleExports);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bundle.ts"],"names":["globalThis","loaders","module","exports","Object","assign","moduleExports"],"mappings":";;;;AAAA;;;;;;AAEAA,UAAU,CAACC,OAAX,GAAqBD,UAAU,CAACC,OAAX,IAAsB,EAA3C;AAEAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,OAAzB,EAAkCK,aAAlC,CAAjB","sourcesContent":["import * as moduleExports from './index';\n// @ts-ignore\nglobalThis.loaders = globalThis.loaders || {};\n// @ts-ignore\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"file":"bundle.js"}
1
+ {"version":3,"sources":["../../src/bundle.ts"],"names":["globalThis","loaders","module","exports","Object","assign","moduleExports"],"mappings":";;AAAA;;;;;;AAEAA,UAAU,CAACC,OAAX,GAAqBD,UAAU,CAACC,OAAX,IAAsB,EAA3C;AAEAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,OAAzB,EAAkCK,aAAlC,CAAjB","sourcesContent":["import * as moduleExports from './index';\n// @ts-ignore\nglobalThis.loaders = globalThis.loaders || {};\n// @ts-ignore\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"file":"bundle.js"}
package/dist/es5/index.js CHANGED
@@ -7,13 +7,13 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  Object.defineProperty(exports, "loadGeoTiff", {
9
9
  enumerable: true,
10
- get: function get() {
10
+ get: function () {
11
11
  return _loadGeotiff.loadGeoTiff;
12
12
  }
13
13
  });
14
14
  Object.defineProperty(exports, "TiffPixelSource", {
15
15
  enumerable: true,
16
- get: function get() {
16
+ get: function () {
17
17
  return _tiffPixelSource.default;
18
18
  }
19
19
  });
@@ -1,100 +1,42 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  exports.loadGeoTiff = loadGeoTiff;
9
7
 
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
-
14
8
  var _geotiff = require("geotiff");
15
9
 
16
10
  var _proxies = require("./utils/proxies");
17
11
 
18
12
  var _loadOmeTiff = require("./ome/load-ome-tiff");
19
13
 
20
- function loadGeoTiff(_x) {
21
- return _loadGeoTiff.apply(this, arguments);
22
- }
23
-
24
- function _loadGeoTiff() {
25
- _loadGeoTiff = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(source) {
26
- var opts,
27
- headers,
28
- offsets,
29
- tiff,
30
- firstImage,
31
- _args = arguments;
32
- return _regenerator.default.wrap(function _callee$(_context) {
33
- while (1) {
34
- switch (_context.prev = _context.next) {
35
- case 0:
36
- opts = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
37
- headers = opts.headers, offsets = opts.offsets;
38
-
39
- if (!(source instanceof _geotiff.GeoTIFF)) {
40
- _context.next = 6;
41
- break;
42
- }
43
-
44
- tiff = source;
45
- _context.next = 15;
46
- break;
47
-
48
- case 6:
49
- if (!(typeof source === 'string')) {
50
- _context.next = 12;
51
- break;
52
- }
53
-
54
- _context.next = 9;
55
- return (0, _geotiff.fromUrl)(source, headers);
56
-
57
- case 9:
58
- tiff = _context.sent;
59
- _context.next = 15;
60
- break;
61
-
62
- case 12:
63
- _context.next = 14;
64
- return (0, _geotiff.fromBlob)(source);
65
-
66
- case 14:
67
- tiff = _context.sent;
68
-
69
- case 15:
70
- if (offsets) {
71
- tiff = (0, _proxies.createOffsetsProxy)(tiff, offsets);
72
- }
73
-
74
- (0, _proxies.checkProxies)(tiff);
75
- _context.next = 19;
76
- return tiff.getImage(0);
77
-
78
- case 19:
79
- firstImage = _context.sent;
80
-
81
- if (!(0, _loadOmeTiff.isOmeTiff)(firstImage)) {
82
- _context.next = 22;
83
- break;
84
- }
85
-
86
- return _context.abrupt("return", (0, _loadOmeTiff.loadOmeTiff)(tiff, firstImage));
87
-
88
- case 22:
89
- throw new Error('GeoTIFF not recognized.');
90
-
91
- case 23:
92
- case "end":
93
- return _context.stop();
94
- }
95
- }
96
- }, _callee);
97
- }));
98
- return _loadGeoTiff.apply(this, arguments);
14
+ async function loadGeoTiff(source, opts = {}) {
15
+ const {
16
+ headers,
17
+ offsets
18
+ } = opts;
19
+ let tiff;
20
+
21
+ if (source instanceof _geotiff.GeoTIFF) {
22
+ tiff = source;
23
+ } else if (typeof source === 'string') {
24
+ tiff = await (0, _geotiff.fromUrl)(source, headers);
25
+ } else {
26
+ tiff = await (0, _geotiff.fromBlob)(source);
27
+ }
28
+
29
+ if (offsets) {
30
+ tiff = (0, _proxies.createOffsetsProxy)(tiff, offsets);
31
+ }
32
+
33
+ (0, _proxies.checkProxies)(tiff);
34
+ const firstImage = await tiff.getImage(0);
35
+
36
+ if ((0, _loadOmeTiff.isOmeTiff)(firstImage)) {
37
+ return (0, _loadOmeTiff.loadOmeTiff)(tiff, firstImage);
38
+ }
39
+
40
+ throw new Error('GeoTIFF not recognized.');
99
41
  }
100
42
  //# sourceMappingURL=load-geotiff.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/load-geotiff.ts"],"names":["loadGeoTiff","source","opts","headers","offsets","GeoTIFF","tiff","getImage","firstImage","Error"],"mappings":";;;;;;;;;;;;;AAAA;;AAEA;;AAOA;;SA4BsBA,W;;;;;2EAAf,iBACLC,MADK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAELC,YAAAA,IAFK,2DAEkB,EAFlB;AAIEC,YAAAA,OAJF,GAIsBD,IAJtB,CAIEC,OAJF,EAIWC,OAJX,GAIsBF,IAJtB,CAIWE,OAJX;;AAAA,kBAQDH,MAAM,YAAYI,gBARjB;AAAA;AAAA;AAAA;;AASHC,YAAAA,IAAI,GAAGL,MAAP;AATG;AAAA;;AAAA;AAAA,kBAUM,OAAOA,MAAP,KAAkB,QAVxB;AAAA;AAAA;AAAA;;AAAA;AAAA,mBAWU,sBAAQA,MAAR,EAAgBE,OAAhB,CAXV;;AAAA;AAWHG,YAAAA,IAXG;AAAA;AAAA;;AAAA;AAAA;AAAA,mBAaU,uBAASL,MAAT,CAbV;;AAAA;AAaHK,YAAAA,IAbG;;AAAA;AAwBL,gBAAIF,OAAJ,EAAa;AAMXE,cAAAA,IAAI,GAAG,iCAAmBA,IAAnB,EAAyBF,OAAzB,CAAP;AACD;;AAMD,uCAAaE,IAAb;AArCK;AAAA,mBAuCoBA,IAAI,CAACC,QAAL,CAAc,CAAd,CAvCpB;;AAAA;AAuCCC,YAAAA,UAvCD;;AAAA,iBAyCD,4BAAUA,UAAV,CAzCC;AAAA;AAAA;AAAA;;AAAA,6CA0CI,8BAAYF,IAAZ,EAAkBE,UAAlB,CA1CJ;;AAAA;AAAA,kBA6CC,IAAIC,KAAJ,CAAU,yBAAV,CA7CD;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","sourcesContent":["import {fromUrl, fromBlob, GeoTIFF} from 'geotiff';\n\nimport {\n // createPoolProxy,\n createOffsetsProxy,\n checkProxies\n} from './utils/proxies';\n// import Pool from './lib/Pool';\n\nimport {loadOmeTiff, isOmeTiff} from './ome/load-ome-tiff';\nimport type TiffPixelSource from './tiff-pixel-source';\n\n/** Options for initializing a tiff pixel source. */\ninterface GeoTIFFOptions {\n /** Headers passed to each underlying request. */\n headers?: Record<string, unknown>;\n /** Performance enhancment to index the remote tiff source using pre-computed byte-offsets. Generated via https://github.com/ilan-gold/generate-tiff-offsets */\n offsets?: number[];\n /** Indicates whether a multi-threaded pool of image decoders should be used to decode tiles. */\n pool?: boolean;\n}\n\ninterface GeoTIFFData {\n data: TiffPixelSource<string[]>[];\n metadata: Record<string, unknown>;\n}\n\n/**\n * Opens an OME-TIFF via URL and returns data source and associated metadata for first image.\n *\n * @param source url string, File/Blob object, or GeoTIFF object\n * @param opts options for initializing a tiff pixel source.\n * - `opts.headers` are passed to each underlying fetch request.\n * - `opts.offsets` are a performance enhancment to index the remote tiff source using pre-computed byte-offsets.\n * - `opts.pool` indicates whether a multi-threaded pool of image decoders should be used to decode tiles (default = true).\n * @return data source and associated OME-Zarr metadata.\n */\nexport async function loadGeoTiff(\n source: string | Blob | GeoTIFF,\n opts: GeoTIFFOptions = {}\n): Promise<GeoTIFFData> {\n const {headers, offsets} = opts;\n\n // Create tiff source\n let tiff: GeoTIFF;\n if (source instanceof GeoTIFF) {\n tiff = source;\n } else if (typeof source === 'string') {\n tiff = await fromUrl(source, headers);\n } else {\n tiff = await fromBlob(source);\n }\n\n // if (pool) {\n /*\n * Creates a worker pool to decode tiff tiles. Wraps tiff\n * in a Proxy that injects 'pool' into `tiff.readRasters`.\n */\n // tiff = createPoolProxy(tiff, new Pool());\n // }\n\n if (offsets) {\n /*\n * Performance enhancement. If offsets are provided, we\n * create a proxy that intercepts calls to `tiff.getImage`\n * and injects the pre-computed offsets.\n */\n tiff = createOffsetsProxy(tiff, offsets);\n }\n\n /*\n * Inspect tiff source for our performance enhancing proxies.\n * Prints warnings to console if `offsets` or `pool` are missing.\n */\n checkProxies(tiff);\n\n const firstImage = await tiff.getImage(0);\n\n if (isOmeTiff(firstImage)) {\n return loadOmeTiff(tiff, firstImage);\n }\n\n throw new Error('GeoTIFF not recognized.');\n}\n"],"file":"load-geotiff.js"}
1
+ {"version":3,"sources":["../../../src/lib/load-geotiff.ts"],"names":["loadGeoTiff","source","opts","headers","offsets","tiff","GeoTIFF","firstImage","getImage","Error"],"mappings":";;;;;;;AAAA;;AAEA;;AAOA;;AA4BO,eAAeA,WAAf,CACLC,MADK,EAELC,IAAoB,GAAG,EAFlB,EAGiB;AACtB,QAAM;AAACC,IAAAA,OAAD;AAAUC,IAAAA;AAAV,MAAqBF,IAA3B;AAGA,MAAIG,IAAJ;;AACA,MAAIJ,MAAM,YAAYK,gBAAtB,EAA+B;AAC7BD,IAAAA,IAAI,GAAGJ,MAAP;AACD,GAFD,MAEO,IAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;AACrCI,IAAAA,IAAI,GAAG,MAAM,sBAAQJ,MAAR,EAAgBE,OAAhB,CAAb;AACD,GAFM,MAEA;AACLE,IAAAA,IAAI,GAAG,MAAM,uBAASJ,MAAT,CAAb;AACD;;AAUD,MAAIG,OAAJ,EAAa;AAMXC,IAAAA,IAAI,GAAG,iCAAmBA,IAAnB,EAAyBD,OAAzB,CAAP;AACD;;AAMD,6BAAaC,IAAb;AAEA,QAAME,UAAU,GAAG,MAAMF,IAAI,CAACG,QAAL,CAAc,CAAd,CAAzB;;AAEA,MAAI,4BAAUD,UAAV,CAAJ,EAA2B;AACzB,WAAO,8BAAYF,IAAZ,EAAkBE,UAAlB,CAAP;AACD;;AAED,QAAM,IAAIE,KAAJ,CAAU,yBAAV,CAAN;AACD","sourcesContent":["import {fromUrl, fromBlob, GeoTIFF} from 'geotiff';\n\nimport {\n // createPoolProxy,\n createOffsetsProxy,\n checkProxies\n} from './utils/proxies';\n// import Pool from './lib/Pool';\n\nimport {loadOmeTiff, isOmeTiff} from './ome/load-ome-tiff';\nimport type TiffPixelSource from './tiff-pixel-source';\n\n/** Options for initializing a tiff pixel source. */\ninterface GeoTIFFOptions {\n /** Headers passed to each underlying request. */\n headers?: Record<string, unknown>;\n /** Performance enhancment to index the remote tiff source using pre-computed byte-offsets. Generated via https://github.com/ilan-gold/generate-tiff-offsets */\n offsets?: number[];\n /** Indicates whether a multi-threaded pool of image decoders should be used to decode tiles. */\n pool?: boolean;\n}\n\ninterface GeoTIFFData {\n data: TiffPixelSource<string[]>[];\n metadata: Record<string, unknown>;\n}\n\n/**\n * Opens an OME-TIFF via URL and returns data source and associated metadata for first image.\n *\n * @param source url string, File/Blob object, or GeoTIFF object\n * @param opts options for initializing a tiff pixel source.\n * - `opts.headers` are passed to each underlying fetch request.\n * - `opts.offsets` are a performance enhancment to index the remote tiff source using pre-computed byte-offsets.\n * - `opts.pool` indicates whether a multi-threaded pool of image decoders should be used to decode tiles (default = true).\n * @return data source and associated OME-Zarr metadata.\n */\nexport async function loadGeoTiff(\n source: string | Blob | GeoTIFF,\n opts: GeoTIFFOptions = {}\n): Promise<GeoTIFFData> {\n const {headers, offsets} = opts;\n\n // Create tiff source\n let tiff: GeoTIFF;\n if (source instanceof GeoTIFF) {\n tiff = source;\n } else if (typeof source === 'string') {\n tiff = await fromUrl(source, headers);\n } else {\n tiff = await fromBlob(source);\n }\n\n // if (pool) {\n /*\n * Creates a worker pool to decode tiff tiles. Wraps tiff\n * in a Proxy that injects 'pool' into `tiff.readRasters`.\n */\n // tiff = createPoolProxy(tiff, new Pool());\n // }\n\n if (offsets) {\n /*\n * Performance enhancement. If offsets are provided, we\n * create a proxy that intercepts calls to `tiff.getImage`\n * and injects the pre-computed offsets.\n */\n tiff = createOffsetsProxy(tiff, offsets);\n }\n\n /*\n * Inspect tiff source for our performance enhancing proxies.\n * Prints warnings to console if `offsets` or `pool` are missing.\n */\n checkProxies(tiff);\n\n const firstImage = await tiff.getImage(0);\n\n if (isOmeTiff(firstImage)) {\n return loadOmeTiff(tiff, firstImage);\n }\n\n throw new Error('GeoTIFF not recognized.');\n}\n"],"file":"load-geotiff.js"}
@@ -8,10 +8,6 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.loadOmeTiff = loadOmeTiff;
9
9
  exports.isOmeTiff = void 0;
10
10
 
11
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
12
-
13
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
14
-
15
11
  var _tiffPixelSource = _interopRequireDefault(require("../tiff-pixel-source"));
16
12
 
17
13
  var _omeIndexers = require("./ome-indexers");
@@ -20,66 +16,53 @@ var _omeUtils = require("./ome-utils");
20
16
 
21
17
  var _omexml = require("./omexml");
22
18
 
23
- var isOmeTiff = function isOmeTiff(img) {
24
- return img.fileDirectory.ImageDescription.includes('<OME');
25
- };
19
+ const isOmeTiff = img => img.fileDirectory.ImageDescription.includes('<OME');
26
20
 
27
21
  exports.isOmeTiff = isOmeTiff;
28
22
 
29
- function loadOmeTiff(_x, _x2) {
30
- return _loadOmeTiff.apply(this, arguments);
31
- }
32
-
33
- function _loadOmeTiff() {
34
- _loadOmeTiff = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tiff, firstImage) {
35
- var _firstImage$fileDirec, ImageDescription, SubIFDs, photometricInterpretation, omexml, levels, pyramidIndexer, imgMeta, _getOmePixelSourceMet, labels, getShape, physicalSizes, dtype, tileSize, meta, data;
36
-
37
- return _regenerator.default.wrap(function _callee$(_context) {
38
- while (1) {
39
- switch (_context.prev = _context.next) {
40
- case 0:
41
- _firstImage$fileDirec = firstImage.fileDirectory, ImageDescription = _firstImage$fileDirec.ImageDescription, SubIFDs = _firstImage$fileDirec.SubIFDs, photometricInterpretation = _firstImage$fileDirec.PhotometricInterpretation;
42
- omexml = (0, _omexml.fromString)(ImageDescription);
43
-
44
- if (SubIFDs) {
45
- levels = SubIFDs.length + 1;
46
- pyramidIndexer = (0, _omeIndexers.getOmeSubIFDIndexer)(tiff, omexml);
47
- } else {
48
- levels = omexml.length;
49
- pyramidIndexer = (0, _omeIndexers.getOmeLegacyIndexer)(tiff, omexml);
50
- }
51
-
52
- imgMeta = omexml[0];
53
- _getOmePixelSourceMet = (0, _omeUtils.getOmePixelSourceMeta)(imgMeta), labels = _getOmePixelSourceMet.labels, getShape = _getOmePixelSourceMet.getShape, physicalSizes = _getOmePixelSourceMet.physicalSizes, dtype = _getOmePixelSourceMet.dtype;
54
- tileSize = firstImage.getTileWidth();
55
- meta = {
56
- photometricInterpretation: photometricInterpretation,
57
- physicalSizes: physicalSizes
58
- };
59
- data = Array.from({
60
- length: levels
61
- }).map(function (_, resolution) {
62
- var shape = getShape(resolution);
63
-
64
- var indexer = function indexer(sel) {
65
- return pyramidIndexer(sel, resolution);
66
- };
67
-
68
- var source = new _tiffPixelSource.default(indexer, dtype, tileSize, shape, labels, meta);
69
- return source;
70
- });
71
- return _context.abrupt("return", {
72
- data: data,
73
- metadata: imgMeta
74
- });
75
-
76
- case 9:
77
- case "end":
78
- return _context.stop();
79
- }
80
- }
81
- }, _callee);
82
- }));
83
- return _loadOmeTiff.apply(this, arguments);
23
+ async function loadOmeTiff(tiff, firstImage) {
24
+ const {
25
+ ImageDescription,
26
+ SubIFDs,
27
+ PhotometricInterpretation: photometricInterpretation
28
+ } = firstImage.fileDirectory;
29
+ const omexml = (0, _omexml.fromString)(ImageDescription);
30
+ let levels;
31
+ let pyramidIndexer;
32
+
33
+ if (SubIFDs) {
34
+ levels = SubIFDs.length + 1;
35
+ pyramidIndexer = (0, _omeIndexers.getOmeSubIFDIndexer)(tiff, omexml);
36
+ } else {
37
+ levels = omexml.length;
38
+ pyramidIndexer = (0, _omeIndexers.getOmeLegacyIndexer)(tiff, omexml);
39
+ }
40
+
41
+ const imgMeta = omexml[0];
42
+ const {
43
+ labels,
44
+ getShape,
45
+ physicalSizes,
46
+ dtype
47
+ } = (0, _omeUtils.getOmePixelSourceMeta)(imgMeta);
48
+ const tileSize = firstImage.getTileWidth();
49
+ const meta = {
50
+ photometricInterpretation,
51
+ physicalSizes
52
+ };
53
+ const data = Array.from({
54
+ length: levels
55
+ }).map((_, resolution) => {
56
+ const shape = getShape(resolution);
57
+
58
+ const indexer = sel => pyramidIndexer(sel, resolution);
59
+
60
+ const source = new _tiffPixelSource.default(indexer, dtype, tileSize, shape, labels, meta);
61
+ return source;
62
+ });
63
+ return {
64
+ data,
65
+ metadata: imgMeta
66
+ };
84
67
  }
85
68
  //# sourceMappingURL=load-ome-tiff.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/ome/load-ome-tiff.ts"],"names":["isOmeTiff","img","fileDirectory","ImageDescription","includes","loadOmeTiff","tiff","firstImage","SubIFDs","photometricInterpretation","PhotometricInterpretation","omexml","levels","length","pyramidIndexer","imgMeta","labels","getShape","physicalSizes","dtype","tileSize","getTileWidth","meta","data","Array","from","map","_","resolution","shape","indexer","sel","source","TiffPixelSource","metadata"],"mappings":";;;;;;;;;;;;;;AAEA;;AACA;;AACA;;AACA;;AAGO,IAAMA,SAAS,GAAG,SAAZA,SAAY,CAACC,GAAD;AAAA,SAAuBA,GAAG,CAACC,aAAJ,CAAkBC,gBAAlB,CAAmCC,QAAnC,CAA4C,MAA5C,CAAvB;AAAA,CAAlB;;;;SAEeC,W;;;;;2EAAf,iBAA2BC,IAA3B,EAA0CC,UAA1C;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,oCAMDA,UAAU,CAACL,aANV,EAGHC,gBAHG,yBAGHA,gBAHG,EAIHK,OAJG,yBAIHA,OAJG,EAKwBC,yBALxB,yBAKHC,yBALG;AAOCC,YAAAA,MAPD,GAOU,wBAAWR,gBAAX,CAPV;;AAgBL,gBAAIK,OAAJ,EAAa;AAEXI,cAAAA,MAAM,GAAGJ,OAAO,CAACK,MAAR,GAAiB,CAA1B;AACAC,cAAAA,cAAc,GAAG,sCAAoBR,IAApB,EAA0BK,MAA1B,CAAjB;AACD,aAJD,MAIO;AAELC,cAAAA,MAAM,GAAGD,MAAM,CAACE,MAAhB;AACAC,cAAAA,cAAc,GAAG,sCAAoBR,IAApB,EAA0BK,MAA1B,CAAjB;AACD;;AAGKI,YAAAA,OA3BD,GA2BWJ,MAAM,CAAC,CAAD,CA3BjB;AAAA,oCA4B4C,qCAAsBI,OAAtB,CA5B5C,EA4BEC,MA5BF,yBA4BEA,MA5BF,EA4BUC,QA5BV,yBA4BUA,QA5BV,EA4BoBC,aA5BpB,yBA4BoBA,aA5BpB,EA4BmCC,KA5BnC,yBA4BmCA,KA5BnC;AA6BCC,YAAAA,QA7BD,GA6BYb,UAAU,CAACc,YAAX,EA7BZ;AA8BCC,YAAAA,IA9BD,GA8BQ;AAACb,cAAAA,yBAAyB,EAAzBA,yBAAD;AAA4BS,cAAAA,aAAa,EAAbA;AAA5B,aA9BR;AAgCCK,YAAAA,IAhCD,GAgCQC,KAAK,CAACC,IAAN,CAAW;AAACZ,cAAAA,MAAM,EAAED;AAAT,aAAX,EAA6Bc,GAA7B,CAAiC,UAACC,CAAD,EAAIC,UAAJ,EAAmB;AAC/D,kBAAMC,KAAK,GAAGZ,QAAQ,CAACW,UAAD,CAAtB;;AACA,kBAAME,OAAO,GAAG,SAAVA,OAAU,CAACC,GAAD;AAAA,uBAA2BjB,cAAc,CAACiB,GAAD,EAAMH,UAAN,CAAzC;AAAA,eAAhB;;AACA,kBAAMI,MAAM,GAAG,IAAIC,wBAAJ,CAAoBH,OAApB,EAA6BX,KAA7B,EAAoCC,QAApC,EAA8CS,KAA9C,EAAqDb,MAArD,EAA6DM,IAA7D,CAAf;AACA,qBAAOU,MAAP;AACD,aALY,CAhCR;AAAA,6CAuCE;AAACT,cAAAA,IAAI,EAAJA,IAAD;AAAOW,cAAAA,QAAQ,EAAEnB;AAAjB,aAvCF;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","sourcesContent":["import type {GeoTIFF, GeoTIFFImage} from 'geotiff';\n\nimport TiffPixelSource from '../tiff-pixel-source';\nimport {getOmeLegacyIndexer, getOmeSubIFDIndexer, OmeTiffIndexer} from './ome-indexers';\nimport {getOmePixelSourceMeta} from './ome-utils';\nimport {fromString} from './omexml';\nimport type {OmeTiffSelection} from './ome-indexers';\n\nexport const isOmeTiff = (img: GeoTIFFImage) => img.fileDirectory.ImageDescription.includes('<OME');\n\nexport async function loadOmeTiff(tiff: GeoTIFF, firstImage: GeoTIFFImage) {\n // Get first image from tiff and inspect OME-XML metadata\n const {\n ImageDescription,\n SubIFDs,\n PhotometricInterpretation: photometricInterpretation\n } = firstImage.fileDirectory;\n const omexml = fromString(ImageDescription);\n\n /*\n * Image pyramids are stored differently between versions of Bioformats.\n * Thus we need a different indexer depending on which format we have.\n */\n let levels: number;\n let pyramidIndexer: OmeTiffIndexer;\n\n if (SubIFDs) {\n // Image is >= Bioformats 6.0 and resolutions are stored using SubIFDs.\n levels = SubIFDs.length + 1;\n pyramidIndexer = getOmeSubIFDIndexer(tiff, omexml);\n } else {\n // Image is legacy format; resolutions are stored as separate images.\n levels = omexml.length;\n pyramidIndexer = getOmeLegacyIndexer(tiff, omexml);\n }\n\n // TODO: The OmeTIFF loader only works for the _first_ image in the metadata.\n const imgMeta = omexml[0];\n const {labels, getShape, physicalSizes, dtype} = getOmePixelSourceMeta(imgMeta);\n const tileSize = firstImage.getTileWidth();\n const meta = {photometricInterpretation, physicalSizes};\n\n const data = Array.from({length: levels}).map((_, resolution) => {\n const shape = getShape(resolution);\n const indexer = (sel: OmeTiffSelection) => pyramidIndexer(sel, resolution);\n const source = new TiffPixelSource(indexer, dtype, tileSize, shape, labels, meta);\n return source;\n });\n\n return {data, metadata: imgMeta};\n}\n"],"file":"load-ome-tiff.js"}
1
+ {"version":3,"sources":["../../../../src/lib/ome/load-ome-tiff.ts"],"names":["isOmeTiff","img","fileDirectory","ImageDescription","includes","loadOmeTiff","tiff","firstImage","SubIFDs","PhotometricInterpretation","photometricInterpretation","omexml","levels","pyramidIndexer","length","imgMeta","labels","getShape","physicalSizes","dtype","tileSize","getTileWidth","meta","data","Array","from","map","_","resolution","shape","indexer","sel","source","TiffPixelSource","metadata"],"mappings":";;;;;;;;;;AAEA;;AACA;;AACA;;AACA;;AAGO,MAAMA,SAAS,GAAIC,GAAD,IAAuBA,GAAG,CAACC,aAAJ,CAAkBC,gBAAlB,CAAmCC,QAAnC,CAA4C,MAA5C,CAAzC;;;;AAEA,eAAeC,WAAf,CAA2BC,IAA3B,EAA0CC,UAA1C,EAAoE;AAEzE,QAAM;AACJJ,IAAAA,gBADI;AAEJK,IAAAA,OAFI;AAGJC,IAAAA,yBAAyB,EAAEC;AAHvB,MAIFH,UAAU,CAACL,aAJf;AAKA,QAAMS,MAAM,GAAG,wBAAWR,gBAAX,CAAf;AAMA,MAAIS,MAAJ;AACA,MAAIC,cAAJ;;AAEA,MAAIL,OAAJ,EAAa;AAEXI,IAAAA,MAAM,GAAGJ,OAAO,CAACM,MAAR,GAAiB,CAA1B;AACAD,IAAAA,cAAc,GAAG,sCAAoBP,IAApB,EAA0BK,MAA1B,CAAjB;AACD,GAJD,MAIO;AAELC,IAAAA,MAAM,GAAGD,MAAM,CAACG,MAAhB;AACAD,IAAAA,cAAc,GAAG,sCAAoBP,IAApB,EAA0BK,MAA1B,CAAjB;AACD;;AAGD,QAAMI,OAAO,GAAGJ,MAAM,CAAC,CAAD,CAAtB;AACA,QAAM;AAACK,IAAAA,MAAD;AAASC,IAAAA,QAAT;AAAmBC,IAAAA,aAAnB;AAAkCC,IAAAA;AAAlC,MAA2C,qCAAsBJ,OAAtB,CAAjD;AACA,QAAMK,QAAQ,GAAGb,UAAU,CAACc,YAAX,EAAjB;AACA,QAAMC,IAAI,GAAG;AAACZ,IAAAA,yBAAD;AAA4BQ,IAAAA;AAA5B,GAAb;AAEA,QAAMK,IAAI,GAAGC,KAAK,CAACC,IAAN,CAAW;AAACX,IAAAA,MAAM,EAAEF;AAAT,GAAX,EAA6Bc,GAA7B,CAAiC,CAACC,CAAD,EAAIC,UAAJ,KAAmB;AAC/D,UAAMC,KAAK,GAAGZ,QAAQ,CAACW,UAAD,CAAtB;;AACA,UAAME,OAAO,GAAIC,GAAD,IAA2BlB,cAAc,CAACkB,GAAD,EAAMH,UAAN,CAAzD;;AACA,UAAMI,MAAM,GAAG,IAAIC,wBAAJ,CAAoBH,OAApB,EAA6BX,KAA7B,EAAoCC,QAApC,EAA8CS,KAA9C,EAAqDb,MAArD,EAA6DM,IAA7D,CAAf;AACA,WAAOU,MAAP;AACD,GALY,CAAb;AAOA,SAAO;AAACT,IAAAA,IAAD;AAAOW,IAAAA,QAAQ,EAAEnB;AAAjB,GAAP;AACD","sourcesContent":["import type {GeoTIFF, GeoTIFFImage} from 'geotiff';\n\nimport TiffPixelSource from '../tiff-pixel-source';\nimport {getOmeLegacyIndexer, getOmeSubIFDIndexer, OmeTiffIndexer} from './ome-indexers';\nimport {getOmePixelSourceMeta} from './ome-utils';\nimport {fromString} from './omexml';\nimport type {OmeTiffSelection} from './ome-indexers';\n\nexport const isOmeTiff = (img: GeoTIFFImage) => img.fileDirectory.ImageDescription.includes('<OME');\n\nexport async function loadOmeTiff(tiff: GeoTIFF, firstImage: GeoTIFFImage) {\n // Get first image from tiff and inspect OME-XML metadata\n const {\n ImageDescription,\n SubIFDs,\n PhotometricInterpretation: photometricInterpretation\n } = firstImage.fileDirectory;\n const omexml = fromString(ImageDescription);\n\n /*\n * Image pyramids are stored differently between versions of Bioformats.\n * Thus we need a different indexer depending on which format we have.\n */\n let levels: number;\n let pyramidIndexer: OmeTiffIndexer;\n\n if (SubIFDs) {\n // Image is >= Bioformats 6.0 and resolutions are stored using SubIFDs.\n levels = SubIFDs.length + 1;\n pyramidIndexer = getOmeSubIFDIndexer(tiff, omexml);\n } else {\n // Image is legacy format; resolutions are stored as separate images.\n levels = omexml.length;\n pyramidIndexer = getOmeLegacyIndexer(tiff, omexml);\n }\n\n // TODO: The OmeTIFF loader only works for the _first_ image in the metadata.\n const imgMeta = omexml[0];\n const {labels, getShape, physicalSizes, dtype} = getOmePixelSourceMeta(imgMeta);\n const tileSize = firstImage.getTileWidth();\n const meta = {photometricInterpretation, physicalSizes};\n\n const data = Array.from({length: levels}).map((_, resolution) => {\n const shape = getShape(resolution);\n const indexer = (sel: OmeTiffSelection) => pyramidIndexer(sel, resolution);\n const source = new TiffPixelSource(indexer, dtype, tileSize, shape, labels, meta);\n return source;\n });\n\n return {data, metadata: imgMeta};\n}\n"],"file":"load-ome-tiff.js"}
@@ -1,161 +1,119 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  exports.getOmeLegacyIndexer = getOmeLegacyIndexer;
9
7
  exports.getOmeSubIFDIndexer = getOmeSubIFDIndexer;
10
8
 
11
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
12
-
13
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
14
-
15
9
  function getOmeLegacyIndexer(tiff, rootMeta) {
16
- var imgMeta = rootMeta[0];
17
- var _imgMeta$Pixels = imgMeta.Pixels,
18
- SizeT = _imgMeta$Pixels.SizeT,
19
- SizeC = _imgMeta$Pixels.SizeC,
20
- SizeZ = _imgMeta$Pixels.SizeZ;
21
- var ifdIndexer = getOmeIFDIndexer(imgMeta);
22
- return function (sel, pyramidLevel) {
23
- var index = ifdIndexer(sel);
24
- var pyramidIndex = pyramidLevel * SizeZ * SizeT * SizeC;
10
+ const imgMeta = rootMeta[0];
11
+ const {
12
+ SizeT,
13
+ SizeC,
14
+ SizeZ
15
+ } = imgMeta.Pixels;
16
+ const ifdIndexer = getOmeIFDIndexer(imgMeta);
17
+ return (sel, pyramidLevel) => {
18
+ const index = ifdIndexer(sel);
19
+ const pyramidIndex = pyramidLevel * SizeZ * SizeT * SizeC;
25
20
  return tiff.getImage(index + pyramidIndex);
26
21
  };
27
22
  }
28
23
 
29
24
  function getOmeSubIFDIndexer(tiff, rootMeta) {
30
- var imgMeta = rootMeta[0];
31
- var ifdIndexer = getOmeIFDIndexer(imgMeta);
32
- var ifdCache = new Map();
33
- return function () {
34
- var _ref = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(sel, pyramidLevel) {
35
- var index, baseImage, SubIFDs, key, subIfdOffset, ifd;
36
- return _regenerator.default.wrap(function _callee$(_context) {
37
- while (1) {
38
- switch (_context.prev = _context.next) {
39
- case 0:
40
- index = ifdIndexer(sel);
41
- _context.next = 3;
42
- return tiff.getImage(index);
43
-
44
- case 3:
45
- baseImage = _context.sent;
46
-
47
- if (!(pyramidLevel === 0)) {
48
- _context.next = 6;
49
- break;
50
- }
51
-
52
- return _context.abrupt("return", baseImage);
53
-
54
- case 6:
55
- SubIFDs = baseImage.fileDirectory.SubIFDs;
56
-
57
- if (SubIFDs) {
58
- _context.next = 9;
59
- break;
60
- }
61
-
62
- throw Error('Indexing Error: OME-TIFF is missing SubIFDs.');
63
-
64
- case 9:
65
- key = "".concat(sel.t, "-").concat(sel.c, "-").concat(sel.z, "-").concat(pyramidLevel);
66
-
67
- if (!ifdCache.has(key)) {
68
- subIfdOffset = SubIFDs[pyramidLevel - 1];
69
- ifdCache.set(key, tiff.parseFileDirectoryAt(subIfdOffset));
70
- }
71
-
72
- _context.next = 13;
73
- return ifdCache.get(key);
74
-
75
- case 13:
76
- ifd = _context.sent;
77
- return _context.abrupt("return", new baseImage.constructor(ifd.fileDirectory, ifd.geoKeyDirectory, tiff.dataView, tiff.littleEndian, tiff.cache, tiff.source));
78
-
79
- case 15:
80
- case "end":
81
- return _context.stop();
82
- }
83
- }
84
- }, _callee);
85
- }));
86
-
87
- return function (_x, _x2) {
88
- return _ref.apply(this, arguments);
89
- };
90
- }();
25
+ const imgMeta = rootMeta[0];
26
+ const ifdIndexer = getOmeIFDIndexer(imgMeta);
27
+ const ifdCache = new Map();
28
+ return async (sel, pyramidLevel) => {
29
+ const index = ifdIndexer(sel);
30
+ const baseImage = await tiff.getImage(index);
31
+
32
+ if (pyramidLevel === 0) {
33
+ return baseImage;
34
+ }
35
+
36
+ const {
37
+ SubIFDs
38
+ } = baseImage.fileDirectory;
39
+
40
+ if (!SubIFDs) {
41
+ throw Error('Indexing Error: OME-TIFF is missing SubIFDs.');
42
+ }
43
+
44
+ const key = "".concat(sel.t, "-").concat(sel.c, "-").concat(sel.z, "-").concat(pyramidLevel);
45
+
46
+ if (!ifdCache.has(key)) {
47
+ const subIfdOffset = SubIFDs[pyramidLevel - 1];
48
+ ifdCache.set(key, tiff.parseFileDirectoryAt(subIfdOffset));
49
+ }
50
+
51
+ const ifd = await ifdCache.get(key);
52
+ return new baseImage.constructor(ifd.fileDirectory, ifd.geoKeyDirectory, tiff.dataView, tiff.littleEndian, tiff.cache, tiff.source);
53
+ };
91
54
  }
92
55
 
93
56
  function getOmeIFDIndexer(imgMeta) {
94
- var _imgMeta$Pixels2 = imgMeta.Pixels,
95
- SizeC = _imgMeta$Pixels2.SizeC,
96
- SizeZ = _imgMeta$Pixels2.SizeZ,
97
- SizeT = _imgMeta$Pixels2.SizeT,
98
- DimensionOrder = _imgMeta$Pixels2.DimensionOrder;
57
+ const {
58
+ SizeC,
59
+ SizeZ,
60
+ SizeT,
61
+ DimensionOrder
62
+ } = imgMeta.Pixels;
99
63
 
100
64
  switch (DimensionOrder) {
101
65
  case 'XYZCT':
102
66
  {
103
- return function (_ref2) {
104
- var t = _ref2.t,
105
- c = _ref2.c,
106
- z = _ref2.z;
107
- return t * SizeZ * SizeC + c * SizeZ + z;
108
- };
67
+ return ({
68
+ t,
69
+ c,
70
+ z
71
+ }) => t * SizeZ * SizeC + c * SizeZ + z;
109
72
  }
110
73
 
111
74
  case 'XYZTC':
112
75
  {
113
- return function (_ref3) {
114
- var t = _ref3.t,
115
- c = _ref3.c,
116
- z = _ref3.z;
117
- return c * SizeZ * SizeT + t * SizeZ + z;
118
- };
76
+ return ({
77
+ t,
78
+ c,
79
+ z
80
+ }) => c * SizeZ * SizeT + t * SizeZ + z;
119
81
  }
120
82
 
121
83
  case 'XYCTZ':
122
84
  {
123
- return function (_ref4) {
124
- var t = _ref4.t,
125
- c = _ref4.c,
126
- z = _ref4.z;
127
- return z * SizeC * SizeT + t * SizeC + c;
128
- };
85
+ return ({
86
+ t,
87
+ c,
88
+ z
89
+ }) => z * SizeC * SizeT + t * SizeC + c;
129
90
  }
130
91
 
131
92
  case 'XYCZT':
132
93
  {
133
- return function (_ref5) {
134
- var t = _ref5.t,
135
- c = _ref5.c,
136
- z = _ref5.z;
137
- return t * SizeC * SizeZ + z * SizeC + c;
138
- };
94
+ return ({
95
+ t,
96
+ c,
97
+ z
98
+ }) => t * SizeC * SizeZ + z * SizeC + c;
139
99
  }
140
100
 
141
101
  case 'XYTCZ':
142
102
  {
143
- return function (_ref6) {
144
- var t = _ref6.t,
145
- c = _ref6.c,
146
- z = _ref6.z;
147
- return z * SizeT * SizeC + c * SizeT + t;
148
- };
103
+ return ({
104
+ t,
105
+ c,
106
+ z
107
+ }) => z * SizeT * SizeC + c * SizeT + t;
149
108
  }
150
109
 
151
110
  case 'XYTZC':
152
111
  {
153
- return function (_ref7) {
154
- var t = _ref7.t,
155
- c = _ref7.c,
156
- z = _ref7.z;
157
- return c * SizeT * SizeZ + z * SizeT + t;
158
- };
112
+ return ({
113
+ t,
114
+ c,
115
+ z
116
+ }) => c * SizeT * SizeZ + z * SizeT + t;
159
117
  }
160
118
 
161
119
  default: