Gildas 2 лет назад
Родитель
Сommit
f8e30ab4f2

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
lib/single-file-extension-background.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
lib/single-file-extension-editor-helper.js


+ 28 - 13
lib/single-file-extension-editor.js

@@ -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 }), "*");

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
lib/single-file-extension.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
lib/single-file.js


+ 7 - 7
package-lock.json

@@ -10,7 +10,7 @@
 			"license": "AGPL-3.0-or-later",
 			"dependencies": {
 				"single-file-cli": "1.1.54",
-				"single-file-core": "1.3.25"
+				"single-file-core": "1.3.26"
 			},
 			"bin": {
 				"single-file": "cli/single-file"
@@ -1559,9 +1559,9 @@
 			"integrity": "sha512-1B256mKBbNV8jXAV+hRyEv0aMa7tn0C0Ci+zx7Ya4ZXZB3b9/1MgKsB/fxVwDiL28WJSU0pxzh8ftIYubCNn9w=="
 		},
 		"node_modules/single-file-core": {
-			"version": "1.3.25",
-			"resolved": "https://registry.npmjs.org/single-file-core/-/single-file-core-1.3.25.tgz",
-			"integrity": "sha512-2KpexuzhNbkxgnkbSwmuKLQ3qacM51lObISAuQwN13UgNV430dS5TGQhtM98Yie9OOL2AmWFp1x4saZ8vTwlew=="
+			"version": "1.3.26",
+			"resolved": "https://registry.npmjs.org/single-file-core/-/single-file-core-1.3.26.tgz",
+			"integrity": "sha512-+c1L97nOts9j/bdkJoHO2sdEuOY8zm+YOE8Cjy6+f37IsfXp2ftvz1gHdRxUhSiW3qqfG+CzrzpTv4a4DtDBlg=="
 		},
 		"node_modules/smart-buffer": {
 			"version": "4.2.0",
@@ -1623,9 +1623,9 @@
 			"integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="
 		},
 		"node_modules/streamx": {
-			"version": "2.16.0",
-			"resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.0.tgz",
-			"integrity": "sha512-a7Fi0PoUeusrUcMS4+HxivnZqYsw2MFEP841TIyLxTcEIucHcJsk+0ARcq3tGq1xDn+xK7sKHetvfMzI1/CzMA==",
+			"version": "2.16.1",
+			"resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz",
+			"integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==",
 			"dependencies": {
 				"fast-fifo": "^1.1.0",
 				"queue-tick": "^1.0.1"

+ 1 - 1
package.json

@@ -12,7 +12,7 @@
 		"single-file": "./cli/single-file"
 	},
 	"dependencies": {
-		"single-file-core": "1.3.25",
+		"single-file-core": "1.3.26",
 		"single-file-cli": "1.1.54"
 	},
 	"devDependencies": {

Некоторые файлы не были показаны из-за большого количества измененных файлов