1
0
Эх сурвалжийг харах

update `single-file-core`

Gildas 1 жил өмнө
parent
commit
79f5ceb1ac

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
lib/single-file-bootstrap.js


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
lib/single-file-extension-background.js


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
lib/single-file-extension-editor-helper.js


+ 19 - 2
lib/single-file-extension-editor.js

@@ -2001,7 +2001,7 @@ pre code {
 
 		let NOTES_WEB_STYLESHEET, MASK_WEB_STYLESHEET, HIGHLIGHTS_WEB_STYLESHEET;
 		let selectedNote, anchorElement, maskNoteElement, maskPageElement, highlightSelectionMode, removeHighlightMode, resizingNoteMode, movingNoteMode, highlightColor, collapseNoteTimeout, cuttingOuterMode, cuttingMode, cuttingTouchTarget, cuttingPath, cuttingPathIndex, previousContent;
-		let removedElements = [], removedElementIndex = 0, initScriptContent, pageResources, pageUrl, pageCompressContent, includeInfobar, openInfobar;
+		let removedElements = [], removedElementIndex = 0, initScriptContent, pageResources, pageUrl, pageCompressContent, includeInfobar, openInfobar, infobarPositionAbsolute, infobarPositionTop, infobarPositionBottom, infobarPositionLeft, infobarPositionRight;
 
 		globalThis.zip = singlefile.helper.zip;
 		initEventListeners();
@@ -2098,6 +2098,11 @@ pre code {
 					onUpdate(true);
 					includeInfobar = message.includeInfobar;
 					openInfobar = message.openInfobar;
+					infobarPositionAbsolute = message.infobarPositionAbsolute;
+					infobarPositionTop = message.infobarPositionTop;
+					infobarPositionBottom = message.infobarPositionBottom;
+					infobarPositionLeft = message.infobarPositionLeft;
+					infobarPositionRight = message.infobarPositionRight;
 					let content = getContent(message.compressHTML, message.updatedResources);
 					if (initScriptContent) {
 						content = content.replace(/<script data-template-shadow-root src.*?<\/script>/g, initScriptContent);
@@ -2153,7 +2158,14 @@ pre code {
 					printPage();
 				}
 				if (message.method == "displayInfobar") {
-					singlefile.helper.displayIcon(document, true, { openInfobar: message.openInfobar });
+					singlefile.helper.displayIcon(document, true, {
+						openInfobar: message.openInfobar,
+						infobarPositionAbsolute: message.infobarPositionAbsolute,
+						infobarPositionTop: message.infobarPositionTop,
+						infobarPositionBottom: message.infobarPositionBottom,
+						infobarPositionLeft: message.infobarPositionLeft,
+						infobarPositionRight: message.infobarPositionRight
+					});
 					const infobarDoc = document.implementation.createHTMLDocument();
 					infobarDoc.body.appendChild(document.querySelector(singlefile.helper.INFOBAR_TAGNAME));
 					serializeShadowRoots(infobarDoc.body);
@@ -3133,6 +3145,11 @@ pre code {
 			if (includeInfobar) {
 				const options = singlefile.helper.extractInfobarData(doc);
 				options.openInfobar = openInfobar;
+				options.infobarPositionAbsolute = infobarPositionAbsolute;
+				options.infobarPositionTop = infobarPositionTop;
+				options.infobarPositionRight = infobarPositionRight;
+				options.infobarPositionBottom = infobarPositionBottom;
+				options.infobarPositionLeft = infobarPositionLeft;
 				singlefile.helper.appendInfobar(doc, options);
 			}
 			doc.querySelectorAll("." + HIGHLIGHT_CLASS).forEach(noteElement => noteElement.classList.remove(HIGHLIGHT_HIDDEN_CLASS));

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
lib/single-file-extension.js


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
lib/single-file-infobar.js


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
lib/single-file.js


+ 1 - 1
manifest.json

@@ -9,7 +9,7 @@
 		"64": "src/ui/resources/icon_64.png",
 		"128": "src/ui/resources/icon_128.png"
 	},
-	"version": "1.22.77",
+	"version": "1.22.78",
 	"description": "__MSG_extensionDescription__",
 	"content_scripts": [
 		{

+ 80 - 24
package-lock.json

@@ -9,7 +9,7 @@
 			"version": "1.2.4",
 			"license": "AGPL-3.0-or-later",
 			"dependencies": {
-				"single-file-core": "1.5.44"
+				"single-file-core": "1.5.45"
 			},
 			"devDependencies": {
 				"@rollup/plugin-node-resolve": "15.2.3",
@@ -22,6 +22,7 @@
 			"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
 			"integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
 			"dev": true,
+			"license": "MIT",
 			"dependencies": {
 				"@jridgewell/set-array": "^1.2.1",
 				"@jridgewell/sourcemap-codec": "^1.4.10",
@@ -36,6 +37,7 @@
 			"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
 			"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
 			"dev": true,
+			"license": "MIT",
 			"engines": {
 				"node": ">=6.0.0"
 			}
@@ -45,6 +47,7 @@
 			"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
 			"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
 			"dev": true,
+			"license": "MIT",
 			"engines": {
 				"node": ">=6.0.0"
 			}
@@ -54,6 +57,7 @@
 			"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
 			"integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
 			"dev": true,
+			"license": "MIT",
 			"dependencies": {
 				"@jridgewell/gen-mapping": "^0.3.5",
 				"@jridgewell/trace-mapping": "^0.3.25"
@@ -63,13 +67,15 @@
 			"version": "1.5.0",
 			"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
 			"integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
-			"dev": true
+			"dev": true,
+			"license": "MIT"
 		},
 		"node_modules/@jridgewell/trace-mapping": {
 			"version": "0.3.25",
 			"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
 			"integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
 			"dev": true,
+			"license": "MIT",
 			"dependencies": {
 				"@jridgewell/resolve-uri": "^3.1.0",
 				"@jridgewell/sourcemap-codec": "^1.4.14"
@@ -80,6 +86,7 @@
 			"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz",
 			"integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==",
 			"dev": true,
+			"license": "MIT",
 			"dependencies": {
 				"@rollup/pluginutils": "^5.0.1",
 				"@types/resolve": "1.20.2",
@@ -105,6 +112,7 @@
 			"resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz",
 			"integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==",
 			"dev": true,
+			"license": "MIT",
 			"dependencies": {
 				"serialize-javascript": "^6.0.1",
 				"smob": "^1.0.0",
@@ -127,6 +135,7 @@
 			"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz",
 			"integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==",
 			"dev": true,
+			"license": "MIT",
 			"dependencies": {
 				"@types/estree": "^1.0.0",
 				"estree-walker": "^2.0.2",
@@ -152,6 +161,7 @@
 				"arm"
 			],
 			"dev": true,
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"android"
@@ -165,6 +175,7 @@
 				"arm64"
 			],
 			"dev": true,
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"android"
@@ -178,6 +189,7 @@
 				"arm64"
 			],
 			"dev": true,
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"darwin"
@@ -191,6 +203,7 @@
 				"x64"
 			],
 			"dev": true,
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"darwin"
@@ -204,6 +217,7 @@
 				"arm"
 			],
 			"dev": true,
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -217,6 +231,7 @@
 				"arm"
 			],
 			"dev": true,
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -230,6 +245,7 @@
 				"arm64"
 			],
 			"dev": true,
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -243,6 +259,7 @@
 				"arm64"
 			],
 			"dev": true,
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -256,6 +273,7 @@
 				"ppc64"
 			],
 			"dev": true,
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -269,6 +287,7 @@
 				"riscv64"
 			],
 			"dev": true,
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -282,6 +301,7 @@
 				"s390x"
 			],
 			"dev": true,
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -295,6 +315,7 @@
 				"x64"
 			],
 			"dev": true,
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -308,6 +329,7 @@
 				"x64"
 			],
 			"dev": true,
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -321,6 +343,7 @@
 				"arm64"
 			],
 			"dev": true,
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"win32"
@@ -334,6 +357,7 @@
 				"ia32"
 			],
 			"dev": true,
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"win32"
@@ -347,6 +371,7 @@
 				"x64"
 			],
 			"dev": true,
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"win32"
@@ -356,19 +381,22 @@
 			"version": "1.0.6",
 			"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
 			"integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
-			"dev": true
+			"dev": true,
+			"license": "MIT"
 		},
 		"node_modules/@types/resolve": {
 			"version": "1.20.2",
 			"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
 			"integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==",
-			"dev": true
+			"dev": true,
+			"license": "MIT"
 		},
 		"node_modules/acorn": {
 			"version": "8.14.0",
 			"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
 			"integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
 			"dev": true,
+			"license": "MIT",
 			"bin": {
 				"acorn": "bin/acorn"
 			},
@@ -380,13 +408,15 @@
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
 			"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
-			"dev": true
+			"dev": true,
+			"license": "MIT"
 		},
 		"node_modules/builtin-modules": {
 			"version": "3.3.0",
 			"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
 			"integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
 			"dev": true,
+			"license": "MIT",
 			"engines": {
 				"node": ">=6"
 			},
@@ -398,13 +428,15 @@
 			"version": "2.20.3",
 			"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
 			"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
-			"dev": true
+			"dev": true,
+			"license": "MIT"
 		},
 		"node_modules/deepmerge": {
 			"version": "4.3.1",
 			"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
 			"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
 			"dev": true,
+			"license": "MIT",
 			"engines": {
 				"node": ">=0.10.0"
 			}
@@ -413,7 +445,8 @@
 			"version": "2.0.2",
 			"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
 			"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
-			"dev": true
+			"dev": true,
+			"license": "MIT"
 		},
 		"node_modules/fsevents": {
 			"version": "2.3.3",
@@ -421,6 +454,7 @@
 			"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
 			"dev": true,
 			"hasInstallScript": true,
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"darwin"
@@ -434,6 +468,7 @@
 			"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
 			"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
 			"dev": true,
+			"license": "MIT",
 			"funding": {
 				"url": "https://github.com/sponsors/ljharb"
 			}
@@ -443,6 +478,7 @@
 			"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
 			"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
 			"dev": true,
+			"license": "MIT",
 			"dependencies": {
 				"function-bind": "^1.1.2"
 			},
@@ -455,6 +491,7 @@
 			"resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
 			"integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
 			"dev": true,
+			"license": "MIT",
 			"dependencies": {
 				"builtin-modules": "^3.3.0"
 			},
@@ -466,10 +503,11 @@
 			}
 		},
 		"node_modules/is-core-module": {
-			"version": "2.16.0",
-			"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.0.tgz",
-			"integrity": "sha512-urTSINYfAYgcbLb0yDQ6egFm6h3Mo1DcF9EkyXSRjjzdHbsulg01qhwWuXdOoUBuTkbQ80KDboXa0vFJ+BDH+g==",
+			"version": "2.16.1",
+			"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+			"integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
 			"dev": true,
+			"license": "MIT",
 			"dependencies": {
 				"hasown": "^2.0.2"
 			},
@@ -484,19 +522,22 @@
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
 			"integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
-			"dev": true
+			"dev": true,
+			"license": "MIT"
 		},
 		"node_modules/path-parse": {
 			"version": "1.0.7",
 			"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
 			"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-			"dev": true
+			"dev": true,
+			"license": "MIT"
 		},
 		"node_modules/picomatch": {
 			"version": "4.0.2",
 			"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
 			"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
 			"dev": true,
+			"license": "MIT",
 			"engines": {
 				"node": ">=12"
 			},
@@ -509,15 +550,17 @@
 			"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
 			"integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
 			"dev": true,
+			"license": "MIT",
 			"dependencies": {
 				"safe-buffer": "^5.1.0"
 			}
 		},
 		"node_modules/resolve": {
-			"version": "1.22.9",
-			"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.9.tgz",
-			"integrity": "sha512-QxrmX1DzraFIi9PxdG5VkRfRwIgjwyud+z/iBwfRRrVmHc+P9Q7u2lSSpQ6bjr2gy5lrqIiU9vb6iAeGf2400A==",
+			"version": "1.22.10",
+			"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
+			"integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
 			"dev": true,
+			"license": "MIT",
 			"dependencies": {
 				"is-core-module": "^2.16.0",
 				"path-parse": "^1.0.7",
@@ -526,6 +569,9 @@
 			"bin": {
 				"resolve": "bin/resolve"
 			},
+			"engines": {
+				"node": ">= 0.4"
+			},
 			"funding": {
 				"url": "https://github.com/sponsors/ljharb"
 			}
@@ -535,6 +581,7 @@
 			"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.4.tgz",
 			"integrity": "sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==",
 			"dev": true,
+			"license": "MIT",
 			"dependencies": {
 				"@types/estree": "1.0.5"
 			},
@@ -569,7 +616,8 @@
 			"version": "1.0.5",
 			"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
 			"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
-			"dev": true
+			"dev": true,
+			"license": "MIT"
 		},
 		"node_modules/safe-buffer": {
 			"version": "5.2.1",
@@ -589,33 +637,38 @@
 					"type": "consulting",
 					"url": "https://feross.org/support"
 				}
-			]
+			],
+			"license": "MIT"
 		},
 		"node_modules/serialize-javascript": {
 			"version": "6.0.2",
 			"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
 			"integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
 			"dev": true,
+			"license": "BSD-3-Clause",
 			"dependencies": {
 				"randombytes": "^2.1.0"
 			}
 		},
 		"node_modules/single-file-core": {
-			"version": "1.5.44",
-			"resolved": "https://registry.npmjs.org/single-file-core/-/single-file-core-1.5.44.tgz",
-			"integrity": "sha512-C8/Y4uw6sZLFcsZFTSRzPB53zQjZYlfps40nUAaKwRksvyv3HrsbvJHGydCfWZ+0GOLN42aWJ8UkztGggFobLg=="
+			"version": "1.5.45",
+			"resolved": "https://registry.npmjs.org/single-file-core/-/single-file-core-1.5.45.tgz",
+			"integrity": "sha512-u4CZ6kLKG9EOC1s6CHqu/msvBi6JbBVolrMVdWhsbSTivTK/kllCtpUJGWUQQtys2j1kmElngIyGDqJU/OkDfw==",
+			"license": "AGPL-3.0-or-later"
 		},
 		"node_modules/smob": {
 			"version": "1.5.0",
 			"resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz",
 			"integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==",
-			"dev": true
+			"dev": true,
+			"license": "MIT"
 		},
 		"node_modules/source-map": {
 			"version": "0.6.1",
 			"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
 			"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
 			"dev": true,
+			"license": "BSD-3-Clause",
 			"engines": {
 				"node": ">=0.10.0"
 			}
@@ -625,6 +678,7 @@
 			"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
 			"integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
 			"dev": true,
+			"license": "MIT",
 			"dependencies": {
 				"buffer-from": "^1.0.0",
 				"source-map": "^0.6.0"
@@ -635,6 +689,7 @@
 			"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
 			"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
 			"dev": true,
+			"license": "MIT",
 			"engines": {
 				"node": ">= 0.4"
 			},
@@ -643,10 +698,11 @@
 			}
 		},
 		"node_modules/terser": {
-			"version": "5.37.0",
-			"resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz",
-			"integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==",
+			"version": "5.38.1",
+			"resolved": "https://registry.npmjs.org/terser/-/terser-5.38.1.tgz",
+			"integrity": "sha512-GWANVlPM/ZfYzuPHjq0nxT+EbOEDDN3Jwhwdg1D8TU8oSkktp8w64Uq4auuGLxFSoNTRDncTq2hQHX1Ld9KHkA==",
 			"dev": true,
+			"license": "BSD-2-Clause",
 			"dependencies": {
 				"@jridgewell/source-map": "^0.3.3",
 				"acorn": "^8.8.2",

+ 1 - 1
package.json

@@ -10,7 +10,7 @@
 	},
 	"type": "module",
 	"dependencies": {
-		"single-file-core": "1.5.44"
+		"single-file-core": "1.5.45"
 	},
 	"devDependencies": {
 		"rollup": "4.22.4",

+ 6 - 1
src/core/bg/config.js

@@ -184,7 +184,12 @@ const DEFAULT_CONFIG = {
 	S3AccessKey: "",
 	S3SecretKey: "",
 	resolveLinks: true,
-	groupDuplicateStylesheets: false
+	groupDuplicateStylesheets: false,
+	infobarPositionAbsolute: false,
+	infobarPositionTop: "16px",
+	infobarPositionRight: "16px",
+	infobarPositionBottom: "",
+	infobarPositionLeft: ""
 };
 
 const DEFAULT_RULES = [{

+ 12 - 2
src/core/bg/downloads.js

@@ -244,7 +244,12 @@ async function downloadContent(contents, tab, incognito, message) {
 					bookmarkId: message.bookmarkId,
 					replaceBookmarkURL: message.replaceBookmarkURL,
 					includeInfobar: message.includeInfobar,
-					openInfobar: message.openInfobar
+					openInfobar: message.openInfobar,
+					infobarPositionAbsolute: message.infobarPositionAbsolute,
+					infobarPositionTop: message.infobarPositionTop,
+					infobarPositionBottom: message.infobarPositionBottom,
+					infobarPositionLeft: message.infobarPositionLeft,
+					infobarPositionRight: message.infobarPositionRight
 				});
 				if (!response) {
 					throw new Error("upload_cancelled");
@@ -372,7 +377,12 @@ async function downloadCompressedContent(message, tab) {
 					bookmarkId: message.bookmarkId,
 					replaceBookmarkURL: message.replaceBookmarkURL,
 					includeInfobar: message.includeInfobar,
-					openInfobar: message.openInfobar
+					openInfobar: message.openInfobar,
+					infobarPositionAbsolute: message.infobarPositionAbsolute,
+					infobarPositionTop: message.infobarPositionTop,
+					infobarPositionBottom: message.infobarPositionBottom,
+					infobarPositionLeft: message.infobarPositionLeft,
+					infobarPositionRight: message.infobarPositionRight
 				});
 			}
 			if (message.bookmarkId && message.replaceBookmarkURL && response && response.url) {

+ 6 - 1
src/core/common/download.js

@@ -114,7 +114,12 @@ async function downloadPage(pageData, options) {
 		S3Region: options.S3Region,
 		S3Bucket: options.S3Bucket,
 		S3AccessKey: options.S3AccessKey,
-		S3SecretKey: options.S3SecretKey
+		S3SecretKey: options.S3SecretKey,
+		infobarPositionAbsolute: options.infobarPositionAbsolute,
+		infobarPositionTop: options.infobarPositionTop,
+		infobarPositionBottom: options.infobarPositionBottom,
+		infobarPositionLeft: options.infobarPositionLeft,
+		infobarPositionRight: options.infobarPositionRight
 	};
 	const pingInterval = setInterval(() => {
 		browser.runtime.sendMessage({ method: "ping" }).then(() => { });

+ 11 - 1
src/ui/bg/ui-editor.js

@@ -565,6 +565,11 @@ function savePage() {
 		compressHTML: tabData.options.compressHTML,
 		includeInfobar: tabData.options.includeInfobar,
 		openInfobar: tabData.options.openInfobar,
+		infobarPositionAbsolute: tabData.options.infobarPositionAbsolute,
+		infobarPositionTop: tabData.options.infobarPositionTop,
+		infobarPositionBottom: tabData.options.infobarPositionBottom,
+		infobarPositionLeft: tabData.options.infobarPositionLeft,
+		infobarPositionRight: tabData.options.infobarPositionRight,
 		backgroundSave: tabData.options.backgroundSave,
 		updatedResources,
 		filename: tabData.filename,
@@ -582,7 +587,12 @@ function savePage() {
 function displayInfobar() {
 	editorElement.contentWindow.postMessage(JSON.stringify({
 		method: "displayInfobar",
-		openInfobar: tabData.options.openInfobar
+		openInfobar: tabData.options.openInfobar,
+		infobarPositionAbsolute: tabData.options.infobarPositionAbsolute,
+		infobarPositionTop: tabData.options.infobarPositionTop,
+		infobarPositionBottom: tabData.options.infobarPositionBottom,
+		infobarPositionLeft: tabData.options.infobarPositionLeft,
+		infobarPositionRight: tabData.options.infobarPositionRight
 	}), "*");
 }
 

+ 19 - 2
src/ui/content/content-ui-editor-web.js

@@ -981,7 +981,7 @@ pre code {
 
 	let NOTES_WEB_STYLESHEET, MASK_WEB_STYLESHEET, HIGHLIGHTS_WEB_STYLESHEET;
 	let selectedNote, anchorElement, maskNoteElement, maskPageElement, highlightSelectionMode, removeHighlightMode, resizingNoteMode, movingNoteMode, highlightColor, collapseNoteTimeout, cuttingOuterMode, cuttingMode, cuttingTouchTarget, cuttingPath, cuttingPathIndex, previousContent;
-	let removedElements = [], removedElementIndex = 0, initScriptContent, pageResources, pageUrl, pageCompressContent, includeInfobar, openInfobar;
+	let removedElements = [], removedElementIndex = 0, initScriptContent, pageResources, pageUrl, pageCompressContent, includeInfobar, openInfobar, infobarPositionAbsolute, infobarPositionTop, infobarPositionBottom, infobarPositionLeft, infobarPositionRight;
 
 	globalThis.zip = singlefile.helper.zip;
 	initEventListeners();
@@ -1078,6 +1078,11 @@ pre code {
 				onUpdate(true);
 				includeInfobar = message.includeInfobar;
 				openInfobar = message.openInfobar;
+				infobarPositionAbsolute = message.infobarPositionAbsolute;
+				infobarPositionTop = message.infobarPositionTop;
+				infobarPositionBottom = message.infobarPositionBottom;
+				infobarPositionLeft = message.infobarPositionLeft;
+				infobarPositionRight = message.infobarPositionRight;
 				let content = getContent(message.compressHTML, message.updatedResources);
 				if (initScriptContent) {
 					content = content.replace(/<script data-template-shadow-root src.*?<\/script>/g, initScriptContent);
@@ -1133,7 +1138,14 @@ pre code {
 				printPage();
 			}
 			if (message.method == "displayInfobar") {
-				singlefile.helper.displayIcon(document, true, { openInfobar: message.openInfobar });
+				singlefile.helper.displayIcon(document, true, {
+					openInfobar: message.openInfobar,
+					infobarPositionAbsolute: message.infobarPositionAbsolute,
+					infobarPositionTop: message.infobarPositionTop,
+					infobarPositionBottom: message.infobarPositionBottom,
+					infobarPositionLeft: message.infobarPositionLeft,
+					infobarPositionRight: message.infobarPositionRight
+				});
 				const infobarDoc = document.implementation.createHTMLDocument();
 				infobarDoc.body.appendChild(document.querySelector(singlefile.helper.INFOBAR_TAGNAME));
 				serializeShadowRoots(infobarDoc.body);
@@ -2113,6 +2125,11 @@ pre code {
 		if (includeInfobar) {
 			const options = singlefile.helper.extractInfobarData(doc);
 			options.openInfobar = openInfobar;
+			options.infobarPositionAbsolute = infobarPositionAbsolute;
+			options.infobarPositionTop = infobarPositionTop;
+			options.infobarPositionRight = infobarPositionRight;
+			options.infobarPositionBottom = infobarPositionBottom;
+			options.infobarPositionLeft = infobarPositionLeft;
 			singlefile.helper.appendInfobar(doc, options);
 		}
 		doc.querySelectorAll("." + HIGHLIGHT_CLASS).forEach(noteElement => noteElement.classList.remove(HIGHLIGHT_HIDDEN_CLASS));

+ 8 - 0
src/ui/pages/help.html

@@ -1141,6 +1141,14 @@
 						specified value (e.g. "%decode-uri-component&lt;{page-title}&gt;" for the URI-decoded
 						representation of the page title)
 					</li>
+					<li><code>%encode-base64&lt;value&gt;</code>: the base64-encoded representation of the specified
+						value (e.g. "%encode-base64&lt;{page-title}&gt;" for the base64-encoded representation of the
+						page title)
+					</li>
+					<li><code>%decode-base64&lt;value&gt;</code>: the base64-decoded representation of the specified
+						value (e.g. "%decode-base64&lt;{page-title}&gt;" for the base64-decoded representation of the
+						page title)
+					</li>
 					<li><code>%page-element-text&lt;selector&gt;</code>: the text content of the first element matching
 						the specified selector (e.g. "%page-element-text&lt;h1&gt;" for the text content of the first H1
 						element)

+ 6 - 0
src/ui/pages/help_zh_CN.html

@@ -806,6 +806,12 @@
                         "%encode-uri-component&lt;{page-title}&gt;" 获取页面标题的 URI 编码表示)。</li>
                     <li><code>%decode-uri-component&lt;value&gt;</code>: 指定值的 URI 解码表示(例如
                         "%decode-uri-component&lt;{page-title}&gt;" 获取页面标题的 URI 解码表示)。</li>
+                    <li><code>%encode-base64&lt;value&gt;</code>: 指定值的 Base64 编码表示(例如
+                        "%encode-base64&lt;{page-title}&gt;"
+                        获取页面标题的 Base64 编码表示)。</li>
+                    <li><code>%decode-base64&lt;value&gt;</code>: 指定值的 Base64 解码表示(例如
+                        "%decode-base64&lt;{page-title}&gt;"
+                        获取页面标题的 Base64 解码表示)。</li>
                     <li><code>%page-element-text&lt;selector&gt;</code>: 获取第一个匹配指定选择器的元素的文本内容(例如
                         "%page-element-text&lt;h1&gt;" 获取第一个 H1 元素的文本内容)。</li>
                     <li><code>%page-element-attribute&lt;selector|attribute&gt;</code>: 获取第一个匹配指定选择器的元素的指定属性值(例如

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно