|
|
@@ -32,21 +32,24 @@
|
|
|
|
|
|
const SINGLE_FILE_UI_ELEMENT_CLASS = singlefile.helper.SINGLE_FILE_UI_ELEMENT_CLASS;
|
|
|
const SHARE_PAGE_BAR_TAGNAME = "singlefile-share-page-bar";
|
|
|
- let EMBEDDED_IMAGE_BUTTON_MESSAGE$1, SHARE_PAGE_BUTTON_MESSAGE$1, ERROR_TITLE_MESSAGE$1;
|
|
|
+ let EMBEDDED_IMAGE_BUTTON_MESSAGE$1, SHARE_PAGE_BUTTON_MESSAGE$1, SHARE_SELECTION_BUTTON_MESSAGE$1, ERROR_TITLE_MESSAGE$1;
|
|
|
|
|
|
const CSS_PROPERTIES = new Set(Array.from(getComputedStyle(document.documentElement)));
|
|
|
|
|
|
function setLabels(labels) {
|
|
|
- ({ EMBEDDED_IMAGE_BUTTON_MESSAGE: EMBEDDED_IMAGE_BUTTON_MESSAGE$1, SHARE_PAGE_BUTTON_MESSAGE: SHARE_PAGE_BUTTON_MESSAGE$1, ERROR_TITLE_MESSAGE: ERROR_TITLE_MESSAGE$1 } = labels);
|
|
|
+ ({ EMBEDDED_IMAGE_BUTTON_MESSAGE: EMBEDDED_IMAGE_BUTTON_MESSAGE$1, SHARE_PAGE_BUTTON_MESSAGE: SHARE_PAGE_BUTTON_MESSAGE$1, SHARE_SELECTION_BUTTON_MESSAGE: SHARE_SELECTION_BUTTON_MESSAGE$1, ERROR_TITLE_MESSAGE: ERROR_TITLE_MESSAGE$1 } = labels);
|
|
|
}
|
|
|
|
|
|
function getSharePageBar() {
|
|
|
let resolvePromise;
|
|
|
return {
|
|
|
- display: async function () {
|
|
|
+ display: async function (selectedContent) {
|
|
|
return new Promise(resolve => {
|
|
|
resolvePromise = resolve;
|
|
|
- displayBar(SHARE_PAGE_BAR_TAGNAME, "", { buttonLabel: SHARE_PAGE_BUTTON_MESSAGE$1, buttonOnclick: resolve });
|
|
|
+ displayBar(SHARE_PAGE_BAR_TAGNAME, "", {
|
|
|
+ buttonLabel: selectedContent ? SHARE_SELECTION_BUTTON_MESSAGE$1 : SHARE_PAGE_BUTTON_MESSAGE$1,
|
|
|
+ buttonOnclick: resolve
|
|
|
+ });
|
|
|
});
|
|
|
},
|
|
|
hide: function () {
|
|
|
@@ -836,11 +839,12 @@
|
|
|
* Source.
|
|
|
*/
|
|
|
|
|
|
- let EMBEDDED_IMAGE_BUTTON_MESSAGE, SHARE_PAGE_BUTTON_MESSAGE, ERROR_TITLE_MESSAGE;
|
|
|
+ let EMBEDDED_IMAGE_BUTTON_MESSAGE, SHARE_PAGE_BUTTON_MESSAGE, SHARE_SELECTION_BUTTON_MESSAGE, ERROR_TITLE_MESSAGE;
|
|
|
|
|
|
try {
|
|
|
EMBEDDED_IMAGE_BUTTON_MESSAGE = browser.i18n.getMessage("topPanelEmbeddedImageButton");
|
|
|
SHARE_PAGE_BUTTON_MESSAGE = browser.i18n.getMessage("topPanelSharePageButton");
|
|
|
+ SHARE_SELECTION_BUTTON_MESSAGE = browser.i18n.getMessage("topPanelShareSelectionButton");
|
|
|
ERROR_TITLE_MESSAGE = browser.i18n.getMessage("topPanelError");
|
|
|
} catch (error) {
|
|
|
// ignored
|
|
|
@@ -850,35 +854,37 @@
|
|
|
setLabels({
|
|
|
EMBEDDED_IMAGE_BUTTON_MESSAGE,
|
|
|
SHARE_PAGE_BUTTON_MESSAGE,
|
|
|
+ SHARE_SELECTION_BUTTON_MESSAGE,
|
|
|
ERROR_TITLE_MESSAGE
|
|
|
});
|
|
|
|
|
|
async function downloadPageForeground(pageData, options) {
|
|
|
if (options.sharePage && navigator.share) {
|
|
|
- await sharePage(pageData);
|
|
|
+ await sharePage(pageData, options);
|
|
|
} else {
|
|
|
if (pageData.filename && pageData.filename.length) {
|
|
|
const link = document.createElement("a");
|
|
|
link.download = pageData.filename;
|
|
|
- link.href = URL.createObjectURL(new Blob([pageData.content], { type: "text/html" }));
|
|
|
+ link.href = URL.createObjectURL(new Blob([pageData.content], { type: pageData.mimeType }));
|
|
|
link.dispatchEvent(new MouseEvent("click"));
|
|
|
return new Promise(resolve => setTimeout(() => { URL.revokeObjectURL(link.href); resolve(); }, 1000));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- async function sharePage(pageData) {
|
|
|
+ async function sharePage(pageData, options) {
|
|
|
sharePageBar = getSharePageBar();
|
|
|
- const cancelled = await sharePageBar.display();
|
|
|
+ debugger;
|
|
|
+ const cancelled = await sharePageBar.display(options.selected);
|
|
|
if (!cancelled) {
|
|
|
- const data = { files: [new File([pageData.content], pageData.filename)] };
|
|
|
+ const data = { files: [new File([pageData.content], pageData.filename, { type: pageData.mimeType })] };
|
|
|
try {
|
|
|
await navigator.share(data);
|
|
|
sharePageBar.hide();
|
|
|
} catch (error) {
|
|
|
sharePageBar.hide();
|
|
|
if (error.name === "AbortError") {
|
|
|
- await sharePage(pageData);
|
|
|
+ await sharePage(pageData, options);
|
|
|
} else {
|
|
|
throw error;
|
|
|
}
|
|
|
@@ -1992,7 +1998,11 @@ pre code {
|
|
|
} else {
|
|
|
if (message.foregroundSave || message.sharePage) {
|
|
|
try {
|
|
|
- await downloadPageForeground({ content, filename: filename || message.filename }, { sharePage: message.sharePage });
|
|
|
+ await downloadPageForeground({
|
|
|
+ content,
|
|
|
+ filename: filename || message.filename,
|
|
|
+ mimeType: "text/html"
|
|
|
+ }, { sharePage: message.sharePage });
|
|
|
} catch (error) {
|
|
|
console.log(error); // eslint-disable-line no-console
|
|
|
window.parent.postMessage(JSON.stringify({ method: "onError", error: error.message }), "*");
|
|
|
@@ -2021,8 +2031,13 @@ pre code {
|
|
|
}), "*");
|
|
|
}
|
|
|
if (message.method == "download") {
|
|
|
+ debugger;
|
|
|
try {
|
|
|
- await downloadPageForeground({ content: message.content, filename: message.filename }, { sharePage: message.sharePage });
|
|
|
+ await downloadPageForeground({
|
|
|
+ content: message.content,
|
|
|
+ filename: message.filename,
|
|
|
+ mimeType: message.mimeType
|
|
|
+ }, { sharePage: message.sharePage });
|
|
|
} catch (error) {
|
|
|
console.log(error); // eslint-disable-line no-console
|
|
|
window.parent.postMessage(JSON.stringify({ method: "onError", error: error.message }), "*");
|