genshin-interface 4.3.2 → 4.4.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/dist/index.js CHANGED
@@ -1,20 +1,20 @@
1
- import { ASCENSION_PHASE_COUNT, CHECK_MARK_PATH, CONSTELLATION_NODE_PLACES, COOKING_ARC_CENTRE_X, COOKING_ARC_CENTRE_Y, COOKING_ARC_RADIUS_X, COOKING_ARC_RADIUS_Y, FIXTURE_VARIANT_SEPARATOR, GAME_CANVAS_INSET, GAME_CANVAS_RECT, GAME_CANVAS_UNIT, GAME_CREAM, GAME_CURSOR, GAME_FONT_FAMILY, GAME_GOLD, GAME_INK, GAME_REPLY_HOVER, GAME_REPLY_HOVER_INK, GAME_REPLY_REST, GAME_ROW_HOVER, GAME_ROW_PRESS, GAME_SMOOTHSTEP_EASING, GAME_UNIT, GAME_WHITE, INTERACTION_HOVER_MS, INTERACTION_KEY_LABEL, INTERACTION_PILL_REST_MS, INTERACTION_PRESS_MS, INTERACTION_REST_MS, MOBILE_INTERFACE_SCALE, ORNAMENT_END_PATH, ORNAMENT_MIDDLE_PATH, SERVER_MARK_DIAMOND_PATH, SERVER_MARK_TICK_PATH, SETTINGS_RING_CENTRE, SETTINGS_RING_RADIUS, SETTINGS_RING_WIDTH } from "./constants.js";
2
- import { i as ItemCategory, n as BannerKinds, r as ItemCategories, t as BannerKind } from "./save-B6F3omOa.js";
3
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeModels, nextTick, normalizeClass, normalizeStyle, openBlock, ref, renderList, renderSlot, toDisplayString, unref, useCssVars, useModel, useTemplateRef, vModelSelect, vModelText, watch, withCtx, withDirectives, withModifiers } from "vue";
4
- //#region \0/plugin-vue/export-helper
1
+ import { i as ItemCategory, n as BannerKinds, r as ItemCategories, t as BannerKind } from "./save-BiDzTOKp.js";
2
+ import { APPROVE_ENVIRONMENT_VARIABLE, ASCENSION_PHASE_COUNT, BACK_ARROW_PATH, CHECK_MARK_PATH, CONSTELLATION_NODE_PLACES, COOKING_ARC_CENTRE_X, COOKING_ARC_CENTRE_Y, COOKING_ARC_RADIUS_X, COOKING_ZONE_RADIUS_Y, FIXTURE_IMAGE_NAME, FIXTURE_VARIANT_SEPARATOR, GAME_BACKDROP_BLUR, GAME_BACKDROP_KEEP, GAME_BACKDROP_WASH, GAME_CANVAS_INSET, GAME_CANVAS_RECT, GAME_CANVAS_UNIT, GAME_CREAM, GAME_CURSOR, GAME_DIALOGUE_GOLD, GAME_FONT_FAMILY, GAME_GOLD, GAME_INK, GAME_LIT_GOLD, GAME_LIT_GOLD_LABEL, GAME_REPLY_HOVER, GAME_REPLY_HOVER_INK, GAME_REPLY_REST, GAME_ROW_HOVER, GAME_ROW_PRESS, GAME_SMOOTHSTEP_EASING, GAME_UNIT, GAME_WHITE, INTERACTION_HOVER_MS, INTERACTION_KEY_LABEL, INTERACTION_PILL_REST_MS, INTERACTION_PRESS_MS, INTERACTION_REST_MS, MISMATCH_DETAIL_REGEX, MISMATCH_MESSAGE, MISMATCH_RATIO_BAR, MISSING_IMAGE_MESSAGE, MOBILE_INTERFACE_SCALE, ORNAMENT_END_PATH, ORNAMENT_MIDDLE_PATH, ROLE_FLOURISH_PATH, SERVER_MARK_DIAMOND_PATH, SERVER_MARK_TICK_PATH, SETTINGS_RING_CENTRE, SETTINGS_RING_RADIUS, SETTINGS_RING_WIDTH } from "./constants.js";
3
+ import { getFixtureImageName } from "./getFixtureImageName.js";
4
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createStaticVNode, createTextVNode, createVNode, defineComponent, mergeModels, nextTick, normalizeClass, normalizeStyle, openBlock, ref, renderList, renderSlot, toDisplayString, unref, useCssVars, useModel, useTemplateRef, vModelSelect, vModelText, watch, withCtx, withDirectives, withModifiers } from "vue";
5
+ // \0/plugin-vue/export-helper
5
6
  var export_helper_default = (sfc, props) => {
6
7
  const target = sfc.__vccOpts || sfc;
7
8
  for (const [key, val] of props) target[key] = val;
8
9
  return target;
9
10
  };
10
- //#endregion
11
- //#region src/components/GameButton/Index.vue
12
- const _hoisted_1$40 = ["data-kind"];
13
- const _hoisted_2$32 = {
11
+ // src/components/GameButton/Index.vue
12
+ const _hoisted_1$41 = ["data-kind"];
13
+ const _hoisted_2$33 = {
14
14
  key: 0,
15
15
  class: "tip"
16
16
  };
17
- var Index_default$16 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
17
+ var Index_default$17 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
18
18
  __name: "Index",
19
19
  props: {
20
20
  kind: {},
@@ -22,19 +22,21 @@ var Index_default$16 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
22
22
  },
23
23
  setup(__props, { expose: __expose }) {
24
24
  useCssVars((_ctx) => ({
25
- "v8de8a9a0": restDuration,
26
- "v4f7d0248": hoverDuration,
27
- "v5ff883e5": unref(GAME_GOLD),
28
- "c23e4506": unref(GAME_CREAM),
29
- "v7defe8be": unref(GAME_INK),
30
- "v78a9c41c": unref(GAME_ROW_HOVER),
31
- "v77c60e0e": unref(GAME_ROW_PRESS),
32
- "v7a0541ee": pillRestDuration,
33
- "v307a3362": pressDuration,
34
- "v0673242b": unref(GAME_SMOOTHSTEP_EASING),
35
- "v40afb3ee": unref(GAME_REPLY_REST),
36
- "v5683177c": unref(GAME_REPLY_HOVER),
37
- "a79a636e": unref(GAME_REPLY_HOVER_INK)
25
+ "v4bc79f66": restDuration,
26
+ "v143f94d2": hoverDuration,
27
+ "d7a42922": unref(GAME_GOLD),
28
+ "v1d4f319a": unref(GAME_CREAM),
29
+ "v70228ad7": unref(GAME_INK),
30
+ "d18a46b0": unref(GAME_ROW_HOVER),
31
+ "d0a690a2": unref(GAME_ROW_PRESS),
32
+ "v1ccf6f82": pillRestDuration,
33
+ "a6f50e4e": pressDuration,
34
+ "v0e0bcce1": unref(GAME_SMOOTHSTEP_EASING),
35
+ "f6bc5e92": unref(GAME_LIT_GOLD),
36
+ "v4f04154c": unref(GAME_LIT_GOLD_LABEL),
37
+ "v41d06810": unref(GAME_REPLY_REST),
38
+ "v03595d78": unref(GAME_REPLY_HOVER),
39
+ "v57aba702": unref(GAME_REPLY_HOVER_INK)
38
40
  }));
39
41
  const button = useTemplateRef("button");
40
42
  const hoverDuration = `50ms`;
@@ -43,21 +45,20 @@ var Index_default$16 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
43
45
  const pressDuration = `167ms`;
44
46
  __expose({ focus: () => button.value?.focus() });
45
47
  return (_ctx, _cache) => {
46
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" One of the game's buttons, placed by its parent, in its kind's look for each state: at rest, hovered (or focused\n From the keyboard, which the game draws as a hover), pressed and disabled. The look is the button's own, and its content\n Takes the colour it sets "), createElementVNode("button", {
48
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" One of the game's buttons, placed by its parent, in its kind's look for each state: at rest, hovered (or focused\n From the keyboard, which the game draws as a hover), pressed and disabled. Only a Disc draws a disabled look: the\n Other kinds look the same enabled or disabled. The look is the button's own, and its content Takes the colour it sets "), createElementVNode("button", {
47
49
  ref_key: "button",
48
50
  ref: button,
49
51
  class: "game-button",
50
52
  "data-kind": __props.kind,
51
53
  type: "button"
52
- }, [renderSlot(_ctx.$slots, "default"), __props.tip ? (openBlock(), createElementBlock("span", _hoisted_2$32, toDisplayString(__props.tip), 1)) : createCommentVNode("v-if", true)], 8, _hoisted_1$40)], 2112);
54
+ }, [renderSlot(_ctx.$slots, "default"), __props.tip ? (openBlock(), createElementBlock("span", _hoisted_2$33, toDisplayString(__props.tip), 1)) : createCommentVNode("v-if", true)], 8, _hoisted_1$41)], 2112);
53
55
  };
54
56
  }
55
- }), [["__scopeId", "data-v-cab29bfa"]]);
56
- //#endregion
57
- //#region src/components/PickerShell/Index.vue
58
- const _hoisted_1$39 = ["aria-label"];
59
- const _hoisted_2$31 = { class: "title" };
60
- var Index_default$24 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
57
+ }), [["__scopeId", "data-v-3683b183"]]);
58
+ // src/components/PickerShell/Index.vue
59
+ const _hoisted_1$40 = ["aria-label"];
60
+ const _hoisted_2$32 = { class: "title" };
61
+ var Index_default$25 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
61
62
  __name: "Index",
62
63
  props: { title: {} },
63
64
  setup(__props) {
@@ -67,24 +68,24 @@ var Index_default$24 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
67
68
  role: "dialog",
68
69
  "aria-modal": "true",
69
70
  "aria-label": __props.title
70
- }, [createElementVNode("p", _hoisted_2$31, toDisplayString(__props.title), 1), renderSlot(_ctx.$slots, "default", {}, void 0, true)], 8, _hoisted_1$39);
71
+ }, [createElementVNode("p", _hoisted_2$32, toDisplayString(__props.title), 1), renderSlot(_ctx.$slots, "default", {}, void 0, true)], 8, _hoisted_1$40);
71
72
  };
72
73
  }
73
74
  }), [["__scopeId", "data-v-6f193621"]]);
74
- //#endregion
75
- //#region src/models/GameButtonKind.ts
75
+ // src/models/GameButtonKind.ts
76
76
  let GameButtonKind = /* @__PURE__ */ function(GameButtonKind) {
77
+ GameButtonKind["Choice"] = "Choice";
77
78
  GameButtonKind["Disc"] = "Disc";
79
+ GameButtonKind["Gold"] = "Gold";
78
80
  GameButtonKind["Pill"] = "Pill";
79
81
  GameButtonKind["Plain"] = "Plain";
80
82
  GameButtonKind["Reply"] = "Reply";
81
83
  GameButtonKind["Row"] = "Row";
82
84
  return GameButtonKind;
83
85
  }({});
84
- //#endregion
85
- //#region src/components/ArtifactEnhancePicker/Index.vue
86
- const _hoisted_1$38 = { class: "summary" };
87
- const _hoisted_2$30 = { class: "level" };
86
+ // src/components/ArtifactEnhancePicker/Index.vue
87
+ const _hoisted_1$39 = { class: "summary" };
88
+ const _hoisted_2$31 = { class: "level" };
88
89
  const _hoisted_3$28 = { class: "mora" };
89
90
  const _hoisted_4$24 = {
90
91
  key: 0,
@@ -96,12 +97,12 @@ const _hoisted_6$21 = [
96
97
  "data-rarity",
97
98
  "onClick"
98
99
  ];
99
- const _hoisted_7$21 = { class: "name" };
100
+ const _hoisted_7$19 = { class: "name" };
100
101
  const _hoisted_8$16 = { class: "caption" };
101
- const _hoisted_9$14 = { class: "materials" };
102
- const _hoisted_10$13 = { class: "name" };
103
- const _hoisted_11$9 = { class: "count" };
104
- const _hoisted_12$9 = { class: "actions" };
102
+ const _hoisted_9$15 = { class: "materials" };
103
+ const _hoisted_10$14 = { class: "name" };
104
+ const _hoisted_11$13 = { class: "count" };
105
+ const _hoisted_12$11 = { class: "actions" };
105
106
  var Index_default = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
106
107
  __name: "Index",
107
108
  props: {
@@ -127,12 +128,12 @@ var Index_default = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineCo
127
128
  setup(__props, { emit: __emit }) {
128
129
  const emit = __emit;
129
130
  return (_ctx, _cache) => {
130
- return openBlock(), createBlock(Index_default$24, {
131
+ return openBlock(), createBlock(Index_default$25, {
131
132
  class: "enhance-picker",
132
133
  title: __props.title
133
134
  }, {
134
135
  default: withCtx(() => [
135
- createElementVNode("p", _hoisted_1$38, [createElementVNode("span", _hoisted_2$30, toDisplayString(__props.levelLabel), 1), createElementVNode("span", _hoisted_3$28, toDisplayString(__props.moraLabel) + " " + toDisplayString(__props.moraCost), 1)]),
136
+ createElementVNode("p", _hoisted_1$39, [createElementVNode("span", _hoisted_2$31, toDisplayString(__props.levelLabel), 1), createElementVNode("span", _hoisted_3$28, toDisplayString(__props.moraLabel) + " " + toDisplayString(__props.moraCost), 1)]),
136
137
  __props.notice ? (openBlock(), createElementBlock("p", _hoisted_4$24, toDisplayString(__props.notice), 1)) : createCommentVNode("v-if", true),
137
138
  createElementVNode("ul", _hoisted_5$22, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.fodders, ({ caption, id, isSelected, name, rarity }) => {
138
139
  return openBlock(), createElementBlock("li", { key: id }, [createElementVNode("button", {
@@ -141,18 +142,19 @@ var Index_default = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineCo
141
142
  "data-rarity": rarity,
142
143
  type: "button",
143
144
  onClick: ($event) => emit("fodder", id)
144
- }, [createElementVNode("span", _hoisted_7$21, toDisplayString(name), 1), createElementVNode("span", _hoisted_8$16, toDisplayString(caption), 1)], 8, _hoisted_6$21)]);
145
+ }, [createElementVNode("span", _hoisted_7$19, toDisplayString(name), 1), createElementVNode("span", _hoisted_8$16, toDisplayString(caption), 1)], 8, _hoisted_6$21)]);
145
146
  }), 128))]),
146
- createElementVNode("ul", _hoisted_9$14, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.materials, ({ count, id, name, selectedCount }) => {
147
+ createElementVNode("ul", _hoisted_9$15, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.materials, ({ count, id, name, selectedCount }) => {
147
148
  return openBlock(), createElementBlock("li", {
148
149
  key: id,
149
150
  class: "material"
150
151
  }, [
151
- createElementVNode("span", _hoisted_10$13, toDisplayString(name), 1),
152
- createElementVNode("span", _hoisted_11$9, toDisplayString(selectedCount) + "/" + toDisplayString(count), 1),
153
- createVNode(Index_default$16, {
152
+ createElementVNode("span", _hoisted_10$14, toDisplayString(name), 1),
153
+ createElementVNode("span", _hoisted_11$13, toDisplayString(selectedCount) + "/" + toDisplayString(count), 1),
154
+ createVNode(Index_default$17, {
154
155
  disabled: selectedCount <= 0,
155
156
  kind: unref(GameButtonKind).Pill,
157
+ tip: "",
156
158
  onClick: ($event) => emit("material", id, -1)
157
159
  }, {
158
160
  default: withCtx(() => [..._cache[3] || (_cache[3] = [createTextVNode(" - ", -1)])]),
@@ -162,9 +164,10 @@ var Index_default = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineCo
162
164
  "kind",
163
165
  "onClick"
164
166
  ]),
165
- createVNode(Index_default$16, {
167
+ createVNode(Index_default$17, {
166
168
  disabled: selectedCount >= count,
167
169
  kind: unref(GameButtonKind).Pill,
170
+ tip: "",
168
171
  onClick: ($event) => emit("material", id, 1)
169
172
  }, {
170
173
  default: withCtx(() => [..._cache[4] || (_cache[4] = [createTextVNode(" + ", -1)])]),
@@ -176,24 +179,27 @@ var Index_default = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineCo
176
179
  ])
177
180
  ]);
178
181
  }), 128))]),
179
- createElementVNode("div", _hoisted_12$9, [
180
- createVNode(Index_default$16, {
182
+ createElementVNode("div", _hoisted_12$11, [
183
+ createVNode(Index_default$17, {
181
184
  kind: unref(GameButtonKind).Pill,
185
+ tip: "",
182
186
  onClick: _cache[0] || (_cache[0] = ($event) => emit("autoAdd"))
183
187
  }, {
184
188
  default: withCtx(() => [createTextVNode(toDisplayString(__props.autoAddLabel), 1)]),
185
189
  _: 1
186
190
  }, 8, ["kind"]),
187
- createVNode(Index_default$16, {
191
+ createVNode(Index_default$17, {
188
192
  kind: unref(GameButtonKind).Pill,
193
+ tip: "",
189
194
  onClick: _cache[1] || (_cache[1] = ($event) => emit("cancel"))
190
195
  }, {
191
196
  default: withCtx(() => [createTextVNode(toDisplayString(__props.cancelLabel), 1)]),
192
197
  _: 1
193
198
  }, 8, ["kind"]),
194
- createVNode(Index_default$16, {
199
+ createVNode(Index_default$17, {
195
200
  disabled: __props.isConfirmDisabled,
196
201
  kind: unref(GameButtonKind).Pill,
202
+ tip: "",
197
203
  onClick: _cache[2] || (_cache[2] = ($event) => emit("confirm"))
198
204
  }, {
199
205
  default: withCtx(() => [createTextVNode(toDisplayString(__props.confirmLabel), 1)]),
@@ -205,11 +211,10 @@ var Index_default = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineCo
205
211
  }, 8, ["title"]);
206
212
  };
207
213
  }
208
- }), [["__scopeId", "data-v-7c672712"]]);
209
- //#endregion
210
- //#region src/components/ArtifactPicker/Index.vue
211
- const _hoisted_1$37 = { class: "options" };
212
- const _hoisted_2$29 = ["data-rarity", "onClick"];
214
+ }), [["__scopeId", "data-v-f430d654"]]);
215
+ // src/components/ArtifactPicker/Index.vue
216
+ const _hoisted_1$38 = { class: "options" };
217
+ const _hoisted_2$30 = ["data-rarity", "onClick"];
213
218
  const _hoisted_3$27 = { class: "name" };
214
219
  const _hoisted_4$23 = { class: "caption" };
215
220
  var Index_default$1 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
@@ -223,20 +228,21 @@ var Index_default$1 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
223
228
  setup(__props, { emit: __emit }) {
224
229
  const emit = __emit;
225
230
  return (_ctx, _cache) => {
226
- return openBlock(), createBlock(Index_default$24, {
231
+ return openBlock(), createBlock(Index_default$25, {
227
232
  class: "artifact-picker",
228
233
  title: __props.title
229
234
  }, {
230
- default: withCtx(() => [createElementVNode("ul", _hoisted_1$37, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, ({ caption, id, name, rarity }) => {
235
+ default: withCtx(() => [createElementVNode("ul", _hoisted_1$38, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, ({ caption, id, name, rarity }) => {
231
236
  return openBlock(), createElementBlock("li", { key: id }, [createElementVNode("button", {
232
237
  class: "option",
233
238
  "data-rarity": rarity,
234
239
  type: "button",
235
240
  onClick: ($event) => emit("choose", id)
236
- }, [createElementVNode("span", _hoisted_3$27, toDisplayString(name), 1), createElementVNode("span", _hoisted_4$23, toDisplayString(caption), 1)], 8, _hoisted_2$29)]);
237
- }), 128))]), createVNode(Index_default$16, {
241
+ }, [createElementVNode("span", _hoisted_3$27, toDisplayString(name), 1), createElementVNode("span", _hoisted_4$23, toDisplayString(caption), 1)], 8, _hoisted_2$30)]);
242
+ }), 128))]), createVNode(Index_default$17, {
238
243
  class: "close",
239
244
  kind: unref(GameButtonKind).Pill,
245
+ tip: "",
240
246
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
241
247
  }, {
242
248
  default: withCtx(() => [createTextVNode(toDisplayString(__props.closeLabel), 1)]),
@@ -246,28 +252,77 @@ var Index_default$1 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
246
252
  }, 8, ["title"]);
247
253
  };
248
254
  }
249
- }), [["__scopeId", "data-v-bf242b3e"]]);
250
- //#endregion
251
- //#region src/components/BlessingScreen/Index.vue
255
+ }), [["__scopeId", "data-v-a016439d"]]);
256
+ // src/models/CloseButtonMark.ts
257
+ let CloseButtonMark = /* @__PURE__ */ function(CloseButtonMark) {
258
+ CloseButtonMark["Back"] = "Back";
259
+ CloseButtonMark["Cross"] = "Cross";
260
+ return CloseButtonMark;
261
+ }({});
262
+ // src/services/CloseButtonMarkGlyphMap.ts
263
+ const CloseButtonMarkGlyphMap = {
264
+ ["Back"]: {
265
+ path: "M15.63 1.75l0.38 0.38v2.75l-0.25 0.25v2l0.88 0.88 4.5 0.25 2.75 1h1l0.5 0.5 1.75 0.75 2.13 1.88 1.25 1.75 0.75 2.25 0.75 0.75v5.38q-0.67-0.28-0.5 0.38l-0.75 1.75-2.87 3.38q-1.060.19-1.5 1l-2.75 1.25-2 0.25-0.25 0.25h-1.25q-0.37-0.25 0.25-0.5h0.5l1-1 1-0.25 1.5-1.25h0.38q-0.12-0.72 0.63-1 0.560.19 0.38-0.37l0.5-0.5 0.25-1.25 0.5-0.75q-0.17-1.04 0.25-1.5l-0.25-0.25q0.21-1.21-0.25-1.75l-2.12-2.37h-0.75l-1-0.75h-0.75l-1.25-0.5h-3.5l-1.62 0.88-0.25 1.25 0.25 0.25v2.25q0.56 0.31 0.25 1.5l-0.62 0.38-3.5-3.25-2-1.25-1.5-1.5-6.62-3.62v-0.5q0.63-0.25 0.5-0.87l0.88-0.25 1.5-1 1.25-1.25 1.5-0.75 2.88-2.37q-0.19-0.56 0.38-0.37l5-4.5z",
266
+ viewBox: "-13 -13 58 58"
267
+ },
268
+ ["Cross"]: {
269
+ path: "M22.25 20l-1 .75v2.5l.25.25.25 3.25.25.25v1.25l.25.5q1 .25 1.75-.5h1.25l1.5 1.25q.5-.25.25.5h.5l3.5 3.75v1l-4 4-1.75 1.25h-1.25q-.75-.75-1.75-.5l-.25.75-.25 3-.25.25v1.5l-.25.25v2.5l1 .5q1 .25 1.5-.25h3l.25-.25h2l.75-.5q.25-1.5-.5-1.75v-1l1.5-1.75 4.5-4.25h.5l1 1q.5-.25.25.5l.75.25.25.75.75.25v.5l2.5 2.75v1l-.5 1v.75l1 .5h2l.25.25h3.75l.25.25q1.25.25 1.5-.5l-.25-3.75-.25-.25v-2l-.25-.25v-1.25l-.25-.75h-1l-1 .75-1-.25-.5-.75-.75-.25-4.5-4.25v-1l6-5.75h.75l1 .75h1q-.25-.75.25-.75v-1l.25-.25.25-4.25.25-.25q.5-1.75-.5-2.25h-1.75l-.25.25h-2.75l-.25.25h-2.5l-.75.75v.75l.5 1v1l-2.25 2.75-.5.25-.5.75-2.25 2h-.75l-4.25-4-.75-1v-.5l-.75-.25v-.75l.5-1v-1l-.75-.75h-1.5l-.25-.25h-3.5q-.5-.5-1.5-.25z",
270
+ viewBox: "6 5 58 58"
271
+ }
272
+ };
273
+ // src/components/CloseButton/Index.vue
274
+ const _hoisted_1$37 = ["aria-label"];
275
+ const _hoisted_2$29 = ["viewBox"];
276
+ const _hoisted_3$26 = ["d"];
277
+ var Index_default$10 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
278
+ __name: "Index",
279
+ props: {
280
+ label: {},
281
+ mark: {}
282
+ },
283
+ setup(__props) {
284
+ return (_ctx, _cache) => {
285
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The way out of a screen: a disc 58 units across at its top right, its fill and ring left to the screen that places\n it, and the mark its glyph draws over them in the same units. The ring is an inset shadow, not a border, so the\n mark's box is the disc's "), createElementVNode("button", {
286
+ class: "close-button",
287
+ "aria-label": __props.label,
288
+ type: "button"
289
+ }, [(openBlock(), createElementBlock("svg", {
290
+ class: "mark",
291
+ viewBox: unref(CloseButtonMarkGlyphMap)[__props.mark].viewBox,
292
+ "aria-hidden": "true"
293
+ }, [createElementVNode("path", { d: unref(CloseButtonMarkGlyphMap)[__props.mark].path }, null, 8, _hoisted_3$26)], 8, _hoisted_2$29))], 8, _hoisted_1$37)], 2112);
294
+ };
295
+ }
296
+ }), [["__scopeId", "data-v-715f32e8"]]);
297
+ // src/components/BlessingScreen/Index.vue
252
298
  const _hoisted_1$36 = { class: "blessing-screen" };
253
299
  const _hoisted_2$28 = { class: "title" };
254
- const _hoisted_3$26 = { class: "pool" };
255
- const _hoisted_4$22 = { class: "members" };
256
- const _hoisted_5$21 = ["onClick"];
257
- const _hoisted_6$20 = { class: "name" };
258
- const _hoisted_7$20 = { class: "health" };
300
+ const _hoisted_3$25 = { class: "pool" };
301
+ const _hoisted_4$22 = { class: "auto-recover" };
302
+ const _hoisted_5$21 = ["aria-pressed"];
303
+ const _hoisted_6$20 = { class: "threshold" };
304
+ const _hoisted_7$18 = { class: "members" };
305
+ const _hoisted_8$15 = ["onClick"];
306
+ const _hoisted_9$14 = { class: "name" };
307
+ const _hoisted_10$13 = { class: "health" };
259
308
  var Index_default$2 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
260
309
  __name: "Index",
261
310
  props: {
311
+ autoRecoverTitle: {},
312
+ closeLabel: {},
313
+ isAutoRecoverOn: { type: Boolean },
262
314
  members: {},
263
315
  poolAmount: {},
264
316
  poolMaximum: {},
317
+ thresholdPercent: {},
265
318
  title: {},
266
319
  worshipTitle: {}
267
320
  },
268
321
  emits: [
269
322
  "close",
270
323
  "heal",
324
+ "stepThreshold",
325
+ "toggleAutoRecover",
271
326
  "worship"
272
327
  ],
273
328
  setup(__props, { emit: __emit }) {
@@ -275,29 +330,48 @@ var Index_default$2 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
275
330
  return (_ctx, _cache) => {
276
331
  return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The layout is provisional until the recording of the Blessing screen shows it "), createElementVNode("div", _hoisted_1$36, [
277
332
  createElementVNode("h1", _hoisted_2$28, toDisplayString(__props.title), 1),
278
- createElementVNode("button", {
333
+ createVNode(Index_default$10, {
279
334
  class: "close",
280
- type: "button",
335
+ label: __props.closeLabel,
336
+ mark: unref(CloseButtonMark).Cross,
281
337
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
282
- }, "×"),
338
+ }, null, 8, ["label", "mark"]),
283
339
  createElementVNode("button", {
284
340
  class: "worship",
285
341
  type: "button",
286
342
  onClick: _cache[1] || (_cache[1] = ($event) => emit("worship"))
287
343
  }, toDisplayString(__props.worshipTitle), 1),
288
- createElementVNode("p", _hoisted_3$26, toDisplayString(Math.floor(__props.poolAmount)) + " / " + toDisplayString(__props.poolMaximum), 1),
289
- createElementVNode("ul", _hoisted_4$22, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.members, ({ healthShare, id, name }) => {
344
+ createElementVNode("p", _hoisted_3$25, toDisplayString(Math.floor(__props.poolAmount)) + " / " + toDisplayString(__props.poolMaximum), 1),
345
+ createElementVNode("div", _hoisted_4$22, [
346
+ createElementVNode("button", {
347
+ class: "switch",
348
+ type: "button",
349
+ "aria-pressed": __props.isAutoRecoverOn,
350
+ onClick: _cache[2] || (_cache[2] = ($event) => emit("toggleAutoRecover"))
351
+ }, toDisplayString(__props.autoRecoverTitle), 9, _hoisted_5$21),
352
+ createElementVNode("button", {
353
+ type: "button",
354
+ "aria-label": "Lower the threshold",
355
+ onClick: _cache[3] || (_cache[3] = ($event) => emit("stepThreshold", -1))
356
+ }, "-"),
357
+ createElementVNode("span", _hoisted_6$20, toDisplayString(__props.thresholdPercent) + "%", 1),
358
+ createElementVNode("button", {
359
+ type: "button",
360
+ "aria-label": "Raise the threshold",
361
+ onClick: _cache[4] || (_cache[4] = ($event) => emit("stepThreshold", 1))
362
+ }, "+")
363
+ ]),
364
+ createElementVNode("ul", _hoisted_7$18, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.members, ({ healthShare, id, name }) => {
290
365
  return openBlock(), createElementBlock("li", { key: id }, [createElementVNode("button", {
291
366
  type: "button",
292
367
  onClick: ($event) => emit("heal", id)
293
- }, [createElementVNode("span", _hoisted_6$20, toDisplayString(name), 1), createElementVNode("span", _hoisted_7$20, toDisplayString(Math.round(healthShare * 100)) + "%", 1)], 8, _hoisted_5$21)]);
368
+ }, [createElementVNode("span", _hoisted_9$14, toDisplayString(name), 1), createElementVNode("span", _hoisted_10$13, toDisplayString(Math.round(healthShare * 100)) + "%", 1)], 8, _hoisted_8$15)]);
294
369
  }), 128))])
295
370
  ])], 2112);
296
371
  };
297
372
  }
298
- }), [["__scopeId", "data-v-4c1e529d"]]);
299
- //#endregion
300
- //#region src/models/CharacterMenuTab.ts
373
+ }), [["__scopeId", "data-v-4b0256bb"]]);
374
+ // src/models/CharacterMenuTab.ts
301
375
  let CharacterMenuTab = /* @__PURE__ */ function(CharacterMenuTab) {
302
376
  CharacterMenuTab["Artifacts"] = "Artifacts";
303
377
  CharacterMenuTab["Attributes"] = "Attributes";
@@ -315,11 +389,10 @@ const CharacterMenuTabs = [
315
389
  "Talents",
316
390
  "Profile"
317
391
  ];
318
- //#endregion
319
- //#region src/components/CharacterMenu/Index.vue
392
+ // src/components/CharacterMenu/Index.vue
320
393
  const _hoisted_1$35 = ["data-tab"];
321
394
  const _hoisted_2$27 = { class: "characters" };
322
- const _hoisted_3$25 = ["aria-pressed", "onClick"];
395
+ const _hoisted_3$24 = ["aria-pressed", "onClick"];
323
396
  const _hoisted_4$21 = { class: "breadcrumb" };
324
397
  const _hoisted_5$20 = {
325
398
  key: 0,
@@ -328,15 +401,27 @@ const _hoisted_5$20 = {
328
401
  "aria-hidden": "true"
329
402
  };
330
403
  const _hoisted_6$19 = ["d"];
331
- const _hoisted_7$19 = { class: "tabs" };
332
- const _hoisted_8$15 = ["aria-pressed", "onClick"];
333
- const _hoisted_9$13 = ["aria-label"];
334
- const _hoisted_10$12 = ["aria-label", "onClick"];
404
+ const _hoisted_7$17 = {
405
+ key: 1,
406
+ class: "tab-keys",
407
+ "aria-hidden": "true"
408
+ };
409
+ const _hoisted_8$14 = {
410
+ key: 2,
411
+ class: "character-keys",
412
+ "aria-hidden": "true"
413
+ };
414
+ const _hoisted_9$13 = { class: "tabs" };
415
+ const _hoisted_10$12 = ["aria-pressed", "onClick"];
416
+ const _hoisted_11$12 = ["aria-label"];
417
+ const _hoisted_12$10 = ["aria-label", "onClick"];
335
418
  var Index_default$3 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
336
419
  __name: "Index",
337
420
  props: /*@__PURE__*/ mergeModels({
338
421
  characters: {},
339
422
  elementMarkPath: {},
423
+ elementName: {},
424
+ isTouch: { type: Boolean },
340
425
  tabLabels: {}
341
426
  }, {
342
427
  "characterId": { required: true },
@@ -349,6 +434,7 @@ var Index_default$3 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
349
434
  const characterId = useModel(__props, "characterId");
350
435
  const tab = useModel(__props, "tab");
351
436
  const characterName = computed(() => __props.characters.find(({ id }) => id === characterId.value)?.name ?? "");
437
+ const breadcrumb = computed(() => __props.elementName ? `${__props.elementName} / ${characterName.value}` : characterName.value);
352
438
  const steps = computed(() => {
353
439
  const index = __props.characters.findIndex(({ id }) => id === characterId.value);
354
440
  const getStep = (step) => __props.characters[(index + step + __props.characters.length) % __props.characters.length];
@@ -365,42 +451,46 @@ var Index_default$3 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
365
451
  class: "character-menu",
366
452
  "data-tab": tab.value
367
453
  }, [
368
- _cache[1] || (_cache[1] = createElementVNode("div", { class: "head" }, null, -1)),
454
+ _cache[4] || (_cache[4] = createElementVNode("div", { class: "head" }, null, -1)),
369
455
  createElementVNode("ul", _hoisted_2$27, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.characters, ({ id, name }) => {
370
456
  return openBlock(), createElementBlock("li", { key: id }, [createElementVNode("button", {
371
457
  class: "character",
372
458
  "aria-pressed": id === characterId.value,
373
459
  type: "button",
374
460
  onClick: ($event) => characterId.value = id
375
- }, toDisplayString(name), 9, _hoisted_3$25)]);
461
+ }, toDisplayString(name), 9, _hoisted_3$24)]);
376
462
  }), 128))]),
377
- createElementVNode("p", _hoisted_4$21, toDisplayString(characterName.value), 1),
378
- __props.elementMarkPath ? (openBlock(), createElementBlock("svg", _hoisted_5$20, [createElementVNode("path", { d: __props.elementMarkPath }, null, 8, _hoisted_6$19)])) : createCommentVNode("v-if", true),
379
- createCommentVNode(" The keys stepping through the tabs, W up and S down, beside the first "),
380
- _cache[2] || (_cache[2] = createElementVNode("div", {
381
- class: "tab-keys",
382
- "aria-hidden": "true"
383
- }, [createElementVNode("kbd", { class: "key" }, "W"), createElementVNode("kbd", { class: "key" }, "S")], -1)),
384
- createElementVNode("ul", _hoisted_7$19, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(CharacterMenuTabs), (menuTab) => {
463
+ createElementVNode("p", _hoisted_4$21, toDisplayString(breadcrumb.value), 1),
464
+ __props.elementMarkPath ? (openBlock(), createElementBlock("svg", _hoisted_5$20, [_cache[0] || (_cache[0] = createElementVNode("path", {
465
+ class: "frame",
466
+ d: "M800 0 L1014 283 L1366 234 L1317 586 L1600 800 L1317 1014 L1366 1366 L1014 1317 L800 1600 L586 1317 L234 1366 L283 1014 L0 800 L283 586 L234 234 L586 283 Z"
467
+ }, null, -1)), createElementVNode("path", {
468
+ d: __props.elementMarkPath,
469
+ transform: "translate(400 400) scale(0.5)"
470
+ }, null, 8, _hoisted_6$19)])) : createCommentVNode("v-if", true),
471
+ createCommentVNode(" The keys stepping through the tabs, W up and S down, beside the first; the keys stepping through the characters,\n Q and E, either side of the row; a finger has no keys to press "),
472
+ !__props.isTouch ? (openBlock(), createElementBlock("div", _hoisted_7$17, [..._cache[1] || (_cache[1] = [createElementVNode("kbd", { class: "key" }, "W", -1), createElementVNode("kbd", { class: "key" }, "S", -1)])])) : createCommentVNode("v-if", true),
473
+ !__props.isTouch ? (openBlock(), createElementBlock("div", _hoisted_8$14, [..._cache[2] || (_cache[2] = [createElementVNode("kbd", { class: "key key-previous" }, "Q", -1), createElementVNode("kbd", { class: "key key-next" }, "E", -1)])])) : createCommentVNode("v-if", true),
474
+ createElementVNode("ul", _hoisted_9$13, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(CharacterMenuTabs), (menuTab) => {
385
475
  return openBlock(), createElementBlock("li", { key: menuTab }, [createElementVNode("button", {
386
476
  class: "tab",
387
477
  "aria-pressed": menuTab === tab.value,
388
478
  type: "button",
389
479
  onClick: ($event) => tab.value = menuTab
390
- }, toDisplayString(__props.tabLabels[menuTab]), 9, _hoisted_8$15)]);
480
+ }, toDisplayString(__props.tabLabels[menuTab]), 9, _hoisted_10$12)]);
391
481
  }), 128))]),
392
482
  createElementVNode("section", {
393
483
  class: "panel",
394
484
  "aria-label": __props.tabLabels[tab.value]
395
- }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 8, _hoisted_9$13),
396
- __props.characters.length > 1 ? (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(steps.value, ({ character, className }) => {
485
+ }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 8, _hoisted_11$12),
486
+ __props.characters.length > 1 ? (openBlock(true), createElementBlock(Fragment, { key: 3 }, renderList(steps.value, ({ character, className }) => {
397
487
  return openBlock(), createElementBlock("button", {
398
488
  key: className,
399
489
  class: normalizeClass(["step", className]),
400
490
  "aria-label": character?.name,
401
491
  type: "button",
402
492
  onClick: ($event) => characterId.value = character?.id ?? characterId.value
403
- }, [createCommentVNode(" The arrow's head and the diamond in its notch, in the reference's own pixels "), _cache[0] || (_cache[0] = createElementVNode("svg", {
493
+ }, [createCommentVNode(" The arrow's head and the diamond in its notch, in the reference's own pixels "), _cache[3] || (_cache[3] = createElementVNode("svg", {
404
494
  viewBox: "0 0 43 55",
405
495
  "aria-hidden": "true"
406
496
  }, [
@@ -416,74 +506,72 @@ var Index_default$3 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
416
506
  class: "mark",
417
507
  d: "M31 25.5 L33 27.5 L31 29.5 L29 27.5 Z"
418
508
  })
419
- ], -1))], 10, _hoisted_10$12);
509
+ ], -1))], 10, _hoisted_12$10);
420
510
  }), 128)) : createCommentVNode("v-if", true)
421
511
  ], 8, _hoisted_1$35)], 2112);
422
512
  };
423
513
  }
424
- }), [["__scopeId", "data-v-86092611"]]);
425
- //#endregion
426
- //#region src/components/CharacterMenuButtons/Index.vue
514
+ }), [["__scopeId", "data-v-196e57b9"]]);
515
+ // src/components/CharacterMenuButtons/Index.vue
427
516
  const _hoisted_1$34 = { class: "buttons" };
428
517
  var Index_default$5 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
429
518
  __name: "Index",
430
519
  setup(__props) {
431
520
  return (_ctx, _cache) => {
432
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The two buttons beneath a character menu's panel, the game's pills, each the panel's half less the gap between them "), createElementVNode("div", _hoisted_1$34, [renderSlot(_ctx.$slots, "default", {}, () => [_cache[0] || (_cache[0] = createElementVNode("span", { class: "button" }, null, -1)), _cache[1] || (_cache[1] = createElementVNode("span", { class: "button" }, null, -1))], true)])], 2112);
521
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The two buttons beneath a character menu's panel, the game's pills, each the panel's half less the gap between them "), createElementVNode("div", _hoisted_1$34, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])], 2112);
433
522
  };
434
523
  }
435
- }), [["__scopeId", "data-v-359aa329"]]);
436
- //#endregion
437
- //#region src/components/ToastNotice/Index.vue
524
+ }), [["__scopeId", "data-v-56c8b5cd"]]);
525
+ // src/components/ToastNotice/Index.vue
438
526
  const _sfc_main$34 = {};
439
527
  const _hoisted_1$33 = {
440
528
  class: "toast-notice",
441
529
  role: "status"
442
530
  };
443
531
  const _hoisted_2$26 = { class: "mark" };
444
- const _hoisted_3$24 = { class: "text" };
532
+ const _hoisted_3$23 = { class: "text" };
445
533
  function _sfc_render$1(_ctx, _cache) {
446
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The game's notice card, dropped at the top of a screen: white with rounded corners, 107 units high and at least\n 537 across, a round mark at its left and its words in the game's near black. Measured from a 1440 high\n Recording of the welcome the login screen shows "), createElementVNode("div", _hoisted_1$33, [createElementVNode("span", _hoisted_2$26, [renderSlot(_ctx.$slots, "mark", {}, void 0, true)]), createElementVNode("p", _hoisted_3$24, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])])], 2112);
534
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The game's notice card, dropped at the top of a screen: white with rounded corners, 107 units high and at least\n 537 across, a round mark at its left and its words in the game's near black. Measured from a 1440 high\n Recording of the welcome the login screen shows "), createElementVNode("div", _hoisted_1$33, [createElementVNode("span", _hoisted_2$26, [renderSlot(_ctx.$slots, "mark", {}, void 0, true)]), createElementVNode("p", _hoisted_3$23, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])])], 2112);
447
535
  }
448
- var Index_default$33 = /*#__PURE__*/ export_helper_default(_sfc_main$34, [["render", _sfc_render$1], ["__scopeId", "data-v-a09dfb40"]]);
449
- //#endregion
450
- //#region src/components/CharacterMenuArtifacts/Index.vue
536
+ var Index_default$34 = /*#__PURE__*/ export_helper_default(_sfc_main$34, [["render", _sfc_render$1], ["__scopeId", "data-v-a09dfb40"]]);
537
+ // src/components/CharacterMenuArtifacts/Index.vue
451
538
  const _hoisted_1$32 = { class: "artifacts" };
452
- const _hoisted_2$25 = { class: "slots" };
453
- const _hoisted_3$23 = [
454
- "aria-label",
455
- "aria-pressed",
456
- "onClick"
457
- ];
458
- const _hoisted_4$20 = { class: "details" };
459
- const _hoisted_5$19 = {
460
- key: 1,
539
+ const _hoisted_2$25 = ["aria-expanded"];
540
+ const _hoisted_3$22 = { class: "slot-name" };
541
+ const _hoisted_4$20 = {
542
+ key: 0,
461
543
  class: "stats"
462
544
  };
463
- const _hoisted_6$18 = { class: "stat" };
464
- const _hoisted_7$18 = { class: "set-bonus" };
465
- const _hoisted_8$14 = { class: "set-bonus-heading" };
545
+ const _hoisted_5$19 = { class: "stat" };
546
+ const _hoisted_6$18 = { class: "totals" };
547
+ const _hoisted_7$16 = { class: "set-bonus" };
548
+ const _hoisted_8$13 = { class: "set-bonus-heading" };
466
549
  const _hoisted_9$12 = {
467
550
  key: 0,
468
- class: "set-bonus-lines"
551
+ class: "set-name"
469
552
  };
470
- const _hoisted_10$11 = {
553
+ const _hoisted_10$11 = { class: "set-bonus-lines" };
554
+ const _hoisted_11$11 = {
471
555
  key: 1,
472
556
  class: "set-bonus-lines"
473
557
  };
474
558
  var Index_default$4 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
475
559
  __name: "Index",
476
560
  props: {
561
+ artifactDetailsLabel: {},
477
562
  enhanceLabel: {},
478
563
  equipDisabledSlots: {},
479
564
  equipLabel: {},
565
+ fastEquipLabel: {},
480
566
  lockLabel: {},
481
567
  noSetBonusLabel: {},
482
568
  notice: {},
483
569
  setBonusHeading: {},
484
- setBonusLines: {},
570
+ sets: {},
485
571
  slotNames: {},
486
572
  slotStats: {},
573
+ switchLabel: {},
574
+ totals: {},
487
575
  unequipLabel: {},
488
576
  unlockLabel: {}
489
577
  },
@@ -496,86 +584,116 @@ var Index_default$4 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
496
584
  setup(__props, { emit: __emit }) {
497
585
  const emit = __emit;
498
586
  const selectedIndex = ref(0);
587
+ const isDetailsOpen = ref(false);
499
588
  const selectedStats = computed(() => __props.slotStats[selectedIndex.value]);
500
589
  const isSelectedWorn = computed(() => selectedStats.value !== void 0);
590
+ const switchSlot = () => {
591
+ selectedIndex.value = (selectedIndex.value + 1) % __props.slotNames.length;
592
+ };
501
593
  return (_ctx, _cache) => {
502
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Artifacts tab's panel: the five slots down its top, each a disc lit where the character wears an artifact and\n picked by a click, the picked slot's name in the details pill, the picked artifact's main and sub stats under it,\n the set bonus block below them, and the Enhance and Equip or Unequip buttons at its foot. The stats' place is\n provisional "), createElementVNode("div", _hoisted_1$32, [
503
- __props.notice ? (openBlock(), createBlock(Index_default$33, {
594
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Artifacts tab's panel: the worn artifacts' attribute totals down its top, the set bonus block under them, and the\n Fast Equip and Switch buttons at its foot. Pressing Artifact Details opens the picked slot's stats in place of the totals,\n with its Enhance, Equip or Unequip and Lock buttons at the foot in place of those two "), createElementVNode("div", _hoisted_1$32, [
595
+ __props.notice ? (openBlock(), createBlock(Index_default$34, {
504
596
  key: 0,
505
597
  class: "notice"
506
598
  }, {
507
599
  default: withCtx(() => [createTextVNode(toDisplayString(__props.notice), 1)]),
508
600
  _: 1
509
601
  })) : createCommentVNode("v-if", true),
510
- createElementVNode("ul", _hoisted_2$25, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.slotStats, (stats, index) => {
511
- return openBlock(), createElementBlock("li", { key: index }, [createElementVNode("button", {
512
- class: normalizeClass(["slot", { worn: stats !== void 0 }]),
513
- "aria-label": __props.slotNames[index],
514
- "aria-pressed": index === selectedIndex.value,
515
- type: "button",
516
- onClick: ($event) => selectedIndex.value = index
517
- }, null, 10, _hoisted_3$23)]);
518
- }), 128))]),
519
- createElementVNode("div", _hoisted_4$20, toDisplayString(__props.slotNames[selectedIndex.value]), 1),
520
- selectedStats.value ? (openBlock(), createElementBlock("ul", _hoisted_5$19, [createElementVNode("li", _hoisted_6$18, [createElementVNode("span", null, toDisplayString(selectedStats.value.mainStat.label), 1), createElementVNode("span", null, toDisplayString(selectedStats.value.mainStat.value), 1)]), (openBlock(true), createElementBlock(Fragment, null, renderList(selectedStats.value.subStats, ({ label, value }, index) => {
602
+ createElementVNode("button", {
603
+ class: "details",
604
+ "aria-expanded": isDetailsOpen.value,
605
+ type: "button",
606
+ onClick: _cache[0] || (_cache[0] = ($event) => isDetailsOpen.value = !isDetailsOpen.value)
607
+ }, toDisplayString(__props.artifactDetailsLabel), 9, _hoisted_2$25),
608
+ isDetailsOpen.value ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createElementVNode("p", _hoisted_3$22, toDisplayString(__props.slotNames[selectedIndex.value]), 1), selectedStats.value ? (openBlock(), createElementBlock("ul", _hoisted_4$20, [createElementVNode("li", _hoisted_5$19, [createElementVNode("span", null, toDisplayString(selectedStats.value.mainStat.label), 1), createElementVNode("span", null, toDisplayString(selectedStats.value.mainStat.value), 1)]), (openBlock(true), createElementBlock(Fragment, null, renderList(selectedStats.value.subStats, ({ label, value }, index) => {
521
609
  return openBlock(), createElementBlock("li", {
522
610
  key: index,
523
611
  class: "stat"
524
612
  }, [createElementVNode("span", null, toDisplayString(label), 1), createElementVNode("span", null, toDisplayString(value), 1)]);
525
- }), 128))])) : createCommentVNode("v-if", true),
526
- createElementVNode("div", _hoisted_7$18, [createElementVNode("p", _hoisted_8$14, toDisplayString(__props.setBonusHeading), 1), __props.setBonusLines.length > 0 ? (openBlock(), createElementBlock("ul", _hoisted_9$12, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.setBonusLines, (line) => {
527
- return openBlock(), createElementBlock("li", { key: line }, toDisplayString(line), 1);
528
- }), 128))])) : (openBlock(), createElementBlock("p", _hoisted_10$11, toDisplayString(__props.noSetBonusLabel), 1))]),
613
+ }), 128))])) : createCommentVNode("v-if", true)], 64)) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [createElementVNode("ul", _hoisted_6$18, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.totals, ({ label, value }) => {
614
+ return openBlock(), createElementBlock("li", {
615
+ key: label,
616
+ class: "total"
617
+ }, [createElementVNode("span", null, toDisplayString(label), 1), createElementVNode("span", null, toDisplayString(value), 1)]);
618
+ }), 128))]), createElementVNode("div", _hoisted_7$16, [createElementVNode("p", _hoisted_8$13, toDisplayString(__props.setBonusHeading), 1), __props.sets.length > 0 ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(__props.sets, ({ lines, name }, index) => {
619
+ return openBlock(), createElementBlock("div", { key: index }, [name ? (openBlock(), createElementBlock("p", _hoisted_9$12, toDisplayString(name), 1)) : createCommentVNode("v-if", true), createElementVNode("ul", _hoisted_10$11, [(openBlock(true), createElementBlock(Fragment, null, renderList(lines, (line) => {
620
+ return openBlock(), createElementBlock("li", { key: line }, [_cache[6] || (_cache[6] = createElementVNode("svg", {
621
+ class: "check",
622
+ viewBox: "0 0 20 20",
623
+ "aria-hidden": "true"
624
+ }, [createElementVNode("circle", {
625
+ cx: "10",
626
+ cy: "10",
627
+ r: "10"
628
+ }), createElementVNode("path", { d: "M5.5 10.5 L8.5 13.5 L14.5 7" })], -1)), createTextVNode(" " + toDisplayString(line), 1)]);
629
+ }), 128))])]);
630
+ }), 128)) : (openBlock(), createElementBlock("p", _hoisted_11$11, toDisplayString(__props.noSetBonusLabel), 1))])], 64)),
529
631
  createVNode(Index_default$5, null, {
530
- default: withCtx(() => [
531
- createVNode(Index_default$16, {
632
+ default: withCtx(() => [isDetailsOpen.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
633
+ createVNode(Index_default$17, {
532
634
  class: "button",
533
635
  disabled: !isSelectedWorn.value,
534
636
  kind: unref(GameButtonKind).Pill,
535
- onClick: _cache[0] || (_cache[0] = ($event) => emit("enhance", selectedIndex.value))
637
+ tip: "",
638
+ onClick: _cache[1] || (_cache[1] = ($event) => emit("enhance", selectedIndex.value))
536
639
  }, {
537
640
  default: withCtx(() => [createTextVNode(toDisplayString(__props.enhanceLabel), 1)]),
538
641
  _: 1
539
642
  }, 8, ["disabled", "kind"]),
540
- isSelectedWorn.value ? (openBlock(), createBlock(Index_default$16, {
541
- key: 0,
542
- class: "button",
543
- kind: unref(GameButtonKind).Pill,
544
- onClick: _cache[1] || (_cache[1] = ($event) => emit("unequip", selectedIndex.value))
545
- }, {
546
- default: withCtx(() => [createTextVNode(toDisplayString(__props.unequipLabel), 1)]),
547
- _: 1
548
- }, 8, ["kind"])) : (openBlock(), createBlock(Index_default$16, {
549
- key: 1,
643
+ createVNode(Index_default$17, {
550
644
  class: "button",
551
- disabled: __props.equipDisabledSlots[selectedIndex.value],
645
+ disabled: !isSelectedWorn.value && __props.equipDisabledSlots[selectedIndex.value],
552
646
  kind: unref(GameButtonKind).Pill,
553
- onClick: _cache[2] || (_cache[2] = ($event) => emit("equip", selectedIndex.value))
647
+ tip: "",
648
+ onClick: _cache[2] || (_cache[2] = ($event) => isSelectedWorn.value ? emit("unequip", selectedIndex.value) : emit("equip", selectedIndex.value))
554
649
  }, {
555
- default: withCtx(() => [createTextVNode(toDisplayString(__props.equipLabel), 1)]),
650
+ default: withCtx(() => [createTextVNode(toDisplayString(isSelectedWorn.value ? __props.unequipLabel : __props.equipLabel), 1)]),
556
651
  _: 1
557
- }, 8, ["disabled", "kind"])),
558
- selectedStats.value ? (openBlock(), createBlock(Index_default$16, {
559
- key: 2,
652
+ }, 8, ["disabled", "kind"]),
653
+ selectedStats.value ? (openBlock(), createBlock(Index_default$17, {
654
+ key: 0,
560
655
  class: "button",
561
656
  kind: unref(GameButtonKind).Pill,
657
+ tip: "",
562
658
  onClick: _cache[3] || (_cache[3] = ($event) => emit("lock", selectedIndex.value))
563
659
  }, {
564
660
  default: withCtx(() => [createTextVNode(toDisplayString(selectedStats.value.isLocked ? __props.unlockLabel : __props.lockLabel), 1)]),
565
661
  _: 1
566
662
  }, 8, ["kind"])) : createCommentVNode("v-if", true)
567
- ]),
663
+ ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createVNode(Index_default$17, {
664
+ class: "button",
665
+ disabled: __props.equipDisabledSlots[selectedIndex.value],
666
+ kind: unref(GameButtonKind).Pill,
667
+ tip: "",
668
+ onClick: _cache[4] || (_cache[4] = ($event) => emit("equip", selectedIndex.value))
669
+ }, {
670
+ default: withCtx(() => [_cache[7] || (_cache[7] = createElementVNode("span", {
671
+ class: "key",
672
+ "aria-hidden": "true"
673
+ }, "R", -1)), createTextVNode(" " + toDisplayString(__props.fastEquipLabel), 1)]),
674
+ _: 1
675
+ }, 8, ["disabled", "kind"]), createVNode(Index_default$17, {
676
+ class: "button",
677
+ kind: unref(GameButtonKind).Pill,
678
+ tip: "",
679
+ onClick: _cache[5] || (_cache[5] = ($event) => switchSlot())
680
+ }, {
681
+ default: withCtx(() => [_cache[8] || (_cache[8] = createElementVNode("span", {
682
+ class: "key",
683
+ "aria-hidden": "true"
684
+ }, "F", -1)), createTextVNode(" " + toDisplayString(__props.switchLabel), 1)]),
685
+ _: 1
686
+ }, 8, ["kind"])], 64))]),
568
687
  _: 1
569
688
  })
570
689
  ])], 2112);
571
690
  };
572
691
  }
573
- }), [["__scopeId", "data-v-525c0131"]]);
574
- //#endregion
575
- //#region src/components/CharacterMenuConstellation/Index.vue
692
+ }), [["__scopeId", "data-v-31549cac"]]);
693
+ // src/components/CharacterMenuConstellation/Index.vue
576
694
  const _hoisted_1$31 = { class: "constellations" };
577
695
  const _hoisted_2$24 = { class: "nodes" };
578
- const _hoisted_3$22 = ["disabled"];
696
+ const _hoisted_3$21 = ["disabled"];
579
697
  var Index_default$6 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
580
698
  __name: "Index",
581
699
  props: {
@@ -591,26 +709,26 @@ var Index_default$6 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
591
709
  top: `calc(var(--unit) * ${top})`
592
710
  }));
593
711
  return (_ctx, _cache) => {
594
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Constellation tab's panel: the six constellations down its right, each a ring lit once activated, and the\n button that activates the next under them. The game's star map is its own art and its names are not decoded yet,\n so neither is drawn "), createElementVNode("div", _hoisted_1$31, [createElementVNode("ul", _hoisted_2$24, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.activated, (isActivated, index) => {
712
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Constellation tab's panel: the six constellations down its right, each a ring lit once activated, and the\n button that activates the next under them while one is left, the game drawing no button once all six are lit. The\n game's star map is its own art and its names are not decoded yet, so neither is drawn "), createElementVNode("div", _hoisted_1$31, [createElementVNode("ul", _hoisted_2$24, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.activated, (isActivated, index) => {
595
713
  return openBlock(), createElementBlock("li", {
596
714
  key: index,
597
715
  class: normalizeClass(["node", { lit: isActivated }]),
598
716
  style: normalizeStyle(unref(nodeStyles)[index])
599
717
  }, null, 6);
600
- }), 128))]), createElementVNode("button", {
718
+ }), 128))]), __props.activated.includes(false) ? (openBlock(), createElementBlock("button", {
719
+ key: 0,
601
720
  class: "activate",
602
721
  disabled: __props.isActivateDisabled,
603
722
  type: "button",
604
723
  onClick: _cache[0] || (_cache[0] = ($event) => emit("activate"))
605
- }, toDisplayString(__props.activateLabel), 9, _hoisted_3$22)])], 2112);
724
+ }, toDisplayString(__props.activateLabel), 9, _hoisted_3$21)) : createCommentVNode("v-if", true)])], 2112);
606
725
  };
607
726
  }
608
- }), [["__scopeId", "data-v-4311eae1"]]);
609
- //#endregion
610
- //#region src/components/CharacterMenuProfile/Index.vue
727
+ }), [["__scopeId", "data-v-dd31fa27"]]);
728
+ // src/components/CharacterMenuProfile/Index.vue
611
729
  const _hoisted_1$30 = { class: "profile" };
612
730
  const _hoisted_2$23 = { class: "entries-column" };
613
- const _hoisted_3$21 = { class: "entries" };
731
+ const _hoisted_3$20 = { class: "entries" };
614
732
  const _hoisted_4$19 = [
615
733
  "aria-pressed",
616
734
  "data-locked",
@@ -624,19 +742,19 @@ const _hoisted_6$17 = {
624
742
  key: 0,
625
743
  class: "story"
626
744
  };
627
- const _hoisted_7$17 = { class: "title" };
628
- const _hoisted_8$13 = { class: "text" };
745
+ const _hoisted_7$15 = { class: "title" };
746
+ const _hoisted_8$12 = { class: "text" };
629
747
  var Index_default$7 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
630
748
  __name: "Index",
631
749
  props: {
632
750
  entries: {},
633
- namecardName: { default: "" }
751
+ namecardName: {}
634
752
  },
635
753
  setup(__props) {
636
754
  const entryIndex = ref(0);
637
755
  const selectedEntry = computed(() => __props.entries[entryIndex.value]);
638
756
  return (_ctx, _cache) => {
639
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Profile tab's panel: the stories down its left, each by its title, and the chosen one's title and text down its\n right. A locked story shows its unlock line in place of its text. The namecard the Friendship holds is a plate of its\n name under the stories, its art not drawn yet "), createElementVNode("div", _hoisted_1$30, [createElementVNode("div", _hoisted_2$23, [createElementVNode("ul", _hoisted_3$21, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.entries, (entry, index) => {
757
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Profile tab's panel: the stories down its left, each by its title, and the chosen one's title and text down its\n right. A locked story shows its unlock line in place of its text. The namecard the Friendship holds is a plate of its\n name under the stories, its art not drawn yet "), createElementVNode("div", _hoisted_1$30, [createElementVNode("div", _hoisted_2$23, [createElementVNode("ul", _hoisted_3$20, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.entries, (entry, index) => {
640
758
  return openBlock(), createElementBlock("li", { key: index }, [createElementVNode("button", {
641
759
  class: "entry",
642
760
  "aria-pressed": index === entryIndex.value,
@@ -644,19 +762,18 @@ var Index_default$7 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
644
762
  type: "button",
645
763
  onClick: ($event) => entryIndex.value = index
646
764
  }, toDisplayString(entry.title), 9, _hoisted_4$19)]);
647
- }), 128))]), __props.namecardName ? (openBlock(), createElementBlock("p", _hoisted_5$18, toDisplayString(__props.namecardName), 1)) : createCommentVNode("v-if", true)]), selectedEntry.value ? (openBlock(), createElementBlock("article", _hoisted_6$17, [createElementVNode("h2", _hoisted_7$17, toDisplayString(selectedEntry.value.title), 1), createElementVNode("p", _hoisted_8$13, toDisplayString(selectedEntry.value.text), 1)])) : createCommentVNode("v-if", true)])], 2112);
765
+ }), 128))]), __props.namecardName ? (openBlock(), createElementBlock("p", _hoisted_5$18, toDisplayString(__props.namecardName), 1)) : createCommentVNode("v-if", true)]), selectedEntry.value ? (openBlock(), createElementBlock("article", _hoisted_6$17, [createElementVNode("h2", _hoisted_7$15, toDisplayString(selectedEntry.value.title), 1), createElementVNode("p", _hoisted_8$12, toDisplayString(selectedEntry.value.text), 1)])) : createCommentVNode("v-if", true)])], 2112);
648
766
  };
649
767
  }
650
- }), [["__scopeId", "data-v-d064a750"]]);
651
- //#endregion
652
- //#region src/components/CharacterMenuTalents/Index.vue
768
+ }), [["__scopeId", "data-v-46a06599"]]);
769
+ // src/components/CharacterMenuTalents/Index.vue
653
770
  const _hoisted_1$29 = { class: "talents" };
654
771
  const _hoisted_2$22 = { class: "talent-list" };
655
- const _hoisted_3$20 = { class: "level" };
772
+ const _hoisted_3$19 = { class: "level" };
656
773
  const _hoisted_4$18 = { class: "detail" };
657
774
  const _hoisted_5$17 = { class: "phase" };
658
775
  const _hoisted_6$16 = { class: "costs" };
659
- const _hoisted_7$16 = {
776
+ const _hoisted_7$14 = {
660
777
  key: 0,
661
778
  class: "reason"
662
779
  };
@@ -665,7 +782,7 @@ var Index_default$8 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
665
782
  props: {
666
783
  costs: {},
667
784
  isUpgradeDisabled: {},
668
- levels: {},
785
+ levelTexts: {},
669
786
  phases: {},
670
787
  reasons: {},
671
788
  upgradeLabel: {}
@@ -674,23 +791,25 @@ var Index_default$8 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
674
791
  setup(__props, { emit: __emit }) {
675
792
  const emit = __emit;
676
793
  return (_ctx, _cache) => {
677
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Talents tab's panel: the three combat talents down its right, each with its level, the phase and cost of its next\n level, why it cannot rise if it cannot, and its Upgrade. The talents' names and the passives under them are not drawn\n yet, since the game's text for them is not decoded "), createElementVNode("div", _hoisted_1$29, [createElementVNode("ul", _hoisted_2$22, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.levels, (level, index) => {
794
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Talents tab's panel: the three combat talents down its right, each with its level, the phase and cost of its next\n level, why it cannot rise if it cannot, and its Upgrade while it is drawn. The talents' names and the passives under\n them are not drawn yet, since the game's text for them is not decoded "), createElementVNode("div", _hoisted_1$29, [createElementVNode("ul", _hoisted_2$22, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.levelTexts, (levelText, index) => {
678
795
  return openBlock(), createElementBlock("li", {
679
796
  key: index,
680
797
  class: "talent"
681
798
  }, [
682
- createElementVNode("span", _hoisted_3$20, toDisplayString(level), 1),
799
+ createElementVNode("span", _hoisted_3$19, toDisplayString(levelText), 1),
683
800
  createElementVNode("div", _hoisted_4$18, [
684
801
  createElementVNode("span", _hoisted_5$17, toDisplayString(__props.phases[index]), 1),
685
802
  createElementVNode("ul", _hoisted_6$16, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.costs[index], (cost, costIndex) => {
686
803
  return openBlock(), createElementBlock("li", { key: costIndex }, toDisplayString(cost), 1);
687
804
  }), 128))]),
688
- __props.reasons[index] ? (openBlock(), createElementBlock("span", _hoisted_7$16, toDisplayString(__props.reasons[index]), 1)) : createCommentVNode("v-if", true)
805
+ __props.reasons[index] ? (openBlock(), createElementBlock("span", _hoisted_7$14, toDisplayString(__props.reasons[index]), 1)) : createCommentVNode("v-if", true)
689
806
  ]),
690
- createVNode(Index_default$16, {
807
+ __props.phases[index] ? (openBlock(), createBlock(Index_default$17, {
808
+ key: 0,
691
809
  class: "upgrade",
692
810
  disabled: __props.isUpgradeDisabled[index],
693
811
  kind: unref(GameButtonKind).Reply,
812
+ tip: "",
694
813
  onClick: ($event) => emit("upgrade", index)
695
814
  }, {
696
815
  default: withCtx(() => [createTextVNode(toDisplayString(__props.upgradeLabel), 1)]),
@@ -699,63 +818,84 @@ var Index_default$8 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
699
818
  "disabled",
700
819
  "kind",
701
820
  "onClick"
702
- ]),
821
+ ])) : createCommentVNode("v-if", true),
703
822
  _cache[0] || (_cache[0] = createElementVNode("span", { class: "icon" }, null, -1))
704
823
  ]);
705
824
  }), 128))])])], 2112);
706
825
  };
707
826
  }
708
- }), [["__scopeId", "data-v-65541162"]]);
709
- //#endregion
710
- //#region src/components/CharacterMenuWeapons/Index.vue
827
+ }), [["__scopeId", "data-v-ba02d114"]]);
828
+ // src/components/CharacterMenuWeapons/Index.vue
711
829
  const _hoisted_1$28 = { class: "weapons" };
712
830
  const _hoisted_2$21 = { class: "name" };
713
- const _hoisted_3$19 = { class: "stars" };
831
+ const _hoisted_3$18 = { class: "kind" };
714
832
  const _hoisted_4$17 = { class: "stats" };
715
833
  const _hoisted_5$16 = { class: "stat" };
716
- const _hoisted_6$15 = { class: "stat" };
717
- const _hoisted_7$15 = { class: "level" };
718
- const _hoisted_8$12 = { class: "level-text" };
719
- const _hoisted_9$11 = { class: "refinement" };
834
+ const _hoisted_6$15 = { class: "stat-value" };
835
+ const _hoisted_7$13 = { class: "stat" };
836
+ const _hoisted_8$11 = { class: "stat-value" };
837
+ const _hoisted_9$11 = { class: "stars" };
838
+ const _hoisted_10$10 = { class: "level" };
839
+ const _hoisted_11$10 = { class: "level-text" };
840
+ const _hoisted_12$9 = { class: "refinement" };
841
+ const _hoisted_13$9 = { class: "action cream-pill" };
842
+ const _hoisted_14$9 = { class: "action cream-pill" };
720
843
  var Index_default$9 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
721
844
  __name: "Index",
722
845
  props: {
723
846
  ascension: {},
724
847
  baseAttack: {},
848
+ baseAttackLabel: {},
849
+ enhanceLabel: {},
850
+ kind: {},
725
851
  levelText: {},
726
852
  name: {},
727
853
  rarity: {},
728
854
  refinement: {},
729
- subStatValue: {}
855
+ subStatLabel: {},
856
+ subStatValue: {},
857
+ switchLabel: {}
730
858
  },
731
859
  setup(__props) {
732
860
  return (_ctx, _cache) => {
733
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Weapons tab's panel: the weapon's name and stars, its base ATK and secondary attribute, its level with the\n ascension phases reached, its refinement rank, and the two buttons beneath "), createElementVNode("div", _hoisted_1$28, [
861
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Weapons tab's panel: the weapon's name and kind beside its lock, its base ATK and secondary attribute, its stars,\n its level with the ascension phases reached, its refinement rank, the scrollbar of its passive's column, and the two\n buttons beneath. The passive's text is not drawn: its glyphs are the game's typeface, and drawn in ours they score\n worse than the frame's own text left bare "), createElementVNode("div", _hoisted_1$28, [
734
862
  createElementVNode("p", _hoisted_2$21, toDisplayString(__props.name), 1),
735
- createElementVNode("p", _hoisted_3$19, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.rarity, (star) => {
863
+ createElementVNode("p", _hoisted_3$18, toDisplayString(__props.kind), 1),
864
+ _cache[0] || (_cache[0] = createElementVNode("span", { class: "lock" }, null, -1)),
865
+ createElementVNode("ul", _hoisted_4$17, [createElementVNode("li", _hoisted_5$16, [createElementVNode("span", null, toDisplayString(__props.baseAttackLabel), 1), createElementVNode("span", _hoisted_6$15, toDisplayString(__props.baseAttack), 1)]), createElementVNode("li", _hoisted_7$13, [createElementVNode("span", null, toDisplayString(__props.subStatLabel), 1), createElementVNode("span", _hoisted_8$11, toDisplayString(__props.subStatValue), 1)])]),
866
+ createElementVNode("p", _hoisted_9$11, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.rarity, (star) => {
736
867
  return openBlock(), createElementBlock("span", {
737
868
  key: star,
738
869
  class: "star"
739
870
  });
740
871
  }), 128))]),
741
- createElementVNode("ul", _hoisted_4$17, [createElementVNode("li", _hoisted_5$16, toDisplayString(__props.baseAttack), 1), createElementVNode("li", _hoisted_6$15, toDisplayString(__props.subStatValue), 1)]),
742
- createElementVNode("p", _hoisted_7$15, [createElementVNode("span", _hoisted_8$12, toDisplayString(__props.levelText), 1), (openBlock(true), createElementBlock(Fragment, null, renderList(unref(6), (phase) => {
872
+ createElementVNode("p", _hoisted_10$10, [createElementVNode("span", _hoisted_11$10, toDisplayString(__props.levelText), 1), (openBlock(true), createElementBlock(Fragment, null, renderList(unref(6), (phase) => {
743
873
  return openBlock(), createElementBlock("span", {
744
874
  key: phase,
745
875
  class: normalizeClass(["spark", { lit: phase <= __props.ascension }])
746
876
  }, null, 2);
747
877
  }), 128))]),
748
- createElementVNode("p", _hoisted_9$11, toDisplayString(__props.refinement), 1),
749
- createVNode(Index_default$5)
878
+ createElementVNode("p", _hoisted_12$9, toDisplayString(__props.refinement), 1),
879
+ _cache[1] || (_cache[1] = createElementVNode("span", { class: "scrollbar" }, [createElementVNode("span", { class: "thumb" })], -1)),
880
+ createVNode(Index_default$5, null, {
881
+ default: withCtx(() => [createElementVNode("span", _hoisted_13$9, toDisplayString(__props.switchLabel), 1), createElementVNode("span", _hoisted_14$9, toDisplayString(__props.enhanceLabel), 1)]),
882
+ _: 1
883
+ })
750
884
  ])], 2112);
751
885
  };
752
886
  }
753
- }), [["__scopeId", "data-v-77cff4ef"]]);
754
- //#endregion
755
- //#region src/components/CookingScreen/Index.vue
887
+ }), [["__scopeId", "data-v-7e275e35"]]);
888
+ // src/components/CookingScreen/Index.vue
756
889
  const _hoisted_1$27 = { class: "cooking-screen" };
757
- const _hoisted_2$20 = { class: "title" };
758
- const _hoisted_3$18 = { class: "dishes" };
890
+ const _hoisted_2$20 = {
891
+ class: "title",
892
+ role: "heading",
893
+ "aria-level": "1"
894
+ };
895
+ const _hoisted_3$17 = {
896
+ key: 0,
897
+ class: "dishes"
898
+ };
759
899
  const _hoisted_4$16 = ["aria-pressed", "onClick"];
760
900
  const _hoisted_5$15 = {
761
901
  "aria-hidden": "true",
@@ -763,16 +903,16 @@ const _hoisted_5$15 = {
763
903
  viewBox: "0 0 1920 1080"
764
904
  };
765
905
  const _hoisted_6$14 = ["d"];
766
- const _hoisted_7$14 = ["d"];
767
- const _hoisted_8$11 = ["d"];
768
- const _hoisted_9$10 = ["cx", "cy"];
769
- const _hoisted_10$10 = ["disabled"];
770
- var Index_default$10 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
906
+ const _hoisted_7$12 = ["d"];
907
+ const _hoisted_8$10 = ["transform"];
908
+ const _hoisted_9$10 = { class: "stop-label" };
909
+ var Index_default$11 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
771
910
  __name: "Index",
772
911
  props: {
773
912
  autoCookLabel: {},
774
- canAutoCook: { type: Boolean },
913
+ closeLabel: {},
775
914
  dishes: {},
915
+ isAutoCookable: { type: Boolean },
776
916
  pointer: {},
777
917
  selectedId: {},
778
918
  stopLabel: {},
@@ -787,85 +927,100 @@ var Index_default$10 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
787
927
  ],
788
928
  setup(__props, { emit: __emit }) {
789
929
  const emit = __emit;
790
- const toArcPoint = (fraction) => {
930
+ const toArcPoint = (fraction, radiusY) => {
791
931
  const angle = Math.PI * (1 - Math.min(1, Math.max(0, fraction)));
792
932
  return {
793
933
  x: 960 + 435 * Math.cos(angle),
794
- y: 832 - 120 * Math.sin(angle)
934
+ y: 832 - radiusY * Math.sin(angle)
795
935
  };
796
936
  };
797
- const toBarPath = ([start, end]) => {
798
- const from = toArcPoint(start);
799
- const to = toArcPoint(end);
800
- return `M ${from.x} ${from.y} A 435 120 0 0 1 ${to.x} ${to.y}`;
937
+ const toArcPath = ([start, end], radiusY) => {
938
+ const from = toArcPoint(start, radiusY);
939
+ const to = toArcPoint(end, radiusY);
940
+ return `M ${from.x} ${from.y} A 435 ${radiusY} 0 0 1 ${to.x} ${to.y}`;
801
941
  };
942
+ const pointerPosition = computed(() => toArcPoint(__props.pointer, 90));
802
943
  return (_ctx, _cache) => {
803
944
  return openBlock(), createElementBlock("div", _hoisted_1$27, [
804
- createElementVNode("h1", _hoisted_2$20, toDisplayString(__props.title), 1),
805
- createElementVNode("button", {
945
+ _cache[10] || (_cache[10] = createElementVNode("svg", {
946
+ "aria-hidden": "true",
947
+ class: "chef",
948
+ viewBox: "3 0 48 50"
949
+ }, [createElementVNode("path", { d: "M11 24 C3 23 3 11 12 11 C11 2 25 0 27 8 C30 0 44 2 42 11 C51 11 51 23 43 24 L43 50 L11 50 Z" })], -1)),
950
+ createElementVNode("p", _hoisted_2$20, toDisplayString(__props.title), 1),
951
+ createVNode(Index_default$10, {
806
952
  class: "close",
807
- type: "button",
953
+ label: __props.closeLabel,
954
+ mark: unref(CloseButtonMark).Cross,
808
955
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
809
- }, "×"),
810
- createElementVNode("ul", _hoisted_3$18, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.dishes, (dish) => {
956
+ }, null, 8, ["label", "mark"]),
957
+ __props.dishes.length > 1 ? (openBlock(), createElementBlock("ul", _hoisted_3$17, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.dishes, (dish) => {
811
958
  return openBlock(), createElementBlock("li", { key: dish.id }, [createElementVNode("button", {
812
959
  "aria-pressed": dish.id === __props.selectedId,
813
960
  class: normalizeClass({ selected: dish.id === __props.selectedId }),
814
961
  type: "button",
815
962
  onClick: ($event) => emit("select", dish.id)
816
963
  }, toDisplayString(dish.name), 11, _hoisted_4$16)]);
817
- }), 128))]),
964
+ }), 128))])) : createCommentVNode("v-if", true),
818
965
  (openBlock(), createElementBlock("svg", _hoisted_5$15, [
819
- createCommentVNode(" A provisional pot until the game's own is traced from the recording "),
820
- _cache[3] || (_cache[3] = createElementVNode("ellipse", {
821
- class: "pot-rim",
822
- cx: "960",
823
- cy: "330",
824
- rx: "150",
825
- ry: "36"
966
+ _cache[4] || (_cache[4] = createStaticVNode("<defs data-v-69c104bc><radialGradient id=\"cooking-heat\" data-v-69c104bc><stop offset=\"0\" stop-color=\"rgb(214 52 34 / 42%)\" data-v-69c104bc></stop><stop offset=\"1\" stop-color=\"rgb(214 52 34 / 0%)\" data-v-69c104bc></stop></radialGradient><!-- The pot&#39;s wall, dark at its mouth and warm where the fire lights its foot, as the recording shows it --><linearGradient id=\"cooking-pot\" x1=\"0\" x2=\"0\" y1=\"0\" y2=\"1\" data-v-69c104bc><stop offset=\"0.35\" stop-color=\"rgb(58 59 65)\" data-v-69c104bc></stop><stop offset=\"0.55\" stop-color=\"rgb(86 85 89)\" data-v-69c104bc></stop><stop offset=\"0.85\" stop-color=\"rgb(120 108 100)\" data-v-69c104bc></stop><stop offset=\"1\" stop-color=\"rgb(170 138 112)\" data-v-69c104bc></stop></linearGradient></defs><ellipse class=\"heat\" cx=\"960\" cy=\"700\" rx=\"100\" ry=\"260\" data-v-69c104bc></ellipse>", 2)),
967
+ createCommentVNode(" The flame under the pot, drawn before the pot so the pot's bottom covers its top "),
968
+ _cache[5] || (_cache[5] = createElementVNode("path", {
969
+ class: "flame",
970
+ d: "M800 470 C830 440 860 470 880 455 C905 430 930 470 960 445 C990 470 1020 430 1040 455 C1070 440 1100 470 1118 470 C1090 500 1050 512 1010 520 L960 526 L910 520 C870 512 830 500 800 470 Z"
826
971
  }, null, -1)),
827
- _cache[4] || (_cache[4] = createElementVNode("path", {
828
- class: "pot",
829
- d: "M810 330 Q830 470 960 480 Q1090 470 1110 330 Z"
972
+ _cache[6] || (_cache[6] = createElementVNode("ellipse", {
973
+ class: "flame-core",
974
+ cx: "960",
975
+ cy: "492",
976
+ rx: "90",
977
+ ry: "14"
830
978
  }, null, -1)),
831
- createElementVNode("path", {
832
- class: "track",
833
- d: toBarPath([0, 1])
834
- }, null, 8, _hoisted_6$14),
979
+ createCommentVNode(" The pot, with its rim, handles, and the three ingredients in it "),
980
+ _cache[7] || (_cache[7] = createStaticVNode("<path class=\"handle\" d=\"M716 330 L790 330 L790 352 L716 352 Z M1130 330 L1204 330 L1204 352 L1130 352 Z\" data-v-69c104bc></path><path class=\"pot\" d=\"M780 345 C790 440 860 492 960 496 C1060 492 1130 440 1140 345 Z\" data-v-69c104bc></path><ellipse class=\"pot-rim\" cx=\"960\" cy=\"345\" rx=\"180\" ry=\"39\" data-v-69c104bc></ellipse><ellipse class=\"pot-opening\" cx=\"960\" cy=\"345\" rx=\"160\" ry=\"30\" data-v-69c104bc></ellipse><ellipse class=\"carrot\" cx=\"855\" cy=\"352\" rx=\"28\" ry=\"18\" data-v-69c104bc></ellipse><rect class=\"jar\" height=\"78\" rx=\"8\" width=\"60\" x=\"930\" y=\"316\" data-v-69c104bc></rect><rect class=\"jar-cap\" height=\"16\" width=\"46\" x=\"937\" y=\"304\" data-v-69c104bc></rect><ellipse class=\"meat\" cx=\"1055\" cy=\"356\" rx=\"56\" ry=\"26\" data-v-69c104bc></ellipse>", 8)),
981
+ createCommentVNode(" The bar: its track, and the regular and delicious zones on the band inside it "),
982
+ createCommentVNode(" The bar's outer arc, its inner arc, the tick dots above it and the two scrolls at its ends, measured off the recording "),
983
+ _cache[8] || (_cache[8] = createStaticVNode("<path class=\"track\" d=\"M525 834 A525 265 0 0 1 1395 834\" data-v-69c104bc></path><path class=\"inner-track\" d=\"M690 832 A345 198 0 0 1 1230 832\" data-v-69c104bc></path><path class=\"scroll\" d=\"M525 828 C534 810 555 810 564 822 S588 819 600 807 S630 795 642 786 S660 768 678 768 C690 768 699 750 687 744 C678 739.5 672 750 681 759 M1395 828 C1386 810 1365 810 1356 822 S1332 819 1320 807 S1290 795 1278 786 S1260 768 1242 768 C1230 768 1221 750 1233 744 C1242 739.5 1248 750 1239 759\" data-v-69c104bc></path><g class=\"ticks\" data-v-69c104bc><circle cx=\"815\" cy=\"719\" r=\"3\" data-v-69c104bc></circle><circle cx=\"885\" cy=\"708\" r=\"3\" data-v-69c104bc></circle><circle cx=\"960\" cy=\"702\" r=\"3\" data-v-69c104bc></circle><circle cx=\"1035\" cy=\"708\" r=\"3\" data-v-69c104bc></circle><circle cx=\"1105\" cy=\"720\" r=\"3\" data-v-69c104bc></circle><circle cx=\"1173\" cy=\"735\" r=\"3\" data-v-69c104bc></circle></g>", 4)),
835
984
  createElementVNode("path", {
836
985
  class: "regular",
837
- d: toBarPath(__props.zones.regular)
838
- }, null, 8, _hoisted_7$14),
986
+ d: toArcPath(__props.zones.regular, unref(90))
987
+ }, null, 8, _hoisted_6$14),
839
988
  createElementVNode("path", {
840
989
  class: "delicious",
841
- d: toBarPath(__props.zones.delicious)
842
- }, null, 8, _hoisted_8$11),
843
- createElementVNode("circle", {
990
+ d: toArcPath(__props.zones.delicious, unref(90))
991
+ }, null, 8, _hoisted_7$12),
992
+ createElementVNode("g", {
844
993
  class: "pointer",
845
- cx: toArcPoint(__props.pointer).x,
846
- cy: toArcPoint(__props.pointer).y,
847
- r: "16"
848
- }, null, 8, _hoisted_9$10)
994
+ transform: `translate(${pointerPosition.value.x} ${pointerPosition.value.y}) rotate(-17)`
995
+ }, [..._cache[3] || (_cache[3] = [createElementVNode("rect", {
996
+ height: "44",
997
+ rx: "14",
998
+ width: "36",
999
+ x: "-18",
1000
+ y: "-48"
1001
+ }, null, -1), createElementVNode("path", { d: "M-6 -8 L6 -8 L5 66 L-5 66 Z" }, null, -1)])], 8, _hoisted_8$10)
849
1002
  ])),
850
- createElementVNode("button", {
851
- disabled: !__props.canAutoCook,
1003
+ __props.isAutoCookable ? (openBlock(), createElementBlock("button", {
1004
+ key: 1,
852
1005
  class: "auto-cook",
853
1006
  type: "button",
854
1007
  onClick: _cache[1] || (_cache[1] = ($event) => emit("autoCook"))
855
- }, toDisplayString(__props.autoCookLabel), 9, _hoisted_10$10),
1008
+ }, toDisplayString(__props.autoCookLabel), 1)) : createCommentVNode("v-if", true),
856
1009
  createElementVNode("button", {
857
1010
  class: "stop",
858
1011
  type: "button",
859
1012
  onClick: _cache[2] || (_cache[2] = ($event) => emit("stop"))
860
- }, toDisplayString(__props.stopLabel), 1)
1013
+ }, [_cache[9] || (_cache[9] = createElementVNode("span", {
1014
+ class: "stop-disc",
1015
+ "aria-hidden": "true"
1016
+ }, [createElementVNode("span", { class: "stop-square" })], -1)), createElementVNode("span", _hoisted_9$10, toDisplayString(__props.stopLabel), 1)])
861
1017
  ]);
862
1018
  };
863
1019
  }
864
- }), [["__scopeId", "data-v-4aee3a78"]]);
865
- //#endregion
866
- //#region src/components/DiscButton/Index.vue
1020
+ }), [["__scopeId", "data-v-69c104bc"]]);
1021
+ // src/components/DiscButton/Index.vue
867
1022
  const _hoisted_1$26 = ["aria-label"];
868
- var Index_default$13 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1023
+ var Index_default$14 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
869
1024
  __name: "Index",
870
1025
  props: {
871
1026
  label: {},
@@ -882,10 +1037,9 @@ var Index_default$13 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
882
1037
  };
883
1038
  }
884
1039
  }), [["__scopeId", "data-v-f5c878ff"]]);
885
- //#endregion
886
- //#region src/components/ScreenTitle/Index.vue
1040
+ // src/components/ScreenTitle/Index.vue
887
1041
  const _hoisted_1$25 = { class: "title" };
888
- var Index_default$30 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1042
+ var Index_default$31 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
889
1043
  __name: "Index",
890
1044
  setup(__props) {
891
1045
  return (_ctx, _cache) => {
@@ -893,33 +1047,32 @@ var Index_default$30 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
893
1047
  };
894
1048
  }
895
1049
  }), [["__scopeId", "data-v-5c68ef69"]]);
896
- //#endregion
897
- //#region src/components/CraftingScreen/Index.vue
1050
+ // src/components/CraftingScreen/Index.vue
898
1051
  const _hoisted_1$24 = { class: "crafting-screen" };
899
1052
  const _hoisted_2$19 = { class: "head" };
900
- const _hoisted_3$17 = { class: "coins" };
1053
+ const _hoisted_3$16 = { class: "coins" };
901
1054
  const _hoisted_4$15 = { class: "tabs" };
902
1055
  const _hoisted_5$14 = ["aria-pressed", "onClick"];
903
1056
  const _hoisted_6$13 = { class: "tab-name" };
904
- const _hoisted_7$13 = { class: "list" };
905
- const _hoisted_8$10 = { class: "recipes" };
1057
+ const _hoisted_7$11 = { class: "list" };
1058
+ const _hoisted_8$9 = { class: "recipes" };
906
1059
  const _hoisted_9$9 = ["aria-pressed", "onClick"];
907
1060
  const _hoisted_10$9 = { class: "recipe-name" };
908
- const _hoisted_11$8 = {
1061
+ const _hoisted_11$9 = {
909
1062
  key: 0,
910
1063
  class: "recipe-count"
911
1064
  };
912
1065
  const _hoisted_12$8 = { class: "detail" };
913
1066
  const _hoisted_13$8 = { class: "recipe-title" };
914
1067
  const _hoisted_14$8 = { class: "crafters" };
915
- const _hoisted_15$7 = ["aria-pressed", "onClick"];
916
- const _hoisted_16$7 = { class: "crafter-name" };
917
- const _hoisted_17$7 = ["aria-label", "max"];
1068
+ const _hoisted_15$8 = ["aria-pressed", "onClick"];
1069
+ const _hoisted_16$6 = { class: "crafter-name" };
1070
+ const _hoisted_17$6 = ["aria-label", "max"];
918
1071
  const _hoisted_18$6 = { class: "crafted" };
919
1072
  const _hoisted_19$6 = { class: "required" };
920
1073
  const _hoisted_20$6 = { class: "materials-label" };
921
1074
  const _hoisted_21$6 = { class: "materials" };
922
- var Index_default$11 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1075
+ var Index_default$12 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
923
1076
  __name: "Index",
924
1077
  props: /*@__PURE__*/ mergeModels({
925
1078
  amountLabel: {},
@@ -961,7 +1114,7 @@ var Index_default$11 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
961
1114
  return (_ctx, _cache) => {
962
1115
  return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Craft screen, its pieces placed in the game's own pixels at 1080 high (`--unit` a pixel of that frame): the title\n and the coins across the head, the way out at the head's right, and the recipe tabs under the title. The screen takes its\n place from the game's layout, not a two-column grid, since its recipe list is narrower than its detail "), createElementVNode("div", _hoisted_1$24, [
963
1116
  createElementVNode("header", _hoisted_2$19, [
964
- createVNode(Index_default$30, {
1117
+ createVNode(Index_default$31, {
965
1118
  class: "heading",
966
1119
  role: "heading",
967
1120
  "aria-level": "1"
@@ -969,11 +1122,11 @@ var Index_default$11 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
969
1122
  default: withCtx(() => [createTextVNode(toDisplayString(__props.title), 1)]),
970
1123
  _: 1
971
1124
  }),
972
- createElementVNode("p", _hoisted_3$17, [_cache[3] || (_cache[3] = createElementVNode("span", {
1125
+ createElementVNode("p", _hoisted_3$16, [_cache[3] || (_cache[3] = createElementVNode("span", {
973
1126
  class: "coin",
974
1127
  "aria-hidden": "true"
975
1128
  }, null, -1)), createTextVNode(" " + toDisplayString(__props.coins), 1)]),
976
- createVNode(Index_default$13, {
1129
+ createVNode(Index_default$14, {
977
1130
  class: "close",
978
1131
  label: __props.closeLabel,
979
1132
  size: 56,
@@ -994,13 +1147,13 @@ var Index_default$11 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
994
1147
  onClick: ($event) => tabId.value = tab.id
995
1148
  }, [createElementVNode("span", _hoisted_6$13, toDisplayString(tab.name), 1)], 8, _hoisted_5$14)]);
996
1149
  }), 128))]),
997
- createElementVNode("div", _hoisted_7$13, [createElementVNode("ul", _hoisted_8$10, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.recipes, (recipe) => {
1150
+ createElementVNode("div", _hoisted_7$11, [createElementVNode("ul", _hoisted_8$9, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.recipes, (recipe) => {
998
1151
  return openBlock(), createElementBlock("li", { key: recipe.id }, [createElementVNode("button", {
999
1152
  class: "recipe",
1000
1153
  "aria-pressed": recipe.id === recipeId.value,
1001
1154
  type: "button",
1002
1155
  onClick: ($event) => recipeId.value = recipe.id
1003
- }, [createElementVNode("span", _hoisted_10$9, toDisplayString(recipe.name), 1), recipe.count !== void 0 ? (openBlock(), createElementBlock("span", _hoisted_11$8, toDisplayString(recipe.count), 1)) : createCommentVNode("v-if", true)], 8, _hoisted_9$9)]);
1156
+ }, [createElementVNode("span", _hoisted_10$9, toDisplayString(recipe.name), 1), recipe.count !== void 0 ? (openBlock(), createElementBlock("span", _hoisted_11$9, toDisplayString(recipe.count), 1)) : createCommentVNode("v-if", true)], 8, _hoisted_9$9)]);
1004
1157
  }), 128))])]),
1005
1158
  createElementVNode("div", _hoisted_12$8, [
1006
1159
  _cache[5] || (_cache[5] = createElementVNode("div", {
@@ -1014,7 +1167,7 @@ var Index_default$11 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1014
1167
  "aria-pressed": crafter.id === crafterId.value,
1015
1168
  type: "button",
1016
1169
  onClick: ($event) => crafterId.value = crafter.id
1017
- }, [createElementVNode("span", _hoisted_16$7, toDisplayString(crafter.name), 1)], 8, _hoisted_15$7)]);
1170
+ }, [createElementVNode("span", _hoisted_16$6, toDisplayString(crafter.name), 1)], 8, _hoisted_15$8)]);
1018
1171
  }), 128))]),
1019
1172
  withDirectives(createElementVNode("input", {
1020
1173
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => amount.value = $event),
@@ -1023,7 +1176,7 @@ var Index_default$11 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1023
1176
  max: __props.amountMaximum,
1024
1177
  min: "1",
1025
1178
  type: "range"
1026
- }, null, 8, _hoisted_17$7), [[
1179
+ }, null, 8, _hoisted_17$6), [[
1027
1180
  vModelText,
1028
1181
  amount.value,
1029
1182
  void 0,
@@ -1048,58 +1201,74 @@ var Index_default$11 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1048
1201
  };
1049
1202
  }
1050
1203
  }), [["__scopeId", "data-v-bd114327"]]);
1051
- //#endregion
1052
- //#region src/models/DialogueChoiceIcon.ts
1204
+ // src/models/DialogueChoiceIcon.ts
1053
1205
  let DialogueChoiceIcon = /* @__PURE__ */ function(DialogueChoiceIcon) {
1054
1206
  DialogueChoiceIcon["Quest"] = "Quest";
1055
1207
  DialogueChoiceIcon["StoryQuest"] = "StoryQuest";
1056
1208
  DialogueChoiceIcon["Talk"] = "Talk";
1057
1209
  return DialogueChoiceIcon;
1058
1210
  }({});
1059
- //#endregion
1060
- //#region src/services/DialogueChoiceIconPathMap.ts
1211
+ // src/services/DialogueChoiceIconPathMap.ts
1061
1212
  const DialogueChoiceIconPathMap = {
1062
1213
  ["Quest"]: {
1063
- d: "m140.5 22h19l1 1h8l1 1h5l1 1 11 2 9 3 3 2h2l12 6 14 9 22.5 21.5 13 19 6 12v2l2 3 3 9v3l3 9v5l1 1v8l1 1v19l-1 1v8l-1 1v5l-1 1-2 11-3 9-2 3v2l-6 12-13 19-17.5 17.5-19 13-12 6h-2l-3 2-9 3h-3l-9 3h-5l-1 1h-8l-1 1h-19l-1-1h-8l-1-1h-5l-1-1-11-2-9-3-3-2h-2l-12-6-19-13-17.5-17.5-13-19-6-12v-2l-2-3-3-9v-3l-3-9v-5l-1-1v-8l-1-1v-19l1-1v-8l1-1v-5l1-1 2-11 3-9 2-3v-2l6-12 13-19 17.5-17.5 14-10 17-9h2l3-2 9-3h3l9-3q4.75 1.25 6-1h8l1-1z",
1214
+ d: "M140.5 33L159.5 33L160.5 34L167.5 34L168.5 35L173.5 35L174.5 36L181.5 37L193.5 41L204.5 46L217.5 54Q229.53 62.47 239 73.5L246 82.5L254 95.5L263 118.5L263 121.5L265 126.5L265 131.5L266 132.5L266 138.5L267 139.5L267 160.5L266 161.5L266 167.5L265 168.5L265 173.5L264 174.5L263 181.5L254 204.5L243 221.5L226.5 239L217.5 246L204.5 254L181.5 263L178.5 263L173.5 265L168.5 265L167.5 266L160.5 266L159.5 267L140.5 267L139.5 266L132.5 266L131.5 265L126.5 265L125.5 264L118.5 263L95.5 254L78.5 243L61 226.5L54 217.5L46 204.5L37 181.5L37 178.5L35 173.5L35 168.5L34 167.5L34 161.5L33 160.5L33 139.5L34 138.5L34 132.5L35 131.5L35 126.5L36 125.5L37 118.5L46 95.5L57 78.5L73.5 61L88.5 50L106.5 41L118.5 37L125.5 36L126.5 35L139.5 34L140.5 33ZM143 46L142 47L134 47Q132 49 129 48L128 49L121 50L112 54L110 54L95 62L84 70L70 84L59 100L50 121L49 128L48 129L48 133L47 134L47 142L46 143L46 158L47 159L47 167L48 168L48 172L50 177L50 180L59 201L70 217L84 230L100 241L121 250L128 251L129 252L133 252L134 253L142 253L143 254L158 254L159 253L167 253L168 252L172 252L177 250L180 250L201 241L217 230L230 217L241 201L250 180L251 173L252 172L252 168L253 167L253 159L254 158L254 143L253 142L253 134L252 133L252 129L250 124L250 121L241 100L230 84L217 70L209 64L191 54L189 54L180 50L173 49L172 48L168 48L167 47L159 47L158 46L143 46ZM148.5 58Q151.75 57.25 152.5 59L158.5 59L164.5 62L170 67.5L173 72.5Q171.75 77.25 174 78.5L174 90.5L173 91.5L173 98.5L172 99.5L171 110.5L170 111.5L170 118.5L169 119.5L168 130.5L167 131.5L167 136.5L166 137.5L165 151.5L163 157.5L163 163.5L162 164.5L161 177.5L157.5 182L152.5 184L147.5 184L144.5 183L140 178.5L139 175.5L139 168.5L138 167.5L138 160.5L137 159.5L137 153.5L135 147.5L134 135.5L133 134.5L132 125.5L131 124.5L130 111.5L129 110.5L128 100.5L127 99.5L127 91.5L126 90.5L126 78.5Q128 77.5 127 73.5L130 67.5L135.5 62L141.5 59L147.5 59L148.5 58ZM144.5 194L153.5 194L156.5 195Q164.58 197.92 169 204.5L173 214.5L173 222.5L169 231.5L162.5 238L156.5 241Q153.25 240.25 152.5 242L146.5 242Q145.5 240 141.5 241L135.5 238L129 231.5L126 225.5Q126.75 222.25 125 221.5L125 215.5Q127 214.5 126 210.5L129 204.5L135.5 198L144.5 194Z",
1064
1215
  viewBox: "0 0 300 300"
1065
1216
  },
1066
1217
  ["StoryQuest"]: {
1067
- d: "m63.5 18h2l45.5 45.5v2l-45.5 45.5h-2l-45.5-45.5v-2l45.5-45.5z",
1218
+ d: "M63.5 19L65.5 19L110 63.5L110 65.5L65.5 110L63.5 110L19 65.5L19 63.5L63.5 19ZM64 29L29 64L29 66L64 100L66 100L100 66L100 64L66 29L64 29ZM63.5 42L65.5 42L87 63.5L87 65.5L65.5 87L63.5 87L42 65.5L42 63.5L63.5 42Z",
1068
1219
  viewBox: "0 0 128 128"
1069
1220
  },
1070
1221
  ["Talk"]: {
1071
- d: "m65 0h46.5q.88.04.5 3h1.5l1 1 9 1 4 3 6 1 3 3h2l5 4 3 1 6.5 5.5q-.75 2.25 1.5 1.5 3 1.12 2.5 4l3 1.5 8 10q.35 5.15 4 7l1 7 1 2.5 2 .5v35.5q-2.67-1.12-2 1.5l-1 1-1 6q-3.18 2.32-4 7-6.72 9.78-15.5 17.5l-5 4h-1.5v2.5l3 5 8 9 1 3-1 3 1 2-2.5 3.5-2.5 1.5-.5 1.5h-29.5q1.13-2.67-1.5-2l-7-3-8-8-6-1-1 1h-23l-6-2-12-1-5-3-6-1-4-3-4-1-15-11-8.5-8.5-7-9-1-4-3-3-2-8.5q-2.96.38-3-.5v-35.5h3v-1.5l1-1 1-7q3.65-1.85 4-7l9.5-11.5q2.25.75 1.5-1.5 1.12-3 4-2.5l1.5-3 11-8 4-1 3-3 6-1 4-3 9-1 2.5-1v-3zm22 8-1 1h-13l-6 3-9 1-4 3-6 1-3 3-4 1-11 8-2 3-3 1v2l-8 9q0 5-4 7l-1 7-3 5v23l3 5 1 6 3 3 1 4 8 10 13 10q4 1 6 4l6 2 2 2 6 1 6 3 12 1q1 2 6 1l1 1h12q1-2 6-1l1-1h8l3 5 8 6 10 4h18v-2l-5-5-6-9-2-5v-4l14-11 10-12 1-4 3-3 1-6 3-5v-23l-3-5-1-7-3-3-1-4-8-9q1-3-1-2l-2-2-12-10-4-1-3-3-6-1-4-3-9-1-6-3h-13q-2-2-5-1zm-39.5 58h3l5.5 3.5 2 4v4l-4.5 6.5h-8l-4.5-4.5v-9l1.5-1.5 5-3zm39 0h4q1.85 2.85 5.5 3-.75 2.58 1 3.5v6l-2 4.5q-3 2-10.5 1l-2.5-1-2-5.5v-5q1.75-.92 1-3.5 3.65-.15 5.5-3zm40 0h3l6.5 4.5v9l-4.5 4.5h-8l-2.5-2.5-2-4v-4l3.5-5.5 4-2z",
1222
+ d: "m65 0h46.5q.88.04.5 3h1.5l1 1 9 1 4 3 6 1 3 3h2l5 4 3 1 6.5 5.5q-.75 2.25 1.5 1.5 3 1.12 2.5 4l3 1.5 8 10q.35 5.15 4 7l1 7 1 2.5 2 .5v35.5q-2.67-1.12-2 1.5l-1 1-1 6q-3.18 2.32-4 7-6.72 9.78-15.5 17.5l-5 4h-1.5v2.5l3 5 8 9 1 3-1 3 1 2-2.5 3.5-2.5 1.5-.5 1.5h-29.5q1.13-2.67-1.5-2l-7-3-8-8-6-1-1 1h-23l-6-2-12-1-5-3-6-1-4-3-4-1-15-11-8.5-8.5-7-9-1-4-3-3-2-8.5q-2.96.38-3-.5v-35.5h3v-1.5l1-1 1-7q3.65-1.85 4-7l9.5-11.5q2.25.75 1.5-1.5 1.12-3 4-2.5l1.5-3 11-8 4-1 3-3 6-1 4-3 9-1 2.5-1v-3zm-17.5 66h3l5.5 3.5 2 4v4l-4.5 6.5h-8l-4.5-4.5v-9l1.5-1.5 5-3zm39 0h4q1.85 2.85 5.5 3-.75 2.58 1 3.5v6l-2 4.5q-3 2-10.5 1l-2.5-1-2-5.5v-5q1.75-.92 1-3.5 3.65-.15 5.5-3zm40 0h3l6.5 4.5v9l-4.5 4.5h-8l-2.5-2.5-2-4v-4l3.5-5.5 4-2z",
1072
1223
  viewBox: "0 0 176 160"
1073
1224
  }
1074
1225
  };
1075
- //#endregion
1076
- //#region src/components/DialogueScreen/Index.vue
1226
+ // src/components/DialogueScreen/Index.vue
1077
1227
  const _hoisted_1$23 = {
1078
- key: 0,
1079
- class: "speaker"
1080
- };
1081
- const _hoisted_2$18 = {
1082
1228
  key: 1,
1083
1229
  class: "role"
1084
1230
  };
1085
- const _hoisted_3$16 = { class: "line" };
1086
- const _hoisted_4$14 = { "aria-hidden": "true" };
1087
- const _hoisted_5$13 = {
1231
+ const _hoisted_2$18 = {
1232
+ class: "flourish",
1233
+ "aria-hidden": "true",
1234
+ viewBox: "0 0 208 128"
1235
+ };
1236
+ const _hoisted_3$15 = ["d"];
1237
+ const _hoisted_4$14 = {
1238
+ class: "flourish right",
1239
+ "aria-hidden": "true",
1240
+ viewBox: "0 0 208 128"
1241
+ };
1242
+ const _hoisted_5$13 = ["d"];
1243
+ const _hoisted_6$12 = { class: "line" };
1244
+ const _hoisted_7$10 = { "aria-hidden": "true" };
1245
+ const _hoisted_8$8 = {
1088
1246
  class: "unrevealed",
1089
1247
  "aria-hidden": "true"
1090
1248
  };
1091
- const _hoisted_6$12 = { class: "spoken" };
1092
- const _hoisted_7$12 = {
1249
+ const _hoisted_9$8 = { class: "spoken" };
1250
+ const _hoisted_10$8 = {
1093
1251
  key: 0,
1094
1252
  class: "choices"
1095
1253
  };
1096
- const _hoisted_8$9 = ["data-interaction-state"];
1097
- const _hoisted_9$8 = ["viewBox"];
1098
- const _hoisted_10$8 = ["d"];
1099
- var Index_default$12 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1254
+ const _hoisted_11$8 = ["data-interaction-state"];
1255
+ const _hoisted_12$7 = ["viewBox"];
1256
+ const _hoisted_13$7 = ["d"];
1257
+ const _hoisted_14$7 = {
1258
+ key: 1,
1259
+ class: "advance",
1260
+ "aria-hidden": "true",
1261
+ viewBox: "0 0 24 24"
1262
+ };
1263
+ const _hoisted_15$7 = {
1264
+ key: 2,
1265
+ class: "confirm"
1266
+ };
1267
+ var Index_default$13 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1100
1268
  __name: "Index",
1101
1269
  props: {
1102
1270
  choices: {},
1271
+ confirmLabel: {},
1103
1272
  line: {},
1104
1273
  revealedLength: {},
1105
1274
  selectedChoiceId: {},
@@ -1108,140 +1277,181 @@ var Index_default$12 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1108
1277
  },
1109
1278
  emits: ["advance", "choose"],
1110
1279
  setup(__props, { emit: __emit }) {
1280
+ useCssVars((_ctx) => ({ "v7f5fa7e0": unref(GAME_DIALOGUE_GOLD) }));
1111
1281
  const emit = __emit;
1112
- const lineParts = computed(() => {
1113
- const characters = [...__props.line];
1114
- return {
1115
- revealed: characters.slice(0, __props.revealedLength).join(""),
1116
- unrevealed: characters.slice(__props.revealedLength).join("")
1117
- };
1118
- });
1282
+ const characters = computed(() => [...__props.line]);
1283
+ const isWhole = computed(() => __props.line !== "" && __props.choices.length === 0 && __props.revealedLength >= characters.value.length);
1284
+ const lineParts = computed(() => ({
1285
+ revealed: characters.value.slice(0, __props.revealedLength).join(""),
1286
+ unrevealed: characters.value.slice(__props.revealedLength).join("")
1287
+ }));
1119
1288
  return (_ctx, _cache) => {
1120
1289
  return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The game's dialogue over the world: a click anywhere goes on, the speaker's name over the line at the foot of the\n Screen, and the replies down the right. Sized and placed off the English client's recording of its dialogue\n choices; the selected reply's look and a narration's place wait on recordings still owed "), createElementVNode("div", {
1121
1290
  class: "dialogue-screen",
1122
1291
  onClick: _cache[0] || (_cache[0] = ($event) => emit("advance"))
1123
- }, [createElementVNode("div", {
1124
- class: normalizeClass(["band", { narration: !__props.speakerName }]),
1125
- "aria-live": "polite"
1126
1292
  }, [
1127
- __props.speakerName ? (openBlock(), createElementBlock("p", _hoisted_1$23, toDisplayString(__props.speakerName), 1)) : createCommentVNode("v-if", true),
1128
- __props.speakerRole ? (openBlock(), createElementBlock("p", _hoisted_2$18, toDisplayString(__props.speakerRole), 1)) : createCommentVNode("v-if", true),
1129
- createElementVNode("p", _hoisted_3$16, [
1130
- createElementVNode("span", _hoisted_4$14, toDisplayString(lineParts.value.revealed), 1),
1131
- createElementVNode("span", _hoisted_5$13, toDisplayString(lineParts.value.unrevealed), 1),
1132
- createElementVNode("span", _hoisted_6$12, toDisplayString(__props.line), 1)
1133
- ])
1134
- ], 2), __props.choices.length > 0 ? (openBlock(), createElementBlock("ul", _hoisted_7$12, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.choices, ({ icon, id, text }) => {
1135
- return openBlock(), createElementBlock("li", {
1136
- key: id,
1137
- "data-interaction-state": id === __props.selectedChoiceId ? "Hover" : void 0
1138
- }, [createVNode(Index_default$16, {
1139
- class: "choice",
1140
- "data-icon": icon,
1141
- kind: unref(GameButtonKind).Reply,
1142
- onClick: withModifiers(($event) => emit("choose", id), ["stop"])
1143
- }, {
1144
- default: withCtx(() => [(openBlock(), createElementBlock("svg", {
1145
- class: "icon",
1146
- "aria-hidden": "true",
1147
- viewBox: unref(DialogueChoiceIconPathMap)[icon].viewBox
1148
- }, [createElementVNode("path", {
1149
- d: unref(DialogueChoiceIconPathMap)[icon].d,
1150
- fill: "currentColor"
1151
- }, null, 8, _hoisted_10$8)], 8, _hoisted_9$8)), createTextVNode(" " + toDisplayString(text), 1)]),
1152
- _: 2
1153
- }, 1032, [
1154
- "data-icon",
1155
- "kind",
1156
- "onClick"
1157
- ])], 8, _hoisted_8$9);
1158
- }), 128))])) : createCommentVNode("v-if", true)])], 2112);
1293
+ createElementVNode("div", {
1294
+ class: normalizeClass(["band", { narration: !__props.speakerName }]),
1295
+ "aria-live": "polite"
1296
+ }, [
1297
+ __props.speakerName ? (openBlock(), createElementBlock("p", {
1298
+ key: 0,
1299
+ class: normalizeClass(["speaker", { "no-role": !__props.speakerRole }])
1300
+ }, toDisplayString(__props.speakerName), 3)) : createCommentVNode("v-if", true),
1301
+ __props.speakerRole ? (openBlock(), createElementBlock("p", _hoisted_1$23, [
1302
+ createTextVNode(toDisplayString(__props.speakerRole) + " ", 1),
1303
+ (openBlock(), createElementBlock("svg", _hoisted_2$18, [createElementVNode("path", { d: unref(ROLE_FLOURISH_PATH) }, null, 8, _hoisted_3$15)])),
1304
+ (openBlock(), createElementBlock("svg", _hoisted_4$14, [createElementVNode("path", { d: unref(ROLE_FLOURISH_PATH) }, null, 8, _hoisted_5$13)]))
1305
+ ])) : createCommentVNode("v-if", true),
1306
+ createElementVNode("p", _hoisted_6$12, [
1307
+ createElementVNode("span", _hoisted_7$10, toDisplayString(lineParts.value.revealed), 1),
1308
+ createElementVNode("span", _hoisted_8$8, toDisplayString(lineParts.value.unrevealed), 1),
1309
+ createElementVNode("span", _hoisted_9$8, toDisplayString(__props.line), 1)
1310
+ ])
1311
+ ], 2),
1312
+ __props.choices.length > 0 ? (openBlock(), createElementBlock("ul", _hoisted_10$8, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.choices, ({ icon, id, text }) => {
1313
+ return openBlock(), createElementBlock("li", {
1314
+ key: id,
1315
+ "data-interaction-state": id === __props.selectedChoiceId ? "Hover" : void 0
1316
+ }, [createVNode(Index_default$17, {
1317
+ class: "choice",
1318
+ "data-icon": icon,
1319
+ kind: unref(GameButtonKind).Reply,
1320
+ tip: "",
1321
+ onClick: withModifiers(($event) => emit("choose", id), ["stop"])
1322
+ }, {
1323
+ default: withCtx(() => [(openBlock(), createElementBlock("svg", {
1324
+ class: "icon",
1325
+ "aria-hidden": "true",
1326
+ viewBox: unref(DialogueChoiceIconPathMap)[icon].viewBox
1327
+ }, [createElementVNode("path", {
1328
+ d: unref(DialogueChoiceIconPathMap)[icon].d,
1329
+ fill: "currentColor",
1330
+ "fill-rule": "evenodd"
1331
+ }, null, 8, _hoisted_13$7)], 8, _hoisted_12$7)), createTextVNode(" " + toDisplayString(text), 1)]),
1332
+ _: 2
1333
+ }, 1032, [
1334
+ "data-icon",
1335
+ "kind",
1336
+ "onClick"
1337
+ ])], 8, _hoisted_11$8);
1338
+ }), 128))])) : createCommentVNode("v-if", true),
1339
+ isWhole.value ? (openBlock(), createElementBlock("svg", _hoisted_14$7, [..._cache[1] || (_cache[1] = [createElementVNode("path", {
1340
+ class: "ring",
1341
+ d: "M12 0L24 12L12 24L0 12ZM12 4L4 12L12 20L20 12Z",
1342
+ "fill-rule": "evenodd"
1343
+ }, null, -1), createElementVNode("path", {
1344
+ class: "core",
1345
+ d: "M12 8L16 12L12 16L8 12Z"
1346
+ }, null, -1)])])) : createCommentVNode("v-if", true),
1347
+ isWhole.value ? (openBlock(), createElementBlock("p", _hoisted_15$7, [_cache[2] || (_cache[2] = createElementVNode("svg", {
1348
+ class: "key",
1349
+ "aria-hidden": "true",
1350
+ viewBox: "0 0 35 35"
1351
+ }, [createElementVNode("circle", {
1352
+ class: "key-ground",
1353
+ cx: "17.5",
1354
+ cy: "17.5",
1355
+ r: "17"
1356
+ }), createElementVNode("path", {
1357
+ class: "key-cross",
1358
+ d: "M9 9L26 26M26 9L9 26"
1359
+ })], -1)), createTextVNode(" " + toDisplayString(__props.confirmLabel), 1)])) : createCommentVNode("v-if", true)
1360
+ ])], 2112);
1159
1361
  };
1160
1362
  }
1161
- }), [["__scopeId", "data-v-da022ee0"]]);
1162
- //#endregion
1163
- //#region src/components/ItemTile/Index.vue
1363
+ }), [["__scopeId", "data-v-d3415b18"]]);
1364
+ // src/services/ItemRarityFaceGradientMap.ts
1365
+ const ONE_STAR_FACE = "linear-gradient(#7e7e7d, #838383 30%, #909090 60%, #909090 77%)";
1366
+ const ItemRarityFaceGradientMap = {
1367
+ 0: ONE_STAR_FACE,
1368
+ 1: ONE_STAR_FACE,
1369
+ 3: "linear-gradient(#79809d, #7485a6 30%, #748faf 60%, #7298b9 77%)",
1370
+ 4: "linear-gradient(#7e77a2, #877aac 30%, #917db4 60%, #9c80bc 77%)",
1371
+ 5: "linear-gradient(#b0804c, #ba8446 30%, #c38946 60%, #cc8d43 77%)"
1372
+ };
1373
+ // src/components/ItemTile/Index.vue
1164
1374
  const _hoisted_1$22 = ["data-rarity"];
1165
- const _hoisted_2$17 = { class: "face" };
1166
- const _hoisted_3$15 = {
1167
- class: "count",
1168
- "aria-hidden": "true"
1169
- };
1170
- var Index_default$20 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1375
+ var Index_default$21 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1171
1376
  __name: "Index",
1172
1377
  props: {
1173
1378
  count: {},
1379
+ countSize: { default: "30cqh" },
1174
1380
  rarity: {}
1175
1381
  },
1176
1382
  setup(__props) {
1177
1383
  return (_ctx, _cache) => {
1178
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" An item's tile as the game's reward lists draw it, filling the box its parent gives it: the rarity's gradient lit\n from the foot, and the count in white on a darker strip across the bottom 24%, the corners rounded 7%. Measured on\n the wiki's Adventurer Handbook screenshot and the Reputation clip, which agree on the three, four and five star\n tiles and differ only in the count's size, which a screen sets as `--count-size` since it does not follow the\n tile's: the handbook's counts stand as high on its 188 tiles as on its 141. A one or two star tile is not measured\n yet and draws bare. The item's own art is the game's and does not ship "), createElementVNode("span", {
1384
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" An item's tile as the game's reward lists draw it, filling the box its parent gives it: the rarity's gradient lit\n from the foot, and the count in white on a darker strip across the bottom 24%, the corners rounded 7%. Measured on\n the wiki's Adventurer Handbook screenshot and the Reputation clip, which agree on the three, four and five star\n tiles, and the Expedition clip's grey tiles, whose items the table gives no stars (rarity zero). A count keeps\n the screen's size rather than the tile's, so each screen passes its own as `countSize`. A two star tile is not\n measured yet and draws bare. The item's own art is the game's and does not ship "), createElementVNode("span", {
1179
1385
  class: "item-tile",
1180
1386
  "data-rarity": __props.rarity
1181
- }, [createElementVNode("span", _hoisted_2$17, [createElementVNode("span", _hoisted_3$15, toDisplayString(__props.count), 1)])], 8, _hoisted_1$22)], 2112);
1387
+ }, [createElementVNode("span", {
1388
+ class: "face",
1389
+ style: normalizeStyle({ background: unref(ItemRarityFaceGradientMap)[__props.rarity] })
1390
+ }, [createElementVNode("span", {
1391
+ class: "count",
1392
+ "aria-hidden": "true",
1393
+ style: normalizeStyle({ fontSize: __props.countSize })
1394
+ }, toDisplayString(__props.count), 5)], 4)], 8, _hoisted_1$22)], 2112);
1182
1395
  };
1183
1396
  }
1184
- }), [["__scopeId", "data-v-8cf70011"]]);
1185
- //#endregion
1186
- //#region src/models/ExpeditionActionKind.ts
1397
+ }), [["__scopeId", "data-v-199913ce"]]);
1398
+ // src/models/ExpeditionActionKind.ts
1187
1399
  let ExpeditionActionKind = /* @__PURE__ */ function(ExpeditionActionKind) {
1188
1400
  ExpeditionActionKind["Claim"] = "claim";
1189
1401
  ExpeditionActionKind["Recall"] = "recall";
1190
1402
  ExpeditionActionKind["Send"] = "send";
1191
1403
  return ExpeditionActionKind;
1192
1404
  }({});
1193
- //#endregion
1194
- //#region src/components/ExpeditionScreen/Index.vue
1405
+ // src/components/ExpeditionScreen/Index.vue
1195
1406
  const _hoisted_1$21 = { class: "expedition-screen" };
1196
- const _hoisted_2$16 = { class: "limit" };
1197
- const _hoisted_3$14 = ["aria-label"];
1198
- const _hoisted_4$13 = { class: "nations" };
1199
- const _hoisted_5$12 = ["aria-pressed", "onClick"];
1200
- const _hoisted_6$11 = {
1407
+ const _hoisted_2$17 = { class: "limit" };
1408
+ const _hoisted_3$14 = { class: "nations" };
1409
+ const _hoisted_4$13 = ["aria-pressed", "onClick"];
1410
+ const _hoisted_5$12 = {
1201
1411
  key: 0,
1202
1412
  class: "alert",
1203
1413
  "aria-hidden": "true"
1204
1414
  };
1205
- const _hoisted_7$11 = { class: "pins" };
1206
- const _hoisted_8$8 = [
1415
+ const _hoisted_6$11 = { class: "pins" };
1416
+ const _hoisted_7$9 = [
1207
1417
  "aria-label",
1208
1418
  "aria-pressed",
1209
1419
  "onClick"
1210
1420
  ];
1211
- const _hoisted_9$7 = {
1421
+ const _hoisted_8$7 = {
1212
1422
  key: 0,
1213
1423
  class: "away"
1214
1424
  };
1215
- const _hoisted_10$7 = {
1425
+ const _hoisted_9$7 = {
1216
1426
  key: 0,
1217
1427
  class: "detail"
1218
1428
  };
1219
- const _hoisted_11$7 = { class: "detail-name" };
1220
- const _hoisted_12$7 = { class: "description" };
1221
- const _hoisted_13$7 = { class: "rewards-label" };
1222
- const _hoisted_14$7 = { class: "rewards" };
1223
- const _hoisted_15$6 = {
1429
+ const _hoisted_10$7 = { class: "detail-name" };
1430
+ const _hoisted_11$7 = { class: "description" };
1431
+ const _hoisted_12$6 = { class: "rewards-label" };
1432
+ const _hoisted_13$6 = { class: "rewards" };
1433
+ const _hoisted_14$6 = {
1224
1434
  key: 0,
1225
1435
  class: "status"
1226
1436
  };
1227
- const _hoisted_16$6 = {
1437
+ const _hoisted_15$6 = {
1228
1438
  key: 1,
1229
1439
  class: "durations"
1230
1440
  };
1231
- const _hoisted_17$6 = ["aria-pressed", "onClick"];
1232
- const _hoisted_18$5 = {
1441
+ const _hoisted_16$5 = ["aria-pressed", "onClick"];
1442
+ const _hoisted_17$5 = {
1233
1443
  key: 1,
1234
1444
  class: "characters"
1235
1445
  };
1236
- const _hoisted_19$5 = { class: "characters-title" };
1237
- const _hoisted_20$5 = ["disabled", "onClick"];
1238
- const _hoisted_21$5 = { class: "character-name" };
1239
- const _hoisted_22$4 = { class: "character-bonus" };
1240
- const _hoisted_23$3 = {
1446
+ const _hoisted_18$5 = { class: "characters-title" };
1447
+ const _hoisted_19$5 = ["disabled", "onClick"];
1448
+ const _hoisted_20$5 = { class: "character-name" };
1449
+ const _hoisted_21$5 = { class: "character-bonus" };
1450
+ const _hoisted_22$4 = {
1241
1451
  key: 0,
1242
1452
  class: "character-status"
1243
1453
  };
1244
- var Index_default$14 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1454
+ var Index_default$15 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1245
1455
  __name: "Index",
1246
1456
  props: /*@__PURE__*/ mergeModels({
1247
1457
  characters: {},
@@ -1295,23 +1505,23 @@ var Index_default$14 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1295
1505
  emit("send", __props.detail.id, characterId, hours.value);
1296
1506
  };
1297
1507
  return (_ctx, _cache) => {
1298
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Expedition screen as the public clip shows it at 1080 high (references/expedition-screen, 26 seconds): the title\n across the head with the expedition limit and the way out, the nations down the left, the places as pins over the\n map, and the picked place's panel on the right with its rewards, its durations and the button that acts on it. The\n map and the panel's picture are the game's art and do not ship, so they are drawn as plain sheets, and the pin's\n brackets as a square outline; the parity compares them against the frame "), createElementVNode("div", _hoisted_1$21, [
1299
- _cache[6] || (_cache[6] = createElementVNode("div", {
1300
- class: "map",
1508
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Expedition screen as the public clip shows it at 1080 high (references/expedition-screen, 26 seconds): the title\n across the head with the expedition limit and the way out, the nations down the left, the places as pins over the\n map, and the picked place's panel on the right with its rewards, its durations and the button that acts on it. The\n map is drawn over the world and is the game's art, which does not ship, so the screen is transparent there; the\n panel's picture is drawn as a plain sheet, and the picked pin's brackets as four corners "), createElementVNode("div", _hoisted_1$21, [
1509
+ _cache[6] || (_cache[6] = createElementVNode("span", {
1510
+ class: "emblem",
1301
1511
  "aria-hidden": "true"
1302
1512
  }, null, -1)),
1303
- createVNode(Index_default$30, null, {
1513
+ createVNode(Index_default$31, { class: "heading" }, {
1304
1514
  default: withCtx(() => [createTextVNode(toDisplayString(__props.title), 1)]),
1305
1515
  _: 1
1306
1516
  }),
1307
- createElementVNode("p", _hoisted_2$16, toDisplayString(__props.limitLabel), 1),
1308
- createElementVNode("button", {
1517
+ createElementVNode("p", _hoisted_2$17, toDisplayString(__props.limitLabel), 1),
1518
+ createVNode(Index_default$10, {
1309
1519
  class: "close",
1310
- "aria-label": __props.closeLabel,
1311
- type: "button",
1520
+ label: __props.closeLabel,
1521
+ mark: unref(CloseButtonMark).Cross,
1312
1522
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
1313
- }, "×", 8, _hoisted_3$14),
1314
- createElementVNode("ul", _hoisted_4$13, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.nations, ({ hasAlert, name }) => {
1523
+ }, null, 8, ["label", "mark"]),
1524
+ createElementVNode("ul", _hoisted_3$14, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.nations, ({ hasAlert, name }) => {
1315
1525
  return openBlock(), createElementBlock("li", { key: name }, [createElementVNode("button", {
1316
1526
  class: "nation",
1317
1527
  "aria-pressed": name === nation.value,
@@ -1323,10 +1533,10 @@ var Index_default$14 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1323
1533
  "aria-hidden": "true"
1324
1534
  }, null, -1)),
1325
1535
  createElementVNode("span", null, toDisplayString(name), 1),
1326
- hasAlert ? (openBlock(), createElementBlock("span", _hoisted_6$11, "!")) : createCommentVNode("v-if", true)
1327
- ], 8, _hoisted_5$12)]);
1536
+ hasAlert ? (openBlock(), createElementBlock("span", _hoisted_5$12, "!")) : createCommentVNode("v-if", true)
1537
+ ], 8, _hoisted_4$13)]);
1328
1538
  }), 128))]),
1329
- createElementVNode("ul", _hoisted_7$11, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.pins, ({ awayLabel, id, label, x, y }) => {
1539
+ createElementVNode("ul", _hoisted_6$11, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.pins, ({ awayLabel, id, label, x, y }) => {
1330
1540
  return openBlock(), createElementBlock("li", {
1331
1541
  key: id,
1332
1542
  style: normalizeStyle({
@@ -1339,21 +1549,25 @@ var Index_default$14 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1339
1549
  "aria-pressed": id === place.value,
1340
1550
  type: "button",
1341
1551
  onClick: ($event) => place.value = id
1342
- }, [..._cache[3] || (_cache[3] = [createElementVNode("span", { "aria-hidden": "true" }, "+", -1)])], 8, _hoisted_8$8), awayLabel ? (openBlock(), createElementBlock("span", _hoisted_9$7, toDisplayString(awayLabel), 1)) : createCommentVNode("v-if", true)], 4);
1552
+ }, [..._cache[3] || (_cache[3] = [createElementVNode("span", {
1553
+ class: "plus",
1554
+ "aria-hidden": "true"
1555
+ }, null, -1)])], 8, _hoisted_7$9), awayLabel ? (openBlock(), createElementBlock("span", _hoisted_8$7, toDisplayString(awayLabel), 1)) : createCommentVNode("v-if", true)], 4);
1343
1556
  }), 128))]),
1344
- __props.detail ? (openBlock(), createElementBlock("section", _hoisted_10$7, [
1345
- createElementVNode("p", _hoisted_11$7, toDisplayString(__props.detail.name), 1),
1557
+ __props.detail ? (openBlock(), createElementBlock("section", _hoisted_9$7, [
1558
+ createElementVNode("p", _hoisted_10$7, toDisplayString(__props.detail.name), 1),
1346
1559
  _cache[4] || (_cache[4] = createElementVNode("div", {
1347
1560
  class: "picture",
1348
1561
  "aria-hidden": "true"
1349
1562
  }, null, -1)),
1350
- createElementVNode("p", _hoisted_12$7, toDisplayString(__props.detail.description), 1),
1351
- createElementVNode("p", _hoisted_13$7, toDisplayString(__props.rewardsLabel), 1),
1352
- createElementVNode("ul", _hoisted_14$7, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.detail.rewards, ({ countLabel, label, rarity }, index) => {
1353
- return openBlock(), createElementBlock("li", { key: index }, [createVNode(Index_default$20, {
1563
+ createElementVNode("p", _hoisted_11$7, toDisplayString(__props.detail.description), 1),
1564
+ createElementVNode("p", _hoisted_12$6, toDisplayString(__props.rewardsLabel), 1),
1565
+ createElementVNode("ul", _hoisted_13$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.detail.rewards, ({ countLabel, label, rarity }, index) => {
1566
+ return openBlock(), createElementBlock("li", { key: index }, [createVNode(Index_default$21, {
1354
1567
  class: "item",
1355
1568
  "aria-label": label,
1356
1569
  count: countLabel,
1570
+ "count-size": "26.67cqh",
1357
1571
  rarity,
1358
1572
  role: "img"
1359
1573
  }, null, 8, [
@@ -1362,25 +1576,25 @@ var Index_default$14 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1362
1576
  "rarity"
1363
1577
  ])]);
1364
1578
  }), 128))]),
1365
- __props.detail.statusLabel ? (openBlock(), createElementBlock("p", _hoisted_15$6, toDisplayString(__props.detail.statusLabel), 1)) : (openBlock(), createElementBlock("ul", _hoisted_16$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.detail.durations, (duration) => {
1366
- return openBlock(), createElementBlock("li", { key: duration }, [createElementVNode("button", {
1367
- "aria-pressed": duration === hours.value,
1579
+ __props.detail.statusLabel ? (openBlock(), createElementBlock("p", _hoisted_14$6, toDisplayString(__props.detail.statusLabel), 1)) : (openBlock(), createElementBlock("ul", _hoisted_15$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.detail.durations, ({ hours: durationHours, label }) => {
1580
+ return openBlock(), createElementBlock("li", { key: durationHours }, [createElementVNode("button", {
1581
+ "aria-pressed": durationHours === hours.value,
1368
1582
  type: "button",
1369
- onClick: ($event) => hours.value = duration
1370
- }, toDisplayString(duration) + "h", 9, _hoisted_17$6)]);
1583
+ onClick: ($event) => hours.value = durationHours
1584
+ }, toDisplayString(label), 9, _hoisted_16$5)]);
1371
1585
  }), 128))]))
1372
1586
  ])) : createCommentVNode("v-if", true),
1373
- picking.value && __props.detail ? (openBlock(), createElementBlock("section", _hoisted_18$5, [createElementVNode("p", _hoisted_19$5, toDisplayString(__props.characterTitle), 1), createElementVNode("ul", null, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.characters, ({ bonusLabel, id, label, statusLabel }) => {
1587
+ picking.value && __props.detail ? (openBlock(), createElementBlock("section", _hoisted_17$5, [createElementVNode("p", _hoisted_18$5, toDisplayString(__props.characterTitle), 1), createElementVNode("ul", null, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.characters, ({ bonusLabel, id, label, statusLabel }) => {
1374
1588
  return openBlock(), createElementBlock("li", { key: id }, [createElementVNode("button", {
1375
1589
  class: "character",
1376
1590
  disabled: statusLabel !== "",
1377
1591
  type: "button",
1378
1592
  onClick: ($event) => pick(id)
1379
1593
  }, [
1380
- createElementVNode("span", _hoisted_21$5, toDisplayString(label), 1),
1381
- createElementVNode("span", _hoisted_22$4, toDisplayString(bonusLabel), 1),
1382
- statusLabel ? (openBlock(), createElementBlock("span", _hoisted_23$3, toDisplayString(statusLabel), 1)) : createCommentVNode("v-if", true)
1383
- ], 8, _hoisted_20$5)]);
1594
+ createElementVNode("span", _hoisted_20$5, toDisplayString(label), 1),
1595
+ createElementVNode("span", _hoisted_21$5, toDisplayString(bonusLabel), 1),
1596
+ statusLabel ? (openBlock(), createElementBlock("span", _hoisted_22$4, toDisplayString(statusLabel), 1)) : createCommentVNode("v-if", true)
1597
+ ], 8, _hoisted_19$5)]);
1384
1598
  }), 128))])])) : createCommentVNode("v-if", true),
1385
1599
  __props.detail ? (openBlock(), createElementBlock("button", {
1386
1600
  key: 2,
@@ -1394,11 +1608,10 @@ var Index_default$14 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1394
1608
  ])], 2112);
1395
1609
  };
1396
1610
  }
1397
- }), [["__scopeId", "data-v-ee73652f"]]);
1398
- //#endregion
1399
- //#region src/components/TwoColumnScreen/Index.vue
1611
+ }), [["__scopeId", "data-v-9e69ff99"]]);
1612
+ // src/components/TwoColumnScreen/Index.vue
1400
1613
  const _hoisted_1$20 = { class: "two-column-screen" };
1401
- var Index_default$34 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1614
+ var Index_default$35 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1402
1615
  __name: "Index",
1403
1616
  setup(__props) {
1404
1617
  return (_ctx, _cache) => {
@@ -1406,8 +1619,7 @@ var Index_default$34 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1406
1619
  };
1407
1620
  }
1408
1621
  }), [["__scopeId", "data-v-d9df7bbc"]]);
1409
- //#endregion
1410
- //#region src/models/ForgeQueueState.ts
1622
+ // src/models/ForgeQueueState.ts
1411
1623
  let ForgeQueueState = /* @__PURE__ */ function(ForgeQueueState) {
1412
1624
  ForgeQueueState["Complete"] = "Complete";
1413
1625
  ForgeQueueState["Forging"] = "Forging";
@@ -1415,17 +1627,15 @@ let ForgeQueueState = /* @__PURE__ */ function(ForgeQueueState) {
1415
1627
  ForgeQueueState["Locked"] = "Locked";
1416
1628
  return ForgeQueueState;
1417
1629
  }({});
1418
- //#endregion
1419
- //#region src/models/ForgeTab.ts
1630
+ // src/models/ForgeTab.ts
1420
1631
  let ForgeTab = /* @__PURE__ */ function(ForgeTab) {
1421
1632
  ForgeTab["Materials"] = "Materials";
1422
1633
  ForgeTab["Queues"] = "Queues";
1423
1634
  return ForgeTab;
1424
1635
  }({});
1425
- //#endregion
1426
- //#region src/components/ForgeScreen/Index.vue
1636
+ // src/components/ForgeScreen/Index.vue
1427
1637
  const _hoisted_1$19 = { class: "head" };
1428
- const _hoisted_2$15 = {
1638
+ const _hoisted_2$16 = {
1429
1639
  class: "title",
1430
1640
  role: "heading",
1431
1641
  "aria-level": "1"
@@ -1434,50 +1644,63 @@ const _hoisted_3$13 = { class: "tabs" };
1434
1644
  const _hoisted_4$12 = ["aria-pressed"];
1435
1645
  const _hoisted_5$11 = ["aria-pressed"];
1436
1646
  const _hoisted_6$10 = { class: "coins" };
1437
- const _hoisted_7$10 = ["aria-label"];
1438
- const _hoisted_8$7 = { class: "recipes" };
1439
- const _hoisted_9$6 = [
1647
+ const _hoisted_7$8 = {
1648
+ key: 0,
1649
+ class: "recipes"
1650
+ };
1651
+ const _hoisted_8$6 = [
1440
1652
  "aria-pressed",
1441
1653
  "disabled",
1442
1654
  "onClick"
1443
1655
  ];
1444
- const _hoisted_10$6 = { class: "recipe-name" };
1445
- const _hoisted_11$6 = { class: "recipe-time" };
1446
- const _hoisted_12$6 = { class: "detail" };
1447
- const _hoisted_13$6 = ["aria-label", "max"];
1448
- const _hoisted_14$6 = { class: "total-time" };
1449
- const _hoisted_15$5 = { class: "item-icon" };
1450
- const _hoisted_16$5 = { class: "item-count" };
1451
- const _hoisted_17$5 = { class: "amount-label" };
1452
- const _hoisted_18$4 = { class: "amount-end amount-max" };
1453
- const _hoisted_19$4 = { class: "materials-box" };
1454
- const _hoisted_20$4 = { class: "materials-head" };
1455
- const _hoisted_21$4 = { class: "materials-title" };
1456
- const _hoisted_22$3 = { class: "support-title" };
1457
- const _hoisted_23$2 = { class: "required" };
1458
- const _hoisted_24$1 = {
1656
+ const _hoisted_9$6 = { class: "recipe-name" };
1657
+ const _hoisted_10$6 = { class: "recipe-time" };
1658
+ const _hoisted_11$6 = {
1459
1659
  key: 1,
1460
- class: "refusal"
1660
+ class: "queues"
1461
1661
  };
1462
- const _hoisted_25$1 = {
1662
+ const _hoisted_12$5 = ["data-state"];
1663
+ const _hoisted_13$5 = { class: "queue-name" };
1664
+ const _hoisted_14$5 = { class: "queue-progress" };
1665
+ const _hoisted_15$5 = { class: "queue-ready" };
1666
+ const _hoisted_16$4 = { class: "queue-time" };
1667
+ const _hoisted_17$4 = { class: "detail" };
1668
+ const _hoisted_18$4 = ["aria-label", "max"];
1669
+ const _hoisted_19$4 = { class: "total-time" };
1670
+ const _hoisted_20$4 = { class: "amount-label" };
1671
+ const _hoisted_21$4 = { class: "amount-end amount-max" };
1672
+ const _hoisted_22$3 = { class: "required" };
1673
+ const _hoisted_23$2 = {
1463
1674
  key: 1,
1464
- class: "queues"
1675
+ class: "refusal"
1465
1676
  };
1466
- const _hoisted_26$1 = ["data-state"];
1467
- const _hoisted_27$1 = { class: "queue-name" };
1468
- const _hoisted_28$1 = { class: "queue-progress" };
1469
- const _hoisted_29$1 = { class: "queue-time" };
1470
- const _hoisted_30$1 = ["onClick"];
1471
- var Index_default$15 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1677
+ const _hoisted_24$2 = { class: "detail-heading" };
1678
+ const _hoisted_25$2 = {
1679
+ key: 0,
1680
+ "aria-hidden": "true",
1681
+ class: "detail-ring"
1682
+ };
1683
+ const _hoisted_26$2 = { class: "detail-forged" };
1684
+ const _hoisted_27$2 = { class: "detail-track" };
1685
+ const _hoisted_28$2 = { class: "item-icon" };
1686
+ const _hoisted_29$2 = { class: "item-count" };
1687
+ const _hoisted_30$2 = { class: "materials-box" };
1688
+ const _hoisted_31$2 = { class: "materials-head" };
1689
+ const _hoisted_32$2 = { class: "materials-title" };
1690
+ const _hoisted_33$1 = { class: "support-title" };
1691
+ const _hoisted_34$1 = { class: "material-count" };
1692
+ var Index_default$16 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1472
1693
  __name: "Index",
1473
1694
  props: /*@__PURE__*/ mergeModels({
1474
1695
  amountLabel: {},
1475
1696
  amountMaximum: {},
1476
1697
  closeLabel: {},
1477
1698
  coins: {},
1699
+ materialCountLabel: {},
1478
1700
  materialsBoxLabel: {},
1479
1701
  materialsLabel: {},
1480
1702
  obtainLabel: {},
1703
+ queueDetail: {},
1481
1704
  queues: {},
1482
1705
  queuesLabel: {},
1483
1706
  recipes: {},
@@ -1511,107 +1734,133 @@ var Index_default$15 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1511
1734
  const tab = useModel(__props, "tab");
1512
1735
  const emit = __emit;
1513
1736
  return (_ctx, _cache) => {
1514
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The forge, the blacksmith's screen: its two tabs across the head with the coins and the way out, the recipes on the\n left with the chosen one's amount and cost beside them, or the queues each holding an order that forges over real\n time and is obtained when it is done. Provisional: every place, size and colour here waits on the forge screen's\n passes against the public clip of the Wagner forge (references/forge-screen) and the owed order-queue recording "), createVNode(Index_default$34, { class: "forge-screen" }, {
1515
- default: withCtx(() => [createElementVNode("header", _hoisted_1$19, [
1516
- createElementVNode("p", _hoisted_2$15, toDisplayString(__props.title), 1),
1517
- createElementVNode("div", _hoisted_3$13, [createElementVNode("button", {
1518
- class: "tab",
1519
- "aria-pressed": tab.value === unref(ForgeTab).Materials,
1520
- type: "button",
1521
- onClick: _cache[0] || (_cache[0] = ($event) => tab.value = unref(ForgeTab).Materials)
1522
- }, toDisplayString(__props.materialsLabel), 9, _hoisted_4$12), createElementVNode("button", {
1523
- class: "tab",
1524
- "aria-pressed": tab.value === unref(ForgeTab).Queues,
1525
- type: "button",
1526
- onClick: _cache[1] || (_cache[1] = ($event) => tab.value = unref(ForgeTab).Queues)
1527
- }, toDisplayString(__props.queuesLabel), 9, _hoisted_5$11)]),
1528
- createElementVNode("p", _hoisted_6$10, toDisplayString(__props.coins), 1),
1529
- createElementVNode("button", {
1530
- class: "close",
1531
- "aria-label": __props.closeLabel,
1532
- type: "button",
1533
- onClick: _cache[2] || (_cache[2] = ($event) => emit("close"))
1534
- }, "×", 8, _hoisted_7$10)
1535
- ]), tab.value === unref(ForgeTab).Materials ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createElementVNode("ul", _hoisted_8$7, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.recipes, (recipe) => {
1536
- return openBlock(), createElementBlock("li", { key: recipe.id }, [createElementVNode("button", {
1537
- class: "recipe",
1538
- "aria-pressed": recipe.id === recipeId.value,
1539
- disabled: !recipe.isOpen,
1540
- type: "button",
1541
- onClick: ($event) => recipeId.value = recipe.id
1542
- }, [
1543
- _cache[5] || (_cache[5] = createElementVNode("span", {
1544
- class: "recipe-tile",
1545
- "aria-hidden": "true"
1546
- }, null, -1)),
1547
- createElementVNode("span", _hoisted_10$6, toDisplayString(recipe.name), 1),
1548
- createElementVNode("span", _hoisted_11$6, toDisplayString(recipe.forgeTimeLabel), 1)
1549
- ], 8, _hoisted_9$6)]);
1550
- }), 128))]), createElementVNode("div", _hoisted_12$6, [
1551
- withDirectives(createElementVNode("input", {
1552
- "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => amount.value = $event),
1553
- "aria-label": __props.amountLabel,
1554
- class: "amount",
1555
- max: __props.amountMaximum,
1556
- min: "1",
1557
- type: "range"
1558
- }, null, 8, _hoisted_13$6), [[
1559
- vModelText,
1560
- amount.value,
1561
- void 0,
1562
- { number: true }
1563
- ]]),
1564
- createElementVNode("p", _hoisted_14$6, toDisplayString(__props.totalTimeLabel), 1),
1565
- createElementVNode("div", _hoisted_15$5, [createElementVNode("span", _hoisted_16$5, toDisplayString(__props.yieldCount), 1)]),
1566
- createElementVNode("p", _hoisted_17$5, toDisplayString(__props.amountLabel), 1),
1567
- _cache[10] || (_cache[10] = createElementVNode("span", {
1568
- "aria-hidden": "true",
1569
- class: "amount-step amount-minus"
1570
- }, "−", -1)),
1571
- _cache[11] || (_cache[11] = createElementVNode("span", { class: "amount-end amount-min" }, "1", -1)),
1572
- createElementVNode("span", _hoisted_18$4, toDisplayString(__props.amountMaximum), 1),
1573
- _cache[12] || (_cache[12] = createElementVNode("span", {
1574
- "aria-hidden": "true",
1575
- class: "amount-step amount-plus"
1576
- }, "+", -1)),
1577
- createElementVNode("section", _hoisted_19$4, [
1578
- createElementVNode("header", _hoisted_20$4, [createElementVNode("p", _hoisted_21$4, toDisplayString(__props.materialsBoxLabel), 1), createElementVNode("p", _hoisted_22$3, toDisplayString(__props.supportLabel), 1)]),
1579
- _cache[6] || (_cache[6] = createElementVNode("span", { class: "slot slot-first" }, null, -1)),
1580
- _cache[7] || (_cache[7] = createElementVNode("span", { class: "slot slot-second" }, null, -1)),
1581
- _cache[8] || (_cache[8] = createElementVNode("span", { class: "slot slot-third" }, null, -1)),
1582
- _cache[9] || (_cache[9] = createElementVNode("span", { class: "support-portrait" }, null, -1))
1737
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The forge, the blacksmith's screen: its two tabs across the head with the coins and the way out, the recipes on the\n left with the chosen one's amount and cost beside them, or the queues each holding an order that forges over real\n time, with the picked queue's time left, units done and Obtain beside them. The forging ring is drawn at the moment\n the reference shows, not animated "), createVNode(Index_default$35, { class: "forge-screen" }, {
1738
+ default: withCtx(() => [
1739
+ createElementVNode("header", _hoisted_1$19, [
1740
+ createElementVNode("p", _hoisted_2$16, toDisplayString(__props.title), 1),
1741
+ createElementVNode("div", _hoisted_3$13, [createElementVNode("button", {
1742
+ class: "tab",
1743
+ "aria-pressed": tab.value === unref(ForgeTab).Materials,
1744
+ type: "button",
1745
+ onClick: _cache[0] || (_cache[0] = ($event) => tab.value = unref(ForgeTab).Materials)
1746
+ }, toDisplayString(__props.materialsLabel), 9, _hoisted_4$12), createElementVNode("button", {
1747
+ class: "tab",
1748
+ "aria-pressed": tab.value === unref(ForgeTab).Queues,
1749
+ type: "button",
1750
+ onClick: _cache[1] || (_cache[1] = ($event) => tab.value = unref(ForgeTab).Queues)
1751
+ }, toDisplayString(__props.queuesLabel), 9, _hoisted_5$11)]),
1752
+ createElementVNode("p", _hoisted_6$10, toDisplayString(__props.coins), 1),
1753
+ createVNode(Index_default$10, {
1754
+ class: "close",
1755
+ label: __props.closeLabel,
1756
+ mark: unref(CloseButtonMark).Cross,
1757
+ onClick: _cache[2] || (_cache[2] = ($event) => emit("close"))
1758
+ }, null, 8, ["label", "mark"])
1583
1759
  ]),
1584
- createElementVNode("p", _hoisted_23$2, toDisplayString(__props.requiredCoins), 1),
1585
- !__props.refusalLabel ? (openBlock(), createElementBlock("button", {
1586
- key: 0,
1587
- class: "start",
1588
- type: "button",
1589
- onClick: _cache[4] || (_cache[4] = ($event) => emit("start"))
1590
- }, toDisplayString(__props.startLabel), 1)) : (openBlock(), createElementBlock("p", _hoisted_24$1, toDisplayString(__props.refusalLabel), 1))
1591
- ])], 64)) : (openBlock(), createElementBlock("ul", _hoisted_25$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.queues, (queue) => {
1592
- return openBlock(), createElementBlock("li", {
1593
- key: queue.id,
1594
- class: "queue",
1595
- "data-state": queue.state
1596
- }, [
1597
- createElementVNode("span", _hoisted_27$1, toDisplayString(queue.name), 1),
1598
- createElementVNode("span", _hoisted_28$1, toDisplayString(queue.progressLabel), 1),
1599
- createElementVNode("span", _hoisted_29$1, toDisplayString(queue.timeLabel), 1),
1600
- queue.state === unref(ForgeQueueState).Complete ? (openBlock(), createElementBlock("button", {
1601
- key: 0,
1602
- class: "obtain",
1760
+ tab.value === unref(ForgeTab).Materials ? (openBlock(), createElementBlock("ul", _hoisted_7$8, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.recipes, (recipe) => {
1761
+ return openBlock(), createElementBlock("li", { key: recipe.id }, [createElementVNode("button", {
1762
+ class: "recipe",
1763
+ "aria-pressed": recipe.id === recipeId.value,
1764
+ disabled: !recipe.isOpen,
1603
1765
  type: "button",
1604
- onClick: ($event) => emit("obtain", queue.id)
1605
- }, toDisplayString(__props.obtainLabel), 9, _hoisted_30$1)) : createCommentVNode("v-if", true)
1606
- ], 8, _hoisted_26$1);
1607
- }), 128))]))]),
1766
+ onClick: ($event) => recipeId.value = recipe.id
1767
+ }, [
1768
+ _cache[6] || (_cache[6] = createElementVNode("span", {
1769
+ class: "recipe-tile",
1770
+ "aria-hidden": "true"
1771
+ }, null, -1)),
1772
+ createElementVNode("span", _hoisted_9$6, toDisplayString(recipe.name), 1),
1773
+ createElementVNode("span", _hoisted_10$6, toDisplayString(recipe.forgeTimeLabel), 1)
1774
+ ], 8, _hoisted_8$6)]);
1775
+ }), 128))])) : (openBlock(), createElementBlock("ul", _hoisted_11$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.queues, (queue) => {
1776
+ return openBlock(), createElementBlock("li", {
1777
+ key: queue.id,
1778
+ class: normalizeClass([{ selected: queue.id === __props.queueDetail?.id }, "queue"]),
1779
+ "data-state": queue.state
1780
+ }, [
1781
+ _cache[7] || (_cache[7] = createElementVNode("span", {
1782
+ "aria-hidden": "true",
1783
+ class: "queue-tile"
1784
+ }, null, -1)),
1785
+ createElementVNode("span", _hoisted_13$5, toDisplayString(queue.name), 1),
1786
+ createElementVNode("span", _hoisted_14$5, toDisplayString(queue.progressLabel), 1),
1787
+ createElementVNode("span", _hoisted_15$5, toDisplayString(queue.readyLabel), 1),
1788
+ createElementVNode("span", _hoisted_16$4, toDisplayString(queue.timeLabel), 1)
1789
+ ], 10, _hoisted_12$5);
1790
+ }), 128))])),
1791
+ tab.value === unref(ForgeTab).Materials ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [_cache[8] || (_cache[8] = createElementVNode("span", {
1792
+ "aria-hidden": "true",
1793
+ class: "sort"
1794
+ }, null, -1)), _cache[9] || (_cache[9] = createElementVNode("span", {
1795
+ "aria-hidden": "true",
1796
+ class: "sort-toggle"
1797
+ }, null, -1))], 64)) : createCommentVNode("v-if", true),
1798
+ createElementVNode("div", _hoisted_17$4, [
1799
+ tab.value === unref(ForgeTab).Materials ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
1800
+ withDirectives(createElementVNode("input", {
1801
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => amount.value = $event),
1802
+ "aria-label": __props.amountLabel,
1803
+ class: "amount",
1804
+ max: __props.amountMaximum,
1805
+ min: "1",
1806
+ type: "range"
1807
+ }, null, 8, _hoisted_18$4), [[
1808
+ vModelText,
1809
+ amount.value,
1810
+ void 0,
1811
+ { number: true }
1812
+ ]]),
1813
+ createElementVNode("p", _hoisted_19$4, toDisplayString(__props.totalTimeLabel), 1),
1814
+ createElementVNode("p", _hoisted_20$4, toDisplayString(__props.amountLabel), 1),
1815
+ _cache[10] || (_cache[10] = createElementVNode("span", {
1816
+ "aria-hidden": "true",
1817
+ class: "amount-step amount-minus"
1818
+ }, "−", -1)),
1819
+ _cache[11] || (_cache[11] = createElementVNode("span", { class: "amount-end amount-min" }, "1", -1)),
1820
+ createElementVNode("span", _hoisted_21$4, toDisplayString(__props.amountMaximum), 1),
1821
+ _cache[12] || (_cache[12] = createElementVNode("span", {
1822
+ "aria-hidden": "true",
1823
+ class: "amount-step amount-plus"
1824
+ }, "+", -1)),
1825
+ createElementVNode("p", _hoisted_22$3, toDisplayString(__props.requiredCoins), 1),
1826
+ !__props.refusalLabel ? (openBlock(), createElementBlock("button", {
1827
+ key: 0,
1828
+ class: "action",
1829
+ type: "button",
1830
+ onClick: _cache[4] || (_cache[4] = ($event) => emit("start"))
1831
+ }, toDisplayString(__props.startLabel), 1)) : (openBlock(), createElementBlock("p", _hoisted_23$2, toDisplayString(__props.refusalLabel), 1))
1832
+ ], 64)) : __props.queueDetail ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
1833
+ createElementVNode("p", _hoisted_24$2, toDisplayString(__props.queueDetail.headingLabel), 1),
1834
+ __props.queueDetail.progress < 1 ? (openBlock(), createElementBlock("span", _hoisted_25$2)) : createCommentVNode("v-if", true),
1835
+ createElementVNode("p", _hoisted_26$2, toDisplayString(__props.queueDetail.forgedLabel), 1),
1836
+ createElementVNode("span", _hoisted_27$2, [createElementVNode("span", {
1837
+ class: "detail-fill",
1838
+ style: normalizeStyle({ width: `${__props.queueDetail.progress * 100}%` })
1839
+ }, null, 4)]),
1840
+ __props.queueDetail.isObtainable ? (openBlock(), createElementBlock("button", {
1841
+ key: 1,
1842
+ class: "action",
1843
+ type: "button",
1844
+ onClick: _cache[5] || (_cache[5] = ($event) => emit("obtain", __props.queueDetail.id))
1845
+ }, toDisplayString(__props.obtainLabel), 1)) : createCommentVNode("v-if", true)
1846
+ ], 64)) : createCommentVNode("v-if", true),
1847
+ createElementVNode("div", _hoisted_28$2, [createElementVNode("span", _hoisted_29$2, toDisplayString(__props.yieldCount), 1)]),
1848
+ createElementVNode("section", _hoisted_30$2, [
1849
+ createElementVNode("header", _hoisted_31$2, [createElementVNode("p", _hoisted_32$2, toDisplayString(__props.materialsBoxLabel), 1), createElementVNode("p", _hoisted_33$1, toDisplayString(__props.supportLabel), 1)]),
1850
+ _cache[13] || (_cache[13] = createElementVNode("span", { class: "slot slot-first" }, null, -1)),
1851
+ _cache[14] || (_cache[14] = createElementVNode("span", { class: "slot slot-second" }, null, -1)),
1852
+ _cache[15] || (_cache[15] = createElementVNode("span", { class: "slot slot-third" }, null, -1)),
1853
+ createElementVNode("p", _hoisted_34$1, toDisplayString(__props.materialCountLabel), 1),
1854
+ _cache[16] || (_cache[16] = createElementVNode("span", { class: "support-portrait" }, null, -1))
1855
+ ])
1856
+ ])
1857
+ ]),
1608
1858
  _: 1
1609
1859
  })], 2112);
1610
1860
  };
1611
1861
  }
1612
- }), [["__scopeId", "data-v-4426e963"]]);
1613
- //#endregion
1614
- //#region src/services/toCanvasRect.ts
1862
+ }), [["__scopeId", "data-v-7f108f1e"]]);
1863
+ // src/services/toCanvasRect.ts
1615
1864
  const toPair = ([x = 0, y = 0]) => [x, y];
1616
1865
  const toCanvasRect = ({ anchorMax, anchorMin, pivot, position, size }) => ({
1617
1866
  anchorMax: toPair(anchorMax),
@@ -1620,8 +1869,7 @@ const toCanvasRect = ({ anchorMax, anchorMin, pivot, position, size }) => ({
1620
1869
  position: toPair(position),
1621
1870
  size: toPair(size)
1622
1871
  });
1623
- //#endregion
1624
- //#region src/services/computeRectOffsets.ts
1872
+ // src/services/computeRectOffsets.ts
1625
1873
  const computeRectOffsets = ({ pivot, position, size }) => {
1626
1874
  const offsetMin = [position[0] - size[0] * pivot[0], position[1] - size[1] * pivot[1]];
1627
1875
  return {
@@ -1629,8 +1877,7 @@ const computeRectOffsets = ({ pivot, position, size }) => {
1629
1877
  offsetMin
1630
1878
  };
1631
1879
  };
1632
- //#endregion
1633
- //#region src/services/toCanvasRectStyle.ts
1880
+ // src/services/toCanvasRectStyle.ts
1634
1881
  const toAxis = (anchorMin, anchorMax, offsetMin, size, span, start) => [`calc(${start} + ${anchorMin} * ${span} + ${offsetMin} * var(--canvas-unit))`, `calc(${anchorMax - anchorMin} * ${span} + ${size} * var(--canvas-unit))`];
1635
1882
  const toCanvasRectStyle = (rect, isOnCanvas = false) => {
1636
1883
  const { anchorMax, anchorMin, size } = rect;
@@ -1645,8 +1892,7 @@ const toCanvasRectStyle = (rect, isOnCanvas = false) => {
1645
1892
  width
1646
1893
  };
1647
1894
  };
1648
- //#endregion
1649
- //#region src/components/GameRect/Index.vue
1895
+ // src/components/GameRect/Index.vue
1650
1896
  const _sfc_main = /*@__PURE__*/ defineComponent({
1651
1897
  __name: "Index",
1652
1898
  props: {
@@ -1668,37 +1914,43 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
1668
1914
  };
1669
1915
  }
1670
1916
  });
1671
- //#endregion
1672
- //#region src/components/GameScreen/Index.vue
1917
+ // src/components/GameScreen/Index.vue
1673
1918
  const _hoisted_1$18 = ["data-interaction-state"];
1674
- var Index_default$17 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1919
+ const _hoisted_2$15 = {
1920
+ key: 0,
1921
+ class: "world-backdrop"
1922
+ };
1923
+ var Index_default$18 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1675
1924
  __name: "Index",
1676
1925
  props: {
1677
1926
  interactionState: {},
1678
- isTouch: { type: Boolean }
1927
+ isTouch: { type: Boolean },
1928
+ isWorldBlurred: { type: Boolean }
1679
1929
  },
1680
1930
  setup(__props) {
1681
1931
  useCssVars((_ctx) => ({
1682
- "b3ebfd60": unref(GAME_CANVAS_INSET),
1683
- "v687962d1": unref(GAME_CANVAS_UNIT),
1684
- "v440f997e": unref(GAME_UNIT),
1685
- "v3dfd0b4f": unref(GAME_WHITE),
1686
- "v603eb8d0": unref(GAME_CURSOR),
1687
- "v62ea67cc": unref(GAME_FONT_FAMILY),
1688
- "v7e9afa3a": unref(MOBILE_INTERFACE_SCALE)
1932
+ "v26f2ac5d": unref(GAME_CANVAS_INSET),
1933
+ "v710ebbb8": unref(GAME_CANVAS_UNIT),
1934
+ "v0106a18b": unref(GAME_UNIT),
1935
+ "v1fe704e2": unref(GAME_WHITE),
1936
+ "v1172d2ee": unref(GAME_BACKDROP_BLUR),
1937
+ "v116adcb2": unref(GAME_BACKDROP_KEEP),
1938
+ "v11600e7e": unref(GAME_BACKDROP_WASH),
1939
+ "v88d81cc6": unref(GAME_CURSOR),
1940
+ "v2d8a0b6d": unref(GAME_FONT_FAMILY),
1941
+ "v31942f4d": unref(MOBILE_INTERFACE_SCALE)
1689
1942
  }));
1690
1943
  const style = computed(() => __props.isTouch === void 0 ? void 0 : { "--interface-scale": __props.isTouch ? MOBILE_INTERFACE_SCALE : 1 });
1691
1944
  return (_ctx, _cache) => {
1692
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The root every screen of the game's is drawn in: the window's own container, whose `--unit` is a pixel of the\n Game's 1920 by 1080 screen, `--canvas-unit` a unit of its interface's 1600 by 900 canvas, both times\n `--interface-scale`, the mobile client's on a touch screen, `--canvas-inset` how far the canvas stands in from\n Each side and `--white` the white its opening is drawn on, in the game's face and pointer. Each resolves where a\n Child uses it, against this container "), createElementVNode("div", {
1945
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The root every screen of the game's is drawn in: the window's own container, whose `--unit` is a pixel of the\n Game's 1920 by 1080 screen, or of the `--game-design-width` the screen sets on this root, `--canvas-unit` a unit\n of its interface's 1600 by 900 canvas, both times `--interface-scale`, the mobile client's on a touch screen,\n `--canvas-inset` how far the canvas stands in from\n Each side, `--white` the white its opening is drawn on and `--sparkle-clip-path` the four-pointed sparkle a star\n is clipped to, in the game's face and pointer. Each resolves where a\n Child uses it, against this container. A screen that opts in draws the world behind it blurred under its own\n Pieces, the blur taking what is painted behind this root and the wash added over it as light "), createElementVNode("div", {
1693
1946
  class: "game-screen",
1694
1947
  "data-interaction-state": __props.interactionState,
1695
1948
  style: normalizeStyle(style.value)
1696
- }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 12, _hoisted_1$18)], 2112);
1949
+ }, [__props.isWorldBlurred ? (openBlock(), createElementBlock("div", _hoisted_2$15, [..._cache[0] || (_cache[0] = [createElementVNode("div", { class: "world-blur" }, null, -1), createElementVNode("div", { class: "world-wash" }, null, -1)])])) : createCommentVNode("v-if", true), renderSlot(_ctx.$slots, "default", {}, void 0, true)], 12, _hoisted_1$18)], 2112);
1697
1950
  };
1698
1951
  }
1699
- }), [["__scopeId", "data-v-b0f87b0b"]]);
1700
- //#endregion
1701
- //#region src/components/InteractionPrompts/Index.vue
1952
+ }), [["__scopeId", "data-v-8d286db2"]]);
1953
+ // src/components/InteractionPrompts/Index.vue
1702
1954
  const _hoisted_1$17 = ["aria-current", "data-kind"];
1703
1955
  const _hoisted_2$14 = {
1704
1956
  key: 0,
@@ -1707,23 +1959,20 @@ const _hoisted_2$14 = {
1707
1959
  };
1708
1960
  const _hoisted_3$12 = ["onClick"];
1709
1961
  const _hoisted_4$11 = { class: "name" };
1710
- var Index_default$18 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1962
+ var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1711
1963
  __name: "Index",
1712
1964
  props: {
1713
- isTouch: {
1714
- type: Boolean,
1715
- default: false
1716
- },
1965
+ isTouch: { type: Boolean },
1717
1966
  prompts: {},
1718
1967
  selectedId: {}
1719
1968
  },
1720
1969
  emits: ["press"],
1721
1970
  setup(__props, { emit: __emit }) {
1722
- useCssVars((_ctx) => ({ "v0b0e8f3c": selectionDuration }));
1971
+ useCssVars((_ctx) => ({ "v4523eb16": selectionDuration }));
1723
1972
  const emit = __emit;
1724
1973
  const selectionDuration = `50ms`;
1725
1974
  return (_ctx, _cache) => {
1726
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The prompts beside the character: a row for each thing in reach, its kind's icon before its name in a pill, and the\n Key's cap before the row F acts on, with the pointer that leads from it into the pill. Measured off the English\n PC client's three-row pickup at 1080 high: each pill 63 high on a 72 pitch, its left edge 59 past the cap's, the\n cap 40 wide and 33 high, the icon 34 across. Each pill is a button of its own, as the game lets a row be pressed\n without the key "), createElementVNode("ul", { class: normalizeClass(["interaction-prompts", { touch: __props.isTouch }]) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.prompts, ({ id, kind, name }) => {
1975
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The prompts beside the character: a row for each thing in reach, its kind's icon before its name in a pill, and the\n Key's cap before the row F acts on, with the pointer that leads from it into the pill. Measured off the English\n PC client's three-row pickup at 1080 high: each pill 63 high on a 72 pitch, its left edge 59 past the cap's, the\n cap 40 wide and 33 high, the icon 32 across 17 in from the pill's edge. Each pill is a button of its own, as the\n game lets a row be pressed without the key "), createElementVNode("ul", { class: normalizeClass(["interaction-prompts", { touch: __props.isTouch }]) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.prompts, ({ id, kind, name }) => {
1727
1976
  return openBlock(), createElementBlock("li", {
1728
1977
  key: id,
1729
1978
  class: "prompt",
@@ -1740,17 +1989,15 @@ var Index_default$18 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1740
1989
  }), 128))], 2)], 2112);
1741
1990
  };
1742
1991
  }
1743
- }), [["__scopeId", "data-v-49059f1b"]]);
1744
- //#endregion
1745
- //#region src/models/InventorySort.ts
1992
+ }), [["__scopeId", "data-v-108aa9a5"]]);
1993
+ // src/models/InventorySort.ts
1746
1994
  let InventorySort = /* @__PURE__ */ function(InventorySort) {
1747
1995
  InventorySort["Level"] = "Level";
1748
1996
  InventorySort["Quality"] = "Quality";
1749
1997
  return InventorySort;
1750
1998
  }({});
1751
1999
  const InventorySorts = Object.values(InventorySort);
1752
- //#endregion
1753
- //#region src/components/InventoryScreen/Index.vue
2000
+ // src/components/InventoryScreen/Index.vue
1754
2001
  const _hoisted_1$16 = { class: "inventory-screen" };
1755
2002
  const _hoisted_2$13 = ["inert"];
1756
2003
  const _hoisted_3$11 = {
@@ -1765,61 +2012,81 @@ const _hoisted_5$10 = [
1765
2012
  "data-category",
1766
2013
  "onClick"
1767
2014
  ];
1768
- const _hoisted_6$9 = { class: "capacity" };
1769
- const _hoisted_7$9 = ["aria-label"];
1770
- const _hoisted_8$6 = { class: "grid" };
1771
- const _hoisted_9$5 = [
2015
+ const _hoisted_6$9 = {
2016
+ key: 0,
2017
+ viewBox: "0 0 144 144",
2018
+ "aria-hidden": "true"
2019
+ };
2020
+ const _hoisted_7$7 = ["d"];
2021
+ const _hoisted_8$5 = { class: "capacity" };
2022
+ const _hoisted_9$5 = ["aria-label"];
2023
+ const _hoisted_10$5 = { class: "grid" };
2024
+ const _hoisted_11$5 = [
1772
2025
  "aria-label",
1773
2026
  "aria-pressed",
1774
2027
  "data-rarity",
1775
2028
  "data-selected",
1776
2029
  "onClick"
1777
2030
  ];
1778
- const _hoisted_10$5 = { class: "caption" };
1779
- const _hoisted_11$5 = ["data-rarity"];
1780
- const _hoisted_12$5 = { class: "detail-name" };
1781
- const _hoisted_13$5 = { class: "detail-caption" };
1782
- const _hoisted_14$5 = ["aria-label", "aria-pressed"];
1783
- const _hoisted_15$4 = {
1784
- key: 1,
2031
+ const _hoisted_12$4 = {
2032
+ class: "stars",
2033
+ "aria-hidden": "true"
2034
+ };
2035
+ const _hoisted_13$4 = { class: "caption" };
2036
+ const _hoisted_14$4 = ["data-rarity"];
2037
+ const _hoisted_15$4 = { class: "detail-name" };
2038
+ const _hoisted_16$3 = {
2039
+ key: 0,
2040
+ class: "detail-stars",
2041
+ "aria-hidden": "true"
2042
+ };
2043
+ const _hoisted_17$3 = { class: "detail-caption" };
2044
+ const _hoisted_18$3 = {
2045
+ key: 2,
2046
+ class: "details"
2047
+ };
2048
+ const _hoisted_19$3 = ["aria-label", "aria-pressed"];
2049
+ const _hoisted_20$3 = {
2050
+ key: 3,
1785
2051
  class: "destroy"
1786
2052
  };
1787
- const _hoisted_16$4 = { class: "destroy-tip" };
1788
- const _hoisted_17$4 = {
2053
+ const _hoisted_21$3 = { class: "destroy-tip" };
2054
+ const _hoisted_22$2 = {
1789
2055
  key: 0,
1790
2056
  class: "destroy-cannot"
1791
2057
  };
1792
- const _hoisted_18$3 = { class: "quick-selects" };
1793
- const _hoisted_19$3 = ["data-rarity", "onClick"];
1794
- const _hoisted_20$3 = { class: "destroy-count" };
1795
- const _hoisted_21$3 = ["disabled"];
1796
- const _hoisted_22$2 = { class: "sort" };
1797
- const _hoisted_23$1 = ["value"];
1798
- const _hoisted_24 = ["aria-label", "data-descending"];
1799
- const _hoisted_25 = {
1800
- key: 3,
2058
+ const _hoisted_23$1 = { class: "quick-selects" };
2059
+ const _hoisted_24$1 = ["data-rarity", "onClick"];
2060
+ const _hoisted_25$1 = { class: "destroy-count" };
2061
+ const _hoisted_26$1 = ["disabled"];
2062
+ const _hoisted_27$1 = { class: "sort" };
2063
+ const _hoisted_28$1 = ["aria-label"];
2064
+ const _hoisted_29$1 = ["value"];
2065
+ const _hoisted_30$1 = ["aria-label", "data-descending"];
2066
+ const _hoisted_31$1 = {
2067
+ key: 5,
1801
2068
  class: "currencies"
1802
2069
  };
1803
- const _hoisted_26 = ["data-currency"];
1804
- const _hoisted_27 = { class: "currency-name" };
1805
- const _hoisted_28 = {
2070
+ const _hoisted_32$1 = ["data-currency"];
2071
+ const _hoisted_33 = { class: "currency-name" };
2072
+ const _hoisted_34 = {
1806
2073
  key: 0,
1807
2074
  class: "top-up"
1808
2075
  };
1809
- const _hoisted_29 = ["aria-label"];
1810
- const _hoisted_30 = { class: "confirm-title" };
1811
- const _hoisted_31 = { class: "confirm-list-label" };
1812
- const _hoisted_32 = { class: "confirm-names" };
1813
- const _hoisted_33 = { class: "confirm-warning" };
1814
- const _hoisted_34 = {
2076
+ const _hoisted_35 = ["aria-label"];
2077
+ const _hoisted_36 = { class: "confirm-title" };
2078
+ const _hoisted_37 = { class: "confirm-list-label" };
2079
+ const _hoisted_38 = { class: "confirm-names" };
2080
+ const _hoisted_39 = { class: "confirm-warning" };
2081
+ const _hoisted_40 = {
1815
2082
  key: 0,
1816
2083
  class: "confirm-warning"
1817
2084
  };
1818
- const _hoisted_35 = { class: "confirm-list-label" };
1819
- const _hoisted_36 = { class: "confirm-names" };
1820
- const _hoisted_37 = { class: "confirm-buttons" };
1821
- const _hoisted_38 = ["disabled"];
1822
- var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2085
+ const _hoisted_41 = { class: "confirm-list-label" };
2086
+ const _hoisted_42 = { class: "confirm-names" };
2087
+ const _hoisted_43 = { class: "confirm-buttons" };
2088
+ const _hoisted_44 = ["disabled"];
2089
+ var Index_default$20 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1823
2090
  __name: "Index",
1824
2091
  props: /*@__PURE__*/ mergeModels({
1825
2092
  backLabel: {},
@@ -1840,6 +2107,7 @@ var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1840
2107
  destroyRecoveredNames: {},
1841
2108
  destroySelectedLabel: {},
1842
2109
  destroyTipLabel: {},
2110
+ detailsLabel: {},
1843
2111
  isConfirming: { type: Boolean },
1844
2112
  isDestroyFull: { type: Boolean },
1845
2113
  isDestroying: { type: Boolean },
@@ -1884,6 +2152,16 @@ var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1884
2152
  "update:selectedId"
1885
2153
  ]),
1886
2154
  setup(__props, { emit: __emit }) {
2155
+ const itemCategoryGlyphMap = {
2156
+ ["Artifact"]: "M55 0h29.5q.88.04.5 3h1.5q2 .5 1.5 3.5l-3.5 5.5-4.5 3.5q-1.12 3.33 1.5 2.5l9 3 4 3 6 2 11.5 10.5 5 7 6 12 1 8 3 4v2l6 7-2.5 2.5h-3l-4.5 2.5v7l-2 3v2q-3.09 7.91-9 13l-1 3.5h-1.5l-5 5-11 7-11 1-4.5-3.5-2-3v-3l-1-2.5q-3.67-1.35-2 4.5l3 3v7l1.5 1.5q5.5 1 8-1l2.5 2.5-1 1-8 10-2 4.5h-13.5l-.5-1.5-11-13v-2q1.25-2.75 6.5-1.5 1.12 2 4.5 1l1-5.5q-1.75-.92-1-3.5-2.67-1.12-2 1.5l-3.5 3.5h-2l-1-1h-6l-8-4-12.5-11.5-5-7v-2l-4-7-2-8-1.5-1.5-7-3h-2.5v-2.5l9-10 1-4 2-2v-4l5-11q4.9-8.6 12.5-14.5l5-4 12-6h3l3.5-2.5v-2l-3.5-4.5-2.5-1.5-1-5 3-1.5v-3zm15 35-4 3 1 2-1 6-8 13q-2 2-5 3l-2 3-8 4h-6l-1 1q-4-1-2 4l7 3 5 1 9 5 5 6 6 9 1 7 2 3q-1 2 2 1l2-3v-4l3-6v-2l5-6 8-7 9-3 5-3h3q2 0 1-3l-1-2h-4l-12-5-7-7q-1-3-4-3v-1l-3-4-1-4-2-2v-6l-3-3zm-6 77q1 3-1 4-1 3 2 2l2-4v-2h-3z",
2157
+ ["CharacterDevelopmentItem"]: "M73 0h4v1.5q3.5 1.25 3 4.5h1.5l8 7h26l3 1 5.5 4.5 2 4v108l-3 4v1.5l-8.5 4h-26l-1 1h-3l-2.5 1-.5 2h-14l-3-3-3-1h-24q-1.25-2.25-6-1l-7.5-6.5q-1.83-2.17-1-7l-1-1v-13l1-1v-65l-1-1v-17l1-1v-3l2-5.5 3-1.5q-.75-2.25 1.5-1.5l2-2h25q.75-1.75 4-1l12.5-10.5v-1.5zm0 12-1 3 3 1q2-1 1 2l-6-1q-4 1-3 5l4 2 2 5q-1 2 2 1l1-1 1-4 3-2 2-3-3-3-2-2q-1-4-4-3zm-5 30-6 3-10 11-2 6v6l1 1-1 2 5 10 9 7 8 3h7l9-4q7-5 11-14v-12l-4-8q-4-7-11-10l-3-1h-13zm0 56q-1 2-4 1l-5 3h-2l-5 4-6 8-1 5-3 6v4l1 2 3 1h20l8-4h3l3 2 6 2h3l1 1 1-1h14l3-3-1-5-6-13-8-9-4-2q-6 1-7-2h-14z",
2158
+ ["Food"]: "M124.5 20q3-.5 3.5 1.5v2l-5 5v1.5h-1.5l-4.5 4.5-1 3q.5 2 3.5 1.5l13-11q1.83-1.67 6-1 2.25.75 1.5 4.5l-10 11-3 6 2.5 1.5 14-13 .5 9.5-7 13-12.5 13.5-9 5h-19q-2 4-8 4l-6.5-6.5v-2l4-3 2-4v-3l-1-1v-10l3-8 7.5-8.5 6-5 10-6 9-3 2-2z M27.5 23h9l1 1 7 1 10 6 10.5 10.5 4 9v17l5.5 6.5 13.5 11.5q-.75 2.25 1.5 1.5l4 5 10 8 22.5 21.5v4l-4.5 7.5-3 1h-5l-10.5-9.5q-20.43-24.57-43.5-46.5-3.25.75-4-1l-1 1h-12l-4-3h-3l-11.5-10.5-5-7-3-7-2-6v-8q2-1 1-5l3.5-5.5 9-3z M61.5 92q5.04.96 7.5 4.5l3 4v2l-6 8-22.5 23.5h-8q-1-2.5-3.5-2l-2-4.5v-7l9.5-9.5 17.5-14.5 1.5-2.5 3-2z",
2159
+ ["Furnishing"]: "M70.5 6h12l4.5 3.5v2l2.5 3.5h4l11 5h2l13 8 3.5 3.5q.87 3-3.5 1.5-1 2-2 0h-80q-1 2-5 1l-2.5-1 2.5-5h2l4-4 12-6h3q1.4-2.6 6-2l5.5-3.5v-2l2.5-3.5 3-1z M141.5 29q2.75-.25 2.5.5v8.5h-7.5l-5 4h-1.5l-2 5.5q2.25 1.25 1 6l3 5 1 6 2 3v5l2.5 3.5q4.75 1.25 6-1l.5 24h-8.5l-1-1-8 7h-5l-1.5-3-2.5-1q-2.75 1.25-.5 2.5v2l3 3v3l-4.5 4.5-9 4h-10l-1 1h-40l-1-1h-9l-1-1-6-1-5.5-5.5v-2l3-4v-2.5q-2.67-1.12-2 1.5l-1 2.5-2.5 1q-.75-1.75-4-1l-2.5-2.5-3.5-4.5-8-4-6.5-6.5-3-6.5q-2.96.38-3-.5v-42.5q7.59.51 12.5 5l6 1 5.5-3.5q-.5-4 2.5-4.5l5-2 1 1h88q.75-1.75 4-1l7-6 3-1h6l1-1zm-65.5 17-7 6q-3-1-2 2l-3 1v2l-15 17q-2 1-1 6l16 13h5v-1l5-6 4-3 2-3v-2l-2-4q-4-1-4 1-3-1-2 2l-6 5h-2l-4-3v-3l8-10 7-7h2l6 7 2 4 6 7v4l-19 21q-1 3 2 4h4l4-3 23-21v-3l-5-8-15-18q1-3-1-2-4-1-3-4l-2-1h-3zm35 53v2h4q-1-3-4-2zm-72 1v2h4v-2h-4zm18 0v2q-4-1-6 3l2 2 6-5q1-3-2-2zm42 3-1 1 4 3q3 1 2-1-1-4-5-3z M46.5 125h7l1 1q4.75-1.25 6 1h36l6-2h5q4.81 2.52 3.5 10l-2.5 1-8-3h-8l-4 2h-3l-1.5 1.5q.75 2.25-1.5 1.5l-4 4h-5l-8-7h-6l-1-1h-9l-5 2-2.5-3.5v-2l2.5-4.5 2-1z",
2160
+ ["Gadget"]: "M52.5 19h33l1 1 15 1 4 2h9l8 3h6q.75 1.75 4 1l4.5 3.5 1 4q-.5 3-4.5 2.5-1.25-2.25-6-1l-3 2-16 5-1.5 1.5-2 5v34l-3.5 4.5h-13q-1-2-5-1l-5.5 2q-.75 3.83 2.5 5 4.75-1.25 6 1 1-2 5-1l1 1h13l3.5-3.5v-7l1-1v-15l1-1v-10l1-3 2.5-2.5 4-1 4-3h3l2-2h8l1.5 1.5q-1 4 1 5v20l1 1v27l-1 1q1 5.5-1 8l-8.5 8.5-14 9-12 6h-23l-1-1h-5l-6-2h-7l-8-4h-9l-2-2h-3l-1-1h-3l-9-3-3.5-3.5-2-3v-27l1-2.5 2.5-1h4l2 1 4.5-2.5-1.5-2.5-7-2-6.5-4.5q-1.17-6.17 1-9l-1-3 1-2-1-2 1-1v-7l1-1v-9l2-5 3.5-3.5h2l4-4 6-1 14-6zm9.5 37-12 10-8 8v1h-1l-6 6v2q2 0 2 3l9 2 3 4-1 4-2 2-1 7-2 3v5h4l4-2 5-5 3-1 10-9 5-3q3-1 2-5l-2-3-3-1h-8l-3-3 4-15 2-3v-7h-4z",
2161
+ ["Material"]: "M40 0h12.5l.5 1.5 5.5 3.5 7 2 22 11h2l2 2h3l7.5 5.5q.75 4.25 4 6v26l-1 2.5q-3.25-.5-4.5 3h-7l-4 2-12 2-1.5 1.5-6 12q1 4-1 5v8l-1 2 1 1v6q1.75.75 1 4l2 4v4l-2.5 2.5-6 1-6.5-4.5-10-15-27-33q-2.17-2.83-1-9l1-1v-5l2-6 6-12 5-17 7-15.5z M121.5 63h7l9.5 5.5q.86 5.64 4 9v6l2 4v12l-1 1v13q-1.75.75-1 4l-1 3-4.5 5.5-6 3h-3q-1.5-1 1-2 3 .5 3.5-1.5l1-7-4-7v-2l-2-2-1-4-8.5-9.5-3-2-8-2-11-5h-6q-1 2-5 1l-2.5 2.5-1 7.5q-3.33 1.31-2-3.5-3-2-2-8l2-6 5.5-5.5 7-4h8l4-2 9-1 3-2q4.75 1.25 6-1z M105 103q5.5-1.25 7 2.5 2 2.5 1 8l-2 4v3l-5 9q-4.9 8.6-12.5 14.5h-18l-.5-1.5-4-5q.75-3.25-1-4v-6q1.75-.92 1-3.5l6.5-3h6l6-2 5-3 8.5-8.5 2-4.5z M30.5 108h11l12.5 11.5 5 6 1 3-4.5 3.5q-3.25-.75-4 1h-7l-7 3h-3l-3-1-12.5-12.5-6-8v-2l3.5-2.5h6l1-1h6l1-1z",
2162
+ ["PreciousItem"]: "M56.5 12q3-.5 3.5 1.5l-5 3q-.75 4.75 2.5 5.5l6 1 1 1h5l1 1h14l8-3h3l2.5-2.5-3-6 5.5-.5 5 2 3.5 3.5-1 5-6.5 7.5-4.5 3.5-3.5 4.5-7 3-14 1-1-1-9-1-15.5-14.5-4-7 2.5-3.5 5-3q4.75 1.25 6-1z M50.5 51h10l9 3h13l1-1 8-1 1-1h9l2 2 4.5 1 1 4h1.5l11.5 10.5 5 8 5 12v13l-1 1v4l-3 8-10.5 11.5-10 6-5 1-9 4h-4l-6 2h-15l-5-2h-4l-4-2h-3l-9-5h-2l-4.5-2q1.13-2.67-1.5-2l-6.5-5.5-7-11-2-10 1-1v-12l4-8v-2l3-5 11.5-11.5 3.5-2.5 1.5-2.5q4.25-.75 6-4zm24.5 15-2 2v3l-3 6-3 4-7 5-6 2q-3 1-2 5l4 2h3q1 3 6 4l6 8 2 4v4l2 1 3-1 5-10 6-6 8-5h2l2-3-2-3-6-2-4-3-8-8-2-6q0-4-4-3z",
2163
+ ["Quest"]: "M35.5 16h86l4 4 4 2h3l2.5 2.5 1 5-3.5 5.5-5.5 1q1 3.38-1 4.5v94l-1.5 1.5-4-1-21-11h-2l-7-4h-2l-4-3h-2l-3-2h-4l-7 3-4 3h-2l-31 15-2.5-3.5v-93l-2.5-3.5q-3.87-.63-5.5-3.5l-1-5 2-4.5 5.5-2 8-5zm40.5 13-5 2-5 5-1 3v9q2 1 1 6l5 9q-1 3 1 4v6l5 4 4-1 3-4 1-10 4-8 1-8 1-1-1-7-3-5-6-4h-5zm0 53-2 1-5 6v6l7 5 7-1 4-6v-4q-3-2-2-4-3 1-4-3h-5z"
2164
+ };
1887
2165
  const category = useModel(__props, "category");
1888
2166
  const sort = useModel(__props, "sort");
1889
2167
  const isDescending = useModel(__props, "isDescending");
@@ -1900,7 +2178,7 @@ var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1900
2178
  else (returnFocus?.isConnected ? returnFocus : trashButton.value)?.focus();
1901
2179
  });
1902
2180
  return (_ctx, _cache) => {
1903
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The bag, the B key's: its nine tabs across the head in the game's order, the open tab's room beside the way back,\n Its grid of four columns, the entry chosen with its detail panel, and the sort along the foot. Provisional: the\n Tabs' icons and the grid's entries' icons wait on the glyph pass, and the sort, the wallet's place and the\n Panel's stats and footer wait on the bag's other recordings "), createElementVNode("div", _hoisted_1$16, [
2181
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The bag, the B key's: its nine tabs across the head in the game's order, the open tab's room beside the way back,\n Its grid of seven columns, the entry chosen with its detail panel, and the sort along the foot. Provisional: the\n Weapon tab's icon is under the recording's webcam, the grid's entries' art waits on the game's own icons, and\n the panel's stats and footer wait on the bag's other recordings "), createElementVNode("div", _hoisted_1$16, [
1904
2182
  createElementVNode("div", {
1905
2183
  class: "bag",
1906
2184
  inert: __props.isConfirming
@@ -1914,46 +2192,48 @@ var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1914
2192
  "data-category": itemCategory,
1915
2193
  type: "button",
1916
2194
  onClick: ($event) => category.value = itemCategory
1917
- }, null, 8, _hoisted_5$10)]);
2195
+ }, [itemCategoryGlyphMap[itemCategory] ? (openBlock(), createElementBlock("svg", _hoisted_6$9, [createElementVNode("path", { d: itemCategoryGlyphMap[itemCategory] }, null, 8, _hoisted_7$7)])) : createCommentVNode("v-if", true)], 8, _hoisted_5$10)]);
1918
2196
  }), 128))]),
1919
- createElementVNode("p", _hoisted_6$9, toDisplayString(__props.capacity), 1),
2197
+ createElementVNode("p", _hoisted_8$5, toDisplayString(__props.capacity), 1),
1920
2198
  createElementVNode("button", {
1921
2199
  class: "back",
1922
2200
  "aria-label": __props.backLabel,
1923
2201
  type: "button",
1924
2202
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
1925
- }, null, 8, _hoisted_7$9),
1926
- createElementVNode("ul", _hoisted_8$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.cells, (cell) => {
2203
+ }, null, 8, _hoisted_9$5),
2204
+ createElementVNode("ul", _hoisted_10$5, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.cells, (cell) => {
1927
2205
  return openBlock(), createElementBlock("li", { key: cell.id }, [createElementVNode("button", {
1928
2206
  class: "cell",
1929
2207
  "aria-label": cell.name,
1930
2208
  "aria-pressed": __props.isDestroying ? Boolean(cell.isSelected) : cell.id === selectedCell.value?.id,
1931
2209
  "data-rarity": cell.rarity,
1932
- "data-selected": cell.isSelected,
2210
+ "data-selected": cell.isSelected || void 0,
1933
2211
  type: "button",
1934
2212
  onClick: ($event) => __props.isDestroying && cell.isDestroyable ? emit("choose", cell.id) : selectedId.value = cell.id
1935
- }, [createElementVNode("span", _hoisted_10$5, toDisplayString(cell.caption), 1)], 8, _hoisted_9$5)]);
2213
+ }, [createElementVNode("span", _hoisted_12$4, toDisplayString("★".repeat(cell.rarity)), 1), createElementVNode("span", _hoisted_13$4, toDisplayString(cell.caption), 1)], 8, _hoisted_11$5)]);
1936
2214
  }), 128))]),
1937
2215
  selectedCell.value ? (openBlock(), createElementBlock("section", {
1938
2216
  key: 0,
1939
2217
  class: "detail",
1940
2218
  "data-rarity": selectedCell.value.rarity
1941
2219
  }, [
1942
- createElementVNode("p", _hoisted_12$5, toDisplayString(selectedCell.value.name), 1),
1943
- createElementVNode("p", _hoisted_13$5, toDisplayString(selectedCell.value.caption), 1),
1944
- selectedCell.value.isUsable && !__props.isDestroying ? (openBlock(), createElementBlock("button", {
1945
- key: 0,
1946
- class: "use",
1947
- type: "button",
1948
- onClick: _cache[1] || (_cache[1] = ($event) => emit("use", selectedCell.value.id))
1949
- }, toDisplayString(__props.useLabel), 1)) : createCommentVNode("v-if", true),
2220
+ createElementVNode("p", _hoisted_15$4, toDisplayString(selectedCell.value.name), 1),
2221
+ __props.isSortable ? (openBlock(), createElementBlock("p", _hoisted_16$3, toDisplayString("★".repeat(selectedCell.value.rarity)), 1)) : createCommentVNode("v-if", true),
2222
+ createElementVNode("p", _hoisted_17$3, toDisplayString(selectedCell.value.caption), 1),
1950
2223
  selectedCell.value.isLockable && !__props.isDestroying ? (openBlock(), createElementBlock("button", {
1951
2224
  key: 1,
1952
2225
  class: "lock",
1953
2226
  type: "button",
1954
- onClick: _cache[2] || (_cache[2] = ($event) => emit("lock", selectedCell.value.id))
2227
+ onClick: _cache[1] || (_cache[1] = ($event) => emit("lock", selectedCell.value.id))
1955
2228
  }, toDisplayString(selectedCell.value.isLocked ? __props.unlockLabel : __props.lockLabel), 1)) : createCommentVNode("v-if", true)
1956
- ], 8, _hoisted_11$5)) : createCommentVNode("v-if", true),
2229
+ ], 8, _hoisted_14$4)) : createCommentVNode("v-if", true),
2230
+ selectedCell.value?.isUsable && !__props.isDestroying ? (openBlock(), createElementBlock("button", {
2231
+ key: 1,
2232
+ class: "use",
2233
+ type: "button",
2234
+ onClick: _cache[2] || (_cache[2] = ($event) => emit("use", selectedCell.value.id))
2235
+ }, toDisplayString(__props.useLabel), 1)) : createCommentVNode("v-if", true),
2236
+ __props.isSortable && !__props.isDestroying ? (openBlock(), createElementBlock("span", _hoisted_18$3, toDisplayString(__props.detailsLabel), 1)) : createCommentVNode("v-if", true),
1957
2237
  createElementVNode("button", {
1958
2238
  ref_key: "trashButton",
1959
2239
  ref: trashButton,
@@ -1962,59 +2242,63 @@ var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1962
2242
  "aria-pressed": __props.isDestroying,
1963
2243
  type: "button",
1964
2244
  onClick: _cache[3] || (_cache[3] = ($event) => emit("toggleDestroy"))
1965
- }, null, 8, _hoisted_14$5),
2245
+ }, [..._cache[10] || (_cache[10] = [createElementVNode("svg", {
2246
+ class: "trash-glyph",
2247
+ viewBox: "0 0 128 144",
2248
+ "aria-hidden": "true"
2249
+ }, [createElementVNode("path", {
2250
+ "fill-rule": "evenodd",
2251
+ d: "M54.5 21h21l1.5 1.5 4.5 6.5h22l3.5 3.5q1.67 1.83 1 6l-3.5 4.5q-2.5 2-8 1l-1-1h-64q-1 2-2 0-7.75 1.75-9.5-2.5-1.46-7.96 2.5-10.5l3-1h16q1-2 5-1l2.5-2.5 2.5-3.5 3-1z M27.5 54h70l5.5 2v71.5l-2.5 3.5-2 1h-68l-3-1-2.5-2.5q.75-3.25-1-4v-66l3.5-4.5zm11.5 9-4 4v46l1 1v3l1 2 6-1 2-3v-47l-1-2-3-3h-2zm24 0-4 4v41l-1 1v3l3 7 3 1q0-2 3-1l2-5q1-5-1-6-1-4 1-4v-34l-2-6-4-1zm24 0-2 1-3 3v41l-1 1 3 9 2 1h4l3-6v-46l-1-3-2-1h-3z"
2252
+ })], -1)])], 8, _hoisted_19$3),
1966
2253
  createCommentVNode(" The destroy mode's foot, in place of the sort or the currencies: its opening line, the quick selects by rarity,\n the count of the chosen entries and the Destroy button that opens the dialog. Provisional until the mode is recorded "),
1967
- __props.isDestroying ? (openBlock(), createElementBlock("section", _hoisted_15$4, [
1968
- createElementVNode("p", _hoisted_16$4, toDisplayString(__props.destroyTipLabel), 1),
1969
- selectedCell.value && !selectedCell.value.isDestroyable ? (openBlock(), createElementBlock("p", _hoisted_17$4, toDisplayString(__props.destroyCannotLabel), 1)) : createCommentVNode("v-if", true),
1970
- createElementVNode("ul", _hoisted_18$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.quickSelects, ({ label, rarity }) => {
2254
+ __props.isDestroying ? (openBlock(), createElementBlock("section", _hoisted_20$3, [
2255
+ createElementVNode("p", _hoisted_21$3, toDisplayString(__props.destroyTipLabel), 1),
2256
+ selectedCell.value && !selectedCell.value.isDestroyable ? (openBlock(), createElementBlock("p", _hoisted_22$2, toDisplayString(__props.destroyCannotLabel), 1)) : createCommentVNode("v-if", true),
2257
+ createElementVNode("ul", _hoisted_23$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.quickSelects, ({ label, rarity }) => {
1971
2258
  return openBlock(), createElementBlock("li", { key: rarity }, [createElementVNode("button", {
1972
2259
  class: "quick-select",
1973
2260
  "data-rarity": rarity,
1974
2261
  type: "button",
1975
2262
  onClick: ($event) => emit("quickSelect", rarity)
1976
- }, toDisplayString(label), 9, _hoisted_19$3)]);
2263
+ }, toDisplayString(label), 9, _hoisted_24$1)]);
1977
2264
  }), 128))]),
1978
- createElementVNode("p", _hoisted_20$3, toDisplayString(__props.destroySelectedLabel), 1),
2265
+ createElementVNode("p", _hoisted_25$1, toDisplayString(__props.destroySelectedLabel), 1),
1979
2266
  createElementVNode("button", {
1980
2267
  class: "destroy-button",
1981
2268
  disabled: !__props.destroyNames.length,
1982
2269
  type: "button",
1983
2270
  onClick: _cache[4] || (_cache[4] = ($event) => emit("destroy"))
1984
- }, toDisplayString(__props.destroyButtonLabel), 9, _hoisted_21$3)
1985
- ])) : __props.isSortable ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
1986
- _cache[10] || (_cache[10] = createElementVNode("span", { class: "filter" }, null, -1)),
1987
- createElementVNode("div", _hoisted_22$2, [createCommentVNode(" eslint-disable-next-line vuejs-accessibility/form-control-has-label -- the sort's caption is no game text key yet, so no name in the reader's language exists until the bag's sort recording keys it; its options name it meanwhile "), withDirectives(createElementVNode("select", {
1988
- "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => sort.value = $event),
1989
- class: "sort-select"
1990
- }, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(InventorySorts), (inventorySort) => {
1991
- return openBlock(), createElementBlock("option", {
1992
- key: inventorySort,
1993
- value: inventorySort
1994
- }, toDisplayString(__props.sortLabels[inventorySort]), 9, _hoisted_23$1);
1995
- }), 128))], 512), [[vModelSelect, sort.value]])]),
1996
- createElementVNode("button", {
1997
- class: "order",
1998
- "aria-label": __props.orderLabel,
1999
- "data-descending": isDescending.value,
2000
- type: "button",
2001
- onClick: _cache[6] || (_cache[6] = ($event) => isDescending.value = !isDescending.value)
2002
- }, null, 8, _hoisted_24)
2003
- ], 64)) : (openBlock(), createElementBlock("ul", _hoisted_25, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.currencies, ({ id, isTopUp, name, quantity }) => {
2271
+ }, toDisplayString(__props.destroyButtonLabel), 9, _hoisted_26$1)
2272
+ ])) : __props.isSortable ? (openBlock(), createElementBlock(Fragment, { key: 4 }, [createElementVNode("div", _hoisted_27$1, [withDirectives(createElementVNode("select", {
2273
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => sort.value = $event),
2274
+ class: "sort-select",
2275
+ "aria-label": __props.sortLabels[sort.value]
2276
+ }, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(InventorySorts), (inventorySort) => {
2277
+ return openBlock(), createElementBlock("option", {
2278
+ key: inventorySort,
2279
+ value: inventorySort
2280
+ }, toDisplayString(__props.sortLabels[inventorySort]), 9, _hoisted_29$1);
2281
+ }), 128))], 8, _hoisted_28$1), [[vModelSelect, sort.value]])]), createElementVNode("button", {
2282
+ class: "order",
2283
+ "aria-label": __props.orderLabel,
2284
+ "data-descending": isDescending.value,
2285
+ type: "button",
2286
+ onClick: _cache[6] || (_cache[6] = ($event) => isDescending.value = !isDescending.value)
2287
+ }, null, 8, _hoisted_30$1)], 64)) : (openBlock(), createElementBlock("ul", _hoisted_31$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.currencies, ({ id, isTopUp, name, quantity }) => {
2004
2288
  return openBlock(), createElementBlock("li", {
2005
2289
  key: id,
2006
2290
  class: "currency",
2007
2291
  "data-currency": id
2008
2292
  }, [
2009
- createElementVNode("span", _hoisted_27, toDisplayString(name), 1),
2293
+ createElementVNode("span", _hoisted_33, toDisplayString(name), 1),
2010
2294
  _cache[11] || (_cache[11] = createElementVNode("span", { class: "currency-icon" }, null, -1)),
2011
2295
  createTextVNode(" " + toDisplayString(quantity) + " ", 1),
2012
- isTopUp ? (openBlock(), createElementBlock("span", _hoisted_28)) : createCommentVNode("v-if", true)
2013
- ], 8, _hoisted_26);
2296
+ isTopUp ? (openBlock(), createElementBlock("span", _hoisted_34)) : createCommentVNode("v-if", true)
2297
+ ], 8, _hoisted_32$1);
2014
2298
  }), 128))])),
2015
2299
  createCommentVNode(" The gadget's action under the detail panel, which equips the gadget to the quick-use slot. Provisional: its place\n is where the controller recording shows a gadget's action, the bottom bar's X, until the keyboard's is read "),
2016
2300
  selectedCell.value?.isEquipable && !__props.isDestroying ? (openBlock(), createElementBlock("button", {
2017
- key: 4,
2301
+ key: 6,
2018
2302
  class: "quick-use",
2019
2303
  type: "button",
2020
2304
  onClick: _cache[7] || (_cache[7] = ($event) => emit("quickUse", selectedCell.value.id))
@@ -2028,17 +2312,17 @@ var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2028
2312
  "aria-modal": "true",
2029
2313
  "aria-label": __props.destroyConfirmTitle
2030
2314
  }, [
2031
- createElementVNode("p", _hoisted_30, toDisplayString(__props.destroyConfirmTitle), 1),
2032
- createElementVNode("p", _hoisted_31, toDisplayString(__props.destroyConfirmListLabel), 1),
2033
- createElementVNode("ul", _hoisted_32, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.destroyNames, (name, index) => {
2315
+ createElementVNode("p", _hoisted_36, toDisplayString(__props.destroyConfirmTitle), 1),
2316
+ createElementVNode("p", _hoisted_37, toDisplayString(__props.destroyConfirmListLabel), 1),
2317
+ createElementVNode("ul", _hoisted_38, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.destroyNames, (name, index) => {
2034
2318
  return openBlock(), createElementBlock("li", { key: index }, toDisplayString(name), 1);
2035
2319
  }), 128))]),
2036
- createElementVNode("p", _hoisted_33, toDisplayString(__props.destroyConfirmWarningLabel), 1),
2037
- __props.isDestroyFull ? (openBlock(), createElementBlock("p", _hoisted_34, toDisplayString(__props.destroyFullLabel), 1)) : createCommentVNode("v-if", true),
2038
- __props.destroyRecoveredNames.length ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createElementVNode("p", _hoisted_35, toDisplayString(__props.destroyRecoveredLabel), 1), createElementVNode("ul", _hoisted_36, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.destroyRecoveredNames, (name, index) => {
2320
+ createElementVNode("p", _hoisted_39, toDisplayString(__props.destroyConfirmWarningLabel), 1),
2321
+ __props.isDestroyFull ? (openBlock(), createElementBlock("p", _hoisted_40, toDisplayString(__props.destroyFullLabel), 1)) : createCommentVNode("v-if", true),
2322
+ __props.destroyRecoveredNames.length ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createElementVNode("p", _hoisted_41, toDisplayString(__props.destroyRecoveredLabel), 1), createElementVNode("ul", _hoisted_42, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.destroyRecoveredNames, (name, index) => {
2039
2323
  return openBlock(), createElementBlock("li", { key: index }, toDisplayString(name), 1);
2040
2324
  }), 128))])], 64)) : createCommentVNode("v-if", true),
2041
- createElementVNode("div", _hoisted_37, [createElementVNode("button", {
2325
+ createElementVNode("div", _hoisted_43, [createElementVNode("button", {
2042
2326
  ref_key: "cancelButton",
2043
2327
  ref: cancelButton,
2044
2328
  class: "confirm-button",
@@ -2049,16 +2333,15 @@ var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2049
2333
  class: "confirm-button",
2050
2334
  type: "button",
2051
2335
  onClick: _cache[9] || (_cache[9] = ($event) => emit("confirmDestroy"))
2052
- }, toDisplayString(__props.destroyConfirmButtonLabel), 9, _hoisted_38)])
2053
- ], 8, _hoisted_29)) : createCommentVNode("v-if", true)
2336
+ }, toDisplayString(__props.destroyConfirmButtonLabel), 9, _hoisted_44)])
2337
+ ], 8, _hoisted_35)) : createCommentVNode("v-if", true)
2054
2338
  ])], 2112);
2055
2339
  };
2056
2340
  }
2057
- }), [["__scopeId", "data-v-cf391b68"]]);
2058
- //#endregion
2059
- //#region src/components/LoadingSpinner/Index.vue
2341
+ }), [["__scopeId", "data-v-7a368ce5"]]);
2342
+ // src/components/LoadingSpinner/Index.vue
2060
2343
  const _hoisted_1$15 = ["aria-label"];
2061
- var Index_default$21 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2344
+ var Index_default$22 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2062
2345
  __name: "Index",
2063
2346
  props: { label: {} },
2064
2347
  setup(__props) {
@@ -2071,77 +2354,76 @@ var Index_default$21 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2071
2354
  };
2072
2355
  }
2073
2356
  }), [["__scopeId", "data-v-69cb5a34"]]);
2074
- //#endregion
2075
- //#region src/components/OrnamentDivider/Index.vue
2357
+ // src/components/OrnamentDivider/Index.vue
2076
2358
  const _hoisted_1$14 = {
2077
- class: "ornament-divider",
2078
- "aria-hidden": "true"
2079
- };
2080
- const _hoisted_2$12 = {
2081
2359
  class: "end",
2082
2360
  viewBox: "0 0 320 224"
2083
2361
  };
2084
- const _hoisted_3$10 = ["d"];
2085
- const _hoisted_4$9 = {
2362
+ const _hoisted_2$12 = ["d"];
2363
+ const _hoisted_3$10 = {
2364
+ key: 0,
2086
2365
  class: "middle",
2087
2366
  viewBox: "0 0 480 320"
2088
2367
  };
2089
- const _hoisted_5$9 = ["d"];
2090
- const _hoisted_6$8 = {
2368
+ const _hoisted_4$9 = ["d"];
2369
+ const _hoisted_5$9 = {
2091
2370
  class: "end right",
2092
2371
  viewBox: "0 0 320 224"
2093
2372
  };
2094
- const _hoisted_7$8 = ["d"];
2095
- var Index_default$22 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2373
+ const _hoisted_6$8 = ["d"];
2374
+ var Index_default$23 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2096
2375
  __name: "Index",
2376
+ props: {
2377
+ isMiddleHidden: { type: Boolean },
2378
+ opacity: { default: 1 }
2379
+ },
2097
2380
  setup(__props) {
2098
2381
  return (_ctx, _cache) => {
2099
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The game's divider: a hairline as wide as its parent, a tapered diamond at each end and an interlocked double\n Diamond at its middle, in the game's units from the parent's `--unit` "), createElementVNode("div", _hoisted_1$14, [
2100
- (openBlock(), createElementBlock("svg", _hoisted_2$12, [createElementVNode("path", { d: unref(ORNAMENT_END_PATH) }, null, 8, _hoisted_3$10)])),
2101
- (openBlock(), createElementBlock("svg", _hoisted_4$9, [createElementVNode("path", { d: unref(ORNAMENT_MIDDLE_PATH) }, null, 8, _hoisted_5$9)])),
2102
- (openBlock(), createElementBlock("svg", _hoisted_6$8, [createElementVNode("path", { d: unref(ORNAMENT_END_PATH) }, null, 8, _hoisted_7$8)]))
2103
- ])], 2112);
2382
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The game's divider: a hairline as wide as its parent, a tapered diamond at each end and an interlocked double\n Diamond at its middle, in the game's units from the parent's `--unit` "), createElementVNode("div", {
2383
+ class: "ornament-divider",
2384
+ "aria-hidden": "true",
2385
+ style: normalizeStyle({ opacity: __props.opacity })
2386
+ }, [
2387
+ (openBlock(), createElementBlock("svg", _hoisted_1$14, [createElementVNode("path", { d: unref(ORNAMENT_END_PATH) }, null, 8, _hoisted_2$12)])),
2388
+ !__props.isMiddleHidden ? (openBlock(), createElementBlock("svg", _hoisted_3$10, [createElementVNode("path", { d: unref(ORNAMENT_MIDDLE_PATH) }, null, 8, _hoisted_4$9)])) : createCommentVNode("v-if", true),
2389
+ (openBlock(), createElementBlock("svg", _hoisted_5$9, [createElementVNode("path", { d: unref(ORNAMENT_END_PATH) }, null, 8, _hoisted_6$8)]))
2390
+ ], 4)], 2112);
2104
2391
  };
2105
2392
  }
2106
- }), [["__scopeId", "data-v-335021af"]]);
2107
- //#endregion
2108
- //#region src/components/PartySetupScreen/Index.vue
2393
+ }), [["__scopeId", "data-v-98fbdc00"]]);
2394
+ // src/components/PartySetupScreen/Index.vue
2109
2395
  const _hoisted_1$13 = { class: "party-setup-screen" };
2110
2396
  const _hoisted_2$11 = { class: "head" };
2111
2397
  const _hoisted_3$9 = { class: "title" };
2112
- const _hoisted_4$8 = ["aria-label"];
2398
+ const _hoisted_4$8 = { class: "resonance-text" };
2113
2399
  const _hoisted_5$8 = { class: "team" };
2114
- const _hoisted_6$7 = { class: "slots" };
2115
- const _hoisted_7$7 = ["data-empty"];
2116
- const _hoisted_8$5 = {
2400
+ const _hoisted_6$7 = ["aria-label", "onClick"];
2401
+ const _hoisted_7$6 = { class: "slots" };
2402
+ const _hoisted_8$4 = {
2117
2403
  key: 0,
2118
2404
  class: "plate"
2119
2405
  };
2120
2406
  const _hoisted_9$4 = { class: "name" };
2121
- const _hoisted_10$4 = {
2122
- key: 0,
2123
- class: "element",
2124
- viewBox: "0 0 1600 1600",
2125
- "aria-hidden": "true"
2126
- };
2127
- const _hoisted_11$4 = ["d"];
2128
- const _hoisted_12$4 = { class: "level" };
2129
- const _hoisted_13$4 = {
2407
+ const _hoisted_10$4 = ["d"];
2408
+ const _hoisted_11$4 = { class: "level" };
2409
+ const _hoisted_12$3 = {
2130
2410
  key: 1,
2131
2411
  class: "plus",
2132
2412
  "aria-hidden": "true"
2133
2413
  };
2134
- const _hoisted_14$4 = { class: "foot" };
2135
- const _hoisted_15$3 = { class: "team-bar" };
2136
- const _hoisted_16$3 = { class: "team-name" };
2137
- const _hoisted_17$3 = { class: "deploy-bar" };
2138
- var Index_default$23 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2414
+ const _hoisted_13$3 = { class: "foot" };
2415
+ const _hoisted_14$3 = ["aria-label"];
2416
+ const _hoisted_15$3 = { class: "team-name" };
2417
+ var Index_default$24 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2139
2418
  __name: "Index",
2140
2419
  props: {
2141
2420
  backLabel: {},
2142
2421
  configureTeamLabel: {},
2143
2422
  deployLabel: {},
2423
+ nextLabel: {},
2424
+ previousLabel: {},
2144
2425
  quickSetupLabel: {},
2426
+ resonanceLabel: {},
2145
2427
  slots: {},
2146
2428
  teamName: {},
2147
2429
  title: {}
@@ -2156,55 +2438,84 @@ var Index_default$23 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2156
2438
  ],
2157
2439
  setup(__props, { emit: __emit }) {
2158
2440
  const emit = __emit;
2441
+ const steps = computed(() => [{
2442
+ label: __props.previousLabel,
2443
+ name: "previous"
2444
+ }, {
2445
+ label: __props.nextLabel,
2446
+ name: "next"
2447
+ }]);
2159
2448
  return (_ctx, _cache) => {
2160
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" Party Setup, the team the player is looking at, fitted to the public clip's frame at 1080 high: the team's name and\n Configure Team at the foot's left, its four members standing across the middle with a name plate over each (its\n name, its element's mark and its level), an empty slot a plus, the arrows at either edge to step to the other teams,\n and Quick Setup and Deploy at the foot's right. The parity pass measures it against that frame "), createElementVNode("div", _hoisted_1$13, [
2161
- createElementVNode("header", _hoisted_2$11, [createElementVNode("h1", _hoisted_3$9, toDisplayString(__props.title), 1), createElementVNode("button", {
2162
- class: "back",
2163
- "aria-label": __props.backLabel,
2164
- type: "button",
2165
- onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
2166
- }, "↶", 8, _hoisted_4$8)]),
2167
- createElementVNode("section", _hoisted_5$8, [
2449
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" Party Setup as the English PC client draws it at 1080 high, its positions measured off the frame: the title, the step\n dots, Elemental Resonance and Close at the top, the team's four members across the middle with a name plate over each\n (its element's mark, its name and its level), the arrows at either edge to step to another team, and the foot's team\n name, Configure Team, Quick Setup and Deploy. The members' art is the frame's own, drawn by no piece here "), createElementVNode("div", _hoisted_1$13, [
2450
+ createElementVNode("header", _hoisted_2$11, [
2451
+ _cache[4] || (_cache[4] = createStaticVNode("<svg class=\"party-icon\" viewBox=\"56 24 40 52\" aria-hidden=\"true\" data-v-11632b5d><circle class=\"back\" cx=\"84\" cy=\"35\" r=\"5.5\" data-v-11632b5d></circle><path class=\"back\" d=\"M80 44h13l-3.5 16q-2.5 8-5 8t-4-8z\" data-v-11632b5d></path><circle class=\"front\" cx=\"72\" cy=\"34.5\" r=\"6.5\" data-v-11632b5d></circle><path class=\"front\" d=\"M60 46h24l-11.5 25h-2z\" data-v-11632b5d></path></svg>", 1)),
2452
+ createElementVNode("h1", _hoisted_3$9, toDisplayString(__props.title), 1),
2453
+ _cache[5] || (_cache[5] = createStaticVNode("<svg class=\"steps\" viewBox=\"880 30 150 36\" aria-hidden=\"true\" data-v-11632b5d><path class=\"step-on\" d=\"M906 37l10.5 10.5-10.5 10.5-10.5-10.5z\" data-v-11632b5d></path><path class=\"step-off\" d=\"M942 39.5l8.5 8.5-8.5 8.5-8.5-8.5z M978 39.5l8.5 8.5-8.5 8.5-8.5-8.5z M1014 39.5l8.5 8.5-8.5 8.5-8.5-8.5z\" data-v-11632b5d></path></svg><div class=\"resonance-pill\" aria-hidden=\"true\" data-v-11632b5d></div><svg class=\"resonance-icon\" viewBox=\"0 0 136 120\" aria-hidden=\"true\" data-v-11632b5d><path fill-rule=\"evenodd\" d=\"M61.5 20h45l3 1 2.5 2.5 1 2v9l-5.5 4.5h-35l-2 1-1-1h-10l-4.5-3.5q-2-2.5-1-8l3.5-6.5q3.25.75 4-1z M23.5 21h11l4.5 3.5q2 2.5 1 8l-4.5 5.5q-2.83 2.17-9 1l-3-1-4.5-4.5v-6l1-3 3.5-3.5z M62.5 51h42q.75 1.75 4 1l3.5 2.5 2 5q-2.25 1.25-1 6l-3.5 3.5-2 1h-10l-1 1h-35l-3-1-4.5-4.5v-7l1-3 3.5-3.5q3.25.75 4-1z M25.5 52h9l5.5 5.5q1.53 9.03-3.5 11.5l-6 2h-3l-6.5-4.5q-2.33-3.17-1-10l5.5-4.5z M65.5 82l3 1h39l4.5 2.5 1 3v8l-2.5 3.5-3 1h-48l-5.5-4.5v-8q2.5-1 2-3.5l4.5-2q4 1 5-1z M27.5 83h4l5.5 2q-.5 2.5 2 3.5l1 5q-1.75.75-1 4l-2.5 2.5-3 1h-6l-1-1h-3l-2.5-1-2-6.5 1-1v-3l1-2.5 6.5-3z\" data-v-11632b5d></path></svg>", 3)),
2454
+ createElementVNode("p", _hoisted_4$8, toDisplayString(__props.resonanceLabel), 1),
2455
+ createVNode(Index_default$10, {
2456
+ class: "close",
2457
+ label: __props.backLabel,
2458
+ mark: unref(CloseButtonMark).Cross,
2459
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
2460
+ }, null, 8, ["label", "mark"])
2461
+ ]),
2462
+ createElementVNode("section", _hoisted_5$8, [(openBlock(true), createElementBlock(Fragment, null, renderList(steps.value, (step) => {
2463
+ return openBlock(), createElementBlock("button", {
2464
+ key: step.name,
2465
+ class: normalizeClass(["step", step.name]),
2466
+ "aria-label": step.label,
2467
+ type: "button",
2468
+ onClick: ($event) => step.name === "previous" ? emit("previous") : emit("next")
2469
+ }, [..._cache[6] || (_cache[6] = [createElementVNode("svg", {
2470
+ viewBox: "54 514 40 52",
2471
+ "aria-hidden": "true"
2472
+ }, [createElementVNode("path", {
2473
+ class: "chevron",
2474
+ d: "M58.5 540 80.5 520.5v7l-10.5 12.5 10.5 12.5v8z"
2475
+ }), createElementVNode("path", {
2476
+ class: "ornament",
2477
+ d: "M71 540 81 530l9 10-9 10z"
2478
+ })], -1)])], 10, _hoisted_6$7);
2479
+ }), 128)), createElementVNode("ol", _hoisted_7$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.slots, (slot, index) => {
2480
+ return openBlock(), createElementBlock("li", {
2481
+ key: index,
2482
+ class: "slot"
2483
+ }, [slot.levelText ? (openBlock(), createElementBlock("div", _hoisted_8$4, [createElementVNode("span", _hoisted_9$4, [slot.elementMarkPath ? (openBlock(), createElementBlock("svg", {
2484
+ key: 0,
2485
+ class: "element",
2486
+ style: normalizeStyle({ fill: slot.elementColor }),
2487
+ viewBox: "0 0 1600 1600",
2488
+ "aria-hidden": "true"
2489
+ }, [createElementVNode("path", { d: slot.elementMarkPath }, null, 8, _hoisted_10$4)], 4)) : createCommentVNode("v-if", true), createTextVNode(" " + toDisplayString(slot.name), 1)]), createElementVNode("span", _hoisted_11$4, toDisplayString(slot.levelText), 1)])) : (openBlock(), createElementBlock("span", _hoisted_12$3, "+"))]);
2490
+ }), 128))])]),
2491
+ createElementVNode("footer", _hoisted_13$3, [
2168
2492
  createElementVNode("button", {
2169
- class: "step previous",
2493
+ class: "configure",
2494
+ "aria-label": __props.configureTeamLabel,
2170
2495
  type: "button",
2171
- onClick: _cache[1] || (_cache[1] = ($event) => emit("previous"))
2172
- }, "‹"),
2173
- createElementVNode("ol", _hoisted_6$7, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.slots, (slot, index) => {
2174
- return openBlock(), createElementBlock("li", {
2175
- key: index,
2176
- class: "slot",
2177
- "data-empty": !slot.levelText || void 0
2178
- }, [slot.levelText ? (openBlock(), createElementBlock("div", _hoisted_8$5, [createElementVNode("span", _hoisted_9$4, [slot.elementMarkPath ? (openBlock(), createElementBlock("svg", _hoisted_10$4, [createElementVNode("path", { d: slot.elementMarkPath }, null, 8, _hoisted_11$4)])) : createCommentVNode("v-if", true), createTextVNode(" " + toDisplayString(slot.name), 1)]), createElementVNode("span", _hoisted_12$4, toDisplayString(slot.levelText), 1)])) : (openBlock(), createElementBlock("span", _hoisted_13$4, "+"))], 8, _hoisted_7$7);
2179
- }), 128))]),
2496
+ onClick: _cache[1] || (_cache[1] = ($event) => emit("configureTeam"))
2497
+ }, null, 8, _hoisted_14$3),
2498
+ createElementVNode("p", _hoisted_15$3, toDisplayString(__props.teamName), 1),
2180
2499
  createElementVNode("button", {
2181
- class: "step next",
2500
+ class: "quick",
2182
2501
  type: "button",
2183
- onClick: _cache[2] || (_cache[2] = ($event) => emit("next"))
2184
- }, "›")
2185
- ]),
2186
- createElementVNode("footer", _hoisted_14$4, [createElementVNode("div", _hoisted_15$3, [createElementVNode("p", _hoisted_16$3, toDisplayString(__props.teamName), 1), createElementVNode("button", {
2187
- class: "action",
2188
- type: "button",
2189
- onClick: _cache[3] || (_cache[3] = ($event) => emit("configureTeam"))
2190
- }, toDisplayString(__props.configureTeamLabel), 1)]), createElementVNode("div", _hoisted_17$3, [createElementVNode("button", {
2191
- class: "action",
2192
- type: "button",
2193
- onClick: _cache[4] || (_cache[4] = ($event) => emit("quickSetup"))
2194
- }, toDisplayString(__props.quickSetupLabel), 1), createElementVNode("button", {
2195
- class: "action",
2196
- type: "button",
2197
- onClick: _cache[5] || (_cache[5] = ($event) => emit("deploy"))
2198
- }, toDisplayString(__props.deployLabel), 1)])])
2502
+ onClick: _cache[2] || (_cache[2] = ($event) => emit("quickSetup"))
2503
+ }, toDisplayString(__props.quickSetupLabel), 1),
2504
+ createElementVNode("button", {
2505
+ class: "deploy",
2506
+ type: "button",
2507
+ onClick: _cache[3] || (_cache[3] = ($event) => emit("deploy"))
2508
+ }, toDisplayString(__props.deployLabel), 1),
2509
+ _cache[7] || (_cache[7] = createStaticVNode("<svg class=\"foot-art\" viewBox=\"0 0 1920 1080\" aria-hidden=\"true\" data-v-11632b5d><path class=\"list\" d=\"M64 1008h24v3H64zM64 1015h22v3H64zM64 1023h20v3H64z\" data-v-11632b5d></path><circle class=\"list\" cx=\"88\" cy=\"1018\" r=\"3.5\" data-v-11632b5d></circle><path class=\"list\" d=\"M84 1023h9l-4.5 9z\" data-v-11632b5d></path><circle class=\"dark\" cx=\"1210\" cy=\"1020\" r=\"20\" data-v-11632b5d></circle><circle class=\"green\" cx=\"1210\" cy=\"1013\" r=\"4.5\" data-v-11632b5d></circle><path class=\"green\" d=\"M1202 1019h16l-8 12z\" data-v-11632b5d></path><circle class=\"dim\" cx=\"1556\" cy=\"1020\" r=\"14\" data-v-11632b5d></circle><g class=\"pencil\" transform=\"translate(216 1004) scale(0.25)\" data-v-11632b5d><path fill-rule=\"evenodd\" d=\"M88.5 24h4l4.5 2q-1.12 2.67 1.5 2l3.5 5.5v6q-.75 3.25-5.5 2.5l-11.5-10.5-1-4 1-2.5q2.58.75 3.5-1z M74.5 37h5l11.5 11.5-1 4-11.5 12.5-10.5 9.5-5.5 6.5-9 6q-3.25-.75-4 1h-6l-3.5-2.5q-2-2.5-1-8l4-9 19.5-20.5q2.25.75 1.5-1.5l10.5-9.5z M28.5 22h43l.5 1.5q2 1 0 2l-4.5 5.5h-35l-3.5 2.5v59l-1 1 2.5 3.5 3 1h9l1-1h27l1 1h8l1-1h7l3 1 3-1 2.5-2.5v-34l3.5-4.5q3.75-.75 4.5 1.5-1 4 1 5v33q-1.75.75-1 4l-3.5 5.5-4 2h-68l-6.5-4.5-2-4v-67l2-5 2.5-2.5 4-2z\" data-v-11632b5d></path></g></svg>", 1))
2510
+ ])
2199
2511
  ])], 2112);
2200
2512
  };
2201
2513
  }
2202
- }), [["__scopeId", "data-v-876761d0"]]);
2203
- //#endregion
2204
- //#region src/components/ProgressBar/Index.vue
2514
+ }), [["__scopeId", "data-v-11632b5d"]]);
2515
+ // src/components/ProgressBar/Index.vue
2205
2516
  const _hoisted_1$12 = ["aria-valuenow"];
2206
2517
  const _hoisted_2$10 = { class: "track" };
2207
- var Index_default$25 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2518
+ var Index_default$26 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2208
2519
  __name: "Index",
2209
2520
  props: {
2210
2521
  isFolded: { type: Boolean },
@@ -2228,20 +2539,18 @@ var Index_default$25 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2228
2539
  ], 10, _hoisted_1$12)], 2112);
2229
2540
  };
2230
2541
  }
2231
- }), [["__scopeId", "data-v-bea8e745"]]);
2232
- //#endregion
2233
- //#region src/components/PromptBand/Index.vue
2542
+ }), [["__scopeId", "data-v-bd43e432"]]);
2543
+ // src/components/PromptBand/Index.vue
2234
2544
  const _sfc_main$12 = {};
2235
2545
  const _hoisted_1$11 = { class: "prompt-band" };
2236
2546
  const _hoisted_2$9 = { class: "text" };
2237
2547
  function _sfc_render(_ctx, _cache) {
2238
2548
  return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The band a prompt is set in across the foot of a screen: a navy glass strip 44 units high, fading in over its\n Ends, its words centred in a light grey. Its glass and fade are solved from the scene the English recording\n Shows through it at the door "), createElementVNode("div", _hoisted_1$11, [createElementVNode("p", _hoisted_2$9, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])])], 2112);
2239
2549
  }
2240
- var Index_default$26 = /*#__PURE__*/ export_helper_default(_sfc_main$12, [["render", _sfc_render], ["__scopeId", "data-v-8c88bb3d"]]);
2241
- //#endregion
2242
- //#region src/components/RarityStars/Index.vue
2550
+ var Index_default$27 = /*#__PURE__*/ export_helper_default(_sfc_main$12, [["render", _sfc_render], ["__scopeId", "data-v-8c88bb3d"]]);
2551
+ // src/components/RarityStars/Index.vue
2243
2552
  const _hoisted_1$10 = { class: "stars" };
2244
- var Index_default$27 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2553
+ var Index_default$28 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2245
2554
  __name: "Index",
2246
2555
  props: { rarity: {} },
2247
2556
  setup(__props) {
@@ -2250,8 +2559,7 @@ var Index_default$27 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2250
2559
  };
2251
2560
  }
2252
2561
  }), [["__scopeId", "data-v-a4c4ddf9"]]);
2253
- //#endregion
2254
- //#region src/components/ReputationScreen/Index.vue
2562
+ // src/components/ReputationScreen/Index.vue
2255
2563
  const _hoisted_1$9 = { class: "reputation-screen" };
2256
2564
  const _hoisted_2$8 = { class: "head" };
2257
2565
  const _hoisted_3$8 = {
@@ -2262,8 +2570,8 @@ const _hoisted_3$8 = {
2262
2570
  const _hoisted_4$7 = ["aria-label"];
2263
2571
  const _hoisted_5$7 = { class: "detail" };
2264
2572
  const _hoisted_6$6 = { class: "headline" };
2265
- const _hoisted_7$6 = { class: "requirement" };
2266
- const _hoisted_8$4 = {
2573
+ const _hoisted_7$5 = { class: "requirement" };
2574
+ const _hoisted_8$3 = {
2267
2575
  key: 0,
2268
2576
  class: "offer"
2269
2577
  };
@@ -2274,9 +2582,9 @@ const _hoisted_11$3 = [
2274
2582
  "data-achieved",
2275
2583
  "onClick"
2276
2584
  ];
2277
- const _hoisted_12$3 = { class: "badge" };
2278
- const _hoisted_13$3 = { class: "badge-face" };
2279
- const _hoisted_14$3 = { class: "badge-word" };
2585
+ const _hoisted_12$2 = { class: "badge" };
2586
+ const _hoisted_13$2 = { class: "badge-face" };
2587
+ const _hoisted_14$2 = { class: "badge-word" };
2280
2588
  const _hoisted_15$2 = { class: "badge-number" };
2281
2589
  const _hoisted_16$2 = { class: "items" };
2282
2590
  const _hoisted_17$2 = {
@@ -2298,7 +2606,7 @@ const _hoisted_22$1 = {
2298
2606
  key: 2,
2299
2607
  class: "status"
2300
2608
  };
2301
- var Index_default$28 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2609
+ var Index_default$29 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2302
2610
  __name: "Index",
2303
2611
  props: /*@__PURE__*/ mergeModels({
2304
2612
  achievedLabel: {},
@@ -2326,13 +2634,13 @@ var Index_default$28 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2326
2634
  type: "button",
2327
2635
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
2328
2636
  }, "↶", 8, _hoisted_4$7)]),
2329
- createElementVNode("section", _hoisted_5$7, [createElementVNode("p", _hoisted_6$6, toDisplayString(__props.headline), 1), createElementVNode("p", _hoisted_7$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.requirement, ({ color, text }, index) => {
2637
+ createElementVNode("section", _hoisted_5$7, [createElementVNode("p", _hoisted_6$6, toDisplayString(__props.headline), 1), createElementVNode("p", _hoisted_7$5, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.requirement, ({ color, text }, index) => {
2330
2638
  return openBlock(), createElementBlock("span", {
2331
2639
  key: index,
2332
2640
  style: normalizeStyle({ color })
2333
2641
  }, toDisplayString(text), 5);
2334
2642
  }), 128))])]),
2335
- __props.offer ? (openBlock(), createElementBlock("section", _hoisted_8$4, [createElementVNode("p", _hoisted_9$3, toDisplayString(__props.offer.title), 1), createElementVNode("button", {
2643
+ __props.offer ? (openBlock(), createElementBlock("section", _hoisted_8$3, [createElementVNode("p", _hoisted_9$3, toDisplayString(__props.offer.title), 1), createElementVNode("button", {
2336
2644
  class: "accept",
2337
2645
  type: "button",
2338
2646
  onClick: _cache[1] || (_cache[1] = ($event) => emit("accept"))
@@ -2345,12 +2653,13 @@ var Index_default$28 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2345
2653
  type: "button",
2346
2654
  onClick: ($event) => level.value = cell.level
2347
2655
  }, [
2348
- createElementVNode("span", _hoisted_12$3, [createElementVNode("span", _hoisted_13$3, [createElementVNode("span", _hoisted_14$3, toDisplayString(__props.levelLabel), 1), createElementVNode("span", _hoisted_15$2, toDisplayString(cell.level), 1)])]),
2656
+ createElementVNode("span", _hoisted_12$2, [createElementVNode("span", _hoisted_13$2, [createElementVNode("span", _hoisted_14$2, toDisplayString(__props.levelLabel), 1), createElementVNode("span", _hoisted_15$2, toDisplayString(cell.level), 1)])]),
2349
2657
  createElementVNode("span", _hoisted_16$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(cell.items, ({ count, label, rarity }, index) => {
2350
- return openBlock(), createBlock(Index_default$20, {
2658
+ return openBlock(), createBlock(Index_default$21, {
2351
2659
  key: index,
2352
2660
  class: "item",
2353
2661
  "aria-label": label,
2662
+ "count-size": "21cqh",
2354
2663
  count,
2355
2664
  rarity,
2356
2665
  role: "img"
@@ -2367,9 +2676,8 @@ var Index_default$28 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2367
2676
  ])], 2112);
2368
2677
  };
2369
2678
  }
2370
- }), [["__scopeId", "data-v-9468271c"]]);
2371
- //#endregion
2372
- //#region src/models/InterfaceIcon.ts
2679
+ }), [["__scopeId", "data-v-1b283fc6"]]);
2680
+ // src/models/InterfaceIcon.ts
2373
2681
  let InterfaceIcon = /* @__PURE__ */ function(InterfaceIcon) {
2374
2682
  InterfaceIcon["Exit"] = "Exit";
2375
2683
  InterfaceIcon["Notice"] = "Notice";
@@ -2379,8 +2687,7 @@ let InterfaceIcon = /* @__PURE__ */ function(InterfaceIcon) {
2379
2687
  return InterfaceIcon;
2380
2688
  }({});
2381
2689
  const InterfaceIcons = Object.values(InterfaceIcon);
2382
- //#endregion
2383
- //#region src/services/InterfaceIconCentreMap.ts
2690
+ // src/services/InterfaceIconCentreMap.ts
2384
2691
  const InterfaceIconCentreMap = {
2385
2692
  ["Exit"]: [26.6, 24.75],
2386
2693
  ["Notice"]: [24, 25.8],
@@ -2388,8 +2695,7 @@ const InterfaceIconCentreMap = {
2388
2695
  ["Repair"]: [24, 26],
2389
2696
  ["Settings"]: [23.95, 25]
2390
2697
  };
2391
- //#endregion
2392
- //#region src/services/InterfaceIconPathMap.ts
2698
+ // src/services/InterfaceIconPathMap.ts
2393
2699
  const InterfaceIconPathMap = {
2394
2700
  ["Exit"]: "m14.3 8.16h17.06l.09.09.66.09.56.28.89.8.66 1.5v.56l.09.1v2.25q-.16.07-.09.37l-.42.71-.57.18h-2.06l-.09-.09-.56-.09-.33-.33q.07-.31-.1-.38v-1.12l-.42-.52-.65-.47h-11.72l-.61.33-.38.75v23.25l.19.47.33.42.47.19h11.72l.98-.8.09-.18v-1.22l.1-.28.33-.33q.17-.16.56-.1l.09-.09h2.06q.07.16.38.09l.33.24.37.84v2.44l-.09.09v.47l-.28.56v.19l-.38.75-.23.24-.66.56-.56.28-.66.09-.09.1h-17.06l-1.13-.38q-.33-.5-.89-.65-.2-.82-.75-1.36l-.09-.28v-.47l-.1-.1v-26.81q.21-.12.1-.56l.18-.38.38-.47.19-.56.42-.42.56-.47 1.13-.37zm19.03 9h.47l.75.28 2.25 2.15 2.2 1.93.14.23q.43.08.61.42l.33.42 1.17.99.42.51.24.14.09.29v.56l-.09.28-.33.33q-.21-.07-.14.14l-.94.84-.14.24-.52.32-.42.52-.42.33-.23.33q-.46.15-.71.51.07.21-.14.14l-1.69 1.6-.56.46h-.14l-.14.29-1.12.93q-.31-.07-.38.1h-.56l-.71-.52-.28-.75v-3.75l-.23-.33h-7.59l-.47-.18-.52-.52-.19-.47v-2.15l.28-.66.52-.52.28-.09h7.13l.18.09q.07-.16.38-.09l.23-.23v-3.85l.1-.09q-.07-.39.09-.56l.42-.43.38-.18z",
2395
2701
  ["Notice"]: "m14.67 11.16h1.41q.63.21.98.7l.28.84v3.1q-.21.11-.09.56l-.19.37-.42.43-.56.28h-1.41l-.65-.28-.33-.33-.28-.56v-3.85l.18-.56.43-.42.65-.28zm18 0h1.41q.63.21.98.7l.19.37q-.12.45.09.57v3.18l-.09.1-.09.56-.52.52-.56.28h-1.41l-.89-.38-.37-.89v-3.75l.28-.65.33-.33.65-.28zm-4.03 2.9.38.1.23.23.09.28v2.44l.89 1.64.52.33.33.42 1.31.56q.45-.11.56.1h.85q.11-.21.56-.1l1.55-.65v-.14l.32-.43q.37-.05.52-.32l.66-1.97v-1.97l.32-.33.29-.09.09.09h.37l.47.19 1.08.98.47.75.09.66.1.09v20.53l-.1.1-.09.65-.28.57-.8.89-.56.18-.84.57h-.85l-.09.09h-26.16l-.09-.09h-.66l-.28-.1q-.45-.49-1.22-.65l-.33-.33-.56-.75-.37-1.13v-20.62l.37-1.03.99-1.08.37-.28.56-.19q.38.09.47-.09h.85l.23.23.09.28v2.44l.19.47.28.28.28.56v.19l.24.23.75.66 1.03.47.28.09h.47l.09.1h1.03l.1-.1.56-.09.66-.38h.18l.43-.18v-.14l.61-.61q.21.07.14-.14l.65-1.5q-.11-.45.1-.57v-1.87l.23-.33.19-.09h8.72l.09-.1zm-14.48 10.03-.28.1-.66.56-.38.37-.09.29v1.31l.09.19.85.75.56.18h19.69l.56-.18.75-.75.09-.29v-1.12l-.18-.47-.28-.28-.38-.28v-.19l-.38-.19h-19.96zm-.19 7.97-.56.28-.47.47-.19.47v1.13l.19.47.47.37.56.28h.65l.1.09h.56l.1-.09h18.84l.66-.37.37-.47.09-.28v-1.13l-.28-.56-.84-.66h-20.25z",
@@ -2397,8 +2703,7 @@ const InterfaceIconPathMap = {
2397
2703
  ["Repair"]: "m29.02 9.28q.37-.09.46.1h1.22q.1.18.47.09l.1.09 1.4.28.24.24.09.56q-.16.07-.09.38l-.33.32-.33.24-.33.42-.42.33-.33.42-.33.23-.23.43-.52.32-.18.43q-.47.11-.75.51l-.24.33-.23.14-.42.61-.33.23-.28.66q.07.31-.1.38v.56l-.09.09v2.81l.09.1v.28l.28.84.8.8.56.19h.28l.1.09h3.28l.09-.09.75-.1.47-.28 2.58-2.39 1.08-1.26.33-.24.23-.33.84-.75h.66l.42.33.28.75v.75l.1.1v3.09l-.1.09v.57l-.09.09v.47l-.19.47v.28l-.47.94-.18.75-.47.46-.19.47q-.56.43-.84 1.13l-.99 1.08-.61.42q.07.21-.14.14-.35.4-.94.56l-.28.28-.84.38h-.19l-.65.47-1.41.28-.28.19-.85.28h-1.4q-.12.21-.56.09l-.1-.09h-1.12q-.07-.17-.38-.1l-.65-.37h-.29l-.46-.19h-.38l-.94-.47-.84-.19q-.49-.17-.75-.56l-.47-.19-1.17-1.07q.07-.22-.14-.14l-1.17-1.27q-.1-.47-.47-.66l-.57-1.22v-.28l-.28-.65-.18-1.03-.38-.66-.09-.28v-.47l-.1-.09v-3l.1-.1v-.56l.09-.28.47-.94.09-.75.66-1.22v-.19l.28-.56.38-.37q.11-.54.51-.8l.33-.23q.06-.37.33-.52l1.59-1.31.66-.28.47-.47.65-.19.94-.56.66-.1.09-.09h.47l.84-.28 1.22-.09.1-.1zm-12.29 17.72q.52-.09.61.23.13.58.57.85l.47.98h.14l.32.33.43.61.32.23.33.43.33.23q.06.36.33.52l.37.09.57.56 1.03.47.61.52.09.37q-.64.96-1.5 1.69v.14h-.14l-1.27 1.17-.42.52-.23.14-.94 1.03v.14h-.14l-1.27 1.17-.32.42-.33.24-1.27 1.36-.42.33q.07.21-.14.14l-.19.18h-.19l-.37.29-.84.37h-.75l-.1.09h-1.12l-.1-.09h-.56l-.66-.28-.18-.19-.66-.28-.8-.7-.65-.94-.1-.56-.09-.1q.09-.37-.09-.47v-2.06l.09-.09.09-.66.29-.56.89-1.17.42-.33.42-.52.42-.32.14-.24.61-.51.14-.24.42-.33.43-.51.42-.33.42-.52.33-.23.33-.42.42-.33.23-.33.42-.33.43-.51.42-.33.42-.52.42-.32.14-.24.56-.28zm-5.57 9.94-.47.18v.19l-.66.85v.84l.19.38.75.65.65.28.38-.09.47-.28.56-.56.19-.47v-.85l-.56-.75-.38-.37h-1.12z",
2398
2704
  ["Settings"]: "m17.95 8.25h.94q.07.16.38.09l.37.19.66.56.28.1.47.47q.76.22 1.22.75l.56.18h.37l.1.1h1.4q.12-.21.57-.1l.65-.28.28-.28.85-.37.47-.47.28-.1.65-.56.38-.19q.37.1.47-.09h.84l.09.09h.47l.28.1.66.47.84.37.66.56.38.1.56.56q.43.08.61.42l.56.66.09.56.1.09v.38l.09.09v.75l-.09.1v.56l-.1.09v2.35q.17.07.1.37.44.5.65 1.22l.89.89.75.56.38.1.56.47h.19l.84.37.89.8.66 1.22v.75l.09.09v3.84l-.09.1v.56l-.19.38-.79.89q-.81.27-1.41.75l-.84.28-1.18.98-.65.75-.85 1.6v2.53l.1.09v.66q.16.07.09.37l-.09.1-.1.84-.28.56-.33.33-.32.23-.24.33-.56.28h-.19l-.33.33-.14.24q-.7.18-1.03.75l-.84.37-.56.19h-.38l-.09.09h-.66q-.07-.16-.37-.09l-.66-.38h-.19l-.65-.65-.29-.1-.84-.75-.66-.18-.65-.38q-.45.12-.56-.09h-.94l-.1.09-.65.1-1.22.56-.47.47-.56.28-.33.33-.14.23q-.64.11-1.03.47-.31-.07-.38.09h-.65l-.1-.09-.65-.1-.28-.18-.85-.28-.56-.57-.61-.32-.23-.33q-1.18-.42-1.83-1.36l-.28-.85v-.46l-.1-.29.1-.09v-.66l.09-.09v-1.5l.09-.28-.09-.09v-.75l-.09-.29q-.52-.51-.75-1.31l-1.08-1.17q-.49-.17-.75-.56l-.66-.19-1.59-.84-.33-.33-.47-.56-.19-.38q.12-.44-.09-.56v-4.13l.09-.09v-.56l.1-.28.56-.94.33-.33.56-.47.84-.28.75-.56.57-.19 1.45-1.36.75-1.5v-2.44l-.09-.09v-.56l-.1-.1v-.84l.1-.09.18-.94.89-.99.61-.32.24-.33.65-.28.38-.38 1.03-.47.19-.19.56-.28q.45.12.56-.09zm5.11 9.94-1.97.65-.84.66-.28.09-.47.57-.19.09-.37.37-.94 1.41-.09.47-.57 1.03v.75l-.09.1v1.31l.09.09v.66q.19 0 .1.37l.47.66.28.94.56.56.09.28q.75.84 1.78 1.5l.76.19.84.56q.28-.09.47.09h2.62q.1-.18.57-.09l1.21-.66.57-.18.75-.57.84-.84.09-.28.66-.66.09-.56.66-1.13v-.74l.09-.1v-1.5l-.09-.09v-.66q-.19-.09-.09-.37l-.57-.94-.18-.56-.66-.75-.09-.29-.28-.28-.29-.28-1.12-1.03-.85-.37h-.28l-.75-.38q-.47.1-.47-.09h-2.06z"
2399
2705
  };
2400
- //#endregion
2401
- //#region src/components/RoundButton/Index.vue
2706
+ // src/components/RoundButton/Index.vue
2402
2707
  const _hoisted_1$8 = ["viewBox"];
2403
2708
  const _hoisted_2$7 = ["d"];
2404
2709
  const _hoisted_3$7 = [
@@ -2407,7 +2712,7 @@ const _hoisted_3$7 = [
2407
2712
  "r",
2408
2713
  "stroke-width"
2409
2714
  ];
2410
- var Index_default$29 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2715
+ var Index_default$30 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2411
2716
  __name: "Index",
2412
2717
  props: {
2413
2718
  icon: {},
@@ -2415,7 +2720,7 @@ var Index_default$29 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2415
2720
  },
2416
2721
  setup(__props) {
2417
2722
  return (_ctx, _cache) => {
2418
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The game's round button: a white disc 52 units across under a soft dark rim, its glyph in the game's near black\n Centred on its ink, as the game centres each icon's sprite "), createVNode(Index_default$13, {
2723
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The game's round button: a white disc 52 units across under a soft dark rim, its glyph in the game's near black\n Centred on its ink, as the game centres each icon's sprite "), createVNode(Index_default$14, {
2419
2724
  label: __props.label,
2420
2725
  size: 52
2421
2726
  }, {
@@ -2439,8 +2744,7 @@ var Index_default$29 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2439
2744
  };
2440
2745
  }
2441
2746
  }), [["__scopeId", "data-v-4f52a820"]]);
2442
- //#endregion
2443
- //#region src/components/ServerBar/Index.vue
2747
+ // src/components/ServerBar/Index.vue
2444
2748
  const _hoisted_1$7 = { class: "server-bar" };
2445
2749
  const _hoisted_2$6 = {
2446
2750
  class: "mark",
@@ -2450,7 +2754,7 @@ const _hoisted_2$6 = {
2450
2754
  const _hoisted_3$6 = ["d"];
2451
2755
  const _hoisted_4$6 = ["d"];
2452
2756
  const _hoisted_5$6 = { class: "name" };
2453
- var Index_default$31 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2757
+ var Index_default$32 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2454
2758
  __name: "Index",
2455
2759
  props: { name: {} },
2456
2760
  setup(__props) {
@@ -2465,8 +2769,7 @@ var Index_default$31 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2465
2769
  };
2466
2770
  }
2467
2771
  }), [["__scopeId", "data-v-6b68b3eb"]]);
2468
- //#endregion
2469
- //#region src/components/ShopScreen/Index.vue
2772
+ // src/components/ShopScreen/Index.vue
2470
2773
  const _hoisted_1$6 = { class: "shop-screen" };
2471
2774
  const _hoisted_2$5 = { class: "balances" };
2472
2775
  const _hoisted_3$5 = ["aria-label"];
@@ -2480,17 +2783,17 @@ const _hoisted_5$5 = {
2480
2783
  class: "tabs"
2481
2784
  };
2482
2785
  const _hoisted_6$5 = ["aria-pressed", "onClick"];
2483
- const _hoisted_7$5 = { class: "goods" };
2484
- const _hoisted_8$3 = ["aria-pressed", "onClick"];
2786
+ const _hoisted_7$4 = { class: "goods" };
2787
+ const _hoisted_8$2 = ["aria-pressed", "onClick"];
2485
2788
  const _hoisted_9$2 = { class: "good-name" };
2486
2789
  const _hoisted_10$2 = {
2487
2790
  key: 0,
2488
2791
  class: "good-limit"
2489
2792
  };
2490
2793
  const _hoisted_11$2 = ["aria-label"];
2491
- const _hoisted_12$2 = ["aria-label"];
2492
- const _hoisted_13$2 = { class: "detail-good" };
2493
- const _hoisted_14$2 = { class: "detail-name" };
2794
+ const _hoisted_12$1 = ["aria-label"];
2795
+ const _hoisted_13$1 = { class: "detail-good" };
2796
+ const _hoisted_14$1 = { class: "detail-name" };
2494
2797
  const _hoisted_15$1 = ["aria-label"];
2495
2798
  const _hoisted_16$1 = {
2496
2799
  key: 0,
@@ -2508,7 +2811,7 @@ const _hoisted_18$1 = [
2508
2811
  const _hoisted_19$1 = { class: "amount-value" };
2509
2812
  const _hoisted_20$1 = ["aria-label"];
2510
2813
  const _hoisted_21$1 = ["disabled"];
2511
- var Index_default$32 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2814
+ var Index_default$33 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2512
2815
  __name: "Index",
2513
2816
  props: /*@__PURE__*/ mergeModels({
2514
2817
  balances: {},
@@ -2547,7 +2850,7 @@ var Index_default$32 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2547
2850
  };
2548
2851
  return (_ctx, _cache) => {
2549
2852
  return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Shop screen, its pieces placed in the game's own pixels at 1080 high (`--unit` a pixel of that frame): the title\n and the balances across the head, the way out at the head's right, the tabs under them and the goods grid below. A\n picked good opens its detail over the grid, with its costs, limit and refresh, the count picker and the Buy button.\n The pixels are measured from the public Paimon's Bargains purchase clip aJq1MnTPtZ4 at 12 seconds (the frame is kept\n outside the repo): the panel at 505 by 250, the grid's four columns of 310 with gaps of 32, the Buy button at 1135 to\n 1345 by 728 to 790 "), createElementVNode("div", _hoisted_1$6, [
2550
- createVNode(Index_default$30, {
2853
+ createVNode(Index_default$31, {
2551
2854
  class: "heading",
2552
2855
  role: "heading",
2553
2856
  "aria-level": "1"
@@ -2569,7 +2872,7 @@ var Index_default$32 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2569
2872
  balance.isTopUp ? (openBlock(), createElementBlock("span", _hoisted_4$5, "+")) : createCommentVNode("v-if", true)
2570
2873
  ]);
2571
2874
  }), 128))]),
2572
- createVNode(Index_default$13, {
2875
+ createVNode(Index_default$14, {
2573
2876
  class: "close",
2574
2877
  label: __props.closeLabel,
2575
2878
  size: 56,
@@ -2589,7 +2892,7 @@ var Index_default$32 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2589
2892
  onClick: ($event) => tabId.value = tab.id
2590
2893
  }, toDisplayString(tab.name), 9, _hoisted_6$5)]);
2591
2894
  }), 128))])) : createCommentVNode("v-if", true),
2592
- createElementVNode("ul", _hoisted_7$5, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.goods, (good) => {
2895
+ createElementVNode("ul", _hoisted_7$4, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.goods, (good) => {
2593
2896
  return openBlock(), createElementBlock("li", { key: good.id }, [createElementVNode("button", {
2594
2897
  class: "good",
2595
2898
  "aria-pressed": good.id === goodId.value,
@@ -2608,7 +2911,7 @@ var Index_default$32 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2608
2911
  "aria-label": cost.name
2609
2912
  }, null, 8, _hoisted_11$2), createTextVNode(" " + toDisplayString(cost.count), 1)]);
2610
2913
  }), 128))
2611
- ], 8, _hoisted_8$3)]);
2914
+ ], 8, _hoisted_8$2)]);
2612
2915
  }), 128))]),
2613
2916
  pickedGood.value ? (openBlock(), createElementBlock("div", {
2614
2917
  key: 1,
@@ -2617,8 +2920,8 @@ var Index_default$32 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2617
2920
  "aria-modal": "true",
2618
2921
  "aria-label": pickedGood.value.name
2619
2922
  }, [
2620
- createElementVNode("div", _hoisted_13$2, [
2621
- createElementVNode("p", _hoisted_14$2, toDisplayString(pickedGood.value.name), 1),
2923
+ createElementVNode("div", _hoisted_13$1, [
2924
+ createElementVNode("p", _hoisted_14$1, toDisplayString(pickedGood.value.name), 1),
2622
2925
  (openBlock(true), createElementBlock(Fragment, null, renderList(pickedGood.value.costs, (cost) => {
2623
2926
  return openBlock(), createElementBlock("p", {
2624
2927
  key: cost.name,
@@ -2657,40 +2960,43 @@ var Index_default$32 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2657
2960
  type: "button",
2658
2961
  onClick: _cache[3] || (_cache[3] = ($event) => buy())
2659
2962
  }, toDisplayString(__props.buyLabel), 9, _hoisted_21$1)
2660
- ], 8, _hoisted_12$2)) : createCommentVNode("v-if", true)
2963
+ ], 8, _hoisted_12$1)) : createCommentVNode("v-if", true)
2661
2964
  ])], 2112);
2662
2965
  };
2663
2966
  }
2664
2967
  }), [["__scopeId", "data-v-af7ce84f"]]);
2665
- //#endregion
2666
- //#region src/components/WeaponMenu/Index.vue
2968
+ // src/models/WeaponMenuTab.ts
2969
+ let WeaponMenuTab = /* @__PURE__ */ function(WeaponMenuTab) {
2970
+ WeaponMenuTab["Ascend"] = "Ascend";
2971
+ WeaponMenuTab["Enhance"] = "Enhance";
2972
+ WeaponMenuTab["Refine"] = "Refine";
2973
+ return WeaponMenuTab;
2974
+ }({});
2975
+ // src/components/WeaponMenu/Index.vue
2667
2976
  const _hoisted_1$5 = ["data-tab"];
2668
- const _hoisted_2$4 = { class: "breadcrumb" };
2669
- const _hoisted_3$4 = { class: "tabs" };
2670
- const _hoisted_4$4 = ["aria-pressed", "onClick"];
2671
- const _hoisted_5$4 = ["aria-label"];
2672
- const _hoisted_6$4 = { class: "refinement" };
2673
- const _hoisted_7$4 = { class: "level" };
2674
- const _hoisted_8$2 = { class: "level-text" };
2675
- const _hoisted_9$1 = { class: "sparks" };
2676
- const _hoisted_10$1 = { class: "experience-text" };
2677
- const _hoisted_11$1 = { class: "experience" };
2678
- const _hoisted_12$1 = ["aria-label"];
2679
- const _hoisted_13$1 = ["disabled"];
2680
- const _hoisted_14$1 = ["aria-label"];
2681
- var Index_default$35 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2977
+ const _hoisted_2$4 = { class: "kind" };
2978
+ const _hoisted_3$4 = { class: "breadcrumb" };
2979
+ const _hoisted_4$4 = { class: "tabs" };
2980
+ const _hoisted_5$4 = { class: "row" };
2981
+ const _hoisted_6$4 = { class: "label" };
2982
+ const _hoisted_7$3 = ["aria-pressed", "onClick"];
2983
+ const _hoisted_8$1 = { class: "label" };
2984
+ const _hoisted_9$1 = ["aria-label"];
2985
+ const _hoisted_10$1 = {
2986
+ class: "close-arrow",
2987
+ viewBox: "0 0 30 30",
2988
+ "aria-hidden": "true"
2989
+ };
2990
+ const _hoisted_11$1 = ["d"];
2991
+ var Index_default$36 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2682
2992
  __name: "Index",
2683
2993
  props: /*@__PURE__*/ mergeModels({
2684
2994
  actionLabel: {},
2685
- ascension: {},
2686
2995
  closeLabel: {},
2687
- experienceRatio: {},
2688
- experienceText: {},
2996
+ detailsLabel: {},
2689
2997
  isActionDisabled: { type: Boolean },
2690
- levelText: {},
2998
+ kind: {},
2691
2999
  name: {},
2692
- rarity: {},
2693
- refinement: {},
2694
3000
  tabs: {}
2695
3001
  }, {
2696
3002
  "tab": { required: true },
@@ -2701,64 +3007,50 @@ var Index_default$35 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2701
3007
  const tab = useModel(__props, "tab");
2702
3008
  const emit = __emit;
2703
3009
  return (_ctx, _cache) => {
2704
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The weapon screen's frame: the weapon's name at the top left, the tabs down the left with the open one lit, and the\n open tab's panel down the right with its level, EXP, phase and refinement above it and its action beneath "), createElementVNode("div", {
3010
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The weapon screen's frame, drawn on the game's 1920 by 864 reference: the weapon's name at the top left, the tab column\n down the left with its Details row and the open tab lit, the open tab's body in the slot, and its action at the foot "), createElementVNode("div", {
2705
3011
  class: "weapon-menu",
2706
3012
  "data-tab": tab.value
2707
3013
  }, [
2708
- createElementVNode("p", _hoisted_2$4, toDisplayString(__props.name), 1),
2709
- createElementVNode("ul", _hoisted_3$4, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (menuTab) => {
2710
- return openBlock(), createElementBlock("li", { key: menuTab.tab }, [createElementVNode("button", {
3014
+ createElementVNode("p", _hoisted_2$4, toDisplayString(__props.kind) + " /", 1),
3015
+ createElementVNode("p", _hoisted_3$4, toDisplayString(__props.name), 1),
3016
+ createElementVNode("ul", _hoisted_4$4, [createElementVNode("li", _hoisted_5$4, [_cache[2] || (_cache[2] = createElementVNode("span", { class: "diamond" }, null, -1)), createElementVNode("span", _hoisted_6$4, toDisplayString(__props.detailsLabel), 1)]), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (menuTab) => {
3017
+ return openBlock(), createElementBlock("li", {
3018
+ key: menuTab.tab,
3019
+ class: "row"
3020
+ }, [createElementVNode("button", {
2711
3021
  class: "tab",
2712
3022
  "aria-pressed": menuTab.tab === tab.value,
2713
3023
  type: "button",
2714
3024
  onClick: ($event) => tab.value = menuTab.tab
2715
- }, toDisplayString(menuTab.label), 9, _hoisted_4$4)]);
3025
+ }, [_cache[3] || (_cache[3] = createElementVNode("span", { class: "diamond" }, null, -1)), createElementVNode("span", _hoisted_8$1, toDisplayString(menuTab.label), 1)], 8, _hoisted_7$3)]);
2716
3026
  }), 128))]),
2717
- createElementVNode("p", {
2718
- class: "stars",
2719
- "aria-label": `${__props.rarity}`
2720
- }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.rarity, (star) => {
2721
- return openBlock(), createElementBlock("span", {
2722
- key: star,
2723
- class: "star"
2724
- });
2725
- }), 128))], 8, _hoisted_5$4),
2726
- createElementVNode("p", _hoisted_6$4, toDisplayString(__props.refinement), 1),
2727
- createElementVNode("p", _hoisted_7$4, [createElementVNode("span", _hoisted_8$2, toDisplayString(__props.levelText), 1), createElementVNode("span", _hoisted_9$1, [createCommentVNode(" The ascension phases, each a small star the phases reached light "), (openBlock(true), createElementBlock(Fragment, null, renderList(unref(6), (phase) => {
2728
- return openBlock(), createElementBlock("span", {
2729
- key: phase,
2730
- class: normalizeClass(["spark", { lit: phase <= __props.ascension }])
2731
- }, null, 2);
2732
- }), 128))])]),
2733
- createElementVNode("p", _hoisted_10$1, toDisplayString(__props.experienceText), 1),
2734
- createElementVNode("span", _hoisted_11$1, [createElementVNode("span", {
2735
- class: "fill",
2736
- style: normalizeStyle({ "--experience-ratio": __props.experienceRatio })
2737
- }, null, 4)]),
2738
- createElementVNode("section", {
2739
- class: "panel",
2740
- "aria-label": __props.actionLabel
2741
- }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 8, _hoisted_12$1),
2742
- createElementVNode("button", {
3027
+ renderSlot(_ctx.$slots, "default", {}, void 0, true),
3028
+ createVNode(Index_default$17, {
2743
3029
  class: "action",
2744
3030
  disabled: __props.isActionDisabled,
2745
- type: "button",
3031
+ kind: tab.value === unref(WeaponMenuTab).Ascend ? unref(GameButtonKind).Gold : unref(GameButtonKind).Pill,
3032
+ tip: "",
2746
3033
  onClick: _cache[0] || (_cache[0] = ($event) => emit("action"))
2747
- }, toDisplayString(__props.actionLabel), 9, _hoisted_13$1),
3034
+ }, {
3035
+ default: withCtx(() => [createElementVNode("span", {
3036
+ class: normalizeClass(["action-icon", { coin: tab.value === unref(WeaponMenuTab).Ascend }]),
3037
+ "aria-hidden": "true"
3038
+ }, null, 2), createTextVNode(" " + toDisplayString(__props.actionLabel), 1)]),
3039
+ _: 1
3040
+ }, 8, ["disabled", "kind"]),
2748
3041
  createElementVNode("button", {
2749
3042
  class: "close",
2750
3043
  "aria-label": __props.closeLabel,
2751
3044
  type: "button",
2752
3045
  onClick: _cache[1] || (_cache[1] = ($event) => emit("close"))
2753
- }, "↶", 8, _hoisted_14$1)
3046
+ }, [(openBlock(), createElementBlock("svg", _hoisted_10$1, [createElementVNode("path", { d: unref(BACK_ARROW_PATH) }, null, 8, _hoisted_11$1)]))], 8, _hoisted_9$1)
2754
3047
  ], 8, _hoisted_1$5)], 2112);
2755
3048
  };
2756
3049
  }
2757
- }), [["__scopeId", "data-v-f3f59f0e"]]);
2758
- //#endregion
2759
- //#region src/components/WishPath/Index.vue
3050
+ }), [["__scopeId", "data-v-06b6b58a"]]);
3051
+ // src/components/WishPath/Index.vue
2760
3052
  const _hoisted_1$4 = { class: "fate-points" };
2761
- var Index_default$38 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
3053
+ var Index_default$39 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2762
3054
  __name: "Index",
2763
3055
  props: {
2764
3056
  fatePoints: {},
@@ -2775,16 +3067,14 @@ var Index_default$38 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2775
3067
  };
2776
3068
  }
2777
3069
  }), [["__scopeId", "data-v-2456390c"]]);
2778
- //#endregion
2779
- //#region src/components/WishDetails/Index.vue
3070
+ // src/components/WishDetails/Index.vue
2780
3071
  const _hoisted_1$3 = ["aria-label"];
2781
3072
  const _hoisted_2$3 = { class: "panel" };
2782
3073
  const _hoisted_3$3 = { class: "title" };
2783
- const _hoisted_4$3 = ["aria-label"];
2784
- const _hoisted_5$3 = { class: "pool" };
2785
- const _hoisted_6$3 = { class: "pool-items" };
2786
- const _hoisted_7$3 = ["data-featured"];
2787
- var Index_default$36 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
3074
+ const _hoisted_4$3 = { class: "pool" };
3075
+ const _hoisted_5$3 = { class: "pool-items" };
3076
+ const _hoisted_6$3 = ["data-featured"];
3077
+ var Index_default$37 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2788
3078
  __name: "Index",
2789
3079
  props: {
2790
3080
  closeLabel: {},
@@ -2804,25 +3094,25 @@ var Index_default$36 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2804
3094
  "aria-label": __props.title
2805
3095
  }, [createElementVNode("div", _hoisted_2$3, [
2806
3096
  createElementVNode("p", _hoisted_3$3, toDisplayString(__props.title), 1),
2807
- createElementVNode("button", {
3097
+ createVNode(Index_default$10, {
2808
3098
  class: "close",
2809
- type: "button",
2810
- "aria-label": __props.closeLabel,
3099
+ label: __props.closeLabel,
3100
+ mark: unref(CloseButtonMark).Cross,
2811
3101
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
2812
- }, "✕", 8, _hoisted_4$3),
2813
- createElementVNode("ul", _hoisted_5$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(poolRarityCellsMap.value, ([rarity, cells]) => {
3102
+ }, null, 8, ["label", "mark"]),
3103
+ createElementVNode("ul", _hoisted_4$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(poolRarityCellsMap.value, ([rarity, cells]) => {
2814
3104
  return openBlock(), createElementBlock("li", {
2815
3105
  key: rarity,
2816
3106
  class: "pool-rarity"
2817
- }, [createVNode(Index_default$27, { rarity }, null, 8, ["rarity"]), createElementVNode("ul", _hoisted_6$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(cells, ({ id, isFeatured, name }) => {
3107
+ }, [createVNode(Index_default$28, { rarity }, null, 8, ["rarity"]), createElementVNode("ul", _hoisted_5$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(cells, ({ id, isFeatured, name }) => {
2818
3108
  return openBlock(), createElementBlock("li", {
2819
3109
  key: id,
2820
3110
  class: "pool-item",
2821
3111
  "data-featured": isFeatured
2822
- }, toDisplayString(name), 9, _hoisted_7$3);
3112
+ }, toDisplayString(name), 9, _hoisted_6$3);
2823
3113
  }), 128))])]);
2824
3114
  }), 128))]),
2825
- __props.pathLabel ? (openBlock(), createBlock(Index_default$38, {
3115
+ __props.pathLabel ? (openBlock(), createBlock(Index_default$39, {
2826
3116
  key: 0,
2827
3117
  "path-label": __props.pathLabel,
2828
3118
  "fate-points": __props.fatePoints
@@ -2830,18 +3120,16 @@ var Index_default$36 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2830
3120
  ])], 8, _hoisted_1$3)], 2112);
2831
3121
  };
2832
3122
  }
2833
- }), [["__scopeId", "data-v-abdcc945"]]);
2834
- //#endregion
2835
- //#region src/components/WishHistory/Index.vue
3123
+ }), [["__scopeId", "data-v-5b167aa9"]]);
3124
+ // src/components/WishHistory/Index.vue
2836
3125
  const _hoisted_1$2 = ["aria-label"];
2837
3126
  const _hoisted_2$2 = { class: "panel" };
2838
3127
  const _hoisted_3$2 = { class: "title" };
2839
- const _hoisted_4$2 = ["aria-label"];
2840
- const _hoisted_5$2 = { class: "draws" };
2841
- const _hoisted_6$2 = { class: "time" };
2842
- const _hoisted_7$2 = { class: "banner" };
2843
- const _hoisted_8$1 = { class: "name" };
2844
- var Index_default$37 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
3128
+ const _hoisted_4$2 = { class: "draws" };
3129
+ const _hoisted_5$2 = { class: "time" };
3130
+ const _hoisted_6$2 = { class: "banner" };
3131
+ const _hoisted_7$2 = { class: "name" };
3132
+ var Index_default$38 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2845
3133
  __name: "Index",
2846
3134
  props: {
2847
3135
  closeLabel: {},
@@ -2858,65 +3146,89 @@ var Index_default$37 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2858
3146
  "aria-label": __props.title
2859
3147
  }, [createElementVNode("div", _hoisted_2$2, [
2860
3148
  createElementVNode("p", _hoisted_3$2, toDisplayString(__props.title), 1),
2861
- createElementVNode("button", {
3149
+ createVNode(Index_default$10, {
2862
3150
  class: "close",
2863
- type: "button",
2864
- "aria-label": __props.closeLabel,
3151
+ label: __props.closeLabel,
3152
+ mark: unref(CloseButtonMark).Cross,
2865
3153
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
2866
- }, "✕", 8, _hoisted_4$2),
2867
- createElementVNode("ul", _hoisted_5$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.history, ({ bannerLabel, name, rarity, time }, index) => {
3154
+ }, null, 8, ["label", "mark"]),
3155
+ createElementVNode("ul", _hoisted_4$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.history, ({ bannerLabel, name, rarity, time }, index) => {
2868
3156
  return openBlock(), createElementBlock("li", {
2869
3157
  key: index,
2870
3158
  class: "draw"
2871
3159
  }, [
2872
- createElementVNode("span", _hoisted_6$2, toDisplayString(time), 1),
2873
- createElementVNode("span", _hoisted_7$2, toDisplayString(bannerLabel), 1),
2874
- createElementVNode("span", _hoisted_8$1, toDisplayString(name), 1),
2875
- createVNode(Index_default$27, { rarity }, null, 8, ["rarity"])
3160
+ createElementVNode("span", _hoisted_5$2, toDisplayString(time), 1),
3161
+ createElementVNode("span", _hoisted_6$2, toDisplayString(bannerLabel), 1),
3162
+ createElementVNode("span", _hoisted_7$2, toDisplayString(name), 1),
3163
+ createVNode(Index_default$28, { rarity }, null, 8, ["rarity"])
2876
3164
  ]);
2877
3165
  }), 128))])
2878
3166
  ])], 8, _hoisted_1$2)], 2112);
2879
3167
  };
2880
3168
  }
2881
- }), [["__scopeId", "data-v-86f92bab"]]);
2882
- //#endregion
2883
- //#region src/components/WishScreen/Index.vue
3169
+ }), [["__scopeId", "data-v-b75c8439"]]);
3170
+ // src/components/WishScreen/Index.vue
2884
3171
  const _hoisted_1$1 = { class: "wish-screen" };
2885
3172
  const _hoisted_2$1 = { class: "banners" };
2886
- const _hoisted_3$1 = { class: "currencies" };
2887
- const _hoisted_4$1 = { class: "currency-name" };
2888
- const _hoisted_5$1 = {
3173
+ const _hoisted_3$1 = { class: "currencies currencies-top" };
3174
+ const _hoisted_4$1 = ["aria-label"];
3175
+ const _hoisted_5$1 = { class: "currency-count" };
3176
+ const _hoisted_6$1 = { class: "currencies currencies-bottom" };
3177
+ const _hoisted_7$1 = ["aria-label"];
3178
+ const _hoisted_8 = { class: "currency-count" };
3179
+ const _hoisted_9 = {
2889
3180
  key: 0,
2890
3181
  class: "card"
2891
3182
  };
2892
- const _hoisted_6$1 = { class: "tag" };
2893
- const _hoisted_7$1 = { class: "card-title" };
2894
- const _hoisted_8 = { class: "probability" };
2895
- const _hoisted_9 = { class: "rate-up" };
2896
- const _hoisted_10 = {
3183
+ const _hoisted_10 = { class: "tag" };
3184
+ const _hoisted_11 = {
2897
3185
  key: 0,
2898
- class: "featured"
3186
+ class: "card-title"
2899
3187
  };
2900
- const _hoisted_11 = { class: "featured-name" };
2901
- const _hoisted_12 = { class: "featured-title" };
2902
- const _hoisted_13 = { class: "links" };
3188
+ const _hoisted_12 = {
3189
+ key: 1,
3190
+ class: "rule",
3191
+ "aria-hidden": "true"
3192
+ };
3193
+ const _hoisted_13 = { class: "probability" };
2903
3194
  const _hoisted_14 = {
3195
+ key: 2,
3196
+ class: "rate-up"
3197
+ };
3198
+ const _hoisted_15 = { class: "notice" };
3199
+ const _hoisted_16 = {
3200
+ key: 3,
3201
+ class: "time-label"
3202
+ };
3203
+ const _hoisted_17 = {
3204
+ key: 4,
3205
+ class: "time-duration"
3206
+ };
3207
+ const _hoisted_18 = {
3208
+ key: 5,
3209
+ class: "featured"
3210
+ };
3211
+ const _hoisted_19 = { class: "featured-name" };
3212
+ const _hoisted_20 = { class: "featured-stars" };
3213
+ const _hoisted_21 = { class: "featured-title" };
3214
+ const _hoisted_22 = { class: "links" };
3215
+ const _hoisted_23 = {
2904
3216
  key: 2,
2905
3217
  class: "sets"
2906
3218
  };
2907
- const _hoisted_15 = { class: "set-label" };
2908
- const _hoisted_16 = { class: "cost" };
2909
- const _hoisted_17 = { class: "set-label" };
2910
- const _hoisted_18 = { class: "cost" };
2911
- const _hoisted_19 = { class: "result-list" };
2912
- const _hoisted_20 = ["data-capturing-radiance", "data-rarity"];
2913
- const _hoisted_21 = { class: "result-name" };
2914
- const _hoisted_22 = {
3219
+ const _hoisted_24 = { class: "set-label" };
3220
+ const _hoisted_25 = { class: "cost" };
3221
+ const _hoisted_26 = { class: "set-label" };
3222
+ const _hoisted_27 = { class: "cost" };
3223
+ const _hoisted_28 = { class: "result-list" };
3224
+ const _hoisted_29 = ["data-capturing-radiance", "data-rarity"];
3225
+ const _hoisted_30 = { class: "result-name" };
3226
+ const _hoisted_31 = {
2915
3227
  key: 0,
2916
3228
  class: "result-stella-fortuna"
2917
3229
  };
2918
- const _hoisted_23 = { class: "result-return" };
2919
- var Index_default$39 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
3230
+ const _hoisted_32 = { class: "result-return" };
3231
+ var Index_default$40 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2920
3232
  __name: "Index",
2921
3233
  props: /*@__PURE__*/ mergeModels({
2922
3234
  backLabel: {},
@@ -2925,6 +3237,7 @@ var Index_default$39 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2925
3237
  currencies: {},
2926
3238
  detailsLabel: {},
2927
3239
  fatePoints: {},
3240
+ fiveStarNotice: {},
2928
3241
  history: {},
2929
3242
  historyLabel: {},
2930
3243
  pathLabel: {},
@@ -2934,10 +3247,12 @@ var Index_default$39 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2934
3247
  results: {},
2935
3248
  sets: {},
2936
3249
  shopLabel: {},
3250
+ timeRemainingLabel: {},
3251
+ timeRemainingText: {},
2937
3252
  title: {},
2938
3253
  trialLabel: {}
2939
3254
  }, {
2940
- "bannerId": {},
3255
+ "bannerId": { default: "" },
2941
3256
  "bannerIdModifiers": {}
2942
3257
  }),
2943
3258
  emits: /*@__PURE__*/ mergeModels([
@@ -2958,9 +3273,16 @@ var Index_default$39 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2958
3273
  const openBanner = __props.banners.find(({ id }) => id === bannerId.value);
2959
3274
  return openBanner && getLabelText(openBanner.label);
2960
3275
  });
3276
+ const topUpCurrencies = computed(() => __props.currencies.filter(({ isTopUp }) => isTopUp));
3277
+ const bottomCurrencies = computed(() => __props.currencies.filter(({ isTopUp }) => !isTopUp));
2961
3278
  return (_ctx, _cache) => {
2962
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The wish, the F3 key's: the banners across the head with the counts and the way back beside them, the open banner's\n card over the screen with its promoted five-star, its ×1 and ×10 with their costs, and the Shop, Details and History\n Row under the card. Details opens the banner's pool over the screen, and over it all what the Last wishes drew, a card\n Each with its stars, until a click goes on. Provisional: every place, size and colour here waits on the wish's passes\n Against a recording of the English Client at 1080 high, and the banner card's art and the banners' tabs' portraits\n Are the plate's, which cannot ship "), createElementVNode("div", _hoisted_1$1, [
2963
- createVNode(Index_default$30, {
3279
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The wish, the F3 key's: the banners across the head with the counts and the way back beside them, the open banner's\n card over the screen with its promoted five-star, its ×1 and ×10 with their costs, and the Shop, Details and History\n row under the card. Details opens the banner's pool over the screen, and over it all what the Last wishes drew, a card\n each with its stars, until a click goes on. Provisional: every place, size and colour here waits on the wish's passes\n against a recording of the English Client at 1080 high, and the banner card's art and the banners' tabs' portraits\n are the plate's, which cannot ship "), createElementVNode("div", _hoisted_1$1, [
3280
+ _cache[10] || (_cache[10] = createElementVNode("span", {
3281
+ class: "sparkle star",
3282
+ "aria-hidden": "true"
3283
+ }, null, -1)),
3284
+ createVNode(Index_default$31, {
3285
+ class: "heading",
2964
3286
  role: "heading",
2965
3287
  "aria-level": "1"
2966
3288
  }, {
@@ -2968,11 +3290,12 @@ var Index_default$39 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2968
3290
  _: 1
2969
3291
  }),
2970
3292
  createElementVNode("ul", _hoisted_2$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.banners, (banner) => {
2971
- return openBlock(), createElementBlock("li", { key: banner.id }, [createVNode(Index_default$16, {
3293
+ return openBlock(), createElementBlock("li", { key: banner.id }, [createVNode(Index_default$17, {
2972
3294
  class: "banner",
2973
3295
  "aria-label": getLabelText(banner.label),
2974
3296
  "aria-pressed": banner.id === bannerId.value,
2975
3297
  kind: unref(GameButtonKind).Row,
3298
+ tip: "",
2976
3299
  onClick: ($event) => bannerId.value = banner.id
2977
3300
  }, null, 8, [
2978
3301
  "aria-label",
@@ -2981,86 +3304,116 @@ var Index_default$39 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2981
3304
  "onClick"
2982
3305
  ])]);
2983
3306
  }), 128))]),
2984
- createElementVNode("ul", _hoisted_3$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.currencies, ({ id, name, quantity }) => {
3307
+ createElementVNode("ul", _hoisted_3$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(topUpCurrencies.value, ({ id, name, quantity }) => {
2985
3308
  return openBlock(), createElementBlock("li", {
2986
3309
  key: id,
2987
3310
  class: "currency"
2988
- }, [createElementVNode("span", _hoisted_4$1, toDisplayString(name), 1), createTextVNode(" " + toDisplayString(quantity), 1)]);
3311
+ }, [
3312
+ createElementVNode("span", {
3313
+ class: "currency-icon",
3314
+ role: "img",
3315
+ "aria-label": name
3316
+ }, null, 8, _hoisted_4$1),
3317
+ createElementVNode("span", _hoisted_5$1, toDisplayString(quantity), 1),
3318
+ _cache[8] || (_cache[8] = createElementVNode("span", {
3319
+ class: "top-up",
3320
+ "aria-hidden": "true"
3321
+ }, "+", -1))
3322
+ ]);
2989
3323
  }), 128))]),
2990
- createVNode(Index_default$16, {
2991
- class: "back",
2992
- "aria-label": __props.backLabel,
2993
- kind: unref(GameButtonKind).Plain,
3324
+ createElementVNode("ul", _hoisted_6$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(bottomCurrencies.value, ({ id, name, quantity }) => {
3325
+ return openBlock(), createElementBlock("li", {
3326
+ key: id,
3327
+ class: "currency"
3328
+ }, [createElementVNode("span", {
3329
+ class: "currency-icon",
3330
+ role: "img",
3331
+ "aria-label": name
3332
+ }, null, 8, _hoisted_7$1), createElementVNode("span", _hoisted_8, toDisplayString(quantity), 1)]);
3333
+ }), 128))]),
3334
+ createVNode(Index_default$10, {
3335
+ class: "close",
3336
+ label: __props.backLabel,
3337
+ mark: unref(CloseButtonMark).Cross,
2994
3338
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
2995
- }, {
2996
- default: withCtx(() => [..._cache[8] || (_cache[8] = [createTextVNode("✕", -1)])]),
2997
- _: 1
2998
- }, 8, ["aria-label", "kind"]),
2999
- __props.bannerCard && bannerLabelText.value ? (openBlock(), createElementBlock("section", _hoisted_5$1, [
3000
- createElementVNode("p", _hoisted_6$1, toDisplayString(bannerLabelText.value), 1),
3001
- createElementVNode("p", _hoisted_7$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.bannerCard.title, ({ color, text }, index) => {
3339
+ }, null, 8, ["label", "mark"]),
3340
+ bannerLabelText.value && __props.fiveStarNotice ? (openBlock(), createElementBlock("section", _hoisted_9, [
3341
+ createElementVNode("p", _hoisted_10, toDisplayString(bannerLabelText.value), 1),
3342
+ __props.bannerCard ? (openBlock(), createElementBlock("p", _hoisted_11, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.bannerCard.title, ({ color, text }, index) => {
3002
3343
  return openBlock(), createElementBlock("span", {
3003
3344
  key: index,
3004
3345
  style: normalizeStyle({ color })
3005
3346
  }, toDisplayString(text), 5);
3006
- }), 128))]),
3007
- createElementVNode("p", _hoisted_8, toDisplayString(__props.probabilityLabel), 1),
3008
- createElementVNode("p", _hoisted_9, toDisplayString(__props.bannerCard.rateUp), 1),
3009
- featuredCell.value ? (openBlock(), createElementBlock("div", _hoisted_10, [
3010
- createElementVNode("p", _hoisted_11, toDisplayString(featuredCell.value.name), 1),
3011
- createElementVNode("p", null, [createVNode(Index_default$27, { rarity: featuredCell.value.rarity }, null, 8, ["rarity"])]),
3012
- createElementVNode("p", _hoisted_12, toDisplayString(__props.bannerCard.featuredTitle), 1)
3347
+ }), 128))])) : createCommentVNode("v-if", true),
3348
+ __props.bannerCard ? (openBlock(), createElementBlock("span", _hoisted_12)) : createCommentVNode("v-if", true),
3349
+ createElementVNode("p", _hoisted_13, toDisplayString(__props.probabilityLabel), 1),
3350
+ __props.bannerCard ? (openBlock(), createElementBlock("p", _hoisted_14, [_cache[9] || (_cache[9] = createElementVNode("span", {
3351
+ class: "sparkle small",
3352
+ "aria-hidden": "true"
3353
+ }, null, -1)), createTextVNode(toDisplayString(__props.bannerCard.rateUp), 1)])) : createCommentVNode("v-if", true),
3354
+ createElementVNode("p", _hoisted_15, toDisplayString(__props.fiveStarNotice), 1),
3355
+ __props.timeRemainingText ? (openBlock(), createElementBlock("p", _hoisted_16, toDisplayString(__props.timeRemainingLabel), 1)) : createCommentVNode("v-if", true),
3356
+ __props.timeRemainingText ? (openBlock(), createElementBlock("p", _hoisted_17, toDisplayString(__props.timeRemainingText), 1)) : createCommentVNode("v-if", true),
3357
+ __props.bannerCard && featuredCell.value ? (openBlock(), createElementBlock("div", _hoisted_18, [
3358
+ createElementVNode("p", _hoisted_19, toDisplayString(featuredCell.value.name), 1),
3359
+ createElementVNode("p", _hoisted_20, [createVNode(Index_default$28, { rarity: featuredCell.value.rarity }, null, 8, ["rarity"])]),
3360
+ createElementVNode("p", _hoisted_21, toDisplayString(__props.bannerCard.featuredTitle), 1)
3013
3361
  ])) : createCommentVNode("v-if", true)
3014
3362
  ])) : createCommentVNode("v-if", true),
3015
- createElementVNode("div", _hoisted_13, [
3016
- createVNode(Index_default$16, {
3363
+ createElementVNode("div", _hoisted_22, [
3364
+ createVNode(Index_default$17, {
3017
3365
  class: "link",
3018
- kind: unref(GameButtonKind).Reply
3366
+ kind: unref(GameButtonKind).Reply,
3367
+ tip: ""
3019
3368
  }, {
3020
3369
  default: withCtx(() => [createTextVNode(toDisplayString(__props.shopLabel), 1)]),
3021
3370
  _: 1
3022
3371
  }, 8, ["kind"]),
3023
- __props.trialLabel ? (openBlock(), createBlock(Index_default$16, {
3372
+ __props.trialLabel ? (openBlock(), createBlock(Index_default$17, {
3024
3373
  key: 0,
3025
3374
  class: "link trial",
3026
3375
  kind: unref(GameButtonKind).Reply,
3376
+ tip: "",
3027
3377
  onClick: _cache[1] || (_cache[1] = ($event) => emit("trial"))
3028
3378
  }, {
3029
3379
  default: withCtx(() => [createTextVNode(toDisplayString(__props.trialLabel), 1)]),
3030
3380
  _: 1
3031
3381
  }, 8, ["kind"])) : createCommentVNode("v-if", true),
3032
- createVNode(Index_default$16, {
3382
+ createVNode(Index_default$17, {
3033
3383
  class: "link",
3034
3384
  kind: unref(GameButtonKind).Reply,
3385
+ tip: "",
3035
3386
  onClick: _cache[2] || (_cache[2] = ($event) => isDetailsOpen.value = true)
3036
3387
  }, {
3037
3388
  default: withCtx(() => [createTextVNode(toDisplayString(__props.detailsLabel), 1)]),
3038
3389
  _: 1
3039
3390
  }, 8, ["kind"]),
3040
- createVNode(Index_default$16, {
3391
+ createVNode(Index_default$17, {
3041
3392
  class: "link",
3042
3393
  kind: unref(GameButtonKind).Reply,
3394
+ tip: "",
3043
3395
  onClick: _cache[3] || (_cache[3] = ($event) => isHistoryOpen.value = true)
3044
3396
  }, {
3045
3397
  default: withCtx(() => [createTextVNode(toDisplayString(__props.historyLabel), 1)]),
3046
3398
  _: 1
3047
3399
  }, 8, ["kind"])
3048
3400
  ]),
3049
- __props.pathLabel ? (openBlock(), createBlock(Index_default$38, {
3401
+ __props.pathLabel ? (openBlock(), createBlock(Index_default$39, {
3050
3402
  key: 1,
3051
3403
  class: "path",
3052
3404
  "path-label": __props.pathLabel,
3053
3405
  "fate-points": __props.fatePoints
3054
3406
  }, null, 8, ["path-label", "fate-points"])) : createCommentVNode("v-if", true),
3055
- bannerId.value ? (openBlock(), createElementBlock("div", _hoisted_14, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.sets, ({ cost, count, isAffordable, label }) => {
3056
- return openBlock(), createBlock(Index_default$16, {
3407
+ bannerId.value ? (openBlock(), createElementBlock("div", _hoisted_23, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.sets, ({ cost, count, isAffordable, label }) => {
3408
+ return openBlock(), createBlock(Index_default$17, {
3057
3409
  key: count,
3058
3410
  class: "set",
3059
3411
  disabled: !isAffordable,
3060
3412
  kind: unref(GameButtonKind).Pill,
3413
+ tip: "",
3061
3414
  onClick: ($event) => emit("wish", count)
3062
3415
  }, {
3063
- default: withCtx(() => [createElementVNode("span", _hoisted_15, toDisplayString(label), 1), createElementVNode("span", _hoisted_16, toDisplayString(cost), 1)]),
3416
+ default: withCtx(() => [createElementVNode("span", _hoisted_24, toDisplayString(label), 1), createElementVNode("span", _hoisted_25, toDisplayString(cost), 1)]),
3064
3417
  _: 2
3065
3418
  }, 1032, [
3066
3419
  "disabled",
@@ -3068,18 +3421,19 @@ var Index_default$39 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
3068
3421
  "onClick"
3069
3422
  ]);
3070
3423
  }), 128)), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.purchases, ({ cost, isAffordable, label }) => {
3071
- return openBlock(), createBlock(Index_default$16, {
3424
+ return openBlock(), createBlock(Index_default$17, {
3072
3425
  key: label,
3073
3426
  class: "set",
3074
3427
  disabled: !isAffordable,
3075
3428
  kind: unref(GameButtonKind).Pill,
3429
+ tip: "",
3076
3430
  onClick: _cache[4] || (_cache[4] = ($event) => emit("buy"))
3077
3431
  }, {
3078
- default: withCtx(() => [createElementVNode("span", _hoisted_17, toDisplayString(label), 1), createElementVNode("span", _hoisted_18, toDisplayString(cost), 1)]),
3432
+ default: withCtx(() => [createElementVNode("span", _hoisted_26, toDisplayString(label), 1), createElementVNode("span", _hoisted_27, toDisplayString(cost), 1)]),
3079
3433
  _: 2
3080
3434
  }, 1032, ["disabled", "kind"]);
3081
3435
  }), 128))])) : createCommentVNode("v-if", true),
3082
- isDetailsOpen.value ? (openBlock(), createBlock(Index_default$36, {
3436
+ isDetailsOpen.value ? (openBlock(), createBlock(Index_default$37, {
3083
3437
  key: 3,
3084
3438
  "close-label": __props.backLabel,
3085
3439
  "fate-points": __props.fatePoints,
@@ -3094,7 +3448,7 @@ var Index_default$39 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
3094
3448
  "pool",
3095
3449
  "title"
3096
3450
  ])) : createCommentVNode("v-if", true),
3097
- isHistoryOpen.value ? (openBlock(), createBlock(Index_default$37, {
3451
+ isHistoryOpen.value ? (openBlock(), createBlock(Index_default$38, {
3098
3452
  key: 4,
3099
3453
  "close-label": __props.backLabel,
3100
3454
  history: __props.history,
@@ -3109,33 +3463,31 @@ var Index_default$39 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
3109
3463
  key: 5,
3110
3464
  class: "results",
3111
3465
  onClick: _cache[7] || (_cache[7] = ($event) => emit("dismiss"))
3112
- }, [createElementVNode("ul", _hoisted_19, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.results, ({ isCapturingRadiance, name, rarity, stellaFortuna, wishReturn }, index) => {
3466
+ }, [createElementVNode("ul", _hoisted_28, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.results, ({ isCapturingRadiance, name, rarity, stellaFortuna, wishReturn }, index) => {
3113
3467
  return openBlock(), createElementBlock("li", {
3114
3468
  key: index,
3115
3469
  class: "result",
3116
3470
  "data-capturing-radiance": isCapturingRadiance,
3117
3471
  "data-rarity": rarity
3118
3472
  }, [
3119
- createElementVNode("span", _hoisted_21, toDisplayString(name), 1),
3120
- createVNode(Index_default$27, { rarity }, null, 8, ["rarity"]),
3121
- stellaFortuna ? (openBlock(), createElementBlock("span", _hoisted_22, toDisplayString(stellaFortuna), 1)) : createCommentVNode("v-if", true),
3122
- createElementVNode("span", _hoisted_23, toDisplayString(wishReturn), 1)
3123
- ], 8, _hoisted_20);
3473
+ createElementVNode("span", _hoisted_30, toDisplayString(name), 1),
3474
+ createVNode(Index_default$28, { rarity }, null, 8, ["rarity"]),
3475
+ stellaFortuna ? (openBlock(), createElementBlock("span", _hoisted_31, toDisplayString(stellaFortuna), 1)) : createCommentVNode("v-if", true),
3476
+ createElementVNode("span", _hoisted_32, toDisplayString(wishReturn), 1)
3477
+ ], 8, _hoisted_29);
3124
3478
  }), 128))])])) : createCommentVNode("v-if", true)
3125
3479
  ])], 2112);
3126
3480
  };
3127
3481
  }
3128
- }), [["__scopeId", "data-v-669dc4ab"]]);
3129
- //#endregion
3130
- //#region src/models/WorshipLevelState.ts
3482
+ }), [["__scopeId", "data-v-53480dd4"]]);
3483
+ // src/models/WorshipLevelState.ts
3131
3484
  let WorshipLevelState = /* @__PURE__ */ function(WorshipLevelState) {
3132
3485
  WorshipLevelState["Claimable"] = "claimable";
3133
3486
  WorshipLevelState["Claimed"] = "claimed";
3134
3487
  WorshipLevelState["Locked"] = "locked";
3135
3488
  return WorshipLevelState;
3136
3489
  }({});
3137
- //#endregion
3138
- //#region src/components/WorshipScreen/Index.vue
3490
+ // src/components/WorshipScreen/Index.vue
3139
3491
  const _hoisted_1 = { class: "worship-screen" };
3140
3492
  const _hoisted_2 = { class: "title" };
3141
3493
  const _hoisted_3 = { class: "levels" };
@@ -3143,10 +3495,11 @@ const _hoisted_4 = ["disabled"];
3143
3495
  const _hoisted_5 = { class: "level" };
3144
3496
  const _hoisted_6 = { class: "oculi" };
3145
3497
  const _hoisted_7 = { class: "rewards" };
3146
- var Index_default$40 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
3498
+ var Index_default$41 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
3147
3499
  __name: "Index",
3148
3500
  props: {
3149
3501
  blessingTitle: {},
3502
+ closeLabel: {},
3150
3503
  heldCount: {},
3151
3504
  levels: {},
3152
3505
  title: {}
@@ -3163,11 +3516,12 @@ var Index_default$40 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
3163
3516
  return (_ctx, _cache) => {
3164
3517
  return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The layout is provisional until the recording of the Worship screen shows it "), createElementVNode("div", _hoisted_1, [
3165
3518
  createElementVNode("h1", _hoisted_2, toDisplayString(__props.title), 1),
3166
- createElementVNode("button", {
3519
+ createVNode(Index_default$10, {
3167
3520
  class: "close",
3168
- type: "button",
3521
+ label: __props.closeLabel,
3522
+ mark: unref(CloseButtonMark).Cross,
3169
3523
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
3170
- }, "×"),
3524
+ }, null, 8, ["label", "mark"]),
3171
3525
  createElementVNode("button", {
3172
3526
  class: "blessing",
3173
3527
  type: "button",
@@ -3197,9 +3551,8 @@ var Index_default$40 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
3197
3551
  ])], 2112);
3198
3552
  };
3199
3553
  }
3200
- }), [["__scopeId", "data-v-529b74f5"]]);
3201
- //#endregion
3202
- //#region src/models/InteractionKind.ts
3554
+ }), [["__scopeId", "data-v-cf49e71d"]]);
3555
+ // src/models/InteractionKind.ts
3203
3556
  let InteractionKind = /* @__PURE__ */ function(InteractionKind) {
3204
3557
  InteractionKind["Activate"] = "Activate";
3205
3558
  InteractionKind["Claim"] = "Claim";
@@ -3211,15 +3564,13 @@ let InteractionKind = /* @__PURE__ */ function(InteractionKind) {
3211
3564
  InteractionKind["Use"] = "Use";
3212
3565
  return InteractionKind;
3213
3566
  }({});
3214
- //#endregion
3215
- //#region src/models/InteractionState.ts
3567
+ // src/models/InteractionState.ts
3216
3568
  let InteractionState = /* @__PURE__ */ function(InteractionState) {
3217
3569
  InteractionState["Hover"] = "Hover";
3218
3570
  InteractionState["Pressed"] = "Pressed";
3219
3571
  return InteractionState;
3220
3572
  }({});
3221
- //#endregion
3222
- //#region src/models/InterfaceClipProperty.ts
3573
+ // src/models/InterfaceClipProperty.ts
3223
3574
  let InterfaceClipProperty = /* @__PURE__ */ function(InterfaceClipProperty) {
3224
3575
  InterfaceClipProperty["Opacity"] = "opacity";
3225
3576
  InterfaceClipProperty["Scale"] = "scale";
@@ -3228,16 +3579,7 @@ let InterfaceClipProperty = /* @__PURE__ */ function(InterfaceClipProperty) {
3228
3579
  return InterfaceClipProperty;
3229
3580
  }({});
3230
3581
  const InterfaceClipProperties = Object.values(InterfaceClipProperty);
3231
- //#endregion
3232
- //#region src/models/WeaponMenuTab.ts
3233
- let WeaponMenuTab = /* @__PURE__ */ function(WeaponMenuTab) {
3234
- WeaponMenuTab["Ascend"] = "Ascend";
3235
- WeaponMenuTab["Enhance"] = "Enhance";
3236
- WeaponMenuTab["Refine"] = "Refine";
3237
- return WeaponMenuTab;
3238
- }({});
3239
- //#endregion
3240
- //#region src/models/reference/GameSourceKind.ts
3582
+ // src/models/reference/GameSourceKind.ts
3241
3583
  let GameSourceKind = /* @__PURE__ */ function(GameSourceKind) {
3242
3584
  GameSourceKind["AnimationClip"] = "AnimationClip";
3243
3585
  GameSourceKind["Avatar"] = "Avatar";
@@ -3256,8 +3598,7 @@ let GameSourceKind = /* @__PURE__ */ function(GameSourceKind) {
3256
3598
  GameSourceKind["Transform"] = "Transform";
3257
3599
  return GameSourceKind;
3258
3600
  }({});
3259
- //#endregion
3260
- //#region src/models/reference/InvestigationOutcome.ts
3601
+ // src/models/reference/InvestigationOutcome.ts
3261
3602
  let InvestigationOutcome = /* @__PURE__ */ function(InvestigationOutcome) {
3262
3603
  InvestigationOutcome["Adopted"] = "Adopted";
3263
3604
  InvestigationOutcome["DeadEnd"] = "DeadEnd";
@@ -3266,8 +3607,65 @@ let InvestigationOutcome = /* @__PURE__ */ function(InvestigationOutcome) {
3266
3607
  InvestigationOutcome["Superseded"] = "Superseded";
3267
3608
  return InvestigationOutcome;
3268
3609
  }({});
3269
- //#endregion
3270
- //#region src/services/playInterfaceClip.ts
3610
+ // src/services/assertSettledRender.ts
3611
+ const SETTLE_FRAME_COUNT = 2;
3612
+ const LATER_CAPTURE_COUNT = 3;
3613
+ const assertSettledRender = async (locator, name) => {
3614
+ const first = await locator.screenshot({ base64: true });
3615
+ for (let capture = 0; capture < LATER_CAPTURE_COUNT; capture++) {
3616
+ for (let frame = 0; frame < SETTLE_FRAME_COUNT; frame++) await new Promise((resolve) => {
3617
+ requestAnimationFrame(resolve);
3618
+ });
3619
+ if ((await locator.screenshot({ base64: true })).base64 !== first.base64) throw new Error(`${name}: its render changed within ${(capture + 1) * SETTLE_FRAME_COUNT} frames, so an image of it would be one frame of it`);
3620
+ }
3621
+ };
3622
+ // src/services/createVisualComparisonRecord.ts
3623
+ const createVisualComparisonRecord = () => {
3624
+ const overBar = [];
3625
+ let withinBarCount = 0;
3626
+ let withoutImageCount = 0;
3627
+ return {
3628
+ recordFailure: (error, title) => {
3629
+ if (!(error instanceof Error)) throw error;
3630
+ const detail = MISMATCH_DETAIL_REGEX.exec(error.message)?.groups;
3631
+ if (error.message.includes("No existing reference screenshot found")) withoutImageCount += 1;
3632
+ else if (!detail || !error.message.includes("Screenshot does not match the stored reference.")) throw error;
3633
+ else if (Number(detail.ratio) > .01) overBar.push({
3634
+ pixels: Number(detail.pixels),
3635
+ ratio: Number(detail.ratio),
3636
+ title
3637
+ });
3638
+ else withinBarCount += 1;
3639
+ },
3640
+ recordWithinBar: () => {
3641
+ withinBarCount += 1;
3642
+ },
3643
+ report: () => {
3644
+ const summary = `${withinBarCount} within the bar${withoutImageCount > 0 ? `, ${withoutImageCount} with no image beside them` : ""}.`;
3645
+ if (overBar.length === 0) {
3646
+ console.log(`No case over ${MISMATCH_RATIO_BAR * 100}% of its image: ${summary}`);
3647
+ return;
3648
+ }
3649
+ const rows = overBar.toSorted((firstMismatch, secondMismatch) => secondMismatch.ratio - firstMismatch.ratio || secondMismatch.pixels - firstMismatch.pixels).map(({ ratio, title }) => ` ${String(Math.round(ratio * 100)).padStart(4)}% ${title}`);
3650
+ console.log([
3651
+ `Cases over ${MISMATCH_RATIO_BAR * 100}% of their image, worst first:`,
3652
+ ...rows,
3653
+ summary
3654
+ ].join("\n"));
3655
+ }
3656
+ };
3657
+ };
3658
+ // src/services/holdAnimations.ts
3659
+ const holdAnimations = () => {
3660
+ for (const animation of window.document.getAnimations()) {
3661
+ const { iterations } = animation.effect?.getComputedTiming() ?? {};
3662
+ if (iterations === Infinity) {
3663
+ animation.pause();
3664
+ animation.currentTime = 0;
3665
+ } else animation.finish();
3666
+ }
3667
+ };
3668
+ // src/services/playInterfaceClip.ts
3271
3669
  const InterfaceClipPropertyKeyframeMap = {
3272
3670
  ["opacity"]: (value) => ({ opacity: value }),
3273
3671
  ["scale"]: (value) => ({ scale: String(value) }),
@@ -3286,8 +3684,23 @@ const playInterfaceClip = (root, { durationMs, tracks }) => tracks.flatMap(({ ke
3286
3684
  fill: "forwards"
3287
3685
  })];
3288
3686
  });
3289
- //#endregion
3290
- //#region src/services/toInterfaceClip.ts
3687
+ // src/services/recordConsoleWarnings.ts
3688
+ const recordConsoleWarnings = async (work) => {
3689
+ const { error, warn } = console;
3690
+ const messages = [];
3691
+ const record = (log) => (...data) => {
3692
+ messages.push(String(data[0]));
3693
+ log(...data);
3694
+ };
3695
+ console.error = record(error);
3696
+ console.warn = record(warn);
3697
+ const [outcome] = await Promise.allSettled([Promise.try(work)]);
3698
+ console.error = error;
3699
+ console.warn = warn;
3700
+ if (outcome.status === "rejected") throw outcome.reason;
3701
+ return messages;
3702
+ };
3703
+ // src/services/toInterfaceClip.ts
3291
3704
  const INTERFACE_CLIP_PROPERTY_NAMES = InterfaceClipProperties;
3292
3705
  const checkIsProperty = (property) => INTERFACE_CLIP_PROPERTY_NAMES.includes(property);
3293
3706
  const toInterfaceClip = ({ durationMs, tracks }) => ({
@@ -3298,5 +3711,4 @@ const toInterfaceClip = ({ durationMs, tracks }) => ({
3298
3711
  target
3299
3712
  }] : [])
3300
3713
  });
3301
- //#endregion
3302
- export { ASCENSION_PHASE_COUNT, Index_default as ArtifactEnhancePicker, Index_default$1 as ArtifactPicker, BannerKind, BannerKinds, Index_default$2 as BlessingScreen, CHECK_MARK_PATH, CONSTELLATION_NODE_PLACES, COOKING_ARC_CENTRE_X, COOKING_ARC_CENTRE_Y, COOKING_ARC_RADIUS_X, COOKING_ARC_RADIUS_Y, Index_default$3 as CharacterMenu, Index_default$4 as CharacterMenuArtifacts, Index_default$5 as CharacterMenuButtons, Index_default$6 as CharacterMenuConstellation, Index_default$7 as CharacterMenuProfile, CharacterMenuTab, CharacterMenuTabs, Index_default$8 as CharacterMenuTalents, Index_default$9 as CharacterMenuWeapons, Index_default$10 as CookingScreen, Index_default$11 as CraftingScreen, DialogueChoiceIcon, DialogueChoiceIconPathMap, Index_default$12 as DialogueScreen, Index_default$13 as DiscButton, ExpeditionActionKind, Index_default$14 as ExpeditionScreen, FIXTURE_VARIANT_SEPARATOR, ForgeQueueState, Index_default$15 as ForgeScreen, ForgeTab, GAME_CANVAS_INSET, GAME_CANVAS_RECT, GAME_CANVAS_UNIT, GAME_CREAM, GAME_CURSOR, GAME_FONT_FAMILY, GAME_GOLD, GAME_INK, GAME_REPLY_HOVER, GAME_REPLY_HOVER_INK, GAME_REPLY_REST, GAME_ROW_HOVER, GAME_ROW_PRESS, GAME_SMOOTHSTEP_EASING, GAME_UNIT, GAME_WHITE, Index_default$16 as GameButton, GameButtonKind, _sfc_main as GameRect, Index_default$17 as GameScreen, GameSourceKind, INTERACTION_HOVER_MS, INTERACTION_KEY_LABEL, INTERACTION_PILL_REST_MS, INTERACTION_PRESS_MS, INTERACTION_REST_MS, InteractionKind, Index_default$18 as InteractionPrompts, InteractionState, InterfaceClipProperties, InterfaceClipProperty, InterfaceIcon, InterfaceIconCentreMap, InterfaceIconPathMap, InterfaceIcons, Index_default$19 as InventoryScreen, InventorySort, InventorySorts, InvestigationOutcome, ItemCategories, ItemCategory, Index_default$20 as ItemTile, Index_default$21 as LoadingSpinner, MOBILE_INTERFACE_SCALE, ORNAMENT_END_PATH, ORNAMENT_MIDDLE_PATH, Index_default$22 as OrnamentDivider, Index_default$23 as PartySetupScreen, Index_default$24 as PickerShell, Index_default$25 as ProgressBar, Index_default$26 as PromptBand, Index_default$27 as RarityStars, Index_default$28 as ReputationScreen, Index_default$29 as RoundButton, SERVER_MARK_DIAMOND_PATH, SERVER_MARK_TICK_PATH, SETTINGS_RING_CENTRE, SETTINGS_RING_RADIUS, SETTINGS_RING_WIDTH, Index_default$30 as ScreenTitle, Index_default$31 as ServerBar, Index_default$32 as ShopScreen, Index_default$33 as ToastNotice, Index_default$34 as TwoColumnScreen, Index_default$35 as WeaponMenu, WeaponMenuTab, Index_default$36 as WishDetails, Index_default$37 as WishHistory, Index_default$38 as WishPath, Index_default$39 as WishScreen, WorshipLevelState, Index_default$40 as WorshipScreen, computeRectOffsets, playInterfaceClip, toCanvasRect, toCanvasRectStyle, toInterfaceClip };
3714
+ export { APPROVE_ENVIRONMENT_VARIABLE, ASCENSION_PHASE_COUNT, Index_default as ArtifactEnhancePicker, Index_default$1 as ArtifactPicker, BACK_ARROW_PATH, BannerKind, BannerKinds, Index_default$2 as BlessingScreen, CHECK_MARK_PATH, CONSTELLATION_NODE_PLACES, COOKING_ARC_CENTRE_X, COOKING_ARC_CENTRE_Y, COOKING_ARC_RADIUS_X, COOKING_ZONE_RADIUS_Y, Index_default$3 as CharacterMenu, Index_default$4 as CharacterMenuArtifacts, Index_default$5 as CharacterMenuButtons, Index_default$6 as CharacterMenuConstellation, Index_default$7 as CharacterMenuProfile, CharacterMenuTab, CharacterMenuTabs, Index_default$8 as CharacterMenuTalents, Index_default$9 as CharacterMenuWeapons, Index_default$10 as CloseButton, CloseButtonMark, CloseButtonMarkGlyphMap, Index_default$11 as CookingScreen, Index_default$12 as CraftingScreen, DialogueChoiceIcon, DialogueChoiceIconPathMap, Index_default$13 as DialogueScreen, Index_default$14 as DiscButton, ExpeditionActionKind, Index_default$15 as ExpeditionScreen, FIXTURE_IMAGE_NAME, FIXTURE_VARIANT_SEPARATOR, ForgeQueueState, Index_default$16 as ForgeScreen, ForgeTab, GAME_BACKDROP_BLUR, GAME_BACKDROP_KEEP, GAME_BACKDROP_WASH, GAME_CANVAS_INSET, GAME_CANVAS_RECT, GAME_CANVAS_UNIT, GAME_CREAM, GAME_CURSOR, GAME_DIALOGUE_GOLD, GAME_FONT_FAMILY, GAME_GOLD, GAME_INK, GAME_LIT_GOLD, GAME_LIT_GOLD_LABEL, GAME_REPLY_HOVER, GAME_REPLY_HOVER_INK, GAME_REPLY_REST, GAME_ROW_HOVER, GAME_ROW_PRESS, GAME_SMOOTHSTEP_EASING, GAME_UNIT, GAME_WHITE, Index_default$17 as GameButton, GameButtonKind, _sfc_main as GameRect, Index_default$18 as GameScreen, GameSourceKind, INTERACTION_HOVER_MS, INTERACTION_KEY_LABEL, INTERACTION_PILL_REST_MS, INTERACTION_PRESS_MS, INTERACTION_REST_MS, InteractionKind, Index_default$19 as InteractionPrompts, InteractionState, InterfaceClipProperties, InterfaceClipProperty, InterfaceIcon, InterfaceIconCentreMap, InterfaceIconPathMap, InterfaceIcons, Index_default$20 as InventoryScreen, InventorySort, InventorySorts, InvestigationOutcome, ItemCategories, ItemCategory, ItemRarityFaceGradientMap, Index_default$21 as ItemTile, Index_default$22 as LoadingSpinner, MISMATCH_DETAIL_REGEX, MISMATCH_MESSAGE, MISMATCH_RATIO_BAR, MISSING_IMAGE_MESSAGE, MOBILE_INTERFACE_SCALE, ORNAMENT_END_PATH, ORNAMENT_MIDDLE_PATH, Index_default$23 as OrnamentDivider, Index_default$24 as PartySetupScreen, Index_default$25 as PickerShell, Index_default$26 as ProgressBar, Index_default$27 as PromptBand, ROLE_FLOURISH_PATH, Index_default$28 as RarityStars, Index_default$29 as ReputationScreen, Index_default$30 as RoundButton, SERVER_MARK_DIAMOND_PATH, SERVER_MARK_TICK_PATH, SETTINGS_RING_CENTRE, SETTINGS_RING_RADIUS, SETTINGS_RING_WIDTH, Index_default$31 as ScreenTitle, Index_default$32 as ServerBar, Index_default$33 as ShopScreen, Index_default$34 as ToastNotice, Index_default$35 as TwoColumnScreen, Index_default$36 as WeaponMenu, WeaponMenuTab, Index_default$37 as WishDetails, Index_default$38 as WishHistory, Index_default$39 as WishPath, Index_default$40 as WishScreen, WorshipLevelState, Index_default$41 as WorshipScreen, assertSettledRender, computeRectOffsets, createVisualComparisonRecord, getFixtureImageName, holdAnimations, playInterfaceClip, recordConsoleWarnings, toCanvasRect, toCanvasRectStyle, toInterfaceClip };