@quietui/squeak 1.0.0 → 1.1.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.1.0
4
+
5
+ - Added support for SSR environments
6
+
3
7
  ## 1.0.0
4
8
 
5
9
  - Initial fork
package/dist/index.js CHANGED
@@ -1,13 +1,18 @@
1
1
  const connectedElements = new Set();
2
- const documentElementObserver = new MutationObserver(update);
3
2
  const translations = new Map();
4
- let documentDirection = document.documentElement.dir || 'ltr';
5
- let documentLanguage = document.documentElement.lang || navigator.language;
3
+ const isSSR = typeof (document === null || document === void 0 ? void 0 : document.documentElement) === 'undefined';
4
+ let documentDirection = 'ltr';
5
+ let documentLanguage = 'en';
6
6
  let defaultTranslation;
7
- documentElementObserver.observe(document.documentElement, {
8
- attributes: true,
9
- attributeFilter: ['dir', 'lang']
10
- });
7
+ if (!isSSR) {
8
+ const documentElementObserver = new MutationObserver(update);
9
+ documentDirection = document.documentElement.dir || 'ltr';
10
+ documentLanguage = document.documentElement.lang || navigator.language;
11
+ documentElementObserver.observe(document.documentElement, {
12
+ attributes: true,
13
+ attributeFilter: ['dir', 'lang']
14
+ });
15
+ }
11
16
  export function registerDefaultTranslation(translation) {
12
17
  defaultTranslation = translation;
13
18
  update();
@@ -25,6 +30,8 @@ export function registerTranslation(...translation) {
25
30
  update();
26
31
  }
27
32
  export function update() {
33
+ if (isSSR)
34
+ return;
28
35
  documentDirection = document.documentElement.dir || 'ltr';
29
36
  documentLanguage = document.documentElement.lang || navigator.language;
30
37
  [...connectedElements.keys()].map((el) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quietui/squeak",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "A tiny, zero-dependency library that provides a Reactive Controller for localizing terms, dates, and numbers, and currency across one or more custom elements in a component library.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
package/src/index.ts CHANGED
@@ -14,17 +14,24 @@ export interface ExistsOptions {
14
14
  }
15
15
 
16
16
  const connectedElements = new Set<HTMLElement>();
17
- const documentElementObserver = new MutationObserver(update);
18
17
  const translations: Map<string, Translation> = new Map();
19
- let documentDirection = document.documentElement.dir || 'ltr';
20
- let documentLanguage = document.documentElement.lang || navigator.language;
18
+ const isSSR = typeof document?.documentElement === 'undefined';
19
+ let documentDirection = 'ltr'; // SSR default
20
+ let documentLanguage = 'en'; // SSR default
21
21
  let defaultTranslation: Translation;
22
22
 
23
- // Watch for changes on <html lang>
24
- documentElementObserver.observe(document.documentElement, {
25
- attributes: true,
26
- attributeFilter: ['dir', 'lang']
27
- });
23
+ // Don't run this block in an SSR environment
24
+ if (!isSSR) {
25
+ const documentElementObserver = new MutationObserver(update);
26
+ documentDirection = document.documentElement.dir || 'ltr';
27
+ documentLanguage = document.documentElement.lang || navigator.language;
28
+
29
+ // Watch for changes on <html lang>
30
+ documentElementObserver.observe(document.documentElement, {
31
+ attributes: true,
32
+ attributeFilter: ['dir', 'lang']
33
+ });
34
+ }
28
35
 
29
36
  /** Registers the default (fallback) translation. */
30
37
  export function registerDefaultTranslation(translation: Translation) {
@@ -50,6 +57,8 @@ export function registerTranslation(...translation: Translation[]) {
50
57
 
51
58
  /** Updates all localized elements that are currently connected */
52
59
  export function update() {
60
+ if (isSSR) return;
61
+
53
62
  documentDirection = document.documentElement.dir || 'ltr';
54
63
  documentLanguage = document.documentElement.lang || navigator.language;
55
64