browser-extension-settings 0.6.0 → 0.6.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.
- package/lib/common.ts +1 -1
- package/lib/messages/de.ts +1 -0
- package/lib/messages/en.ts +1 -0
- package/lib/messages/es.ts +1 -0
- package/lib/messages/fr.ts +2 -1
- package/lib/messages/index.ts +48 -19
- package/lib/messages/it.ts +2 -1
- package/lib/messages/ja.ts +1 -0
- package/lib/messages/ko.ts +2 -1
- package/lib/messages/pt.ts +1 -0
- package/lib/messages/ru.ts +1 -0
- package/lib/messages/vi.ts +1 -0
- package/lib/messages/zh-cn.ts +2 -1
- package/lib/messages/zh-hk.ts +2 -1
- package/lib/messages/zh-tw.ts +2 -1
- package/lib/settings.ts +107 -42
- package/package.json +2 -2
package/lib/common.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const besVersion =
|
|
1
|
+
export const besVersion = 62
|
|
2
2
|
export const openButton = `<svg viewBox="0 0 60.2601318359375 84.8134765625" version="1.1" xmlns="http://www.w3.org/2000/svg" class=" glyph-box" style="height: 9.62969px; width: 6.84191px;"><g transform="matrix(1 0 0 1 -6.194965820312518 77.63671875)"><path d="M66.4551-35.2539C66.4551-36.4746 65.9668-37.5977 65.0391-38.4766L26.3672-76.3672C25.4883-77.1973 24.4141-77.6367 23.1445-77.6367C20.6543-77.6367 18.7012-75.7324 18.7012-73.1934C18.7012-71.9727 19.1895-70.8496 19.9707-70.0195L55.5176-35.2539L19.9707-0.488281C19.1895 0.341797 18.7012 1.41602 18.7012 2.68555C18.7012 5.22461 20.6543 7.12891 23.1445 7.12891C24.4141 7.12891 25.4883 6.68945 26.3672 5.81055L65.0391-32.0312C65.9668-32.959 66.4551-34.0332 66.4551-35.2539Z"></path></g></svg>`
|
|
3
3
|
export const openInNewTabButton = `<svg viewBox="0 0 72.127685546875 72.2177734375" version="1.1" xmlns="http://www.w3.org/2000/svg" class=" glyph-box" style="height: 8.19958px; width: 8.18935px;"><g transform="matrix(1 0 0 1 -12.451127929687573 71.3388671875)"><path d="M84.5703-17.334L84.5215-66.4551C84.5215-69.2383 82.7148-71.1914 79.7852-71.1914L30.6641-71.1914C27.9297-71.1914 26.0742-69.0918 26.0742-66.748C26.0742-64.4043 28.1738-62.4023 30.4688-62.4023L47.4609-62.4023L71.2891-63.1836L62.207-55.2246L13.8184-6.73828C12.9395-5.85938 12.4512-4.73633 12.4512-3.66211C12.4512-1.31836 14.5508 0.878906 16.9922 0.878906C18.1152 0.878906 19.1895 0.488281 20.0684-0.439453L68.5547-48.877L76.6113-58.0078L75.7324-35.2051L75.7324-17.1387C75.7324-14.8438 77.7344-12.6953 80.127-12.6953C82.4707-12.6953 84.5703-14.6973 84.5703-17.334Z"></path></g></svg>`
|
|
4
4
|
export const settingButton = `<svg viewBox="0 0 16 16" version="1.1">
|
package/lib/messages/de.ts
CHANGED
|
@@ -2,6 +2,7 @@ export const messages = {
|
|
|
2
2
|
"settings.title": "Einstellungen",
|
|
3
3
|
"settings.otherExtensions": "Andere Erweiterungen",
|
|
4
4
|
"settings.locale": "Sprache",
|
|
5
|
+
"settings.systemLanguage": "Systemsprache",
|
|
5
6
|
"settings.displaySettingsButtonInSideMenu": "Einstellungsschaltfläche im Seitenmenü anzeigen",
|
|
6
7
|
"settings.menu.settings": "⚙️ Einstellungen",
|
|
7
8
|
"settings.extensions.utags.title": "🏷️ UTags - Benutzer-Tags zu Links hinzufügen",
|
package/lib/messages/en.ts
CHANGED
|
@@ -2,6 +2,7 @@ const messages = {
|
|
|
2
2
|
"settings.title": "Settings",
|
|
3
3
|
"settings.otherExtensions": "Other Extensions",
|
|
4
4
|
"settings.locale": "Language",
|
|
5
|
+
"settings.systemLanguage": "System Language",
|
|
5
6
|
"settings.displaySettingsButtonInSideMenu": "Display Settings Button in Side Menu",
|
|
6
7
|
"settings.menu.settings": "⚙️ Settings",
|
|
7
8
|
"settings.extensions.utags.title": "🏷️ UTags - Add usertags to links",
|
package/lib/messages/es.ts
CHANGED
|
@@ -2,6 +2,7 @@ export const messages = {
|
|
|
2
2
|
"settings.title": "Configuración",
|
|
3
3
|
"settings.otherExtensions": "Otras extensiones",
|
|
4
4
|
"settings.locale": "Idioma",
|
|
5
|
+
"settings.systemLanguage": "Idioma del sistema",
|
|
5
6
|
"settings.displaySettingsButtonInSideMenu": "Mostrar botón de configuración en el menú lateral",
|
|
6
7
|
"settings.menu.settings": "⚙️ Configuración",
|
|
7
8
|
"settings.extensions.utags.title": "🏷️ UTags - Agregar etiquetas de usuario a los enlaces",
|
package/lib/messages/fr.ts
CHANGED
|
@@ -2,7 +2,8 @@ export const messages = {
|
|
|
2
2
|
"settings.title": "Paramètres",
|
|
3
3
|
"settings.otherExtensions": "Autres extensions",
|
|
4
4
|
"settings.locale": "Langue",
|
|
5
|
-
"settings.
|
|
5
|
+
"settings.systemLanguage": "Langue du système",
|
|
6
|
+
"settings.displaySettingsButtonInSideMenu": "Afficher le bouton de paramètres dans le menu latéral",
|
|
6
7
|
"settings.menu.settings": "⚙️ Paramètres",
|
|
7
8
|
"settings.extensions.utags.title": "🏷️ UTags - Ajouter des balises utilisateur aux liens",
|
|
8
9
|
"settings.extensions.links-helper.title": "🔗 Assistant de liens",
|
package/lib/messages/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { initAvailableLocales, initI18n,
|
|
1
|
+
import { initAvailableLocales, initI18n, getPrefferedLocale } from "browser-extension-i18n"
|
|
2
2
|
import messagesEn from "./en.js"
|
|
3
3
|
import messagesZh from "./zh-cn.js"
|
|
4
4
|
import messagesZhHk from "./zh-hk.js"
|
|
@@ -15,41 +15,70 @@ import messagesVi from "./vi.js"
|
|
|
15
15
|
|
|
16
16
|
const localeMap = {
|
|
17
17
|
en: messagesEn,
|
|
18
|
-
"en-
|
|
18
|
+
"en-us": messagesEn,
|
|
19
19
|
zh: messagesZh,
|
|
20
|
-
"zh-
|
|
21
|
-
"zh-
|
|
22
|
-
"zh-
|
|
20
|
+
"zh-cn": messagesZh,
|
|
21
|
+
"zh-hk": messagesZhHk,
|
|
22
|
+
"zh-tw": messagesZhTw,
|
|
23
23
|
ru: messagesRu,
|
|
24
|
-
"ru-
|
|
24
|
+
"ru-ru": messagesRu,
|
|
25
25
|
ko: messagesKo,
|
|
26
|
-
"ko-
|
|
26
|
+
"ko-kr": messagesKo,
|
|
27
27
|
ja: messagesJa,
|
|
28
|
-
"ja-
|
|
28
|
+
"ja-jp": messagesJa,
|
|
29
29
|
fr: messagesFr,
|
|
30
|
-
"fr-
|
|
30
|
+
"fr-fr": messagesFr,
|
|
31
31
|
de: messagesDe,
|
|
32
|
-
"de-
|
|
32
|
+
"de-de": messagesDe,
|
|
33
33
|
it: messagesIt,
|
|
34
|
-
"it-
|
|
34
|
+
"it-it": messagesIt,
|
|
35
35
|
es: messagesEs,
|
|
36
|
-
"es-
|
|
36
|
+
"es-es": messagesEs,
|
|
37
37
|
pt: messagesPt,
|
|
38
|
-
"pt-
|
|
39
|
-
"pt-
|
|
38
|
+
"pt-pt": messagesPt,
|
|
39
|
+
"pt-br": messagesPt,
|
|
40
40
|
vi: messagesVi,
|
|
41
|
-
"vi-
|
|
41
|
+
"vi-vn": messagesVi,
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Language display names for each locale code
|
|
45
|
+
export const localeNames = {
|
|
46
|
+
en: "English",
|
|
47
|
+
"en-us": "English (US)",
|
|
48
|
+
zh: "中文",
|
|
49
|
+
"zh-cn": "中文 (简体)",
|
|
50
|
+
"zh-hk": "中文 (香港)",
|
|
51
|
+
"zh-tw": "中文 (台灣)",
|
|
52
|
+
ru: "Русский",
|
|
53
|
+
"ru-ru": "Русский",
|
|
54
|
+
ko: "한국어",
|
|
55
|
+
"ko-kr": "한국어",
|
|
56
|
+
ja: "日本語",
|
|
57
|
+
"ja-jp": "日本語",
|
|
58
|
+
fr: "Français",
|
|
59
|
+
"fr-fr": "Français",
|
|
60
|
+
de: "Deutsch",
|
|
61
|
+
"de-de": "Deutsch",
|
|
62
|
+
it: "Italiano",
|
|
63
|
+
"it-it": "Italiano",
|
|
64
|
+
es: "Español",
|
|
65
|
+
"es-es": "Español",
|
|
66
|
+
pt: "Português",
|
|
67
|
+
"pt-pt": "Português",
|
|
68
|
+
"pt-br": "Português (Brasil)",
|
|
69
|
+
vi: "Tiếng Việt",
|
|
70
|
+
"vi-vn": "Tiếng Việt",
|
|
42
71
|
}
|
|
43
72
|
|
|
44
73
|
const locales = Object.keys(localeMap)
|
|
45
74
|
|
|
46
75
|
initAvailableLocales(locales)
|
|
47
76
|
|
|
48
|
-
|
|
49
|
-
|
|
77
|
+
console.log("[settings] prefferedLocale:", getPrefferedLocale())
|
|
50
78
|
// eslint-disable-next-line import/no-mutable-exports
|
|
51
|
-
export let i = initI18n(localeMap,
|
|
79
|
+
export let i = initI18n(localeMap, getPrefferedLocale())
|
|
52
80
|
|
|
53
81
|
export function resetI18n(locale?: string) {
|
|
54
|
-
|
|
82
|
+
console.log("[settings] prefferedLocale:", getPrefferedLocale(), "locale:", locale)
|
|
83
|
+
i = initI18n(localeMap, locale || getPrefferedLocale())
|
|
55
84
|
}
|
package/lib/messages/it.ts
CHANGED
|
@@ -2,7 +2,8 @@ export const messages = {
|
|
|
2
2
|
"settings.title": "Impostazioni",
|
|
3
3
|
"settings.otherExtensions": "Altre estensioni",
|
|
4
4
|
"settings.locale": "Lingua",
|
|
5
|
-
"settings.
|
|
5
|
+
"settings.systemLanguage": "Lingua del sistema",
|
|
6
|
+
"settings.displaySettingsButtonInSideMenu": "Mostra pulsante impostazioni nel menu laterale",
|
|
6
7
|
"settings.menu.settings": "⚙️ Impostazioni",
|
|
7
8
|
"settings.extensions.utags.title": "🏷️ UTags - Aggiungi tag utente ai collegamenti",
|
|
8
9
|
"settings.extensions.links-helper.title": "🔗 Assistente collegamenti",
|
package/lib/messages/ja.ts
CHANGED
|
@@ -2,6 +2,7 @@ export const messages = {
|
|
|
2
2
|
"settings.title": "設定",
|
|
3
3
|
"settings.otherExtensions": "その他の拡張機能",
|
|
4
4
|
"settings.locale": "言語",
|
|
5
|
+
"settings.systemLanguage": "システム言語",
|
|
5
6
|
"settings.displaySettingsButtonInSideMenu": "サイドメニューに設定ボタンを表示",
|
|
6
7
|
"settings.menu.settings": "⚙️ 設定",
|
|
7
8
|
"settings.extensions.utags.title": "🏷️ UTags - リンクにユーザータグを追加",
|
package/lib/messages/ko.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export const messages = {
|
|
2
2
|
"settings.title": "설정",
|
|
3
|
-
"settings.otherExtensions": "
|
|
3
|
+
"settings.otherExtensions": "기타 확장 프로그램",
|
|
4
4
|
"settings.locale": "언어",
|
|
5
|
+
"settings.systemLanguage": "시스템 언어",
|
|
5
6
|
"settings.displaySettingsButtonInSideMenu": "사이드 메뉴에 설정 버튼 표시",
|
|
6
7
|
"settings.menu.settings": "⚙️ 설정",
|
|
7
8
|
"settings.extensions.utags.title": "🏷️ UTags - 링크에 사용자 태그 추가",
|
package/lib/messages/pt.ts
CHANGED
|
@@ -2,6 +2,7 @@ export const messages = {
|
|
|
2
2
|
"settings.title": "Configurações",
|
|
3
3
|
"settings.otherExtensions": "Outras extensões",
|
|
4
4
|
"settings.locale": "Idioma",
|
|
5
|
+
"settings.systemLanguage": "Idioma do sistema",
|
|
5
6
|
"settings.displaySettingsButtonInSideMenu": "Exibir botão de configurações no menu lateral",
|
|
6
7
|
"settings.menu.settings": "⚙️ Configurações",
|
|
7
8
|
"settings.extensions.utags.title": "🏷️ UTags - Adicionar tags de usuário aos links",
|
package/lib/messages/ru.ts
CHANGED
|
@@ -2,6 +2,7 @@ export const messages = {
|
|
|
2
2
|
"settings.title": "Настройки",
|
|
3
3
|
"settings.otherExtensions": "Другие расширения",
|
|
4
4
|
"settings.locale": "Язык",
|
|
5
|
+
"settings.systemLanguage": "Системный язык",
|
|
5
6
|
"settings.displaySettingsButtonInSideMenu": "Показать кнопку настроек в боковом меню",
|
|
6
7
|
"settings.menu.settings": "⚙️ Настройки",
|
|
7
8
|
"settings.extensions.utags.title": "🏷️ UTags - Добавить пользовательские теги к ссылкам",
|
package/lib/messages/vi.ts
CHANGED
|
@@ -2,6 +2,7 @@ export const messages = {
|
|
|
2
2
|
"settings.title": "Cài đặt",
|
|
3
3
|
"settings.otherExtensions": "Tiện ích mở rộng khác",
|
|
4
4
|
"settings.locale": "Ngôn ngữ",
|
|
5
|
+
"settings.systemLanguage": "Ngôn ngữ hệ thống",
|
|
5
6
|
"settings.displaySettingsButtonInSideMenu": "Hiển thị nút cài đặt trong menu bên",
|
|
6
7
|
"settings.menu.settings": "⚙️ Cài đặt",
|
|
7
8
|
"settings.extensions.utags.title": "🏷️ UTags - Thêm thẻ người dùng vào liên kết",
|
package/lib/messages/zh-cn.ts
CHANGED
|
@@ -2,7 +2,8 @@ export const messages = {
|
|
|
2
2
|
"settings.title": "设置",
|
|
3
3
|
"settings.otherExtensions": "其他扩展",
|
|
4
4
|
"settings.locale": "语言",
|
|
5
|
-
"settings.
|
|
5
|
+
"settings.systemLanguage": "系统语言",
|
|
6
|
+
"settings.displaySettingsButtonInSideMenu": "在侧边菜单中显示设置按钮",
|
|
6
7
|
"settings.menu.settings": "⚙️ 设置",
|
|
7
8
|
"settings.extensions.utags.title": "🏷️ 小鱼标签 (UTags) - 为链接添加用户标签",
|
|
8
9
|
"settings.extensions.links-helper.title": "🔗 链接助手",
|
package/lib/messages/zh-hk.ts
CHANGED
|
@@ -2,7 +2,8 @@ export const messages = {
|
|
|
2
2
|
"settings.title": "設定",
|
|
3
3
|
"settings.otherExtensions": "其他擴充功能",
|
|
4
4
|
"settings.locale": "語言",
|
|
5
|
-
"settings.
|
|
5
|
+
"settings.systemLanguage": "系統語言",
|
|
6
|
+
"settings.displaySettingsButtonInSideMenu": "在側邊選單中顯示設定按鈕",
|
|
6
7
|
"settings.menu.settings": "⚙️ 設定",
|
|
7
8
|
"settings.extensions.utags.title": "🏷️ 小魚標籤 (UTags) - 為連結添加用戶標籤",
|
|
8
9
|
"settings.extensions.links-helper.title": "🔗 連結助手",
|
package/lib/messages/zh-tw.ts
CHANGED
|
@@ -2,7 +2,8 @@ export const messages = {
|
|
|
2
2
|
"settings.title": "設定",
|
|
3
3
|
"settings.otherExtensions": "其他擴充功能",
|
|
4
4
|
"settings.locale": "語言",
|
|
5
|
-
"settings.
|
|
5
|
+
"settings.systemLanguage": "系統語言",
|
|
6
|
+
"settings.displaySettingsButtonInSideMenu": "在側邊選單中顯示設定按鈕",
|
|
6
7
|
"settings.menu.settings": "⚙️ 設定",
|
|
7
8
|
"settings.extensions.utags.title": "🏷️ 小魚標籤 (UTags) - 為連結新增使用者標籤",
|
|
8
9
|
"settings.extensions.links-helper.title": "🔗 連結助手",
|
package/lib/settings.ts
CHANGED
|
@@ -17,7 +17,12 @@ import {
|
|
|
17
17
|
runWhenDomReady,
|
|
18
18
|
runWhenHeadExists,
|
|
19
19
|
} from "browser-extension-utils"
|
|
20
|
+
// @ts-expect-error - data-text import for build system
|
|
20
21
|
import styleText from "data-text:./style.scss"
|
|
22
|
+
import {
|
|
23
|
+
initAvailableLocales,
|
|
24
|
+
getPrefferedLocale,
|
|
25
|
+
} from "browser-extension-i18n"
|
|
21
26
|
import { createSwitchOption } from "./switch.js"
|
|
22
27
|
import {
|
|
23
28
|
createExtensionList,
|
|
@@ -27,7 +32,15 @@ import {
|
|
|
27
32
|
deactiveExtensionList,
|
|
28
33
|
} from "./extension-list.js"
|
|
29
34
|
import { besVersion, settingButton } from "./common.js"
|
|
30
|
-
import { i,
|
|
35
|
+
import { i, resetI18n, localeNames } from "./messages/index.js"
|
|
36
|
+
|
|
37
|
+
// Declare GM global variable for userscript environment
|
|
38
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
39
|
+
declare const GM:
|
|
40
|
+
| {
|
|
41
|
+
registerMenuCommand?: (name: string, function_: () => void) => void
|
|
42
|
+
}
|
|
43
|
+
| undefined
|
|
31
44
|
|
|
32
45
|
const prefix = "browser_extension_settings_"
|
|
33
46
|
|
|
@@ -36,12 +49,13 @@ type SettingsOptions = {
|
|
|
36
49
|
title: string
|
|
37
50
|
footer?: string
|
|
38
51
|
settingsTable?: SettingsTable
|
|
52
|
+
availableLocales?: readonly string[]
|
|
39
53
|
onValueChange?: () => void
|
|
40
54
|
onViewUpdate?: (settingsMainView: HTMLElement) => void
|
|
41
55
|
relatedExtensions?: RelatedExtension[]
|
|
42
56
|
}
|
|
43
57
|
|
|
44
|
-
type SettingsTable = Record<
|
|
58
|
+
export type SettingsTable = Record<
|
|
45
59
|
string,
|
|
46
60
|
| SettingsSwitchItem
|
|
47
61
|
| SettingsInputItem
|
|
@@ -181,6 +195,23 @@ export function hideSettings() {
|
|
|
181
195
|
closeModal()
|
|
182
196
|
}
|
|
183
197
|
|
|
198
|
+
function destroySettings() {
|
|
199
|
+
closeModal()
|
|
200
|
+
const settingsContainer = getSettingsContainer()
|
|
201
|
+
if (settingsContainer) {
|
|
202
|
+
settingsContainer.remove()
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
function isSettingsShown() {
|
|
207
|
+
const settingsContainer = getSettingsContainer()
|
|
208
|
+
if (settingsContainer) {
|
|
209
|
+
return settingsContainer.style.display === "block"
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
return false
|
|
213
|
+
}
|
|
214
|
+
|
|
184
215
|
const onDocumentClick = (event: Event) => {
|
|
185
216
|
const target = event.target as HTMLElement
|
|
186
217
|
if (target?.closest(`.${prefix}container`)) {
|
|
@@ -320,13 +351,13 @@ function createSettingsElement() {
|
|
|
320
351
|
class: `${prefix}main thin_scrollbar`,
|
|
321
352
|
})
|
|
322
353
|
|
|
323
|
-
addElement(settingsMain, "a", {
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
})
|
|
354
|
+
// addElement(settingsMain, "a", {
|
|
355
|
+
// textContent: i("settings.title"),
|
|
356
|
+
// class: "navigation_go_previous",
|
|
357
|
+
// onclick() {
|
|
358
|
+
// activeExtensionList()
|
|
359
|
+
// },
|
|
360
|
+
// })
|
|
330
361
|
|
|
331
362
|
if (settingsOptions.title) {
|
|
332
363
|
addElement(settingsMain, "h2", { textContent: settingsOptions.title })
|
|
@@ -560,30 +591,26 @@ function addCommonSettings(settingsTable: SettingsTable) {
|
|
|
560
591
|
settingsTable.locale = {
|
|
561
592
|
title: i("settings.locale"),
|
|
562
593
|
type: "select",
|
|
563
|
-
defaultValue:
|
|
564
|
-
options: {
|
|
565
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
566
|
-
English: "en",
|
|
567
|
-
中文: "zh",
|
|
568
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
569
|
-
Русский: "ru",
|
|
570
|
-
},
|
|
594
|
+
defaultValue: "",
|
|
595
|
+
options: {},
|
|
571
596
|
group: ++maxGroup,
|
|
572
597
|
} as SettingsSelectItem
|
|
573
598
|
|
|
574
|
-
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
575
|
-
settingsTable.displaySettingsButtonInSideMenu = {
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
} as SettingsSwitchItem
|
|
599
|
+
// // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
600
|
+
// settingsTable.displaySettingsButtonInSideMenu = {
|
|
601
|
+
// title: i("settings.displaySettingsButtonInSideMenu"),
|
|
602
|
+
// defaultValue: !(
|
|
603
|
+
// typeof GM === "object" && typeof GM?.registerMenuCommand === "function"
|
|
604
|
+
// ),
|
|
605
|
+
// group: ++maxGroup,
|
|
606
|
+
// } as SettingsSwitchItem
|
|
582
607
|
}
|
|
583
608
|
|
|
584
609
|
function handleShowSettingsUrl() {
|
|
585
|
-
|
|
610
|
+
const hashString = `#!show-settings-${settingsOptions.id}`
|
|
611
|
+
if (location.hash === hashString) {
|
|
586
612
|
setTimeout(showSettings, 100)
|
|
613
|
+
history.replaceState({}, "", location.href.replace(hashString, ""))
|
|
587
614
|
}
|
|
588
615
|
}
|
|
589
616
|
|
|
@@ -596,48 +623,86 @@ export async function showSettings() {
|
|
|
596
623
|
|
|
597
624
|
addEventListener(document, "click", onDocumentClick, true)
|
|
598
625
|
addEventListener(document, "keydown", onDocumentKeyDown, true)
|
|
599
|
-
activeExtension(settingsOptions.id)
|
|
600
|
-
deactiveExtensionList()
|
|
626
|
+
// activeExtension(settingsOptions.id)
|
|
627
|
+
// deactiveExtensionList()
|
|
601
628
|
}
|
|
602
629
|
|
|
603
|
-
|
|
630
|
+
let lastLocale: string | undefined
|
|
631
|
+
|
|
632
|
+
// Reset settings UI on init and locale change
|
|
633
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
634
|
+
const resetSettingsUI = (optionsProvider: () => SettingsOptions) => {
|
|
635
|
+
lastLocale =
|
|
636
|
+
(getSettingsValue("locale") as string | undefined) || getPrefferedLocale()
|
|
637
|
+
resetI18n(lastLocale)
|
|
638
|
+
|
|
639
|
+
const options = optionsProvider()
|
|
604
640
|
settingsOptions = options
|
|
605
641
|
settingsTable = options.settingsTable || {}
|
|
606
642
|
addCommonSettings(settingsTable)
|
|
643
|
+
const availableLocales = options.availableLocales
|
|
644
|
+
if (availableLocales?.length) {
|
|
645
|
+
initAvailableLocales(availableLocales)
|
|
646
|
+
const localeSelect = settingsTable.locale as SettingsSelectItem
|
|
647
|
+
localeSelect.options = {
|
|
648
|
+
[i("settings.systemLanguage")]: "",
|
|
649
|
+
}
|
|
650
|
+
for (const locale of availableLocales) {
|
|
651
|
+
// Use language display name from localeNames, fallback to locale code if not found
|
|
652
|
+
const lowerCaseLocale = locale.toLowerCase()
|
|
653
|
+
const displayName =
|
|
654
|
+
localeNames[lowerCaseLocale as keyof typeof localeNames] || locale
|
|
655
|
+
localeSelect.options[displayName] = locale
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
// runWhenDomReady(() => {
|
|
660
|
+
// initExtensionList()
|
|
661
|
+
// addSideMenu()
|
|
662
|
+
// })
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
export const initSettings = async (optionsProvider: () => SettingsOptions) => {
|
|
607
666
|
addValueChangeListener(storageKey, async () => {
|
|
608
667
|
settings = await getSettings()
|
|
609
668
|
// console.log(JSON.stringify(settings, null, 2))
|
|
610
669
|
await updateOptions()
|
|
611
|
-
addSideMenu()
|
|
670
|
+
// addSideMenu()
|
|
612
671
|
|
|
613
672
|
const newLocale =
|
|
614
|
-
(getSettingsValue("locale") as string | undefined) ||
|
|
673
|
+
(getSettingsValue("locale") as string | undefined) || getPrefferedLocale()
|
|
615
674
|
console.log("lastLocale:", lastLocale, "newLocale:", newLocale)
|
|
616
675
|
if (lastLocale !== newLocale) {
|
|
617
|
-
|
|
676
|
+
const isShown = isSettingsShown()
|
|
677
|
+
destroySettings()
|
|
618
678
|
resetI18n(newLocale)
|
|
619
679
|
lastLocale = newLocale
|
|
620
|
-
|
|
680
|
+
|
|
681
|
+
setTimeout(() => {
|
|
682
|
+
resetSettingsUI(optionsProvider)
|
|
683
|
+
}, 50)
|
|
684
|
+
|
|
685
|
+
if (isShown) {
|
|
686
|
+
setTimeout(showSettings, 100)
|
|
687
|
+
}
|
|
621
688
|
}
|
|
622
689
|
|
|
623
|
-
if (typeof
|
|
624
|
-
|
|
690
|
+
if (typeof settingsOptions.onValueChange === "function") {
|
|
691
|
+
settingsOptions.onValueChange()
|
|
625
692
|
}
|
|
626
693
|
})
|
|
627
694
|
|
|
628
695
|
settings = await getSettings()
|
|
629
696
|
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
697
|
+
resetSettingsUI(optionsProvider)
|
|
698
|
+
// Wait until extension intialized
|
|
699
|
+
setTimeout(() => {
|
|
700
|
+
resetSettingsUI(optionsProvider)
|
|
701
|
+
}, 50)
|
|
633
702
|
|
|
634
703
|
runWhenHeadExists(() => {
|
|
635
704
|
addStyle(getSettingsStyle())
|
|
636
705
|
})
|
|
637
|
-
runWhenDomReady(() => {
|
|
638
|
-
initExtensionList()
|
|
639
|
-
addSideMenu()
|
|
640
|
-
})
|
|
641
706
|
|
|
642
707
|
registerMenuCommand(i("settings.menu.settings"), showSettings, "o")
|
|
643
708
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "browser-extension-settings",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.2",
|
|
4
4
|
"description": "Settings module for developing browser extensions and userscripts",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.ts",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
},
|
|
31
31
|
"homepage": "https://github.com/utags/browser-extension-settings#readme",
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"browser-extension-i18n": "^0.1.
|
|
33
|
+
"browser-extension-i18n": "^0.1.3",
|
|
34
34
|
"browser-extension-storage": "^0.1.2",
|
|
35
35
|
"browser-extension-utils": "^0.2.0"
|
|
36
36
|
},
|