@trebired/frontend 12.18.0 → 13.0.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.
Files changed (82) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/language/routing/boot.d.ts.map +1 -1
  3. package/dist/language/routing/boot.js +22 -16
  4. package/dist/language/routing/boot.js.map +1 -1
  5. package/dist/language/routing/document.d.ts +10 -0
  6. package/dist/language/routing/document.d.ts.map +1 -0
  7. package/dist/language/routing/document.js +63 -0
  8. package/dist/language/routing/document.js.map +1 -0
  9. package/dist/language/routing/index.d.ts +6 -4
  10. package/dist/language/routing/index.d.ts.map +1 -1
  11. package/dist/language/routing/index.js +4 -3
  12. package/dist/language/routing/index.js.map +1 -1
  13. package/dist/language/routing/options.d.ts +4 -1
  14. package/dist/language/routing/options.d.ts.map +1 -1
  15. package/dist/language/routing/options.js +3 -1
  16. package/dist/language/routing/options.js.map +1 -1
  17. package/dist/language/routing/runtime.d.ts +1 -2
  18. package/dist/language/routing/runtime.d.ts.map +1 -1
  19. package/dist/language/routing/runtime.js +20 -14
  20. package/dist/language/routing/runtime.js.map +1 -1
  21. package/dist/language/routing/view.d.ts +16 -0
  22. package/dist/language/routing/view.d.ts.map +1 -0
  23. package/dist/language/routing/view.js +66 -0
  24. package/dist/language/routing/view.js.map +1 -0
  25. package/dist/react/locale.d.ts.map +1 -1
  26. package/dist/react/locale.js +13 -9
  27. package/dist/react/locale.js.map +1 -1
  28. package/dist/server/language.d.ts.map +1 -1
  29. package/dist/server/language.js +2 -1
  30. package/dist/server/language.js.map +1 -1
  31. package/dist/spa/fetch-document.d.ts +6 -0
  32. package/dist/spa/fetch-document.d.ts.map +1 -0
  33. package/dist/spa/fetch-document.js +23 -0
  34. package/dist/spa/fetch-document.js.map +1 -0
  35. package/dist/spa/navigate.d.ts.map +1 -1
  36. package/dist/spa/navigate.js +2 -21
  37. package/dist/spa/navigate.js.map +1 -1
  38. package/dist/src/language/routing/boot.d.ts.map +1 -1
  39. package/dist/src/language/routing/boot.js +22 -16
  40. package/dist/src/language/routing/boot.js.map +1 -1
  41. package/dist/src/language/routing/document.d.ts +10 -0
  42. package/dist/src/language/routing/document.d.ts.map +1 -0
  43. package/dist/src/language/routing/document.js +63 -0
  44. package/dist/src/language/routing/document.js.map +1 -0
  45. package/dist/src/language/routing/index.d.ts +6 -4
  46. package/dist/src/language/routing/index.d.ts.map +1 -1
  47. package/dist/src/language/routing/index.js +4 -3
  48. package/dist/src/language/routing/index.js.map +1 -1
  49. package/dist/src/language/routing/options.d.ts +4 -1
  50. package/dist/src/language/routing/options.d.ts.map +1 -1
  51. package/dist/src/language/routing/options.js +3 -1
  52. package/dist/src/language/routing/options.js.map +1 -1
  53. package/dist/src/language/routing/runtime.d.ts +1 -2
  54. package/dist/src/language/routing/runtime.d.ts.map +1 -1
  55. package/dist/src/language/routing/runtime.js +20 -14
  56. package/dist/src/language/routing/runtime.js.map +1 -1
  57. package/dist/src/language/routing/view.d.ts +16 -0
  58. package/dist/src/language/routing/view.d.ts.map +1 -0
  59. package/dist/src/language/routing/view.js +66 -0
  60. package/dist/src/language/routing/view.js.map +1 -0
  61. package/dist/src/react/locale.d.ts.map +1 -1
  62. package/dist/src/react/locale.js +13 -9
  63. package/dist/src/react/locale.js.map +1 -1
  64. package/dist/src/server/language.d.ts.map +1 -1
  65. package/dist/src/server/language.js +2 -1
  66. package/dist/src/server/language.js.map +1 -1
  67. package/dist/src/spa/fetch-document.d.ts +6 -0
  68. package/dist/src/spa/fetch-document.d.ts.map +1 -0
  69. package/dist/src/spa/fetch-document.js +23 -0
  70. package/dist/src/spa/fetch-document.js.map +1 -0
  71. package/dist/src/spa/navigate.d.ts.map +1 -1
  72. package/dist/src/spa/navigate.js +2 -21
  73. package/dist/src/spa/navigate.js.map +1 -1
  74. package/package.json +1 -1
  75. package/dist/language/routing/path.d.ts +0 -20
  76. package/dist/language/routing/path.d.ts.map +0 -1
  77. package/dist/language/routing/path.js +0 -43
  78. package/dist/language/routing/path.js.map +0 -1
  79. package/dist/src/language/routing/path.d.ts +0 -20
  80. package/dist/src/language/routing/path.d.ts.map +0 -1
  81. package/dist/src/language/routing/path.js +0 -43
  82. package/dist/src/language/routing/path.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,15 @@ All notable changes to `@trebired/frontend` will be documented here.
4
4
 
5
5
  This project follows semantic versioning once published.
6
6
 
7
+ ## 13.0.0
8
+
9
+ - Statically prerendered sites now serve every language from one URL and switch language in place. 12.15.0 gave each locale its own prefixed URL and changed language by navigating to it, so every switch reloaded the page and a saved preference redirected before paint.
10
+ - `createLocaleDocumentBody()` composes a route's prerendered bodies: the default locale as live markup, every other locale in an inert `<template>`, a title and description per locale, and a short inline script. `createLocaleBootScript()` resolves the locale before first paint (stored choice, then the `ui_lang` cookie the server runtime also reads, then the browser language) and sets `<html lang>`. When that differs from the prerendered locale, the inline script swaps the matching template in while the document is still parsing, so a reload shows the right language without waiting for the application bundle. Templates are inert, so their images and frames do not load and crawlers index the default locale.
11
+ - `setCurrentLocale()` no longer navigates. It persists the choice, updates `<html lang>`, the title and the description, and notifies `onLocaleChanged()` listeners. `LocaleProvider` and `useLocale()` follow it, so every React root re-renders in place. Pass `locale` to `LocaleProvider` only when rendering on the server.
12
+ - Soft navigation applies the same swap to the document it fetches, so moving between routes stays in the chosen language.
13
+ - Removed `parseLocalePathname()`, `buildLocalePathname()`, `localeShellRoutes()`, `localeShellOutFile()`, `normalizePathname()` and `localeHref()`. Prerender each route once per locale and pass the bodies to `createLocaleDocumentBody()`; set `@trebired/seo`'s `localeStrategy` to `"none"`.
14
+ - The server-backed `bindLocaleSwitchers()` model is unchanged.
15
+
7
16
  ## 12.18.0
8
17
 
9
18
  - Added the `components.media` token group, so an application can shape `ExpandableImage` and the lightbox from its frontend config instead of overriding package CSS. `expandableImage.icon` sets the hover badge's size, radius, background and blur. `lightbox` sets the backdrop colour and blur, the close and navigation controls (size, wide-screen size, radius, background, blur, hover background), the image radius and shadow, and the caption colour, size and weight. The defaults are the values the styles used before, so an application that sets nothing renders exactly as it did.
@@ -1 +1 @@
1
- {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/boot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AA6BzD,iBAAS,sBAAsB,CAAC,OAAO,GAAE,oBAAyB,GAAG,MAAM,CAe1E;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/boot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAoCzD,iBAAS,sBAAsB,CAAC,OAAO,GAAE,oBAAyB,GAAG,MAAM,CAe1E;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
@@ -1,25 +1,31 @@
1
1
  import { normalizeLocaleRouting } from "./options.js";
2
+ import { LOCALE_PENDING_ATTR, LOCALE_RENDERED_ATTR } from "./view.js";
2
3
  function scriptJson(value) {
3
4
  return JSON.stringify(value ?? null).replace(/</gu, "\\u003c");
4
5
  }
5
- function readStoredLocaleSource() {
6
+ function matchSource() {
6
7
  return [
7
- "var r='';try{r=window.localStorage.getItem(K)||''}catch(e){}",
8
- "if(L.indexOf(r)<0)r='';",
8
+ "function m(v){var t=String(v||'').trim().toLowerCase().replace(/_/g,'-');",
9
+ "if(L.indexOf(t)>=0)return t;var b=t.split('-')[0];return L.indexOf(b)>=0?b:''}",
9
10
  ];
10
11
  }
11
- function explicitPrefixSource() {
12
+ function storedLocaleSource() {
12
13
  return [
13
- "var s=p.split('/');var u=L.indexOf(s[1])>=0?s[1]:'';",
14
- "if(u){try{window.localStorage.setItem(K,u)}catch(e){}d.lang=u;return}",
14
+ "var n='';try{n=m(window.localStorage.getItem(K))}catch(e){}",
15
+ "if(!n){try{var c=('; '+d.cookie).split('; '+C+'=');",
16
+ "if(c.length>1)n=m(decodeURIComponent(c[1].split(';')[0]))}catch(e){}}",
15
17
  ];
16
18
  }
17
19
  function navigatorLocaleSource() {
18
20
  return [
19
21
  "if(!n){try{var g=navigator.languages||[navigator.language||''];",
20
- "for(var i=0;i<g.length;i++){var t=String(g[i]||'').trim().toLowerCase().replace(/_/g,'-');",
21
- "var b=t.split('-')[0];",
22
- "if(L.indexOf(t)>=0){n=t;break}if(L.indexOf(b)>=0){n=b;break}}}catch(e){}}",
22
+ "for(var i=0;i<g.length&&!n;i++)n=m(g[i])}catch(e){}}",
23
+ ];
24
+ }
25
+ function pendingSource() {
26
+ return [
27
+ "if(n!==r){h.setAttribute(P,'');h.style.visibility='hidden';",
28
+ "d.addEventListener('DOMContentLoaded',function(){h.removeAttribute(P);h.style.visibility=''})}",
23
29
  ];
24
30
  }
25
31
  function createLocaleBootScript(options = {}) {
@@ -27,14 +33,14 @@ function createLocaleBootScript(options = {}) {
27
33
  return [
28
34
  "(function(){",
29
35
  `var L=${scriptJson(routing.locales)},D=${scriptJson(routing.defaultLocale)},`,
30
- `K=${scriptJson(routing.storageKey)};`,
31
- "var d=document.documentElement;var p=location.pathname||'/';",
32
- ...explicitPrefixSource(),
33
- ...readStoredLocaleSource(),
34
- "var n=r;",
36
+ `K=${scriptJson(routing.storageKey)},C=${scriptJson(routing.cookieName)},`,
37
+ `R=${scriptJson(LOCALE_RENDERED_ATTR)},P=${scriptJson(LOCALE_PENDING_ATTR)};`,
38
+ "var d=document,h=d.documentElement,r=h.lang||D;h.setAttribute(R,r);",
39
+ ...matchSource(),
40
+ ...storedLocaleSource(),
35
41
  ...navigatorLocaleSource(),
36
- "if(n&&n!==D){location.replace('/'+n+(p==='/'?'':p)+location.search+location.hash);return}",
37
- "d.lang=D;",
42
+ "n=n||D;h.lang=n;",
43
+ ...pendingSource(),
38
44
  "})();",
39
45
  ].join("");
40
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"boot.js","sourceRoot":"","sources":["../../../../src/language/routing/boot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAGtD,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,sBAAsB;IAC7B,OAAO;QACL,8DAA8D;QAC9D,yBAAyB;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB;IAC3B,OAAO;QACL,sDAAsD;QACtD,uEAAuE;KACxE,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO;QACL,iEAAiE;QACjE,4FAA4F;QAC5F,wBAAwB;QACxB,2EAA2E;KAC5E,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAgC,EAAE;IAChE,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO;QACL,cAAc;QACd,SAAS,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG;QAC9E,KAAK,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG;QACtC,8DAA8D;QAC9D,GAAG,oBAAoB,EAAE;QACzB,GAAG,sBAAsB,EAAE;QAC3B,UAAU;QACV,GAAG,qBAAqB,EAAE;QAC1B,2FAA2F;QAC3F,WAAW;QACX,OAAO;KACR,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"boot.js","sourceRoot":"","sources":["../../../../src/language/routing/boot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEtE,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,WAAW;IAClB,OAAO;QACL,2EAA2E;QAC3E,gFAAgF;KACjF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB;IACzB,OAAO;QACL,6DAA6D;QAC7D,qDAAqD;QACrD,uEAAuE;KACxE,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO;QACL,iEAAiE;QACjE,sDAAsD;KACvD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa;IACpB,OAAO;QACL,6DAA6D;QAC7D,gGAAgG;KACjG,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAgC,EAAE;IAChE,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO;QACL,cAAc;QACd,SAAS,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG;QAC9E,KAAK,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG;QAC1E,KAAK,UAAU,CAAC,oBAAoB,CAAC,MAAM,UAAU,CAAC,mBAAmB,CAAC,GAAG;QAC7E,qEAAqE;QACrE,GAAG,WAAW,EAAE;QAChB,GAAG,kBAAkB,EAAE;QACvB,GAAG,qBAAqB,EAAE;QAC1B,kBAAkB;QAClB,GAAG,aAAa,EAAE;QAClB,OAAO;KACR,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { LocaleMeta } from "./view.js";
2
+ type LocaleDocumentBodyOptions = {
3
+ bodies: Record<string, string>;
4
+ defaultLocale: string;
5
+ meta?: Record<string, LocaleMeta>;
6
+ };
7
+ declare function createLocaleDocumentBody(options: LocaleDocumentBodyOptions): string;
8
+ export { createLocaleDocumentBody };
9
+ export type { LocaleDocumentBodyOptions };
10
+ //# sourceMappingURL=document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/document.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,KAAK,yBAAyB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACnC,CAAC;AA+CF,iBAAS,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,MAAM,CAkB5E;AAED,OAAO,EAAE,wBAAwB,EAAE,CAAC;AACpC,YAAY,EAAE,yBAAyB,EAAE,CAAC"}
@@ -0,0 +1,63 @@
1
+ import { cleanLocale } from "./options.js";
2
+ import { LOCALE_END_MARK, LOCALE_META_ATTR, LOCALE_PENDING_ATTR, LOCALE_RENDERED_ATTR, LOCALE_START_MARK, LOCALE_VIEW_ATTR, } from "./view.js";
3
+ function scriptJson(value) {
4
+ return JSON.stringify(value ?? null).replace(/</gu, "\\u003c");
5
+ }
6
+ function attributeValue(value) {
7
+ return value.replace(/&/gu, "&amp;").replace(/"/gu, "&quot;").replace(/</gu, "&lt;");
8
+ }
9
+ function swapNodesSource() {
10
+ return [
11
+ "var t=null,q=d.querySelectorAll('template['+V+']');",
12
+ "for(var i=0;i<q.length;i++)if(q[i].getAttribute(V)===l)t=q[i];",
13
+ "var s=null,e=null,c=b.childNodes;",
14
+ "for(var k=0;k<c.length;k++){if(c[k].nodeType!==8)continue;",
15
+ "if(c[k].nodeValue===S)s=c[k];if(c[k].nodeValue===E)e=c[k]}",
16
+ "if(t&&s&&e){while(s.nextSibling&&s.nextSibling!==e)b.removeChild(s.nextSibling);",
17
+ "b.insertBefore(d.importNode(t.content,true),e);h.setAttribute(R,l);",
18
+ ];
19
+ }
20
+ function swapMetaSource() {
21
+ return [
22
+ "var m=d.querySelector('script['+M+']'),x=m?JSON.parse(m.textContent||'{}')[l]:null;",
23
+ "if(x&&x.title)d.title=x.title;",
24
+ "var n=d.querySelector('meta[name=\"description\"]');",
25
+ "if(x&&x.description&&n)n.setAttribute('content',x.description)",
26
+ ];
27
+ }
28
+ function localeSwapScript() {
29
+ return [
30
+ "(function(){",
31
+ `var V=${scriptJson(LOCALE_VIEW_ATTR)},M=${scriptJson(LOCALE_META_ATTR)},`,
32
+ `R=${scriptJson(LOCALE_RENDERED_ATTR)},P=${scriptJson(LOCALE_PENDING_ATTR)},`,
33
+ `S=${scriptJson(LOCALE_START_MARK)},E=${scriptJson(LOCALE_END_MARK)};`,
34
+ "var d=document,h=d.documentElement,b=d.body,l=h.lang;",
35
+ "try{if(h.getAttribute(R)!==l){",
36
+ ...swapNodesSource(),
37
+ ...swapMetaSource(),
38
+ "}else h.lang=h.getAttribute(R)||l}}catch(err){h.lang=h.getAttribute(R)||l}",
39
+ "h.removeAttribute(P);h.style.visibility='';",
40
+ "})();",
41
+ ].join("");
42
+ }
43
+ function createLocaleDocumentBody(options) {
44
+ const defaultLocale = cleanLocale(options.defaultLocale);
45
+ const entries = Object.entries(options.bodies).map(([locale, body]) => [cleanLocale(locale), String(body ?? "")]);
46
+ const primary = entries.find(([locale]) => locale === defaultLocale)?.[1] ?? "";
47
+ const templates = entries
48
+ .filter(([locale]) => locale !== defaultLocale)
49
+ .map(([locale, body]) => `<template ${LOCALE_VIEW_ATTR}="${attributeValue(locale)}">${body}</template>`);
50
+ const meta = options.meta
51
+ ? `<script type="application/json" ${LOCALE_META_ATTR}>${scriptJson(options.meta)}</script>`
52
+ : "";
53
+ return [
54
+ `<!--${LOCALE_START_MARK}-->`,
55
+ primary,
56
+ `<!--${LOCALE_END_MARK}-->`,
57
+ ...templates,
58
+ meta,
59
+ `<script>${localeSwapScript()}</script>`,
60
+ ].join("");
61
+ }
62
+ export { createLocaleDocumentBody };
63
+ //# sourceMappingURL=document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../../../src/language/routing/document.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  export { createLocaleBootScript } from "./boot.js";
2
- export { DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, matchLocale, normalizeLocaleRouting, pickLocale, } from "./options.js";
2
+ export { createLocaleDocumentBody } from "./document.js";
3
+ export type { LocaleDocumentBodyOptions } from "./document.js";
4
+ export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, matchLocale, normalizeLocaleRouting, pickLocale, } from "./options.js";
3
5
  export type { LocaleRouting, LocaleRoutingOptions } from "./options.js";
4
- export { buildLocalePathname, localeShellOutFile, localeShellRoutes, normalizePathname, parseLocalePathname, } from "./path.js";
5
- export type { LocaleShellRoute, ParsedLocalePathname } from "./path.js";
6
- export { configureLocaleRouting, currentLocale, getLocaleRouting, localeHref, onLocaleChanged, persistLocale, setCurrentLocale, } from "./runtime.js";
6
+ export { configureLocaleRouting, currentLocale, getLocaleRouting, onLocaleChanged, persistLocale, setCurrentLocale, } from "./runtime.js";
7
7
  export type { LocaleListener } from "./runtime.js";
8
+ export { applyLocaleMeta, applyLocaleView, readLocaleMeta } from "./view.js";
9
+ export type { LocaleMeta } from "./view.js";
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EACL,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,YAAY,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC7E,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export { createLocaleBootScript } from "./boot.js";
2
- export { DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, matchLocale, normalizeLocaleRouting, pickLocale, } from "./options.js";
3
- export { buildLocalePathname, localeShellOutFile, localeShellRoutes, normalizePathname, parseLocalePathname, } from "./path.js";
4
- export { configureLocaleRouting, currentLocale, getLocaleRouting, localeHref, onLocaleChanged, persistLocale, setCurrentLocale, } from "./runtime.js";
2
+ export { createLocaleDocumentBody } from "./document.js";
3
+ export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, matchLocale, normalizeLocaleRouting, pickLocale, } from "./options.js";
4
+ export { configureLocaleRouting, currentLocale, getLocaleRouting, onLocaleChanged, persistLocale, setCurrentLocale, } from "./runtime.js";
5
+ export { applyLocaleMeta, applyLocaleView, readLocaleMeta } from "./view.js";
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/language/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EACL,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,UAAU,GACX,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/language/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,UAAU,GACX,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
@@ -1,18 +1,21 @@
1
1
  type LocaleRoutingOptions = {
2
+ cookieName?: string;
2
3
  defaultLocale?: string;
3
4
  locales?: readonly string[];
4
5
  storageKey?: string;
5
6
  };
6
7
  type LocaleRouting = {
8
+ cookieName: string;
7
9
  defaultLocale: string;
8
10
  locales: string[];
9
11
  storageKey: string;
10
12
  };
11
13
  declare const DEFAULT_LOCALE_STORAGE_KEY = "tbf.locale";
14
+ declare const DEFAULT_LOCALE_COOKIE_NAME = "ui_lang";
12
15
  declare function cleanLocale(value: unknown): string;
13
16
  declare function normalizeLocaleRouting(options?: LocaleRoutingOptions): LocaleRouting;
14
17
  declare function matchLocale(value: unknown, routing: LocaleRouting): string;
15
18
  declare function pickLocale(values: Iterable<unknown>, routing: LocaleRouting): string;
16
- export { DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, matchLocale, normalizeLocaleRouting, pickLocale };
19
+ export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, matchLocale, normalizeLocaleRouting, pickLocale, };
17
20
  export type { LocaleRouting, LocaleRoutingOptions };
18
21
  //# sourceMappingURL=options.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/options.ts"],"names":[],"mappings":"AAEA,KAAK,oBAAoB,GAAG;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,0BAA0B,eAA8B,CAAC;AAE/D,iBAAS,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE3C;AAED,iBAAS,sBAAsB,CAAC,OAAO,GAAE,oBAAyB,GAAG,aAAa,CASjF;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAMnE;AAED,iBAAS,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAM7E;AAED,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,WAAW,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAC;AACpG,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/options.ts"],"names":[],"mappings":"AAEA,KAAK,oBAAoB,GAAG;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,0BAA0B,eAA8B,CAAC;AAC/D,QAAA,MAAM,0BAA0B,YAAY,CAAC;AAE7C,iBAAS,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE3C;AAED,iBAAS,sBAAsB,CAAC,OAAO,GAAE,oBAAyB,GAAG,aAAa,CAUjF;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAMnE;AAED,iBAAS,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAM7E;AAED,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,UAAU,GACX,CAAC;AACF,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { FRONTEND_PREFIX } from "../../namespace/index.js";
2
2
  const DEFAULT_LOCALE_STORAGE_KEY = `${FRONTEND_PREFIX}.locale`;
3
+ const DEFAULT_LOCALE_COOKIE_NAME = "ui_lang";
3
4
  function cleanLocale(value) {
4
5
  return String(value ?? "").trim().toLowerCase().replace(/_/gu, "-");
5
6
  }
@@ -8,6 +9,7 @@ function normalizeLocaleRouting(options = {}) {
8
9
  const fallback = cleanLocale(options.defaultLocale) || declared[0] || "en";
9
10
  const locales = declared.includes(fallback) ? declared : [fallback, ...declared];
10
11
  return {
12
+ cookieName: String(options.cookieName || DEFAULT_LOCALE_COOKIE_NAME),
11
13
  defaultLocale: fallback,
12
14
  locales: locales.length ? locales : [fallback],
13
15
  storageKey: String(options.storageKey || DEFAULT_LOCALE_STORAGE_KEY),
@@ -30,5 +32,5 @@ function pickLocale(values, routing) {
30
32
  }
31
33
  return "";
32
34
  }
33
- export { DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, matchLocale, normalizeLocaleRouting, pickLocale };
35
+ export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, matchLocale, normalizeLocaleRouting, pickLocale, };
34
36
  //# sourceMappingURL=options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/language/routing/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAchD,MAAM,0BAA0B,GAAG,GAAG,eAAe,SAAS,CAAC;AAE/D,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAgC,EAAE;IAChE,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC3E,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC;IACjF,OAAO;QACL,aAAa,EAAE,QAAQ;QACvB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC9C,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,0BAA0B,CAAC;KACrE,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,OAAsB;IACzD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACtD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,UAAU,CAAC,MAAyB,EAAE,OAAsB;IACnE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;IAC9B,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,WAAW,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/language/routing/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAgBhD,MAAM,0BAA0B,GAAG,GAAG,eAAe,SAAS,CAAC;AAC/D,MAAM,0BAA0B,GAAG,SAAS,CAAC;AAE7C,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAgC,EAAE;IAChE,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC3E,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC;IACjF,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,0BAA0B,CAAC;QACpE,aAAa,EAAE,QAAQ;QACvB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC9C,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,0BAA0B,CAAC;KACrE,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,OAAsB;IACzD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACtD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,UAAU,CAAC,MAAyB,EAAE,OAAsB;IACnE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;IAC9B,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,UAAU,GACX,CAAC"}
@@ -4,9 +4,8 @@ declare function configureLocaleRouting(options: LocaleRoutingOptions): LocaleRo
4
4
  declare function getLocaleRouting(): LocaleRouting;
5
5
  declare function currentLocale(): string;
6
6
  declare function persistLocale(locale: string): void;
7
- declare function localeHref(locale: string): string;
8
7
  declare function setCurrentLocale(locale: unknown): boolean;
9
8
  declare function onLocaleChanged(listener: LocaleListener): () => void;
10
- export { configureLocaleRouting, currentLocale, getLocaleRouting, localeHref, onLocaleChanged, persistLocale, setCurrentLocale, };
9
+ export { configureLocaleRouting, currentLocale, getLocaleRouting, onLocaleChanged, persistLocale, setCurrentLocale, };
11
10
  export type { LocaleListener };
12
11
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGxE,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AAM/C,iBAAS,sBAAsB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAG5E;AAED,iBAAS,gBAAgB,IAAI,aAAa,CAEzC;AAED,iBAAS,aAAa,IAAI,MAAM,CAG/B;AAED,iBAAS,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAO3C;AAED,iBAAS,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAI1C;AAED,iBAAS,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAQlD;AAED,iBAAS,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,IAAI,CAK7D;AAED,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,CAAC;AACF,YAAY,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGxE,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AAQ/C,iBAAS,sBAAsB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAI5E;AAED,iBAAS,gBAAgB,IAAI,aAAa,CAEzC;AAMD,iBAAS,aAAa,IAAI,MAAM,CAG/B;AAED,iBAAS,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAS3C;AAED,iBAAS,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAWlD;AAED,iBAAS,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,IAAI,CAK7D;AAED,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,CAAC;AACF,YAAY,EAAE,cAAc,EAAE,CAAC"}
@@ -1,22 +1,30 @@
1
- import { matchLocale, normalizeLocaleRouting } from "./options.js";
2
- import { buildLocalePathname, parseLocalePathname } from "./path.js";
1
+ import { cleanLocale, matchLocale, normalizeLocaleRouting } from "./options.js";
2
+ import { LOCALE_RENDERED_ATTR, applyLocaleMeta } from "./view.js";
3
3
  const listeners = new Set();
4
+ const COOKIE_MAX_AGE = 60 * 60 * 24 * 365;
4
5
  let routing = normalizeLocaleRouting();
6
+ let configured = false;
5
7
  function configureLocaleRouting(options) {
6
8
  routing = normalizeLocaleRouting(options);
9
+ configured = true;
7
10
  return routing;
8
11
  }
9
12
  function getLocaleRouting() {
10
13
  return routing;
11
14
  }
15
+ function resolveLocale(value) {
16
+ return configured ? matchLocale(value, routing) : cleanLocale(value);
17
+ }
12
18
  function currentLocale() {
13
- if (typeof window === "undefined")
19
+ if (typeof document === "undefined")
14
20
  return routing.defaultLocale;
15
- return parseLocalePathname(window.location.pathname, routing).locale;
21
+ return resolveLocale(document.documentElement.lang) || routing.defaultLocale;
16
22
  }
17
23
  function persistLocale(locale) {
18
- if (typeof window === "undefined")
24
+ if (typeof document === "undefined")
19
25
  return;
26
+ const name = encodeURIComponent(routing.cookieName);
27
+ document.cookie = `${name}=${encodeURIComponent(locale)}; Path=/; Max-Age=${COOKIE_MAX_AGE}; SameSite=Lax`;
20
28
  try {
21
29
  window.localStorage.setItem(routing.storageKey, locale);
22
30
  }
@@ -24,21 +32,19 @@ function persistLocale(locale) {
24
32
  return;
25
33
  }
26
34
  }
27
- function localeHref(locale) {
28
- const parsed = parseLocalePathname(window.location.pathname, routing);
29
- const pathname = buildLocalePathname(parsed.pathname, locale, routing);
30
- return `${pathname}${window.location.search}${window.location.hash}`;
31
- }
32
35
  function setCurrentLocale(locale) {
33
- const next = matchLocale(locale, routing);
34
- if (!next || typeof window === "undefined")
36
+ const next = resolveLocale(locale);
37
+ if (!next || typeof document === "undefined")
35
38
  return false;
36
39
  persistLocale(next);
37
40
  if (next === currentLocale())
38
41
  return false;
42
+ const root = document.documentElement;
43
+ root.lang = next;
44
+ root.setAttribute(LOCALE_RENDERED_ATTR, next);
45
+ applyLocaleMeta(document, next);
39
46
  for (const listener of listeners)
40
47
  listener(next);
41
- window.location.assign(localeHref(next));
42
48
  return true;
43
49
  }
44
50
  function onLocaleChanged(listener) {
@@ -47,5 +53,5 @@ function onLocaleChanged(listener) {
47
53
  listeners.delete(listener);
48
54
  };
49
55
  }
50
- export { configureLocaleRouting, currentLocale, getLocaleRouting, localeHref, onLocaleChanged, persistLocale, setCurrentLocale, };
56
+ export { configureLocaleRouting, currentLocale, getLocaleRouting, onLocaleChanged, persistLocale, setCurrentLocale, };
51
57
  //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/language/routing/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAIrE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE5C,IAAI,OAAO,GAAkB,sBAAsB,EAAE,CAAC;AAEtD,SAAS,sBAAsB,CAAC,OAA6B;IAC3D,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,OAAO,CAAC,aAAa,CAAC;IAChE,OAAO,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC;AACvE,CAAC;AAED,SAAS,aAAa,CAAC,MAAc;IACnC,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAC1C,IAAI,CAAC;QACH,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,MAAc;IAChC,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACvE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACvE,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAe;IACvC,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IACzD,aAAa,CAAC,IAAI,CAAC,CAAC;IACpB,IAAI,IAAI,KAAK,aAAa,EAAE;QAAE,OAAO,KAAK,CAAC;IAC3C,KAAK,MAAM,QAAQ,IAAI,SAAS;QAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,QAAwB;IAC/C,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxB,OAAO,GAAG,EAAE;QACV,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,CAAC"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/language/routing/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEhF,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAIlE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC5C,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;AAE1C,IAAI,OAAO,GAAkB,sBAAsB,EAAE,CAAC;AACtD,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB,SAAS,sBAAsB,CAAC,OAA6B;IAC3D,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAC1C,UAAU,GAAG,IAAI,CAAC;IAClB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,OAAO,CAAC,aAAa,CAAC;IAClE,OAAO,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC;AAC/E,CAAC;AAED,SAAS,aAAa,CAAC,MAAc;IACnC,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO;IAC5C,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACpD,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,IAAI,kBAAkB,CAAC,MAAM,CAAC,qBAAqB,cAAc,gBAAgB,CAAC;IAC3G,IAAI,CAAC;QACH,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAe;IACvC,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAC3D,aAAa,CAAC,IAAI,CAAC,CAAC;IACpB,IAAI,IAAI,KAAK,aAAa,EAAE;QAAE,OAAO,KAAK,CAAC;IAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC;IACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IAC9C,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAChC,KAAK,MAAM,QAAQ,IAAI,SAAS;QAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,QAAwB;IAC/C,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxB,OAAO,GAAG,EAAE;QACV,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,CAAC"}
@@ -0,0 +1,16 @@
1
+ type LocaleMeta = {
2
+ description?: string;
3
+ title?: string;
4
+ };
5
+ declare const LOCALE_VIEW_ATTR: `data-${string}`;
6
+ declare const LOCALE_META_ATTR: `data-${string}`;
7
+ declare const LOCALE_RENDERED_ATTR: `data-${string}`;
8
+ declare const LOCALE_PENDING_ATTR: `data-${string}`;
9
+ declare const LOCALE_START_MARK = "tbf:locale-start";
10
+ declare const LOCALE_END_MARK = "tbf:locale-end";
11
+ declare function readLocaleMeta(doc: Document): Record<string, LocaleMeta>;
12
+ declare function applyLocaleMeta(doc: Document, locale: string): void;
13
+ declare function applyLocaleView(doc: Document, locale: string): boolean;
14
+ export { LOCALE_END_MARK, LOCALE_META_ATTR, LOCALE_PENDING_ATTR, LOCALE_RENDERED_ATTR, LOCALE_START_MARK, LOCALE_VIEW_ATTR, applyLocaleMeta, applyLocaleView, readLocaleMeta, };
15
+ export type { LocaleMeta };
16
+ //# sourceMappingURL=view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/view.ts"],"names":[],"mappings":"AAEA,KAAK,UAAU,GAAG;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAOF,QAAA,MAAM,gBAAgB,kBAAkC,CAAC;AACzD,QAAA,MAAM,gBAAgB,kBAAkC,CAAC;AACzD,QAAA,MAAM,oBAAoB,kBAAsC,CAAC;AACjE,QAAA,MAAM,mBAAmB,kBAAqC,CAAC;AAC/D,QAAA,MAAM,iBAAiB,qBAAoC,CAAC;AAC5D,QAAA,MAAM,eAAe,mBAAkC,CAAC;AAcxD,iBAAS,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAQjE;AAED,iBAAS,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAK5D;AAYD,iBAAS,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAa/D;AAED,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,cAAc,GACf,CAAC;AACF,YAAY,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,66 @@
1
+ import { FRONTEND_PREFIX, frontendDataAttr } from "../../namespace/index.js";
2
+ const LOCALE_VIEW_ATTR = frontendDataAttr("locale-view");
3
+ const LOCALE_META_ATTR = frontendDataAttr("locale-meta");
4
+ const LOCALE_RENDERED_ATTR = frontendDataAttr("locale-rendered");
5
+ const LOCALE_PENDING_ATTR = frontendDataAttr("locale-pending");
6
+ const LOCALE_START_MARK = `${FRONTEND_PREFIX}:locale-start`;
7
+ const LOCALE_END_MARK = `${FRONTEND_PREFIX}:locale-end`;
8
+ const COMMENT_NODE = 8;
9
+ function findLocaleMarkers(body) {
10
+ let start = null;
11
+ let end = null;
12
+ for (const node of Array.from(body.childNodes)) {
13
+ if (node.nodeType !== COMMENT_NODE)
14
+ continue;
15
+ if (node.nodeValue === LOCALE_START_MARK)
16
+ start = node;
17
+ if (node.nodeValue === LOCALE_END_MARK)
18
+ end = node;
19
+ }
20
+ return start && end ? { end, start } : null;
21
+ }
22
+ function readLocaleMeta(doc) {
23
+ const node = doc.querySelector(`script[${LOCALE_META_ATTR}]`);
24
+ try {
25
+ const parsed = JSON.parse(node?.textContent || "{}");
26
+ return parsed && typeof parsed === "object" ? parsed : {};
27
+ }
28
+ catch {
29
+ return {};
30
+ }
31
+ }
32
+ function applyLocaleMeta(doc, locale) {
33
+ const meta = readLocaleMeta(doc)[locale];
34
+ if (!meta)
35
+ return;
36
+ if (meta.title)
37
+ doc.title = meta.title;
38
+ if (meta.description)
39
+ doc.querySelector('meta[name="description"]')?.setAttribute("content", meta.description);
40
+ }
41
+ function renderedLocale(doc) {
42
+ const root = doc.documentElement;
43
+ return root.getAttribute(LOCALE_RENDERED_ATTR) || root.lang;
44
+ }
45
+ function localeTemplate(doc, locale) {
46
+ const templates = Array.from(doc.querySelectorAll(`template[${LOCALE_VIEW_ATTR}]`));
47
+ return templates.find((template) => template.getAttribute(LOCALE_VIEW_ATTR) === locale) || null;
48
+ }
49
+ function applyLocaleView(doc, locale) {
50
+ if (!locale || !doc.body || renderedLocale(doc) === locale)
51
+ return false;
52
+ const markers = findLocaleMarkers(doc.body);
53
+ const template = localeTemplate(doc, locale);
54
+ if (!markers || !template)
55
+ return false;
56
+ while (markers.start.nextSibling && markers.start.nextSibling !== markers.end) {
57
+ markers.start.nextSibling.remove();
58
+ }
59
+ doc.body.insertBefore(doc.importNode(template.content, true), markers.end);
60
+ doc.documentElement.lang = locale;
61
+ doc.documentElement.setAttribute(LOCALE_RENDERED_ATTR, locale);
62
+ applyLocaleMeta(doc, locale);
63
+ return true;
64
+ }
65
+ export { LOCALE_END_MARK, LOCALE_META_ATTR, LOCALE_PENDING_ATTR, LOCALE_RENDERED_ATTR, LOCALE_START_MARK, LOCALE_VIEW_ATTR, applyLocaleMeta, applyLocaleView, readLocaleMeta, };
66
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../../../src/language/routing/view.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../../src/react/locale.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CACxC,CAAC;AAEF,QAAA,MAAM,aAAa,iCAA4B,CAAC;AAEhD,iBAAS,cAAc,CAAC,KAAK,EAAE,mBAAmB,mFAGjD;AAED,iBAAS,SAAS,IAAI,WAAW,CAUhC;AAED,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;AACpD,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../../src/react/locale.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CACxC,CAAC;AAEF,QAAA,MAAM,aAAa,iCAA4B,CAAC;AAchD,iBAAS,cAAc,CAAC,KAAK,EAAE,mBAAmB,mFAGjD;AAED,iBAAS,SAAS,IAAI,WAAW,CAIhC;AAED,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;AACpD,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,CAAC"}
@@ -1,19 +1,23 @@
1
1
  import { createContext, createElement, useContext, useEffect, useState } from "react";
2
2
  import { currentLocale, onLocaleChanged, setCurrentLocale } from "../language/routing/index.js";
3
3
  const LocaleContext = createContext("");
4
+ function useCurrentLocale() {
5
+ const [locale, setLocale] = useState(currentLocale);
6
+ useEffect(() => {
7
+ const stop = onLocaleChanged(setLocale);
8
+ setLocale(currentLocale());
9
+ return stop;
10
+ }, []);
11
+ return locale;
12
+ }
4
13
  function LocaleProvider(props) {
5
- const locale = props.locale || currentLocale();
6
- return createElement(LocaleContext.Provider, { value: locale }, props.children);
14
+ const live = useCurrentLocale();
15
+ return createElement(LocaleContext.Provider, { value: props.locale || live }, props.children);
7
16
  }
8
17
  function useLocale() {
9
18
  const provided = useContext(LocaleContext);
10
- const [locale, setState] = useState(() => provided || currentLocale());
11
- useEffect(() => {
12
- if (provided)
13
- return undefined;
14
- return onLocaleChanged(setState);
15
- }, [provided]);
16
- return { locale: provided || locale, setLocale: setCurrentLocale };
19
+ const live = useCurrentLocale();
20
+ return { locale: provided || live, setLocale: setCurrentLocale };
17
21
  }
18
22
  export { LocaleContext, LocaleProvider, useLocale };
19
23
  //# sourceMappingURL=locale.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"locale.js","sourceRoot":"","sources":["../../../src/react/locale.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGtF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAYjF,MAAM,aAAa,GAAG,aAAa,CAAS,EAAE,CAAC,CAAC;AAEhD,SAAS,cAAc,CAAC,KAA0B;IAChD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC;IAC/C,OAAO,aAAa,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAS,GAAG,EAAE,CAAC,QAAQ,IAAI,aAAa,EAAE,CAAC,CAAC;IAE/E,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC/B,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEjB,OAAO,EAAE,MAAM,EAAE,QAAQ,IAAI,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACrE,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"locale.js","sourceRoot":"","sources":["../../../src/react/locale.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGtF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAYjF,MAAM,aAAa,GAAG,aAAa,CAAS,EAAE,CAAC,CAAC;AAEhD,SAAS,gBAAgB;IACvB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAS,aAAa,CAAC,CAAC;IAE5D,SAAS,CAAC,GAAG,EAAE;QACX,MAAM,IAAI,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QACxC,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,EAAE,CAAC,CAAC;IAET,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,KAA0B;IAChD,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;IAChC,OAAO,aAAa,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;IAChC,OAAO,EAAE,MAAM,EAAE,QAAQ,IAAI,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACnE,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../../src/server/language.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../../src/server/language.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { requestBody, requestCookies, requestHeader, requestQuery, responseSecure, sendJson, } from "./http.js";
2
- const DEFAULT_LANGUAGE_COOKIE_NAME = "ui_lang";
2
+ import { DEFAULT_LOCALE_COOKIE_NAME } from "../language/routing/options.js";
3
+ const DEFAULT_LANGUAGE_COOKIE_NAME = DEFAULT_LOCALE_COOKIE_NAME;
3
4
  const DEFAULT_LANGUAGE_KEYS = Object.freeze(["en"]);
4
5
  function normalizeLanguageToken(value) {
5
6
  const token = String(value == null ? "" : value)