@trebired/frontend 13.23.0 → 13.24.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,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 13.24.0
4
+
5
+ - Added a locale handoff between sites. `LOCALE_HANDOFF_QUERY`, the `setlang` query parameter, tells a site which locale the visitor is reading in right now. The boot script honours it whatever the url strategy is, writes it to storage and the cookie so it sticks, and removes it from the url so the address stays clean and sharing it cannot force a language on someone else.
6
+ - `setlang` is deliberately not `lang`. A `lang` url is a view of a page, so a visitor's own saved choice still outranks it, exactly as before, and that is now covered by a test rather than left implicit. A handoff is a live statement from a sibling site as the visitor follows a link, so it outranks the saved choice and replaces it.
7
+ - This is what a group of sites on separate origins needs: browser storage is per origin, and a cookie set on one domain does not reach another, so without a handoff the language was lost on every hop between sites.
8
+
3
9
  ## 13.23.0
4
10
 
5
11
  - `EmbedFrame` splits its failure state into a fixed headline and the reason on its own line beneath it, instead of running both into one sentence.
@@ -1,9 +1,10 @@
1
1
  import type { LocaleRoutingOptions, LocaleStrategy } from "./options.js";
2
+ declare const LOCALE_HANDOFF_QUERY = "setlang";
2
3
  type LocaleBootOptions = {
3
4
  hideUntilReady?: boolean;
4
5
  strategy?: LocaleStrategy;
5
6
  };
6
7
  declare function createLocaleBootScript(options?: LocaleRoutingOptions, boot?: LocaleBootOptions): string;
7
- export { createLocaleBootScript };
8
+ export { createLocaleBootScript, LOCALE_HANDOFF_QUERY };
8
9
  export type { LocaleBootOptions };
9
10
  //# sourceMappingURL=boot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/boot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA2CzE,KAAK,iBAAiB,GAAG;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,iBAAS,sBAAsB,CAAC,OAAO,GAAE,oBAAyB,EAAE,IAAI,GAAE,iBAAsB,GAAG,MAAM,CAkBxG;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAClC,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/boot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGzE,QAAA,MAAM,oBAAoB,YAAY,CAAC;AAsDvC,KAAK,iBAAiB,GAAG;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,iBAAS,sBAAsB,CAAC,OAAO,GAAE,oBAAyB,EAAE,IAAI,GAAE,iBAAsB,GAAG,MAAM,CAoBxG;AAED,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,CAAC;AACxD,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { normalizeLocaleRouting } from "./options.js";
2
2
  import { LOCALE_PENDING_ATTR, LOCALE_RENDERED_ATTR } from "./view.js";
3
+ const LOCALE_HANDOFF_QUERY = "setlang";
3
4
  function scriptJson(value) {
4
5
  return JSON.stringify(value ?? null).replace(/</gu, "\\u003c");
5
6
  }
@@ -9,9 +10,25 @@ function matchSource() {
9
10
  "if(L.indexOf(t)>=0)return t;var b=t.split('-')[0];return L.indexOf(b)>=0?b:''}",
10
11
  ];
11
12
  }
13
+ function handoffLocaleSource() {
14
+ return [
15
+ "var n='';",
16
+ `try{var q=new RegExp('[?&]'+H+'=([^&#]*)').exec(location.search);`,
17
+ "if(q)n=m(decodeURIComponent(q[1]))}catch(e){}",
18
+ "if(n){try{window.localStorage.setItem(K,n)}catch(e){}",
19
+ "try{d.cookie=C+'='+n+';path=/;max-age=31536000;samesite=lax'}catch(e){}",
20
+ "try{var u=new URL(location.href);u.searchParams.delete(H);",
21
+ "history.replaceState(history.state,'',u.pathname+u.search+u.hash)}catch(e){}}",
22
+ ];
23
+ }
24
+ function queryLocaleSource() {
25
+ return [
26
+ "if(!n){try{var w=/[?&]lang=([^&#]*)/.exec(location.search);if(w)n=m(decodeURIComponent(w[1]))}catch(e){}}",
27
+ ];
28
+ }
12
29
  function storedLocaleSource() {
13
30
  return [
14
- "var n='';try{n=m(window.localStorage.getItem(K))}catch(e){}",
31
+ "if(!n){try{n=m(window.localStorage.getItem(K))}catch(e){}}",
15
32
  "if(!n){try{var c=('; '+d.cookie).split('; '+C+'=');",
16
33
  "if(c.length>1)n=m(decodeURIComponent(c[1].split(';')[0]))}catch(e){}}",
17
34
  ];
@@ -22,11 +39,6 @@ function navigatorLocaleSource() {
22
39
  "for(var i=0;i<g.length&&!n;i++)n=m(g[i])}catch(e){}}",
23
40
  ];
24
41
  }
25
- function queryLocaleSource() {
26
- return [
27
- "if(!n){try{var q=/[?&]lang=([^&#]*)/.exec(location.search);if(q)n=m(decodeURIComponent(q[1]))}catch(e){}}",
28
- ];
29
- }
30
42
  function pendingSource(hide) {
31
43
  if (!hide)
32
44
  return ["if(n!==r){h.setAttribute(P,'')}"];
@@ -43,9 +55,11 @@ function createLocaleBootScript(options = {}, boot = {}) {
43
55
  "(function(){",
44
56
  `var L=${scriptJson(routing.locales)},D=${scriptJson(routing.defaultLocale)},`,
45
57
  `K=${scriptJson(routing.storageKey)},C=${scriptJson(routing.cookieName)},`,
46
- `R=${scriptJson(LOCALE_RENDERED_ATTR)},P=${scriptJson(LOCALE_PENDING_ATTR)};`,
58
+ `R=${scriptJson(LOCALE_RENDERED_ATTR)},P=${scriptJson(LOCALE_PENDING_ATTR)},`,
59
+ `H=${scriptJson(LOCALE_HANDOFF_QUERY)};`,
47
60
  "var d=document,h=d.documentElement,r=h.lang||D;h.setAttribute(R,r);",
48
61
  ...matchSource(),
62
+ ...handoffLocaleSource(),
49
63
  ...storedLocaleSource(),
50
64
  ...(readQuery ? queryLocaleSource() : []),
51
65
  ...(detectBrowser ? navigatorLocaleSource() : []),
@@ -54,5 +68,5 @@ function createLocaleBootScript(options = {}, boot = {}) {
54
68
  "})();",
55
69
  ].join("");
56
70
  }
57
- export { createLocaleBootScript };
71
+ export { createLocaleBootScript, LOCALE_HANDOFF_QUERY };
58
72
  //# sourceMappingURL=boot.js.map
@@ -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;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,iBAAiB;IACxB,OAAO;QACL,2GAA2G;KAC5G,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAa;IAClC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,iCAAiC,CAAC,CAAC;IACtD,OAAO;QACL,6DAA6D;QAC7D,gGAAgG;KACjG,CAAC;AACJ,CAAC;AAOD,SAAS,sBAAsB,CAAC,UAAgC,EAAE,EAAE,OAA0B,EAAE;IAC9F,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC;IACjE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC5C,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,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,kBAAkB;QAClB,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC;QAC/C,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,MAAM,oBAAoB,GAAG,SAAS,CAAC;AAEvC,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,mBAAmB;IAC1B,OAAO;QACL,WAAW;QACX,mEAAmE;QACnE,+CAA+C;QAC/C,uDAAuD;QACvD,yEAAyE;QACzE,4DAA4D;QAC5D,+EAA+E;KAChF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO;QACL,2GAA2G;KAC5G,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB;IACzB,OAAO;QACL,4DAA4D;QAC5D,qDAAqD;QACrD,uEAAuE;KACxE,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO;QACL,iEAAiE;QACjE,sDAAsD;KACvD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAa;IAClC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,iCAAiC,CAAC,CAAC;IACtD,OAAO;QACL,6DAA6D;QAC7D,gGAAgG;KACjG,CAAC;AACJ,CAAC;AAOD,SAAS,sBAAsB,CAAC,UAAgC,EAAE,EAAE,OAA0B,EAAE;IAC9F,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC;IACjE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC5C,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,KAAK,UAAU,CAAC,oBAAoB,CAAC,GAAG;QACxC,qEAAqE;QACrE,GAAG,WAAW,EAAE;QAChB,GAAG,mBAAmB,EAAE;QACxB,GAAG,kBAAkB,EAAE;QACvB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,kBAAkB;QAClB,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC;QAC/C,OAAO;KACR,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- export { createLocaleBootScript } from "./boot.js";
1
+ export { createLocaleBootScript, LOCALE_HANDOFF_QUERY } from "./boot.js";
2
2
  export type { LocaleBootOptions } from "./boot.js";
3
3
  export { createLocaleDocumentBody } from "./document.js";
4
4
  export { createLocaleShellRoutes } from "./shell.js";
@@ -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,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAC7E,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,cAAc,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,eAAe,EACvC,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACzE,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAC7E,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,cAAc,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,eAAe,EACvC,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
@@ -1,4 +1,4 @@
1
- export { createLocaleBootScript } from "./boot.js";
1
+ export { createLocaleBootScript, LOCALE_HANDOFF_QUERY } from "./boot.js";
2
2
  export { createLocaleDocumentBody } from "./document.js";
3
3
  export { createLocaleShellRoutes } from "./shell.js";
4
4
  export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, matchLocale, normalizeLocaleRouting, pickLocale, } from "./options.js";
@@ -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;AAEnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAGrD,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,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,eAAe,EAAE,eAAe,EACvC,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/language/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAGrD,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,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,eAAe,EAAE,eAAe,EACvC,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import type { LocaleRoutingOptions, LocaleStrategy } from "./options.js";
2
+ declare const LOCALE_HANDOFF_QUERY = "setlang";
2
3
  type LocaleBootOptions = {
3
4
  hideUntilReady?: boolean;
4
5
  strategy?: LocaleStrategy;
5
6
  };
6
7
  declare function createLocaleBootScript(options?: LocaleRoutingOptions, boot?: LocaleBootOptions): string;
7
- export { createLocaleBootScript };
8
+ export { createLocaleBootScript, LOCALE_HANDOFF_QUERY };
8
9
  export type { LocaleBootOptions };
9
10
  //# sourceMappingURL=boot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/boot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA2CzE,KAAK,iBAAiB,GAAG;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,iBAAS,sBAAsB,CAAC,OAAO,GAAE,oBAAyB,EAAE,IAAI,GAAE,iBAAsB,GAAG,MAAM,CAkBxG;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAClC,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/boot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGzE,QAAA,MAAM,oBAAoB,YAAY,CAAC;AAsDvC,KAAK,iBAAiB,GAAG;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,iBAAS,sBAAsB,CAAC,OAAO,GAAE,oBAAyB,EAAE,IAAI,GAAE,iBAAsB,GAAG,MAAM,CAoBxG;AAED,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,CAAC;AACxD,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { normalizeLocaleRouting } from "./options.js";
2
2
  import { LOCALE_PENDING_ATTR, LOCALE_RENDERED_ATTR } from "./view.js";
3
+ const LOCALE_HANDOFF_QUERY = "setlang";
3
4
  function scriptJson(value) {
4
5
  return JSON.stringify(value ?? null).replace(/</gu, "\\u003c");
5
6
  }
@@ -9,9 +10,25 @@ function matchSource() {
9
10
  "if(L.indexOf(t)>=0)return t;var b=t.split('-')[0];return L.indexOf(b)>=0?b:''}",
10
11
  ];
11
12
  }
13
+ function handoffLocaleSource() {
14
+ return [
15
+ "var n='';",
16
+ `try{var q=new RegExp('[?&]'+H+'=([^&#]*)').exec(location.search);`,
17
+ "if(q)n=m(decodeURIComponent(q[1]))}catch(e){}",
18
+ "if(n){try{window.localStorage.setItem(K,n)}catch(e){}",
19
+ "try{d.cookie=C+'='+n+';path=/;max-age=31536000;samesite=lax'}catch(e){}",
20
+ "try{var u=new URL(location.href);u.searchParams.delete(H);",
21
+ "history.replaceState(history.state,'',u.pathname+u.search+u.hash)}catch(e){}}",
22
+ ];
23
+ }
24
+ function queryLocaleSource() {
25
+ return [
26
+ "if(!n){try{var w=/[?&]lang=([^&#]*)/.exec(location.search);if(w)n=m(decodeURIComponent(w[1]))}catch(e){}}",
27
+ ];
28
+ }
12
29
  function storedLocaleSource() {
13
30
  return [
14
- "var n='';try{n=m(window.localStorage.getItem(K))}catch(e){}",
31
+ "if(!n){try{n=m(window.localStorage.getItem(K))}catch(e){}}",
15
32
  "if(!n){try{var c=('; '+d.cookie).split('; '+C+'=');",
16
33
  "if(c.length>1)n=m(decodeURIComponent(c[1].split(';')[0]))}catch(e){}}",
17
34
  ];
@@ -22,11 +39,6 @@ function navigatorLocaleSource() {
22
39
  "for(var i=0;i<g.length&&!n;i++)n=m(g[i])}catch(e){}}",
23
40
  ];
24
41
  }
25
- function queryLocaleSource() {
26
- return [
27
- "if(!n){try{var q=/[?&]lang=([^&#]*)/.exec(location.search);if(q)n=m(decodeURIComponent(q[1]))}catch(e){}}",
28
- ];
29
- }
30
42
  function pendingSource(hide) {
31
43
  if (!hide)
32
44
  return ["if(n!==r){h.setAttribute(P,'')}"];
@@ -43,9 +55,11 @@ function createLocaleBootScript(options = {}, boot = {}) {
43
55
  "(function(){",
44
56
  `var L=${scriptJson(routing.locales)},D=${scriptJson(routing.defaultLocale)},`,
45
57
  `K=${scriptJson(routing.storageKey)},C=${scriptJson(routing.cookieName)},`,
46
- `R=${scriptJson(LOCALE_RENDERED_ATTR)},P=${scriptJson(LOCALE_PENDING_ATTR)};`,
58
+ `R=${scriptJson(LOCALE_RENDERED_ATTR)},P=${scriptJson(LOCALE_PENDING_ATTR)},`,
59
+ `H=${scriptJson(LOCALE_HANDOFF_QUERY)};`,
47
60
  "var d=document,h=d.documentElement,r=h.lang||D;h.setAttribute(R,r);",
48
61
  ...matchSource(),
62
+ ...handoffLocaleSource(),
49
63
  ...storedLocaleSource(),
50
64
  ...(readQuery ? queryLocaleSource() : []),
51
65
  ...(detectBrowser ? navigatorLocaleSource() : []),
@@ -54,5 +68,5 @@ function createLocaleBootScript(options = {}, boot = {}) {
54
68
  "})();",
55
69
  ].join("");
56
70
  }
57
- export { createLocaleBootScript };
71
+ export { createLocaleBootScript, LOCALE_HANDOFF_QUERY };
58
72
  //# sourceMappingURL=boot.js.map
@@ -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;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,iBAAiB;IACxB,OAAO;QACL,2GAA2G;KAC5G,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAa;IAClC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,iCAAiC,CAAC,CAAC;IACtD,OAAO;QACL,6DAA6D;QAC7D,gGAAgG;KACjG,CAAC;AACJ,CAAC;AAOD,SAAS,sBAAsB,CAAC,UAAgC,EAAE,EAAE,OAA0B,EAAE;IAC9F,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC;IACjE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC5C,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,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,kBAAkB;QAClB,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC;QAC/C,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,MAAM,oBAAoB,GAAG,SAAS,CAAC;AAEvC,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,mBAAmB;IAC1B,OAAO;QACL,WAAW;QACX,mEAAmE;QACnE,+CAA+C;QAC/C,uDAAuD;QACvD,yEAAyE;QACzE,4DAA4D;QAC5D,+EAA+E;KAChF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO;QACL,2GAA2G;KAC5G,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB;IACzB,OAAO;QACL,4DAA4D;QAC5D,qDAAqD;QACrD,uEAAuE;KACxE,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO;QACL,iEAAiE;QACjE,sDAAsD;KACvD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAa;IAClC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,iCAAiC,CAAC,CAAC;IACtD,OAAO;QACL,6DAA6D;QAC7D,gGAAgG;KACjG,CAAC;AACJ,CAAC;AAOD,SAAS,sBAAsB,CAAC,UAAgC,EAAE,EAAE,OAA0B,EAAE;IAC9F,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC;IACjE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC5C,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,KAAK,UAAU,CAAC,oBAAoB,CAAC,GAAG;QACxC,qEAAqE;QACrE,GAAG,WAAW,EAAE;QAChB,GAAG,mBAAmB,EAAE;QACxB,GAAG,kBAAkB,EAAE;QACvB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,kBAAkB;QAClB,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC;QAC/C,OAAO;KACR,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- export { createLocaleBootScript } from "./boot.js";
1
+ export { createLocaleBootScript, LOCALE_HANDOFF_QUERY } from "./boot.js";
2
2
  export type { LocaleBootOptions } from "./boot.js";
3
3
  export { createLocaleDocumentBody } from "./document.js";
4
4
  export { createLocaleShellRoutes } from "./shell.js";
@@ -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,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAC7E,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,cAAc,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,eAAe,EACvC,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACzE,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAC7E,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,cAAc,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,eAAe,EACvC,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
@@ -1,4 +1,4 @@
1
- export { createLocaleBootScript } from "./boot.js";
1
+ export { createLocaleBootScript, LOCALE_HANDOFF_QUERY } from "./boot.js";
2
2
  export { createLocaleDocumentBody } from "./document.js";
3
3
  export { createLocaleShellRoutes } from "./shell.js";
4
4
  export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, matchLocale, normalizeLocaleRouting, pickLocale, } from "./options.js";
@@ -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;AAEnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAGrD,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,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,eAAe,EAAE,eAAe,EACvC,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/language/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAGrD,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,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,eAAe,EAAE,eAAe,EACvC,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  }
9
9
  },
10
10
  "name": "@trebired/frontend",
11
- "version": "13.23.0",
11
+ "version": "13.24.0",
12
12
  "description": "Generic browser runtime systems for Trebired frontend packages and applications.",
13
13
  "type": "module",
14
14
  "private": false,