@loaders.gl/images 4.2.0-alpha.4 → 4.2.0-alpha.5

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 (57) hide show
  1. package/dist/dist.dev.js +87 -40
  2. package/dist/dist.min.js +9 -0
  3. package/dist/image-loader.d.ts +1 -1
  4. package/dist/image-loader.d.ts.map +1 -1
  5. package/dist/image-loader.js +30 -15
  6. package/dist/image-writer.d.ts +1 -1
  7. package/dist/image-writer.d.ts.map +1 -1
  8. package/dist/image-writer.js +16 -13
  9. package/dist/index.cjs +23 -22
  10. package/dist/index.cjs.map +7 -0
  11. package/dist/index.d.ts +9 -9
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +8 -2
  14. package/dist/lib/category-api/binary-image-api.js +131 -86
  15. package/dist/lib/category-api/image-format.js +86 -46
  16. package/dist/lib/category-api/image-type.d.ts +1 -1
  17. package/dist/lib/category-api/image-type.d.ts.map +1 -1
  18. package/dist/lib/category-api/image-type.js +35 -26
  19. package/dist/lib/category-api/parse-isobmff-binary.js +81 -29
  20. package/dist/lib/category-api/parsed-image-api.d.ts +1 -1
  21. package/dist/lib/category-api/parsed-image-api.d.ts.map +1 -1
  22. package/dist/lib/category-api/parsed-image-api.js +49 -41
  23. package/dist/lib/encoders/encode-image.d.ts +1 -1
  24. package/dist/lib/encoders/encode-image.d.ts.map +1 -1
  25. package/dist/lib/encoders/encode-image.js +67 -51
  26. package/dist/lib/parsers/parse-image.d.ts +2 -2
  27. package/dist/lib/parsers/parse-image.d.ts.map +1 -1
  28. package/dist/lib/parsers/parse-image.js +41 -34
  29. package/dist/lib/parsers/parse-to-image-bitmap.d.ts +1 -1
  30. package/dist/lib/parsers/parse-to-image-bitmap.d.ts.map +1 -1
  31. package/dist/lib/parsers/parse-to-image-bitmap.js +45 -27
  32. package/dist/lib/parsers/parse-to-image.d.ts +1 -1
  33. package/dist/lib/parsers/parse-to-image.d.ts.map +1 -1
  34. package/dist/lib/parsers/parse-to-image.js +38 -26
  35. package/dist/lib/parsers/parse-to-node-image.d.ts +2 -2
  36. package/dist/lib/parsers/parse-to-node-image.d.ts.map +1 -1
  37. package/dist/lib/parsers/parse-to-node-image.js +7 -8
  38. package/dist/lib/parsers/svg-utils.js +27 -19
  39. package/dist/lib/utils/version.js +3 -1
  40. package/dist/types.js +0 -1
  41. package/package.json +10 -6
  42. package/dist/image-loader.js.map +0 -1
  43. package/dist/image-writer.js.map +0 -1
  44. package/dist/index.js.map +0 -1
  45. package/dist/lib/category-api/binary-image-api.js.map +0 -1
  46. package/dist/lib/category-api/image-format.js.map +0 -1
  47. package/dist/lib/category-api/image-type.js.map +0 -1
  48. package/dist/lib/category-api/parse-isobmff-binary.js.map +0 -1
  49. package/dist/lib/category-api/parsed-image-api.js.map +0 -1
  50. package/dist/lib/encoders/encode-image.js.map +0 -1
  51. package/dist/lib/parsers/parse-image.js.map +0 -1
  52. package/dist/lib/parsers/parse-to-image-bitmap.js.map +0 -1
  53. package/dist/lib/parsers/parse-to-image.js.map +0 -1
  54. package/dist/lib/parsers/parse-to-node-image.js.map +0 -1
  55. package/dist/lib/parsers/svg-utils.js.map +0 -1
  56. package/dist/lib/utils/version.js.map +0 -1
  57. package/dist/types.js.map +0 -1
package/dist/dist.dev.js CHANGED
@@ -2,14 +2,19 @@
2
2
  if (typeof exports === 'object' && typeof module === 'object')
3
3
  module.exports = factory();
4
4
  else if (typeof define === 'function' && define.amd) define([], factory);
5
- else if (typeof exports === 'object') exports['loader'] = factory();
6
- else root['loader'] = factory();})(globalThis, function () {
5
+ else if (typeof exports === 'object') exports['loaders'] = factory();
6
+ else root['loaders'] = factory();})(globalThis, function () {
7
7
  "use strict";
8
8
  var __exports__ = (() => {
9
+ var __create = Object.create;
9
10
  var __defProp = Object.defineProperty;
10
11
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
11
12
  var __getOwnPropNames = Object.getOwnPropertyNames;
13
+ var __getProtoOf = Object.getPrototypeOf;
12
14
  var __hasOwnProp = Object.prototype.hasOwnProperty;
15
+ var __commonJS = (cb, mod) => function __require() {
16
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
17
+ };
13
18
  var __export = (target, all) => {
14
19
  for (var name in all)
15
20
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -22,11 +27,27 @@ var __exports__ = (() => {
22
27
  }
23
28
  return to;
24
29
  };
30
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
31
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
32
+ // If the importer is in node compatibility mode or this is not an ESM
33
+ // file that has been converted to a CommonJS file using a Babel-
34
+ // compatible transform (i.e. "__esModule" has not been set), then set
35
+ // "default" to the CommonJS "module.exports" for node compatibility.
36
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
37
+ mod
38
+ ));
25
39
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
26
40
 
27
- // src/index.ts
28
- var src_exports = {};
29
- __export(src_exports, {
41
+ // external-global-plugin:@loaders.gl/core
42
+ var require_core = __commonJS({
43
+ "external-global-plugin:@loaders.gl/core"(exports, module) {
44
+ module.exports = globalThis.loaders;
45
+ }
46
+ });
47
+
48
+ // bundle.ts
49
+ var bundle_exports = {};
50
+ __export(bundle_exports, {
30
51
  ImageLoader: () => ImageLoader,
31
52
  ImageWriter: () => ImageWriter,
32
53
  getBinaryImageMetadata: () => getBinaryImageMetadata,
@@ -40,9 +61,10 @@ var __exports__ = (() => {
40
61
  isImageTypeSupported: () => isImageTypeSupported,
41
62
  loadImage: () => loadImage
42
63
  });
64
+ __reExport(bundle_exports, __toESM(require_core(), 1));
43
65
 
44
66
  // src/lib/utils/version.ts
45
- var VERSION = true ? "4.2.0-alpha.4" : "latest";
67
+ var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
46
68
 
47
69
  // ../loader-utils/src/lib/env-utils/assert.ts
48
70
  function assert(condition, message) {
@@ -62,7 +84,10 @@ var __exports__ = (() => {
62
84
  var window_ = globals.window || globals.self || globals.global || {};
63
85
  var global_ = globals.global || globals.self || globals.window || {};
64
86
  var document_ = globals.document || {};
65
- var isBrowser = Boolean(typeof process !== "object" || String(process) !== "[object process]" || process.browser);
87
+ var isBrowser = (
88
+ // @ts-ignore process does not exist on browser
89
+ Boolean(typeof process !== "object" || String(process) !== "[object process]" || process.browser)
90
+ );
66
91
  var matches = typeof process !== "undefined" && process.version && /v([0-9]*)/.exec(process.version);
67
92
  var nodeVersion = matches && parseFloat(matches[1]) || 0;
68
93
 
@@ -257,10 +282,7 @@ var __exports__ = (() => {
257
282
  switch (brandMajor) {
258
283
  case "avif":
259
284
  case "avis":
260
- return {
261
- extension: "avif",
262
- mimeType: "image/avif"
263
- };
285
+ return { extension: "avif", mimeType: "image/avif" };
264
286
  default:
265
287
  return null;
266
288
  }
@@ -296,6 +318,7 @@ var __exports__ = (() => {
296
318
  }
297
319
  return {
298
320
  mimeType: mediaType.mimeType,
321
+ // TODO - decode width and height
299
322
  width: 0,
300
323
  height: 0
301
324
  };
@@ -342,10 +365,7 @@ var __exports__ = (() => {
342
365
  if (!isJpeg) {
343
366
  return null;
344
367
  }
345
- const {
346
- tableMarkers,
347
- sofMarkers
348
- } = getJpegMarkers();
368
+ const { tableMarkers, sofMarkers } = getJpegMarkers();
349
369
  let i = 2;
350
370
  while (i + 9 < dataView.byteLength) {
351
371
  const marker = dataView.getUint16(i, BIG_ENDIAN);
@@ -353,7 +373,9 @@ var __exports__ = (() => {
353
373
  return {
354
374
  mimeType: "image/jpeg",
355
375
  height: dataView.getUint16(i + 5, BIG_ENDIAN),
376
+ // Number of lines
356
377
  width: dataView.getUint16(i + 7, BIG_ENDIAN)
378
+ // Number of pixels per line
357
379
  };
358
380
  }
359
381
  if (!tableMarkers.has(marker)) {
@@ -369,11 +391,23 @@ var __exports__ = (() => {
369
391
  for (let i = 65504; i < 65520; ++i) {
370
392
  tableMarkers.add(i);
371
393
  }
372
- const sofMarkers = /* @__PURE__ */ new Set([65472, 65473, 65474, 65475, 65477, 65478, 65479, 65481, 65482, 65483, 65485, 65486, 65487, 65502]);
373
- return {
374
- tableMarkers,
375
- sofMarkers
376
- };
394
+ const sofMarkers = /* @__PURE__ */ new Set([
395
+ 65472,
396
+ 65473,
397
+ 65474,
398
+ 65475,
399
+ 65477,
400
+ 65478,
401
+ 65479,
402
+ 65481,
403
+ 65482,
404
+ 65483,
405
+ 65485,
406
+ 65486,
407
+ 65487,
408
+ 65502
409
+ ]);
410
+ return { tableMarkers, sofMarkers };
377
411
  }
378
412
  function toDataView(data) {
379
413
  if (data instanceof DataView) {
@@ -390,9 +424,7 @@ var __exports__ = (() => {
390
424
 
391
425
  // src/lib/parsers/parse-to-node-image.ts
392
426
  async function parseToNodeImage(arrayBuffer, options) {
393
- const {
394
- mimeType
395
- } = getBinaryImageMetadata(arrayBuffer) || {};
427
+ const { mimeType } = getBinaryImageMetadata(arrayBuffer) || {};
396
428
  const parseImageNode2 = globalThis.loaders?.parseImageNode;
397
429
  assert(parseImageNode2);
398
430
  return await parseImageNode2(arrayBuffer, mimeType);
@@ -403,9 +435,7 @@ var __exports__ = (() => {
403
435
  options = options || {};
404
436
  const imageOptions = options.image || {};
405
437
  const imageType = imageOptions.type || "auto";
406
- const {
407
- url
408
- } = context || {};
438
+ const { url } = context || {};
409
439
  const loadType = getLoadableImageType(imageType);
410
440
  let image;
411
441
  switch (loadType) {
@@ -439,12 +469,23 @@ var __exports__ = (() => {
439
469
 
440
470
  // src/image-loader.ts
441
471
  var EXTENSIONS = ["png", "jpg", "jpeg", "gif", "webp", "bmp", "ico", "svg", "avif"];
442
- var MIME_TYPES = ["image/png", "image/jpeg", "image/gif", "image/webp", "image/avif", "image/bmp", "image/vnd.microsoft.icon", "image/svg+xml"];
472
+ var MIME_TYPES = [
473
+ "image/png",
474
+ "image/jpeg",
475
+ "image/gif",
476
+ "image/webp",
477
+ "image/avif",
478
+ "image/bmp",
479
+ "image/vnd.microsoft.icon",
480
+ "image/svg+xml"
481
+ ];
443
482
  var DEFAULT_IMAGE_LOADER_OPTIONS = {
444
483
  image: {
445
484
  type: "auto",
446
485
  decode: true
486
+ // if format is HTML
447
487
  }
488
+ // imagebitmap: {} - passes (platform dependent) parameters to ImageBitmap constructor
448
489
  };
449
490
  var ImageLoader = {
450
491
  id: "image",
@@ -454,6 +495,7 @@ var __exports__ = (() => {
454
495
  mimeTypes: MIME_TYPES,
455
496
  extensions: EXTENSIONS,
456
497
  parse: parseImage,
498
+ // TODO: byteOffset, byteLength;
457
499
  tests: [(arrayBuffer) => Boolean(getBinaryImageMetadata(new DataView(arrayBuffer)))],
458
500
  options: DEFAULT_IMAGE_LOADER_OPTIONS
459
501
  };
@@ -463,20 +505,12 @@ var __exports__ = (() => {
463
505
  async function encodeImage(image, options) {
464
506
  options = options || {};
465
507
  options.image = options.image || {};
466
- return encodeImageNode ? encodeImageNode(image, {
467
- type: options.image.mimeType
468
- }) : encodeImageInBrowser(image, options);
508
+ return encodeImageNode ? encodeImageNode(image, { type: options.image.mimeType }) : encodeImageInBrowser(image, options);
469
509
  }
470
510
  var qualityParamSupported = true;
471
511
  async function encodeImageInBrowser(image, options) {
472
- const {
473
- mimeType,
474
- jpegQuality
475
- } = options.image;
476
- const {
477
- width,
478
- height
479
- } = getImageSize(image);
512
+ const { mimeType, jpegQuality } = options.image;
513
+ const { width, height } = getImageSize(image);
480
514
  const canvas = document.createElement("canvas");
481
515
  canvas.width = width;
482
516
  canvas.height = height;
@@ -533,7 +567,19 @@ var __exports__ = (() => {
533
567
  };
534
568
 
535
569
  // src/lib/category-api/image-format.ts
536
- var MIME_TYPES2 = ["image/png", "image/jpeg", "image/gif", "image/webp", "image/avif", "image/tiff", "image/svg", "image/svg+xml", "image/bmp", "image/vnd.microsoft.icon"];
570
+ var MIME_TYPES2 = [
571
+ "image/png",
572
+ "image/jpeg",
573
+ "image/gif",
574
+ "image/webp",
575
+ "image/avif",
576
+ "image/tiff",
577
+ // TODO - what is the correct type for SVG
578
+ "image/svg",
579
+ "image/svg+xml",
580
+ "image/bmp",
581
+ "image/vnd.microsoft.icon"
582
+ ];
537
583
  var mimeTypeSupportedPromise = null;
538
584
  async function getSupportedImageFormats() {
539
585
  if (mimeTypeSupportedPromise) {
@@ -573,6 +619,7 @@ var __exports__ = (() => {
573
619
  }
574
620
  var TEST_IMAGE = {
575
621
  "image/avif": "data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=",
622
+ // Lossy test image. Support for lossy images doesn't guarantee support for all WebP images.
576
623
  "image/webp": "data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA"
577
624
  };
578
625
  async function checkBrowserImageFormatSupportAsync(mimeType) {
@@ -601,7 +648,7 @@ var __exports__ = (() => {
601
648
  function loadImage() {
602
649
  throw new Error("loadImage has moved to @loaders.gl/textures");
603
650
  }
604
- return __toCommonJS(src_exports);
651
+ return __toCommonJS(bundle_exports);
605
652
  })();
606
653
  return __exports__;
607
654
  });
@@ -0,0 +1,9 @@
1
+ (function webpackUniversalModuleDefinition(root, factory) {
2
+ if (typeof exports === 'object' && typeof module === 'object')
3
+ module.exports = factory();
4
+ else if (typeof define === 'function' && define.amd) define([], factory);
5
+ else if (typeof exports === 'object') exports['loaders'] = factory();
6
+ else root['loaders'] = factory();})(globalThis, function () {
7
+ "use strict";var __exports__=(()=>{var q=Object.create;var x=Object.defineProperty;var ee=Object.getOwnPropertyDescriptor;var te=Object.getOwnPropertyNames;var re=Object.getPrototypeOf,oe=Object.prototype.hasOwnProperty;var ae=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ne=(e,t)=>{for(var r in t)x(e,r,{get:t[r],enumerable:!0})},w=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of te(t))!oe.call(e,a)&&a!==r&&x(e,a,{get:()=>t[a],enumerable:!(o=ee(t,a))||o.enumerable});return e},I=(e,t,r)=>(w(e,t,"default"),r&&w(r,t,"default")),ie=(e,t,r)=>(r=e!=null?q(re(e)):{},w(t||!e||!e.__esModule?x(r,"default",{value:e,enumerable:!0}):r,e)),se=e=>w(x({},"__esModule",{value:!0}),e);var k=ae((Je,V)=>{V.exports=globalThis.loaders});var l={};ne(l,{ImageLoader:()=>Q,ImageWriter:()=>Z,getBinaryImageMetadata:()=>g,getDefaultImageType:()=>B,getImageData:()=>A,getImageSize:()=>b,getImageType:()=>F,getSupportedImageFormats:()=>z,isImage:()=>v,isImageFormatSupported:()=>H,isImageTypeSupported:()=>h,loadImage:()=>We});I(l,ie(k(),1));var y="4.2.0-alpha.4";function p(e,t){if(!e)throw new Error(t||"loader assertion failed.")}var s={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},me=s.self||s.window||s.global||{},fe=s.window||s.self||s.global||{},ce=s.global||s.self||s.window||{},ge=s.document||{};var c=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var O=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),pe=O&&parseFloat(O[1])||0;var Ae=globalThis.loaders?.parseImageNode,E=typeof Image<"u",D=typeof ImageBitmap<"u",de=Boolean(Ae),U=c?!0:de;function h(e){switch(e){case"auto":return D||E||U;case"imagebitmap":return D;case"image":return E;case"data":return U;default:throw new Error(`@loaders.gl/images: image ${e} not supported in this environment`)}}function B(){if(D)return"imagebitmap";if(E)return"image";if(U)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function v(e){return Boolean(L(e))}function F(e){let t=L(e);if(!t)throw new Error("Not an image");return t}function b(e){return A(e)}function A(e){switch(F(e)){case"data":return e;case"image":case"imagebitmap":let t=document.createElement("canvas"),r=t.getContext("2d");if(!r)throw new Error("getImageData");return t.width=e.width,t.height=e.height,r.drawImage(e,0,0),r.getImageData(0,0,e.width,e.height);default:throw new Error("getImageData")}}function L(e){return typeof ImageBitmap<"u"&&e instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&e instanceof Image?"image":e&&typeof e=="object"&&e.data&&e.width&&e.height?"data":null}var ue=/^data:image\/svg\+xml/,le=/\.svg((\?|#).*)?$/;function T(e){return e&&(ue.test(e)||le.test(e))}function R(e,t){if(T(t)){let o=new TextDecoder().decode(e);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(o=unescape(encodeURIComponent(o)))}catch(n){throw new Error(n.message)}return`data:image/svg+xml;base64,${btoa(o)}`}return N(e,t)}function N(e,t){if(T(t))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(e)])}async function S(e,t,r){let o=R(e,r),a=self.URL||self.webkitURL,n=typeof o!="string"&&a.createObjectURL(o);try{return await we(n||o,t)}finally{n&&a.revokeObjectURL(n)}}async function we(e,t){let r=new Image;return r.src=e,t.image&&t.image.decode&&r.decode?(await r.decode(),r):await new Promise((o,a)=>{try{r.onload=()=>o(r),r.onerror=n=>{let i=n instanceof Error?n.message:"error";a(new Error(i))}}catch(n){a(n)}})}var xe={},_=!0;async function G(e,t,r){let o;T(r)?o=await S(e,t,r):o=N(e,r);let a=t&&t.imagebitmap;return await Ie(o,a)}async function Ie(e,t=null){if((ye(t)||!_)&&(t=null),t)try{return await createImageBitmap(e,t)}catch(r){console.warn(r),_=!1}return await createImageBitmap(e)}function ye(e){for(let t in e||xe)return!1;return!0}function j(e){return!Te(e,"ftyp",4)||!(e[8]&96)?null:he(e)}function he(e){switch(Be(e,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function Be(e,t,r){return String.fromCharCode(...e.slice(t,r))}function be(e){return[...e].map(t=>t.charCodeAt(0))}function Te(e,t,r=0){let o=be(t);for(let a=0;a<o.length;++a)if(o[a]!==e[a+r])return!1;return!0}var m=!1,d=!0;function g(e){let t=u(e);return Ee(t)||Fe(t)||De(t)||Ue(t)||Se(t)}function Se(e){let t=new Uint8Array(e instanceof DataView?e.buffer:e),r=j(t);return r?{mimeType:r.mimeType,width:0,height:0}:null}function Ee(e){let t=u(e);return t.byteLength>=24&&t.getUint32(0,m)===2303741511?{mimeType:"image/png",width:t.getUint32(16,m),height:t.getUint32(20,m)}:null}function De(e){let t=u(e);return t.byteLength>=10&&t.getUint32(0,m)===1195984440?{mimeType:"image/gif",width:t.getUint16(6,d),height:t.getUint16(8,d)}:null}function Ue(e){let t=u(e);return t.byteLength>=14&&t.getUint16(0,m)===16973&&t.getUint32(2,d)===t.byteLength?{mimeType:"image/bmp",width:t.getUint32(18,d),height:t.getUint32(22,d)}:null}function Fe(e){let t=u(e);if(!(t.byteLength>=3&&t.getUint16(0,m)===65496&&t.getUint8(2)===255))return null;let{tableMarkers:o,sofMarkers:a}=Ne(),n=2;for(;n+9<t.byteLength;){let i=t.getUint16(n,m);if(a.has(i))return{mimeType:"image/jpeg",height:t.getUint16(n+5,m),width:t.getUint16(n+7,m)};if(!o.has(i))return null;n+=2,n+=t.getUint16(n,m)}return null}function Ne(){let e=new Set([65499,65476,65484,65501,65534]);for(let r=65504;r<65520;++r)e.add(r);return{tableMarkers:e,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function u(e){if(e instanceof DataView)return e;if(ArrayBuffer.isView(e))return new DataView(e.buffer);if(e instanceof ArrayBuffer)return new DataView(e);throw new Error("toDataView")}async function C(e,t){let{mimeType:r}=g(e)||{},o=globalThis.loaders?.parseImageNode;return p(o),await o(e,r)}async function W(e,t,r){t=t||{};let a=(t.image||{}).type||"auto",{url:n}=r||{},i=Me(a),f;switch(i){case"imagebitmap":f=await G(e,t,n);break;case"image":f=await S(e,t,n);break;case"data":f=await C(e,t);break;default:p(!1)}return a==="data"&&(f=A(f)),f}function Me(e){switch(e){case"auto":case"data":return B();default:return h(e),e}}var Pe=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],Ve=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],ke={image:{type:"auto",decode:!0}},Q={id:"image",module:"images",name:"Images",version:y,mimeTypes:Ve,extensions:Pe,parse:W,tests:[e=>Boolean(g(new DataView(e)))],options:ke};var Y=globalThis.loaders?.encodeImageNode;async function X(e,t){return t=t||{},t.image=t.image||{},Y?Y(e,{type:t.image.mimeType}):Oe(e,t)}var J=!0;async function Oe(e,t){let{mimeType:r,jpegQuality:o}=t.image,{width:a,height:n}=b(e),i=document.createElement("canvas");i.width=a,i.height=n,ve(e,i);let f=await new Promise(P=>{if(o&&J)try{i.toBlob(P,r,o);return}catch{J=!1}i.toBlob(P,r)});if(!f)throw new Error("image encoding failed");return await f.arrayBuffer()}function ve(e,t,r=0,o=0){if(r===0&&o===0&&typeof ImageBitmap<"u"&&e instanceof ImageBitmap){let n=t.getContext("bitmaprenderer");if(n)return n.transferFromImageBitmap(e),t}let a=t.getContext("2d");if(e.data){let n=new Uint8ClampedArray(e.data),i=new ImageData(n,e.width,e.height);return a.putImageData(i,0,0),t}return a.drawImage(e,0,0),t}var Z={name:"Images",id:"image",module:"images",version:y,extensions:["jpeg"],options:{image:{mimeType:"image/png",jpegQuality:null}},encode:X};var Le=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/tiff","image/svg","image/svg+xml","image/bmp","image/vnd.microsoft.icon"],$=null;async function z(){if($)return await $;let e=new Set;for(let t of Le)(c?await Ge(t):K(t))&&e.add(t);return e}var M={};function H(e){if(M[e]===void 0){let t=c?Re(e):K(e);M[e]=t}return M[e]}function K(e){let t=["image/png","image/jpeg","image/gif"],r=globalThis.loaders?.imageFormatsNode||t,o=globalThis.loaders?.parseImageNode;return Boolean(o)&&r.includes(e)}function Re(e){switch(e){case"image/avif":case"image/webp":return je(e);default:return!0}}var _e={"image/avif":"data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=","image/webp":"data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA"};async function Ge(e){let t=_e[e];return t?await Ce(t):!0}function je(e){try{return document.createElement("canvas").toDataURL(e).indexOf(`data:${e}`)===0}catch{return!1}}async function Ce(e){return new Promise(t=>{let r=new Image;r.src=e,r.onload=()=>t(r.height>0),r.onerror=()=>t(!1)})}function We(){throw new Error("loadImage has moved to @loaders.gl/textures")}return se(l);})();
8
+ return __exports__;
9
+ });
@@ -1,5 +1,5 @@
1
1
  import type { LoaderOptions, LoaderWithParser } from '@loaders.gl/loader-utils';
2
- import type { ImageType } from './types';
2
+ import type { ImageType } from "./types.js";
3
3
  export type ImageLoaderOptions = LoaderOptions & {
4
4
  image?: {
5
5
  type?: 'auto' | 'data' | 'imagebitmap' | 'image';
@@ -1 +1 @@
1
- {"version":3,"file":"image-loader.d.ts","sourceRoot":"","sources":["../src/image-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC9E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAkBvC,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC;QACjD,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC,CAAC;AAUF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,kBAAkB,CAW9E,CAAC"}
1
+ {"version":3,"file":"image-loader.d.ts","sourceRoot":"","sources":["../src/image-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC9E,OAAO,KAAK,EAAC,SAAS,EAAC,mBAAgB;AAkBvC,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC;QACjD,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC,CAAC;AAUF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,kBAAkB,CAW9E,CAAC"}
@@ -1,23 +1,38 @@
1
+ // import type { ImageType } from '@loaders.gl/schema';
1
2
  import { VERSION } from "./lib/utils/version.js";
2
3
  import { parseImage } from "./lib/parsers/parse-image.js";
3
4
  import { getBinaryImageMetadata } from "./lib/category-api/binary-image-api.js";
4
5
  const EXTENSIONS = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'bmp', 'ico', 'svg', 'avif'];
5
- const MIME_TYPES = ['image/png', 'image/jpeg', 'image/gif', 'image/webp', 'image/avif', 'image/bmp', 'image/vnd.microsoft.icon', 'image/svg+xml'];
6
+ const MIME_TYPES = [
7
+ 'image/png',
8
+ 'image/jpeg',
9
+ 'image/gif',
10
+ 'image/webp',
11
+ 'image/avif',
12
+ 'image/bmp',
13
+ 'image/vnd.microsoft.icon',
14
+ 'image/svg+xml'
15
+ ];
6
16
  const DEFAULT_IMAGE_LOADER_OPTIONS = {
7
- image: {
8
- type: 'auto',
9
- decode: true
10
- }
17
+ image: {
18
+ type: 'auto',
19
+ decode: true // if format is HTML
20
+ }
21
+ // imagebitmap: {} - passes (platform dependent) parameters to ImageBitmap constructor
11
22
  };
23
+ /**
24
+ * Loads a platform-specific image type
25
+ * Note: This type can be used as input data to WebGL texture creation
26
+ */
12
27
  export const ImageLoader = {
13
- id: 'image',
14
- module: 'images',
15
- name: 'Images',
16
- version: VERSION,
17
- mimeTypes: MIME_TYPES,
18
- extensions: EXTENSIONS,
19
- parse: parseImage,
20
- tests: [arrayBuffer => Boolean(getBinaryImageMetadata(new DataView(arrayBuffer)))],
21
- options: DEFAULT_IMAGE_LOADER_OPTIONS
28
+ id: 'image',
29
+ module: 'images',
30
+ name: 'Images',
31
+ version: VERSION,
32
+ mimeTypes: MIME_TYPES,
33
+ extensions: EXTENSIONS,
34
+ parse: parseImage,
35
+ // TODO: byteOffset, byteLength;
36
+ tests: [(arrayBuffer) => Boolean(getBinaryImageMetadata(new DataView(arrayBuffer)))],
37
+ options: DEFAULT_IMAGE_LOADER_OPTIONS
22
38
  };
23
- //# sourceMappingURL=image-loader.js.map
@@ -1,5 +1,5 @@
1
1
  import type { WriterWithEncoder, WriterOptions } from '@loaders.gl/loader-utils';
2
- import type { ImageDataType } from './types';
2
+ import type { ImageDataType } from "./types.js";
3
3
  export type ImageWriterOptions = WriterOptions & {
4
4
  image?: {
5
5
  mimeType?: 'image/png';
@@ -1 +1 @@
1
- {"version":3,"file":"image-writer.d.ts","sourceRoot":"","sources":["../src/image-writer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,iBAAiB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAC/E,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAI3C,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,KAAK,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,WAAW,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B,CAAC;CACH,CAAC;AAEF,4BAA4B;AAC5B,eAAO,MAAM,WAAW,EAAE,iBAAiB,CAAC,aAAa,EAAE,KAAK,EAAE,kBAAkB,CAanF,CAAC"}
1
+ {"version":3,"file":"image-writer.d.ts","sourceRoot":"","sources":["../src/image-writer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,iBAAiB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAC/E,OAAO,KAAK,EAAC,aAAa,EAAC,mBAAgB;AAI3C,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,KAAK,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,WAAW,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B,CAAC;CACH,CAAC;AAEF,4BAA4B;AAC5B,eAAO,MAAM,WAAW,EAAE,iBAAiB,CAAC,aAAa,EAAE,KAAK,EAAE,kBAAkB,CAanF,CAAC"}
@@ -1,17 +1,20 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { VERSION } from "./lib/utils/version.js";
2
5
  import { encodeImage } from "./lib/encoders/encode-image.js";
6
+ /** Writer for image data */
3
7
  export const ImageWriter = {
4
- name: 'Images',
5
- id: 'image',
6
- module: 'images',
7
- version: VERSION,
8
- extensions: ['jpeg'],
9
- options: {
10
- image: {
11
- mimeType: 'image/png',
12
- jpegQuality: null
13
- }
14
- },
15
- encode: encodeImage
8
+ name: 'Images',
9
+ id: 'image',
10
+ module: 'images',
11
+ version: VERSION,
12
+ extensions: ['jpeg'],
13
+ options: {
14
+ image: {
15
+ mimeType: 'image/png',
16
+ jpegQuality: null
17
+ }
18
+ },
19
+ encode: encodeImage
16
20
  };
17
- //# sourceMappingURL=image-writer.js.map
package/dist/index.cjs CHANGED
@@ -17,9 +17,9 @@ var __copyProps = (to, from, except, desc) => {
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
 
20
- // src/index.ts
21
- var src_exports = {};
22
- __export(src_exports, {
20
+ // dist/index.js
21
+ var dist_exports = {};
22
+ __export(dist_exports, {
23
23
  ImageLoader: () => ImageLoader,
24
24
  ImageWriter: () => ImageWriter,
25
25
  getBinaryImageMetadata: () => getBinaryImageMetadata,
@@ -33,15 +33,15 @@ __export(src_exports, {
33
33
  isImageTypeSupported: () => isImageTypeSupported,
34
34
  loadImage: () => loadImage
35
35
  });
36
- module.exports = __toCommonJS(src_exports);
36
+ module.exports = __toCommonJS(dist_exports);
37
37
 
38
- // src/lib/utils/version.ts
39
- var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
38
+ // dist/lib/utils/version.js
39
+ var VERSION = true ? "4.2.0-alpha.4" : "latest";
40
40
 
41
- // src/lib/parsers/parse-image.ts
41
+ // dist/lib/parsers/parse-image.js
42
42
  var import_loader_utils3 = require("@loaders.gl/loader-utils");
43
43
 
44
- // src/lib/category-api/image-type.ts
44
+ // dist/lib/category-api/image-type.js
45
45
  var import_loader_utils = require("@loaders.gl/loader-utils");
46
46
  var _a;
47
47
  var parseImageNode = (_a = globalThis.loaders) == null ? void 0 : _a.parseImageNode;
@@ -76,7 +76,7 @@ function getDefaultImageType() {
76
76
  throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js");
77
77
  }
78
78
 
79
- // src/lib/category-api/parsed-image-api.ts
79
+ // dist/lib/category-api/parsed-image-api.js
80
80
  function isImage(image) {
81
81
  return Boolean(getImageTypeOrNull(image));
82
82
  }
@@ -122,7 +122,7 @@ function getImageTypeOrNull(image) {
122
122
  return null;
123
123
  }
124
124
 
125
- // src/lib/parsers/svg-utils.ts
125
+ // dist/lib/parsers/svg-utils.js
126
126
  var SVG_DATA_URL_PATTERN = /^data:image\/svg\+xml/;
127
127
  var SVG_URL_PATTERN = /\.svg((\?|#).*)?$/;
128
128
  function isSVG(url) {
@@ -151,7 +151,7 @@ function getBlob(arrayBuffer, url) {
151
151
  return new Blob([new Uint8Array(arrayBuffer)]);
152
152
  }
153
153
 
154
- // src/lib/parsers/parse-to-image.ts
154
+ // dist/lib/parsers/parse-to-image.js
155
155
  async function parseToImage(arrayBuffer, options, url) {
156
156
  const blobOrDataUrl = getBlobOrSVGDataUrl(arrayBuffer, url);
157
157
  const URL = self.URL || self.webkitURL;
@@ -184,7 +184,7 @@ async function loadToImage(url, options) {
184
184
  });
185
185
  }
186
186
 
187
- // src/lib/parsers/parse-to-image-bitmap.ts
187
+ // dist/lib/parsers/parse-to-image-bitmap.js
188
188
  var EMPTY_OBJECT = {};
189
189
  var imagebitmapOptionsSupported = true;
190
190
  async function parseToImageBitmap(arrayBuffer, options, url) {
@@ -219,10 +219,10 @@ function isEmptyObject(object) {
219
219
  return true;
220
220
  }
221
221
 
222
- // src/lib/parsers/parse-to-node-image.ts
222
+ // dist/lib/parsers/parse-to-node-image.js
223
223
  var import_loader_utils2 = require("@loaders.gl/loader-utils");
224
224
 
225
- // src/lib/category-api/parse-isobmff-binary.ts
225
+ // dist/lib/category-api/parse-isobmff-binary.js
226
226
  function getISOBMFFMediaType(buffer) {
227
227
  if (!checkString(buffer, "ftyp", 4)) {
228
228
  return null;
@@ -258,7 +258,7 @@ function checkString(buffer, header, offset = 0) {
258
258
  return true;
259
259
  }
260
260
 
261
- // src/lib/category-api/binary-image-api.ts
261
+ // dist/lib/category-api/binary-image-api.js
262
262
  var BIG_ENDIAN = false;
263
263
  var LITTLE_ENDIAN = true;
264
264
  function getBinaryImageMetadata(binaryData) {
@@ -377,7 +377,7 @@ function toDataView(data) {
377
377
  throw new Error("toDataView");
378
378
  }
379
379
 
380
- // src/lib/parsers/parse-to-node-image.ts
380
+ // dist/lib/parsers/parse-to-node-image.js
381
381
  async function parseToNodeImage(arrayBuffer, options) {
382
382
  var _a3;
383
383
  const { mimeType } = getBinaryImageMetadata(arrayBuffer) || {};
@@ -386,7 +386,7 @@ async function parseToNodeImage(arrayBuffer, options) {
386
386
  return await parseImageNode2(arrayBuffer, mimeType);
387
387
  }
388
388
 
389
- // src/lib/parsers/parse-image.ts
389
+ // dist/lib/parsers/parse-image.js
390
390
  async function parseImage(arrayBuffer, options, context) {
391
391
  options = options || {};
392
392
  const imageOptions = options.image || {};
@@ -423,7 +423,7 @@ function getLoadableImageType(type) {
423
423
  }
424
424
  }
425
425
 
426
- // src/image-loader.ts
426
+ // dist/image-loader.js
427
427
  var EXTENSIONS = ["png", "jpg", "jpeg", "gif", "webp", "bmp", "ico", "svg", "avif"];
428
428
  var MIME_TYPES = [
429
429
  "image/png",
@@ -456,7 +456,7 @@ var ImageLoader = {
456
456
  options: DEFAULT_IMAGE_LOADER_OPTIONS
457
457
  };
458
458
 
459
- // src/lib/encoders/encode-image.ts
459
+ // dist/lib/encoders/encode-image.js
460
460
  var _a2;
461
461
  var encodeImageNode = (_a2 = globalThis.loaders) == null ? void 0 : _a2.encodeImageNode;
462
462
  async function encodeImage(image, options) {
@@ -507,7 +507,7 @@ function drawImageToCanvas(image, canvas, x = 0, y = 0) {
507
507
  return canvas;
508
508
  }
509
509
 
510
- // src/image-writer.ts
510
+ // dist/image-writer.js
511
511
  var ImageWriter = {
512
512
  name: "Images",
513
513
  id: "image",
@@ -523,7 +523,7 @@ var ImageWriter = {
523
523
  encode: encodeImage
524
524
  };
525
525
 
526
- // src/lib/category-api/image-format.ts
526
+ // dist/lib/category-api/image-format.js
527
527
  var import_loader_utils4 = require("@loaders.gl/loader-utils");
528
528
  var MIME_TYPES2 = [
529
529
  "image/png",
@@ -603,7 +603,8 @@ async function testBrowserImageFormatSupportAsync(testImageDataURL) {
603
603
  });
604
604
  }
605
605
 
606
- // src/index.ts
606
+ // dist/index.js
607
607
  function loadImage() {
608
608
  throw new Error("loadImage has moved to @loaders.gl/textures");
609
609
  }
610
+ //# sourceMappingURL=index.cjs.map