diff --git a/src/editor/extensions/ext-opensave/ext-opensave.js b/src/editor/extensions/ext-opensave/ext-opensave.js
index a068b311..ef6f1f84 100644
--- a/src/editor/extensions/ext-opensave/ext-opensave.js
+++ b/src/editor/extensions/ext-opensave/ext-opensave.js
@@ -18,6 +18,7 @@
import { fileOpen, fileSave } from 'browser-fs-access';
const name = "opensave";
+let handle = null;
const loadExtensionTranslation = async function (svgEditor) {
let translationModule;
@@ -108,7 +109,7 @@ export default {
*
* @returns {void}
*/
- const clickSave = async function () {
+ const clickSave = async function (type, _) {
const $editorDialog = $id("se-svg-editor-dialog");
const editingsource = $editorDialog.getAttribute("dialog") === "open";
if (editingsource) {
@@ -135,10 +136,18 @@ export default {
const b64Data = svgCanvas.encode64(svg);
const blob = b64toBlob(b64Data, 'image/svg+xml');
try {
- await fileSave(blob, {
- fileName: 'icon.svg',
- extensions: [ '.svg' ]
- });
+ if(type === "save" && handle !== null) {
+ const throwIfExistingHandleNotGood = false;
+ handle = await fileSave(blob, {
+ fileName: 'icon.svg',
+ extensions: [ '.svg' ]
+ }, handle, throwIfExistingHandleNotGood);
+ } else {
+ handle = await fileSave(blob, {
+ fileName: 'icon.svg',
+ extensions: [ '.svg' ]
+ });
+ }
} catch (err) {
if (err.name !== 'AbortError') {
return console.error(err);
@@ -159,10 +168,13 @@ export default {
svgCanvas.insertChildAtIndex($id('main_button'), openButtonTemplate, 1);
const saveButtonTemplate = ``;
svgCanvas.insertChildAtIndex($id('main_button'), saveButtonTemplate, 2);
+ const saveAsButtonTemplate = ``;
+ svgCanvas.insertChildAtIndex($id('main_button'), saveAsButtonTemplate, 3);
// handler
$id("tool_clear").addEventListener("click", clickClear.bind(this));
$id("tool_open").addEventListener("click", clickOpen.bind(this));
- $id("tool_save").addEventListener("click", clickSave.bind(this));
+ $id("tool_save").addEventListener("click", clickSave.bind(this, "save"));
+ $id("tool_save_as").addEventListener("click", clickSave.bind(this, "saveas"));
}
};
}
diff --git a/src/editor/extensions/ext-opensave/locale/en.js b/src/editor/extensions/ext-opensave/locale/en.js
index 1c8de67d..24f1e9e2 100644
--- a/src/editor/extensions/ext-opensave/locale/en.js
+++ b/src/editor/extensions/ext-opensave/locale/en.js
@@ -3,6 +3,7 @@ export default {
tools: {
new_doc: 'New Image',
open_doc: 'Open SVG',
- save_doc: 'Save Image'
+ save_doc: 'Save Image',
+ save_as_doc: 'Save As Image'
}
};
diff --git a/src/editor/extensions/ext-opensave/locale/fr.js b/src/editor/extensions/ext-opensave/locale/fr.js
index bb8d3139..ad152f6c 100644
--- a/src/editor/extensions/ext-opensave/locale/fr.js
+++ b/src/editor/extensions/ext-opensave/locale/fr.js
@@ -3,6 +3,7 @@ export default {
tools: {
new_doc: 'Nouvelle image',
open_doc: 'Ouvrir le SVG',
- save_doc: 'Enregistrer l\'image'
+ save_doc: 'Enregistrer l\'image',
+ save_as_doc: 'Enregistrer en tant qu\'image'
}
};
diff --git a/src/editor/extensions/ext-opensave/locale/zh-CN.js b/src/editor/extensions/ext-opensave/locale/zh-CN.js
index b2e7f76b..65faf19d 100755
--- a/src/editor/extensions/ext-opensave/locale/zh-CN.js
+++ b/src/editor/extensions/ext-opensave/locale/zh-CN.js
@@ -3,6 +3,7 @@ export default {
tools: {
new_doc: '新图片',
open_doc: '打开 SVG',
- save_doc: '保存图像'
+ save_doc: '保存图像',
+ save_as_doc: '另存为图像'
}
};
diff --git a/src/editor/locale/lang.en.js b/src/editor/locale/lang.en.js
index 7d9ba8f3..da12e2c2 100644
--- a/src/editor/locale/lang.en.js
+++ b/src/editor/locale/lang.en.js
@@ -112,6 +112,7 @@ export default {
open_doc: 'Open SVG',
export_img: 'Export',
save_doc: 'Save Image',
+ save_as_doc: 'Save As Image',
import_doc: 'Import Image',
align_to_page: 'Align Element to Page',
align_bottom: 'Align Bottom',