matrix-react-sdk
Version:
SDK for matrix.org using React
36 lines (30 loc) • 6.19 kB
JavaScript
;
function remoteRender(event) {
const data = event.data;
const img = document.createElement("span"); // we'll mask it as an image
img.id = "img";
const a = document.createElement("a");
a.id = "a";
a.rel = "noreferrer noopener";
a.download = data.download;
a.style = data.style;
a.style.fontFamily = "Arial, Helvetica, Sans-Serif";
a.href = window.URL.createObjectURL(data.blob);
a.appendChild(img);
a.appendChild(document.createTextNode(data.textContent)); // Apply image style after so we can steal the anchor's colour.
// Style copied from a rendered version of mx_MFileBody_download_icon
img.style = (data.imgStyle || "" + "width: 12px; height: 12px;" + "-webkit-mask-size: 12px;" + "mask-size: 12px;" + "-webkit-mask-position: center;" + "mask-position: center;" + "-webkit-mask-repeat: no-repeat;" + "mask-repeat: no-repeat;" + "display: inline-block;") + "" + // Always add these styles
`-webkit-mask-image: url('${data.imgSrc}');` + `mask-image: url('${data.imgSrc}');` + `background-color: ${a.style.color};`;
const body = document.body; // Don't display scrollbars if the link takes more than one line to display.
body.style = "margin: 0px; overflow: hidden";
body.appendChild(a);
if (event.data.auto) {
a.click(); // try to trigger download automatically
}
}
window.onmessage = function (e) {
if (e.origin === window.location.origin) {
if (e.data.blob) remoteRender(e);
}
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91c2VyY29udGVudC9pbmRleC5qcyJdLCJuYW1lcyI6WyJyZW1vdGVSZW5kZXIiLCJldmVudCIsImRhdGEiLCJpbWciLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJpZCIsImEiLCJyZWwiLCJkb3dubG9hZCIsInN0eWxlIiwiZm9udEZhbWlseSIsImhyZWYiLCJ3aW5kb3ciLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJibG9iIiwiYXBwZW5kQ2hpbGQiLCJjcmVhdGVUZXh0Tm9kZSIsInRleHRDb250ZW50IiwiaW1nU3R5bGUiLCJpbWdTcmMiLCJjb2xvciIsImJvZHkiLCJhdXRvIiwiY2xpY2siLCJvbm1lc3NhZ2UiLCJlIiwib3JpZ2luIiwibG9jYXRpb24iXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsWUFBVCxDQUFzQkMsS0FBdEIsRUFBNkI7QUFDekIsUUFBTUMsSUFBSSxHQUFHRCxLQUFLLENBQUNDLElBQW5CO0FBRUEsUUFBTUMsR0FBRyxHQUFHQyxRQUFRLENBQUNDLGFBQVQsQ0FBdUIsTUFBdkIsQ0FBWixDQUh5QixDQUdtQjs7QUFDNUNGLEVBQUFBLEdBQUcsQ0FBQ0csRUFBSixHQUFTLEtBQVQ7QUFFQSxRQUFNQyxDQUFDLEdBQUdILFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixHQUF2QixDQUFWO0FBQ0FFLEVBQUFBLENBQUMsQ0FBQ0QsRUFBRixHQUFPLEdBQVA7QUFDQUMsRUFBQUEsQ0FBQyxDQUFDQyxHQUFGLEdBQVEscUJBQVI7QUFDQUQsRUFBQUEsQ0FBQyxDQUFDRSxRQUFGLEdBQWFQLElBQUksQ0FBQ08sUUFBbEI7QUFDQUYsRUFBQUEsQ0FBQyxDQUFDRyxLQUFGLEdBQVVSLElBQUksQ0FBQ1EsS0FBZjtBQUNBSCxFQUFBQSxDQUFDLENBQUNHLEtBQUYsQ0FBUUMsVUFBUixHQUFxQiw4QkFBckI7QUFDQUosRUFBQUEsQ0FBQyxDQUFDSyxJQUFGLEdBQVNDLE1BQU0sQ0FBQ0MsR0FBUCxDQUFXQyxlQUFYLENBQTJCYixJQUFJLENBQUNjLElBQWhDLENBQVQ7QUFDQVQsRUFBQUEsQ0FBQyxDQUFDVSxXQUFGLENBQWNkLEdBQWQ7QUFDQUksRUFBQUEsQ0FBQyxDQUFDVSxXQUFGLENBQWNiLFFBQVEsQ0FBQ2MsY0FBVCxDQUF3QmhCLElBQUksQ0FBQ2lCLFdBQTdCLENBQWQsRUFkeUIsQ0FnQnpCO0FBQ0E7O0FBQ0FoQixFQUFBQSxHQUFHLENBQUNPLEtBQUosR0FBWSxDQUFDUixJQUFJLENBQUNrQixRQUFMLElBQWlCLEtBQzFCLDRCQUQwQixHQUUxQiwwQkFGMEIsR0FHMUIsa0JBSDBCLEdBSTFCLGdDQUowQixHQUsxQix3QkFMMEIsR0FNMUIsaUNBTjBCLEdBTzFCLHlCQVAwQixHQVExQix3QkFSUSxJQVFvQixFQVJwQixHQVVSO0FBQ0MsOEJBQTJCbEIsSUFBSSxDQUFDbUIsTUFBTyxLQVhoQyxHQVlQLG9CQUFtQm5CLElBQUksQ0FBQ21CLE1BQU8sS0FaeEIsR0FhUCxxQkFBb0JkLENBQUMsQ0FBQ0csS0FBRixDQUFRWSxLQUFNLEdBYnZDO0FBZUEsUUFBTUMsSUFBSSxHQUFHbkIsUUFBUSxDQUFDbUIsSUFBdEIsQ0FqQ3lCLENBa0N6Qjs7QUFDQUEsRUFBQUEsSUFBSSxDQUFDYixLQUFMLEdBQWEsK0JBQWI7QUFDQWEsRUFBQUEsSUFBSSxDQUFDTixXQUFMLENBQWlCVixDQUFqQjs7QUFFQSxNQUFJTixLQUFLLENBQUNDLElBQU4sQ0FBV3NCLElBQWYsRUFBcUI7QUFDakJqQixJQUFBQSxDQUFDLENBQUNrQixLQUFGLEdBRGlCLENBQ047QUFDZDtBQUNKOztBQUVEWixNQUFNLENBQUNhLFNBQVAsR0FBbUIsVUFBU0MsQ0FBVCxFQUFZO0FBQzNCLE1BQUlBLENBQUMsQ0FBQ0MsTUFBRixLQUFhZixNQUFNLENBQUNnQixRQUFQLENBQWdCRCxNQUFqQyxFQUF5QztBQUNyQyxRQUFJRCxDQUFDLENBQUN6QixJQUFGLENBQU9jLElBQVgsRUFBaUJoQixZQUFZLENBQUMyQixDQUFELENBQVo7QUFDcEI7QUFDSixDQUpEIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gcmVtb3RlUmVuZGVyKGV2ZW50KSB7XG4gICAgY29uc3QgZGF0YSA9IGV2ZW50LmRhdGE7XG5cbiAgICBjb25zdCBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTsgLy8gd2UnbGwgbWFzayBpdCBhcyBhbiBpbWFnZVxuICAgIGltZy5pZCA9IFwiaW1nXCI7XG5cbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgYS5pZCA9IFwiYVwiO1xuICAgIGEucmVsID0gXCJub3JlZmVycmVyIG5vb3BlbmVyXCI7XG4gICAgYS5kb3dubG9hZCA9IGRhdGEuZG93bmxvYWQ7XG4gICAgYS5zdHlsZSA9IGRhdGEuc3R5bGU7XG4gICAgYS5zdHlsZS5mb250RmFtaWx5ID0gXCJBcmlhbCwgSGVsdmV0aWNhLCBTYW5zLVNlcmlmXCI7XG4gICAgYS5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZGF0YS5ibG9iKTtcbiAgICBhLmFwcGVuZENoaWxkKGltZyk7XG4gICAgYS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShkYXRhLnRleHRDb250ZW50KSk7XG5cbiAgICAvLyBBcHBseSBpbWFnZSBzdHlsZSBhZnRlciBzbyB3ZSBjYW4gc3RlYWwgdGhlIGFuY2hvcidzIGNvbG91ci5cbiAgICAvLyBTdHlsZSBjb3BpZWQgZnJvbSBhIHJlbmRlcmVkIHZlcnNpb24gb2YgbXhfTUZpbGVCb2R5X2Rvd25sb2FkX2ljb25cbiAgICBpbWcuc3R5bGUgPSAoZGF0YS5pbWdTdHlsZSB8fCBcIlwiICtcbiAgICAgICAgXCJ3aWR0aDogMTJweDsgaGVpZ2h0OiAxMnB4O1wiICtcbiAgICAgICAgXCItd2Via2l0LW1hc2stc2l6ZTogMTJweDtcIiArXG4gICAgICAgIFwibWFzay1zaXplOiAxMnB4O1wiICtcbiAgICAgICAgXCItd2Via2l0LW1hc2stcG9zaXRpb246IGNlbnRlcjtcIiArXG4gICAgICAgIFwibWFzay1wb3NpdGlvbjogY2VudGVyO1wiICtcbiAgICAgICAgXCItd2Via2l0LW1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XCIgK1xuICAgICAgICBcIm1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XCIgK1xuICAgICAgICBcImRpc3BsYXk6IGlubGluZS1ibG9jaztcIikgKyBcIlwiICtcblxuICAgICAgICAvLyBBbHdheXMgYWRkIHRoZXNlIHN0eWxlc1xuICAgICAgICBgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoJyR7ZGF0YS5pbWdTcmN9Jyk7YCArXG4gICAgICAgIGBtYXNrLWltYWdlOiB1cmwoJyR7ZGF0YS5pbWdTcmN9Jyk7YCArXG4gICAgICAgIGBiYWNrZ3JvdW5kLWNvbG9yOiAke2Euc3R5bGUuY29sb3J9O2A7XG5cbiAgICBjb25zdCBib2R5ID0gZG9jdW1lbnQuYm9keTtcbiAgICAvLyBEb24ndCBkaXNwbGF5IHNjcm9sbGJhcnMgaWYgdGhlIGxpbmsgdGFrZXMgbW9yZSB0aGFuIG9uZSBsaW5lIHRvIGRpc3BsYXkuXG4gICAgYm9keS5zdHlsZSA9IFwibWFyZ2luOiAwcHg7IG92ZXJmbG93OiBoaWRkZW5cIjtcbiAgICBib2R5LmFwcGVuZENoaWxkKGEpO1xuXG4gICAgaWYgKGV2ZW50LmRhdGEuYXV0bykge1xuICAgICAgICBhLmNsaWNrKCk7IC8vIHRyeSB0byB0cmlnZ2VyIGRvd25sb2FkIGF1dG9tYXRpY2FsbHlcbiAgICB9XG59XG5cbndpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7XG4gICAgaWYgKGUub3JpZ2luID09PSB3aW5kb3cubG9jYXRpb24ub3JpZ2luKSB7XG4gICAgICAgIGlmIChlLmRhdGEuYmxvYikgcmVtb3RlUmVuZGVyKGUpO1xuICAgIH1cbn07XG4iXX0=