From 6242ccfba13f678a605959c0d0770c13502d7f8c Mon Sep 17 00:00:00 2001 From: hanzhenfeng Date: Sun, 23 Oct 2022 16:18:03 +0800 Subject: [PATCH 01/14] Copy png to clipboard --- src/components/ContentWrap.jsx | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/components/ContentWrap.jsx b/src/components/ContentWrap.jsx index 8bc99c71..83b2ed3f 100644 --- a/src/components/ContentWrap.jsx +++ b/src/components/ContentWrap.jsx @@ -460,6 +460,24 @@ export default class ContentWrap extends Component { trackEvent('ui', 'downloadJpeg'); } + async copyPngClickHandler(e) { + const mountingPoint = this.frame.contentWindow.document.getElementById('diagram'); + // eslint-disable-next-line + const png = await mountingPoint.getElementsByClassName('frame')[0].parentElement.__vue__.toBlob(); + this.copyPngToClipboard(png); + trackEvent('ui', 'copyPng'); + } + + copyPngToClipboard(imageData) { + const status = navigator.permissions.query({name: 'clipboard-write'}); + console.log(status); + const clipboardItem = new ClipboardItem({'image/png': imageData}); + navigator.clipboard.write([clipboardItem]).then( + () => console.log("Copied to clipboard successfully!"), + () => console.error("Copied to clipboard failed!") + ) + } + shareClickHandler(e) { trackEvent('ui', 'shareSurvey'); } @@ -1030,6 +1048,13 @@ export default class ContentWrap extends Component { file_download JPEG + )} From 1170208d906eba27cec9c0de5fbf5e46f3644435 Mon Sep 17 00:00:00 2001 From: hanzhenfeng Date: Sun, 23 Oct 2022 17:22:01 +0800 Subject: [PATCH 02/14] =?UTF-8?q?Copy=20png=20to=20clipboard:=20test=20per?= =?UTF-8?q?missions=20api=EF=BC=8Cto=20let=20the=20safari=20works?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/ContentWrap.jsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/ContentWrap.jsx b/src/components/ContentWrap.jsx index 83b2ed3f..1b24bc81 100644 --- a/src/components/ContentWrap.jsx +++ b/src/components/ContentWrap.jsx @@ -469,8 +469,10 @@ export default class ContentWrap extends Component { } copyPngToClipboard(imageData) { - const status = navigator.permissions.query({name: 'clipboard-write'}); - console.log(status); + if (navigator.permissions && navigator.permissions.query) { + const status = navigator.permissions.query({name: 'clipboard_write'}); + console.log(status); + } const clipboardItem = new ClipboardItem({'image/png': imageData}); navigator.clipboard.write([clipboardItem]).then( () => console.log("Copied to clipboard successfully!"), From b3ad066b7d141dd32b92985581ab7aece658e39f Mon Sep 17 00:00:00 2001 From: hanzhenfeng Date: Sun, 23 Oct 2022 17:32:48 +0800 Subject: [PATCH 03/14] Copy png to clipboard: add the error reason for write clipboard for testing it in safari --- src/components/ContentWrap.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/ContentWrap.jsx b/src/components/ContentWrap.jsx index 1b24bc81..70c53003 100644 --- a/src/components/ContentWrap.jsx +++ b/src/components/ContentWrap.jsx @@ -475,8 +475,8 @@ export default class ContentWrap extends Component { } const clipboardItem = new ClipboardItem({'image/png': imageData}); navigator.clipboard.write([clipboardItem]).then( - () => console.log("Copied to clipboard successfully!"), - () => console.error("Copied to clipboard failed!") + (value) => console.log("Copied to clipboard successfully!", value), + (reason) => console.error("Copied to clipboard failed!: ", reason) ) } From 394b6dbd95c98f740b427cbb98d8701898e6a996 Mon Sep 17 00:00:00 2001 From: hanzhenfeng Date: Sun, 23 Oct 2022 17:55:14 +0800 Subject: [PATCH 04/14] Copy png to clipboard: modify safari error --- src/components/ContentWrap.jsx | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/components/ContentWrap.jsx b/src/components/ContentWrap.jsx index 70c53003..2c052ae9 100644 --- a/src/components/ContentWrap.jsx +++ b/src/components/ContentWrap.jsx @@ -473,11 +473,33 @@ export default class ContentWrap extends Component { const status = navigator.permissions.query({name: 'clipboard_write'}); console.log(status); } - const clipboardItem = new ClipboardItem({'image/png': imageData}); - navigator.clipboard.write([clipboardItem]).then( - (value) => console.log("Copied to clipboard successfully!", value), - (reason) => console.error("Copied to clipboard failed!: ", reason) - ) + const isSafari = /^((?!chrome|android).)*safari/i.test( + navigator?.userAgent + ); + if (isSafari) { + console.log("safari") + navigator.clipboard.write([ + new ClipboardItem({ + "image/png": new Promise(async (resolve, reject) => { + try { + resolve(new Blob([imageData], { type: "image/png" })); + } catch (err) { + reject(err); + } + }), + }), + ]).then(() => console.log("success") + ).catch((err) => + // Error + console.error("Error:", err) + ); + } else { + const clipboardItem = new ClipboardItem({'image/png': imageData}); + navigator.clipboard.write([clipboardItem]).then( + (value) => console.log("Copied to clipboard successfully!", value), + (reason) => console.error("Copied to clipboard failed!: ", reason) + ) + } } shareClickHandler(e) { From 649c7915558066d7f330277d8107822bce4fb62f Mon Sep 17 00:00:00 2001 From: hanzhenfeng Date: Sun, 23 Oct 2022 19:25:53 +0800 Subject: [PATCH 05/14] Copy png to clipboard: modify safari error --- src/components/ContentWrap.jsx | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/components/ContentWrap.jsx b/src/components/ContentWrap.jsx index 2c052ae9..b70241e4 100644 --- a/src/components/ContentWrap.jsx +++ b/src/components/ContentWrap.jsx @@ -473,26 +473,26 @@ export default class ContentWrap extends Component { const status = navigator.permissions.query({name: 'clipboard_write'}); console.log(status); } - const isSafari = /^((?!chrome|android).)*safari/i.test( - navigator?.userAgent - ); + console.log(navigator.userAgent); + const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); + console.log(isSafari); if (isSafari) { console.log("safari") navigator.clipboard.write([ - new ClipboardItem({ - "image/png": new Promise(async (resolve, reject) => { - try { - resolve(new Blob([imageData], { type: "image/png" })); - } catch (err) { - reject(err); - } - }), + new ClipboardItem({ + "image/png": new Promise(async (resolve, reject) => { + try { + resolve(new Blob([imageData], { type: "image/png" })); + } catch (err) { + reject(err); + } }), - ]).then(() => console.log("success") - ).catch((err) => - // Error - console.error("Error:", err) - ); + }), + ]).then(() => console.log("success") + ).catch((err) => + // Error + console.error("Error:", err) + ); } else { const clipboardItem = new ClipboardItem({'image/png': imageData}); navigator.clipboard.write([clipboardItem]).then( From 69e7eda086c4b266c33160055d684ed4cc3f8643 Mon Sep 17 00:00:00 2001 From: hanzhenfeng Date: Sun, 23 Oct 2022 19:54:05 +0800 Subject: [PATCH 06/14] Copy png to clipboard: modify safari error, replace the click as user event --- src/components/ContentWrap.jsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/ContentWrap.jsx b/src/components/ContentWrap.jsx index b70241e4..cc85b796 100644 --- a/src/components/ContentWrap.jsx +++ b/src/components/ContentWrap.jsx @@ -460,7 +460,7 @@ export default class ContentWrap extends Component { trackEvent('ui', 'downloadJpeg'); } - async copyPngClickHandler(e) { + async copyPngClickHandler() { const mountingPoint = this.frame.contentWindow.document.getElementById('diagram'); // eslint-disable-next-line const png = await mountingPoint.getElementsByClassName('frame')[0].parentElement.__vue__.toBlob(); @@ -474,8 +474,9 @@ export default class ContentWrap extends Component { console.log(status); } console.log(navigator.userAgent); - const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); + let isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); console.log(isSafari); + isSafari = false; if (isSafari) { console.log("safari") navigator.clipboard.write([ @@ -1075,7 +1076,7 @@ export default class ContentWrap extends Component { From fdfd02e23b0feb9db852f61f7bdc9f0494eae040 Mon Sep 17 00:00:00 2001 From: hanzhenfeng Date: Mon, 24 Oct 2022 20:31:35 +0800 Subject: [PATCH 07/14] Copy png to clipboard: modify safari error, replace the click as user event --- src/components/ContentWrap.jsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/components/ContentWrap.jsx b/src/components/ContentWrap.jsx index cc85b796..0394972a 100644 --- a/src/components/ContentWrap.jsx +++ b/src/components/ContentWrap.jsx @@ -460,7 +460,8 @@ export default class ContentWrap extends Component { trackEvent('ui', 'downloadJpeg'); } - async copyPngClickHandler() { + async copyPngClickHandler(e) { + console.log(e); const mountingPoint = this.frame.contentWindow.document.getElementById('diagram'); // eslint-disable-next-line const png = await mountingPoint.getElementsByClassName('frame')[0].parentElement.__vue__.toBlob(); @@ -1076,10 +1077,16 @@ export default class ContentWrap extends Component { + { + const mountingPoint = this.frame.contentWindow.document.getElementById('diagram'); + // eslint-disable-next-line + const png = await mountingPoint.getElementsByClassName('frame')[0].parentElement.__vue__.toBlob(); + this.copyPngToClipboard(png); + }}>test )} From 9c1e4f1e8a56acd44a56520d157402f94b048f08 Mon Sep 17 00:00:00 2001 From: hanzhenfeng Date: Mon, 24 Oct 2022 20:48:58 +0800 Subject: [PATCH 08/14] Copy png to clipboard: modify safari error, replace the click as user event --- src/components/ContentWrap.jsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/components/ContentWrap.jsx b/src/components/ContentWrap.jsx index 0394972a..78ca7388 100644 --- a/src/components/ContentWrap.jsx +++ b/src/components/ContentWrap.jsx @@ -1085,7 +1085,13 @@ export default class ContentWrap extends Component { const mountingPoint = this.frame.contentWindow.document.getElementById('diagram'); // eslint-disable-next-line const png = await mountingPoint.getElementsByClassName('frame')[0].parentElement.__vue__.toBlob(); - this.copyPngToClipboard(png); + await navigator.clipboard.write([ + new ClipboardItem({ + 'text/plain': new Promise(async (resolve) => { + resolve(new Blob(["svg"], {type: 'text/plain'})); + }), + }) + ]); }}>test From 22e2c983e74cab361e43828c90cb1ce72cceb188 Mon Sep 17 00:00:00 2001 From: hanzhenfeng Date: Mon, 24 Oct 2022 23:19:16 +0800 Subject: [PATCH 09/14] Copy png to clipboard: modify safari error, replace the click as user event --- src/components/ContentWrap.jsx | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/components/ContentWrap.jsx b/src/components/ContentWrap.jsx index 78ca7388..34986c46 100644 --- a/src/components/ContentWrap.jsx +++ b/src/components/ContentWrap.jsx @@ -469,6 +469,21 @@ export default class ContentWrap extends Component { trackEvent('ui', 'copyPng'); } + async copyPngClickHandlerBySafari(e) { + console.log(e); + navigator.clipboard.write([ + new ClipboardItem({ + "image/png": new Promise(async resolve => { + const response = await fetch("https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png"); + resolve(await response.blob()); + }) + }) + ]).then( + r => console.log("success", r), + reason => console.log("failed", reason) + ); + } + copyPngToClipboard(imageData) { if (navigator.permissions && navigator.permissions.query) { const status = navigator.permissions.query({name: 'clipboard_write'}); @@ -1081,18 +1096,9 @@ export default class ContentWrap extends Component { file_copy Copy PNG File - { - const mountingPoint = this.frame.contentWindow.document.getElementById('diagram'); - // eslint-disable-next-line - const png = await mountingPoint.getElementsByClassName('frame')[0].parentElement.__vue__.toBlob(); - await navigator.clipboard.write([ - new ClipboardItem({ - 'text/plain': new Promise(async (resolve) => { - resolve(new Blob(["svg"], {type: 'text/plain'})); - }), - }) - ]); - }}>test + test + test-no-this + just-a )} From 06f0db13550f7a0999c39568f97daea4e4674767 Mon Sep 17 00:00:00 2001 From: hanzhenfeng Date: Wed, 26 Oct 2022 09:17:43 +0800 Subject: [PATCH 10/14] Copy png to clipboard: test for safari copy error, use 4 types. --- src/components/ContentWrap.jsx | 59 ++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 3 deletions(-) diff --git a/src/components/ContentWrap.jsx b/src/components/ContentWrap.jsx index 34986c46..fe36a5be 100644 --- a/src/components/ContentWrap.jsx +++ b/src/components/ContentWrap.jsx @@ -469,7 +469,7 @@ export default class ContentWrap extends Component { trackEvent('ui', 'copyPng'); } - async copyPngClickHandlerBySafari(e) { + async copyPngClickHandlerBySafari1(e) { console.log(e); navigator.clipboard.write([ new ClipboardItem({ @@ -484,6 +484,57 @@ export default class ContentWrap extends Component { ); } + async copyPngClickHandlerBySafari2(e) { + console.log(e); + const mountingPoint = this.frame.contentWindow.document.getElementById('diagram'); + // eslint-disable-next-line + const png = await mountingPoint.getElementsByClassName('frame')[0].parentElement.__vue__.toBlob(); + navigator.clipboard.write([ + new ClipboardItem({ + "image/png": new Promise(async resolve => { + resolve(png); + }) + }) + ]).then( + r => console.log("success", r), + reason => console.log("failed", reason) + ); + } + + async copyPngClickHandlerBySafari3(e) { + console.log(e); + const mountingPoint = this.frame.contentWindow.document.getElementById('diagram'); + // eslint-disable-next-line + navigator.clipboard.write([ + new ClipboardItem({ + "image/png": new Promise(async resolve => { + const png = await mountingPoint.getElementsByClassName('frame')[0].parentElement.__vue__.toBlob(); + resolve(png); + }) + }) + ]).then( + r => console.log("success", r), + reason => console.log("failed", reason) + ); + } + + async copyPngClickHandlerBySafari4(e) { + console.log(e); + const mountingPoint = this.frame.contentWindow.document.getElementById('diagram'); + // eslint-disable-next-line + navigator.clipboard.write([ + new ClipboardItem({ + "image/png": new Promise(async resolve => { + const png = await mountingPoint.getElementsByClassName('frame')[0].parentElement.__vue__.toBlob(); + resolve(await png); + }) + }) + ]).then( + r => console.log("success", r), + reason => console.log("failed", reason) + ); + } + copyPngToClipboard(imageData) { if (navigator.permissions && navigator.permissions.query) { const status = navigator.permissions.query({name: 'clipboard_write'}); @@ -1096,8 +1147,10 @@ export default class ContentWrap extends Component { file_copy Copy PNG File - test - test-no-this + test1 + test2 + test3 + test4 just-a From f1102ed5d4b99b18c15724c3e6150e744fd50c07 Mon Sep 17 00:00:00 2001 From: hanzhenfeng Date: Wed, 26 Oct 2022 09:33:12 +0800 Subject: [PATCH 11/14] Copy png to clipboard: test for safari copy by button --- src/components/ContentWrap.jsx | 64 +++++----------------------------- 1 file changed, 9 insertions(+), 55 deletions(-) diff --git a/src/components/ContentWrap.jsx b/src/components/ContentWrap.jsx index fe36a5be..246140b2 100644 --- a/src/components/ContentWrap.jsx +++ b/src/components/ContentWrap.jsx @@ -469,38 +469,6 @@ export default class ContentWrap extends Component { trackEvent('ui', 'copyPng'); } - async copyPngClickHandlerBySafari1(e) { - console.log(e); - navigator.clipboard.write([ - new ClipboardItem({ - "image/png": new Promise(async resolve => { - const response = await fetch("https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png"); - resolve(await response.blob()); - }) - }) - ]).then( - r => console.log("success", r), - reason => console.log("failed", reason) - ); - } - - async copyPngClickHandlerBySafari2(e) { - console.log(e); - const mountingPoint = this.frame.contentWindow.document.getElementById('diagram'); - // eslint-disable-next-line - const png = await mountingPoint.getElementsByClassName('frame')[0].parentElement.__vue__.toBlob(); - navigator.clipboard.write([ - new ClipboardItem({ - "image/png": new Promise(async resolve => { - resolve(png); - }) - }) - ]).then( - r => console.log("success", r), - reason => console.log("failed", reason) - ); - } - async copyPngClickHandlerBySafari3(e) { console.log(e); const mountingPoint = this.frame.contentWindow.document.getElementById('diagram'); @@ -516,23 +484,7 @@ export default class ContentWrap extends Component { r => console.log("success", r), reason => console.log("failed", reason) ); - } - - async copyPngClickHandlerBySafari4(e) { - console.log(e); - const mountingPoint = this.frame.contentWindow.document.getElementById('diagram'); - // eslint-disable-next-line - navigator.clipboard.write([ - new ClipboardItem({ - "image/png": new Promise(async resolve => { - const png = await mountingPoint.getElementsByClassName('frame')[0].parentElement.__vue__.toBlob(); - resolve(await png); - }) - }) - ]).then( - r => console.log("success", r), - reason => console.log("failed", reason) - ); + trackEvent('ui', 'copyPng'); } copyPngToClipboard(imageData) { @@ -1142,16 +1094,18 @@ export default class ContentWrap extends Component { + - test1 - test2 - test3 - test4 - just-a )} From adf5eb7885b01d3b9fd08e38f1844ac8c4211bb1 Mon Sep 17 00:00:00 2001 From: hanzhenfeng Date: Thu, 27 Oct 2022 00:17:01 +0800 Subject: [PATCH 12/14] Copy png to clipboard, remove the jpeg function --- src/components/ContentWrap.jsx | 114 +++++++++------------------------ 1 file changed, 32 insertions(+), 82 deletions(-) diff --git a/src/components/ContentWrap.jsx b/src/components/ContentWrap.jsx index 246140b2..eb61c5ba 100644 --- a/src/components/ContentWrap.jsx +++ b/src/components/ContentWrap.jsx @@ -1,26 +1,27 @@ -import React, { h, Component } from 'preact'; +import React, {Component} from 'preact'; import {saveAs} from 'file-saver' import UserCodeMirror from './UserCodeMirror.jsx'; import Toolbox from './Toolbox.jsx'; import Tabs from './Tabs.jsx'; -import { computeHtml, computeCss, computeJs } from '../computes'; -import { modes, HtmlModes, CssModes, JsModes } from '../codeModes'; -import { log, loadJS, getCompleteHtml } from '../utils'; -import { writeFileAsync} from "../WriteFile"; +import {computeCss, computeHtml, computeJs} from '../computes'; +import {CssModes, HtmlModes, JsModes, modes} from '../codeModes'; +import {getCompleteHtml, loadJS, log} from '../utils'; +import {writeFileAsync} from "../WriteFile"; import Vue from '!!file-loader!vue/dist/vue'; import Vuex from '!!file-loader!vuex/dist/vuex'; import vueSequence from '!!file-loader!vue-sequence'; import vueSequenceCss from '!!file-loader!vue-sequence/dist/vue-sequence.css'; -import { Button } from './common'; -import { SplitPane } from './SplitPane.jsx'; -import { trackEvent } from '../analytics'; +import {Button} from './common'; +import {SplitPane} from './SplitPane.jsx'; +import {trackEvent} from '../analytics'; import CodeMirror from '../CodeMirror'; import 'codemirror/mode/javascript/javascript.js' -import { Console } from './Console'; -import { deferred } from '../deferred'; +import {Console} from './Console'; +import {deferred} from '../deferred'; import CssSettingsModal from './CssSettingsModal'; import codeService from '../services/code_service' +import {alertsService} from '../notifications'; const minCodeWrapSize = 33; @@ -445,81 +446,44 @@ export default class ContentWrap extends Component { trackEvent('ui', 'paneHeaderDblClick', codeWrapParent.dataset.type); } async exportPngClickHandler(e) { - const mountingPoint = this.frame.contentWindow.document.getElementById('diagram'); - // eslint-disable-next-line - const png = await mountingPoint.getElementsByClassName('frame')[0].parentElement.__vue__.toBlob(); + const png = await this.getPngBlob(); saveAs(png, 'zenuml.png'); trackEvent('ui', 'downloadPng'); } - async exportJpegClickHandler(e) { + async getPngBlob() { const mountingPoint = this.frame.contentWindow.document.getElementById('diagram'); // eslint-disable-next-line - const jpeg = await mountingPoint.getElementsByClassName('frame')[0].parentElement.__vue__.toJpeg(); - saveAs(jpeg, 'zenuml.jpeg'); - trackEvent('ui', 'downloadJpeg'); + return await mountingPoint.getElementsByClassName('frame')[0].parentElement.__vue__.toBlob(); } - async copyPngClickHandler(e) { - console.log(e); - const mountingPoint = this.frame.contentWindow.document.getElementById('diagram'); - // eslint-disable-next-line - const png = await mountingPoint.getElementsByClassName('frame')[0].parentElement.__vue__.toBlob(); - this.copyPngToClipboard(png); - trackEvent('ui', 'copyPng'); - } - - async copyPngClickHandlerBySafari3(e) { - console.log(e); - const mountingPoint = this.frame.contentWindow.document.getElementById('diagram'); - // eslint-disable-next-line + async copyImageClickHandler(e) { + if(!navigator.clipboard || !navigator.clipboard.write){ + this.showCopyErrorNotice(); + trackEvent('ui', 'copyImageFailed1'); + return; + } navigator.clipboard.write([ new ClipboardItem({ "image/png": new Promise(async resolve => { - const png = await mountingPoint.getElementsByClassName('frame')[0].parentElement.__vue__.toBlob(); + const png = await this.getPngBlob(); resolve(png); }) }) ]).then( - r => console.log("success", r), - reason => console.log("failed", reason) + () => alertsService.add("PNG file was copied"), + err => { + this.showCopyErrorNotice(); + console.log(err); + trackEvent('ui', 'copyImageFailed2'); + } ); - trackEvent('ui', 'copyPng'); + trackEvent('ui', 'copyImage'); } - copyPngToClipboard(imageData) { - if (navigator.permissions && navigator.permissions.query) { - const status = navigator.permissions.query({name: 'clipboard_write'}); - console.log(status); - } - console.log(navigator.userAgent); - let isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); - console.log(isSafari); - isSafari = false; - if (isSafari) { - console.log("safari") - navigator.clipboard.write([ - new ClipboardItem({ - "image/png": new Promise(async (resolve, reject) => { - try { - resolve(new Blob([imageData], { type: "image/png" })); - } catch (err) { - reject(err); - } - }), - }), - ]).then(() => console.log("success") - ).catch((err) => - // Error - console.error("Error:", err) - ); - } else { - const clipboardItem = new ClipboardItem({'image/png': imageData}); - navigator.clipboard.write([clipboardItem]).then( - (value) => console.log("Copied to clipboard successfully!", value), - (reason) => console.error("Copied to clipboard failed!: ", reason) - ) - } + + showCopyErrorNotice() { + alertsService.add("Copy failed, please try on another browser or upgrade your browser!"); } shareClickHandler(e) { @@ -1085,24 +1049,10 @@ export default class ContentWrap extends Component { file_download PNG - - From e004ead42279074fc5afeac83cdb56225626fa30 Mon Sep 17 00:00:00 2001 From: hanzhenfeng Date: Fri, 28 Oct 2022 08:35:10 +0800 Subject: [PATCH 13/14] Copy png to clipboard: 1. modify the button name 2. change the extension version --- src/components/ContentWrap.jsx | 2 +- src/manifest.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/ContentWrap.jsx b/src/components/ContentWrap.jsx index eb61c5ba..9b532a4b 100644 --- a/src/components/ContentWrap.jsx +++ b/src/components/ContentWrap.jsx @@ -1054,7 +1054,7 @@ export default class ContentWrap extends Component { aria-label="Copy PNG to Clipboard" onClick={this.copyImageClickHandler.bind(this)}> file_copy - Copy PNG File + Copy PNG diff --git a/src/manifest.json b/src/manifest.json index 57f912a0..a51be7b5 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,6 +1,6 @@ { "name": "ZenUML Sequence", - "version": "2022.02.28", + "version": "2022.10.28", "manifest_version": 2, "description": "Real-time & offline tool for generating sequence diagrams", "homepage_url": "https://zenuml.com", From 1e7874aaf013c6ea93a2e8734d1001e4e96a7569 Mon Sep 17 00:00:00 2001 From: hanzhenfeng Date: Mon, 31 Oct 2022 00:05:10 +0800 Subject: [PATCH 14/14] 1. fix the extension diagram show errors 2. fix the extension detached window show errors --- src/components/ContentWrap.jsx | 17 +++++++++++------ src/manifest.json | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/components/ContentWrap.jsx b/src/components/ContentWrap.jsx index 9b532a4b..021781f8 100644 --- a/src/components/ContentWrap.jsx +++ b/src/components/ContentWrap.jsx @@ -205,14 +205,19 @@ export default class ContentWrap extends Component { }); await writeFileAsync('script.js', blobjs); await writeFileAsync('preview.html', blob); - var origin = chrome.runtime && chrome.runtime.id - ? `chrome-extension://${chrome.runtime.id}` - : `${location.origin}`; - var src = `filesystem:${origin}/temporary/preview.html`; + // var origin = chrome.runtime && chrome.runtime.id + // ? `chrome-extension://${chrome.runtime.id}` + // : `${location.origin}`; + // var src = `filesystem:${origin}/temporary/preview.html`; if (this.detachedWindow) { - this.detachedWindow.postMessage(src, '*'); + this.detachedWindow.postMessage({contents}, '*'); } else { - this.frame.src = src; + this.frame.src = this.frame.src; + setTimeout(() => { + that.frame.contentDocument.open(); + that.frame.contentDocument.write(contents); + that.frame.contentDocument.close(); + }, 10); } } } diff --git a/src/manifest.json b/src/manifest.json index a51be7b5..5f78ce80 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,6 +1,6 @@ { "name": "ZenUML Sequence", - "version": "2022.10.28", + "version": "2022.10.31", "manifest_version": 2, "description": "Real-time & offline tool for generating sequence diagrams", "homepage_url": "https://zenuml.com",