browser-extension-settings 0.8.1 → 0.8.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.
@@ -74,11 +74,11 @@ const locales = Object.keys(localeMap)
74
74
 
75
75
  initAvailableLocales(locales)
76
76
 
77
- console.log("[settings] prefferedLocale:", getPrefferedLocale())
77
+ // console.log("[settings] prefferedLocale:", getPrefferedLocale())
78
78
  // eslint-disable-next-line import-x/no-mutable-exports
79
79
  export let i = initI18n(localeMap, getPrefferedLocale())
80
80
 
81
81
  export function resetI18n(locale?: string) {
82
- console.log("[settings] prefferedLocale:", getPrefferedLocale(), "locale:", locale)
82
+ // console.log("[settings] prefferedLocale:", getPrefferedLocale(), "locale:", locale)
83
83
  i = initI18n(localeMap, locale || getPrefferedLocale())
84
84
  }
package/lib/settings.ts CHANGED
@@ -172,17 +172,23 @@ const closeModal = () => {
172
172
  settingsContainer.remove()
173
173
  }
174
174
 
175
- removeEventListener(document, "click", onDocumentClick, true)
176
- removeEventListener(document, "keydown", onDocumentKeyDown, true)
177
- removeEventListener(
178
- globalThis,
179
- "beforeShowSettings",
180
- onBeforeShowSettings,
181
- true
182
- )
175
+ removeEventListener(doc, "click", onDocumentClick, true)
176
+ removeEventListener(doc, "keydown", onDocumentKeyDown, true)
177
+ removeEventListener(win, "beforeShowSettings", onBeforeShowSettings, true)
183
178
  }
184
179
 
185
180
  export function hideSettings() {
181
+ if (win.self !== win.top) {
182
+ win.top?.postMessage(
183
+ {
184
+ type: "bes-hide-settings",
185
+ id: settingsOptions?.id,
186
+ },
187
+ "*"
188
+ )
189
+ return
190
+ }
191
+
186
192
  closeModal()
187
193
  }
188
194
 
@@ -591,24 +597,32 @@ function onBeforeShowSettings() {
591
597
  }
592
598
 
593
599
  export async function showSettings() {
600
+ // Close opened modal before showing settings
594
601
  if (win.self !== win.top) {
602
+ win.top?.postMessage(
603
+ {
604
+ type: "bes-show-settings",
605
+ id: settingsOptions?.id,
606
+ },
607
+ "*"
608
+ )
595
609
  return
596
610
  }
597
- // Close opened modal before showing settings
611
+
598
612
  closeModal()
599
613
 
600
614
  const event = new CustomEvent("beforeShowSettings")
601
615
  // Dispatch beforeShowSettings event to close other extension's settings
602
- globalThis.dispatchEvent(event)
616
+ win.dispatchEvent(event)
603
617
 
604
618
  // Listen to beforeShowSettings event to close opened modal before showing settings from other extension
605
- addEventListener(globalThis, "beforeShowSettings", onBeforeShowSettings, true)
619
+ addEventListener(win, "beforeShowSettings", onBeforeShowSettings, true)
606
620
 
607
621
  createSettingsElement()
608
622
  await updateOptions()
609
623
 
610
- addEventListener(document, "click", onDocumentClick, true)
611
- addEventListener(document, "keydown", onDocumentKeyDown, true)
624
+ addEventListener(doc, "click", onDocumentClick, true)
625
+ addEventListener(doc, "keydown", onDocumentKeyDown, true)
612
626
  // activeExtension(settingsOptions.id)
613
627
  // deactiveExtensionList()
614
628
  }
@@ -690,5 +704,17 @@ export const initSettings = async (optionsProvider: () => SettingsOptions) => {
690
704
  accessKey: "o",
691
705
  })
692
706
 
707
+ addEventListener(win, "message", (event: MessageEvent) => {
708
+ if (!event.data || event.data.id !== settingsOptions?.id) {
709
+ return
710
+ }
711
+
712
+ if (event.data.type === "bes-show-settings") {
713
+ void showSettings()
714
+ } else if (event.data.type === "bes-hide-settings") {
715
+ hideSettings()
716
+ }
717
+ })
718
+
693
719
  handleShowSettingsUrl()
694
720
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "browser-extension-settings",
3
- "version": "0.8.1",
3
+ "version": "0.8.2",
4
4
  "description": "Settings module for developing browser extensions and userscripts",
5
5
  "type": "module",
6
6
  "main": "./lib/index.ts",