genshin-interface 4.3.3 → 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,6 +1,7 @@
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
1
  import { i as ItemCategory, n as BannerKinds, r as ItemCategories, t as BannerKind } from "./save-BiDzTOKp.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";
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";
4
5
  // \0/plugin-vue/export-helper
5
6
  var export_helper_default = (sfc, props) => {
6
7
  const target = sfc.__vccOpts || sfc;
@@ -8,12 +9,12 @@ var export_helper_default = (sfc, props) => {
8
9
  return target;
9
10
  };
10
11
  // src/components/GameButton/Index.vue
11
- const _hoisted_1$40 = ["data-kind"];
12
- const _hoisted_2$32 = {
12
+ const _hoisted_1$41 = ["data-kind"];
13
+ const _hoisted_2$33 = {
13
14
  key: 0,
14
15
  class: "tip"
15
16
  };
16
- var Index_default$16 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
17
+ var Index_default$17 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
17
18
  __name: "Index",
18
19
  props: {
19
20
  kind: {},
@@ -21,19 +22,21 @@ var Index_default$16 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
21
22
  },
22
23
  setup(__props, { expose: __expose }) {
23
24
  useCssVars((_ctx) => ({
24
- "v8de8a9a0": restDuration,
25
- "v4f7d0248": hoverDuration,
26
- "v5ff883e5": unref(GAME_GOLD),
27
- "c23e4506": unref(GAME_CREAM),
28
- "v7defe8be": unref(GAME_INK),
29
- "v78a9c41c": unref(GAME_ROW_HOVER),
30
- "v77c60e0e": unref(GAME_ROW_PRESS),
31
- "v7a0541ee": pillRestDuration,
32
- "v307a3362": pressDuration,
33
- "v0673242b": unref(GAME_SMOOTHSTEP_EASING),
34
- "v40afb3ee": unref(GAME_REPLY_REST),
35
- "v5683177c": unref(GAME_REPLY_HOVER),
36
- "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)
37
40
  }));
38
41
  const button = useTemplateRef("button");
39
42
  const hoverDuration = `50ms`;
@@ -42,20 +45,20 @@ var Index_default$16 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
42
45
  const pressDuration = `167ms`;
43
46
  __expose({ focus: () => button.value?.focus() });
44
47
  return (_ctx, _cache) => {
45
- 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", {
46
49
  ref_key: "button",
47
50
  ref: button,
48
51
  class: "game-button",
49
52
  "data-kind": __props.kind,
50
53
  type: "button"
51
- }, [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);
52
55
  };
53
56
  }
54
- }), [["__scopeId", "data-v-cab29bfa"]]);
57
+ }), [["__scopeId", "data-v-3683b183"]]);
55
58
  // src/components/PickerShell/Index.vue
56
- const _hoisted_1$39 = ["aria-label"];
57
- const _hoisted_2$31 = { class: "title" };
58
- var Index_default$24 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
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({
59
62
  __name: "Index",
60
63
  props: { title: {} },
61
64
  setup(__props) {
@@ -65,13 +68,15 @@ var Index_default$24 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
65
68
  role: "dialog",
66
69
  "aria-modal": "true",
67
70
  "aria-label": __props.title
68
- }, [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);
69
72
  };
70
73
  }
71
74
  }), [["__scopeId", "data-v-6f193621"]]);
72
75
  // src/models/GameButtonKind.ts
73
76
  let GameButtonKind = /* @__PURE__ */ function(GameButtonKind) {
77
+ GameButtonKind["Choice"] = "Choice";
74
78
  GameButtonKind["Disc"] = "Disc";
79
+ GameButtonKind["Gold"] = "Gold";
75
80
  GameButtonKind["Pill"] = "Pill";
76
81
  GameButtonKind["Plain"] = "Plain";
77
82
  GameButtonKind["Reply"] = "Reply";
@@ -79,8 +84,8 @@ let GameButtonKind = /* @__PURE__ */ function(GameButtonKind) {
79
84
  return GameButtonKind;
80
85
  }({});
81
86
  // src/components/ArtifactEnhancePicker/Index.vue
82
- const _hoisted_1$38 = { class: "summary" };
83
- const _hoisted_2$30 = { class: "level" };
87
+ const _hoisted_1$39 = { class: "summary" };
88
+ const _hoisted_2$31 = { class: "level" };
84
89
  const _hoisted_3$28 = { class: "mora" };
85
90
  const _hoisted_4$24 = {
86
91
  key: 0,
@@ -92,12 +97,12 @@ const _hoisted_6$21 = [
92
97
  "data-rarity",
93
98
  "onClick"
94
99
  ];
95
- const _hoisted_7$21 = { class: "name" };
100
+ const _hoisted_7$19 = { class: "name" };
96
101
  const _hoisted_8$16 = { class: "caption" };
97
- const _hoisted_9$14 = { class: "materials" };
98
- const _hoisted_10$13 = { class: "name" };
99
- const _hoisted_11$9 = { class: "count" };
100
- 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" };
101
106
  var Index_default = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
102
107
  __name: "Index",
103
108
  props: {
@@ -123,12 +128,12 @@ var Index_default = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineCo
123
128
  setup(__props, { emit: __emit }) {
124
129
  const emit = __emit;
125
130
  return (_ctx, _cache) => {
126
- return openBlock(), createBlock(Index_default$24, {
131
+ return openBlock(), createBlock(Index_default$25, {
127
132
  class: "enhance-picker",
128
133
  title: __props.title
129
134
  }, {
130
135
  default: withCtx(() => [
131
- 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)]),
132
137
  __props.notice ? (openBlock(), createElementBlock("p", _hoisted_4$24, toDisplayString(__props.notice), 1)) : createCommentVNode("v-if", true),
133
138
  createElementVNode("ul", _hoisted_5$22, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.fodders, ({ caption, id, isSelected, name, rarity }) => {
134
139
  return openBlock(), createElementBlock("li", { key: id }, [createElementVNode("button", {
@@ -137,18 +142,19 @@ var Index_default = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineCo
137
142
  "data-rarity": rarity,
138
143
  type: "button",
139
144
  onClick: ($event) => emit("fodder", id)
140
- }, [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)]);
141
146
  }), 128))]),
142
- 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 }) => {
143
148
  return openBlock(), createElementBlock("li", {
144
149
  key: id,
145
150
  class: "material"
146
151
  }, [
147
- createElementVNode("span", _hoisted_10$13, toDisplayString(name), 1),
148
- createElementVNode("span", _hoisted_11$9, toDisplayString(selectedCount) + "/" + toDisplayString(count), 1),
149
- 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, {
150
155
  disabled: selectedCount <= 0,
151
156
  kind: unref(GameButtonKind).Pill,
157
+ tip: "",
152
158
  onClick: ($event) => emit("material", id, -1)
153
159
  }, {
154
160
  default: withCtx(() => [..._cache[3] || (_cache[3] = [createTextVNode(" - ", -1)])]),
@@ -158,9 +164,10 @@ var Index_default = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineCo
158
164
  "kind",
159
165
  "onClick"
160
166
  ]),
161
- createVNode(Index_default$16, {
167
+ createVNode(Index_default$17, {
162
168
  disabled: selectedCount >= count,
163
169
  kind: unref(GameButtonKind).Pill,
170
+ tip: "",
164
171
  onClick: ($event) => emit("material", id, 1)
165
172
  }, {
166
173
  default: withCtx(() => [..._cache[4] || (_cache[4] = [createTextVNode(" + ", -1)])]),
@@ -172,24 +179,27 @@ var Index_default = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineCo
172
179
  ])
173
180
  ]);
174
181
  }), 128))]),
175
- createElementVNode("div", _hoisted_12$9, [
176
- createVNode(Index_default$16, {
182
+ createElementVNode("div", _hoisted_12$11, [
183
+ createVNode(Index_default$17, {
177
184
  kind: unref(GameButtonKind).Pill,
185
+ tip: "",
178
186
  onClick: _cache[0] || (_cache[0] = ($event) => emit("autoAdd"))
179
187
  }, {
180
188
  default: withCtx(() => [createTextVNode(toDisplayString(__props.autoAddLabel), 1)]),
181
189
  _: 1
182
190
  }, 8, ["kind"]),
183
- createVNode(Index_default$16, {
191
+ createVNode(Index_default$17, {
184
192
  kind: unref(GameButtonKind).Pill,
193
+ tip: "",
185
194
  onClick: _cache[1] || (_cache[1] = ($event) => emit("cancel"))
186
195
  }, {
187
196
  default: withCtx(() => [createTextVNode(toDisplayString(__props.cancelLabel), 1)]),
188
197
  _: 1
189
198
  }, 8, ["kind"]),
190
- createVNode(Index_default$16, {
199
+ createVNode(Index_default$17, {
191
200
  disabled: __props.isConfirmDisabled,
192
201
  kind: unref(GameButtonKind).Pill,
202
+ tip: "",
193
203
  onClick: _cache[2] || (_cache[2] = ($event) => emit("confirm"))
194
204
  }, {
195
205
  default: withCtx(() => [createTextVNode(toDisplayString(__props.confirmLabel), 1)]),
@@ -201,10 +211,10 @@ var Index_default = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineCo
201
211
  }, 8, ["title"]);
202
212
  };
203
213
  }
204
- }), [["__scopeId", "data-v-7c672712"]]);
214
+ }), [["__scopeId", "data-v-f430d654"]]);
205
215
  // src/components/ArtifactPicker/Index.vue
206
- const _hoisted_1$37 = { class: "options" };
207
- const _hoisted_2$29 = ["data-rarity", "onClick"];
216
+ const _hoisted_1$38 = { class: "options" };
217
+ const _hoisted_2$30 = ["data-rarity", "onClick"];
208
218
  const _hoisted_3$27 = { class: "name" };
209
219
  const _hoisted_4$23 = { class: "caption" };
210
220
  var Index_default$1 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
@@ -218,20 +228,21 @@ var Index_default$1 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
218
228
  setup(__props, { emit: __emit }) {
219
229
  const emit = __emit;
220
230
  return (_ctx, _cache) => {
221
- return openBlock(), createBlock(Index_default$24, {
231
+ return openBlock(), createBlock(Index_default$25, {
222
232
  class: "artifact-picker",
223
233
  title: __props.title
224
234
  }, {
225
- 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 }) => {
226
236
  return openBlock(), createElementBlock("li", { key: id }, [createElementVNode("button", {
227
237
  class: "option",
228
238
  "data-rarity": rarity,
229
239
  type: "button",
230
240
  onClick: ($event) => emit("choose", id)
231
- }, [createElementVNode("span", _hoisted_3$27, toDisplayString(name), 1), createElementVNode("span", _hoisted_4$23, toDisplayString(caption), 1)], 8, _hoisted_2$29)]);
232
- }), 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, {
233
243
  class: "close",
234
244
  kind: unref(GameButtonKind).Pill,
245
+ tip: "",
235
246
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
236
247
  }, {
237
248
  default: withCtx(() => [createTextVNode(toDisplayString(__props.closeLabel), 1)]),
@@ -241,27 +252,77 @@ var Index_default$1 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
241
252
  }, 8, ["title"]);
242
253
  };
243
254
  }
244
- }), [["__scopeId", "data-v-bf242b3e"]]);
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"]]);
245
297
  // src/components/BlessingScreen/Index.vue
246
298
  const _hoisted_1$36 = { class: "blessing-screen" };
247
299
  const _hoisted_2$28 = { class: "title" };
248
- const _hoisted_3$26 = { class: "pool" };
249
- const _hoisted_4$22 = { class: "members" };
250
- const _hoisted_5$21 = ["onClick"];
251
- const _hoisted_6$20 = { class: "name" };
252
- 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" };
253
308
  var Index_default$2 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
254
309
  __name: "Index",
255
310
  props: {
311
+ autoRecoverTitle: {},
312
+ closeLabel: {},
313
+ isAutoRecoverOn: { type: Boolean },
256
314
  members: {},
257
315
  poolAmount: {},
258
316
  poolMaximum: {},
317
+ thresholdPercent: {},
259
318
  title: {},
260
319
  worshipTitle: {}
261
320
  },
262
321
  emits: [
263
322
  "close",
264
323
  "heal",
324
+ "stepThreshold",
325
+ "toggleAutoRecover",
265
326
  "worship"
266
327
  ],
267
328
  setup(__props, { emit: __emit }) {
@@ -269,27 +330,47 @@ var Index_default$2 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
269
330
  return (_ctx, _cache) => {
270
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, [
271
332
  createElementVNode("h1", _hoisted_2$28, toDisplayString(__props.title), 1),
272
- createElementVNode("button", {
333
+ createVNode(Index_default$10, {
273
334
  class: "close",
274
- type: "button",
335
+ label: __props.closeLabel,
336
+ mark: unref(CloseButtonMark).Cross,
275
337
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
276
- }, "×"),
338
+ }, null, 8, ["label", "mark"]),
277
339
  createElementVNode("button", {
278
340
  class: "worship",
279
341
  type: "button",
280
342
  onClick: _cache[1] || (_cache[1] = ($event) => emit("worship"))
281
343
  }, toDisplayString(__props.worshipTitle), 1),
282
- createElementVNode("p", _hoisted_3$26, toDisplayString(Math.floor(__props.poolAmount)) + " / " + toDisplayString(__props.poolMaximum), 1),
283
- 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 }) => {
284
365
  return openBlock(), createElementBlock("li", { key: id }, [createElementVNode("button", {
285
366
  type: "button",
286
367
  onClick: ($event) => emit("heal", id)
287
- }, [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)]);
288
369
  }), 128))])
289
370
  ])], 2112);
290
371
  };
291
372
  }
292
- }), [["__scopeId", "data-v-4c1e529d"]]);
373
+ }), [["__scopeId", "data-v-4b0256bb"]]);
293
374
  // src/models/CharacterMenuTab.ts
294
375
  let CharacterMenuTab = /* @__PURE__ */ function(CharacterMenuTab) {
295
376
  CharacterMenuTab["Artifacts"] = "Artifacts";
@@ -311,7 +392,7 @@ const CharacterMenuTabs = [
311
392
  // src/components/CharacterMenu/Index.vue
312
393
  const _hoisted_1$35 = ["data-tab"];
313
394
  const _hoisted_2$27 = { class: "characters" };
314
- const _hoisted_3$25 = ["aria-pressed", "onClick"];
395
+ const _hoisted_3$24 = ["aria-pressed", "onClick"];
315
396
  const _hoisted_4$21 = { class: "breadcrumb" };
316
397
  const _hoisted_5$20 = {
317
398
  key: 0,
@@ -320,15 +401,27 @@ const _hoisted_5$20 = {
320
401
  "aria-hidden": "true"
321
402
  };
322
403
  const _hoisted_6$19 = ["d"];
323
- const _hoisted_7$19 = { class: "tabs" };
324
- const _hoisted_8$15 = ["aria-pressed", "onClick"];
325
- const _hoisted_9$13 = ["aria-label"];
326
- 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"];
327
418
  var Index_default$3 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
328
419
  __name: "Index",
329
420
  props: /*@__PURE__*/ mergeModels({
330
421
  characters: {},
331
422
  elementMarkPath: {},
423
+ elementName: {},
424
+ isTouch: { type: Boolean },
332
425
  tabLabels: {}
333
426
  }, {
334
427
  "characterId": { required: true },
@@ -341,6 +434,7 @@ var Index_default$3 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
341
434
  const characterId = useModel(__props, "characterId");
342
435
  const tab = useModel(__props, "tab");
343
436
  const characterName = computed(() => __props.characters.find(({ id }) => id === characterId.value)?.name ?? "");
437
+ const breadcrumb = computed(() => __props.elementName ? `${__props.elementName} / ${characterName.value}` : characterName.value);
344
438
  const steps = computed(() => {
345
439
  const index = __props.characters.findIndex(({ id }) => id === characterId.value);
346
440
  const getStep = (step) => __props.characters[(index + step + __props.characters.length) % __props.characters.length];
@@ -357,42 +451,46 @@ var Index_default$3 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
357
451
  class: "character-menu",
358
452
  "data-tab": tab.value
359
453
  }, [
360
- _cache[1] || (_cache[1] = createElementVNode("div", { class: "head" }, null, -1)),
454
+ _cache[4] || (_cache[4] = createElementVNode("div", { class: "head" }, null, -1)),
361
455
  createElementVNode("ul", _hoisted_2$27, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.characters, ({ id, name }) => {
362
456
  return openBlock(), createElementBlock("li", { key: id }, [createElementVNode("button", {
363
457
  class: "character",
364
458
  "aria-pressed": id === characterId.value,
365
459
  type: "button",
366
460
  onClick: ($event) => characterId.value = id
367
- }, toDisplayString(name), 9, _hoisted_3$25)]);
461
+ }, toDisplayString(name), 9, _hoisted_3$24)]);
368
462
  }), 128))]),
369
- createElementVNode("p", _hoisted_4$21, toDisplayString(characterName.value), 1),
370
- __props.elementMarkPath ? (openBlock(), createElementBlock("svg", _hoisted_5$20, [createElementVNode("path", { d: __props.elementMarkPath }, null, 8, _hoisted_6$19)])) : createCommentVNode("v-if", true),
371
- createCommentVNode(" The keys stepping through the tabs, W up and S down, beside the first "),
372
- _cache[2] || (_cache[2] = createElementVNode("div", {
373
- class: "tab-keys",
374
- "aria-hidden": "true"
375
- }, [createElementVNode("kbd", { class: "key" }, "W"), createElementVNode("kbd", { class: "key" }, "S")], -1)),
376
- 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) => {
377
475
  return openBlock(), createElementBlock("li", { key: menuTab }, [createElementVNode("button", {
378
476
  class: "tab",
379
477
  "aria-pressed": menuTab === tab.value,
380
478
  type: "button",
381
479
  onClick: ($event) => tab.value = menuTab
382
- }, toDisplayString(__props.tabLabels[menuTab]), 9, _hoisted_8$15)]);
480
+ }, toDisplayString(__props.tabLabels[menuTab]), 9, _hoisted_10$12)]);
383
481
  }), 128))]),
384
482
  createElementVNode("section", {
385
483
  class: "panel",
386
484
  "aria-label": __props.tabLabels[tab.value]
387
- }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 8, _hoisted_9$13),
388
- __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 }) => {
389
487
  return openBlock(), createElementBlock("button", {
390
488
  key: className,
391
489
  class: normalizeClass(["step", className]),
392
490
  "aria-label": character?.name,
393
491
  type: "button",
394
492
  onClick: ($event) => characterId.value = character?.id ?? characterId.value
395
- }, [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", {
396
494
  viewBox: "0 0 43 55",
397
495
  "aria-hidden": "true"
398
496
  }, [
@@ -408,22 +506,22 @@ var Index_default$3 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
408
506
  class: "mark",
409
507
  d: "M31 25.5 L33 27.5 L31 29.5 L29 27.5 Z"
410
508
  })
411
- ], -1))], 10, _hoisted_10$12);
509
+ ], -1))], 10, _hoisted_12$10);
412
510
  }), 128)) : createCommentVNode("v-if", true)
413
511
  ], 8, _hoisted_1$35)], 2112);
414
512
  };
415
513
  }
416
- }), [["__scopeId", "data-v-86092611"]]);
514
+ }), [["__scopeId", "data-v-196e57b9"]]);
417
515
  // src/components/CharacterMenuButtons/Index.vue
418
516
  const _hoisted_1$34 = { class: "buttons" };
419
517
  var Index_default$5 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
420
518
  __name: "Index",
421
519
  setup(__props) {
422
520
  return (_ctx, _cache) => {
423
- 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);
424
522
  };
425
523
  }
426
- }), [["__scopeId", "data-v-359aa329"]]);
524
+ }), [["__scopeId", "data-v-56c8b5cd"]]);
427
525
  // src/components/ToastNotice/Index.vue
428
526
  const _sfc_main$34 = {};
429
527
  const _hoisted_1$33 = {
@@ -431,48 +529,49 @@ const _hoisted_1$33 = {
431
529
  role: "status"
432
530
  };
433
531
  const _hoisted_2$26 = { class: "mark" };
434
- const _hoisted_3$24 = { class: "text" };
532
+ const _hoisted_3$23 = { class: "text" };
435
533
  function _sfc_render$1(_ctx, _cache) {
436
- 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);
437
535
  }
438
- var Index_default$33 = /*#__PURE__*/ export_helper_default(_sfc_main$34, [["render", _sfc_render$1], ["__scopeId", "data-v-a09dfb40"]]);
536
+ var Index_default$34 = /*#__PURE__*/ export_helper_default(_sfc_main$34, [["render", _sfc_render$1], ["__scopeId", "data-v-a09dfb40"]]);
439
537
  // src/components/CharacterMenuArtifacts/Index.vue
440
538
  const _hoisted_1$32 = { class: "artifacts" };
441
- const _hoisted_2$25 = { class: "slots" };
442
- const _hoisted_3$23 = [
443
- "aria-label",
444
- "aria-pressed",
445
- "onClick"
446
- ];
447
- const _hoisted_4$20 = { class: "details" };
448
- const _hoisted_5$19 = {
449
- 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,
450
543
  class: "stats"
451
544
  };
452
- const _hoisted_6$18 = { class: "stat" };
453
- const _hoisted_7$18 = { class: "set-bonus" };
454
- 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" };
455
549
  const _hoisted_9$12 = {
456
550
  key: 0,
457
- class: "set-bonus-lines"
551
+ class: "set-name"
458
552
  };
459
- const _hoisted_10$11 = {
553
+ const _hoisted_10$11 = { class: "set-bonus-lines" };
554
+ const _hoisted_11$11 = {
460
555
  key: 1,
461
556
  class: "set-bonus-lines"
462
557
  };
463
558
  var Index_default$4 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
464
559
  __name: "Index",
465
560
  props: {
561
+ artifactDetailsLabel: {},
466
562
  enhanceLabel: {},
467
563
  equipDisabledSlots: {},
468
564
  equipLabel: {},
565
+ fastEquipLabel: {},
469
566
  lockLabel: {},
470
567
  noSetBonusLabel: {},
471
568
  notice: {},
472
569
  setBonusHeading: {},
473
- setBonusLines: {},
570
+ sets: {},
474
571
  slotNames: {},
475
572
  slotStats: {},
573
+ switchLabel: {},
574
+ totals: {},
476
575
  unequipLabel: {},
477
576
  unlockLabel: {}
478
577
  },
@@ -485,85 +584,116 @@ var Index_default$4 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
485
584
  setup(__props, { emit: __emit }) {
486
585
  const emit = __emit;
487
586
  const selectedIndex = ref(0);
587
+ const isDetailsOpen = ref(false);
488
588
  const selectedStats = computed(() => __props.slotStats[selectedIndex.value]);
489
589
  const isSelectedWorn = computed(() => selectedStats.value !== void 0);
590
+ const switchSlot = () => {
591
+ selectedIndex.value = (selectedIndex.value + 1) % __props.slotNames.length;
592
+ };
490
593
  return (_ctx, _cache) => {
491
- 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, [
492
- __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, {
493
596
  key: 0,
494
597
  class: "notice"
495
598
  }, {
496
599
  default: withCtx(() => [createTextVNode(toDisplayString(__props.notice), 1)]),
497
600
  _: 1
498
601
  })) : createCommentVNode("v-if", true),
499
- createElementVNode("ul", _hoisted_2$25, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.slotStats, (stats, index) => {
500
- return openBlock(), createElementBlock("li", { key: index }, [createElementVNode("button", {
501
- class: normalizeClass(["slot", { worn: stats !== void 0 }]),
502
- "aria-label": __props.slotNames[index],
503
- "aria-pressed": index === selectedIndex.value,
504
- type: "button",
505
- onClick: ($event) => selectedIndex.value = index
506
- }, null, 10, _hoisted_3$23)]);
507
- }), 128))]),
508
- createElementVNode("div", _hoisted_4$20, toDisplayString(__props.slotNames[selectedIndex.value]), 1),
509
- 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) => {
510
609
  return openBlock(), createElementBlock("li", {
511
610
  key: index,
512
611
  class: "stat"
513
612
  }, [createElementVNode("span", null, toDisplayString(label), 1), createElementVNode("span", null, toDisplayString(value), 1)]);
514
- }), 128))])) : createCommentVNode("v-if", true),
515
- 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) => {
516
- return openBlock(), createElementBlock("li", { key: line }, toDisplayString(line), 1);
517
- }), 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)),
518
631
  createVNode(Index_default$5, null, {
519
- default: withCtx(() => [
520
- createVNode(Index_default$16, {
632
+ default: withCtx(() => [isDetailsOpen.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
633
+ createVNode(Index_default$17, {
521
634
  class: "button",
522
635
  disabled: !isSelectedWorn.value,
523
636
  kind: unref(GameButtonKind).Pill,
524
- onClick: _cache[0] || (_cache[0] = ($event) => emit("enhance", selectedIndex.value))
637
+ tip: "",
638
+ onClick: _cache[1] || (_cache[1] = ($event) => emit("enhance", selectedIndex.value))
525
639
  }, {
526
640
  default: withCtx(() => [createTextVNode(toDisplayString(__props.enhanceLabel), 1)]),
527
641
  _: 1
528
642
  }, 8, ["disabled", "kind"]),
529
- isSelectedWorn.value ? (openBlock(), createBlock(Index_default$16, {
530
- key: 0,
531
- class: "button",
532
- kind: unref(GameButtonKind).Pill,
533
- onClick: _cache[1] || (_cache[1] = ($event) => emit("unequip", selectedIndex.value))
534
- }, {
535
- default: withCtx(() => [createTextVNode(toDisplayString(__props.unequipLabel), 1)]),
536
- _: 1
537
- }, 8, ["kind"])) : (openBlock(), createBlock(Index_default$16, {
538
- key: 1,
643
+ createVNode(Index_default$17, {
539
644
  class: "button",
540
- disabled: __props.equipDisabledSlots[selectedIndex.value],
645
+ disabled: !isSelectedWorn.value && __props.equipDisabledSlots[selectedIndex.value],
541
646
  kind: unref(GameButtonKind).Pill,
542
- 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))
543
649
  }, {
544
- default: withCtx(() => [createTextVNode(toDisplayString(__props.equipLabel), 1)]),
650
+ default: withCtx(() => [createTextVNode(toDisplayString(isSelectedWorn.value ? __props.unequipLabel : __props.equipLabel), 1)]),
545
651
  _: 1
546
- }, 8, ["disabled", "kind"])),
547
- selectedStats.value ? (openBlock(), createBlock(Index_default$16, {
548
- key: 2,
652
+ }, 8, ["disabled", "kind"]),
653
+ selectedStats.value ? (openBlock(), createBlock(Index_default$17, {
654
+ key: 0,
549
655
  class: "button",
550
656
  kind: unref(GameButtonKind).Pill,
657
+ tip: "",
551
658
  onClick: _cache[3] || (_cache[3] = ($event) => emit("lock", selectedIndex.value))
552
659
  }, {
553
660
  default: withCtx(() => [createTextVNode(toDisplayString(selectedStats.value.isLocked ? __props.unlockLabel : __props.lockLabel), 1)]),
554
661
  _: 1
555
662
  }, 8, ["kind"])) : createCommentVNode("v-if", true)
556
- ]),
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))]),
557
687
  _: 1
558
688
  })
559
689
  ])], 2112);
560
690
  };
561
691
  }
562
- }), [["__scopeId", "data-v-525c0131"]]);
692
+ }), [["__scopeId", "data-v-31549cac"]]);
563
693
  // src/components/CharacterMenuConstellation/Index.vue
564
694
  const _hoisted_1$31 = { class: "constellations" };
565
695
  const _hoisted_2$24 = { class: "nodes" };
566
- const _hoisted_3$22 = ["disabled"];
696
+ const _hoisted_3$21 = ["disabled"];
567
697
  var Index_default$6 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
568
698
  __name: "Index",
569
699
  props: {
@@ -579,25 +709,26 @@ var Index_default$6 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
579
709
  top: `calc(var(--unit) * ${top})`
580
710
  }));
581
711
  return (_ctx, _cache) => {
582
- 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) => {
583
713
  return openBlock(), createElementBlock("li", {
584
714
  key: index,
585
715
  class: normalizeClass(["node", { lit: isActivated }]),
586
716
  style: normalizeStyle(unref(nodeStyles)[index])
587
717
  }, null, 6);
588
- }), 128))]), createElementVNode("button", {
718
+ }), 128))]), __props.activated.includes(false) ? (openBlock(), createElementBlock("button", {
719
+ key: 0,
589
720
  class: "activate",
590
721
  disabled: __props.isActivateDisabled,
591
722
  type: "button",
592
723
  onClick: _cache[0] || (_cache[0] = ($event) => emit("activate"))
593
- }, toDisplayString(__props.activateLabel), 9, _hoisted_3$22)])], 2112);
724
+ }, toDisplayString(__props.activateLabel), 9, _hoisted_3$21)) : createCommentVNode("v-if", true)])], 2112);
594
725
  };
595
726
  }
596
- }), [["__scopeId", "data-v-4311eae1"]]);
727
+ }), [["__scopeId", "data-v-dd31fa27"]]);
597
728
  // src/components/CharacterMenuProfile/Index.vue
598
729
  const _hoisted_1$30 = { class: "profile" };
599
730
  const _hoisted_2$23 = { class: "entries-column" };
600
- const _hoisted_3$21 = { class: "entries" };
731
+ const _hoisted_3$20 = { class: "entries" };
601
732
  const _hoisted_4$19 = [
602
733
  "aria-pressed",
603
734
  "data-locked",
@@ -611,19 +742,19 @@ const _hoisted_6$17 = {
611
742
  key: 0,
612
743
  class: "story"
613
744
  };
614
- const _hoisted_7$17 = { class: "title" };
615
- const _hoisted_8$13 = { class: "text" };
745
+ const _hoisted_7$15 = { class: "title" };
746
+ const _hoisted_8$12 = { class: "text" };
616
747
  var Index_default$7 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
617
748
  __name: "Index",
618
749
  props: {
619
750
  entries: {},
620
- namecardName: { default: "" }
751
+ namecardName: {}
621
752
  },
622
753
  setup(__props) {
623
754
  const entryIndex = ref(0);
624
755
  const selectedEntry = computed(() => __props.entries[entryIndex.value]);
625
756
  return (_ctx, _cache) => {
626
- 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) => {
627
758
  return openBlock(), createElementBlock("li", { key: index }, [createElementVNode("button", {
628
759
  class: "entry",
629
760
  "aria-pressed": index === entryIndex.value,
@@ -631,18 +762,18 @@ var Index_default$7 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
631
762
  type: "button",
632
763
  onClick: ($event) => entryIndex.value = index
633
764
  }, toDisplayString(entry.title), 9, _hoisted_4$19)]);
634
- }), 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);
635
766
  };
636
767
  }
637
- }), [["__scopeId", "data-v-d064a750"]]);
768
+ }), [["__scopeId", "data-v-46a06599"]]);
638
769
  // src/components/CharacterMenuTalents/Index.vue
639
770
  const _hoisted_1$29 = { class: "talents" };
640
771
  const _hoisted_2$22 = { class: "talent-list" };
641
- const _hoisted_3$20 = { class: "level" };
772
+ const _hoisted_3$19 = { class: "level" };
642
773
  const _hoisted_4$18 = { class: "detail" };
643
774
  const _hoisted_5$17 = { class: "phase" };
644
775
  const _hoisted_6$16 = { class: "costs" };
645
- const _hoisted_7$16 = {
776
+ const _hoisted_7$14 = {
646
777
  key: 0,
647
778
  class: "reason"
648
779
  };
@@ -651,7 +782,7 @@ var Index_default$8 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
651
782
  props: {
652
783
  costs: {},
653
784
  isUpgradeDisabled: {},
654
- levels: {},
785
+ levelTexts: {},
655
786
  phases: {},
656
787
  reasons: {},
657
788
  upgradeLabel: {}
@@ -660,23 +791,25 @@ var Index_default$8 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
660
791
  setup(__props, { emit: __emit }) {
661
792
  const emit = __emit;
662
793
  return (_ctx, _cache) => {
663
- 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) => {
664
795
  return openBlock(), createElementBlock("li", {
665
796
  key: index,
666
797
  class: "talent"
667
798
  }, [
668
- createElementVNode("span", _hoisted_3$20, toDisplayString(level), 1),
799
+ createElementVNode("span", _hoisted_3$19, toDisplayString(levelText), 1),
669
800
  createElementVNode("div", _hoisted_4$18, [
670
801
  createElementVNode("span", _hoisted_5$17, toDisplayString(__props.phases[index]), 1),
671
802
  createElementVNode("ul", _hoisted_6$16, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.costs[index], (cost, costIndex) => {
672
803
  return openBlock(), createElementBlock("li", { key: costIndex }, toDisplayString(cost), 1);
673
804
  }), 128))]),
674
- __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)
675
806
  ]),
676
- createVNode(Index_default$16, {
807
+ __props.phases[index] ? (openBlock(), createBlock(Index_default$17, {
808
+ key: 0,
677
809
  class: "upgrade",
678
810
  disabled: __props.isUpgradeDisabled[index],
679
811
  kind: unref(GameButtonKind).Reply,
812
+ tip: "",
680
813
  onClick: ($event) => emit("upgrade", index)
681
814
  }, {
682
815
  default: withCtx(() => [createTextVNode(toDisplayString(__props.upgradeLabel), 1)]),
@@ -685,61 +818,84 @@ var Index_default$8 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
685
818
  "disabled",
686
819
  "kind",
687
820
  "onClick"
688
- ]),
821
+ ])) : createCommentVNode("v-if", true),
689
822
  _cache[0] || (_cache[0] = createElementVNode("span", { class: "icon" }, null, -1))
690
823
  ]);
691
824
  }), 128))])])], 2112);
692
825
  };
693
826
  }
694
- }), [["__scopeId", "data-v-65541162"]]);
827
+ }), [["__scopeId", "data-v-ba02d114"]]);
695
828
  // src/components/CharacterMenuWeapons/Index.vue
696
829
  const _hoisted_1$28 = { class: "weapons" };
697
830
  const _hoisted_2$21 = { class: "name" };
698
- const _hoisted_3$19 = { class: "stars" };
831
+ const _hoisted_3$18 = { class: "kind" };
699
832
  const _hoisted_4$17 = { class: "stats" };
700
833
  const _hoisted_5$16 = { class: "stat" };
701
- const _hoisted_6$15 = { class: "stat" };
702
- const _hoisted_7$15 = { class: "level" };
703
- const _hoisted_8$12 = { class: "level-text" };
704
- 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" };
705
843
  var Index_default$9 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
706
844
  __name: "Index",
707
845
  props: {
708
846
  ascension: {},
709
847
  baseAttack: {},
848
+ baseAttackLabel: {},
849
+ enhanceLabel: {},
850
+ kind: {},
710
851
  levelText: {},
711
852
  name: {},
712
853
  rarity: {},
713
854
  refinement: {},
714
- subStatValue: {}
855
+ subStatLabel: {},
856
+ subStatValue: {},
857
+ switchLabel: {}
715
858
  },
716
859
  setup(__props) {
717
860
  return (_ctx, _cache) => {
718
- 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, [
719
862
  createElementVNode("p", _hoisted_2$21, toDisplayString(__props.name), 1),
720
- 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) => {
721
867
  return openBlock(), createElementBlock("span", {
722
868
  key: star,
723
869
  class: "star"
724
870
  });
725
871
  }), 128))]),
726
- createElementVNode("ul", _hoisted_4$17, [createElementVNode("li", _hoisted_5$16, toDisplayString(__props.baseAttack), 1), createElementVNode("li", _hoisted_6$15, toDisplayString(__props.subStatValue), 1)]),
727
- 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) => {
728
873
  return openBlock(), createElementBlock("span", {
729
874
  key: phase,
730
875
  class: normalizeClass(["spark", { lit: phase <= __props.ascension }])
731
876
  }, null, 2);
732
877
  }), 128))]),
733
- createElementVNode("p", _hoisted_9$11, toDisplayString(__props.refinement), 1),
734
- 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
+ })
735
884
  ])], 2112);
736
885
  };
737
886
  }
738
- }), [["__scopeId", "data-v-77cff4ef"]]);
887
+ }), [["__scopeId", "data-v-7e275e35"]]);
739
888
  // src/components/CookingScreen/Index.vue
740
889
  const _hoisted_1$27 = { class: "cooking-screen" };
741
- const _hoisted_2$20 = { class: "title" };
742
- 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
+ };
743
899
  const _hoisted_4$16 = ["aria-pressed", "onClick"];
744
900
  const _hoisted_5$15 = {
745
901
  "aria-hidden": "true",
@@ -747,16 +903,16 @@ const _hoisted_5$15 = {
747
903
  viewBox: "0 0 1920 1080"
748
904
  };
749
905
  const _hoisted_6$14 = ["d"];
750
- const _hoisted_7$14 = ["d"];
751
- const _hoisted_8$11 = ["d"];
752
- const _hoisted_9$10 = ["cx", "cy"];
753
- const _hoisted_10$10 = ["disabled"];
754
- 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({
755
910
  __name: "Index",
756
911
  props: {
757
912
  autoCookLabel: {},
758
- canAutoCook: { type: Boolean },
913
+ closeLabel: {},
759
914
  dishes: {},
915
+ isAutoCookable: { type: Boolean },
760
916
  pointer: {},
761
917
  selectedId: {},
762
918
  stopLabel: {},
@@ -771,84 +927,100 @@ var Index_default$10 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
771
927
  ],
772
928
  setup(__props, { emit: __emit }) {
773
929
  const emit = __emit;
774
- const toArcPoint = (fraction) => {
930
+ const toArcPoint = (fraction, radiusY) => {
775
931
  const angle = Math.PI * (1 - Math.min(1, Math.max(0, fraction)));
776
932
  return {
777
933
  x: 960 + 435 * Math.cos(angle),
778
- y: 832 - 120 * Math.sin(angle)
934
+ y: 832 - radiusY * Math.sin(angle)
779
935
  };
780
936
  };
781
- const toBarPath = ([start, end]) => {
782
- const from = toArcPoint(start);
783
- const to = toArcPoint(end);
784
- 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}`;
785
941
  };
942
+ const pointerPosition = computed(() => toArcPoint(__props.pointer, 90));
786
943
  return (_ctx, _cache) => {
787
944
  return openBlock(), createElementBlock("div", _hoisted_1$27, [
788
- createElementVNode("h1", _hoisted_2$20, toDisplayString(__props.title), 1),
789
- 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, {
790
952
  class: "close",
791
- type: "button",
953
+ label: __props.closeLabel,
954
+ mark: unref(CloseButtonMark).Cross,
792
955
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
793
- }, "×"),
794
- 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) => {
795
958
  return openBlock(), createElementBlock("li", { key: dish.id }, [createElementVNode("button", {
796
959
  "aria-pressed": dish.id === __props.selectedId,
797
960
  class: normalizeClass({ selected: dish.id === __props.selectedId }),
798
961
  type: "button",
799
962
  onClick: ($event) => emit("select", dish.id)
800
963
  }, toDisplayString(dish.name), 11, _hoisted_4$16)]);
801
- }), 128))]),
964
+ }), 128))])) : createCommentVNode("v-if", true),
802
965
  (openBlock(), createElementBlock("svg", _hoisted_5$15, [
803
- createCommentVNode(" A provisional pot until the game's own is traced from the recording "),
804
- _cache[3] || (_cache[3] = createElementVNode("ellipse", {
805
- class: "pot-rim",
806
- cx: "960",
807
- cy: "330",
808
- rx: "150",
809
- 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"
810
971
  }, null, -1)),
811
- _cache[4] || (_cache[4] = createElementVNode("path", {
812
- class: "pot",
813
- 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"
814
978
  }, null, -1)),
815
- createElementVNode("path", {
816
- class: "track",
817
- d: toBarPath([0, 1])
818
- }, 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)),
819
984
  createElementVNode("path", {
820
985
  class: "regular",
821
- d: toBarPath(__props.zones.regular)
822
- }, null, 8, _hoisted_7$14),
986
+ d: toArcPath(__props.zones.regular, unref(90))
987
+ }, null, 8, _hoisted_6$14),
823
988
  createElementVNode("path", {
824
989
  class: "delicious",
825
- d: toBarPath(__props.zones.delicious)
826
- }, null, 8, _hoisted_8$11),
827
- createElementVNode("circle", {
990
+ d: toArcPath(__props.zones.delicious, unref(90))
991
+ }, null, 8, _hoisted_7$12),
992
+ createElementVNode("g", {
828
993
  class: "pointer",
829
- cx: toArcPoint(__props.pointer).x,
830
- cy: toArcPoint(__props.pointer).y,
831
- r: "16"
832
- }, 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)
833
1002
  ])),
834
- createElementVNode("button", {
835
- disabled: !__props.canAutoCook,
1003
+ __props.isAutoCookable ? (openBlock(), createElementBlock("button", {
1004
+ key: 1,
836
1005
  class: "auto-cook",
837
1006
  type: "button",
838
1007
  onClick: _cache[1] || (_cache[1] = ($event) => emit("autoCook"))
839
- }, toDisplayString(__props.autoCookLabel), 9, _hoisted_10$10),
1008
+ }, toDisplayString(__props.autoCookLabel), 1)) : createCommentVNode("v-if", true),
840
1009
  createElementVNode("button", {
841
1010
  class: "stop",
842
1011
  type: "button",
843
1012
  onClick: _cache[2] || (_cache[2] = ($event) => emit("stop"))
844
- }, 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)])
845
1017
  ]);
846
1018
  };
847
1019
  }
848
- }), [["__scopeId", "data-v-4aee3a78"]]);
1020
+ }), [["__scopeId", "data-v-69c104bc"]]);
849
1021
  // src/components/DiscButton/Index.vue
850
1022
  const _hoisted_1$26 = ["aria-label"];
851
- var Index_default$13 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1023
+ var Index_default$14 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
852
1024
  __name: "Index",
853
1025
  props: {
854
1026
  label: {},
@@ -867,7 +1039,7 @@ var Index_default$13 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
867
1039
  }), [["__scopeId", "data-v-f5c878ff"]]);
868
1040
  // src/components/ScreenTitle/Index.vue
869
1041
  const _hoisted_1$25 = { class: "title" };
870
- var Index_default$30 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1042
+ var Index_default$31 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
871
1043
  __name: "Index",
872
1044
  setup(__props) {
873
1045
  return (_ctx, _cache) => {
@@ -878,29 +1050,29 @@ var Index_default$30 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
878
1050
  // src/components/CraftingScreen/Index.vue
879
1051
  const _hoisted_1$24 = { class: "crafting-screen" };
880
1052
  const _hoisted_2$19 = { class: "head" };
881
- const _hoisted_3$17 = { class: "coins" };
1053
+ const _hoisted_3$16 = { class: "coins" };
882
1054
  const _hoisted_4$15 = { class: "tabs" };
883
1055
  const _hoisted_5$14 = ["aria-pressed", "onClick"];
884
1056
  const _hoisted_6$13 = { class: "tab-name" };
885
- const _hoisted_7$13 = { class: "list" };
886
- const _hoisted_8$10 = { class: "recipes" };
1057
+ const _hoisted_7$11 = { class: "list" };
1058
+ const _hoisted_8$9 = { class: "recipes" };
887
1059
  const _hoisted_9$9 = ["aria-pressed", "onClick"];
888
1060
  const _hoisted_10$9 = { class: "recipe-name" };
889
- const _hoisted_11$8 = {
1061
+ const _hoisted_11$9 = {
890
1062
  key: 0,
891
1063
  class: "recipe-count"
892
1064
  };
893
1065
  const _hoisted_12$8 = { class: "detail" };
894
1066
  const _hoisted_13$8 = { class: "recipe-title" };
895
1067
  const _hoisted_14$8 = { class: "crafters" };
896
- const _hoisted_15$7 = ["aria-pressed", "onClick"];
897
- const _hoisted_16$7 = { class: "crafter-name" };
898
- 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"];
899
1071
  const _hoisted_18$6 = { class: "crafted" };
900
1072
  const _hoisted_19$6 = { class: "required" };
901
1073
  const _hoisted_20$6 = { class: "materials-label" };
902
1074
  const _hoisted_21$6 = { class: "materials" };
903
- var Index_default$11 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1075
+ var Index_default$12 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
904
1076
  __name: "Index",
905
1077
  props: /*@__PURE__*/ mergeModels({
906
1078
  amountLabel: {},
@@ -942,7 +1114,7 @@ var Index_default$11 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
942
1114
  return (_ctx, _cache) => {
943
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, [
944
1116
  createElementVNode("header", _hoisted_2$19, [
945
- createVNode(Index_default$30, {
1117
+ createVNode(Index_default$31, {
946
1118
  class: "heading",
947
1119
  role: "heading",
948
1120
  "aria-level": "1"
@@ -950,11 +1122,11 @@ var Index_default$11 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
950
1122
  default: withCtx(() => [createTextVNode(toDisplayString(__props.title), 1)]),
951
1123
  _: 1
952
1124
  }),
953
- createElementVNode("p", _hoisted_3$17, [_cache[3] || (_cache[3] = createElementVNode("span", {
1125
+ createElementVNode("p", _hoisted_3$16, [_cache[3] || (_cache[3] = createElementVNode("span", {
954
1126
  class: "coin",
955
1127
  "aria-hidden": "true"
956
1128
  }, null, -1)), createTextVNode(" " + toDisplayString(__props.coins), 1)]),
957
- createVNode(Index_default$13, {
1129
+ createVNode(Index_default$14, {
958
1130
  class: "close",
959
1131
  label: __props.closeLabel,
960
1132
  size: 56,
@@ -975,13 +1147,13 @@ var Index_default$11 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
975
1147
  onClick: ($event) => tabId.value = tab.id
976
1148
  }, [createElementVNode("span", _hoisted_6$13, toDisplayString(tab.name), 1)], 8, _hoisted_5$14)]);
977
1149
  }), 128))]),
978
- 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) => {
979
1151
  return openBlock(), createElementBlock("li", { key: recipe.id }, [createElementVNode("button", {
980
1152
  class: "recipe",
981
1153
  "aria-pressed": recipe.id === recipeId.value,
982
1154
  type: "button",
983
1155
  onClick: ($event) => recipeId.value = recipe.id
984
- }, [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)]);
985
1157
  }), 128))])]),
986
1158
  createElementVNode("div", _hoisted_12$8, [
987
1159
  _cache[5] || (_cache[5] = createElementVNode("div", {
@@ -995,7 +1167,7 @@ var Index_default$11 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
995
1167
  "aria-pressed": crafter.id === crafterId.value,
996
1168
  type: "button",
997
1169
  onClick: ($event) => crafterId.value = crafter.id
998
- }, [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)]);
999
1171
  }), 128))]),
1000
1172
  withDirectives(createElementVNode("input", {
1001
1173
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => amount.value = $event),
@@ -1004,7 +1176,7 @@ var Index_default$11 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1004
1176
  max: __props.amountMaximum,
1005
1177
  min: "1",
1006
1178
  type: "range"
1007
- }, null, 8, _hoisted_17$7), [[
1179
+ }, null, 8, _hoisted_17$6), [[
1008
1180
  vModelText,
1009
1181
  amount.value,
1010
1182
  void 0,
@@ -1039,45 +1211,64 @@ let DialogueChoiceIcon = /* @__PURE__ */ function(DialogueChoiceIcon) {
1039
1211
  // src/services/DialogueChoiceIconPathMap.ts
1040
1212
  const DialogueChoiceIconPathMap = {
1041
1213
  ["Quest"]: {
1042
- 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",
1043
1215
  viewBox: "0 0 300 300"
1044
1216
  },
1045
1217
  ["StoryQuest"]: {
1046
- 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",
1047
1219
  viewBox: "0 0 128 128"
1048
1220
  },
1049
1221
  ["Talk"]: {
1050
- 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",
1051
1223
  viewBox: "0 0 176 160"
1052
1224
  }
1053
1225
  };
1054
1226
  // src/components/DialogueScreen/Index.vue
1055
1227
  const _hoisted_1$23 = {
1056
- key: 0,
1057
- class: "speaker"
1058
- };
1059
- const _hoisted_2$18 = {
1060
1228
  key: 1,
1061
1229
  class: "role"
1062
1230
  };
1063
- const _hoisted_3$16 = { class: "line" };
1064
- const _hoisted_4$14 = { "aria-hidden": "true" };
1065
- 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 = {
1066
1246
  class: "unrevealed",
1067
1247
  "aria-hidden": "true"
1068
1248
  };
1069
- const _hoisted_6$12 = { class: "spoken" };
1070
- const _hoisted_7$12 = {
1249
+ const _hoisted_9$8 = { class: "spoken" };
1250
+ const _hoisted_10$8 = {
1071
1251
  key: 0,
1072
1252
  class: "choices"
1073
1253
  };
1074
- const _hoisted_8$9 = ["data-interaction-state"];
1075
- const _hoisted_9$8 = ["viewBox"];
1076
- const _hoisted_10$8 = ["d"];
1077
- 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({
1078
1268
  __name: "Index",
1079
1269
  props: {
1080
1270
  choices: {},
1271
+ confirmLabel: {},
1081
1272
  line: {},
1082
1273
  revealedLength: {},
1083
1274
  selectedChoiceId: {},
@@ -1086,79 +1277,124 @@ var Index_default$12 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1086
1277
  },
1087
1278
  emits: ["advance", "choose"],
1088
1279
  setup(__props, { emit: __emit }) {
1280
+ useCssVars((_ctx) => ({ "v7f5fa7e0": unref(GAME_DIALOGUE_GOLD) }));
1089
1281
  const emit = __emit;
1090
- const lineParts = computed(() => {
1091
- const characters = [...__props.line];
1092
- return {
1093
- revealed: characters.slice(0, __props.revealedLength).join(""),
1094
- unrevealed: characters.slice(__props.revealedLength).join("")
1095
- };
1096
- });
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
+ }));
1097
1288
  return (_ctx, _cache) => {
1098
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", {
1099
1290
  class: "dialogue-screen",
1100
1291
  onClick: _cache[0] || (_cache[0] = ($event) => emit("advance"))
1101
- }, [createElementVNode("div", {
1102
- class: normalizeClass(["band", { narration: !__props.speakerName }]),
1103
- "aria-live": "polite"
1104
1292
  }, [
1105
- __props.speakerName ? (openBlock(), createElementBlock("p", _hoisted_1$23, toDisplayString(__props.speakerName), 1)) : createCommentVNode("v-if", true),
1106
- __props.speakerRole ? (openBlock(), createElementBlock("p", _hoisted_2$18, toDisplayString(__props.speakerRole), 1)) : createCommentVNode("v-if", true),
1107
- createElementVNode("p", _hoisted_3$16, [
1108
- createElementVNode("span", _hoisted_4$14, toDisplayString(lineParts.value.revealed), 1),
1109
- createElementVNode("span", _hoisted_5$13, toDisplayString(lineParts.value.unrevealed), 1),
1110
- createElementVNode("span", _hoisted_6$12, toDisplayString(__props.line), 1)
1111
- ])
1112
- ], 2), __props.choices.length > 0 ? (openBlock(), createElementBlock("ul", _hoisted_7$12, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.choices, ({ icon, id, text }) => {
1113
- return openBlock(), createElementBlock("li", {
1114
- key: id,
1115
- "data-interaction-state": id === __props.selectedChoiceId ? "Hover" : void 0
1116
- }, [createVNode(Index_default$16, {
1117
- class: "choice",
1118
- "data-icon": icon,
1119
- kind: unref(GameButtonKind).Reply,
1120
- onClick: withModifiers(($event) => emit("choose", id), ["stop"])
1121
- }, {
1122
- default: withCtx(() => [(openBlock(), createElementBlock("svg", {
1123
- class: "icon",
1124
- "aria-hidden": "true",
1125
- viewBox: unref(DialogueChoiceIconPathMap)[icon].viewBox
1126
- }, [createElementVNode("path", {
1127
- d: unref(DialogueChoiceIconPathMap)[icon].d,
1128
- fill: "currentColor"
1129
- }, null, 8, _hoisted_10$8)], 8, _hoisted_9$8)), createTextVNode(" " + toDisplayString(text), 1)]),
1130
- _: 2
1131
- }, 1032, [
1132
- "data-icon",
1133
- "kind",
1134
- "onClick"
1135
- ])], 8, _hoisted_8$9);
1136
- }), 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);
1137
1361
  };
1138
1362
  }
1139
- }), [["__scopeId", "data-v-da022ee0"]]);
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
+ };
1140
1373
  // src/components/ItemTile/Index.vue
1141
1374
  const _hoisted_1$22 = ["data-rarity"];
1142
- const _hoisted_2$17 = { class: "face" };
1143
- const _hoisted_3$15 = {
1144
- class: "count",
1145
- "aria-hidden": "true"
1146
- };
1147
- var Index_default$20 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1375
+ var Index_default$21 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1148
1376
  __name: "Index",
1149
1377
  props: {
1150
1378
  count: {},
1379
+ countSize: { default: "30cqh" },
1151
1380
  rarity: {}
1152
1381
  },
1153
1382
  setup(__props) {
1154
1383
  return (_ctx, _cache) => {
1155
- 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", {
1156
1385
  class: "item-tile",
1157
1386
  "data-rarity": __props.rarity
1158
- }, [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);
1159
1395
  };
1160
1396
  }
1161
- }), [["__scopeId", "data-v-8cf70011"]]);
1397
+ }), [["__scopeId", "data-v-199913ce"]]);
1162
1398
  // src/models/ExpeditionActionKind.ts
1163
1399
  let ExpeditionActionKind = /* @__PURE__ */ function(ExpeditionActionKind) {
1164
1400
  ExpeditionActionKind["Claim"] = "claim";
@@ -1168,55 +1404,54 @@ let ExpeditionActionKind = /* @__PURE__ */ function(ExpeditionActionKind) {
1168
1404
  }({});
1169
1405
  // src/components/ExpeditionScreen/Index.vue
1170
1406
  const _hoisted_1$21 = { class: "expedition-screen" };
1171
- const _hoisted_2$16 = { class: "limit" };
1172
- const _hoisted_3$14 = ["aria-label"];
1173
- const _hoisted_4$13 = { class: "nations" };
1174
- const _hoisted_5$12 = ["aria-pressed", "onClick"];
1175
- 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 = {
1176
1411
  key: 0,
1177
1412
  class: "alert",
1178
1413
  "aria-hidden": "true"
1179
1414
  };
1180
- const _hoisted_7$11 = { class: "pins" };
1181
- const _hoisted_8$8 = [
1415
+ const _hoisted_6$11 = { class: "pins" };
1416
+ const _hoisted_7$9 = [
1182
1417
  "aria-label",
1183
1418
  "aria-pressed",
1184
1419
  "onClick"
1185
1420
  ];
1186
- const _hoisted_9$7 = {
1421
+ const _hoisted_8$7 = {
1187
1422
  key: 0,
1188
1423
  class: "away"
1189
1424
  };
1190
- const _hoisted_10$7 = {
1425
+ const _hoisted_9$7 = {
1191
1426
  key: 0,
1192
1427
  class: "detail"
1193
1428
  };
1194
- const _hoisted_11$7 = { class: "detail-name" };
1195
- const _hoisted_12$7 = { class: "description" };
1196
- const _hoisted_13$7 = { class: "rewards-label" };
1197
- const _hoisted_14$7 = { class: "rewards" };
1198
- 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 = {
1199
1434
  key: 0,
1200
1435
  class: "status"
1201
1436
  };
1202
- const _hoisted_16$6 = {
1437
+ const _hoisted_15$6 = {
1203
1438
  key: 1,
1204
1439
  class: "durations"
1205
1440
  };
1206
- const _hoisted_17$6 = ["aria-pressed", "onClick"];
1207
- const _hoisted_18$5 = {
1441
+ const _hoisted_16$5 = ["aria-pressed", "onClick"];
1442
+ const _hoisted_17$5 = {
1208
1443
  key: 1,
1209
1444
  class: "characters"
1210
1445
  };
1211
- const _hoisted_19$5 = { class: "characters-title" };
1212
- const _hoisted_20$5 = ["disabled", "onClick"];
1213
- const _hoisted_21$5 = { class: "character-name" };
1214
- const _hoisted_22$4 = { class: "character-bonus" };
1215
- 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 = {
1216
1451
  key: 0,
1217
1452
  class: "character-status"
1218
1453
  };
1219
- var Index_default$14 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1454
+ var Index_default$15 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1220
1455
  __name: "Index",
1221
1456
  props: /*@__PURE__*/ mergeModels({
1222
1457
  characters: {},
@@ -1270,23 +1505,23 @@ var Index_default$14 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1270
1505
  emit("send", __props.detail.id, characterId, hours.value);
1271
1506
  };
1272
1507
  return (_ctx, _cache) => {
1273
- 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, [
1274
- _cache[6] || (_cache[6] = createElementVNode("div", {
1275
- 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",
1276
1511
  "aria-hidden": "true"
1277
1512
  }, null, -1)),
1278
- createVNode(Index_default$30, null, {
1513
+ createVNode(Index_default$31, { class: "heading" }, {
1279
1514
  default: withCtx(() => [createTextVNode(toDisplayString(__props.title), 1)]),
1280
1515
  _: 1
1281
1516
  }),
1282
- createElementVNode("p", _hoisted_2$16, toDisplayString(__props.limitLabel), 1),
1283
- createElementVNode("button", {
1517
+ createElementVNode("p", _hoisted_2$17, toDisplayString(__props.limitLabel), 1),
1518
+ createVNode(Index_default$10, {
1284
1519
  class: "close",
1285
- "aria-label": __props.closeLabel,
1286
- type: "button",
1520
+ label: __props.closeLabel,
1521
+ mark: unref(CloseButtonMark).Cross,
1287
1522
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
1288
- }, "×", 8, _hoisted_3$14),
1289
- 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 }) => {
1290
1525
  return openBlock(), createElementBlock("li", { key: name }, [createElementVNode("button", {
1291
1526
  class: "nation",
1292
1527
  "aria-pressed": name === nation.value,
@@ -1298,10 +1533,10 @@ var Index_default$14 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1298
1533
  "aria-hidden": "true"
1299
1534
  }, null, -1)),
1300
1535
  createElementVNode("span", null, toDisplayString(name), 1),
1301
- hasAlert ? (openBlock(), createElementBlock("span", _hoisted_6$11, "!")) : createCommentVNode("v-if", true)
1302
- ], 8, _hoisted_5$12)]);
1536
+ hasAlert ? (openBlock(), createElementBlock("span", _hoisted_5$12, "!")) : createCommentVNode("v-if", true)
1537
+ ], 8, _hoisted_4$13)]);
1303
1538
  }), 128))]),
1304
- 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 }) => {
1305
1540
  return openBlock(), createElementBlock("li", {
1306
1541
  key: id,
1307
1542
  style: normalizeStyle({
@@ -1314,21 +1549,25 @@ var Index_default$14 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1314
1549
  "aria-pressed": id === place.value,
1315
1550
  type: "button",
1316
1551
  onClick: ($event) => place.value = id
1317
- }, [..._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);
1318
1556
  }), 128))]),
1319
- __props.detail ? (openBlock(), createElementBlock("section", _hoisted_10$7, [
1320
- 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),
1321
1559
  _cache[4] || (_cache[4] = createElementVNode("div", {
1322
1560
  class: "picture",
1323
1561
  "aria-hidden": "true"
1324
1562
  }, null, -1)),
1325
- createElementVNode("p", _hoisted_12$7, toDisplayString(__props.detail.description), 1),
1326
- createElementVNode("p", _hoisted_13$7, toDisplayString(__props.rewardsLabel), 1),
1327
- createElementVNode("ul", _hoisted_14$7, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.detail.rewards, ({ countLabel, label, rarity }, index) => {
1328
- 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, {
1329
1567
  class: "item",
1330
1568
  "aria-label": label,
1331
1569
  count: countLabel,
1570
+ "count-size": "26.67cqh",
1332
1571
  rarity,
1333
1572
  role: "img"
1334
1573
  }, null, 8, [
@@ -1337,25 +1576,25 @@ var Index_default$14 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1337
1576
  "rarity"
1338
1577
  ])]);
1339
1578
  }), 128))]),
1340
- __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) => {
1341
- return openBlock(), createElementBlock("li", { key: duration }, [createElementVNode("button", {
1342
- "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,
1343
1582
  type: "button",
1344
- onClick: ($event) => hours.value = duration
1345
- }, toDisplayString(duration) + "h", 9, _hoisted_17$6)]);
1583
+ onClick: ($event) => hours.value = durationHours
1584
+ }, toDisplayString(label), 9, _hoisted_16$5)]);
1346
1585
  }), 128))]))
1347
1586
  ])) : createCommentVNode("v-if", true),
1348
- 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 }) => {
1349
1588
  return openBlock(), createElementBlock("li", { key: id }, [createElementVNode("button", {
1350
1589
  class: "character",
1351
1590
  disabled: statusLabel !== "",
1352
1591
  type: "button",
1353
1592
  onClick: ($event) => pick(id)
1354
1593
  }, [
1355
- createElementVNode("span", _hoisted_21$5, toDisplayString(label), 1),
1356
- createElementVNode("span", _hoisted_22$4, toDisplayString(bonusLabel), 1),
1357
- statusLabel ? (openBlock(), createElementBlock("span", _hoisted_23$3, toDisplayString(statusLabel), 1)) : createCommentVNode("v-if", true)
1358
- ], 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)]);
1359
1598
  }), 128))])])) : createCommentVNode("v-if", true),
1360
1599
  __props.detail ? (openBlock(), createElementBlock("button", {
1361
1600
  key: 2,
@@ -1369,10 +1608,10 @@ var Index_default$14 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1369
1608
  ])], 2112);
1370
1609
  };
1371
1610
  }
1372
- }), [["__scopeId", "data-v-ee73652f"]]);
1611
+ }), [["__scopeId", "data-v-9e69ff99"]]);
1373
1612
  // src/components/TwoColumnScreen/Index.vue
1374
1613
  const _hoisted_1$20 = { class: "two-column-screen" };
1375
- var Index_default$34 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1614
+ var Index_default$35 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1376
1615
  __name: "Index",
1377
1616
  setup(__props) {
1378
1617
  return (_ctx, _cache) => {
@@ -1396,7 +1635,7 @@ let ForgeTab = /* @__PURE__ */ function(ForgeTab) {
1396
1635
  }({});
1397
1636
  // src/components/ForgeScreen/Index.vue
1398
1637
  const _hoisted_1$19 = { class: "head" };
1399
- const _hoisted_2$15 = {
1638
+ const _hoisted_2$16 = {
1400
1639
  class: "title",
1401
1640
  role: "heading",
1402
1641
  "aria-level": "1"
@@ -1405,50 +1644,63 @@ const _hoisted_3$13 = { class: "tabs" };
1405
1644
  const _hoisted_4$12 = ["aria-pressed"];
1406
1645
  const _hoisted_5$11 = ["aria-pressed"];
1407
1646
  const _hoisted_6$10 = { class: "coins" };
1408
- const _hoisted_7$10 = ["aria-label"];
1409
- const _hoisted_8$7 = { class: "recipes" };
1410
- const _hoisted_9$6 = [
1647
+ const _hoisted_7$8 = {
1648
+ key: 0,
1649
+ class: "recipes"
1650
+ };
1651
+ const _hoisted_8$6 = [
1411
1652
  "aria-pressed",
1412
1653
  "disabled",
1413
1654
  "onClick"
1414
1655
  ];
1415
- const _hoisted_10$6 = { class: "recipe-name" };
1416
- const _hoisted_11$6 = { class: "recipe-time" };
1417
- const _hoisted_12$6 = { class: "detail" };
1418
- const _hoisted_13$6 = ["aria-label", "max"];
1419
- const _hoisted_14$6 = { class: "total-time" };
1420
- const _hoisted_15$5 = { class: "item-icon" };
1421
- const _hoisted_16$5 = { class: "item-count" };
1422
- const _hoisted_17$5 = { class: "amount-label" };
1423
- const _hoisted_18$4 = { class: "amount-end amount-max" };
1424
- const _hoisted_19$4 = { class: "materials-box" };
1425
- const _hoisted_20$4 = { class: "materials-head" };
1426
- const _hoisted_21$4 = { class: "materials-title" };
1427
- const _hoisted_22$3 = { class: "support-title" };
1428
- const _hoisted_23$2 = { class: "required" };
1429
- 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 = {
1430
1659
  key: 1,
1431
- class: "refusal"
1660
+ class: "queues"
1432
1661
  };
1433
- 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 = {
1434
1674
  key: 1,
1435
- class: "queues"
1675
+ class: "refusal"
1436
1676
  };
1437
- const _hoisted_26$1 = ["data-state"];
1438
- const _hoisted_27$1 = { class: "queue-name" };
1439
- const _hoisted_28$1 = { class: "queue-progress" };
1440
- const _hoisted_29$1 = { class: "queue-time" };
1441
- const _hoisted_30$1 = ["onClick"];
1442
- 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({
1443
1693
  __name: "Index",
1444
1694
  props: /*@__PURE__*/ mergeModels({
1445
1695
  amountLabel: {},
1446
1696
  amountMaximum: {},
1447
1697
  closeLabel: {},
1448
1698
  coins: {},
1699
+ materialCountLabel: {},
1449
1700
  materialsBoxLabel: {},
1450
1701
  materialsLabel: {},
1451
1702
  obtainLabel: {},
1703
+ queueDetail: {},
1452
1704
  queues: {},
1453
1705
  queuesLabel: {},
1454
1706
  recipes: {},
@@ -1482,105 +1734,132 @@ var Index_default$15 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1482
1734
  const tab = useModel(__props, "tab");
1483
1735
  const emit = __emit;
1484
1736
  return (_ctx, _cache) => {
1485
- 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" }, {
1486
- default: withCtx(() => [createElementVNode("header", _hoisted_1$19, [
1487
- createElementVNode("p", _hoisted_2$15, toDisplayString(__props.title), 1),
1488
- createElementVNode("div", _hoisted_3$13, [createElementVNode("button", {
1489
- class: "tab",
1490
- "aria-pressed": tab.value === unref(ForgeTab).Materials,
1491
- type: "button",
1492
- onClick: _cache[0] || (_cache[0] = ($event) => tab.value = unref(ForgeTab).Materials)
1493
- }, toDisplayString(__props.materialsLabel), 9, _hoisted_4$12), createElementVNode("button", {
1494
- class: "tab",
1495
- "aria-pressed": tab.value === unref(ForgeTab).Queues,
1496
- type: "button",
1497
- onClick: _cache[1] || (_cache[1] = ($event) => tab.value = unref(ForgeTab).Queues)
1498
- }, toDisplayString(__props.queuesLabel), 9, _hoisted_5$11)]),
1499
- createElementVNode("p", _hoisted_6$10, toDisplayString(__props.coins), 1),
1500
- createElementVNode("button", {
1501
- class: "close",
1502
- "aria-label": __props.closeLabel,
1503
- type: "button",
1504
- onClick: _cache[2] || (_cache[2] = ($event) => emit("close"))
1505
- }, "×", 8, _hoisted_7$10)
1506
- ]), tab.value === unref(ForgeTab).Materials ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createElementVNode("ul", _hoisted_8$7, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.recipes, (recipe) => {
1507
- return openBlock(), createElementBlock("li", { key: recipe.id }, [createElementVNode("button", {
1508
- class: "recipe",
1509
- "aria-pressed": recipe.id === recipeId.value,
1510
- disabled: !recipe.isOpen,
1511
- type: "button",
1512
- onClick: ($event) => recipeId.value = recipe.id
1513
- }, [
1514
- _cache[5] || (_cache[5] = createElementVNode("span", {
1515
- class: "recipe-tile",
1516
- "aria-hidden": "true"
1517
- }, null, -1)),
1518
- createElementVNode("span", _hoisted_10$6, toDisplayString(recipe.name), 1),
1519
- createElementVNode("span", _hoisted_11$6, toDisplayString(recipe.forgeTimeLabel), 1)
1520
- ], 8, _hoisted_9$6)]);
1521
- }), 128))]), createElementVNode("div", _hoisted_12$6, [
1522
- withDirectives(createElementVNode("input", {
1523
- "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => amount.value = $event),
1524
- "aria-label": __props.amountLabel,
1525
- class: "amount",
1526
- max: __props.amountMaximum,
1527
- min: "1",
1528
- type: "range"
1529
- }, null, 8, _hoisted_13$6), [[
1530
- vModelText,
1531
- amount.value,
1532
- void 0,
1533
- { number: true }
1534
- ]]),
1535
- createElementVNode("p", _hoisted_14$6, toDisplayString(__props.totalTimeLabel), 1),
1536
- createElementVNode("div", _hoisted_15$5, [createElementVNode("span", _hoisted_16$5, toDisplayString(__props.yieldCount), 1)]),
1537
- createElementVNode("p", _hoisted_17$5, toDisplayString(__props.amountLabel), 1),
1538
- _cache[10] || (_cache[10] = createElementVNode("span", {
1539
- "aria-hidden": "true",
1540
- class: "amount-step amount-minus"
1541
- }, "−", -1)),
1542
- _cache[11] || (_cache[11] = createElementVNode("span", { class: "amount-end amount-min" }, "1", -1)),
1543
- createElementVNode("span", _hoisted_18$4, toDisplayString(__props.amountMaximum), 1),
1544
- _cache[12] || (_cache[12] = createElementVNode("span", {
1545
- "aria-hidden": "true",
1546
- class: "amount-step amount-plus"
1547
- }, "+", -1)),
1548
- createElementVNode("section", _hoisted_19$4, [
1549
- createElementVNode("header", _hoisted_20$4, [createElementVNode("p", _hoisted_21$4, toDisplayString(__props.materialsBoxLabel), 1), createElementVNode("p", _hoisted_22$3, toDisplayString(__props.supportLabel), 1)]),
1550
- _cache[6] || (_cache[6] = createElementVNode("span", { class: "slot slot-first" }, null, -1)),
1551
- _cache[7] || (_cache[7] = createElementVNode("span", { class: "slot slot-second" }, null, -1)),
1552
- _cache[8] || (_cache[8] = createElementVNode("span", { class: "slot slot-third" }, null, -1)),
1553
- _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"])
1554
1759
  ]),
1555
- createElementVNode("p", _hoisted_23$2, toDisplayString(__props.requiredCoins), 1),
1556
- !__props.refusalLabel ? (openBlock(), createElementBlock("button", {
1557
- key: 0,
1558
- class: "start",
1559
- type: "button",
1560
- onClick: _cache[4] || (_cache[4] = ($event) => emit("start"))
1561
- }, toDisplayString(__props.startLabel), 1)) : (openBlock(), createElementBlock("p", _hoisted_24$1, toDisplayString(__props.refusalLabel), 1))
1562
- ])], 64)) : (openBlock(), createElementBlock("ul", _hoisted_25$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.queues, (queue) => {
1563
- return openBlock(), createElementBlock("li", {
1564
- key: queue.id,
1565
- class: "queue",
1566
- "data-state": queue.state
1567
- }, [
1568
- createElementVNode("span", _hoisted_27$1, toDisplayString(queue.name), 1),
1569
- createElementVNode("span", _hoisted_28$1, toDisplayString(queue.progressLabel), 1),
1570
- createElementVNode("span", _hoisted_29$1, toDisplayString(queue.timeLabel), 1),
1571
- queue.state === unref(ForgeQueueState).Complete ? (openBlock(), createElementBlock("button", {
1572
- key: 0,
1573
- 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,
1574
1765
  type: "button",
1575
- onClick: ($event) => emit("obtain", queue.id)
1576
- }, toDisplayString(__props.obtainLabel), 9, _hoisted_30$1)) : createCommentVNode("v-if", true)
1577
- ], 8, _hoisted_26$1);
1578
- }), 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
+ ]),
1579
1858
  _: 1
1580
1859
  })], 2112);
1581
1860
  };
1582
1861
  }
1583
- }), [["__scopeId", "data-v-4426e963"]]);
1862
+ }), [["__scopeId", "data-v-7f108f1e"]]);
1584
1863
  // src/services/toCanvasRect.ts
1585
1864
  const toPair = ([x = 0, y = 0]) => [x, y];
1586
1865
  const toCanvasRect = ({ anchorMax, anchorMin, pivot, position, size }) => ({
@@ -1637,32 +1916,40 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
1637
1916
  });
1638
1917
  // src/components/GameScreen/Index.vue
1639
1918
  const _hoisted_1$18 = ["data-interaction-state"];
1640
- 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({
1641
1924
  __name: "Index",
1642
1925
  props: {
1643
1926
  interactionState: {},
1644
- isTouch: { type: Boolean }
1927
+ isTouch: { type: Boolean },
1928
+ isWorldBlurred: { type: Boolean }
1645
1929
  },
1646
1930
  setup(__props) {
1647
1931
  useCssVars((_ctx) => ({
1648
- "b3ebfd60": unref(GAME_CANVAS_INSET),
1649
- "v687962d1": unref(GAME_CANVAS_UNIT),
1650
- "v440f997e": unref(GAME_UNIT),
1651
- "v3dfd0b4f": unref(GAME_WHITE),
1652
- "v603eb8d0": unref(GAME_CURSOR),
1653
- "v62ea67cc": unref(GAME_FONT_FAMILY),
1654
- "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)
1655
1942
  }));
1656
1943
  const style = computed(() => __props.isTouch === void 0 ? void 0 : { "--interface-scale": __props.isTouch ? MOBILE_INTERFACE_SCALE : 1 });
1657
1944
  return (_ctx, _cache) => {
1658
- 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", {
1659
1946
  class: "game-screen",
1660
1947
  "data-interaction-state": __props.interactionState,
1661
1948
  style: normalizeStyle(style.value)
1662
- }, [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);
1663
1950
  };
1664
1951
  }
1665
- }), [["__scopeId", "data-v-b0f87b0b"]]);
1952
+ }), [["__scopeId", "data-v-8d286db2"]]);
1666
1953
  // src/components/InteractionPrompts/Index.vue
1667
1954
  const _hoisted_1$17 = ["aria-current", "data-kind"];
1668
1955
  const _hoisted_2$14 = {
@@ -1672,23 +1959,20 @@ const _hoisted_2$14 = {
1672
1959
  };
1673
1960
  const _hoisted_3$12 = ["onClick"];
1674
1961
  const _hoisted_4$11 = { class: "name" };
1675
- var Index_default$18 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1962
+ var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1676
1963
  __name: "Index",
1677
1964
  props: {
1678
- isTouch: {
1679
- type: Boolean,
1680
- default: false
1681
- },
1965
+ isTouch: { type: Boolean },
1682
1966
  prompts: {},
1683
1967
  selectedId: {}
1684
1968
  },
1685
1969
  emits: ["press"],
1686
1970
  setup(__props, { emit: __emit }) {
1687
- useCssVars((_ctx) => ({ "v0b0e8f3c": selectionDuration }));
1971
+ useCssVars((_ctx) => ({ "v4523eb16": selectionDuration }));
1688
1972
  const emit = __emit;
1689
1973
  const selectionDuration = `50ms`;
1690
1974
  return (_ctx, _cache) => {
1691
- 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 }) => {
1692
1976
  return openBlock(), createElementBlock("li", {
1693
1977
  key: id,
1694
1978
  class: "prompt",
@@ -1705,7 +1989,7 @@ var Index_default$18 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1705
1989
  }), 128))], 2)], 2112);
1706
1990
  };
1707
1991
  }
1708
- }), [["__scopeId", "data-v-49059f1b"]]);
1992
+ }), [["__scopeId", "data-v-108aa9a5"]]);
1709
1993
  // src/models/InventorySort.ts
1710
1994
  let InventorySort = /* @__PURE__ */ function(InventorySort) {
1711
1995
  InventorySort["Level"] = "Level";
@@ -1728,61 +2012,81 @@ const _hoisted_5$10 = [
1728
2012
  "data-category",
1729
2013
  "onClick"
1730
2014
  ];
1731
- const _hoisted_6$9 = { class: "capacity" };
1732
- const _hoisted_7$9 = ["aria-label"];
1733
- const _hoisted_8$6 = { class: "grid" };
1734
- 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 = [
1735
2025
  "aria-label",
1736
2026
  "aria-pressed",
1737
2027
  "data-rarity",
1738
2028
  "data-selected",
1739
2029
  "onClick"
1740
2030
  ];
1741
- const _hoisted_10$5 = { class: "caption" };
1742
- const _hoisted_11$5 = ["data-rarity"];
1743
- const _hoisted_12$5 = { class: "detail-name" };
1744
- const _hoisted_13$5 = { class: "detail-caption" };
1745
- const _hoisted_14$5 = ["aria-label", "aria-pressed"];
1746
- const _hoisted_15$4 = {
1747
- 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,
1748
2051
  class: "destroy"
1749
2052
  };
1750
- const _hoisted_16$4 = { class: "destroy-tip" };
1751
- const _hoisted_17$4 = {
2053
+ const _hoisted_21$3 = { class: "destroy-tip" };
2054
+ const _hoisted_22$2 = {
1752
2055
  key: 0,
1753
2056
  class: "destroy-cannot"
1754
2057
  };
1755
- const _hoisted_18$3 = { class: "quick-selects" };
1756
- const _hoisted_19$3 = ["data-rarity", "onClick"];
1757
- const _hoisted_20$3 = { class: "destroy-count" };
1758
- const _hoisted_21$3 = ["disabled"];
1759
- const _hoisted_22$2 = { class: "sort" };
1760
- const _hoisted_23$1 = ["value"];
1761
- const _hoisted_24 = ["aria-label", "data-descending"];
1762
- const _hoisted_25 = {
1763
- 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,
1764
2068
  class: "currencies"
1765
2069
  };
1766
- const _hoisted_26 = ["data-currency"];
1767
- const _hoisted_27 = { class: "currency-name" };
1768
- const _hoisted_28 = {
2070
+ const _hoisted_32$1 = ["data-currency"];
2071
+ const _hoisted_33 = { class: "currency-name" };
2072
+ const _hoisted_34 = {
1769
2073
  key: 0,
1770
2074
  class: "top-up"
1771
2075
  };
1772
- const _hoisted_29 = ["aria-label"];
1773
- const _hoisted_30 = { class: "confirm-title" };
1774
- const _hoisted_31 = { class: "confirm-list-label" };
1775
- const _hoisted_32 = { class: "confirm-names" };
1776
- const _hoisted_33 = { class: "confirm-warning" };
1777
- 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 = {
1778
2082
  key: 0,
1779
2083
  class: "confirm-warning"
1780
2084
  };
1781
- const _hoisted_35 = { class: "confirm-list-label" };
1782
- const _hoisted_36 = { class: "confirm-names" };
1783
- const _hoisted_37 = { class: "confirm-buttons" };
1784
- const _hoisted_38 = ["disabled"];
1785
- 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({
1786
2090
  __name: "Index",
1787
2091
  props: /*@__PURE__*/ mergeModels({
1788
2092
  backLabel: {},
@@ -1803,6 +2107,7 @@ var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1803
2107
  destroyRecoveredNames: {},
1804
2108
  destroySelectedLabel: {},
1805
2109
  destroyTipLabel: {},
2110
+ detailsLabel: {},
1806
2111
  isConfirming: { type: Boolean },
1807
2112
  isDestroyFull: { type: Boolean },
1808
2113
  isDestroying: { type: Boolean },
@@ -1847,6 +2152,16 @@ var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1847
2152
  "update:selectedId"
1848
2153
  ]),
1849
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
+ };
1850
2165
  const category = useModel(__props, "category");
1851
2166
  const sort = useModel(__props, "sort");
1852
2167
  const isDescending = useModel(__props, "isDescending");
@@ -1863,7 +2178,7 @@ var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1863
2178
  else (returnFocus?.isConnected ? returnFocus : trashButton.value)?.focus();
1864
2179
  });
1865
2180
  return (_ctx, _cache) => {
1866
- 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, [
1867
2182
  createElementVNode("div", {
1868
2183
  class: "bag",
1869
2184
  inert: __props.isConfirming
@@ -1877,46 +2192,48 @@ var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1877
2192
  "data-category": itemCategory,
1878
2193
  type: "button",
1879
2194
  onClick: ($event) => category.value = itemCategory
1880
- }, 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)]);
1881
2196
  }), 128))]),
1882
- createElementVNode("p", _hoisted_6$9, toDisplayString(__props.capacity), 1),
2197
+ createElementVNode("p", _hoisted_8$5, toDisplayString(__props.capacity), 1),
1883
2198
  createElementVNode("button", {
1884
2199
  class: "back",
1885
2200
  "aria-label": __props.backLabel,
1886
2201
  type: "button",
1887
2202
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
1888
- }, null, 8, _hoisted_7$9),
1889
- 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) => {
1890
2205
  return openBlock(), createElementBlock("li", { key: cell.id }, [createElementVNode("button", {
1891
2206
  class: "cell",
1892
2207
  "aria-label": cell.name,
1893
2208
  "aria-pressed": __props.isDestroying ? Boolean(cell.isSelected) : cell.id === selectedCell.value?.id,
1894
2209
  "data-rarity": cell.rarity,
1895
- "data-selected": cell.isSelected,
2210
+ "data-selected": cell.isSelected || void 0,
1896
2211
  type: "button",
1897
2212
  onClick: ($event) => __props.isDestroying && cell.isDestroyable ? emit("choose", cell.id) : selectedId.value = cell.id
1898
- }, [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)]);
1899
2214
  }), 128))]),
1900
2215
  selectedCell.value ? (openBlock(), createElementBlock("section", {
1901
2216
  key: 0,
1902
2217
  class: "detail",
1903
2218
  "data-rarity": selectedCell.value.rarity
1904
2219
  }, [
1905
- createElementVNode("p", _hoisted_12$5, toDisplayString(selectedCell.value.name), 1),
1906
- createElementVNode("p", _hoisted_13$5, toDisplayString(selectedCell.value.caption), 1),
1907
- selectedCell.value.isUsable && !__props.isDestroying ? (openBlock(), createElementBlock("button", {
1908
- key: 0,
1909
- class: "use",
1910
- type: "button",
1911
- onClick: _cache[1] || (_cache[1] = ($event) => emit("use", selectedCell.value.id))
1912
- }, 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),
1913
2223
  selectedCell.value.isLockable && !__props.isDestroying ? (openBlock(), createElementBlock("button", {
1914
2224
  key: 1,
1915
2225
  class: "lock",
1916
2226
  type: "button",
1917
- onClick: _cache[2] || (_cache[2] = ($event) => emit("lock", selectedCell.value.id))
2227
+ onClick: _cache[1] || (_cache[1] = ($event) => emit("lock", selectedCell.value.id))
1918
2228
  }, toDisplayString(selectedCell.value.isLocked ? __props.unlockLabel : __props.lockLabel), 1)) : createCommentVNode("v-if", true)
1919
- ], 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),
1920
2237
  createElementVNode("button", {
1921
2238
  ref_key: "trashButton",
1922
2239
  ref: trashButton,
@@ -1925,59 +2242,63 @@ var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1925
2242
  "aria-pressed": __props.isDestroying,
1926
2243
  type: "button",
1927
2244
  onClick: _cache[3] || (_cache[3] = ($event) => emit("toggleDestroy"))
1928
- }, 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),
1929
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 "),
1930
- __props.isDestroying ? (openBlock(), createElementBlock("section", _hoisted_15$4, [
1931
- createElementVNode("p", _hoisted_16$4, toDisplayString(__props.destroyTipLabel), 1),
1932
- selectedCell.value && !selectedCell.value.isDestroyable ? (openBlock(), createElementBlock("p", _hoisted_17$4, toDisplayString(__props.destroyCannotLabel), 1)) : createCommentVNode("v-if", true),
1933
- 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 }) => {
1934
2258
  return openBlock(), createElementBlock("li", { key: rarity }, [createElementVNode("button", {
1935
2259
  class: "quick-select",
1936
2260
  "data-rarity": rarity,
1937
2261
  type: "button",
1938
2262
  onClick: ($event) => emit("quickSelect", rarity)
1939
- }, toDisplayString(label), 9, _hoisted_19$3)]);
2263
+ }, toDisplayString(label), 9, _hoisted_24$1)]);
1940
2264
  }), 128))]),
1941
- createElementVNode("p", _hoisted_20$3, toDisplayString(__props.destroySelectedLabel), 1),
2265
+ createElementVNode("p", _hoisted_25$1, toDisplayString(__props.destroySelectedLabel), 1),
1942
2266
  createElementVNode("button", {
1943
2267
  class: "destroy-button",
1944
2268
  disabled: !__props.destroyNames.length,
1945
2269
  type: "button",
1946
2270
  onClick: _cache[4] || (_cache[4] = ($event) => emit("destroy"))
1947
- }, toDisplayString(__props.destroyButtonLabel), 9, _hoisted_21$3)
1948
- ])) : __props.isSortable ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
1949
- _cache[10] || (_cache[10] = createElementVNode("span", { class: "filter" }, null, -1)),
1950
- 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", {
1951
- "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => sort.value = $event),
1952
- class: "sort-select"
1953
- }, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(InventorySorts), (inventorySort) => {
1954
- return openBlock(), createElementBlock("option", {
1955
- key: inventorySort,
1956
- value: inventorySort
1957
- }, toDisplayString(__props.sortLabels[inventorySort]), 9, _hoisted_23$1);
1958
- }), 128))], 512), [[vModelSelect, sort.value]])]),
1959
- createElementVNode("button", {
1960
- class: "order",
1961
- "aria-label": __props.orderLabel,
1962
- "data-descending": isDescending.value,
1963
- type: "button",
1964
- onClick: _cache[6] || (_cache[6] = ($event) => isDescending.value = !isDescending.value)
1965
- }, null, 8, _hoisted_24)
1966
- ], 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 }) => {
1967
2288
  return openBlock(), createElementBlock("li", {
1968
2289
  key: id,
1969
2290
  class: "currency",
1970
2291
  "data-currency": id
1971
2292
  }, [
1972
- createElementVNode("span", _hoisted_27, toDisplayString(name), 1),
2293
+ createElementVNode("span", _hoisted_33, toDisplayString(name), 1),
1973
2294
  _cache[11] || (_cache[11] = createElementVNode("span", { class: "currency-icon" }, null, -1)),
1974
2295
  createTextVNode(" " + toDisplayString(quantity) + " ", 1),
1975
- isTopUp ? (openBlock(), createElementBlock("span", _hoisted_28)) : createCommentVNode("v-if", true)
1976
- ], 8, _hoisted_26);
2296
+ isTopUp ? (openBlock(), createElementBlock("span", _hoisted_34)) : createCommentVNode("v-if", true)
2297
+ ], 8, _hoisted_32$1);
1977
2298
  }), 128))])),
1978
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 "),
1979
2300
  selectedCell.value?.isEquipable && !__props.isDestroying ? (openBlock(), createElementBlock("button", {
1980
- key: 4,
2301
+ key: 6,
1981
2302
  class: "quick-use",
1982
2303
  type: "button",
1983
2304
  onClick: _cache[7] || (_cache[7] = ($event) => emit("quickUse", selectedCell.value.id))
@@ -1991,17 +2312,17 @@ var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1991
2312
  "aria-modal": "true",
1992
2313
  "aria-label": __props.destroyConfirmTitle
1993
2314
  }, [
1994
- createElementVNode("p", _hoisted_30, toDisplayString(__props.destroyConfirmTitle), 1),
1995
- createElementVNode("p", _hoisted_31, toDisplayString(__props.destroyConfirmListLabel), 1),
1996
- 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) => {
1997
2318
  return openBlock(), createElementBlock("li", { key: index }, toDisplayString(name), 1);
1998
2319
  }), 128))]),
1999
- createElementVNode("p", _hoisted_33, toDisplayString(__props.destroyConfirmWarningLabel), 1),
2000
- __props.isDestroyFull ? (openBlock(), createElementBlock("p", _hoisted_34, toDisplayString(__props.destroyFullLabel), 1)) : createCommentVNode("v-if", true),
2001
- __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) => {
2002
2323
  return openBlock(), createElementBlock("li", { key: index }, toDisplayString(name), 1);
2003
2324
  }), 128))])], 64)) : createCommentVNode("v-if", true),
2004
- createElementVNode("div", _hoisted_37, [createElementVNode("button", {
2325
+ createElementVNode("div", _hoisted_43, [createElementVNode("button", {
2005
2326
  ref_key: "cancelButton",
2006
2327
  ref: cancelButton,
2007
2328
  class: "confirm-button",
@@ -2012,15 +2333,15 @@ var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2012
2333
  class: "confirm-button",
2013
2334
  type: "button",
2014
2335
  onClick: _cache[9] || (_cache[9] = ($event) => emit("confirmDestroy"))
2015
- }, toDisplayString(__props.destroyConfirmButtonLabel), 9, _hoisted_38)])
2016
- ], 8, _hoisted_29)) : createCommentVNode("v-if", true)
2336
+ }, toDisplayString(__props.destroyConfirmButtonLabel), 9, _hoisted_44)])
2337
+ ], 8, _hoisted_35)) : createCommentVNode("v-if", true)
2017
2338
  ])], 2112);
2018
2339
  };
2019
2340
  }
2020
- }), [["__scopeId", "data-v-cf391b68"]]);
2341
+ }), [["__scopeId", "data-v-7a368ce5"]]);
2021
2342
  // src/components/LoadingSpinner/Index.vue
2022
2343
  const _hoisted_1$15 = ["aria-label"];
2023
- var Index_default$21 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2344
+ var Index_default$22 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2024
2345
  __name: "Index",
2025
2346
  props: { label: {} },
2026
2347
  setup(__props) {
@@ -2035,73 +2356,74 @@ var Index_default$21 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2035
2356
  }), [["__scopeId", "data-v-69cb5a34"]]);
2036
2357
  // src/components/OrnamentDivider/Index.vue
2037
2358
  const _hoisted_1$14 = {
2038
- class: "ornament-divider",
2039
- "aria-hidden": "true"
2040
- };
2041
- const _hoisted_2$12 = {
2042
2359
  class: "end",
2043
2360
  viewBox: "0 0 320 224"
2044
2361
  };
2045
- const _hoisted_3$10 = ["d"];
2046
- const _hoisted_4$9 = {
2362
+ const _hoisted_2$12 = ["d"];
2363
+ const _hoisted_3$10 = {
2364
+ key: 0,
2047
2365
  class: "middle",
2048
2366
  viewBox: "0 0 480 320"
2049
2367
  };
2050
- const _hoisted_5$9 = ["d"];
2051
- const _hoisted_6$8 = {
2368
+ const _hoisted_4$9 = ["d"];
2369
+ const _hoisted_5$9 = {
2052
2370
  class: "end right",
2053
2371
  viewBox: "0 0 320 224"
2054
2372
  };
2055
- const _hoisted_7$8 = ["d"];
2056
- 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({
2057
2375
  __name: "Index",
2376
+ props: {
2377
+ isMiddleHidden: { type: Boolean },
2378
+ opacity: { default: 1 }
2379
+ },
2058
2380
  setup(__props) {
2059
2381
  return (_ctx, _cache) => {
2060
- 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, [
2061
- (openBlock(), createElementBlock("svg", _hoisted_2$12, [createElementVNode("path", { d: unref(ORNAMENT_END_PATH) }, null, 8, _hoisted_3$10)])),
2062
- (openBlock(), createElementBlock("svg", _hoisted_4$9, [createElementVNode("path", { d: unref(ORNAMENT_MIDDLE_PATH) }, null, 8, _hoisted_5$9)])),
2063
- (openBlock(), createElementBlock("svg", _hoisted_6$8, [createElementVNode("path", { d: unref(ORNAMENT_END_PATH) }, null, 8, _hoisted_7$8)]))
2064
- ])], 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);
2065
2391
  };
2066
2392
  }
2067
- }), [["__scopeId", "data-v-335021af"]]);
2393
+ }), [["__scopeId", "data-v-98fbdc00"]]);
2068
2394
  // src/components/PartySetupScreen/Index.vue
2069
2395
  const _hoisted_1$13 = { class: "party-setup-screen" };
2070
2396
  const _hoisted_2$11 = { class: "head" };
2071
2397
  const _hoisted_3$9 = { class: "title" };
2072
- const _hoisted_4$8 = ["aria-label"];
2398
+ const _hoisted_4$8 = { class: "resonance-text" };
2073
2399
  const _hoisted_5$8 = { class: "team" };
2074
- const _hoisted_6$7 = { class: "slots" };
2075
- const _hoisted_7$7 = ["data-empty"];
2076
- const _hoisted_8$5 = {
2400
+ const _hoisted_6$7 = ["aria-label", "onClick"];
2401
+ const _hoisted_7$6 = { class: "slots" };
2402
+ const _hoisted_8$4 = {
2077
2403
  key: 0,
2078
2404
  class: "plate"
2079
2405
  };
2080
2406
  const _hoisted_9$4 = { class: "name" };
2081
- const _hoisted_10$4 = {
2082
- key: 0,
2083
- class: "element",
2084
- viewBox: "0 0 1600 1600",
2085
- "aria-hidden": "true"
2086
- };
2087
- const _hoisted_11$4 = ["d"];
2088
- const _hoisted_12$4 = { class: "level" };
2089
- const _hoisted_13$4 = {
2407
+ const _hoisted_10$4 = ["d"];
2408
+ const _hoisted_11$4 = { class: "level" };
2409
+ const _hoisted_12$3 = {
2090
2410
  key: 1,
2091
2411
  class: "plus",
2092
2412
  "aria-hidden": "true"
2093
2413
  };
2094
- const _hoisted_14$4 = { class: "foot" };
2095
- const _hoisted_15$3 = { class: "team-bar" };
2096
- const _hoisted_16$3 = { class: "team-name" };
2097
- const _hoisted_17$3 = { class: "deploy-bar" };
2098
- 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({
2099
2418
  __name: "Index",
2100
2419
  props: {
2101
2420
  backLabel: {},
2102
2421
  configureTeamLabel: {},
2103
2422
  deployLabel: {},
2423
+ nextLabel: {},
2424
+ previousLabel: {},
2104
2425
  quickSetupLabel: {},
2426
+ resonanceLabel: {},
2105
2427
  slots: {},
2106
2428
  teamName: {},
2107
2429
  title: {}
@@ -2116,54 +2438,84 @@ var Index_default$23 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2116
2438
  ],
2117
2439
  setup(__props, { emit: __emit }) {
2118
2440
  const emit = __emit;
2441
+ const steps = computed(() => [{
2442
+ label: __props.previousLabel,
2443
+ name: "previous"
2444
+ }, {
2445
+ label: __props.nextLabel,
2446
+ name: "next"
2447
+ }]);
2119
2448
  return (_ctx, _cache) => {
2120
- 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, [
2121
- createElementVNode("header", _hoisted_2$11, [createElementVNode("h1", _hoisted_3$9, toDisplayString(__props.title), 1), createElementVNode("button", {
2122
- class: "back",
2123
- "aria-label": __props.backLabel,
2124
- type: "button",
2125
- onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
2126
- }, "↶", 8, _hoisted_4$8)]),
2127
- 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, [
2128
2492
  createElementVNode("button", {
2129
- class: "step previous",
2493
+ class: "configure",
2494
+ "aria-label": __props.configureTeamLabel,
2130
2495
  type: "button",
2131
- onClick: _cache[1] || (_cache[1] = ($event) => emit("previous"))
2132
- }, "‹"),
2133
- createElementVNode("ol", _hoisted_6$7, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.slots, (slot, index) => {
2134
- return openBlock(), createElementBlock("li", {
2135
- key: index,
2136
- class: "slot",
2137
- "data-empty": !slot.levelText || void 0
2138
- }, [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);
2139
- }), 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),
2140
2499
  createElementVNode("button", {
2141
- class: "step next",
2500
+ class: "quick",
2142
2501
  type: "button",
2143
- onClick: _cache[2] || (_cache[2] = ($event) => emit("next"))
2144
- }, "›")
2145
- ]),
2146
- createElementVNode("footer", _hoisted_14$4, [createElementVNode("div", _hoisted_15$3, [createElementVNode("p", _hoisted_16$3, toDisplayString(__props.teamName), 1), createElementVNode("button", {
2147
- class: "action",
2148
- type: "button",
2149
- onClick: _cache[3] || (_cache[3] = ($event) => emit("configureTeam"))
2150
- }, toDisplayString(__props.configureTeamLabel), 1)]), createElementVNode("div", _hoisted_17$3, [createElementVNode("button", {
2151
- class: "action",
2152
- type: "button",
2153
- onClick: _cache[4] || (_cache[4] = ($event) => emit("quickSetup"))
2154
- }, toDisplayString(__props.quickSetupLabel), 1), createElementVNode("button", {
2155
- class: "action",
2156
- type: "button",
2157
- onClick: _cache[5] || (_cache[5] = ($event) => emit("deploy"))
2158
- }, 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
+ ])
2159
2511
  ])], 2112);
2160
2512
  };
2161
2513
  }
2162
- }), [["__scopeId", "data-v-876761d0"]]);
2514
+ }), [["__scopeId", "data-v-11632b5d"]]);
2163
2515
  // src/components/ProgressBar/Index.vue
2164
2516
  const _hoisted_1$12 = ["aria-valuenow"];
2165
2517
  const _hoisted_2$10 = { class: "track" };
2166
- var Index_default$25 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2518
+ var Index_default$26 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2167
2519
  __name: "Index",
2168
2520
  props: {
2169
2521
  isFolded: { type: Boolean },
@@ -2187,7 +2539,7 @@ var Index_default$25 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2187
2539
  ], 10, _hoisted_1$12)], 2112);
2188
2540
  };
2189
2541
  }
2190
- }), [["__scopeId", "data-v-bea8e745"]]);
2542
+ }), [["__scopeId", "data-v-bd43e432"]]);
2191
2543
  // src/components/PromptBand/Index.vue
2192
2544
  const _sfc_main$12 = {};
2193
2545
  const _hoisted_1$11 = { class: "prompt-band" };
@@ -2195,10 +2547,10 @@ const _hoisted_2$9 = { class: "text" };
2195
2547
  function _sfc_render(_ctx, _cache) {
2196
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);
2197
2549
  }
2198
- var Index_default$26 = /*#__PURE__*/ export_helper_default(_sfc_main$12, [["render", _sfc_render], ["__scopeId", "data-v-8c88bb3d"]]);
2550
+ var Index_default$27 = /*#__PURE__*/ export_helper_default(_sfc_main$12, [["render", _sfc_render], ["__scopeId", "data-v-8c88bb3d"]]);
2199
2551
  // src/components/RarityStars/Index.vue
2200
2552
  const _hoisted_1$10 = { class: "stars" };
2201
- var Index_default$27 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2553
+ var Index_default$28 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2202
2554
  __name: "Index",
2203
2555
  props: { rarity: {} },
2204
2556
  setup(__props) {
@@ -2218,8 +2570,8 @@ const _hoisted_3$8 = {
2218
2570
  const _hoisted_4$7 = ["aria-label"];
2219
2571
  const _hoisted_5$7 = { class: "detail" };
2220
2572
  const _hoisted_6$6 = { class: "headline" };
2221
- const _hoisted_7$6 = { class: "requirement" };
2222
- const _hoisted_8$4 = {
2573
+ const _hoisted_7$5 = { class: "requirement" };
2574
+ const _hoisted_8$3 = {
2223
2575
  key: 0,
2224
2576
  class: "offer"
2225
2577
  };
@@ -2230,9 +2582,9 @@ const _hoisted_11$3 = [
2230
2582
  "data-achieved",
2231
2583
  "onClick"
2232
2584
  ];
2233
- const _hoisted_12$3 = { class: "badge" };
2234
- const _hoisted_13$3 = { class: "badge-face" };
2235
- 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" };
2236
2588
  const _hoisted_15$2 = { class: "badge-number" };
2237
2589
  const _hoisted_16$2 = { class: "items" };
2238
2590
  const _hoisted_17$2 = {
@@ -2254,7 +2606,7 @@ const _hoisted_22$1 = {
2254
2606
  key: 2,
2255
2607
  class: "status"
2256
2608
  };
2257
- var Index_default$28 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2609
+ var Index_default$29 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2258
2610
  __name: "Index",
2259
2611
  props: /*@__PURE__*/ mergeModels({
2260
2612
  achievedLabel: {},
@@ -2282,13 +2634,13 @@ var Index_default$28 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2282
2634
  type: "button",
2283
2635
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
2284
2636
  }, "↶", 8, _hoisted_4$7)]),
2285
- 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) => {
2286
2638
  return openBlock(), createElementBlock("span", {
2287
2639
  key: index,
2288
2640
  style: normalizeStyle({ color })
2289
2641
  }, toDisplayString(text), 5);
2290
2642
  }), 128))])]),
2291
- __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", {
2292
2644
  class: "accept",
2293
2645
  type: "button",
2294
2646
  onClick: _cache[1] || (_cache[1] = ($event) => emit("accept"))
@@ -2301,12 +2653,13 @@ var Index_default$28 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2301
2653
  type: "button",
2302
2654
  onClick: ($event) => level.value = cell.level
2303
2655
  }, [
2304
- 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)])]),
2305
2657
  createElementVNode("span", _hoisted_16$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(cell.items, ({ count, label, rarity }, index) => {
2306
- return openBlock(), createBlock(Index_default$20, {
2658
+ return openBlock(), createBlock(Index_default$21, {
2307
2659
  key: index,
2308
2660
  class: "item",
2309
2661
  "aria-label": label,
2662
+ "count-size": "21cqh",
2310
2663
  count,
2311
2664
  rarity,
2312
2665
  role: "img"
@@ -2323,7 +2676,7 @@ var Index_default$28 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2323
2676
  ])], 2112);
2324
2677
  };
2325
2678
  }
2326
- }), [["__scopeId", "data-v-9468271c"]]);
2679
+ }), [["__scopeId", "data-v-1b283fc6"]]);
2327
2680
  // src/models/InterfaceIcon.ts
2328
2681
  let InterfaceIcon = /* @__PURE__ */ function(InterfaceIcon) {
2329
2682
  InterfaceIcon["Exit"] = "Exit";
@@ -2359,7 +2712,7 @@ const _hoisted_3$7 = [
2359
2712
  "r",
2360
2713
  "stroke-width"
2361
2714
  ];
2362
- var Index_default$29 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2715
+ var Index_default$30 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2363
2716
  __name: "Index",
2364
2717
  props: {
2365
2718
  icon: {},
@@ -2367,7 +2720,7 @@ var Index_default$29 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2367
2720
  },
2368
2721
  setup(__props) {
2369
2722
  return (_ctx, _cache) => {
2370
- 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, {
2371
2724
  label: __props.label,
2372
2725
  size: 52
2373
2726
  }, {
@@ -2401,7 +2754,7 @@ const _hoisted_2$6 = {
2401
2754
  const _hoisted_3$6 = ["d"];
2402
2755
  const _hoisted_4$6 = ["d"];
2403
2756
  const _hoisted_5$6 = { class: "name" };
2404
- var Index_default$31 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2757
+ var Index_default$32 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2405
2758
  __name: "Index",
2406
2759
  props: { name: {} },
2407
2760
  setup(__props) {
@@ -2430,17 +2783,17 @@ const _hoisted_5$5 = {
2430
2783
  class: "tabs"
2431
2784
  };
2432
2785
  const _hoisted_6$5 = ["aria-pressed", "onClick"];
2433
- const _hoisted_7$5 = { class: "goods" };
2434
- const _hoisted_8$3 = ["aria-pressed", "onClick"];
2786
+ const _hoisted_7$4 = { class: "goods" };
2787
+ const _hoisted_8$2 = ["aria-pressed", "onClick"];
2435
2788
  const _hoisted_9$2 = { class: "good-name" };
2436
2789
  const _hoisted_10$2 = {
2437
2790
  key: 0,
2438
2791
  class: "good-limit"
2439
2792
  };
2440
2793
  const _hoisted_11$2 = ["aria-label"];
2441
- const _hoisted_12$2 = ["aria-label"];
2442
- const _hoisted_13$2 = { class: "detail-good" };
2443
- 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" };
2444
2797
  const _hoisted_15$1 = ["aria-label"];
2445
2798
  const _hoisted_16$1 = {
2446
2799
  key: 0,
@@ -2458,7 +2811,7 @@ const _hoisted_18$1 = [
2458
2811
  const _hoisted_19$1 = { class: "amount-value" };
2459
2812
  const _hoisted_20$1 = ["aria-label"];
2460
2813
  const _hoisted_21$1 = ["disabled"];
2461
- var Index_default$32 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2814
+ var Index_default$33 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2462
2815
  __name: "Index",
2463
2816
  props: /*@__PURE__*/ mergeModels({
2464
2817
  balances: {},
@@ -2497,7 +2850,7 @@ var Index_default$32 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2497
2850
  };
2498
2851
  return (_ctx, _cache) => {
2499
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, [
2500
- createVNode(Index_default$30, {
2853
+ createVNode(Index_default$31, {
2501
2854
  class: "heading",
2502
2855
  role: "heading",
2503
2856
  "aria-level": "1"
@@ -2519,7 +2872,7 @@ var Index_default$32 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2519
2872
  balance.isTopUp ? (openBlock(), createElementBlock("span", _hoisted_4$5, "+")) : createCommentVNode("v-if", true)
2520
2873
  ]);
2521
2874
  }), 128))]),
2522
- createVNode(Index_default$13, {
2875
+ createVNode(Index_default$14, {
2523
2876
  class: "close",
2524
2877
  label: __props.closeLabel,
2525
2878
  size: 56,
@@ -2539,7 +2892,7 @@ var Index_default$32 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2539
2892
  onClick: ($event) => tabId.value = tab.id
2540
2893
  }, toDisplayString(tab.name), 9, _hoisted_6$5)]);
2541
2894
  }), 128))])) : createCommentVNode("v-if", true),
2542
- 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) => {
2543
2896
  return openBlock(), createElementBlock("li", { key: good.id }, [createElementVNode("button", {
2544
2897
  class: "good",
2545
2898
  "aria-pressed": good.id === goodId.value,
@@ -2558,7 +2911,7 @@ var Index_default$32 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2558
2911
  "aria-label": cost.name
2559
2912
  }, null, 8, _hoisted_11$2), createTextVNode(" " + toDisplayString(cost.count), 1)]);
2560
2913
  }), 128))
2561
- ], 8, _hoisted_8$3)]);
2914
+ ], 8, _hoisted_8$2)]);
2562
2915
  }), 128))]),
2563
2916
  pickedGood.value ? (openBlock(), createElementBlock("div", {
2564
2917
  key: 1,
@@ -2567,8 +2920,8 @@ var Index_default$32 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2567
2920
  "aria-modal": "true",
2568
2921
  "aria-label": pickedGood.value.name
2569
2922
  }, [
2570
- createElementVNode("div", _hoisted_13$2, [
2571
- 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),
2572
2925
  (openBlock(true), createElementBlock(Fragment, null, renderList(pickedGood.value.costs, (cost) => {
2573
2926
  return openBlock(), createElementBlock("p", {
2574
2927
  key: cost.name,
@@ -2607,39 +2960,43 @@ var Index_default$32 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2607
2960
  type: "button",
2608
2961
  onClick: _cache[3] || (_cache[3] = ($event) => buy())
2609
2962
  }, toDisplayString(__props.buyLabel), 9, _hoisted_21$1)
2610
- ], 8, _hoisted_12$2)) : createCommentVNode("v-if", true)
2963
+ ], 8, _hoisted_12$1)) : createCommentVNode("v-if", true)
2611
2964
  ])], 2112);
2612
2965
  };
2613
2966
  }
2614
2967
  }), [["__scopeId", "data-v-af7ce84f"]]);
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
+ }({});
2615
2975
  // src/components/WeaponMenu/Index.vue
2616
2976
  const _hoisted_1$5 = ["data-tab"];
2617
- const _hoisted_2$4 = { class: "breadcrumb" };
2618
- const _hoisted_3$4 = { class: "tabs" };
2619
- const _hoisted_4$4 = ["aria-pressed", "onClick"];
2620
- const _hoisted_5$4 = ["aria-label"];
2621
- const _hoisted_6$4 = { class: "refinement" };
2622
- const _hoisted_7$4 = { class: "level" };
2623
- const _hoisted_8$2 = { class: "level-text" };
2624
- const _hoisted_9$1 = { class: "sparks" };
2625
- const _hoisted_10$1 = { class: "experience-text" };
2626
- const _hoisted_11$1 = { class: "experience" };
2627
- const _hoisted_12$1 = ["aria-label"];
2628
- const _hoisted_13$1 = ["disabled"];
2629
- const _hoisted_14$1 = ["aria-label"];
2630
- 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({
2631
2992
  __name: "Index",
2632
2993
  props: /*@__PURE__*/ mergeModels({
2633
2994
  actionLabel: {},
2634
- ascension: {},
2635
2995
  closeLabel: {},
2636
- experienceRatio: {},
2637
- experienceText: {},
2996
+ detailsLabel: {},
2638
2997
  isActionDisabled: { type: Boolean },
2639
- levelText: {},
2998
+ kind: {},
2640
2999
  name: {},
2641
- rarity: {},
2642
- refinement: {},
2643
3000
  tabs: {}
2644
3001
  }, {
2645
3002
  "tab": { required: true },
@@ -2650,63 +3007,50 @@ var Index_default$35 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2650
3007
  const tab = useModel(__props, "tab");
2651
3008
  const emit = __emit;
2652
3009
  return (_ctx, _cache) => {
2653
- 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", {
2654
3011
  class: "weapon-menu",
2655
3012
  "data-tab": tab.value
2656
3013
  }, [
2657
- createElementVNode("p", _hoisted_2$4, toDisplayString(__props.name), 1),
2658
- createElementVNode("ul", _hoisted_3$4, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (menuTab) => {
2659
- 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", {
2660
3021
  class: "tab",
2661
3022
  "aria-pressed": menuTab.tab === tab.value,
2662
3023
  type: "button",
2663
3024
  onClick: ($event) => tab.value = menuTab.tab
2664
- }, 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)]);
2665
3026
  }), 128))]),
2666
- createElementVNode("p", {
2667
- class: "stars",
2668
- "aria-label": `${__props.rarity}`
2669
- }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.rarity, (star) => {
2670
- return openBlock(), createElementBlock("span", {
2671
- key: star,
2672
- class: "star"
2673
- });
2674
- }), 128))], 8, _hoisted_5$4),
2675
- createElementVNode("p", _hoisted_6$4, toDisplayString(__props.refinement), 1),
2676
- 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) => {
2677
- return openBlock(), createElementBlock("span", {
2678
- key: phase,
2679
- class: normalizeClass(["spark", { lit: phase <= __props.ascension }])
2680
- }, null, 2);
2681
- }), 128))])]),
2682
- createElementVNode("p", _hoisted_10$1, toDisplayString(__props.experienceText), 1),
2683
- createElementVNode("span", _hoisted_11$1, [createElementVNode("span", {
2684
- class: "fill",
2685
- style: normalizeStyle({ "--experience-ratio": __props.experienceRatio })
2686
- }, null, 4)]),
2687
- createElementVNode("section", {
2688
- class: "panel",
2689
- "aria-label": __props.actionLabel
2690
- }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 8, _hoisted_12$1),
2691
- createElementVNode("button", {
3027
+ renderSlot(_ctx.$slots, "default", {}, void 0, true),
3028
+ createVNode(Index_default$17, {
2692
3029
  class: "action",
2693
3030
  disabled: __props.isActionDisabled,
2694
- type: "button",
3031
+ kind: tab.value === unref(WeaponMenuTab).Ascend ? unref(GameButtonKind).Gold : unref(GameButtonKind).Pill,
3032
+ tip: "",
2695
3033
  onClick: _cache[0] || (_cache[0] = ($event) => emit("action"))
2696
- }, 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"]),
2697
3041
  createElementVNode("button", {
2698
3042
  class: "close",
2699
3043
  "aria-label": __props.closeLabel,
2700
3044
  type: "button",
2701
3045
  onClick: _cache[1] || (_cache[1] = ($event) => emit("close"))
2702
- }, "↶", 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)
2703
3047
  ], 8, _hoisted_1$5)], 2112);
2704
3048
  };
2705
3049
  }
2706
- }), [["__scopeId", "data-v-f3f59f0e"]]);
3050
+ }), [["__scopeId", "data-v-06b6b58a"]]);
2707
3051
  // src/components/WishPath/Index.vue
2708
3052
  const _hoisted_1$4 = { class: "fate-points" };
2709
- var Index_default$38 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
3053
+ var Index_default$39 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2710
3054
  __name: "Index",
2711
3055
  props: {
2712
3056
  fatePoints: {},
@@ -2727,11 +3071,10 @@ var Index_default$38 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2727
3071
  const _hoisted_1$3 = ["aria-label"];
2728
3072
  const _hoisted_2$3 = { class: "panel" };
2729
3073
  const _hoisted_3$3 = { class: "title" };
2730
- const _hoisted_4$3 = ["aria-label"];
2731
- const _hoisted_5$3 = { class: "pool" };
2732
- const _hoisted_6$3 = { class: "pool-items" };
2733
- const _hoisted_7$3 = ["data-featured"];
2734
- 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({
2735
3078
  __name: "Index",
2736
3079
  props: {
2737
3080
  closeLabel: {},
@@ -2751,25 +3094,25 @@ var Index_default$36 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2751
3094
  "aria-label": __props.title
2752
3095
  }, [createElementVNode("div", _hoisted_2$3, [
2753
3096
  createElementVNode("p", _hoisted_3$3, toDisplayString(__props.title), 1),
2754
- createElementVNode("button", {
3097
+ createVNode(Index_default$10, {
2755
3098
  class: "close",
2756
- type: "button",
2757
- "aria-label": __props.closeLabel,
3099
+ label: __props.closeLabel,
3100
+ mark: unref(CloseButtonMark).Cross,
2758
3101
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
2759
- }, "✕", 8, _hoisted_4$3),
2760
- 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]) => {
2761
3104
  return openBlock(), createElementBlock("li", {
2762
3105
  key: rarity,
2763
3106
  class: "pool-rarity"
2764
- }, [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 }) => {
2765
3108
  return openBlock(), createElementBlock("li", {
2766
3109
  key: id,
2767
3110
  class: "pool-item",
2768
3111
  "data-featured": isFeatured
2769
- }, toDisplayString(name), 9, _hoisted_7$3);
3112
+ }, toDisplayString(name), 9, _hoisted_6$3);
2770
3113
  }), 128))])]);
2771
3114
  }), 128))]),
2772
- __props.pathLabel ? (openBlock(), createBlock(Index_default$38, {
3115
+ __props.pathLabel ? (openBlock(), createBlock(Index_default$39, {
2773
3116
  key: 0,
2774
3117
  "path-label": __props.pathLabel,
2775
3118
  "fate-points": __props.fatePoints
@@ -2777,17 +3120,16 @@ var Index_default$36 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2777
3120
  ])], 8, _hoisted_1$3)], 2112);
2778
3121
  };
2779
3122
  }
2780
- }), [["__scopeId", "data-v-abdcc945"]]);
3123
+ }), [["__scopeId", "data-v-5b167aa9"]]);
2781
3124
  // src/components/WishHistory/Index.vue
2782
3125
  const _hoisted_1$2 = ["aria-label"];
2783
3126
  const _hoisted_2$2 = { class: "panel" };
2784
3127
  const _hoisted_3$2 = { class: "title" };
2785
- const _hoisted_4$2 = ["aria-label"];
2786
- const _hoisted_5$2 = { class: "draws" };
2787
- const _hoisted_6$2 = { class: "time" };
2788
- const _hoisted_7$2 = { class: "banner" };
2789
- const _hoisted_8$1 = { class: "name" };
2790
- 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({
2791
3133
  __name: "Index",
2792
3134
  props: {
2793
3135
  closeLabel: {},
@@ -2804,64 +3146,89 @@ var Index_default$37 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2804
3146
  "aria-label": __props.title
2805
3147
  }, [createElementVNode("div", _hoisted_2$2, [
2806
3148
  createElementVNode("p", _hoisted_3$2, toDisplayString(__props.title), 1),
2807
- createElementVNode("button", {
3149
+ createVNode(Index_default$10, {
2808
3150
  class: "close",
2809
- type: "button",
2810
- "aria-label": __props.closeLabel,
3151
+ label: __props.closeLabel,
3152
+ mark: unref(CloseButtonMark).Cross,
2811
3153
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
2812
- }, "✕", 8, _hoisted_4$2),
2813
- 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) => {
2814
3156
  return openBlock(), createElementBlock("li", {
2815
3157
  key: index,
2816
3158
  class: "draw"
2817
3159
  }, [
2818
- createElementVNode("span", _hoisted_6$2, toDisplayString(time), 1),
2819
- createElementVNode("span", _hoisted_7$2, toDisplayString(bannerLabel), 1),
2820
- createElementVNode("span", _hoisted_8$1, toDisplayString(name), 1),
2821
- 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"])
2822
3164
  ]);
2823
3165
  }), 128))])
2824
3166
  ])], 8, _hoisted_1$2)], 2112);
2825
3167
  };
2826
3168
  }
2827
- }), [["__scopeId", "data-v-86f92bab"]]);
3169
+ }), [["__scopeId", "data-v-b75c8439"]]);
2828
3170
  // src/components/WishScreen/Index.vue
2829
3171
  const _hoisted_1$1 = { class: "wish-screen" };
2830
3172
  const _hoisted_2$1 = { class: "banners" };
2831
- const _hoisted_3$1 = { class: "currencies" };
2832
- const _hoisted_4$1 = { class: "currency-name" };
2833
- 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 = {
2834
3180
  key: 0,
2835
3181
  class: "card"
2836
3182
  };
2837
- const _hoisted_6$1 = { class: "tag" };
2838
- const _hoisted_7$1 = { class: "card-title" };
2839
- const _hoisted_8 = { class: "probability" };
2840
- const _hoisted_9 = { class: "rate-up" };
2841
- const _hoisted_10 = {
3183
+ const _hoisted_10 = { class: "tag" };
3184
+ const _hoisted_11 = {
2842
3185
  key: 0,
2843
- class: "featured"
3186
+ class: "card-title"
3187
+ };
3188
+ const _hoisted_12 = {
3189
+ key: 1,
3190
+ class: "rule",
3191
+ "aria-hidden": "true"
2844
3192
  };
2845
- const _hoisted_11 = { class: "featured-name" };
2846
- const _hoisted_12 = { class: "featured-title" };
2847
- const _hoisted_13 = { class: "links" };
3193
+ const _hoisted_13 = { class: "probability" };
2848
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 = {
2849
3216
  key: 2,
2850
3217
  class: "sets"
2851
3218
  };
2852
- const _hoisted_15 = { class: "set-label" };
2853
- const _hoisted_16 = { class: "cost" };
2854
- const _hoisted_17 = { class: "set-label" };
2855
- const _hoisted_18 = { class: "cost" };
2856
- const _hoisted_19 = { class: "result-list" };
2857
- const _hoisted_20 = ["data-capturing-radiance", "data-rarity"];
2858
- const _hoisted_21 = { class: "result-name" };
2859
- 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 = {
2860
3227
  key: 0,
2861
3228
  class: "result-stella-fortuna"
2862
3229
  };
2863
- const _hoisted_23 = { class: "result-return" };
2864
- 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({
2865
3232
  __name: "Index",
2866
3233
  props: /*@__PURE__*/ mergeModels({
2867
3234
  backLabel: {},
@@ -2870,6 +3237,7 @@ var Index_default$39 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2870
3237
  currencies: {},
2871
3238
  detailsLabel: {},
2872
3239
  fatePoints: {},
3240
+ fiveStarNotice: {},
2873
3241
  history: {},
2874
3242
  historyLabel: {},
2875
3243
  pathLabel: {},
@@ -2879,10 +3247,12 @@ var Index_default$39 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2879
3247
  results: {},
2880
3248
  sets: {},
2881
3249
  shopLabel: {},
3250
+ timeRemainingLabel: {},
3251
+ timeRemainingText: {},
2882
3252
  title: {},
2883
3253
  trialLabel: {}
2884
3254
  }, {
2885
- "bannerId": {},
3255
+ "bannerId": { default: "" },
2886
3256
  "bannerIdModifiers": {}
2887
3257
  }),
2888
3258
  emits: /*@__PURE__*/ mergeModels([
@@ -2903,9 +3273,16 @@ var Index_default$39 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2903
3273
  const openBanner = __props.banners.find(({ id }) => id === bannerId.value);
2904
3274
  return openBanner && getLabelText(openBanner.label);
2905
3275
  });
3276
+ const topUpCurrencies = computed(() => __props.currencies.filter(({ isTopUp }) => isTopUp));
3277
+ const bottomCurrencies = computed(() => __props.currencies.filter(({ isTopUp }) => !isTopUp));
2906
3278
  return (_ctx, _cache) => {
2907
- 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, [
2908
- 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",
2909
3286
  role: "heading",
2910
3287
  "aria-level": "1"
2911
3288
  }, {
@@ -2913,11 +3290,12 @@ var Index_default$39 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2913
3290
  _: 1
2914
3291
  }),
2915
3292
  createElementVNode("ul", _hoisted_2$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.banners, (banner) => {
2916
- return openBlock(), createElementBlock("li", { key: banner.id }, [createVNode(Index_default$16, {
3293
+ return openBlock(), createElementBlock("li", { key: banner.id }, [createVNode(Index_default$17, {
2917
3294
  class: "banner",
2918
3295
  "aria-label": getLabelText(banner.label),
2919
3296
  "aria-pressed": banner.id === bannerId.value,
2920
3297
  kind: unref(GameButtonKind).Row,
3298
+ tip: "",
2921
3299
  onClick: ($event) => bannerId.value = banner.id
2922
3300
  }, null, 8, [
2923
3301
  "aria-label",
@@ -2926,86 +3304,116 @@ var Index_default$39 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
2926
3304
  "onClick"
2927
3305
  ])]);
2928
3306
  }), 128))]),
2929
- 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 }) => {
2930
3308
  return openBlock(), createElementBlock("li", {
2931
3309
  key: id,
2932
3310
  class: "currency"
2933
- }, [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
+ ]);
2934
3323
  }), 128))]),
2935
- createVNode(Index_default$16, {
2936
- class: "back",
2937
- "aria-label": __props.backLabel,
2938
- 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,
2939
3338
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
2940
- }, {
2941
- default: withCtx(() => [..._cache[8] || (_cache[8] = [createTextVNode("✕", -1)])]),
2942
- _: 1
2943
- }, 8, ["aria-label", "kind"]),
2944
- __props.bannerCard && bannerLabelText.value ? (openBlock(), createElementBlock("section", _hoisted_5$1, [
2945
- createElementVNode("p", _hoisted_6$1, toDisplayString(bannerLabelText.value), 1),
2946
- 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) => {
2947
3343
  return openBlock(), createElementBlock("span", {
2948
3344
  key: index,
2949
3345
  style: normalizeStyle({ color })
2950
3346
  }, toDisplayString(text), 5);
2951
- }), 128))]),
2952
- createElementVNode("p", _hoisted_8, toDisplayString(__props.probabilityLabel), 1),
2953
- createElementVNode("p", _hoisted_9, toDisplayString(__props.bannerCard.rateUp), 1),
2954
- featuredCell.value ? (openBlock(), createElementBlock("div", _hoisted_10, [
2955
- createElementVNode("p", _hoisted_11, toDisplayString(featuredCell.value.name), 1),
2956
- createElementVNode("p", null, [createVNode(Index_default$27, { rarity: featuredCell.value.rarity }, null, 8, ["rarity"])]),
2957
- 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)
2958
3361
  ])) : createCommentVNode("v-if", true)
2959
3362
  ])) : createCommentVNode("v-if", true),
2960
- createElementVNode("div", _hoisted_13, [
2961
- createVNode(Index_default$16, {
3363
+ createElementVNode("div", _hoisted_22, [
3364
+ createVNode(Index_default$17, {
2962
3365
  class: "link",
2963
- kind: unref(GameButtonKind).Reply
3366
+ kind: unref(GameButtonKind).Reply,
3367
+ tip: ""
2964
3368
  }, {
2965
3369
  default: withCtx(() => [createTextVNode(toDisplayString(__props.shopLabel), 1)]),
2966
3370
  _: 1
2967
3371
  }, 8, ["kind"]),
2968
- __props.trialLabel ? (openBlock(), createBlock(Index_default$16, {
3372
+ __props.trialLabel ? (openBlock(), createBlock(Index_default$17, {
2969
3373
  key: 0,
2970
3374
  class: "link trial",
2971
3375
  kind: unref(GameButtonKind).Reply,
3376
+ tip: "",
2972
3377
  onClick: _cache[1] || (_cache[1] = ($event) => emit("trial"))
2973
3378
  }, {
2974
3379
  default: withCtx(() => [createTextVNode(toDisplayString(__props.trialLabel), 1)]),
2975
3380
  _: 1
2976
3381
  }, 8, ["kind"])) : createCommentVNode("v-if", true),
2977
- createVNode(Index_default$16, {
3382
+ createVNode(Index_default$17, {
2978
3383
  class: "link",
2979
3384
  kind: unref(GameButtonKind).Reply,
3385
+ tip: "",
2980
3386
  onClick: _cache[2] || (_cache[2] = ($event) => isDetailsOpen.value = true)
2981
3387
  }, {
2982
3388
  default: withCtx(() => [createTextVNode(toDisplayString(__props.detailsLabel), 1)]),
2983
3389
  _: 1
2984
3390
  }, 8, ["kind"]),
2985
- createVNode(Index_default$16, {
3391
+ createVNode(Index_default$17, {
2986
3392
  class: "link",
2987
3393
  kind: unref(GameButtonKind).Reply,
3394
+ tip: "",
2988
3395
  onClick: _cache[3] || (_cache[3] = ($event) => isHistoryOpen.value = true)
2989
3396
  }, {
2990
3397
  default: withCtx(() => [createTextVNode(toDisplayString(__props.historyLabel), 1)]),
2991
3398
  _: 1
2992
3399
  }, 8, ["kind"])
2993
3400
  ]),
2994
- __props.pathLabel ? (openBlock(), createBlock(Index_default$38, {
3401
+ __props.pathLabel ? (openBlock(), createBlock(Index_default$39, {
2995
3402
  key: 1,
2996
3403
  class: "path",
2997
3404
  "path-label": __props.pathLabel,
2998
3405
  "fate-points": __props.fatePoints
2999
3406
  }, null, 8, ["path-label", "fate-points"])) : createCommentVNode("v-if", true),
3000
- bannerId.value ? (openBlock(), createElementBlock("div", _hoisted_14, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.sets, ({ cost, count, isAffordable, label }) => {
3001
- 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, {
3002
3409
  key: count,
3003
3410
  class: "set",
3004
3411
  disabled: !isAffordable,
3005
3412
  kind: unref(GameButtonKind).Pill,
3413
+ tip: "",
3006
3414
  onClick: ($event) => emit("wish", count)
3007
3415
  }, {
3008
- 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)]),
3009
3417
  _: 2
3010
3418
  }, 1032, [
3011
3419
  "disabled",
@@ -3013,18 +3421,19 @@ var Index_default$39 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
3013
3421
  "onClick"
3014
3422
  ]);
3015
3423
  }), 128)), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.purchases, ({ cost, isAffordable, label }) => {
3016
- return openBlock(), createBlock(Index_default$16, {
3424
+ return openBlock(), createBlock(Index_default$17, {
3017
3425
  key: label,
3018
3426
  class: "set",
3019
3427
  disabled: !isAffordable,
3020
3428
  kind: unref(GameButtonKind).Pill,
3429
+ tip: "",
3021
3430
  onClick: _cache[4] || (_cache[4] = ($event) => emit("buy"))
3022
3431
  }, {
3023
- 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)]),
3024
3433
  _: 2
3025
3434
  }, 1032, ["disabled", "kind"]);
3026
3435
  }), 128))])) : createCommentVNode("v-if", true),
3027
- isDetailsOpen.value ? (openBlock(), createBlock(Index_default$36, {
3436
+ isDetailsOpen.value ? (openBlock(), createBlock(Index_default$37, {
3028
3437
  key: 3,
3029
3438
  "close-label": __props.backLabel,
3030
3439
  "fate-points": __props.fatePoints,
@@ -3039,7 +3448,7 @@ var Index_default$39 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
3039
3448
  "pool",
3040
3449
  "title"
3041
3450
  ])) : createCommentVNode("v-if", true),
3042
- isHistoryOpen.value ? (openBlock(), createBlock(Index_default$37, {
3451
+ isHistoryOpen.value ? (openBlock(), createBlock(Index_default$38, {
3043
3452
  key: 4,
3044
3453
  "close-label": __props.backLabel,
3045
3454
  history: __props.history,
@@ -3054,23 +3463,23 @@ var Index_default$39 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
3054
3463
  key: 5,
3055
3464
  class: "results",
3056
3465
  onClick: _cache[7] || (_cache[7] = ($event) => emit("dismiss"))
3057
- }, [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) => {
3058
3467
  return openBlock(), createElementBlock("li", {
3059
3468
  key: index,
3060
3469
  class: "result",
3061
3470
  "data-capturing-radiance": isCapturingRadiance,
3062
3471
  "data-rarity": rarity
3063
3472
  }, [
3064
- createElementVNode("span", _hoisted_21, toDisplayString(name), 1),
3065
- createVNode(Index_default$27, { rarity }, null, 8, ["rarity"]),
3066
- stellaFortuna ? (openBlock(), createElementBlock("span", _hoisted_22, toDisplayString(stellaFortuna), 1)) : createCommentVNode("v-if", true),
3067
- createElementVNode("span", _hoisted_23, toDisplayString(wishReturn), 1)
3068
- ], 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);
3069
3478
  }), 128))])])) : createCommentVNode("v-if", true)
3070
3479
  ])], 2112);
3071
3480
  };
3072
3481
  }
3073
- }), [["__scopeId", "data-v-669dc4ab"]]);
3482
+ }), [["__scopeId", "data-v-53480dd4"]]);
3074
3483
  // src/models/WorshipLevelState.ts
3075
3484
  let WorshipLevelState = /* @__PURE__ */ function(WorshipLevelState) {
3076
3485
  WorshipLevelState["Claimable"] = "claimable";
@@ -3086,10 +3495,11 @@ const _hoisted_4 = ["disabled"];
3086
3495
  const _hoisted_5 = { class: "level" };
3087
3496
  const _hoisted_6 = { class: "oculi" };
3088
3497
  const _hoisted_7 = { class: "rewards" };
3089
- var Index_default$40 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
3498
+ var Index_default$41 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
3090
3499
  __name: "Index",
3091
3500
  props: {
3092
3501
  blessingTitle: {},
3502
+ closeLabel: {},
3093
3503
  heldCount: {},
3094
3504
  levels: {},
3095
3505
  title: {}
@@ -3106,11 +3516,12 @@ var Index_default$40 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
3106
3516
  return (_ctx, _cache) => {
3107
3517
  return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The layout is provisional until the recording of the Worship screen shows it "), createElementVNode("div", _hoisted_1, [
3108
3518
  createElementVNode("h1", _hoisted_2, toDisplayString(__props.title), 1),
3109
- createElementVNode("button", {
3519
+ createVNode(Index_default$10, {
3110
3520
  class: "close",
3111
- type: "button",
3521
+ label: __props.closeLabel,
3522
+ mark: unref(CloseButtonMark).Cross,
3112
3523
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
3113
- }, "×"),
3524
+ }, null, 8, ["label", "mark"]),
3114
3525
  createElementVNode("button", {
3115
3526
  class: "blessing",
3116
3527
  type: "button",
@@ -3140,7 +3551,7 @@ var Index_default$40 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
3140
3551
  ])], 2112);
3141
3552
  };
3142
3553
  }
3143
- }), [["__scopeId", "data-v-529b74f5"]]);
3554
+ }), [["__scopeId", "data-v-cf49e71d"]]);
3144
3555
  // src/models/InteractionKind.ts
3145
3556
  let InteractionKind = /* @__PURE__ */ function(InteractionKind) {
3146
3557
  InteractionKind["Activate"] = "Activate";
@@ -3168,13 +3579,6 @@ let InterfaceClipProperty = /* @__PURE__ */ function(InterfaceClipProperty) {
3168
3579
  return InterfaceClipProperty;
3169
3580
  }({});
3170
3581
  const InterfaceClipProperties = Object.values(InterfaceClipProperty);
3171
- // src/models/WeaponMenuTab.ts
3172
- let WeaponMenuTab = /* @__PURE__ */ function(WeaponMenuTab) {
3173
- WeaponMenuTab["Ascend"] = "Ascend";
3174
- WeaponMenuTab["Enhance"] = "Enhance";
3175
- WeaponMenuTab["Refine"] = "Refine";
3176
- return WeaponMenuTab;
3177
- }({});
3178
3582
  // src/models/reference/GameSourceKind.ts
3179
3583
  let GameSourceKind = /* @__PURE__ */ function(GameSourceKind) {
3180
3584
  GameSourceKind["AnimationClip"] = "AnimationClip";
@@ -3203,6 +3607,64 @@ let InvestigationOutcome = /* @__PURE__ */ function(InvestigationOutcome) {
3203
3607
  InvestigationOutcome["Superseded"] = "Superseded";
3204
3608
  return InvestigationOutcome;
3205
3609
  }({});
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
+ };
3206
3668
  // src/services/playInterfaceClip.ts
3207
3669
  const InterfaceClipPropertyKeyframeMap = {
3208
3670
  ["opacity"]: (value) => ({ opacity: value }),
@@ -3222,6 +3684,22 @@ const playInterfaceClip = (root, { durationMs, tracks }) => tracks.flatMap(({ ke
3222
3684
  fill: "forwards"
3223
3685
  })];
3224
3686
  });
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
+ };
3225
3703
  // src/services/toInterfaceClip.ts
3226
3704
  const INTERFACE_CLIP_PROPERTY_NAMES = InterfaceClipProperties;
3227
3705
  const checkIsProperty = (property) => INTERFACE_CLIP_PROPERTY_NAMES.includes(property);
@@ -3233,4 +3711,4 @@ const toInterfaceClip = ({ durationMs, tracks }) => ({
3233
3711
  target
3234
3712
  }] : [])
3235
3713
  });
3236
- 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 };