createBlob.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. /**
  2. * Abstracts constructing a Blob object, so it also works in older
  3. * browsers that don't support the native Blob constructor. (i.e.
  4. * old QtWebKit versions, at least).
  5. * Abstracts constructing a Blob object, so it also works in older
  6. * browsers that don't support the native Blob constructor. (i.e.
  7. * old QtWebKit versions, at least).
  8. *
  9. * @param parts
  10. * @param properties
  11. */
  12. export function createBlob(parts, properties) {
  13. /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */
  14. parts = parts || [];
  15. properties = properties || {};
  16. try {
  17. return new Blob(parts, properties);
  18. }
  19. catch (e) {
  20. if (e.name !== 'TypeError') {
  21. throw e;
  22. }
  23. //tslint:disable-next-line:variable-name
  24. const Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder
  25. : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder
  26. : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder
  27. : WebKitBlobBuilder;
  28. const builder = new Builder();
  29. for (let i = 0; i < parts.length; i += 1) {
  30. builder.append(parts[i]);
  31. }
  32. return builder.getBlob(properties.type);
  33. }
  34. }
  35. //# sourceMappingURL=createBlob.js.map