browser-extension-settings 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/lib/settings.ts +35 -0
  2. package/package.json +2 -2
package/lib/settings.ts CHANGED
@@ -402,6 +402,10 @@ function createSettingsElement() {
402
402
  }
403
403
 
404
404
  function addSideMenu() {
405
+ if (!getSettingsValue("displaySettingsButtonInSideMenu")) {
406
+ return
407
+ }
408
+
405
409
  const menu =
406
410
  $("#browser_extension_side_menu") ||
407
411
  addElement(doc.body, "div", {
@@ -430,6 +434,33 @@ function addSideMenu() {
430
434
  })
431
435
  }
432
436
 
437
+ function addCommonSettings(settingsTable: SettingsTable) {
438
+ let maxGroup = 0
439
+ for (const key in settingsTable) {
440
+ if (Object.hasOwn(settingsTable, key)) {
441
+ const item = settingsTable[key]
442
+ const group = item.group || 1
443
+ if (group > maxGroup) {
444
+ maxGroup = group
445
+ }
446
+ }
447
+ }
448
+
449
+ settingsTable.displaySettingsButtonInSideMenu = {
450
+ title: "Display Settings Button in Side Menu",
451
+ defaultValue: !(
452
+ typeof GM === "object" && typeof GM.registerMenuCommand === "function"
453
+ ),
454
+ group: maxGroup + 1,
455
+ }
456
+ }
457
+
458
+ function handleShowSettingsUrl() {
459
+ if (location.hash === "#bes-show-settings") {
460
+ setTimeout(showSettings, 100)
461
+ }
462
+ }
463
+
433
464
  export async function showSettings() {
434
465
  const settingsContainer = getSettingsContainer()
435
466
 
@@ -446,10 +477,12 @@ export async function showSettings() {
446
477
  export const initSettings = async (options: SettingsOptions) => {
447
478
  settingsOptions = options
448
479
  settingsTable = options.settingsTable || {}
480
+ addCommonSettings(settingsTable)
449
481
  addValueChangeListener(storageKey, async () => {
450
482
  settings = await getSettings()
451
483
  // console.log(JSON.stringify(settings, null, 2))
452
484
  await updateOptions()
485
+ addSideMenu()
453
486
  if (typeof options.onValueChange === "function") {
454
487
  options.onValueChange()
455
488
  }
@@ -461,4 +494,6 @@ export const initSettings = async (options: SettingsOptions) => {
461
494
  initExtensionList()
462
495
  addSideMenu()
463
496
  })
497
+
498
+ handleShowSettingsUrl()
464
499
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "browser-extension-settings",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Settings module for developing browser extensions and userscripts",
5
5
  "type": "module",
6
6
  "main": "./lib/index.ts",
@@ -28,7 +28,7 @@
28
28
  "homepage": "https://github.com/utags/browser-extension-settings#readme",
29
29
  "dependencies": {
30
30
  "browser-extension-storage": "^0.1.2",
31
- "browser-extension-utils": "^0.1.7"
31
+ "browser-extension-utils": "^0.1.9"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/chrome": "^0.0.237",