| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- /**
- * DevExtreme (exporter/file_saver.js)
- * Version: 19.1.16
- * Build date: Tue Oct 18 2022
- *
- * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED
- * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
- */
- "use strict";
- var _renderer = require("../core/renderer");
- var _renderer2 = _interopRequireDefault(_renderer);
- var _dom_adapter = require("../core/dom_adapter");
- var _dom_adapter2 = _interopRequireDefault(_dom_adapter);
- var _window = require("../core/utils/window");
- var _window2 = _interopRequireDefault(_window);
- var _events_engine = require("../events/core/events_engine");
- var _events_engine2 = _interopRequireDefault(_events_engine);
- var _ui = require("../ui/widget/ui.errors");
- var _ui2 = _interopRequireDefault(_ui);
- var _type = require("../core/utils/type");
- var _type2 = _interopRequireDefault(_type);
- var _console = require("../core/utils/console");
- function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : {
- "default": obj
- }
- }
- var window = _window2.default.getWindow();
- var navigator = _window2.default.getNavigator();
- var FILE_EXTESIONS = {
- EXCEL: "xlsx",
- CSS: "css",
- PNG: "png",
- JPEG: "jpeg",
- GIF: "gif",
- SVG: "svg",
- PDF: "pdf"
- };
- var MIME_TYPES = exports.MIME_TYPES = {
- CSS: "text/css",
- EXCEL: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
- PNG: "image/png",
- JPEG: "image/jpeg",
- GIF: "image/gif",
- SVG: "image/svg+xml",
- PDF: "application/pdf"
- };
- exports.fileSaver = {
- _revokeObjectURLTimeout: 3e4,
- _getDataUri: function(format, data) {
- return "data:" + MIME_TYPES[format] + ";base64," + data
- },
- _linkDownloader: function(fileName, href) {
- var exportLinkElement = _dom_adapter2.default.createElement("a");
- exportLinkElement.download = fileName;
- exportLinkElement.href = href;
- exportLinkElement.target = "_blank";
- return exportLinkElement
- },
- _formDownloader: function(proxyUrl, fileName, contentType, data) {
- var formAttributes = {
- method: "post",
- action: proxyUrl,
- enctype: "multipart/form-data"
- };
- var exportForm = (0, _renderer2.default)("<form>").css({
- display: "none"
- }).attr(formAttributes);
- exportForm.append('<input type="hidden" name="fileName" value="' + fileName + '" />');
- exportForm.append('<input type="hidden" name="contentType" value="' + contentType + '" />');
- exportForm.append('<input type="hidden" name="data" value="' + data + '" />');
- exportForm.appendTo("body");
- _events_engine2.default.trigger(exportForm, "submit");
- if (_events_engine2.default.trigger(exportForm, "submit")) {
- exportForm.remove()
- }
- },
- _saveByProxy: function(proxyUrl, fileName, format, data) {
- return this._formDownloader(proxyUrl, fileName, MIME_TYPES[format], data)
- },
- _winJSBlobSave: function(blob, fileName, format) {
- var savePicker = new Windows.Storage.Pickers.FileSavePicker;
- savePicker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.documentsLibrary;
- savePicker.fileTypeChoices.insert(MIME_TYPES[format], ["." + FILE_EXTESIONS[format]]);
- savePicker.suggestedFileName = fileName;
- savePicker.pickSaveFileAsync().then(function(file) {
- if (file) {
- file.openAsync(Windows.Storage.FileAccessMode.readWrite).then(function(outputStream) {
- var inputStream = blob.msDetachStream();
- Windows.Storage.Streams.RandomAccessStream.copyAsync(inputStream, outputStream).then(function() {
- outputStream.flushAsync().done(function() {
- inputStream.close();
- outputStream.close()
- })
- })
- })
- }
- })
- },
- _click: function(link) {
- try {
- link.dispatchEvent(new MouseEvent("click", {
- cancelable: true
- }))
- } catch (e) {
- var event = _dom_adapter2.default.getDocument().createEvent("MouseEvents");
- event.initMouseEvent("click", true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null);
- link.dispatchEvent(event)
- }
- },
- _saveBlobAs: function(fileName, format, data) {
- var _this = this;
- this._blobSaved = false;
- if (_type2.default.isDefined(navigator.msSaveOrOpenBlob)) {
- navigator.msSaveOrOpenBlob(data, fileName);
- this._blobSaved = true
- } else {
- if (_type2.default.isDefined(window.WinJS)) {
- this._winJSBlobSave(data, fileName, format);
- this._blobSaved = true
- } else {
- var URL = window.URL || window.webkitURL || window.mozURL || window.msURL || window.oURL;
- if (_type2.default.isDefined(URL)) {
- var objectURL = URL.createObjectURL(data);
- var downloadLink = this._linkDownloader(fileName, objectURL);
- setTimeout(function() {
- URL.revokeObjectURL(objectURL);
- _this._objectUrlRevoked = true
- }, this._revokeObjectURLTimeout);
- this._click(downloadLink)
- } else {
- _console.logger.warn("window.URL || window.webkitURL || window.mozURL || window.msURL || window.oURL is not defined")
- }
- }
- }
- },
- saveAs: function(fileName, format, data, proxyURL, forceProxy) {
- fileName += "." + FILE_EXTESIONS[format];
- if (forceProxy) {
- this._saveByProxy(proxyURL, fileName, format, data)
- } else {
- if (_type2.default.isFunction(window.Blob)) {
- this._saveBlobAs(fileName, format, data)
- } else {
- if (_type2.default.isDefined(proxyURL) && !_type2.default.isDefined(navigator.userAgent.match(/iPad/i))) {
- this._saveByProxy(proxyURL, fileName, format, data)
- } else {
- if (!_type2.default.isDefined(navigator.userAgent.match(/iPad/i))) {
- _ui2.default.log("E1034")
- }
- var downloadLink = this._linkDownloader(fileName, this._getDataUri(format, data));
- this._click(downloadLink)
- }
- }
- }
- }
- };
|