@trebired/frontend 12.12.4 → 12.12.5

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
@@ -4,6 +4,30 @@ All notable changes to `@trebired/frontend` will be documented here.
4
4
 
5
5
  This project follows semantic versioning once published.
6
6
 
7
+ ## 12.12.5
8
+
9
+ ### Fixed
10
+
11
+ - Theme switching is now one page-level cross-fade instead of a transition per element,
12
+ superseding 12.12.4's approach, which did not fix the stagger and made the switch slow and
13
+ laggy. Forcing a shared duration onto `*` meant a page's worth of simultaneous
14
+ `background-color`/`box-shadow` transitions — all main-thread paint work, so the switch janked
15
+ and the stagger came back as paint landed in chunks — while a root `transitionend` listener took
16
+ one bubbled event per element per property (8012 of them on a 4000-element page). It also could
17
+ never be complete: anything without a transitionable property (gradients, images, native
18
+ scrollbars) still snapped instantly while everything else animated. `applyTheme()` now runs the
19
+ switch through the View Transitions API, cross-fading the whole page as a single
20
+ compositor-driven animation with per-element transitions suppressed underneath — uniform by
21
+ construction, since there is one animation rather than thousands. On the same 4000-element page
22
+ this takes bubbled `transitionend` events from 8012 to 0 and roughly halves the worst frame
23
+ time. Browsers without the API fall back to one shared duration across the color-affecting
24
+ properties (`box-shadow` excluded, being the expensive one). `prefers-reduced-motion` switches
25
+ instantly, as before.
26
+ - `getEffectiveTheme()`/`currentDomTheme()` now report the theme a switch has already committed to
27
+ while that switch is still in flight. A view transition applies the DOM change from a callback
28
+ the browser runs a frame later, so without this a second toggle click landing inside that window
29
+ read the old value and computed `nextTheme()` back to where it started.
30
+
7
31
  ## 12.12.4
8
32
 
9
33
  ### Fixed
@@ -22,6 +22,22 @@ declare function systemThemeKey(options?: ThemeRuntimeOptions): ThemeValue;
22
22
  declare function currentDomTheme(options?: ThemeRuntimeOptions): ThemeValue;
23
23
  declare function getEffectiveTheme(value?: unknown, options?: ThemeRuntimeOptions): ThemeValue;
24
24
  declare function themeScheme(key: unknown, options?: ThemeRuntimeOptions): ThemeModeScheme;
25
+ /**
26
+ * A theme switch changes the CSS vars every element reads at once, and the
27
+ * browser cannot tell that from a hover — so each element animated on its own
28
+ * locally tuned duration and the switch looked staggered. Animating them
29
+ * together instead is not the fix either: a page's worth of `background-color`
30
+ * /`box-shadow` transitions are main-thread paint work, which janks (and the
31
+ * stagger comes back, since paint lands in chunks) and still leaves out
32
+ * everything that has no transitionable property at all — gradients, images,
33
+ * native scrollbars.
34
+ *
35
+ * So the whole page cross-fades as a single compositor-driven animation via
36
+ * the View Transitions API, with per-element transitions suppressed
37
+ * underneath. That is uniform by construction: one animation, not thousands.
38
+ * Browsers without the API fall back to one shared duration for the
39
+ * color-affecting properties, which is the best a per-element approach can do.
40
+ */
25
41
  declare function applyTheme(theme: ThemeValue, options?: ThemeRuntimeOptions): ThemeValue;
26
42
  declare function readPersistedTheme(adapter?: ThemePersistenceAdapter, options?: ThemeRuntimeOptions): Promise<ThemeValue>;
27
43
  declare function setTheme(theme: ThemeValue, options?: ThemeRuntimeOptions): Promise<ThemeValue>;
@@ -1 +1 @@
1
- {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/theme/apply.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEpE,KAAK,UAAU,GAAG,MAAM,CAAC;AAEzB,KAAK,uBAAuB,GAAG;IAC7B,GAAG,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAC,IAAI,GAAC,SAAS,CAAC,GAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrE,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,OAAO,CAAC,GAAC,OAAO,CAAC;CACvD,CAAC;AAEF,KAAK,mBAAmB,GAAG,gBAAgB,GAAE;IAC3C,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,IAAI,CAAC,EAAE,uBAAuB,CAAC;CAChC,CAAC;AAEF,KAAK,iBAAiB,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;AAIlD,iBAAS,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAE5D;AAED,iBAAS,YAAY,CAAC,IAAI,GAAE,QAAmB,GAAG,IAAI,CAErD;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAGrF;AAUD,iBAAS,YAAY,IAAI,eAAe,CAEvC;AAED,iBAAS,iBAAiB,IAAI,eAAe,CAM5C;AAED,iBAAS,oBAAoB,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAa7D;AAED,iBAAS,cAAc,CAAC,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAGrE;AAED,iBAAS,eAAe,CAAC,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAGtE;AAED,iBAAS,iBAAiB,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAEzF;AAED,iBAAS,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,eAAe,CAErF;AAkDD,iBAAS,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAYpF;AAED,iBAAe,kBAAkB,CAC/B,OAAO,CAAC,EAAE,uBAAuB,EACjC,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,UAAU,CAAC,CAOrB;AAED,iBAAe,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,UAAU,CAAC,CASjG;AAED,iBAAS,SAAS,CAAC,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAIhE;AAED,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,WAAW,GACZ,CAAC;AACF,YAAY,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/theme/apply.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAI9C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEpE,KAAK,UAAU,GAAG,MAAM,CAAC;AAEzB,KAAK,uBAAuB,GAAG;IAC7B,GAAG,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAC,IAAI,GAAC,SAAS,CAAC,GAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrE,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,OAAO,CAAC,GAAC,OAAO,CAAC;CACvD,CAAC;AAEF,KAAK,mBAAmB,GAAG,gBAAgB,GAAE;IAC3C,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,IAAI,CAAC,EAAE,uBAAuB,CAAC;CAChC,CAAC;AAEF,KAAK,iBAAiB,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;AAIlD,iBAAS,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAE5D;AAED,iBAAS,YAAY,CAAC,IAAI,GAAE,QAAmB,GAAG,IAAI,CAErD;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAGrF;AAUD,iBAAS,YAAY,IAAI,eAAe,CAEvC;AAED,iBAAS,iBAAiB,IAAI,eAAe,CAM5C;AAED,iBAAS,oBAAoB,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAa7D;AAED,iBAAS,cAAc,CAAC,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAGrE;AAWD,iBAAS,eAAe,CAAC,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAItE;AAED,iBAAS,iBAAiB,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAEzF;AAED,iBAAS,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,eAAe,CAErF;AAyFD;;;;;;;;;;;;;;;GAeG;AACH,iBAAS,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,mBAAwB,GAAG,UAAU,CA8BpF;AAED,iBAAe,kBAAkB,CAC/B,OAAO,CAAC,EAAE,uBAAuB,EACjC,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,UAAU,CAAC,CAOrB;AAED,iBAAe,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,UAAU,CAAC,CASjG;AAED,iBAAS,SAAS,CAAC,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAIhE;AAED,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,WAAW,GACZ,CAAC;AACF,YAAY,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { frontendCssVar } from "../../namespace/index.js";
1
2
  import { THEME_ATTR, THEME_CHANGE_EVENT, THEME_SWITCHING_ATTR } from "./constants.js";
2
3
  import { findThemeMode, getThemeModes, themeModeKeyOf } from "./modes.js";
3
4
  const themeSyncListeners = new Set();
@@ -48,9 +49,19 @@ function systemThemeKey(options = {}) {
48
49
  const registry = getThemeModes(options);
49
50
  return systemPrefersLight() ? registry.light : registry.dark;
50
51
  }
52
+ /**
53
+ * A view-transition switch commits the attribute from its callback, which the
54
+ * browser runs a frame later — so between `applyTheme()` and that commit the
55
+ * DOM still reads the old theme. `pendingTheme` holds the value already
56
+ * decided on, otherwise a second toggle click landing inside that window
57
+ * computes `nextTheme()` from the stale one and switches back.
58
+ */
59
+ let pendingTheme = "";
51
60
  function currentDomTheme(options = {}) {
52
61
  if (typeof document === "undefined")
53
62
  return "";
63
+ if (pendingTheme)
64
+ return pendingTheme;
54
65
  return normalizeTheme(document.documentElement.getAttribute(THEME_ATTR), options);
55
66
  }
56
67
  function getEffectiveTheme(value, options = {}) {
@@ -66,60 +77,120 @@ function dispatchThemeChange(theme, themeKey) {
66
77
  detail: { theme, themeKey },
67
78
  }));
68
79
  }
69
- let themeSwitchQuietTimer = null;
70
- let themeSwitchFallbackTimer = null;
80
+ const THEME_SWITCH_BUFFER_MS = 120;
81
+ const THEME_SWITCH_DEFAULT_MS = 240;
82
+ let themeSwitchTimer = null;
71
83
  function endThemeSwitch() {
84
+ if (typeof document === "undefined")
85
+ return;
72
86
  document.documentElement.removeAttribute(THEME_SWITCHING_ATTR);
73
- document.documentElement.removeEventListener("transitionend", onThemeSwitchTransitionEnd);
74
- if (themeSwitchQuietTimer)
75
- clearTimeout(themeSwitchQuietTimer);
76
- if (themeSwitchFallbackTimer)
77
- clearTimeout(themeSwitchFallbackTimer);
78
- themeSwitchQuietTimer = null;
79
- themeSwitchFallbackTimer = null;
80
- }
81
- function onThemeSwitchTransitionEnd() {
82
- if (themeSwitchQuietTimer)
83
- clearTimeout(themeSwitchQuietTimer);
84
- themeSwitchQuietTimer = setTimeout(endThemeSwitch, 50);
87
+ if (themeSwitchTimer)
88
+ clearTimeout(themeSwitchTimer);
89
+ themeSwitchTimer = null;
85
90
  }
86
91
  /**
87
- * Every element's own color/background/border transition (tuned for its own
88
- * hover/focus feedback) also fires when a CSS var it reads changes value on
89
- * theme switch — so without this, each element settles on its own local
90
- * duration and the switch looks staggered. `data-tbf-theme-switching`
91
- * forces one shared transition (see styles/utils/base.scss) for the
92
- * switch's duration, so every element moves together. Cleared on
93
- * `transitionend` (debounced, since many elements fire it) rather than a
94
- * fixed delay, so it stays correct if an app customizes the transition
95
- * duration; the fallback timer is just a safety net in case nothing
96
- * transitions at all (e.g. `prefers-reduced-motion`).
92
+ * Suppresses (`"instant"`) or unifies (`"uniform"`) per-element transitions
93
+ * for the length of a switch — see `styles/utils/base.scss`. The hold is a
94
+ * plain timer: a `transitionend` listener would receive one bubbled event per
95
+ * element per property, which on a real page is tens of thousands of events.
97
96
  */
98
- function beginThemeSwitch() {
97
+ function beginThemeSwitch(mode, holdMs) {
99
98
  if (typeof document === "undefined")
100
99
  return;
101
- document.documentElement.setAttribute(THEME_SWITCHING_ATTR, "true");
102
- document.documentElement.addEventListener("transitionend", onThemeSwitchTransitionEnd);
103
- if (themeSwitchQuietTimer)
104
- clearTimeout(themeSwitchQuietTimer);
105
- themeSwitchQuietTimer = setTimeout(endThemeSwitch, 50);
106
- if (themeSwitchFallbackTimer)
107
- clearTimeout(themeSwitchFallbackTimer);
108
- themeSwitchFallbackTimer = setTimeout(endThemeSwitch, 1000);
100
+ document.documentElement.setAttribute(THEME_SWITCHING_ATTR, mode);
101
+ if (themeSwitchTimer)
102
+ clearTimeout(themeSwitchTimer);
103
+ themeSwitchTimer = setTimeout(endThemeSwitch, holdMs);
109
104
  }
110
- function applyTheme(theme, options = {}) {
111
- if (typeof document === "undefined")
112
- return getEffectiveTheme(theme, options);
113
- const normalized = normalizeTheme(theme, options);
114
- const next = normalized || systemThemeKey(options);
115
- const previous = currentDomTheme(options);
116
- beginThemeSwitch();
105
+ function themeSwitchDurationMs() {
106
+ try {
107
+ const raw = getComputedStyle(document.documentElement)
108
+ .getPropertyValue(frontendCssVar("transition-normal"))
109
+ .trim();
110
+ if (raw.endsWith("ms"))
111
+ return Number.parseFloat(raw) || THEME_SWITCH_DEFAULT_MS;
112
+ if (raw.endsWith("s"))
113
+ return (Number.parseFloat(raw) || 0.24) * 1000;
114
+ }
115
+ catch {
116
+ // an unreadable token just means the default hold below
117
+ }
118
+ return THEME_SWITCH_DEFAULT_MS;
119
+ }
120
+ function prefersReducedMotion() {
121
+ try {
122
+ return Boolean(window.matchMedia?.("(prefers-reduced-motion: reduce)").matches);
123
+ }
124
+ catch {
125
+ return false;
126
+ }
127
+ }
128
+ function startViewTransition(run) {
129
+ const start = document.startViewTransition;
130
+ if (typeof start !== "function")
131
+ return null;
132
+ try {
133
+ return start.call(document, run);
134
+ }
135
+ catch {
136
+ return null;
137
+ }
138
+ }
139
+ function commitTheme(next, normalized, previous, options) {
140
+ pendingTheme = "";
117
141
  document.documentElement.setAttribute(THEME_ATTR, next);
118
142
  applyDeviceScheme();
119
143
  document.body?.setAttribute(THEME_ATTR, next);
120
144
  if (previous !== next)
121
145
  dispatchThemeChange(normalized, next);
122
146
  runThemeSync(document);
147
+ void options;
148
+ }
149
+ /**
150
+ * A theme switch changes the CSS vars every element reads at once, and the
151
+ * browser cannot tell that from a hover — so each element animated on its own
152
+ * locally tuned duration and the switch looked staggered. Animating them
153
+ * together instead is not the fix either: a page's worth of `background-color`
154
+ * /`box-shadow` transitions are main-thread paint work, which janks (and the
155
+ * stagger comes back, since paint lands in chunks) and still leaves out
156
+ * everything that has no transitionable property at all — gradients, images,
157
+ * native scrollbars.
158
+ *
159
+ * So the whole page cross-fades as a single compositor-driven animation via
160
+ * the View Transitions API, with per-element transitions suppressed
161
+ * underneath. That is uniform by construction: one animation, not thousands.
162
+ * Browsers without the API fall back to one shared duration for the
163
+ * color-affecting properties, which is the best a per-element approach can do.
164
+ */
165
+ function applyTheme(theme, options = {}) {
166
+ if (typeof document === "undefined")
167
+ return getEffectiveTheme(theme, options);
168
+ const normalized = normalizeTheme(theme, options);
169
+ const next = normalized || systemThemeKey(options);
170
+ const previous = currentDomTheme(options);
171
+ const commit = () => commitTheme(next, normalized, previous, options);
172
+ if (previous === next) {
173
+ commit();
174
+ return next;
175
+ }
176
+ const hold = themeSwitchDurationMs() + THEME_SWITCH_BUFFER_MS;
177
+ if (prefersReducedMotion()) {
178
+ beginThemeSwitch("instant", THEME_SWITCH_BUFFER_MS);
179
+ commit();
180
+ return next;
181
+ }
182
+ pendingTheme = next;
183
+ const transition = startViewTransition(() => {
184
+ beginThemeSwitch("instant", hold);
185
+ commit();
186
+ });
187
+ if (transition) {
188
+ void Promise.resolve(transition.finished).then(endThemeSwitch, endThemeSwitch);
189
+ return next;
190
+ }
191
+ pendingTheme = "";
192
+ beginThemeSwitch("uniform", hold);
193
+ commit();
123
194
  return next;
124
195
  }
125
196
  async function readPersistedTheme(adapter, options = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/theme/apply.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/theme/apply.ts"],"names":[],"mappings":"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"}
@@ -62,19 +62,37 @@ body {
62
62
  }
63
63
 
64
64
  /**
65
- * Every element normally transitions color/background/border at its own
66
- * pace (tuned for its own hover/focus feedback), so a theme switch — which
67
- * changes the CSS vars every one of them reads at once — looked staggered
68
- * instead of uniform. Force one shared transition for everything while a
69
- * switch is in flight (see theme/apply.ts's beginThemeSwitch()), instead of
70
- * disabling transitions during the switch, which just traded "staggered"
71
- * for "no transition at all".
65
+ * Theme switching animates the whole page as one cross-fade rather than
66
+ * per element — see the comment on `applyTheme()` in theme/apply.ts for
67
+ * why per-element transitions cannot be made uniform. Here the live DOM
68
+ * only has to stop animating underneath the cross-fade, so it snaps
69
+ * straight to the new theme while the snapshot fades over it.
72
70
  */
73
- #{ns.data("theme-switching", "true")},
74
- #{ns.data("theme-switching", "true")} *,
75
- #{ns.data("theme-switching", "true")} *::before,
76
- #{ns.data("theme-switching", "true")} *::after {
77
- transition-property: background-color, border-color, color, fill, stroke, box-shadow, outline-color !important;
71
+ #{ns.data("theme-switching", "instant")},
72
+ #{ns.data("theme-switching", "instant")} *,
73
+ #{ns.data("theme-switching", "instant")} *::before,
74
+ #{ns.data("theme-switching", "instant")} *::after {
75
+ transition: none !important;
76
+ animation: none !important;
77
+ }
78
+
79
+ ::view-transition-old(root),
80
+ ::view-transition-new(root) {
81
+ animation-duration: var(#{ns.css-var("transition-normal")}, 240ms);
82
+ animation-timing-function: ease;
83
+ }
84
+
85
+ /**
86
+ * Fallback for browsers without the View Transitions API: one shared
87
+ * duration for the color-affecting properties. `box-shadow` is deliberately
88
+ * left out — animating it on every element is expensive enough to jank the
89
+ * switch, which reintroduces the very stagger this is fixing.
90
+ */
91
+ #{ns.data("theme-switching", "uniform")},
92
+ #{ns.data("theme-switching", "uniform")} *,
93
+ #{ns.data("theme-switching", "uniform")} *::before,
94
+ #{ns.data("theme-switching", "uniform")} *::after {
95
+ transition-property: background-color, border-color, color, fill, stroke, outline-color !important;
78
96
  transition-duration: var(#{ns.css-var("transition-normal")}, 240ms) !important;
79
97
  transition-timing-function: ease !important;
80
98
  animation: none !important;
@@ -22,6 +22,22 @@ declare function systemThemeKey(options?: ThemeRuntimeOptions): ThemeValue;
22
22
  declare function currentDomTheme(options?: ThemeRuntimeOptions): ThemeValue;
23
23
  declare function getEffectiveTheme(value?: unknown, options?: ThemeRuntimeOptions): ThemeValue;
24
24
  declare function themeScheme(key: unknown, options?: ThemeRuntimeOptions): ThemeModeScheme;
25
+ /**
26
+ * A theme switch changes the CSS vars every element reads at once, and the
27
+ * browser cannot tell that from a hover — so each element animated on its own
28
+ * locally tuned duration and the switch looked staggered. Animating them
29
+ * together instead is not the fix either: a page's worth of `background-color`
30
+ * /`box-shadow` transitions are main-thread paint work, which janks (and the
31
+ * stagger comes back, since paint lands in chunks) and still leaves out
32
+ * everything that has no transitionable property at all — gradients, images,
33
+ * native scrollbars.
34
+ *
35
+ * So the whole page cross-fades as a single compositor-driven animation via
36
+ * the View Transitions API, with per-element transitions suppressed
37
+ * underneath. That is uniform by construction: one animation, not thousands.
38
+ * Browsers without the API fall back to one shared duration for the
39
+ * color-affecting properties, which is the best a per-element approach can do.
40
+ */
25
41
  declare function applyTheme(theme: ThemeValue, options?: ThemeRuntimeOptions): ThemeValue;
26
42
  declare function readPersistedTheme(adapter?: ThemePersistenceAdapter, options?: ThemeRuntimeOptions): Promise<ThemeValue>;
27
43
  declare function setTheme(theme: ThemeValue, options?: ThemeRuntimeOptions): Promise<ThemeValue>;
@@ -1 +1 @@
1
- {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/theme/apply.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEpE,KAAK,UAAU,GAAG,MAAM,CAAC;AAEzB,KAAK,uBAAuB,GAAG;IAC7B,GAAG,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAC,IAAI,GAAC,SAAS,CAAC,GAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrE,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,OAAO,CAAC,GAAC,OAAO,CAAC;CACvD,CAAC;AAEF,KAAK,mBAAmB,GAAG,gBAAgB,GAAE;IAC3C,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,IAAI,CAAC,EAAE,uBAAuB,CAAC;CAChC,CAAC;AAEF,KAAK,iBAAiB,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;AAIlD,iBAAS,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAE5D;AAED,iBAAS,YAAY,CAAC,IAAI,GAAE,QAAmB,GAAG,IAAI,CAErD;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAGrF;AAUD,iBAAS,YAAY,IAAI,eAAe,CAEvC;AAED,iBAAS,iBAAiB,IAAI,eAAe,CAM5C;AAED,iBAAS,oBAAoB,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAa7D;AAED,iBAAS,cAAc,CAAC,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAGrE;AAED,iBAAS,eAAe,CAAC,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAGtE;AAED,iBAAS,iBAAiB,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAEzF;AAED,iBAAS,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,eAAe,CAErF;AAkDD,iBAAS,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAYpF;AAED,iBAAe,kBAAkB,CAC/B,OAAO,CAAC,EAAE,uBAAuB,EACjC,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,UAAU,CAAC,CAOrB;AAED,iBAAe,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,UAAU,CAAC,CASjG;AAED,iBAAS,SAAS,CAAC,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAIhE;AAED,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,WAAW,GACZ,CAAC;AACF,YAAY,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/theme/apply.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAI9C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEpE,KAAK,UAAU,GAAG,MAAM,CAAC;AAEzB,KAAK,uBAAuB,GAAG;IAC7B,GAAG,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAC,IAAI,GAAC,SAAS,CAAC,GAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrE,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,OAAO,CAAC,GAAC,OAAO,CAAC;CACvD,CAAC;AAEF,KAAK,mBAAmB,GAAG,gBAAgB,GAAE;IAC3C,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,IAAI,CAAC,EAAE,uBAAuB,CAAC;CAChC,CAAC;AAEF,KAAK,iBAAiB,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;AAIlD,iBAAS,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAE5D;AAED,iBAAS,YAAY,CAAC,IAAI,GAAE,QAAmB,GAAG,IAAI,CAErD;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAGrF;AAUD,iBAAS,YAAY,IAAI,eAAe,CAEvC;AAED,iBAAS,iBAAiB,IAAI,eAAe,CAM5C;AAED,iBAAS,oBAAoB,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAa7D;AAED,iBAAS,cAAc,CAAC,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAGrE;AAWD,iBAAS,eAAe,CAAC,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAItE;AAED,iBAAS,iBAAiB,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAEzF;AAED,iBAAS,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,eAAe,CAErF;AAyFD;;;;;;;;;;;;;;;GAeG;AACH,iBAAS,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,mBAAwB,GAAG,UAAU,CA8BpF;AAED,iBAAe,kBAAkB,CAC/B,OAAO,CAAC,EAAE,uBAAuB,EACjC,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,UAAU,CAAC,CAOrB;AAED,iBAAe,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,UAAU,CAAC,CASjG;AAED,iBAAS,SAAS,CAAC,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAIhE;AAED,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,WAAW,GACZ,CAAC;AACF,YAAY,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { frontendCssVar } from "../namespace/index.js";
1
2
  import { THEME_ATTR, THEME_CHANGE_EVENT, THEME_SWITCHING_ATTR } from "./constants.js";
2
3
  import { findThemeMode, getThemeModes, themeModeKeyOf } from "./modes.js";
3
4
  const themeSyncListeners = new Set();
@@ -48,9 +49,19 @@ function systemThemeKey(options = {}) {
48
49
  const registry = getThemeModes(options);
49
50
  return systemPrefersLight() ? registry.light : registry.dark;
50
51
  }
52
+ /**
53
+ * A view-transition switch commits the attribute from its callback, which the
54
+ * browser runs a frame later — so between `applyTheme()` and that commit the
55
+ * DOM still reads the old theme. `pendingTheme` holds the value already
56
+ * decided on, otherwise a second toggle click landing inside that window
57
+ * computes `nextTheme()` from the stale one and switches back.
58
+ */
59
+ let pendingTheme = "";
51
60
  function currentDomTheme(options = {}) {
52
61
  if (typeof document === "undefined")
53
62
  return "";
63
+ if (pendingTheme)
64
+ return pendingTheme;
54
65
  return normalizeTheme(document.documentElement.getAttribute(THEME_ATTR), options);
55
66
  }
56
67
  function getEffectiveTheme(value, options = {}) {
@@ -66,60 +77,120 @@ function dispatchThemeChange(theme, themeKey) {
66
77
  detail: { theme, themeKey },
67
78
  }));
68
79
  }
69
- let themeSwitchQuietTimer = null;
70
- let themeSwitchFallbackTimer = null;
80
+ const THEME_SWITCH_BUFFER_MS = 120;
81
+ const THEME_SWITCH_DEFAULT_MS = 240;
82
+ let themeSwitchTimer = null;
71
83
  function endThemeSwitch() {
84
+ if (typeof document === "undefined")
85
+ return;
72
86
  document.documentElement.removeAttribute(THEME_SWITCHING_ATTR);
73
- document.documentElement.removeEventListener("transitionend", onThemeSwitchTransitionEnd);
74
- if (themeSwitchQuietTimer)
75
- clearTimeout(themeSwitchQuietTimer);
76
- if (themeSwitchFallbackTimer)
77
- clearTimeout(themeSwitchFallbackTimer);
78
- themeSwitchQuietTimer = null;
79
- themeSwitchFallbackTimer = null;
80
- }
81
- function onThemeSwitchTransitionEnd() {
82
- if (themeSwitchQuietTimer)
83
- clearTimeout(themeSwitchQuietTimer);
84
- themeSwitchQuietTimer = setTimeout(endThemeSwitch, 50);
87
+ if (themeSwitchTimer)
88
+ clearTimeout(themeSwitchTimer);
89
+ themeSwitchTimer = null;
85
90
  }
86
91
  /**
87
- * Every element's own color/background/border transition (tuned for its own
88
- * hover/focus feedback) also fires when a CSS var it reads changes value on
89
- * theme switch — so without this, each element settles on its own local
90
- * duration and the switch looks staggered. `data-tbf-theme-switching`
91
- * forces one shared transition (see styles/utils/base.scss) for the
92
- * switch's duration, so every element moves together. Cleared on
93
- * `transitionend` (debounced, since many elements fire it) rather than a
94
- * fixed delay, so it stays correct if an app customizes the transition
95
- * duration; the fallback timer is just a safety net in case nothing
96
- * transitions at all (e.g. `prefers-reduced-motion`).
92
+ * Suppresses (`"instant"`) or unifies (`"uniform"`) per-element transitions
93
+ * for the length of a switch — see `styles/utils/base.scss`. The hold is a
94
+ * plain timer: a `transitionend` listener would receive one bubbled event per
95
+ * element per property, which on a real page is tens of thousands of events.
97
96
  */
98
- function beginThemeSwitch() {
97
+ function beginThemeSwitch(mode, holdMs) {
99
98
  if (typeof document === "undefined")
100
99
  return;
101
- document.documentElement.setAttribute(THEME_SWITCHING_ATTR, "true");
102
- document.documentElement.addEventListener("transitionend", onThemeSwitchTransitionEnd);
103
- if (themeSwitchQuietTimer)
104
- clearTimeout(themeSwitchQuietTimer);
105
- themeSwitchQuietTimer = setTimeout(endThemeSwitch, 50);
106
- if (themeSwitchFallbackTimer)
107
- clearTimeout(themeSwitchFallbackTimer);
108
- themeSwitchFallbackTimer = setTimeout(endThemeSwitch, 1000);
100
+ document.documentElement.setAttribute(THEME_SWITCHING_ATTR, mode);
101
+ if (themeSwitchTimer)
102
+ clearTimeout(themeSwitchTimer);
103
+ themeSwitchTimer = setTimeout(endThemeSwitch, holdMs);
109
104
  }
110
- function applyTheme(theme, options = {}) {
111
- if (typeof document === "undefined")
112
- return getEffectiveTheme(theme, options);
113
- const normalized = normalizeTheme(theme, options);
114
- const next = normalized || systemThemeKey(options);
115
- const previous = currentDomTheme(options);
116
- beginThemeSwitch();
105
+ function themeSwitchDurationMs() {
106
+ try {
107
+ const raw = getComputedStyle(document.documentElement)
108
+ .getPropertyValue(frontendCssVar("transition-normal"))
109
+ .trim();
110
+ if (raw.endsWith("ms"))
111
+ return Number.parseFloat(raw) || THEME_SWITCH_DEFAULT_MS;
112
+ if (raw.endsWith("s"))
113
+ return (Number.parseFloat(raw) || 0.24) * 1000;
114
+ }
115
+ catch {
116
+ // an unreadable token just means the default hold below
117
+ }
118
+ return THEME_SWITCH_DEFAULT_MS;
119
+ }
120
+ function prefersReducedMotion() {
121
+ try {
122
+ return Boolean(window.matchMedia?.("(prefers-reduced-motion: reduce)").matches);
123
+ }
124
+ catch {
125
+ return false;
126
+ }
127
+ }
128
+ function startViewTransition(run) {
129
+ const start = document.startViewTransition;
130
+ if (typeof start !== "function")
131
+ return null;
132
+ try {
133
+ return start.call(document, run);
134
+ }
135
+ catch {
136
+ return null;
137
+ }
138
+ }
139
+ function commitTheme(next, normalized, previous, options) {
140
+ pendingTheme = "";
117
141
  document.documentElement.setAttribute(THEME_ATTR, next);
118
142
  applyDeviceScheme();
119
143
  document.body?.setAttribute(THEME_ATTR, next);
120
144
  if (previous !== next)
121
145
  dispatchThemeChange(normalized, next);
122
146
  runThemeSync(document);
147
+ void options;
148
+ }
149
+ /**
150
+ * A theme switch changes the CSS vars every element reads at once, and the
151
+ * browser cannot tell that from a hover — so each element animated on its own
152
+ * locally tuned duration and the switch looked staggered. Animating them
153
+ * together instead is not the fix either: a page's worth of `background-color`
154
+ * /`box-shadow` transitions are main-thread paint work, which janks (and the
155
+ * stagger comes back, since paint lands in chunks) and still leaves out
156
+ * everything that has no transitionable property at all — gradients, images,
157
+ * native scrollbars.
158
+ *
159
+ * So the whole page cross-fades as a single compositor-driven animation via
160
+ * the View Transitions API, with per-element transitions suppressed
161
+ * underneath. That is uniform by construction: one animation, not thousands.
162
+ * Browsers without the API fall back to one shared duration for the
163
+ * color-affecting properties, which is the best a per-element approach can do.
164
+ */
165
+ function applyTheme(theme, options = {}) {
166
+ if (typeof document === "undefined")
167
+ return getEffectiveTheme(theme, options);
168
+ const normalized = normalizeTheme(theme, options);
169
+ const next = normalized || systemThemeKey(options);
170
+ const previous = currentDomTheme(options);
171
+ const commit = () => commitTheme(next, normalized, previous, options);
172
+ if (previous === next) {
173
+ commit();
174
+ return next;
175
+ }
176
+ const hold = themeSwitchDurationMs() + THEME_SWITCH_BUFFER_MS;
177
+ if (prefersReducedMotion()) {
178
+ beginThemeSwitch("instant", THEME_SWITCH_BUFFER_MS);
179
+ commit();
180
+ return next;
181
+ }
182
+ pendingTheme = next;
183
+ const transition = startViewTransition(() => {
184
+ beginThemeSwitch("instant", hold);
185
+ commit();
186
+ });
187
+ if (transition) {
188
+ void Promise.resolve(transition.finished).then(endThemeSwitch, endThemeSwitch);
189
+ return next;
190
+ }
191
+ pendingTheme = "";
192
+ beginThemeSwitch("uniform", hold);
193
+ commit();
123
194
  return next;
124
195
  }
125
196
  async function readPersistedTheme(adapter, options = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/theme/apply.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/theme/apply.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAmB1E,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAqB,CAAC;AAExD,SAAS,iBAAiB,CAAC,QAA2B;IACpD,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,YAAY,CAAC,OAAiB,QAAQ;IAC7C,kBAAkB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,UAA+B,EAAE;IACvE,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,kBAAkB;IACzB,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,+BAA+B,CAAC,CAAC,OAAO,CAAC,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,kBAAkB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACjD,CAAC;AAED,SAAS,iBAAiB;IACxB,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC;IACtD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAmB;IAC/C,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QAC7E,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,KAAK,GAA0B,IAAI,CAAC;IACxC,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,+BAA+B,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IACjC,KAAK,CAAC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7C,OAAO,GAAG,EAAE,CAAC,KAAK,EAAE,mBAAmB,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,cAAc,CAAC,UAA+B,EAAE;IACvD,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACxC,OAAO,kBAAkB,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC/D,CAAC;AAED;;;;;;GAMG;AACH,IAAI,YAAY,GAAe,EAAE,CAAC;AAElC,SAAS,eAAe,CAAC,UAA+B,EAAE;IACxD,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,EAAE,CAAC;IAC/C,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IACtC,OAAO,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAe,EAAE,UAA+B,EAAE;IAC3E,OAAO,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,WAAW,CAAC,GAAY,EAAE,UAA+B,EAAE;IAClE,OAAO,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,IAAI,OAAO,CAAC;AACxD,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAiB,EAAE,QAAoB;IAClE,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAC1C,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CAAC,kBAAkB,EAAE;QAChC,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;KAC9B,CAAC,CACH,CAAC;AACJ,CAAC;AAKD,MAAM,sBAAsB,GAAG,GAAG,CAAC;AACnC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC,IAAI,gBAAgB,GAAyC,IAAI,CAAC;AAElE,SAAS,cAAc;IACrB,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO;IAC5C,QAAQ,CAAC,eAAe,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;IAC/D,IAAI,gBAAgB;QAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC;IACrD,gBAAgB,GAAG,IAAI,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,IAAqB,EAAE,MAAc;IAC7D,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO;IAC5C,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IAClE,IAAI,gBAAgB;QAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC;IACrD,gBAAgB,GAAG,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,qBAAqB;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,eAAe,CAAC;aACrD,gBAAgB,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;aACrD,IAAI,EAAE,CAAC;QACR,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,uBAAuB,CAAC;QACjF,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,wDAAwD;IAC1D,CAAC;IACD,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAED,SAAS,oBAAoB;IAC3B,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,kCAAkC,CAAC,CAAC,OAAO,CAAC,CAAC;IAClF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAe;IAC1C,MAAM,KAAK,GACT,QAGD,CAAC,mBAAmB,CAAC;IACtB,IAAI,OAAO,KAAK,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,CAAC;QACH,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAClB,IAAgB,EAChB,UAAsB,EACtB,QAAoB,EACpB,OAA4B;IAE5B,YAAY,GAAG,EAAE,CAAC;IAClB,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACxD,iBAAiB,EAAE,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC9C,IAAI,QAAQ,KAAK,IAAI;QAAE,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC7D,YAAY,CAAC,QAAQ,CAAC,CAAC;IACvB,KAAK,OAAO,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,UAAU,CAAC,KAAiB,EAAE,UAA+B,EAAE;IACtE,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,UAAU,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEtE,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,qBAAqB,EAAE,GAAG,sBAAsB,CAAC;IAC9D,IAAI,oBAAoB,EAAE,EAAE,CAAC;QAC3B,gBAAgB,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;QACpD,MAAM,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IACD,YAAY,GAAG,IAAI,CAAC;IACpB,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,EAAE;QACxC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAClC,MAAM,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;IACH,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,YAAY,GAAG,EAAE,CAAC;IAClB,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAClC,MAAM,EAAE,CAAC;IACT,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,OAAiC,EACjC,UAA+B,EAAE;IAEjC,IAAI,CAAC,OAAO,EAAE,GAAG;QAAE,OAAO,EAAE,CAAC;IAC7B,IAAI,CAAC;QACH,OAAO,cAAc,CAAC,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,KAAiB,EAAE,UAA+B,EAAE;IAC1E,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAClD,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAChC,IAAI,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,OAAO,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,SAAS,CAAC,UAA+B,EAAE;IAClD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAClE,OAAO,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,WAAW,GACZ,CAAC"}
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  }
9
9
  },
10
10
  "name": "@trebired/frontend",
11
- "version": "12.12.4",
11
+ "version": "12.12.5",
12
12
  "description": "Generic browser runtime systems for Trebired frontend packages and applications.",
13
13
  "type": "module",
14
14
  "private": false,