You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
4.3 KiB
143 lines
4.3 KiB
"use strict";
|
|
|
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
|
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
|
|
/* eslint-disable max-classes-per-file */
|
|
var utils = require('../../utils/utils');
|
|
|
|
var RelType = require('../../xlsx/rel-type');
|
|
|
|
var HyperlinksProxy = /*#__PURE__*/function () {
|
|
function HyperlinksProxy(sheetRelsWriter) {
|
|
_classCallCheck(this, HyperlinksProxy);
|
|
|
|
this.writer = sheetRelsWriter;
|
|
}
|
|
|
|
_createClass(HyperlinksProxy, [{
|
|
key: "push",
|
|
value: function push(hyperlink) {
|
|
this.writer.addHyperlink(hyperlink);
|
|
}
|
|
}]);
|
|
|
|
return HyperlinksProxy;
|
|
}();
|
|
|
|
var SheetRelsWriter = /*#__PURE__*/function () {
|
|
function SheetRelsWriter(options) {
|
|
_classCallCheck(this, SheetRelsWriter);
|
|
|
|
// in a workbook, each sheet will have a number
|
|
this.id = options.id; // count of all relationships
|
|
|
|
this.count = 0; // keep record of all hyperlinks
|
|
|
|
this._hyperlinks = [];
|
|
this._workbook = options.workbook;
|
|
}
|
|
|
|
_createClass(SheetRelsWriter, [{
|
|
key: "each",
|
|
value: function each(fn) {
|
|
return this._hyperlinks.forEach(fn);
|
|
}
|
|
}, {
|
|
key: "addHyperlink",
|
|
value: function addHyperlink(hyperlink) {
|
|
// Write to stream
|
|
var relationship = {
|
|
Target: hyperlink.target,
|
|
Type: RelType.Hyperlink,
|
|
TargetMode: 'External'
|
|
};
|
|
|
|
var rId = this._writeRelationship(relationship); // store sheet stuff for later
|
|
|
|
|
|
this._hyperlinks.push({
|
|
rId: rId,
|
|
address: hyperlink.address
|
|
});
|
|
}
|
|
}, {
|
|
key: "addMedia",
|
|
value: function addMedia(media) {
|
|
return this._writeRelationship(media);
|
|
}
|
|
}, {
|
|
key: "addRelationship",
|
|
value: function addRelationship(rel) {
|
|
return this._writeRelationship(rel);
|
|
}
|
|
}, {
|
|
key: "commit",
|
|
value: function commit() {
|
|
if (this.count) {
|
|
// write xml utro
|
|
this._writeClose(); // and close stream
|
|
|
|
|
|
this.stream.end();
|
|
}
|
|
} // ================================================================================
|
|
|
|
}, {
|
|
key: "_writeOpen",
|
|
value: function _writeOpen() {
|
|
this.stream.write("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n <Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">");
|
|
}
|
|
}, {
|
|
key: "_writeRelationship",
|
|
value: function _writeRelationship(relationship) {
|
|
if (!this.count) {
|
|
this._writeOpen();
|
|
}
|
|
|
|
var rId = "rId".concat(++this.count);
|
|
|
|
if (relationship.TargetMode) {
|
|
this.stream.write("<Relationship Id=\"".concat(rId, "\"") + " Type=\"".concat(relationship.Type, "\"") + " Target=\"".concat(utils.xmlEncode(relationship.Target), "\"") + " TargetMode=\"".concat(relationship.TargetMode, "\"") + '/>');
|
|
} else {
|
|
this.stream.write("<Relationship Id=\"".concat(rId, "\" Type=\"").concat(relationship.Type, "\" Target=\"").concat(relationship.Target, "\"/>"));
|
|
}
|
|
|
|
return rId;
|
|
}
|
|
}, {
|
|
key: "_writeClose",
|
|
value: function _writeClose() {
|
|
this.stream.write('</Relationships>');
|
|
}
|
|
}, {
|
|
key: "stream",
|
|
get: function get() {
|
|
if (!this._stream) {
|
|
// eslint-disable-next-line no-underscore-dangle
|
|
this._stream = this._workbook._openStream("/xl/worksheets/_rels/sheet".concat(this.id, ".xml.rels"));
|
|
}
|
|
|
|
return this._stream;
|
|
}
|
|
}, {
|
|
key: "length",
|
|
get: function get() {
|
|
return this._hyperlinks.length;
|
|
}
|
|
}, {
|
|
key: "hyperlinksProxy",
|
|
get: function get() {
|
|
return this._hyperlinksProxy || (this._hyperlinksProxy = new HyperlinksProxy(this));
|
|
}
|
|
}]);
|
|
|
|
return SheetRelsWriter;
|
|
}();
|
|
|
|
module.exports = SheetRelsWriter;
|
|
//# sourceMappingURL=sheet-rels-writer.js.map
|