@jjlmoya/utils-tabletop 1.28.0 → 1.29.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jjlmoya/utils-tabletop",
3
- "version": "1.28.0",
3
+ "version": "1.29.0",
4
4
  "type": "module",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",
@@ -2,19 +2,27 @@
2
2
  import './online-mus-scoreboard.css';
3
3
  import { musScoreboard } from './index';
4
4
  import type { KnownLocale } from '../../types';
5
+ import type { MusScoreboardUI } from './ui';
5
6
 
6
7
  interface Props {
8
+ ui?: MusScoreboardUI;
7
9
  locale?: KnownLocale;
8
10
  }
9
11
 
10
- const { locale = 'en' } = Astro.props as Props;
11
- const loader = musScoreboard.i18n[locale] || musScoreboard.i18n.en;
12
- const content = await loader?.();
13
- if (!content) return null;
14
- const { ui } = content;
12
+ const props = Astro.props as Props;
13
+ let ui = props.ui;
14
+
15
+ if (!ui) {
16
+ const locale = props.locale || 'en';
17
+ const loader = musScoreboard.i18n[locale] || musScoreboard.i18n.en;
18
+ const content = await loader?.();
19
+ ui = content?.ui;
20
+ }
21
+
22
+ if (!ui) return null;
15
23
  ---
16
24
 
17
- <div class="mus-scoreboard" data-mus-scoreboard>
25
+ <div class="mus-scoreboard" data-mus-scoreboard data-ui={JSON.stringify(ui)}>
18
26
  <div class="mus-board-card">
19
27
  <section class="mus-onboarding" aria-labelledby="mus-how-to-use">
20
28
  <div class="mus-onboarding-mark" aria-hidden="true">
@@ -24,7 +32,7 @@ const { ui } = content;
24
32
  <span></span>
25
33
  </div>
26
34
  <div>
27
- <p class="mus-kicker" id="mus-how-to-use">LIVE TABLE</p>
35
+ <p class="mus-kicker" id="mus-how-to-use">{ui.liveMatch}</p>
28
36
  <p class="mus-onboarding-copy">{ui.onboarding}</p>
29
37
  </div>
30
38
  </section>
@@ -32,7 +40,7 @@ const { ui } = content;
32
40
  <form class="mus-config" data-config-form>
33
41
  <div class="mus-config-heading">
34
42
  <div>
35
- <p class="mus-kicker">SET THE TABLE</p>
43
+ <p class="mus-kicker">{ui.matchSettings}</p>
36
44
  <h2>{ui.matchSettings}</h2>
37
45
  </div>
38
46
  <span class="mus-rule-seal" aria-hidden="true">MUS</span>
@@ -160,10 +168,12 @@ const { ui } = content;
160
168
  </div>
161
169
  </div>
162
170
 
163
- <script type="application/json" data-mus-ui set:html={JSON.stringify(ui)}></script>
164
171
  <script>
165
172
  import { mountMusScoreboard } from './controller';
173
+
166
174
  const root = document.querySelector<HTMLElement>('[data-mus-scoreboard]');
167
- const uiNode = document.querySelector<HTMLScriptElement>('[data-mus-ui]');
168
- if (root && uiNode) mountMusScoreboard(root, JSON.parse(uiNode.textContent || '{}'));
175
+ if (root) {
176
+ const ui = JSON.parse(root.dataset.ui || '{}');
177
+ mountMusScoreboard(root, ui);
178
+ }
169
179
  </script>