genshin-interface 4.1.2 → 4.3.1

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,5 +1,302 @@
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";
1
2
  import { i as ItemCategory, n as BannerKinds, r as ItemCategories, t as BannerKind } from "./save-B6F3omOa.js";
2
3
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeModels, nextTick, normalizeClass, normalizeStyle, openBlock, ref, renderList, renderSlot, toDisplayString, unref, useCssVars, useModel, useTemplateRef, vModelSelect, vModelText, watch, withCtx, withDirectives, withModifiers } from "vue";
4
+ //#region \0/plugin-vue/export-helper
5
+ var export_helper_default = (sfc, props) => {
6
+ const target = sfc.__vccOpts || sfc;
7
+ for (const [key, val] of props) target[key] = val;
8
+ return target;
9
+ };
10
+ //#endregion
11
+ //#region src/components/GameButton/Index.vue
12
+ const _hoisted_1$40 = ["data-kind"];
13
+ const _hoisted_2$32 = {
14
+ key: 0,
15
+ class: "tip"
16
+ };
17
+ var Index_default$16 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
18
+ __name: "Index",
19
+ props: {
20
+ kind: {},
21
+ tip: {}
22
+ },
23
+ setup(__props, { expose: __expose }) {
24
+ useCssVars((_ctx) => ({
25
+ "v8de8a9a0": restDuration,
26
+ "v4f7d0248": hoverDuration,
27
+ "v5ff883e5": unref(GAME_GOLD),
28
+ "c23e4506": unref(GAME_CREAM),
29
+ "v7defe8be": unref(GAME_INK),
30
+ "v78a9c41c": unref(GAME_ROW_HOVER),
31
+ "v77c60e0e": unref(GAME_ROW_PRESS),
32
+ "v7a0541ee": pillRestDuration,
33
+ "v307a3362": pressDuration,
34
+ "v0673242b": unref(GAME_SMOOTHSTEP_EASING),
35
+ "v40afb3ee": unref(GAME_REPLY_REST),
36
+ "v5683177c": unref(GAME_REPLY_HOVER),
37
+ "a79a636e": unref(GAME_REPLY_HOVER_INK)
38
+ }));
39
+ const button = useTemplateRef("button");
40
+ const hoverDuration = `50ms`;
41
+ const restDuration = `100ms`;
42
+ const pillRestDuration = `200ms`;
43
+ const pressDuration = `167ms`;
44
+ __expose({ focus: () => button.value?.focus() });
45
+ return (_ctx, _cache) => {
46
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" One of the game's buttons, placed by its parent, in its kind's look for each state: at rest, hovered (or focused\n From the keyboard, which the game draws as a hover), pressed and disabled. The look is the button's own, and its content\n Takes the colour it sets "), createElementVNode("button", {
47
+ ref_key: "button",
48
+ ref: button,
49
+ class: "game-button",
50
+ "data-kind": __props.kind,
51
+ type: "button"
52
+ }, [renderSlot(_ctx.$slots, "default"), __props.tip ? (openBlock(), createElementBlock("span", _hoisted_2$32, toDisplayString(__props.tip), 1)) : createCommentVNode("v-if", true)], 8, _hoisted_1$40)], 2112);
53
+ };
54
+ }
55
+ }), [["__scopeId", "data-v-cab29bfa"]]);
56
+ //#endregion
57
+ //#region src/components/PickerShell/Index.vue
58
+ const _hoisted_1$39 = ["aria-label"];
59
+ const _hoisted_2$31 = { class: "title" };
60
+ var Index_default$24 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
61
+ __name: "Index",
62
+ props: { title: {} },
63
+ setup(__props) {
64
+ return (_ctx, _cache) => {
65
+ return openBlock(), createElementBlock("div", {
66
+ class: "picker-shell",
67
+ role: "dialog",
68
+ "aria-modal": "true",
69
+ "aria-label": __props.title
70
+ }, [createElementVNode("p", _hoisted_2$31, toDisplayString(__props.title), 1), renderSlot(_ctx.$slots, "default", {}, void 0, true)], 8, _hoisted_1$39);
71
+ };
72
+ }
73
+ }), [["__scopeId", "data-v-6f193621"]]);
74
+ //#endregion
75
+ //#region src/models/GameButtonKind.ts
76
+ let GameButtonKind = /* @__PURE__ */ function(GameButtonKind) {
77
+ GameButtonKind["Disc"] = "Disc";
78
+ GameButtonKind["Pill"] = "Pill";
79
+ GameButtonKind["Plain"] = "Plain";
80
+ GameButtonKind["Reply"] = "Reply";
81
+ GameButtonKind["Row"] = "Row";
82
+ return GameButtonKind;
83
+ }({});
84
+ //#endregion
85
+ //#region src/components/ArtifactEnhancePicker/Index.vue
86
+ const _hoisted_1$38 = { class: "summary" };
87
+ const _hoisted_2$30 = { class: "level" };
88
+ const _hoisted_3$28 = { class: "mora" };
89
+ const _hoisted_4$24 = {
90
+ key: 0,
91
+ class: "notice"
92
+ };
93
+ const _hoisted_5$22 = { class: "fodders" };
94
+ const _hoisted_6$21 = [
95
+ "aria-pressed",
96
+ "data-rarity",
97
+ "onClick"
98
+ ];
99
+ const _hoisted_7$21 = { class: "name" };
100
+ const _hoisted_8$16 = { class: "caption" };
101
+ const _hoisted_9$14 = { class: "materials" };
102
+ const _hoisted_10$13 = { class: "name" };
103
+ const _hoisted_11$9 = { class: "count" };
104
+ const _hoisted_12$9 = { class: "actions" };
105
+ var Index_default = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
106
+ __name: "Index",
107
+ props: {
108
+ autoAddLabel: {},
109
+ cancelLabel: {},
110
+ confirmLabel: {},
111
+ fodders: {},
112
+ isConfirmDisabled: { type: Boolean },
113
+ levelLabel: {},
114
+ materials: {},
115
+ moraCost: {},
116
+ moraLabel: {},
117
+ notice: {},
118
+ title: {}
119
+ },
120
+ emits: [
121
+ "autoAdd",
122
+ "cancel",
123
+ "confirm",
124
+ "fodder",
125
+ "material"
126
+ ],
127
+ setup(__props, { emit: __emit }) {
128
+ const emit = __emit;
129
+ return (_ctx, _cache) => {
130
+ return openBlock(), createBlock(Index_default$24, {
131
+ class: "enhance-picker",
132
+ title: __props.title
133
+ }, {
134
+ default: withCtx(() => [
135
+ createElementVNode("p", _hoisted_1$38, [createElementVNode("span", _hoisted_2$30, toDisplayString(__props.levelLabel), 1), createElementVNode("span", _hoisted_3$28, toDisplayString(__props.moraLabel) + " " + toDisplayString(__props.moraCost), 1)]),
136
+ __props.notice ? (openBlock(), createElementBlock("p", _hoisted_4$24, toDisplayString(__props.notice), 1)) : createCommentVNode("v-if", true),
137
+ createElementVNode("ul", _hoisted_5$22, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.fodders, ({ caption, id, isSelected, name, rarity }) => {
138
+ return openBlock(), createElementBlock("li", { key: id }, [createElementVNode("button", {
139
+ class: "option",
140
+ "aria-pressed": isSelected,
141
+ "data-rarity": rarity,
142
+ type: "button",
143
+ onClick: ($event) => emit("fodder", id)
144
+ }, [createElementVNode("span", _hoisted_7$21, toDisplayString(name), 1), createElementVNode("span", _hoisted_8$16, toDisplayString(caption), 1)], 8, _hoisted_6$21)]);
145
+ }), 128))]),
146
+ createElementVNode("ul", _hoisted_9$14, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.materials, ({ count, id, name, selectedCount }) => {
147
+ return openBlock(), createElementBlock("li", {
148
+ key: id,
149
+ class: "material"
150
+ }, [
151
+ createElementVNode("span", _hoisted_10$13, toDisplayString(name), 1),
152
+ createElementVNode("span", _hoisted_11$9, toDisplayString(selectedCount) + "/" + toDisplayString(count), 1),
153
+ createVNode(Index_default$16, {
154
+ disabled: selectedCount <= 0,
155
+ kind: unref(GameButtonKind).Pill,
156
+ onClick: ($event) => emit("material", id, -1)
157
+ }, {
158
+ default: withCtx(() => [..._cache[3] || (_cache[3] = [createTextVNode(" - ", -1)])]),
159
+ _: 1
160
+ }, 8, [
161
+ "disabled",
162
+ "kind",
163
+ "onClick"
164
+ ]),
165
+ createVNode(Index_default$16, {
166
+ disabled: selectedCount >= count,
167
+ kind: unref(GameButtonKind).Pill,
168
+ onClick: ($event) => emit("material", id, 1)
169
+ }, {
170
+ default: withCtx(() => [..._cache[4] || (_cache[4] = [createTextVNode(" + ", -1)])]),
171
+ _: 1
172
+ }, 8, [
173
+ "disabled",
174
+ "kind",
175
+ "onClick"
176
+ ])
177
+ ]);
178
+ }), 128))]),
179
+ createElementVNode("div", _hoisted_12$9, [
180
+ createVNode(Index_default$16, {
181
+ kind: unref(GameButtonKind).Pill,
182
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("autoAdd"))
183
+ }, {
184
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.autoAddLabel), 1)]),
185
+ _: 1
186
+ }, 8, ["kind"]),
187
+ createVNode(Index_default$16, {
188
+ kind: unref(GameButtonKind).Pill,
189
+ onClick: _cache[1] || (_cache[1] = ($event) => emit("cancel"))
190
+ }, {
191
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.cancelLabel), 1)]),
192
+ _: 1
193
+ }, 8, ["kind"]),
194
+ createVNode(Index_default$16, {
195
+ disabled: __props.isConfirmDisabled,
196
+ kind: unref(GameButtonKind).Pill,
197
+ onClick: _cache[2] || (_cache[2] = ($event) => emit("confirm"))
198
+ }, {
199
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.confirmLabel), 1)]),
200
+ _: 1
201
+ }, 8, ["disabled", "kind"])
202
+ ])
203
+ ]),
204
+ _: 1
205
+ }, 8, ["title"]);
206
+ };
207
+ }
208
+ }), [["__scopeId", "data-v-7c672712"]]);
209
+ //#endregion
210
+ //#region src/components/ArtifactPicker/Index.vue
211
+ const _hoisted_1$37 = { class: "options" };
212
+ const _hoisted_2$29 = ["data-rarity", "onClick"];
213
+ const _hoisted_3$27 = { class: "name" };
214
+ const _hoisted_4$23 = { class: "caption" };
215
+ var Index_default$1 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
216
+ __name: "Index",
217
+ props: {
218
+ closeLabel: {},
219
+ options: {},
220
+ title: {}
221
+ },
222
+ emits: ["choose", "close"],
223
+ setup(__props, { emit: __emit }) {
224
+ const emit = __emit;
225
+ return (_ctx, _cache) => {
226
+ return openBlock(), createBlock(Index_default$24, {
227
+ class: "artifact-picker",
228
+ title: __props.title
229
+ }, {
230
+ default: withCtx(() => [createElementVNode("ul", _hoisted_1$37, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, ({ caption, id, name, rarity }) => {
231
+ return openBlock(), createElementBlock("li", { key: id }, [createElementVNode("button", {
232
+ class: "option",
233
+ "data-rarity": rarity,
234
+ type: "button",
235
+ onClick: ($event) => emit("choose", id)
236
+ }, [createElementVNode("span", _hoisted_3$27, toDisplayString(name), 1), createElementVNode("span", _hoisted_4$23, toDisplayString(caption), 1)], 8, _hoisted_2$29)]);
237
+ }), 128))]), createVNode(Index_default$16, {
238
+ class: "close",
239
+ kind: unref(GameButtonKind).Pill,
240
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
241
+ }, {
242
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.closeLabel), 1)]),
243
+ _: 1
244
+ }, 8, ["kind"])]),
245
+ _: 1
246
+ }, 8, ["title"]);
247
+ };
248
+ }
249
+ }), [["__scopeId", "data-v-bf242b3e"]]);
250
+ //#endregion
251
+ //#region src/components/BlessingScreen/Index.vue
252
+ const _hoisted_1$36 = { class: "blessing-screen" };
253
+ const _hoisted_2$28 = { class: "title" };
254
+ const _hoisted_3$26 = { class: "pool" };
255
+ const _hoisted_4$22 = { class: "members" };
256
+ const _hoisted_5$21 = ["onClick"];
257
+ const _hoisted_6$20 = { class: "name" };
258
+ const _hoisted_7$20 = { class: "health" };
259
+ var Index_default$2 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
260
+ __name: "Index",
261
+ props: {
262
+ members: {},
263
+ poolAmount: {},
264
+ poolMaximum: {},
265
+ title: {},
266
+ worshipTitle: {}
267
+ },
268
+ emits: [
269
+ "close",
270
+ "heal",
271
+ "worship"
272
+ ],
273
+ setup(__props, { emit: __emit }) {
274
+ const emit = __emit;
275
+ return (_ctx, _cache) => {
276
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The layout is provisional until the recording of the Blessing screen shows it "), createElementVNode("div", _hoisted_1$36, [
277
+ createElementVNode("h1", _hoisted_2$28, toDisplayString(__props.title), 1),
278
+ createElementVNode("button", {
279
+ class: "close",
280
+ type: "button",
281
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
282
+ }, "×"),
283
+ createElementVNode("button", {
284
+ class: "worship",
285
+ type: "button",
286
+ onClick: _cache[1] || (_cache[1] = ($event) => emit("worship"))
287
+ }, toDisplayString(__props.worshipTitle), 1),
288
+ createElementVNode("p", _hoisted_3$26, toDisplayString(Math.floor(__props.poolAmount)) + " / " + toDisplayString(__props.poolMaximum), 1),
289
+ createElementVNode("ul", _hoisted_4$22, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.members, ({ healthShare, id, name }) => {
290
+ return openBlock(), createElementBlock("li", { key: id }, [createElementVNode("button", {
291
+ type: "button",
292
+ onClick: ($event) => emit("heal", id)
293
+ }, [createElementVNode("span", _hoisted_6$20, toDisplayString(name), 1), createElementVNode("span", _hoisted_7$20, toDisplayString(Math.round(healthShare * 100)) + "%", 1)], 8, _hoisted_5$21)]);
294
+ }), 128))])
295
+ ])], 2112);
296
+ };
297
+ }
298
+ }), [["__scopeId", "data-v-4c1e529d"]]);
299
+ //#endregion
3
300
  //#region src/models/CharacterMenuTab.ts
4
301
  let CharacterMenuTab = /* @__PURE__ */ function(CharacterMenuTab) {
5
302
  CharacterMenuTab["Artifacts"] = "Artifacts";
@@ -19,26 +316,27 @@ const CharacterMenuTabs = [
19
316
  "Profile"
20
317
  ];
21
318
  //#endregion
22
- //#region \0/plugin-vue/export-helper
23
- var export_helper_default = (sfc, props) => {
24
- const target = sfc.__vccOpts || sfc;
25
- for (const [key, val] of props) target[key] = val;
26
- return target;
27
- };
28
- //#endregion
29
319
  //#region src/components/CharacterMenu/Index.vue
30
- const _hoisted_1$25 = ["data-tab"];
31
- const _hoisted_2$21 = { class: "characters" };
32
- const _hoisted_3$16 = ["aria-pressed", "onClick"];
33
- const _hoisted_4$13 = { class: "breadcrumb" };
34
- const _hoisted_5$11 = { class: "tabs" };
35
- const _hoisted_6$10 = ["aria-pressed", "onClick"];
36
- const _hoisted_7$10 = ["aria-label"];
37
- const _hoisted_8$9 = ["aria-label", "onClick"];
38
- var Index_default = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
320
+ const _hoisted_1$35 = ["data-tab"];
321
+ const _hoisted_2$27 = { class: "characters" };
322
+ const _hoisted_3$25 = ["aria-pressed", "onClick"];
323
+ const _hoisted_4$21 = { class: "breadcrumb" };
324
+ const _hoisted_5$20 = {
325
+ key: 0,
326
+ class: "element",
327
+ viewBox: "0 0 1600 1600",
328
+ "aria-hidden": "true"
329
+ };
330
+ const _hoisted_6$19 = ["d"];
331
+ const _hoisted_7$19 = { class: "tabs" };
332
+ const _hoisted_8$15 = ["aria-pressed", "onClick"];
333
+ const _hoisted_9$13 = ["aria-label"];
334
+ const _hoisted_10$12 = ["aria-label", "onClick"];
335
+ var Index_default$3 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
39
336
  __name: "Index",
40
337
  props: /*@__PURE__*/ mergeModels({
41
338
  characters: {},
339
+ elementMarkPath: {},
42
340
  tabLabels: {}
43
341
  }, {
44
342
  "characterId": { required: true },
@@ -68,33 +366,34 @@ var Index_default = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineCo
68
366
  "data-tab": tab.value
69
367
  }, [
70
368
  _cache[1] || (_cache[1] = createElementVNode("div", { class: "head" }, null, -1)),
71
- createElementVNode("ul", _hoisted_2$21, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.characters, ({ id, name }) => {
369
+ createElementVNode("ul", _hoisted_2$27, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.characters, ({ id, name }) => {
72
370
  return openBlock(), createElementBlock("li", { key: id }, [createElementVNode("button", {
73
371
  class: "character",
74
372
  "aria-pressed": id === characterId.value,
75
373
  type: "button",
76
374
  onClick: ($event) => characterId.value = id
77
- }, toDisplayString(name), 9, _hoisted_3$16)]);
375
+ }, toDisplayString(name), 9, _hoisted_3$25)]);
78
376
  }), 128))]),
79
- createElementVNode("p", _hoisted_4$13, toDisplayString(characterName.value), 1),
377
+ createElementVNode("p", _hoisted_4$21, toDisplayString(characterName.value), 1),
378
+ __props.elementMarkPath ? (openBlock(), createElementBlock("svg", _hoisted_5$20, [createElementVNode("path", { d: __props.elementMarkPath }, null, 8, _hoisted_6$19)])) : createCommentVNode("v-if", true),
80
379
  createCommentVNode(" The keys stepping through the tabs, W up and S down, beside the first "),
81
380
  _cache[2] || (_cache[2] = createElementVNode("div", {
82
381
  class: "tab-keys",
83
382
  "aria-hidden": "true"
84
383
  }, [createElementVNode("kbd", { class: "key" }, "W"), createElementVNode("kbd", { class: "key" }, "S")], -1)),
85
- createElementVNode("ul", _hoisted_5$11, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(CharacterMenuTabs), (menuTab) => {
384
+ createElementVNode("ul", _hoisted_7$19, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(CharacterMenuTabs), (menuTab) => {
86
385
  return openBlock(), createElementBlock("li", { key: menuTab }, [createElementVNode("button", {
87
386
  class: "tab",
88
387
  "aria-pressed": menuTab === tab.value,
89
388
  type: "button",
90
389
  onClick: ($event) => tab.value = menuTab
91
- }, toDisplayString(__props.tabLabels[menuTab]), 9, _hoisted_6$10)]);
390
+ }, toDisplayString(__props.tabLabels[menuTab]), 9, _hoisted_8$15)]);
92
391
  }), 128))]),
93
392
  createElementVNode("section", {
94
393
  class: "panel",
95
394
  "aria-label": __props.tabLabels[tab.value]
96
- }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 8, _hoisted_7$10),
97
- __props.characters.length > 1 ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(steps.value, ({ character, className }) => {
395
+ }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 8, _hoisted_9$13),
396
+ __props.characters.length > 1 ? (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(steps.value, ({ character, className }) => {
98
397
  return openBlock(), createElementBlock("button", {
99
398
  key: className,
100
399
  class: normalizeClass(["step", className]),
@@ -117,154 +416,217 @@ var Index_default = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineCo
117
416
  class: "mark",
118
417
  d: "M31 25.5 L33 27.5 L31 29.5 L29 27.5 Z"
119
418
  })
120
- ], -1))], 10, _hoisted_8$9);
419
+ ], -1))], 10, _hoisted_10$12);
121
420
  }), 128)) : createCommentVNode("v-if", true)
122
- ], 8, _hoisted_1$25)], 2112);
421
+ ], 8, _hoisted_1$35)], 2112);
123
422
  };
124
423
  }
125
- }), [["__scopeId", "data-v-6efaddd5"]]);
424
+ }), [["__scopeId", "data-v-86092611"]]);
126
425
  //#endregion
127
426
  //#region src/components/CharacterMenuButtons/Index.vue
128
- const _sfc_main$25 = {};
129
- const _hoisted_1$24 = { class: "buttons" };
130
- function _sfc_render$2(_ctx, _cache) {
131
- 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$24, [..._cache[0] || (_cache[0] = [createElementVNode("span", { class: "button" }, null, -1), createElementVNode("span", { class: "button" }, null, -1)])])], 2112);
427
+ const _hoisted_1$34 = { class: "buttons" };
428
+ var Index_default$5 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
429
+ __name: "Index",
430
+ setup(__props) {
431
+ return (_ctx, _cache) => {
432
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The two buttons beneath a character menu's panel, the game's pills, each the panel's half less the gap between them "), createElementVNode("div", _hoisted_1$34, [renderSlot(_ctx.$slots, "default", {}, () => [_cache[0] || (_cache[0] = createElementVNode("span", { class: "button" }, null, -1)), _cache[1] || (_cache[1] = createElementVNode("span", { class: "button" }, null, -1))], true)])], 2112);
433
+ };
434
+ }
435
+ }), [["__scopeId", "data-v-359aa329"]]);
436
+ //#endregion
437
+ //#region src/components/ToastNotice/Index.vue
438
+ const _sfc_main$34 = {};
439
+ const _hoisted_1$33 = {
440
+ class: "toast-notice",
441
+ role: "status"
442
+ };
443
+ const _hoisted_2$26 = { class: "mark" };
444
+ const _hoisted_3$24 = { class: "text" };
445
+ function _sfc_render$1(_ctx, _cache) {
446
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The game's notice card, dropped at the top of a screen: white with rounded corners, 107 units high and at least\n 537 across, a round mark at its left and its words in the game's near black. Measured from a 1440 high\n Recording of the welcome the login screen shows "), createElementVNode("div", _hoisted_1$33, [createElementVNode("span", _hoisted_2$26, [renderSlot(_ctx.$slots, "mark", {}, void 0, true)]), createElementVNode("p", _hoisted_3$24, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])])], 2112);
132
447
  }
133
- var Index_default$2 = /*#__PURE__*/ export_helper_default(_sfc_main$25, [["render", _sfc_render$2], ["__scopeId", "data-v-d4278b8b"]]);
448
+ var Index_default$33 = /*#__PURE__*/ export_helper_default(_sfc_main$34, [["render", _sfc_render$1], ["__scopeId", "data-v-a09dfb40"]]);
134
449
  //#endregion
135
450
  //#region src/components/CharacterMenuArtifacts/Index.vue
136
- const _hoisted_1$23 = { class: "artifacts" };
137
- const _hoisted_2$20 = { class: "slots" };
138
- var Index_default$1 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
451
+ const _hoisted_1$32 = { class: "artifacts" };
452
+ const _hoisted_2$25 = { class: "slots" };
453
+ const _hoisted_3$23 = [
454
+ "aria-label",
455
+ "aria-pressed",
456
+ "onClick"
457
+ ];
458
+ const _hoisted_4$20 = { class: "details" };
459
+ const _hoisted_5$19 = {
460
+ key: 1,
461
+ class: "stats"
462
+ };
463
+ const _hoisted_6$18 = { class: "stat" };
464
+ const _hoisted_7$18 = { class: "set-bonus" };
465
+ const _hoisted_8$14 = { class: "set-bonus-heading" };
466
+ const _hoisted_9$12 = {
467
+ key: 0,
468
+ class: "set-bonus-lines"
469
+ };
470
+ const _hoisted_10$11 = {
471
+ key: 1,
472
+ class: "set-bonus-lines"
473
+ };
474
+ var Index_default$4 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
139
475
  __name: "Index",
140
- props: { equipped: {} },
141
- setup(__props) {
476
+ props: {
477
+ enhanceLabel: {},
478
+ equipDisabledSlots: {},
479
+ equipLabel: {},
480
+ lockLabel: {},
481
+ noSetBonusLabel: {},
482
+ notice: {},
483
+ setBonusHeading: {},
484
+ setBonusLines: {},
485
+ slotNames: {},
486
+ slotStats: {},
487
+ unequipLabel: {},
488
+ unlockLabel: {}
489
+ },
490
+ emits: [
491
+ "enhance",
492
+ "equip",
493
+ "lock",
494
+ "unequip"
495
+ ],
496
+ setup(__props, { emit: __emit }) {
497
+ const emit = __emit;
498
+ const selectedIndex = ref(0);
499
+ const selectedStats = computed(() => __props.slotStats[selectedIndex.value]);
500
+ const isSelectedWorn = computed(() => selectedStats.value !== void 0);
142
501
  return (_ctx, _cache) => {
143
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Artifacts tab's panel: the five artifact slots, each a disc lit where the character wears one, then the set\n bonus block and the two buttons beneath. Its words and the set's text are not drawn yet "), createElementVNode("div", _hoisted_1$23, [
144
- createElementVNode("ul", _hoisted_2$20, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.equipped, (isEquipped, index) => {
502
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Artifacts tab's panel: the five slots down its top, each a disc lit where the character wears an artifact and\n picked by a click, the picked slot's name in the details pill, the picked artifact's main and sub stats under it,\n the set bonus block below them, and the Enhance and Equip or Unequip buttons at its foot. The stats' place is\n provisional "), createElementVNode("div", _hoisted_1$32, [
503
+ __props.notice ? (openBlock(), createBlock(Index_default$33, {
504
+ key: 0,
505
+ class: "notice"
506
+ }, {
507
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.notice), 1)]),
508
+ _: 1
509
+ })) : createCommentVNode("v-if", true),
510
+ createElementVNode("ul", _hoisted_2$25, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.slotStats, (stats, index) => {
511
+ return openBlock(), createElementBlock("li", { key: index }, [createElementVNode("button", {
512
+ class: normalizeClass(["slot", { worn: stats !== void 0 }]),
513
+ "aria-label": __props.slotNames[index],
514
+ "aria-pressed": index === selectedIndex.value,
515
+ type: "button",
516
+ onClick: ($event) => selectedIndex.value = index
517
+ }, null, 10, _hoisted_3$23)]);
518
+ }), 128))]),
519
+ createElementVNode("div", _hoisted_4$20, toDisplayString(__props.slotNames[selectedIndex.value]), 1),
520
+ selectedStats.value ? (openBlock(), createElementBlock("ul", _hoisted_5$19, [createElementVNode("li", _hoisted_6$18, [createElementVNode("span", null, toDisplayString(selectedStats.value.mainStat.label), 1), createElementVNode("span", null, toDisplayString(selectedStats.value.mainStat.value), 1)]), (openBlock(true), createElementBlock(Fragment, null, renderList(selectedStats.value.subStats, ({ label, value }, index) => {
145
521
  return openBlock(), createElementBlock("li", {
146
522
  key: index,
147
- class: normalizeClass(["slot", { worn: isEquipped }])
148
- }, null, 2);
149
- }), 128))]),
150
- _cache[0] || (_cache[0] = createElementVNode("div", { class: "details" }, null, -1)),
151
- _cache[1] || (_cache[1] = createElementVNode("div", { class: "set-bonus" }, null, -1)),
152
- createVNode(Index_default$2)
523
+ class: "stat"
524
+ }, [createElementVNode("span", null, toDisplayString(label), 1), createElementVNode("span", null, toDisplayString(value), 1)]);
525
+ }), 128))])) : createCommentVNode("v-if", true),
526
+ createElementVNode("div", _hoisted_7$18, [createElementVNode("p", _hoisted_8$14, toDisplayString(__props.setBonusHeading), 1), __props.setBonusLines.length > 0 ? (openBlock(), createElementBlock("ul", _hoisted_9$12, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.setBonusLines, (line) => {
527
+ return openBlock(), createElementBlock("li", { key: line }, toDisplayString(line), 1);
528
+ }), 128))])) : (openBlock(), createElementBlock("p", _hoisted_10$11, toDisplayString(__props.noSetBonusLabel), 1))]),
529
+ createVNode(Index_default$5, null, {
530
+ default: withCtx(() => [
531
+ createVNode(Index_default$16, {
532
+ class: "button",
533
+ disabled: !isSelectedWorn.value,
534
+ kind: unref(GameButtonKind).Pill,
535
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("enhance", selectedIndex.value))
536
+ }, {
537
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.enhanceLabel), 1)]),
538
+ _: 1
539
+ }, 8, ["disabled", "kind"]),
540
+ isSelectedWorn.value ? (openBlock(), createBlock(Index_default$16, {
541
+ key: 0,
542
+ class: "button",
543
+ kind: unref(GameButtonKind).Pill,
544
+ onClick: _cache[1] || (_cache[1] = ($event) => emit("unequip", selectedIndex.value))
545
+ }, {
546
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.unequipLabel), 1)]),
547
+ _: 1
548
+ }, 8, ["kind"])) : (openBlock(), createBlock(Index_default$16, {
549
+ key: 1,
550
+ class: "button",
551
+ disabled: __props.equipDisabledSlots[selectedIndex.value],
552
+ kind: unref(GameButtonKind).Pill,
553
+ onClick: _cache[2] || (_cache[2] = ($event) => emit("equip", selectedIndex.value))
554
+ }, {
555
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.equipLabel), 1)]),
556
+ _: 1
557
+ }, 8, ["disabled", "kind"])),
558
+ selectedStats.value ? (openBlock(), createBlock(Index_default$16, {
559
+ key: 2,
560
+ class: "button",
561
+ kind: unref(GameButtonKind).Pill,
562
+ onClick: _cache[3] || (_cache[3] = ($event) => emit("lock", selectedIndex.value))
563
+ }, {
564
+ default: withCtx(() => [createTextVNode(toDisplayString(selectedStats.value.isLocked ? __props.unlockLabel : __props.lockLabel), 1)]),
565
+ _: 1
566
+ }, 8, ["kind"])) : createCommentVNode("v-if", true)
567
+ ]),
568
+ _: 1
569
+ })
153
570
  ])], 2112);
154
571
  };
155
572
  }
156
- }), [["__scopeId", "data-v-d9a02adc"]]);
157
- //#endregion
158
- //#region src/services/constants.ts
159
- const ASCENSION_PHASE_COUNT = 6;
160
- const GAME_FONT_FAMILY = "\"HYWenHei 85W\", \"HYWenHei-85W\", Signika, ui-sans-serif, sans-serif";
161
- const GAME_UNIT = "calc(min(100cqh / 1080, 100cqw / 1920) * var(--interface-scale))";
162
- const GAME_CANVAS_UNIT = "calc(min(100cqh / 900, 100cqw / 1600) * var(--interface-scale))";
163
- const GAME_CANVAS_INSET = "min(var(--unit) * 71, (100cqw - min(100cqh * 16 / 9, 100cqw)) / 2)";
164
- const MOBILE_INTERFACE_SCALE = 1.25;
165
- const GAME_CANVAS_RECT = {
166
- anchorMax: [1, 1],
167
- anchorMin: [0, 0],
168
- pivot: [0, 0],
169
- position: [0, 0],
170
- size: [0, 0]
171
- };
172
- const GAME_WHITE = "#fdfdfd";
173
- const GAME_CREAM = "#ece5d8";
174
- const GAME_INK = "#3b4354";
175
- const GAME_GOLD = "#d3bc8e";
176
- const GAME_CURSOR_SIZE = 26;
177
- const GAME_CURSOR = `url("data:image/svg+xml,${encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" width="${GAME_CURSOR_SIZE}" height="${GAME_CURSOR_SIZE}" viewBox="-2 -2 66 66"><defs><radialGradient id="g" cx="28" cy="28" r="34" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ffea00"/><stop offset="0.45" stop-color="#ffc800"/><stop offset="1" stop-color="#ffc100"/></radialGradient></defs><path d="M0 0q30.1 11.4 62 15-14.5 21.1-3 44-22.9-11.5-44 3-3.6-31.9-15-62z" fill="none" stroke="#2c3a4e" stroke-opacity="0.75" stroke-width="3" stroke-linejoin="round"/><path d="M0 0q30.1 11.4 62 15-14.5 21.1-3 44z" fill="#fff"/><path d="M0 0L59 59Q36.1 47.5 15 62Q11.4 30.1 0 0Z" fill="#f4f5e0"/><path d="M26 26q21.5 6 36-11-14.5 21.1-3 44-22.9-11.5-44 3 17-14.5 11-36z" fill="url(#g)"/></svg>`)}") 1 1, auto`;
178
- const ORNAMENT_MIDDLE_PATH = "M179.5 39h6l5.5 4.5 2 5 10 12 2 5 10 10 4 8v5l-4.5 5.5-13 7-4 1-3.5-2.5-3.5-4.5-2-1h-10l-7.5 5.5-15.5 17.5-2.5 1.5-6.5 7.5-10 9-3 2h-2l-21 15q-6.27 1.73-10 6l-9 2-4.5 3.5q-.5 4 2.5 4.5l9 4 4 4 17 8 8 6 9 4 14.5 12.5 6.5 7.5q2.25-.75 1.5 1.5l6.5 7.5 4.5 3.5q.63 3.87 3.5 5.5l5 3h9q1-2.5 3.5-2 .71-4.89 4.5-8l3-1 26.5-24.5 2.5-4.5 5-2 9-7 5-2 13.5-9.5 1.5-2.5q5.5-2 8.5-6.5v-3l-5-5v-3l3.5-4.5q2.25.75 1.5-1.5l5.5-6.5 6-3h11l26 14 5 5h3l6 2 3.5 3.5-1 4.5-4.5 2-5 1-7 6-4 1-12 7-5 5-10 3-8 7-4 1-5 4h-1.5l-1.5 3-24 16-5.5 5.5q.75 2.25-1.5 1.5l-20.5 18.5-2 4-13 14-9 13-3 6.5-2.5 1h-3l-1 1h-3l-6.5-3.5-4-11q-8.37-6.84-13-16.5l-3-1.5-4-5v-1.5h-2q1.13-2.67-1.5-2l-13-15-3.5-1v-1.5l-6.5-6.5-3-1-11-9-13-6-6-5-4-2-11-2-5-4-15-5-6-4-18-6h-30.5v-31h31.5l4-2h9l4.5-2q-1.13-2.67 1.5-2l7-4 8-1 9-3 7-6 12-4 3-3 16-8 4.5-3.5 3.5-4.5 4-2 12.5-12.5 5.5-7.5 3.5-2.5q4.3-7.7 11-13l7-12 13.5-16.5 2-1zm115 1h9q1.25 3.5 4.5 3l5 10.5 16 18 9.5 13.5q2.25-.75 1.5 1.5l6.5 7.5 5.5 4.5 2 4.5q9.2 2.9 14.5 11l6 3h2l9 7 12 4 10 7h2l3 2 10 2 2 2 6 3h2l2 2q3.25-.75 4 1h7l6 2h28.5v31h-13.5l-1-1h-6l-9 3h-5l-4 2h-4l-8 6-3 1h-7l-6 3h-2l-13 8-10 2-7 6-10 4-4.5 4.5-1.5 2.5-9 4-4.5 4.5-4.5 5.5-2.5 1.5-10.5 12.5-2.5 1.5q.75 2.25-1.5 1.5l-4 5-2.5 1.5-5 9-7 9v2l-7.5 9.5h-10l-5.5-5.5-1-3-8-10-1-3-12-13-3-8v-5l1-3 3.5-3.5 4.5-3.5 2.5-3.5 3-1h7.5q.65 5.4 5.5 8l3 1h7q5.5-2 8.5-6.5l2-4.5h1.5l12-12h1.5v-1.5l8.5-8.5 11-9 10-3 7-7 12-5 7-5 7-2 4.5-4.5v-3l-3.5-3.5-11-3-6-6-14-6-11-8-3-1-13.5-12.5-5.5-6.5-3.5-2.5-16.5-18.5-4-2-6-1q-.75 1.75-4 1l-4.5 4.5q-.25 4.75-3.5 6.5-6.5 2.5-10 8h-1.5q1.13 2.67-1.5 2l-11 12-10 9-9.5 5.5-1.5 2.5h-1.5q1.13 2.67-1.5 2-4.41 4.09-11 6l-13.5 11.5-1 3 1 1v7l-5.5 7.5-9 8-9 1-18-10-3-3-6-2-4-4-9-3-3.5-3.5 2.5-4.5 11-5 8-5h2l8-4 5-5 12-5 9-8 9-3 3.5-2.5 4.5-5.5 5-3 9-8 4-2 4.5-4.5 4.5-5.5 3-1 5.5-4.5 2-4.5 3-1.5 7-10 20-22 5-10.5 2.5-1z";
179
- const ORNAMENT_END_PATH = "M210.5 53h6l7.5 6.5 3.5 5.5 10.5 8.5 4.5 5.5 7 3q3.17 4.83 9 7h4l1 1 6 1 15 7h10l1 1h8l1 1h7l1 1h7.5v30.5q-.12 1.13-5.5.5l-1 1h-6l-1 1h-17q-1 2-5 1l-15 7-3 1h-6q-6.5 2.5-10 8l-15 9-9.5 9.5-4.5 7.5-7 3h-6l-3-1-12.5-10.5q.75-2.25-1.5-1.5l-6-5q-8.22-1.78-13-7l-13-4-3-3-8-3-17-3-6-4-9-1-6-3-9-1-11-4h-7l-4-2h-4l-1-1-14-2-5-2h-11q-1.25-2.25-6-1l-6.5-3.5 1-3.5 5.5-2h3l1-1h12l1-1h4l6-2 9-1 1-1h3l4-2h4l9-3h8l16-6h4l7-4q4 1 5-1h7l1-1h4l6-2 10-7 9-2 16-11 3-1 7-7 12-6z";
180
- const CHECK_MARK_PATH = "M237.5 26q5.25-1.75 3.5 3.5l-6 11-5 5-4 7-4 4-9 14-3 3-1 3-4 4-1 3-12 17-7 12-9 11-5 9-14 19-1 3-4 4-7 12-8 10-1 3-4 4-2 5-3 3v2l-3.5 4.5-6 2-11-6-2.5-2.5-3.5-4.5-16-11-13.5-12.5q-1.25-5.75-5.5-8.5l-7-2-5-3-13-12-8-3h-6l-3-1-2.5-2.5v-2l3-6 26.5-36.5 5-3h5l5.5 4.5q-.75 2.25 1.5 1.5l16.5 17.5 1 3 13 13 5.5 9.5 7 1 18-13 12-12 21-18 10-10 8-6 19.5-18.5 2.5-3.5 12-9q10.85-12.15 24-22z";
181
- const SERVER_MARK_DIAMOND_PATH = "M23.44 6.62l1 .63 1.44 1.31.43.56 1.69 1.44.56.69.32.19.56.68.81.69q-.09.28.19.19l1.75 2 .5.38h.19v.18l.62.75 2.94 2.94.68.56 1.32 1.44.44.31.56.69.44.31.68.82q.28-.1.19.18.54.28.37 1.25l-1.18 1.31-1.06.94-.82.94-2.18 2.06-4.32 4.56-.68.44-3.07 3.19-.93.81-2.44 2.56-.5.26h-.88l-.37-.13-.44-.44-.56-.69q-.28.1-.19-.18l-2.38-2.25-.18-.31-.69-.57-.56-.69-.31-.18-.19-.32-.94-.68-.69-.82q-.28.1-.18-.18l-2.32-2.44-2.81-2.56-1.44-1.56-.69-.57-2-2.12-.37-.5v-.5l.25-.5 1.69-1.69q.28.09.19-.19.43-.15.37-.56h.19l.5-.37 2.06-2.07.12-.43h.19l.81-.69.69-.81.31-.19 1.19-1.31.81-.69.19-.31.81-.69.32-.57.56-.24v-.19l.56-.57.56-.43.32-.44.68-.56.44-.57.56-.43.26-.57h.18l2.13-2 .75-.5z";
182
- const SERVER_MARK_TICK_PATH = "M30.12 16.88l-.24.12-.38.62-2.5 2.63-1.75 1.63-1.25 1.37-.25.5h-.13l-.87.87q.13.26-.13.13l-.74.87-1.26 1-.37-.12-.63-.5-.5-.5-.5-.5-.5-.5-1.37-1.25-.75-.25h-.38l-.62.25q-.75.37-1 1.25v1.12l.25.63.5.63.37.12 2.63 3 .5.75 1.63 1.25h1l1-.75.37-.5.63-.5.37-.5.63-.5.5-.63.37-.24.63-.76.5-.37.37-.5.63-.5.24-.37.88-.76.38-.62.5-.38.37-.5.37-.24q.38-.38.63-.88l.75-.5.12-.25.76-.63 1.12-1.12q.25-.25.12-.75l.13-.13-.13-.74-.5-.63-.74-.75q-.63.12-.63-.12h-1.13z";
183
- const SETTINGS_RING_CENTRE = [24.05, 24.9];
184
- const SETTINGS_RING_RADIUS = 9.85;
185
- const SETTINGS_RING_WIDTH = 1.9;
186
- const FIXTURE_VARIANT_SEPARATOR = "-";
187
- const INTERACTION_KEY_LABEL = "F";
188
- const CONSTELLATION_NODE_PLACES = [
189
- {
190
- left: 15.25,
191
- top: 116
192
- },
193
- {
194
- left: 69.25,
195
- top: 227
196
- },
197
- {
198
- left: 105.25,
199
- top: 338.75
200
- },
201
- {
202
- left: 105.25,
203
- top: 449.75
204
- },
205
- {
206
- left: 69.25,
207
- top: 560.75
208
- },
209
- {
210
- left: -2.75,
211
- top: 671.75
212
- }
213
- ];
214
- const INTERACTION_HOVER_MS = 50;
215
- const INTERACTION_REST_MS = 100;
216
- const INTERACTION_PILL_REST_MS = 200;
217
- const INTERACTION_PRESS_MS = 167;
218
- const GAME_SMOOTHSTEP_EASING = "cubic-bezier(0.333, 0, 0.667, 1)";
219
- const GAME_ROW_HOVER = "rgb(255 255 255 / 0.2)";
220
- const GAME_ROW_PRESS = "rgb(255 255 255 / 0.3)";
221
- const GAME_REPLY_REST = "rgb(0 0 0 / 0.22)";
222
- const GAME_REPLY_HOVER = "rgb(255 255 255 / 0.85)";
223
- const GAME_REPLY_HOVER_INK = "#3b4255";
573
+ }), [["__scopeId", "data-v-525c0131"]]);
224
574
  //#endregion
225
575
  //#region src/components/CharacterMenuConstellation/Index.vue
226
- const _hoisted_1$22 = { class: "constellations" };
227
- const _hoisted_2$19 = { class: "nodes" };
228
- var Index_default$3 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
576
+ const _hoisted_1$31 = { class: "constellations" };
577
+ const _hoisted_2$24 = { class: "nodes" };
578
+ const _hoisted_3$22 = ["disabled"];
579
+ var Index_default$6 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
229
580
  __name: "Index",
230
- props: { activated: {} },
231
- setup(__props) {
581
+ props: {
582
+ activated: {},
583
+ activateLabel: {},
584
+ isActivateDisabled: { type: Boolean }
585
+ },
586
+ emits: ["activate"],
587
+ setup(__props, { emit: __emit }) {
588
+ const emit = __emit;
232
589
  const nodeStyles = CONSTELLATION_NODE_PLACES.map(({ left, top }) => ({
233
590
  left: `calc(var(--unit) * ${left})`,
234
591
  top: `calc(var(--unit) * ${top})`
235
592
  }));
236
593
  return (_ctx, _cache) => {
237
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Constellation tab's panel: the six constellations down its right, each a ring lit once activated. 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$22, [createElementVNode("ul", _hoisted_2$19, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.activated, (isActivated, index) => {
594
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Constellation tab's panel: the six constellations down its right, each a ring lit once activated, and the\n button that activates the next under them. The game's star map is its own art and its names are not decoded yet,\n so neither is drawn "), createElementVNode("div", _hoisted_1$31, [createElementVNode("ul", _hoisted_2$24, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.activated, (isActivated, index) => {
238
595
  return openBlock(), createElementBlock("li", {
239
596
  key: index,
240
597
  class: normalizeClass(["node", { lit: isActivated }]),
241
598
  style: normalizeStyle(unref(nodeStyles)[index])
242
599
  }, null, 6);
243
- }), 128))])])], 2112);
600
+ }), 128))]), createElementVNode("button", {
601
+ class: "activate",
602
+ disabled: __props.isActivateDisabled,
603
+ type: "button",
604
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("activate"))
605
+ }, toDisplayString(__props.activateLabel), 9, _hoisted_3$22)])], 2112);
244
606
  };
245
607
  }
246
- }), [["__scopeId", "data-v-59aca725"]]);
608
+ }), [["__scopeId", "data-v-4311eae1"]]);
247
609
  //#endregion
248
610
  //#region src/components/CharacterMenuProfile/Index.vue
249
- const _hoisted_1$21 = { class: "profile" };
250
- const _hoisted_2$18 = { class: "entries-column" };
251
- const _hoisted_3$15 = { class: "entries" };
252
- const _hoisted_4$12 = [
611
+ const _hoisted_1$30 = { class: "profile" };
612
+ const _hoisted_2$23 = { class: "entries-column" };
613
+ const _hoisted_3$21 = { class: "entries" };
614
+ const _hoisted_4$19 = [
253
615
  "aria-pressed",
254
616
  "data-locked",
255
617
  "onClick"
256
618
  ];
257
- const _hoisted_5$10 = {
619
+ const _hoisted_5$18 = {
258
620
  key: 0,
259
621
  class: "namecard"
260
622
  };
261
- const _hoisted_6$9 = {
623
+ const _hoisted_6$17 = {
262
624
  key: 0,
263
625
  class: "story"
264
626
  };
265
- const _hoisted_7$9 = { class: "title" };
266
- const _hoisted_8$8 = { class: "text" };
267
- var Index_default$4 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
627
+ const _hoisted_7$17 = { class: "title" };
628
+ const _hoisted_8$13 = { class: "text" };
629
+ var Index_default$7 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
268
630
  __name: "Index",
269
631
  props: {
270
632
  entries: {},
@@ -274,49 +636,88 @@ var Index_default$4 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
274
636
  const entryIndex = ref(0);
275
637
  const selectedEntry = computed(() => __props.entries[entryIndex.value]);
276
638
  return (_ctx, _cache) => {
277
- 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$21, [createElementVNode("div", _hoisted_2$18, [createElementVNode("ul", _hoisted_3$15, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.entries, (entry, index) => {
639
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Profile tab's panel: the stories down its left, each by its title, and the chosen one's title and text down its\n right. A locked story shows its unlock line in place of its text. The namecard the Friendship holds is a plate of its\n name under the stories, its art not drawn yet "), createElementVNode("div", _hoisted_1$30, [createElementVNode("div", _hoisted_2$23, [createElementVNode("ul", _hoisted_3$21, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.entries, (entry, index) => {
278
640
  return openBlock(), createElementBlock("li", { key: index }, [createElementVNode("button", {
279
641
  class: "entry",
280
642
  "aria-pressed": index === entryIndex.value,
281
643
  "data-locked": entry.isLocked,
282
644
  type: "button",
283
645
  onClick: ($event) => entryIndex.value = index
284
- }, toDisplayString(entry.title), 9, _hoisted_4$12)]);
285
- }), 128))]), __props.namecardName ? (openBlock(), createElementBlock("p", _hoisted_5$10, toDisplayString(__props.namecardName), 1)) : createCommentVNode("v-if", true)]), selectedEntry.value ? (openBlock(), createElementBlock("article", _hoisted_6$9, [createElementVNode("h2", _hoisted_7$9, toDisplayString(selectedEntry.value.title), 1), createElementVNode("p", _hoisted_8$8, toDisplayString(selectedEntry.value.text), 1)])) : createCommentVNode("v-if", true)])], 2112);
646
+ }, toDisplayString(entry.title), 9, _hoisted_4$19)]);
647
+ }), 128))]), __props.namecardName ? (openBlock(), createElementBlock("p", _hoisted_5$18, toDisplayString(__props.namecardName), 1)) : createCommentVNode("v-if", true)]), selectedEntry.value ? (openBlock(), createElementBlock("article", _hoisted_6$17, [createElementVNode("h2", _hoisted_7$17, toDisplayString(selectedEntry.value.title), 1), createElementVNode("p", _hoisted_8$13, toDisplayString(selectedEntry.value.text), 1)])) : createCommentVNode("v-if", true)])], 2112);
286
648
  };
287
649
  }
288
650
  }), [["__scopeId", "data-v-d064a750"]]);
289
651
  //#endregion
290
652
  //#region src/components/CharacterMenuTalents/Index.vue
291
- const _hoisted_1$20 = { class: "talents" };
292
- const _hoisted_2$17 = { class: "talent-list" };
293
- const _hoisted_3$14 = { class: "level" };
294
- var Index_default$5 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
653
+ const _hoisted_1$29 = { class: "talents" };
654
+ const _hoisted_2$22 = { class: "talent-list" };
655
+ const _hoisted_3$20 = { class: "level" };
656
+ const _hoisted_4$18 = { class: "detail" };
657
+ const _hoisted_5$17 = { class: "phase" };
658
+ const _hoisted_6$16 = { class: "costs" };
659
+ const _hoisted_7$16 = {
660
+ key: 0,
661
+ class: "reason"
662
+ };
663
+ var Index_default$8 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
295
664
  __name: "Index",
296
- props: { levels: {} },
297
- setup(__props) {
665
+ props: {
666
+ costs: {},
667
+ isUpgradeDisabled: {},
668
+ levels: {},
669
+ phases: {},
670
+ reasons: {},
671
+ upgradeLabel: {}
672
+ },
673
+ emits: ["upgrade"],
674
+ setup(__props, { emit: __emit }) {
675
+ const emit = __emit;
298
676
  return (_ctx, _cache) => {
299
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Talents tab's panel: the three combat talents down its right, each with its level. The passives under them\n and the talents' names are not drawn yet, since the game's text for them is not decoded "), createElementVNode("div", _hoisted_1$20, [createElementVNode("ul", _hoisted_2$17, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.levels, (level, index) => {
677
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Talents tab's panel: the three combat talents down its right, each with its level, the phase and cost of its next\n level, why it cannot rise if it cannot, and its Upgrade. The talents' names and the passives under them are not drawn\n yet, since the game's text for them is not decoded "), createElementVNode("div", _hoisted_1$29, [createElementVNode("ul", _hoisted_2$22, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.levels, (level, index) => {
300
678
  return openBlock(), createElementBlock("li", {
301
679
  key: index,
302
680
  class: "talent"
303
- }, [createElementVNode("span", _hoisted_3$14, toDisplayString(level), 1), _cache[0] || (_cache[0] = createElementVNode("span", { class: "icon" }, null, -1))]);
681
+ }, [
682
+ createElementVNode("span", _hoisted_3$20, toDisplayString(level), 1),
683
+ createElementVNode("div", _hoisted_4$18, [
684
+ createElementVNode("span", _hoisted_5$17, toDisplayString(__props.phases[index]), 1),
685
+ createElementVNode("ul", _hoisted_6$16, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.costs[index], (cost, costIndex) => {
686
+ return openBlock(), createElementBlock("li", { key: costIndex }, toDisplayString(cost), 1);
687
+ }), 128))]),
688
+ __props.reasons[index] ? (openBlock(), createElementBlock("span", _hoisted_7$16, toDisplayString(__props.reasons[index]), 1)) : createCommentVNode("v-if", true)
689
+ ]),
690
+ createVNode(Index_default$16, {
691
+ class: "upgrade",
692
+ disabled: __props.isUpgradeDisabled[index],
693
+ kind: unref(GameButtonKind).Reply,
694
+ onClick: ($event) => emit("upgrade", index)
695
+ }, {
696
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.upgradeLabel), 1)]),
697
+ _: 1
698
+ }, 8, [
699
+ "disabled",
700
+ "kind",
701
+ "onClick"
702
+ ]),
703
+ _cache[0] || (_cache[0] = createElementVNode("span", { class: "icon" }, null, -1))
704
+ ]);
304
705
  }), 128))])])], 2112);
305
706
  };
306
707
  }
307
- }), [["__scopeId", "data-v-c095bfc3"]]);
708
+ }), [["__scopeId", "data-v-65541162"]]);
308
709
  //#endregion
309
710
  //#region src/components/CharacterMenuWeapons/Index.vue
310
- const _hoisted_1$19 = { class: "weapons" };
311
- const _hoisted_2$16 = { class: "name" };
312
- const _hoisted_3$13 = { class: "stars" };
313
- const _hoisted_4$11 = { class: "stats" };
314
- const _hoisted_5$9 = { class: "stat" };
315
- const _hoisted_6$8 = { class: "stat" };
316
- const _hoisted_7$8 = { class: "level" };
317
- const _hoisted_8$7 = { class: "level-text" };
318
- const _hoisted_9$7 = { class: "refinement" };
319
- var Index_default$6 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
711
+ const _hoisted_1$28 = { class: "weapons" };
712
+ const _hoisted_2$21 = { class: "name" };
713
+ const _hoisted_3$19 = { class: "stars" };
714
+ const _hoisted_4$17 = { class: "stats" };
715
+ const _hoisted_5$16 = { class: "stat" };
716
+ const _hoisted_6$15 = { class: "stat" };
717
+ const _hoisted_7$15 = { class: "level" };
718
+ const _hoisted_8$12 = { class: "level-text" };
719
+ const _hoisted_9$11 = { class: "refinement" };
720
+ var Index_default$9 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
320
721
  __name: "Index",
321
722
  props: {
322
723
  ascension: {},
@@ -329,56 +730,196 @@ var Index_default$6 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
329
730
  },
330
731
  setup(__props) {
331
732
  return (_ctx, _cache) => {
332
- 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$19, [
333
- createElementVNode("p", _hoisted_2$16, toDisplayString(__props.name), 1),
334
- createElementVNode("p", _hoisted_3$13, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.rarity, (star) => {
733
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Weapons tab's panel: the weapon's name and stars, its base ATK and secondary attribute, its level with the\n ascension phases reached, its refinement rank, and the two buttons beneath "), createElementVNode("div", _hoisted_1$28, [
734
+ createElementVNode("p", _hoisted_2$21, toDisplayString(__props.name), 1),
735
+ createElementVNode("p", _hoisted_3$19, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.rarity, (star) => {
335
736
  return openBlock(), createElementBlock("span", {
336
737
  key: star,
337
738
  class: "star"
338
739
  });
339
740
  }), 128))]),
340
- createElementVNode("ul", _hoisted_4$11, [createElementVNode("li", _hoisted_5$9, toDisplayString(__props.baseAttack), 1), createElementVNode("li", _hoisted_6$8, toDisplayString(__props.subStatValue), 1)]),
341
- createElementVNode("p", _hoisted_7$8, [createElementVNode("span", _hoisted_8$7, toDisplayString(__props.levelText), 1), (openBlock(true), createElementBlock(Fragment, null, renderList(unref(6), (phase) => {
741
+ createElementVNode("ul", _hoisted_4$17, [createElementVNode("li", _hoisted_5$16, toDisplayString(__props.baseAttack), 1), createElementVNode("li", _hoisted_6$15, toDisplayString(__props.subStatValue), 1)]),
742
+ createElementVNode("p", _hoisted_7$15, [createElementVNode("span", _hoisted_8$12, toDisplayString(__props.levelText), 1), (openBlock(true), createElementBlock(Fragment, null, renderList(unref(6), (phase) => {
342
743
  return openBlock(), createElementBlock("span", {
343
744
  key: phase,
344
745
  class: normalizeClass(["spark", { lit: phase <= __props.ascension }])
345
746
  }, null, 2);
346
747
  }), 128))]),
347
- createElementVNode("p", _hoisted_9$7, toDisplayString(__props.refinement), 1),
348
- createVNode(Index_default$2)
748
+ createElementVNode("p", _hoisted_9$11, toDisplayString(__props.refinement), 1),
749
+ createVNode(Index_default$5)
349
750
  ])], 2112);
350
751
  };
351
752
  }
352
- }), [["__scopeId", "data-v-bf484c68"]]);
753
+ }), [["__scopeId", "data-v-77cff4ef"]]);
754
+ //#endregion
755
+ //#region src/components/CookingScreen/Index.vue
756
+ const _hoisted_1$27 = { class: "cooking-screen" };
757
+ const _hoisted_2$20 = { class: "title" };
758
+ const _hoisted_3$18 = { class: "dishes" };
759
+ const _hoisted_4$16 = ["aria-pressed", "onClick"];
760
+ const _hoisted_5$15 = {
761
+ "aria-hidden": "true",
762
+ class: "stage",
763
+ viewBox: "0 0 1920 1080"
764
+ };
765
+ const _hoisted_6$14 = ["d"];
766
+ const _hoisted_7$14 = ["d"];
767
+ const _hoisted_8$11 = ["d"];
768
+ const _hoisted_9$10 = ["cx", "cy"];
769
+ const _hoisted_10$10 = ["disabled"];
770
+ var Index_default$10 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
771
+ __name: "Index",
772
+ props: {
773
+ autoCookLabel: {},
774
+ canAutoCook: { type: Boolean },
775
+ dishes: {},
776
+ pointer: {},
777
+ selectedId: {},
778
+ stopLabel: {},
779
+ title: {},
780
+ zones: {}
781
+ },
782
+ emits: [
783
+ "autoCook",
784
+ "close",
785
+ "select",
786
+ "stop"
787
+ ],
788
+ setup(__props, { emit: __emit }) {
789
+ const emit = __emit;
790
+ const toArcPoint = (fraction) => {
791
+ const angle = Math.PI * (1 - Math.min(1, Math.max(0, fraction)));
792
+ return {
793
+ x: 960 + 435 * Math.cos(angle),
794
+ y: 832 - 120 * Math.sin(angle)
795
+ };
796
+ };
797
+ const toBarPath = ([start, end]) => {
798
+ const from = toArcPoint(start);
799
+ const to = toArcPoint(end);
800
+ return `M ${from.x} ${from.y} A 435 120 0 0 1 ${to.x} ${to.y}`;
801
+ };
802
+ return (_ctx, _cache) => {
803
+ return openBlock(), createElementBlock("div", _hoisted_1$27, [
804
+ createElementVNode("h1", _hoisted_2$20, toDisplayString(__props.title), 1),
805
+ createElementVNode("button", {
806
+ class: "close",
807
+ type: "button",
808
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
809
+ }, "×"),
810
+ createElementVNode("ul", _hoisted_3$18, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.dishes, (dish) => {
811
+ return openBlock(), createElementBlock("li", { key: dish.id }, [createElementVNode("button", {
812
+ "aria-pressed": dish.id === __props.selectedId,
813
+ class: normalizeClass({ selected: dish.id === __props.selectedId }),
814
+ type: "button",
815
+ onClick: ($event) => emit("select", dish.id)
816
+ }, toDisplayString(dish.name), 11, _hoisted_4$16)]);
817
+ }), 128))]),
818
+ (openBlock(), createElementBlock("svg", _hoisted_5$15, [
819
+ createCommentVNode(" A provisional pot until the game's own is traced from the recording "),
820
+ _cache[3] || (_cache[3] = createElementVNode("ellipse", {
821
+ class: "pot-rim",
822
+ cx: "960",
823
+ cy: "330",
824
+ rx: "150",
825
+ ry: "36"
826
+ }, null, -1)),
827
+ _cache[4] || (_cache[4] = createElementVNode("path", {
828
+ class: "pot",
829
+ d: "M810 330 Q830 470 960 480 Q1090 470 1110 330 Z"
830
+ }, null, -1)),
831
+ createElementVNode("path", {
832
+ class: "track",
833
+ d: toBarPath([0, 1])
834
+ }, null, 8, _hoisted_6$14),
835
+ createElementVNode("path", {
836
+ class: "regular",
837
+ d: toBarPath(__props.zones.regular)
838
+ }, null, 8, _hoisted_7$14),
839
+ createElementVNode("path", {
840
+ class: "delicious",
841
+ d: toBarPath(__props.zones.delicious)
842
+ }, null, 8, _hoisted_8$11),
843
+ createElementVNode("circle", {
844
+ class: "pointer",
845
+ cx: toArcPoint(__props.pointer).x,
846
+ cy: toArcPoint(__props.pointer).y,
847
+ r: "16"
848
+ }, null, 8, _hoisted_9$10)
849
+ ])),
850
+ createElementVNode("button", {
851
+ disabled: !__props.canAutoCook,
852
+ class: "auto-cook",
853
+ type: "button",
854
+ onClick: _cache[1] || (_cache[1] = ($event) => emit("autoCook"))
855
+ }, toDisplayString(__props.autoCookLabel), 9, _hoisted_10$10),
856
+ createElementVNode("button", {
857
+ class: "stop",
858
+ type: "button",
859
+ onClick: _cache[2] || (_cache[2] = ($event) => emit("stop"))
860
+ }, toDisplayString(__props.stopLabel), 1)
861
+ ]);
862
+ };
863
+ }
864
+ }), [["__scopeId", "data-v-4aee3a78"]]);
865
+ //#endregion
866
+ //#region src/components/DiscButton/Index.vue
867
+ const _hoisted_1$26 = ["aria-label"];
868
+ var Index_default$13 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
869
+ __name: "Index",
870
+ props: {
871
+ label: {},
872
+ size: {}
873
+ },
874
+ setup(__props) {
875
+ return (_ctx, _cache) => {
876
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" A white disc under a soft dark rim, its content centred on it as the game centres its icons "), createElementVNode("button", {
877
+ class: "disc-button",
878
+ "aria-label": __props.label,
879
+ type: "button",
880
+ style: normalizeStyle({ "--size": __props.size })
881
+ }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 12, _hoisted_1$26)], 2112);
882
+ };
883
+ }
884
+ }), [["__scopeId", "data-v-f5c878ff"]]);
885
+ //#endregion
886
+ //#region src/components/ScreenTitle/Index.vue
887
+ const _hoisted_1$25 = { class: "title" };
888
+ var Index_default$30 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
889
+ __name: "Index",
890
+ setup(__props) {
891
+ return (_ctx, _cache) => {
892
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The title a screen draws across its head, at the game's place for it in its own pixels at 1080 high (`--unit` a pixel\n of that frame). Its parent's rules add what it differs by, such as its line height "), createElementVNode("p", _hoisted_1$25, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])], 2112);
893
+ };
894
+ }
895
+ }), [["__scopeId", "data-v-5c68ef69"]]);
353
896
  //#endregion
354
897
  //#region src/components/CraftingScreen/Index.vue
355
- const _hoisted_1$18 = { class: "crafting-screen" };
356
- const _hoisted_2$15 = { class: "head" };
357
- const _hoisted_3$12 = {
358
- class: "title",
359
- role: "heading",
360
- "aria-level": "1"
898
+ const _hoisted_1$24 = { class: "crafting-screen" };
899
+ const _hoisted_2$19 = { class: "head" };
900
+ const _hoisted_3$17 = { class: "coins" };
901
+ const _hoisted_4$15 = { class: "tabs" };
902
+ const _hoisted_5$14 = ["aria-pressed", "onClick"];
903
+ const _hoisted_6$13 = { class: "tab-name" };
904
+ const _hoisted_7$13 = { class: "list" };
905
+ const _hoisted_8$10 = { class: "recipes" };
906
+ const _hoisted_9$9 = ["aria-pressed", "onClick"];
907
+ const _hoisted_10$9 = { class: "recipe-name" };
908
+ const _hoisted_11$8 = {
909
+ key: 0,
910
+ class: "recipe-count"
361
911
  };
362
- const _hoisted_4$10 = { class: "coins" };
363
- const _hoisted_5$8 = ["aria-label"];
364
- const _hoisted_6$7 = { class: "tabs" };
365
- const _hoisted_7$7 = ["aria-pressed", "onClick"];
366
- const _hoisted_8$6 = { class: "tab-name" };
367
- const _hoisted_9$6 = { class: "list" };
368
- const _hoisted_10$6 = { class: "recipes" };
369
- const _hoisted_11$4 = ["aria-pressed", "onClick"];
370
- const _hoisted_12$4 = { class: "recipe-name" };
371
- const _hoisted_13$4 = { class: "detail" };
372
- const _hoisted_14$4 = { class: "recipe-title" };
373
- const _hoisted_15$4 = { class: "crafters" };
374
- const _hoisted_16$4 = ["aria-pressed", "onClick"];
375
- const _hoisted_17$4 = { class: "crafter-name" };
376
- const _hoisted_18$4 = ["aria-label", "max"];
377
- const _hoisted_19$4 = { class: "crafted" };
378
- const _hoisted_20$4 = { class: "required" };
379
- const _hoisted_21$3 = { class: "materials-label" };
380
- const _hoisted_22$3 = { class: "materials" };
381
- var Index_default$7 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
912
+ const _hoisted_12$8 = { class: "detail" };
913
+ const _hoisted_13$8 = { class: "recipe-title" };
914
+ const _hoisted_14$8 = { class: "crafters" };
915
+ const _hoisted_15$7 = ["aria-pressed", "onClick"];
916
+ const _hoisted_16$7 = { class: "crafter-name" };
917
+ const _hoisted_17$7 = ["aria-label", "max"];
918
+ const _hoisted_18$6 = { class: "crafted" };
919
+ const _hoisted_19$6 = { class: "required" };
920
+ const _hoisted_20$6 = { class: "materials-label" };
921
+ const _hoisted_21$6 = { class: "materials" };
922
+ var Index_default$11 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
382
923
  __name: "Index",
383
924
  props: /*@__PURE__*/ mergeModels({
384
925
  amountLabel: {},
@@ -418,52 +959,62 @@ var Index_default$7 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
418
959
  const tabId = useModel(__props, "tabId");
419
960
  const emit = __emit;
420
961
  return (_ctx, _cache) => {
421
- 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$18, [
422
- createElementVNode("header", _hoisted_2$15, [
423
- createElementVNode("p", _hoisted_3$12, toDisplayString(__props.title), 1),
424
- createElementVNode("p", _hoisted_4$10, [_cache[3] || (_cache[3] = createElementVNode("span", {
962
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Craft screen, its pieces placed in the game's own pixels at 1080 high (`--unit` a pixel of that frame): the title\n and the coins across the head, the way out at the head's right, and the recipe tabs under the title. The screen takes its\n place from the game's layout, not a two-column grid, since its recipe list is narrower than its detail "), createElementVNode("div", _hoisted_1$24, [
963
+ createElementVNode("header", _hoisted_2$19, [
964
+ createVNode(Index_default$30, {
965
+ class: "heading",
966
+ role: "heading",
967
+ "aria-level": "1"
968
+ }, {
969
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.title), 1)]),
970
+ _: 1
971
+ }),
972
+ createElementVNode("p", _hoisted_3$17, [_cache[3] || (_cache[3] = createElementVNode("span", {
425
973
  class: "coin",
426
974
  "aria-hidden": "true"
427
975
  }, null, -1)), createTextVNode(" " + toDisplayString(__props.coins), 1)]),
428
- createElementVNode("button", {
976
+ createVNode(Index_default$13, {
429
977
  class: "close",
430
- "aria-label": __props.closeLabel,
431
- type: "button",
978
+ label: __props.closeLabel,
979
+ size: 56,
432
980
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
433
- }, [..._cache[4] || (_cache[4] = [createElementVNode("svg", {
434
- viewBox: "0 0 24 24",
435
- "aria-hidden": "true"
436
- }, [createElementVNode("path", { d: "M6 6 18 18M18 6 6 18" })], -1)])], 8, _hoisted_5$8)
981
+ }, {
982
+ default: withCtx(() => [..._cache[4] || (_cache[4] = [createElementVNode("svg", {
983
+ viewBox: "0 0 24 24",
984
+ "aria-hidden": "true"
985
+ }, [createElementVNode("path", { d: "M6 6 18 18M18 6 6 18" })], -1)])]),
986
+ _: 1
987
+ }, 8, ["label"])
437
988
  ]),
438
- createElementVNode("ul", _hoisted_6$7, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (tab) => {
989
+ createElementVNode("ul", _hoisted_4$15, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (tab) => {
439
990
  return openBlock(), createElementBlock("li", { key: tab.id }, [createElementVNode("button", {
440
991
  class: "tab",
441
992
  "aria-pressed": tab.id === tabId.value,
442
993
  type: "button",
443
994
  onClick: ($event) => tabId.value = tab.id
444
- }, [createElementVNode("span", _hoisted_8$6, toDisplayString(tab.name), 1)], 8, _hoisted_7$7)]);
995
+ }, [createElementVNode("span", _hoisted_6$13, toDisplayString(tab.name), 1)], 8, _hoisted_5$14)]);
445
996
  }), 128))]),
446
- createElementVNode("div", _hoisted_9$6, [createElementVNode("ul", _hoisted_10$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.recipes, (recipe) => {
997
+ createElementVNode("div", _hoisted_7$13, [createElementVNode("ul", _hoisted_8$10, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.recipes, (recipe) => {
447
998
  return openBlock(), createElementBlock("li", { key: recipe.id }, [createElementVNode("button", {
448
999
  class: "recipe",
449
1000
  "aria-pressed": recipe.id === recipeId.value,
450
1001
  type: "button",
451
1002
  onClick: ($event) => recipeId.value = recipe.id
452
- }, [createElementVNode("span", _hoisted_12$4, toDisplayString(recipe.name), 1)], 8, _hoisted_11$4)]);
1003
+ }, [createElementVNode("span", _hoisted_10$9, toDisplayString(recipe.name), 1), recipe.count !== void 0 ? (openBlock(), createElementBlock("span", _hoisted_11$8, toDisplayString(recipe.count), 1)) : createCommentVNode("v-if", true)], 8, _hoisted_9$9)]);
453
1004
  }), 128))])]),
454
- createElementVNode("div", _hoisted_13$4, [
1005
+ createElementVNode("div", _hoisted_12$8, [
455
1006
  _cache[5] || (_cache[5] = createElementVNode("div", {
456
1007
  class: "materials-band",
457
1008
  "aria-hidden": "true"
458
1009
  }, null, -1)),
459
- createElementVNode("p", _hoisted_14$4, toDisplayString(__props.recipes.find((recipe) => recipe.id === recipeId.value)?.name), 1),
460
- createElementVNode("ul", _hoisted_15$4, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.crafters, (crafter) => {
1010
+ createElementVNode("p", _hoisted_13$8, toDisplayString(__props.recipes.find((recipe) => recipe.id === recipeId.value)?.name), 1),
1011
+ createElementVNode("ul", _hoisted_14$8, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.crafters, (crafter) => {
461
1012
  return openBlock(), createElementBlock("li", { key: crafter.id }, [createElementVNode("button", {
462
1013
  class: "crafter",
463
1014
  "aria-pressed": crafter.id === crafterId.value,
464
1015
  type: "button",
465
1016
  onClick: ($event) => crafterId.value = crafter.id
466
- }, [createElementVNode("span", _hoisted_17$4, toDisplayString(crafter.name), 1)], 8, _hoisted_16$4)]);
1017
+ }, [createElementVNode("span", _hoisted_16$7, toDisplayString(crafter.name), 1)], 8, _hoisted_15$7)]);
467
1018
  }), 128))]),
468
1019
  withDirectives(createElementVNode("input", {
469
1020
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => amount.value = $event),
@@ -472,16 +1023,16 @@ var Index_default$7 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
472
1023
  max: __props.amountMaximum,
473
1024
  min: "1",
474
1025
  type: "range"
475
- }, null, 8, _hoisted_18$4), [[
1026
+ }, null, 8, _hoisted_17$7), [[
476
1027
  vModelText,
477
1028
  amount.value,
478
1029
  void 0,
479
1030
  { number: true }
480
1031
  ]]),
481
- createElementVNode("p", _hoisted_19$4, toDisplayString(__props.craftedLabel), 1),
482
- createElementVNode("p", _hoisted_20$4, toDisplayString(__props.requiredLabel) + " " + toDisplayString(__props.requiredCoins), 1),
483
- createElementVNode("p", _hoisted_21$3, toDisplayString(__props.craftingMaterialsLabel), 1),
484
- createElementVNode("ul", _hoisted_22$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.materials, (material) => {
1032
+ createElementVNode("p", _hoisted_18$6, toDisplayString(__props.craftedLabel), 1),
1033
+ createElementVNode("p", _hoisted_19$6, toDisplayString(__props.requiredLabel) + " " + toDisplayString(__props.requiredCoins), 1),
1034
+ createElementVNode("p", _hoisted_20$6, toDisplayString(__props.craftingMaterialsLabel), 1),
1035
+ createElementVNode("ul", _hoisted_21$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.materials, (material) => {
485
1036
  return openBlock(), createElementBlock("li", {
486
1037
  key: material.id,
487
1038
  class: "material"
@@ -496,63 +1047,7 @@ var Index_default$7 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
496
1047
  ])], 2112);
497
1048
  };
498
1049
  }
499
- }), [["__scopeId", "data-v-501eda08"]]);
500
- //#endregion
501
- //#region src/components/GameButton/Index.vue
502
- const _hoisted_1$17 = ["data-kind"];
503
- const _hoisted_2$14 = {
504
- key: 0,
505
- class: "tip"
506
- };
507
- var Index_default$10 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
508
- __name: "Index",
509
- props: {
510
- kind: {},
511
- tip: {}
512
- },
513
- setup(__props, { expose: __expose }) {
514
- useCssVars((_ctx) => ({
515
- "v8de8a9a0": restDuration,
516
- "v4f7d0248": hoverDuration,
517
- "v5ff883e5": unref(GAME_GOLD),
518
- "c23e4506": unref(GAME_CREAM),
519
- "v7defe8be": unref(GAME_INK),
520
- "v78a9c41c": unref(GAME_ROW_HOVER),
521
- "v77c60e0e": unref(GAME_ROW_PRESS),
522
- "v7a0541ee": pillRestDuration,
523
- "v307a3362": pressDuration,
524
- "v0673242b": unref(GAME_SMOOTHSTEP_EASING),
525
- "v40afb3ee": unref(GAME_REPLY_REST),
526
- "v5683177c": unref(GAME_REPLY_HOVER),
527
- "a79a636e": unref(GAME_REPLY_HOVER_INK)
528
- }));
529
- const button = useTemplateRef("button");
530
- const hoverDuration = `50ms`;
531
- const restDuration = `100ms`;
532
- const pillRestDuration = `200ms`;
533
- const pressDuration = `167ms`;
534
- __expose({ focus: () => button.value?.focus() });
535
- return (_ctx, _cache) => {
536
- 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", {
537
- ref_key: "button",
538
- ref: button,
539
- class: "game-button",
540
- "data-kind": __props.kind,
541
- type: "button"
542
- }, [renderSlot(_ctx.$slots, "default"), __props.tip ? (openBlock(), createElementBlock("span", _hoisted_2$14, toDisplayString(__props.tip), 1)) : createCommentVNode("v-if", true)], 8, _hoisted_1$17)], 2112);
543
- };
544
- }
545
- }), [["__scopeId", "data-v-cab29bfa"]]);
546
- //#endregion
547
- //#region src/models/GameButtonKind.ts
548
- let GameButtonKind = /* @__PURE__ */ function(GameButtonKind) {
549
- GameButtonKind["Disc"] = "Disc";
550
- GameButtonKind["Pill"] = "Pill";
551
- GameButtonKind["Plain"] = "Plain";
552
- GameButtonKind["Reply"] = "Reply";
553
- GameButtonKind["Row"] = "Row";
554
- return GameButtonKind;
555
- }({});
1050
+ }), [["__scopeId", "data-v-bd114327"]]);
556
1051
  //#endregion
557
1052
  //#region src/models/DialogueChoiceIcon.ts
558
1053
  let DialogueChoiceIcon = /* @__PURE__ */ function(DialogueChoiceIcon) {
@@ -579,29 +1074,29 @@ const DialogueChoiceIconPathMap = {
579
1074
  };
580
1075
  //#endregion
581
1076
  //#region src/components/DialogueScreen/Index.vue
582
- const _hoisted_1$16 = {
1077
+ const _hoisted_1$23 = {
583
1078
  key: 0,
584
1079
  class: "speaker"
585
1080
  };
586
- const _hoisted_2$13 = {
1081
+ const _hoisted_2$18 = {
587
1082
  key: 1,
588
1083
  class: "role"
589
1084
  };
590
- const _hoisted_3$11 = { class: "line" };
591
- const _hoisted_4$9 = { "aria-hidden": "true" };
592
- const _hoisted_5$7 = {
1085
+ const _hoisted_3$16 = { class: "line" };
1086
+ const _hoisted_4$14 = { "aria-hidden": "true" };
1087
+ const _hoisted_5$13 = {
593
1088
  class: "unrevealed",
594
1089
  "aria-hidden": "true"
595
1090
  };
596
- const _hoisted_6$6 = { class: "spoken" };
597
- const _hoisted_7$6 = {
1091
+ const _hoisted_6$12 = { class: "spoken" };
1092
+ const _hoisted_7$12 = {
598
1093
  key: 0,
599
1094
  class: "choices"
600
1095
  };
601
- const _hoisted_8$5 = ["data-interaction-state"];
602
- const _hoisted_9$5 = ["viewBox"];
603
- const _hoisted_10$5 = ["d"];
604
- var Index_default$8 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1096
+ const _hoisted_8$9 = ["data-interaction-state"];
1097
+ const _hoisted_9$8 = ["viewBox"];
1098
+ const _hoisted_10$8 = ["d"];
1099
+ var Index_default$12 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
605
1100
  __name: "Index",
606
1101
  props: {
607
1102
  choices: {},
@@ -629,18 +1124,18 @@ var Index_default$8 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
629
1124
  class: normalizeClass(["band", { narration: !__props.speakerName }]),
630
1125
  "aria-live": "polite"
631
1126
  }, [
632
- __props.speakerName ? (openBlock(), createElementBlock("p", _hoisted_1$16, toDisplayString(__props.speakerName), 1)) : createCommentVNode("v-if", true),
633
- __props.speakerRole ? (openBlock(), createElementBlock("p", _hoisted_2$13, toDisplayString(__props.speakerRole), 1)) : createCommentVNode("v-if", true),
634
- createElementVNode("p", _hoisted_3$11, [
635
- createElementVNode("span", _hoisted_4$9, toDisplayString(lineParts.value.revealed), 1),
636
- createElementVNode("span", _hoisted_5$7, toDisplayString(lineParts.value.unrevealed), 1),
637
- createElementVNode("span", _hoisted_6$6, toDisplayString(__props.line), 1)
1127
+ __props.speakerName ? (openBlock(), createElementBlock("p", _hoisted_1$23, toDisplayString(__props.speakerName), 1)) : createCommentVNode("v-if", true),
1128
+ __props.speakerRole ? (openBlock(), createElementBlock("p", _hoisted_2$18, toDisplayString(__props.speakerRole), 1)) : createCommentVNode("v-if", true),
1129
+ createElementVNode("p", _hoisted_3$16, [
1130
+ createElementVNode("span", _hoisted_4$14, toDisplayString(lineParts.value.revealed), 1),
1131
+ createElementVNode("span", _hoisted_5$13, toDisplayString(lineParts.value.unrevealed), 1),
1132
+ createElementVNode("span", _hoisted_6$12, toDisplayString(__props.line), 1)
638
1133
  ])
639
- ], 2), __props.choices.length > 0 ? (openBlock(), createElementBlock("ul", _hoisted_7$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.choices, ({ icon, id, text }) => {
1134
+ ], 2), __props.choices.length > 0 ? (openBlock(), createElementBlock("ul", _hoisted_7$12, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.choices, ({ icon, id, text }) => {
640
1135
  return openBlock(), createElementBlock("li", {
641
1136
  key: id,
642
1137
  "data-interaction-state": id === __props.selectedChoiceId ? "Hover" : void 0
643
- }, [createVNode(Index_default$10, {
1138
+ }, [createVNode(Index_default$16, {
644
1139
  class: "choice",
645
1140
  "data-icon": icon,
646
1141
  kind: unref(GameButtonKind).Reply,
@@ -653,25 +1148,261 @@ var Index_default$8 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
653
1148
  }, [createElementVNode("path", {
654
1149
  d: unref(DialogueChoiceIconPathMap)[icon].d,
655
1150
  fill: "currentColor"
656
- }, null, 8, _hoisted_10$5)], 8, _hoisted_9$5)), createTextVNode(" " + toDisplayString(text), 1)]),
1151
+ }, null, 8, _hoisted_10$8)], 8, _hoisted_9$8)), createTextVNode(" " + toDisplayString(text), 1)]),
657
1152
  _: 2
658
1153
  }, 1032, [
659
1154
  "data-icon",
660
1155
  "kind",
661
1156
  "onClick"
662
- ])], 8, _hoisted_8$5);
1157
+ ])], 8, _hoisted_8$9);
663
1158
  }), 128))])) : createCommentVNode("v-if", true)])], 2112);
664
1159
  };
665
1160
  }
666
1161
  }), [["__scopeId", "data-v-da022ee0"]]);
667
1162
  //#endregion
1163
+ //#region src/components/ItemTile/Index.vue
1164
+ const _hoisted_1$22 = ["data-rarity"];
1165
+ const _hoisted_2$17 = { class: "face" };
1166
+ const _hoisted_3$15 = {
1167
+ class: "count",
1168
+ "aria-hidden": "true"
1169
+ };
1170
+ var Index_default$20 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1171
+ __name: "Index",
1172
+ props: {
1173
+ count: {},
1174
+ rarity: {}
1175
+ },
1176
+ setup(__props) {
1177
+ return (_ctx, _cache) => {
1178
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" An item's tile as the game's reward lists draw it, filling the box its parent gives it: the rarity's gradient lit\n from the foot, and the count in white on a darker strip across the bottom 24%, the corners rounded 7%. Measured on\n the wiki's Adventurer Handbook screenshot and the Reputation clip, which agree on the three, four and five star\n tiles and differ only in the count's size, which a screen sets as `--count-size` since it does not follow the\n tile's: the handbook's counts stand as high on its 188 tiles as on its 141. A one or two star tile is not measured\n yet and draws bare. The item's own art is the game's and does not ship "), createElementVNode("span", {
1179
+ class: "item-tile",
1180
+ "data-rarity": __props.rarity
1181
+ }, [createElementVNode("span", _hoisted_2$17, [createElementVNode("span", _hoisted_3$15, toDisplayString(__props.count), 1)])], 8, _hoisted_1$22)], 2112);
1182
+ };
1183
+ }
1184
+ }), [["__scopeId", "data-v-8cf70011"]]);
1185
+ //#endregion
1186
+ //#region src/models/ExpeditionActionKind.ts
1187
+ let ExpeditionActionKind = /* @__PURE__ */ function(ExpeditionActionKind) {
1188
+ ExpeditionActionKind["Claim"] = "claim";
1189
+ ExpeditionActionKind["Recall"] = "recall";
1190
+ ExpeditionActionKind["Send"] = "send";
1191
+ return ExpeditionActionKind;
1192
+ }({});
1193
+ //#endregion
1194
+ //#region src/components/ExpeditionScreen/Index.vue
1195
+ const _hoisted_1$21 = { class: "expedition-screen" };
1196
+ const _hoisted_2$16 = { class: "limit" };
1197
+ const _hoisted_3$14 = ["aria-label"];
1198
+ const _hoisted_4$13 = { class: "nations" };
1199
+ const _hoisted_5$12 = ["aria-pressed", "onClick"];
1200
+ const _hoisted_6$11 = {
1201
+ key: 0,
1202
+ class: "alert",
1203
+ "aria-hidden": "true"
1204
+ };
1205
+ const _hoisted_7$11 = { class: "pins" };
1206
+ const _hoisted_8$8 = [
1207
+ "aria-label",
1208
+ "aria-pressed",
1209
+ "onClick"
1210
+ ];
1211
+ const _hoisted_9$7 = {
1212
+ key: 0,
1213
+ class: "away"
1214
+ };
1215
+ const _hoisted_10$7 = {
1216
+ key: 0,
1217
+ class: "detail"
1218
+ };
1219
+ const _hoisted_11$7 = { class: "detail-name" };
1220
+ const _hoisted_12$7 = { class: "description" };
1221
+ const _hoisted_13$7 = { class: "rewards-label" };
1222
+ const _hoisted_14$7 = { class: "rewards" };
1223
+ const _hoisted_15$6 = {
1224
+ key: 0,
1225
+ class: "status"
1226
+ };
1227
+ const _hoisted_16$6 = {
1228
+ key: 1,
1229
+ class: "durations"
1230
+ };
1231
+ const _hoisted_17$6 = ["aria-pressed", "onClick"];
1232
+ const _hoisted_18$5 = {
1233
+ key: 1,
1234
+ class: "characters"
1235
+ };
1236
+ const _hoisted_19$5 = { class: "characters-title" };
1237
+ const _hoisted_20$5 = ["disabled", "onClick"];
1238
+ const _hoisted_21$5 = { class: "character-name" };
1239
+ const _hoisted_22$4 = { class: "character-bonus" };
1240
+ const _hoisted_23$3 = {
1241
+ key: 0,
1242
+ class: "character-status"
1243
+ };
1244
+ var Index_default$14 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1245
+ __name: "Index",
1246
+ props: /*@__PURE__*/ mergeModels({
1247
+ characters: {},
1248
+ characterTitle: {},
1249
+ closeLabel: {},
1250
+ detail: {},
1251
+ limitLabel: {},
1252
+ nations: {},
1253
+ pins: {},
1254
+ rewardsLabel: {},
1255
+ title: {}
1256
+ }, {
1257
+ "nation": { required: true },
1258
+ "nationModifiers": {},
1259
+ "place": {},
1260
+ "placeModifiers": {},
1261
+ "hours": { default: 0 },
1262
+ "hoursModifiers": {},
1263
+ "picking": {
1264
+ type: Boolean,
1265
+ default: false
1266
+ },
1267
+ "pickingModifiers": {}
1268
+ }),
1269
+ emits: /*@__PURE__*/ mergeModels([
1270
+ "claim",
1271
+ "close",
1272
+ "recall",
1273
+ "send"
1274
+ ], [
1275
+ "update:nation",
1276
+ "update:place",
1277
+ "update:hours",
1278
+ "update:picking"
1279
+ ]),
1280
+ setup(__props, { emit: __emit }) {
1281
+ const nation = useModel(__props, "nation");
1282
+ const place = useModel(__props, "place");
1283
+ const hours = useModel(__props, "hours");
1284
+ const picking = useModel(__props, "picking");
1285
+ const emit = __emit;
1286
+ const act = () => {
1287
+ if (!__props.detail) return;
1288
+ if (__props.detail.actionKind === "send") picking.value = true;
1289
+ else if (__props.detail.actionKind === "claim") emit("claim", __props.detail.id);
1290
+ else emit("recall", __props.detail.id);
1291
+ };
1292
+ const pick = (characterId) => {
1293
+ if (!__props.detail) return;
1294
+ picking.value = false;
1295
+ emit("send", __props.detail.id, characterId, hours.value);
1296
+ };
1297
+ return (_ctx, _cache) => {
1298
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Expedition screen as the public clip shows it at 1080 high (references/expedition-screen, 26 seconds): the title\n across the head with the expedition limit and the way out, the nations down the left, the places as pins over the\n map, and the picked place's panel on the right with its rewards, its durations and the button that acts on it. The\n map and the panel's picture are the game's art and do not ship, so they are drawn as plain sheets, and the pin's\n brackets as a square outline; the parity compares them against the frame "), createElementVNode("div", _hoisted_1$21, [
1299
+ _cache[6] || (_cache[6] = createElementVNode("div", {
1300
+ class: "map",
1301
+ "aria-hidden": "true"
1302
+ }, null, -1)),
1303
+ createVNode(Index_default$30, null, {
1304
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.title), 1)]),
1305
+ _: 1
1306
+ }),
1307
+ createElementVNode("p", _hoisted_2$16, toDisplayString(__props.limitLabel), 1),
1308
+ createElementVNode("button", {
1309
+ class: "close",
1310
+ "aria-label": __props.closeLabel,
1311
+ type: "button",
1312
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
1313
+ }, "×", 8, _hoisted_3$14),
1314
+ createElementVNode("ul", _hoisted_4$13, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.nations, ({ hasAlert, name }) => {
1315
+ return openBlock(), createElementBlock("li", { key: name }, [createElementVNode("button", {
1316
+ class: "nation",
1317
+ "aria-pressed": name === nation.value,
1318
+ type: "button",
1319
+ onClick: ($event) => nation.value = name
1320
+ }, [
1321
+ _cache[2] || (_cache[2] = createElementVNode("span", {
1322
+ class: "marker",
1323
+ "aria-hidden": "true"
1324
+ }, null, -1)),
1325
+ createElementVNode("span", null, toDisplayString(name), 1),
1326
+ hasAlert ? (openBlock(), createElementBlock("span", _hoisted_6$11, "!")) : createCommentVNode("v-if", true)
1327
+ ], 8, _hoisted_5$12)]);
1328
+ }), 128))]),
1329
+ createElementVNode("ul", _hoisted_7$11, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.pins, ({ awayLabel, id, label, x, y }) => {
1330
+ return openBlock(), createElementBlock("li", {
1331
+ key: id,
1332
+ style: normalizeStyle({
1333
+ "--x": x,
1334
+ "--y": y
1335
+ })
1336
+ }, [createElementVNode("button", {
1337
+ class: "pin",
1338
+ "aria-label": label,
1339
+ "aria-pressed": id === place.value,
1340
+ type: "button",
1341
+ onClick: ($event) => place.value = id
1342
+ }, [..._cache[3] || (_cache[3] = [createElementVNode("span", { "aria-hidden": "true" }, "+", -1)])], 8, _hoisted_8$8), awayLabel ? (openBlock(), createElementBlock("span", _hoisted_9$7, toDisplayString(awayLabel), 1)) : createCommentVNode("v-if", true)], 4);
1343
+ }), 128))]),
1344
+ __props.detail ? (openBlock(), createElementBlock("section", _hoisted_10$7, [
1345
+ createElementVNode("p", _hoisted_11$7, toDisplayString(__props.detail.name), 1),
1346
+ _cache[4] || (_cache[4] = createElementVNode("div", {
1347
+ class: "picture",
1348
+ "aria-hidden": "true"
1349
+ }, null, -1)),
1350
+ createElementVNode("p", _hoisted_12$7, toDisplayString(__props.detail.description), 1),
1351
+ createElementVNode("p", _hoisted_13$7, toDisplayString(__props.rewardsLabel), 1),
1352
+ createElementVNode("ul", _hoisted_14$7, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.detail.rewards, ({ countLabel, label, rarity }, index) => {
1353
+ return openBlock(), createElementBlock("li", { key: index }, [createVNode(Index_default$20, {
1354
+ class: "item",
1355
+ "aria-label": label,
1356
+ count: countLabel,
1357
+ rarity,
1358
+ role: "img"
1359
+ }, null, 8, [
1360
+ "aria-label",
1361
+ "count",
1362
+ "rarity"
1363
+ ])]);
1364
+ }), 128))]),
1365
+ __props.detail.statusLabel ? (openBlock(), createElementBlock("p", _hoisted_15$6, toDisplayString(__props.detail.statusLabel), 1)) : (openBlock(), createElementBlock("ul", _hoisted_16$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.detail.durations, (duration) => {
1366
+ return openBlock(), createElementBlock("li", { key: duration }, [createElementVNode("button", {
1367
+ "aria-pressed": duration === hours.value,
1368
+ type: "button",
1369
+ onClick: ($event) => hours.value = duration
1370
+ }, toDisplayString(duration) + "h", 9, _hoisted_17$6)]);
1371
+ }), 128))]))
1372
+ ])) : createCommentVNode("v-if", true),
1373
+ picking.value && __props.detail ? (openBlock(), createElementBlock("section", _hoisted_18$5, [createElementVNode("p", _hoisted_19$5, toDisplayString(__props.characterTitle), 1), createElementVNode("ul", null, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.characters, ({ bonusLabel, id, label, statusLabel }) => {
1374
+ return openBlock(), createElementBlock("li", { key: id }, [createElementVNode("button", {
1375
+ class: "character",
1376
+ disabled: statusLabel !== "",
1377
+ type: "button",
1378
+ onClick: ($event) => pick(id)
1379
+ }, [
1380
+ createElementVNode("span", _hoisted_21$5, toDisplayString(label), 1),
1381
+ createElementVNode("span", _hoisted_22$4, toDisplayString(bonusLabel), 1),
1382
+ statusLabel ? (openBlock(), createElementBlock("span", _hoisted_23$3, toDisplayString(statusLabel), 1)) : createCommentVNode("v-if", true)
1383
+ ], 8, _hoisted_20$5)]);
1384
+ }), 128))])])) : createCommentVNode("v-if", true),
1385
+ __props.detail ? (openBlock(), createElementBlock("button", {
1386
+ key: 2,
1387
+ class: "action",
1388
+ type: "button",
1389
+ onClick: _cache[1] || (_cache[1] = ($event) => act())
1390
+ }, [_cache[5] || (_cache[5] = createElementVNode("span", {
1391
+ class: "ring",
1392
+ "aria-hidden": "true"
1393
+ }, null, -1)), createElementVNode("span", null, toDisplayString(__props.detail.actionLabel), 1)])) : createCommentVNode("v-if", true)
1394
+ ])], 2112);
1395
+ };
1396
+ }
1397
+ }), [["__scopeId", "data-v-ee73652f"]]);
1398
+ //#endregion
668
1399
  //#region src/components/TwoColumnScreen/Index.vue
669
- const _hoisted_1$15 = { class: "two-column-screen" };
670
- var Index_default$23 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1400
+ const _hoisted_1$20 = { class: "two-column-screen" };
1401
+ var Index_default$34 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
671
1402
  __name: "Index",
672
1403
  setup(__props) {
673
1404
  return (_ctx, _cache) => {
674
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" A screen drawn as two columns under a head row, its head spanning both. A screen of this shape takes its root from\n here, so a class on it names the screen and never restates the layout "), createElementVNode("div", _hoisted_1$15, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])], 2112);
1405
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" A screen drawn as two columns under a head row, its head spanning both. A screen of this shape takes its root from\n here, so a class on it names the screen and never restates the layout "), createElementVNode("div", _hoisted_1$20, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])], 2112);
675
1406
  };
676
1407
  }
677
1408
  }), [["__scopeId", "data-v-d9df7bbc"]]);
@@ -693,47 +1424,51 @@ let ForgeTab = /* @__PURE__ */ function(ForgeTab) {
693
1424
  }({});
694
1425
  //#endregion
695
1426
  //#region src/components/ForgeScreen/Index.vue
696
- const _hoisted_1$14 = { class: "head" };
697
- const _hoisted_2$12 = {
1427
+ const _hoisted_1$19 = { class: "head" };
1428
+ const _hoisted_2$15 = {
698
1429
  class: "title",
699
1430
  role: "heading",
700
1431
  "aria-level": "1"
701
1432
  };
702
- const _hoisted_3$10 = { class: "tabs" };
703
- const _hoisted_4$8 = ["aria-pressed"];
704
- const _hoisted_5$6 = ["aria-pressed"];
705
- const _hoisted_6$5 = { class: "coins" };
706
- const _hoisted_7$5 = ["aria-label"];
707
- const _hoisted_8$4 = { class: "recipes" };
708
- const _hoisted_9$4 = [
1433
+ const _hoisted_3$13 = { class: "tabs" };
1434
+ const _hoisted_4$12 = ["aria-pressed"];
1435
+ const _hoisted_5$11 = ["aria-pressed"];
1436
+ const _hoisted_6$10 = { class: "coins" };
1437
+ const _hoisted_7$10 = ["aria-label"];
1438
+ const _hoisted_8$7 = { class: "recipes" };
1439
+ const _hoisted_9$6 = [
709
1440
  "aria-pressed",
710
1441
  "disabled",
711
1442
  "onClick"
712
1443
  ];
713
- const _hoisted_10$4 = { class: "recipe-name" };
714
- const _hoisted_11$3 = { class: "recipe-time" };
715
- const _hoisted_12$3 = { class: "detail" };
716
- const _hoisted_13$3 = ["aria-label", "max"];
717
- const _hoisted_14$3 = { class: "total-time" };
718
- const _hoisted_15$3 = { class: "item-icon" };
719
- const _hoisted_16$3 = { class: "item-count" };
720
- const _hoisted_17$3 = { class: "amount-label" };
721
- const _hoisted_18$3 = { class: "amount-end amount-max" };
722
- const _hoisted_19$3 = { class: "materials-box" };
723
- const _hoisted_20$3 = { class: "materials-head" };
724
- const _hoisted_21$2 = { class: "materials-title" };
725
- const _hoisted_22$2 = { class: "support-title" };
1444
+ const _hoisted_10$6 = { class: "recipe-name" };
1445
+ const _hoisted_11$6 = { class: "recipe-time" };
1446
+ const _hoisted_12$6 = { class: "detail" };
1447
+ const _hoisted_13$6 = ["aria-label", "max"];
1448
+ const _hoisted_14$6 = { class: "total-time" };
1449
+ const _hoisted_15$5 = { class: "item-icon" };
1450
+ const _hoisted_16$5 = { class: "item-count" };
1451
+ const _hoisted_17$5 = { class: "amount-label" };
1452
+ const _hoisted_18$4 = { class: "amount-end amount-max" };
1453
+ const _hoisted_19$4 = { class: "materials-box" };
1454
+ const _hoisted_20$4 = { class: "materials-head" };
1455
+ const _hoisted_21$4 = { class: "materials-title" };
1456
+ const _hoisted_22$3 = { class: "support-title" };
726
1457
  const _hoisted_23$2 = { class: "required" };
727
- const _hoisted_24$2 = {
1458
+ const _hoisted_24$1 = {
1459
+ key: 1,
1460
+ class: "refusal"
1461
+ };
1462
+ const _hoisted_25$1 = {
728
1463
  key: 1,
729
1464
  class: "queues"
730
1465
  };
731
- const _hoisted_25$2 = ["data-state"];
732
- const _hoisted_26$2 = { class: "queue-name" };
733
- const _hoisted_27$2 = { class: "queue-progress" };
734
- const _hoisted_28$1 = { class: "queue-time" };
735
- const _hoisted_29$1 = ["onClick"];
736
- var Index_default$9 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1466
+ const _hoisted_26$1 = ["data-state"];
1467
+ const _hoisted_27$1 = { class: "queue-name" };
1468
+ const _hoisted_28$1 = { class: "queue-progress" };
1469
+ const _hoisted_29$1 = { class: "queue-time" };
1470
+ const _hoisted_30$1 = ["onClick"];
1471
+ var Index_default$15 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
737
1472
  __name: "Index",
738
1473
  props: /*@__PURE__*/ mergeModels({
739
1474
  amountLabel: {},
@@ -746,6 +1481,7 @@ var Index_default$9 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
746
1481
  queues: {},
747
1482
  queuesLabel: {},
748
1483
  recipes: {},
1484
+ refusalLabel: {},
749
1485
  requiredCoins: {},
750
1486
  startLabel: {},
751
1487
  supportLabel: {},
@@ -775,32 +1511,32 @@ var Index_default$9 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
775
1511
  const tab = useModel(__props, "tab");
776
1512
  const emit = __emit;
777
1513
  return (_ctx, _cache) => {
778
- 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$23, { class: "forge-screen" }, {
779
- default: withCtx(() => [createElementVNode("header", _hoisted_1$14, [
780
- createElementVNode("p", _hoisted_2$12, toDisplayString(__props.title), 1),
781
- createElementVNode("div", _hoisted_3$10, [createElementVNode("button", {
1514
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The forge, the blacksmith's screen: its two tabs across the head with the coins and the way out, the recipes on the\n left with the chosen one's amount and cost beside them, or the queues each holding an order that forges over real\n time and is obtained when it is done. Provisional: every place, size and colour here waits on the forge screen's\n passes against the public clip of the Wagner forge (references/forge-screen) and the owed order-queue recording "), createVNode(Index_default$34, { class: "forge-screen" }, {
1515
+ default: withCtx(() => [createElementVNode("header", _hoisted_1$19, [
1516
+ createElementVNode("p", _hoisted_2$15, toDisplayString(__props.title), 1),
1517
+ createElementVNode("div", _hoisted_3$13, [createElementVNode("button", {
782
1518
  class: "tab",
783
1519
  "aria-pressed": tab.value === unref(ForgeTab).Materials,
784
1520
  type: "button",
785
1521
  onClick: _cache[0] || (_cache[0] = ($event) => tab.value = unref(ForgeTab).Materials)
786
- }, toDisplayString(__props.materialsLabel), 9, _hoisted_4$8), createElementVNode("button", {
1522
+ }, toDisplayString(__props.materialsLabel), 9, _hoisted_4$12), createElementVNode("button", {
787
1523
  class: "tab",
788
1524
  "aria-pressed": tab.value === unref(ForgeTab).Queues,
789
1525
  type: "button",
790
1526
  onClick: _cache[1] || (_cache[1] = ($event) => tab.value = unref(ForgeTab).Queues)
791
- }, toDisplayString(__props.queuesLabel), 9, _hoisted_5$6)]),
792
- createElementVNode("p", _hoisted_6$5, toDisplayString(__props.coins), 1),
1527
+ }, toDisplayString(__props.queuesLabel), 9, _hoisted_5$11)]),
1528
+ createElementVNode("p", _hoisted_6$10, toDisplayString(__props.coins), 1),
793
1529
  createElementVNode("button", {
794
1530
  class: "close",
795
1531
  "aria-label": __props.closeLabel,
796
1532
  type: "button",
797
1533
  onClick: _cache[2] || (_cache[2] = ($event) => emit("close"))
798
- }, "×", 8, _hoisted_7$5)
799
- ]), tab.value === unref(ForgeTab).Materials ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createElementVNode("ul", _hoisted_8$4, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.recipes, (recipe) => {
1534
+ }, "×", 8, _hoisted_7$10)
1535
+ ]), tab.value === unref(ForgeTab).Materials ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createElementVNode("ul", _hoisted_8$7, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.recipes, (recipe) => {
800
1536
  return openBlock(), createElementBlock("li", { key: recipe.id }, [createElementVNode("button", {
801
1537
  class: "recipe",
802
1538
  "aria-pressed": recipe.id === recipeId.value,
803
- disabled: !recipe.isLearned,
1539
+ disabled: !recipe.isOpen,
804
1540
  type: "button",
805
1541
  onClick: ($event) => recipeId.value = recipe.id
806
1542
  }, [
@@ -808,10 +1544,10 @@ var Index_default$9 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
808
1544
  class: "recipe-tile",
809
1545
  "aria-hidden": "true"
810
1546
  }, null, -1)),
811
- createElementVNode("span", _hoisted_10$4, toDisplayString(recipe.name), 1),
812
- createElementVNode("span", _hoisted_11$3, toDisplayString(recipe.forgeTimeLabel), 1)
813
- ], 8, _hoisted_9$4)]);
814
- }), 128))]), createElementVNode("div", _hoisted_12$3, [
1547
+ createElementVNode("span", _hoisted_10$6, toDisplayString(recipe.name), 1),
1548
+ createElementVNode("span", _hoisted_11$6, toDisplayString(recipe.forgeTimeLabel), 1)
1549
+ ], 8, _hoisted_9$6)]);
1550
+ }), 128))]), createElementVNode("div", _hoisted_12$6, [
815
1551
  withDirectives(createElementVNode("input", {
816
1552
  "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => amount.value = $event),
817
1553
  "aria-label": __props.amountLabel,
@@ -819,60 +1555,61 @@ var Index_default$9 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
819
1555
  max: __props.amountMaximum,
820
1556
  min: "1",
821
1557
  type: "range"
822
- }, null, 8, _hoisted_13$3), [[
1558
+ }, null, 8, _hoisted_13$6), [[
823
1559
  vModelText,
824
1560
  amount.value,
825
1561
  void 0,
826
1562
  { number: true }
827
1563
  ]]),
828
- createElementVNode("p", _hoisted_14$3, toDisplayString(__props.totalTimeLabel), 1),
829
- createElementVNode("div", _hoisted_15$3, [createElementVNode("span", _hoisted_16$3, toDisplayString(__props.yieldCount), 1)]),
830
- createElementVNode("p", _hoisted_17$3, toDisplayString(__props.amountLabel), 1),
1564
+ createElementVNode("p", _hoisted_14$6, toDisplayString(__props.totalTimeLabel), 1),
1565
+ createElementVNode("div", _hoisted_15$5, [createElementVNode("span", _hoisted_16$5, toDisplayString(__props.yieldCount), 1)]),
1566
+ createElementVNode("p", _hoisted_17$5, toDisplayString(__props.amountLabel), 1),
831
1567
  _cache[10] || (_cache[10] = createElementVNode("span", {
832
1568
  "aria-hidden": "true",
833
1569
  class: "amount-step amount-minus"
834
1570
  }, "−", -1)),
835
1571
  _cache[11] || (_cache[11] = createElementVNode("span", { class: "amount-end amount-min" }, "1", -1)),
836
- createElementVNode("span", _hoisted_18$3, toDisplayString(__props.amountMaximum), 1),
1572
+ createElementVNode("span", _hoisted_18$4, toDisplayString(__props.amountMaximum), 1),
837
1573
  _cache[12] || (_cache[12] = createElementVNode("span", {
838
1574
  "aria-hidden": "true",
839
1575
  class: "amount-step amount-plus"
840
1576
  }, "+", -1)),
841
- createElementVNode("section", _hoisted_19$3, [
842
- createElementVNode("header", _hoisted_20$3, [createElementVNode("p", _hoisted_21$2, toDisplayString(__props.materialsBoxLabel), 1), createElementVNode("p", _hoisted_22$2, toDisplayString(__props.supportLabel), 1)]),
1577
+ createElementVNode("section", _hoisted_19$4, [
1578
+ createElementVNode("header", _hoisted_20$4, [createElementVNode("p", _hoisted_21$4, toDisplayString(__props.materialsBoxLabel), 1), createElementVNode("p", _hoisted_22$3, toDisplayString(__props.supportLabel), 1)]),
843
1579
  _cache[6] || (_cache[6] = createElementVNode("span", { class: "slot slot-first" }, null, -1)),
844
1580
  _cache[7] || (_cache[7] = createElementVNode("span", { class: "slot slot-second" }, null, -1)),
845
1581
  _cache[8] || (_cache[8] = createElementVNode("span", { class: "slot slot-third" }, null, -1)),
846
1582
  _cache[9] || (_cache[9] = createElementVNode("span", { class: "support-portrait" }, null, -1))
847
1583
  ]),
848
1584
  createElementVNode("p", _hoisted_23$2, toDisplayString(__props.requiredCoins), 1),
849
- createElementVNode("button", {
1585
+ !__props.refusalLabel ? (openBlock(), createElementBlock("button", {
1586
+ key: 0,
850
1587
  class: "start",
851
1588
  type: "button",
852
1589
  onClick: _cache[4] || (_cache[4] = ($event) => emit("start"))
853
- }, toDisplayString(__props.startLabel), 1)
854
- ])], 64)) : (openBlock(), createElementBlock("ul", _hoisted_24$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.queues, (queue) => {
1590
+ }, toDisplayString(__props.startLabel), 1)) : (openBlock(), createElementBlock("p", _hoisted_24$1, toDisplayString(__props.refusalLabel), 1))
1591
+ ])], 64)) : (openBlock(), createElementBlock("ul", _hoisted_25$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.queues, (queue) => {
855
1592
  return openBlock(), createElementBlock("li", {
856
1593
  key: queue.id,
857
1594
  class: "queue",
858
1595
  "data-state": queue.state
859
1596
  }, [
860
- createElementVNode("span", _hoisted_26$2, toDisplayString(queue.name), 1),
861
- createElementVNode("span", _hoisted_27$2, toDisplayString(queue.progressLabel), 1),
862
- createElementVNode("span", _hoisted_28$1, toDisplayString(queue.timeLabel), 1),
1597
+ createElementVNode("span", _hoisted_27$1, toDisplayString(queue.name), 1),
1598
+ createElementVNode("span", _hoisted_28$1, toDisplayString(queue.progressLabel), 1),
1599
+ createElementVNode("span", _hoisted_29$1, toDisplayString(queue.timeLabel), 1),
863
1600
  queue.state === unref(ForgeQueueState).Complete ? (openBlock(), createElementBlock("button", {
864
1601
  key: 0,
865
1602
  class: "obtain",
866
1603
  type: "button",
867
1604
  onClick: ($event) => emit("obtain", queue.id)
868
- }, toDisplayString(__props.obtainLabel), 9, _hoisted_29$1)) : createCommentVNode("v-if", true)
869
- ], 8, _hoisted_25$2);
1605
+ }, toDisplayString(__props.obtainLabel), 9, _hoisted_30$1)) : createCommentVNode("v-if", true)
1606
+ ], 8, _hoisted_26$1);
870
1607
  }), 128))]))]),
871
1608
  _: 1
872
1609
  })], 2112);
873
1610
  };
874
1611
  }
875
- }), [["__scopeId", "data-v-c1d8f7f3"]]);
1612
+ }), [["__scopeId", "data-v-4426e963"]]);
876
1613
  //#endregion
877
1614
  //#region src/services/toCanvasRect.ts
878
1615
  const toPair = ([x = 0, y = 0]) => [x, y];
@@ -933,8 +1670,8 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
933
1670
  });
934
1671
  //#endregion
935
1672
  //#region src/components/GameScreen/Index.vue
936
- const _hoisted_1$13 = ["data-interaction-state"];
937
- var Index_default$11 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1673
+ const _hoisted_1$18 = ["data-interaction-state"];
1674
+ var Index_default$17 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
938
1675
  __name: "Index",
939
1676
  props: {
940
1677
  interactionState: {},
@@ -956,21 +1693,21 @@ var Index_default$11 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
956
1693
  class: "game-screen",
957
1694
  "data-interaction-state": __props.interactionState,
958
1695
  style: normalizeStyle(style.value)
959
- }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 12, _hoisted_1$13)], 2112);
1696
+ }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 12, _hoisted_1$18)], 2112);
960
1697
  };
961
1698
  }
962
1699
  }), [["__scopeId", "data-v-b0f87b0b"]]);
963
1700
  //#endregion
964
1701
  //#region src/components/InteractionPrompts/Index.vue
965
- const _hoisted_1$12 = ["aria-current", "data-kind"];
966
- const _hoisted_2$11 = {
1702
+ const _hoisted_1$17 = ["aria-current", "data-kind"];
1703
+ const _hoisted_2$14 = {
967
1704
  key: 0,
968
1705
  class: "key",
969
1706
  "aria-hidden": "true"
970
1707
  };
971
- const _hoisted_3$9 = ["onClick"];
972
- const _hoisted_4$7 = { class: "name" };
973
- var Index_default$12 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1708
+ const _hoisted_3$12 = ["onClick"];
1709
+ const _hoisted_4$11 = { class: "name" };
1710
+ var Index_default$18 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
974
1711
  __name: "Index",
975
1712
  props: {
976
1713
  isTouch: {
@@ -992,14 +1729,14 @@ var Index_default$12 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
992
1729
  class: "prompt",
993
1730
  "aria-current": !__props.isTouch && id === __props.selectedId || void 0,
994
1731
  "data-kind": kind
995
- }, [!__props.isTouch ? (openBlock(), createElementBlock("kbd", _hoisted_2$11, toDisplayString(id === __props.selectedId ? unref("F") : ""), 1)) : createCommentVNode("v-if", true), createElementVNode("button", {
1732
+ }, [!__props.isTouch ? (openBlock(), createElementBlock("kbd", _hoisted_2$14, toDisplayString(id === __props.selectedId ? unref("F") : ""), 1)) : createCommentVNode("v-if", true), createElementVNode("button", {
996
1733
  class: "pill",
997
1734
  type: "button",
998
1735
  onClick: ($event) => emit("press", id)
999
1736
  }, [_cache[0] || (_cache[0] = createElementVNode("span", {
1000
1737
  class: "icon",
1001
1738
  "aria-hidden": "true"
1002
- }, null, -1)), createElementVNode("span", _hoisted_4$7, toDisplayString(name), 1)], 8, _hoisted_3$9)], 8, _hoisted_1$12);
1739
+ }, null, -1)), createElementVNode("span", _hoisted_4$11, toDisplayString(name), 1)], 8, _hoisted_3$12)], 8, _hoisted_1$17);
1003
1740
  }), 128))], 2)], 2112);
1004
1741
  };
1005
1742
  }
@@ -1014,57 +1751,57 @@ let InventorySort = /* @__PURE__ */ function(InventorySort) {
1014
1751
  const InventorySorts = Object.values(InventorySort);
1015
1752
  //#endregion
1016
1753
  //#region src/components/InventoryScreen/Index.vue
1017
- const _hoisted_1$11 = { class: "inventory-screen" };
1018
- const _hoisted_2$10 = ["inert"];
1019
- const _hoisted_3$8 = {
1754
+ const _hoisted_1$16 = { class: "inventory-screen" };
1755
+ const _hoisted_2$13 = ["inert"];
1756
+ const _hoisted_3$11 = {
1020
1757
  class: "title",
1021
1758
  role: "heading",
1022
1759
  "aria-level": "1"
1023
1760
  };
1024
- const _hoisted_4$6 = { class: "tabs" };
1025
- const _hoisted_5$5 = [
1761
+ const _hoisted_4$10 = { class: "tabs" };
1762
+ const _hoisted_5$10 = [
1026
1763
  "aria-label",
1027
1764
  "aria-pressed",
1028
1765
  "data-category",
1029
1766
  "onClick"
1030
1767
  ];
1031
- const _hoisted_6$4 = { class: "capacity" };
1032
- const _hoisted_7$4 = ["aria-label"];
1033
- const _hoisted_8$3 = { class: "grid" };
1034
- const _hoisted_9$3 = [
1768
+ const _hoisted_6$9 = { class: "capacity" };
1769
+ const _hoisted_7$9 = ["aria-label"];
1770
+ const _hoisted_8$6 = { class: "grid" };
1771
+ const _hoisted_9$5 = [
1035
1772
  "aria-label",
1036
1773
  "aria-pressed",
1037
1774
  "data-rarity",
1038
1775
  "data-selected",
1039
1776
  "onClick"
1040
1777
  ];
1041
- const _hoisted_10$3 = { class: "caption" };
1042
- const _hoisted_11$2 = ["data-rarity"];
1043
- const _hoisted_12$2 = { class: "detail-name" };
1044
- const _hoisted_13$2 = { class: "detail-caption" };
1045
- const _hoisted_14$2 = ["aria-label", "aria-pressed"];
1046
- const _hoisted_15$2 = {
1778
+ const _hoisted_10$5 = { class: "caption" };
1779
+ const _hoisted_11$5 = ["data-rarity"];
1780
+ const _hoisted_12$5 = { class: "detail-name" };
1781
+ const _hoisted_13$5 = { class: "detail-caption" };
1782
+ const _hoisted_14$5 = ["aria-label", "aria-pressed"];
1783
+ const _hoisted_15$4 = {
1047
1784
  key: 1,
1048
1785
  class: "destroy"
1049
1786
  };
1050
- const _hoisted_16$2 = { class: "destroy-tip" };
1051
- const _hoisted_17$2 = {
1787
+ const _hoisted_16$4 = { class: "destroy-tip" };
1788
+ const _hoisted_17$4 = {
1052
1789
  key: 0,
1053
1790
  class: "destroy-cannot"
1054
1791
  };
1055
- const _hoisted_18$2 = { class: "quick-selects" };
1056
- const _hoisted_19$2 = ["data-rarity", "onClick"];
1057
- const _hoisted_20$2 = { class: "destroy-count" };
1058
- const _hoisted_21$1 = ["disabled"];
1059
- const _hoisted_22$1 = { class: "sort" };
1792
+ const _hoisted_18$3 = { class: "quick-selects" };
1793
+ const _hoisted_19$3 = ["data-rarity", "onClick"];
1794
+ const _hoisted_20$3 = { class: "destroy-count" };
1795
+ const _hoisted_21$3 = ["disabled"];
1796
+ const _hoisted_22$2 = { class: "sort" };
1060
1797
  const _hoisted_23$1 = ["value"];
1061
- const _hoisted_24$1 = ["aria-label", "data-descending"];
1062
- const _hoisted_25$1 = {
1798
+ const _hoisted_24 = ["aria-label", "data-descending"];
1799
+ const _hoisted_25 = {
1063
1800
  key: 3,
1064
1801
  class: "currencies"
1065
1802
  };
1066
- const _hoisted_26$1 = ["data-currency"];
1067
- const _hoisted_27$1 = { class: "currency-name" };
1803
+ const _hoisted_26 = ["data-currency"];
1804
+ const _hoisted_27 = { class: "currency-name" };
1068
1805
  const _hoisted_28 = {
1069
1806
  key: 0,
1070
1807
  class: "top-up"
@@ -1082,7 +1819,7 @@ const _hoisted_35 = { class: "confirm-list-label" };
1082
1819
  const _hoisted_36 = { class: "confirm-names" };
1083
1820
  const _hoisted_37 = { class: "confirm-buttons" };
1084
1821
  const _hoisted_38 = ["disabled"];
1085
- var Index_default$13 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1822
+ var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1086
1823
  __name: "Index",
1087
1824
  props: /*@__PURE__*/ mergeModels({
1088
1825
  backLabel: {},
@@ -1107,11 +1844,15 @@ var Index_default$13 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1107
1844
  isDestroyFull: { type: Boolean },
1108
1845
  isDestroying: { type: Boolean },
1109
1846
  isSortable: { type: Boolean },
1847
+ lockLabel: {},
1110
1848
  orderLabel: {},
1111
1849
  quickSelects: {},
1850
+ quickUseLabel: {},
1112
1851
  sortLabels: {},
1113
1852
  tabLabels: {},
1114
- title: {}
1853
+ title: {},
1854
+ unlockLabel: {},
1855
+ useLabel: {}
1115
1856
  }, {
1116
1857
  "category": { required: true },
1117
1858
  "categoryModifiers": {},
@@ -1131,8 +1872,11 @@ var Index_default$13 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1131
1872
  "close",
1132
1873
  "confirmDestroy",
1133
1874
  "destroy",
1875
+ "lock",
1134
1876
  "quickSelect",
1135
- "toggleDestroy"
1877
+ "quickUse",
1878
+ "toggleDestroy",
1879
+ "use"
1136
1880
  ], [
1137
1881
  "update:category",
1138
1882
  "update:sort",
@@ -1156,13 +1900,13 @@ var Index_default$13 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1156
1900
  else (returnFocus?.isConnected ? returnFocus : trashButton.value)?.focus();
1157
1901
  });
1158
1902
  return (_ctx, _cache) => {
1159
- 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$11, [
1903
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The bag, the B key's: its nine tabs across the head in the game's order, the open tab's room beside the way back,\n Its grid of four columns, the entry chosen with its detail panel, and the sort along the foot. Provisional: the\n Tabs' icons and the grid's entries' icons wait on the glyph pass, and the sort, the wallet's place and the\n Panel's stats and footer wait on the bag's other recordings "), createElementVNode("div", _hoisted_1$16, [
1160
1904
  createElementVNode("div", {
1161
1905
  class: "bag",
1162
1906
  inert: __props.isConfirming
1163
1907
  }, [
1164
- createElementVNode("p", _hoisted_3$8, toDisplayString(__props.title), 1),
1165
- createElementVNode("ul", _hoisted_4$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(ItemCategories), (itemCategory) => {
1908
+ createElementVNode("p", _hoisted_3$11, toDisplayString(__props.title), 1),
1909
+ createElementVNode("ul", _hoisted_4$10, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(ItemCategories), (itemCategory) => {
1166
1910
  return openBlock(), createElementBlock("li", { key: itemCategory }, [createElementVNode("button", {
1167
1911
  class: "tab",
1168
1912
  "aria-label": __props.tabLabels[itemCategory],
@@ -1170,16 +1914,16 @@ var Index_default$13 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1170
1914
  "data-category": itemCategory,
1171
1915
  type: "button",
1172
1916
  onClick: ($event) => category.value = itemCategory
1173
- }, null, 8, _hoisted_5$5)]);
1917
+ }, null, 8, _hoisted_5$10)]);
1174
1918
  }), 128))]),
1175
- createElementVNode("p", _hoisted_6$4, toDisplayString(__props.capacity), 1),
1919
+ createElementVNode("p", _hoisted_6$9, toDisplayString(__props.capacity), 1),
1176
1920
  createElementVNode("button", {
1177
1921
  class: "back",
1178
1922
  "aria-label": __props.backLabel,
1179
1923
  type: "button",
1180
1924
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
1181
- }, null, 8, _hoisted_7$4),
1182
- createElementVNode("ul", _hoisted_8$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.cells, (cell) => {
1925
+ }, null, 8, _hoisted_7$9),
1926
+ createElementVNode("ul", _hoisted_8$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.cells, (cell) => {
1183
1927
  return openBlock(), createElementBlock("li", { key: cell.id }, [createElementVNode("button", {
1184
1928
  class: "cell",
1185
1929
  "aria-label": cell.name,
@@ -1188,13 +1932,28 @@ var Index_default$13 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1188
1932
  "data-selected": cell.isSelected,
1189
1933
  type: "button",
1190
1934
  onClick: ($event) => __props.isDestroying && cell.isDestroyable ? emit("choose", cell.id) : selectedId.value = cell.id
1191
- }, [createElementVNode("span", _hoisted_10$3, toDisplayString(cell.caption), 1)], 8, _hoisted_9$3)]);
1935
+ }, [createElementVNode("span", _hoisted_10$5, toDisplayString(cell.caption), 1)], 8, _hoisted_9$5)]);
1192
1936
  }), 128))]),
1193
1937
  selectedCell.value ? (openBlock(), createElementBlock("section", {
1194
1938
  key: 0,
1195
1939
  class: "detail",
1196
1940
  "data-rarity": selectedCell.value.rarity
1197
- }, [createElementVNode("p", _hoisted_12$2, toDisplayString(selectedCell.value.name), 1), createElementVNode("p", _hoisted_13$2, toDisplayString(selectedCell.value.caption), 1)], 8, _hoisted_11$2)) : createCommentVNode("v-if", true),
1941
+ }, [
1942
+ createElementVNode("p", _hoisted_12$5, toDisplayString(selectedCell.value.name), 1),
1943
+ createElementVNode("p", _hoisted_13$5, toDisplayString(selectedCell.value.caption), 1),
1944
+ selectedCell.value.isUsable && !__props.isDestroying ? (openBlock(), createElementBlock("button", {
1945
+ key: 0,
1946
+ class: "use",
1947
+ type: "button",
1948
+ onClick: _cache[1] || (_cache[1] = ($event) => emit("use", selectedCell.value.id))
1949
+ }, toDisplayString(__props.useLabel), 1)) : createCommentVNode("v-if", true),
1950
+ selectedCell.value.isLockable && !__props.isDestroying ? (openBlock(), createElementBlock("button", {
1951
+ key: 1,
1952
+ class: "lock",
1953
+ type: "button",
1954
+ onClick: _cache[2] || (_cache[2] = ($event) => emit("lock", selectedCell.value.id))
1955
+ }, toDisplayString(selectedCell.value.isLocked ? __props.unlockLabel : __props.lockLabel), 1)) : createCommentVNode("v-if", true)
1956
+ ], 8, _hoisted_11$5)) : createCommentVNode("v-if", true),
1198
1957
  createElementVNode("button", {
1199
1958
  ref_key: "trashButton",
1200
1959
  ref: trashButton,
@@ -1202,31 +1961,31 @@ var Index_default$13 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1202
1961
  "aria-label": __props.destroyLabel,
1203
1962
  "aria-pressed": __props.isDestroying,
1204
1963
  type: "button",
1205
- onClick: _cache[1] || (_cache[1] = ($event) => emit("toggleDestroy"))
1206
- }, null, 8, _hoisted_14$2),
1964
+ onClick: _cache[3] || (_cache[3] = ($event) => emit("toggleDestroy"))
1965
+ }, null, 8, _hoisted_14$5),
1207
1966
  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 "),
1208
- __props.isDestroying ? (openBlock(), createElementBlock("section", _hoisted_15$2, [
1209
- createElementVNode("p", _hoisted_16$2, toDisplayString(__props.destroyTipLabel), 1),
1210
- selectedCell.value && !selectedCell.value.isDestroyable ? (openBlock(), createElementBlock("p", _hoisted_17$2, toDisplayString(__props.destroyCannotLabel), 1)) : createCommentVNode("v-if", true),
1211
- createElementVNode("ul", _hoisted_18$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.quickSelects, ({ label, rarity }) => {
1967
+ __props.isDestroying ? (openBlock(), createElementBlock("section", _hoisted_15$4, [
1968
+ createElementVNode("p", _hoisted_16$4, toDisplayString(__props.destroyTipLabel), 1),
1969
+ selectedCell.value && !selectedCell.value.isDestroyable ? (openBlock(), createElementBlock("p", _hoisted_17$4, toDisplayString(__props.destroyCannotLabel), 1)) : createCommentVNode("v-if", true),
1970
+ createElementVNode("ul", _hoisted_18$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.quickSelects, ({ label, rarity }) => {
1212
1971
  return openBlock(), createElementBlock("li", { key: rarity }, [createElementVNode("button", {
1213
1972
  class: "quick-select",
1214
1973
  "data-rarity": rarity,
1215
1974
  type: "button",
1216
1975
  onClick: ($event) => emit("quickSelect", rarity)
1217
- }, toDisplayString(label), 9, _hoisted_19$2)]);
1976
+ }, toDisplayString(label), 9, _hoisted_19$3)]);
1218
1977
  }), 128))]),
1219
- createElementVNode("p", _hoisted_20$2, toDisplayString(__props.destroySelectedLabel), 1),
1978
+ createElementVNode("p", _hoisted_20$3, toDisplayString(__props.destroySelectedLabel), 1),
1220
1979
  createElementVNode("button", {
1221
1980
  class: "destroy-button",
1222
1981
  disabled: !__props.destroyNames.length,
1223
1982
  type: "button",
1224
- onClick: _cache[2] || (_cache[2] = ($event) => emit("destroy"))
1225
- }, toDisplayString(__props.destroyButtonLabel), 9, _hoisted_21$1)
1983
+ onClick: _cache[4] || (_cache[4] = ($event) => emit("destroy"))
1984
+ }, toDisplayString(__props.destroyButtonLabel), 9, _hoisted_21$3)
1226
1985
  ])) : __props.isSortable ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
1227
- _cache[7] || (_cache[7] = createElementVNode("span", { class: "filter" }, null, -1)),
1228
- createElementVNode("div", _hoisted_22$1, [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", {
1229
- "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => sort.value = $event),
1986
+ _cache[10] || (_cache[10] = createElementVNode("span", { class: "filter" }, null, -1)),
1987
+ createElementVNode("div", _hoisted_22$2, [createCommentVNode(" eslint-disable-next-line vuejs-accessibility/form-control-has-label -- the sort's caption is no game text key yet, so no name in the reader's language exists until the bag's sort recording keys it; its options name it meanwhile "), withDirectives(createElementVNode("select", {
1988
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => sort.value = $event),
1230
1989
  class: "sort-select"
1231
1990
  }, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(InventorySorts), (inventorySort) => {
1232
1991
  return openBlock(), createElementBlock("option", {
@@ -1239,21 +1998,28 @@ var Index_default$13 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1239
1998
  "aria-label": __props.orderLabel,
1240
1999
  "data-descending": isDescending.value,
1241
2000
  type: "button",
1242
- onClick: _cache[4] || (_cache[4] = ($event) => isDescending.value = !isDescending.value)
1243
- }, null, 8, _hoisted_24$1)
1244
- ], 64)) : (openBlock(), createElementBlock("ul", _hoisted_25$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.currencies, ({ id, isTopUp, name, quantity }) => {
2001
+ onClick: _cache[6] || (_cache[6] = ($event) => isDescending.value = !isDescending.value)
2002
+ }, null, 8, _hoisted_24)
2003
+ ], 64)) : (openBlock(), createElementBlock("ul", _hoisted_25, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.currencies, ({ id, isTopUp, name, quantity }) => {
1245
2004
  return openBlock(), createElementBlock("li", {
1246
2005
  key: id,
1247
2006
  class: "currency",
1248
2007
  "data-currency": id
1249
2008
  }, [
1250
- createElementVNode("span", _hoisted_27$1, toDisplayString(name), 1),
1251
- _cache[8] || (_cache[8] = createElementVNode("span", { class: "currency-icon" }, null, -1)),
2009
+ createElementVNode("span", _hoisted_27, toDisplayString(name), 1),
2010
+ _cache[11] || (_cache[11] = createElementVNode("span", { class: "currency-icon" }, null, -1)),
1252
2011
  createTextVNode(" " + toDisplayString(quantity) + " ", 1),
1253
2012
  isTopUp ? (openBlock(), createElementBlock("span", _hoisted_28)) : createCommentVNode("v-if", true)
1254
- ], 8, _hoisted_26$1);
1255
- }), 128))]))
1256
- ], 8, _hoisted_2$10),
2013
+ ], 8, _hoisted_26);
2014
+ }), 128))])),
2015
+ createCommentVNode(" The gadget's action under the detail panel, which equips the gadget to the quick-use slot. Provisional: its place\n is where the controller recording shows a gadget's action, the bottom bar's X, until the keyboard's is read "),
2016
+ selectedCell.value?.isEquipable && !__props.isDestroying ? (openBlock(), createElementBlock("button", {
2017
+ key: 4,
2018
+ class: "quick-use",
2019
+ type: "button",
2020
+ onClick: _cache[7] || (_cache[7] = ($event) => emit("quickUse", selectedCell.value.id))
2021
+ }, toDisplayString(__props.quickUseLabel), 1)) : createCommentVNode("v-if", true)
2022
+ ], 8, _hoisted_2$13),
1257
2023
  createCommentVNode(" The dialog the Destroy button opens over the bag: the entries to be destroyed, and the warning that it cannot be\n undone, in the game's own wording. Provisional until the dialog is recorded "),
1258
2024
  __props.isConfirming ? (openBlock(), createElementBlock("section", {
1259
2025
  key: 0,
@@ -1277,45 +2043,22 @@ var Index_default$13 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1277
2043
  ref: cancelButton,
1278
2044
  class: "confirm-button",
1279
2045
  type: "button",
1280
- onClick: _cache[5] || (_cache[5] = ($event) => emit("cancelDestroy"))
2046
+ onClick: _cache[8] || (_cache[8] = ($event) => emit("cancelDestroy"))
1281
2047
  }, toDisplayString(__props.cancelLabel), 513), createElementVNode("button", {
1282
2048
  disabled: __props.isDestroyFull,
1283
2049
  class: "confirm-button",
1284
2050
  type: "button",
1285
- onClick: _cache[6] || (_cache[6] = ($event) => emit("confirmDestroy"))
2051
+ onClick: _cache[9] || (_cache[9] = ($event) => emit("confirmDestroy"))
1286
2052
  }, toDisplayString(__props.destroyConfirmButtonLabel), 9, _hoisted_38)])
1287
2053
  ], 8, _hoisted_29)) : createCommentVNode("v-if", true)
1288
2054
  ])], 2112);
1289
2055
  };
1290
2056
  }
1291
- }), [["__scopeId", "data-v-f5de1664"]]);
1292
- //#endregion
1293
- //#region src/components/ItemTile/Index.vue
1294
- const _hoisted_1$10 = ["data-rarity"];
1295
- const _hoisted_2$9 = { class: "face" };
1296
- const _hoisted_3$7 = {
1297
- class: "count",
1298
- "aria-hidden": "true"
1299
- };
1300
- var Index_default$14 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1301
- __name: "Index",
1302
- props: {
1303
- count: {},
1304
- rarity: {}
1305
- },
1306
- setup(__props) {
1307
- return (_ctx, _cache) => {
1308
- 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", {
1309
- class: "item-tile",
1310
- "data-rarity": __props.rarity
1311
- }, [createElementVNode("span", _hoisted_2$9, [createElementVNode("span", _hoisted_3$7, toDisplayString(__props.count), 1)])], 8, _hoisted_1$10)], 2112);
1312
- };
1313
- }
1314
- }), [["__scopeId", "data-v-5f64ed92"]]);
2057
+ }), [["__scopeId", "data-v-cf391b68"]]);
1315
2058
  //#endregion
1316
2059
  //#region src/components/LoadingSpinner/Index.vue
1317
- const _hoisted_1$9 = ["aria-label"];
1318
- var Index_default$15 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2060
+ const _hoisted_1$15 = ["aria-label"];
2061
+ var Index_default$21 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1319
2062
  __name: "Index",
1320
2063
  props: { label: {} },
1321
2064
  setup(__props) {
@@ -1324,48 +2067,144 @@ var Index_default$15 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1324
2067
  class: "loading-spinner",
1325
2068
  role: "status",
1326
2069
  "aria-label": __props.label
1327
- }, [..._cache[0] || (_cache[0] = [createElementVNode("span", { class: "ring" }, null, -1)])], 8, _hoisted_1$9)], 2112);
2070
+ }, [..._cache[0] || (_cache[0] = [createElementVNode("span", { class: "ring" }, null, -1)])], 8, _hoisted_1$15)], 2112);
1328
2071
  };
1329
2072
  }
1330
2073
  }), [["__scopeId", "data-v-69cb5a34"]]);
1331
2074
  //#endregion
1332
2075
  //#region src/components/OrnamentDivider/Index.vue
1333
- const _hoisted_1$8 = {
2076
+ const _hoisted_1$14 = {
1334
2077
  class: "ornament-divider",
1335
2078
  "aria-hidden": "true"
1336
2079
  };
1337
- const _hoisted_2$8 = {
2080
+ const _hoisted_2$12 = {
1338
2081
  class: "end",
1339
2082
  viewBox: "0 0 320 224"
1340
2083
  };
1341
- const _hoisted_3$6 = ["d"];
1342
- const _hoisted_4$5 = {
2084
+ const _hoisted_3$10 = ["d"];
2085
+ const _hoisted_4$9 = {
1343
2086
  class: "middle",
1344
2087
  viewBox: "0 0 480 320"
1345
2088
  };
1346
- const _hoisted_5$4 = ["d"];
1347
- const _hoisted_6$3 = {
2089
+ const _hoisted_5$9 = ["d"];
2090
+ const _hoisted_6$8 = {
1348
2091
  class: "end right",
1349
2092
  viewBox: "0 0 320 224"
1350
2093
  };
1351
- const _hoisted_7$3 = ["d"];
1352
- var Index_default$16 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2094
+ const _hoisted_7$8 = ["d"];
2095
+ var Index_default$22 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1353
2096
  __name: "Index",
1354
2097
  setup(__props) {
1355
2098
  return (_ctx, _cache) => {
1356
- 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$8, [
1357
- (openBlock(), createElementBlock("svg", _hoisted_2$8, [createElementVNode("path", { d: unref(ORNAMENT_END_PATH) }, null, 8, _hoisted_3$6)])),
1358
- (openBlock(), createElementBlock("svg", _hoisted_4$5, [createElementVNode("path", { d: unref(ORNAMENT_MIDDLE_PATH) }, null, 8, _hoisted_5$4)])),
1359
- (openBlock(), createElementBlock("svg", _hoisted_6$3, [createElementVNode("path", { d: unref(ORNAMENT_END_PATH) }, null, 8, _hoisted_7$3)]))
2099
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The game's divider: a hairline as wide as its parent, a tapered diamond at each end and an interlocked double\n Diamond at its middle, in the game's units from the parent's `--unit` "), createElementVNode("div", _hoisted_1$14, [
2100
+ (openBlock(), createElementBlock("svg", _hoisted_2$12, [createElementVNode("path", { d: unref(ORNAMENT_END_PATH) }, null, 8, _hoisted_3$10)])),
2101
+ (openBlock(), createElementBlock("svg", _hoisted_4$9, [createElementVNode("path", { d: unref(ORNAMENT_MIDDLE_PATH) }, null, 8, _hoisted_5$9)])),
2102
+ (openBlock(), createElementBlock("svg", _hoisted_6$8, [createElementVNode("path", { d: unref(ORNAMENT_END_PATH) }, null, 8, _hoisted_7$8)]))
2103
+ ])], 2112);
2104
+ };
2105
+ }
2106
+ }), [["__scopeId", "data-v-335021af"]]);
2107
+ //#endregion
2108
+ //#region src/components/PartySetupScreen/Index.vue
2109
+ const _hoisted_1$13 = { class: "party-setup-screen" };
2110
+ const _hoisted_2$11 = { class: "head" };
2111
+ const _hoisted_3$9 = { class: "title" };
2112
+ const _hoisted_4$8 = ["aria-label"];
2113
+ const _hoisted_5$8 = { class: "team" };
2114
+ const _hoisted_6$7 = { class: "slots" };
2115
+ const _hoisted_7$7 = ["data-empty"];
2116
+ const _hoisted_8$5 = {
2117
+ key: 0,
2118
+ class: "plate"
2119
+ };
2120
+ const _hoisted_9$4 = { class: "name" };
2121
+ const _hoisted_10$4 = {
2122
+ key: 0,
2123
+ class: "element",
2124
+ viewBox: "0 0 1600 1600",
2125
+ "aria-hidden": "true"
2126
+ };
2127
+ const _hoisted_11$4 = ["d"];
2128
+ const _hoisted_12$4 = { class: "level" };
2129
+ const _hoisted_13$4 = {
2130
+ key: 1,
2131
+ class: "plus",
2132
+ "aria-hidden": "true"
2133
+ };
2134
+ const _hoisted_14$4 = { class: "foot" };
2135
+ const _hoisted_15$3 = { class: "team-bar" };
2136
+ const _hoisted_16$3 = { class: "team-name" };
2137
+ const _hoisted_17$3 = { class: "deploy-bar" };
2138
+ var Index_default$23 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2139
+ __name: "Index",
2140
+ props: {
2141
+ backLabel: {},
2142
+ configureTeamLabel: {},
2143
+ deployLabel: {},
2144
+ quickSetupLabel: {},
2145
+ slots: {},
2146
+ teamName: {},
2147
+ title: {}
2148
+ },
2149
+ emits: [
2150
+ "close",
2151
+ "configureTeam",
2152
+ "deploy",
2153
+ "next",
2154
+ "previous",
2155
+ "quickSetup"
2156
+ ],
2157
+ setup(__props, { emit: __emit }) {
2158
+ const emit = __emit;
2159
+ return (_ctx, _cache) => {
2160
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" Party Setup, the team the player is looking at, fitted to the public clip's frame at 1080 high: the team's name and\n Configure Team at the foot's left, its four members standing across the middle with a name plate over each (its\n name, its element's mark and its level), an empty slot a plus, the arrows at either edge to step to the other teams,\n and Quick Setup and Deploy at the foot's right. The parity pass measures it against that frame "), createElementVNode("div", _hoisted_1$13, [
2161
+ createElementVNode("header", _hoisted_2$11, [createElementVNode("h1", _hoisted_3$9, toDisplayString(__props.title), 1), createElementVNode("button", {
2162
+ class: "back",
2163
+ "aria-label": __props.backLabel,
2164
+ type: "button",
2165
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
2166
+ }, "↶", 8, _hoisted_4$8)]),
2167
+ createElementVNode("section", _hoisted_5$8, [
2168
+ createElementVNode("button", {
2169
+ class: "step previous",
2170
+ type: "button",
2171
+ onClick: _cache[1] || (_cache[1] = ($event) => emit("previous"))
2172
+ }, "‹"),
2173
+ createElementVNode("ol", _hoisted_6$7, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.slots, (slot, index) => {
2174
+ return openBlock(), createElementBlock("li", {
2175
+ key: index,
2176
+ class: "slot",
2177
+ "data-empty": !slot.levelText || void 0
2178
+ }, [slot.levelText ? (openBlock(), createElementBlock("div", _hoisted_8$5, [createElementVNode("span", _hoisted_9$4, [slot.elementMarkPath ? (openBlock(), createElementBlock("svg", _hoisted_10$4, [createElementVNode("path", { d: slot.elementMarkPath }, null, 8, _hoisted_11$4)])) : createCommentVNode("v-if", true), createTextVNode(" " + toDisplayString(slot.name), 1)]), createElementVNode("span", _hoisted_12$4, toDisplayString(slot.levelText), 1)])) : (openBlock(), createElementBlock("span", _hoisted_13$4, "+"))], 8, _hoisted_7$7);
2179
+ }), 128))]),
2180
+ createElementVNode("button", {
2181
+ class: "step next",
2182
+ type: "button",
2183
+ onClick: _cache[2] || (_cache[2] = ($event) => emit("next"))
2184
+ }, "›")
2185
+ ]),
2186
+ createElementVNode("footer", _hoisted_14$4, [createElementVNode("div", _hoisted_15$3, [createElementVNode("p", _hoisted_16$3, toDisplayString(__props.teamName), 1), createElementVNode("button", {
2187
+ class: "action",
2188
+ type: "button",
2189
+ onClick: _cache[3] || (_cache[3] = ($event) => emit("configureTeam"))
2190
+ }, toDisplayString(__props.configureTeamLabel), 1)]), createElementVNode("div", _hoisted_17$3, [createElementVNode("button", {
2191
+ class: "action",
2192
+ type: "button",
2193
+ onClick: _cache[4] || (_cache[4] = ($event) => emit("quickSetup"))
2194
+ }, toDisplayString(__props.quickSetupLabel), 1), createElementVNode("button", {
2195
+ class: "action",
2196
+ type: "button",
2197
+ onClick: _cache[5] || (_cache[5] = ($event) => emit("deploy"))
2198
+ }, toDisplayString(__props.deployLabel), 1)])])
1360
2199
  ])], 2112);
1361
2200
  };
1362
2201
  }
1363
- }), [["__scopeId", "data-v-335021af"]]);
2202
+ }), [["__scopeId", "data-v-876761d0"]]);
1364
2203
  //#endregion
1365
2204
  //#region src/components/ProgressBar/Index.vue
1366
- const _hoisted_1$7 = ["aria-valuenow"];
1367
- const _hoisted_2$7 = { class: "track" };
1368
- var Index_default$17 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2205
+ const _hoisted_1$12 = ["aria-valuenow"];
2206
+ const _hoisted_2$10 = { class: "track" };
2207
+ var Index_default$25 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1369
2208
  __name: "Index",
1370
2209
  props: {
1371
2210
  isFolded: { type: Boolean },
@@ -1381,68 +2220,85 @@ var Index_default$17 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1381
2220
  "aria-valuenow": Math.round(__props.progress * 100)
1382
2221
  }, [
1383
2222
  _cache[0] || (_cache[0] = createElementVNode("span", { class: "diamond" }, null, -1)),
1384
- createElementVNode("span", _hoisted_2$7, [createElementVNode("span", {
2223
+ createElementVNode("span", _hoisted_2$10, [createElementVNode("span", {
1385
2224
  class: "fill",
1386
2225
  style: normalizeStyle({ width: `${__props.progress * 100}%` })
1387
2226
  }, null, 4)]),
1388
2227
  _cache[1] || (_cache[1] = createElementVNode("span", { class: "diamond" }, null, -1))
1389
- ], 10, _hoisted_1$7)], 2112);
2228
+ ], 10, _hoisted_1$12)], 2112);
1390
2229
  };
1391
2230
  }
1392
2231
  }), [["__scopeId", "data-v-bea8e745"]]);
1393
2232
  //#endregion
1394
2233
  //#region src/components/PromptBand/Index.vue
1395
- const _sfc_main$7 = {};
1396
- const _hoisted_1$6 = { class: "prompt-band" };
1397
- const _hoisted_2$6 = { class: "text" };
1398
- function _sfc_render$1(_ctx, _cache) {
1399
- 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$6, [createElementVNode("p", _hoisted_2$6, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])])], 2112);
2234
+ const _sfc_main$12 = {};
2235
+ const _hoisted_1$11 = { class: "prompt-band" };
2236
+ const _hoisted_2$9 = { class: "text" };
2237
+ function _sfc_render(_ctx, _cache) {
2238
+ 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);
1400
2239
  }
1401
- var Index_default$18 = /*#__PURE__*/ export_helper_default(_sfc_main$7, [["render", _sfc_render$1], ["__scopeId", "data-v-8c88bb3d"]]);
2240
+ var Index_default$26 = /*#__PURE__*/ export_helper_default(_sfc_main$12, [["render", _sfc_render], ["__scopeId", "data-v-8c88bb3d"]]);
2241
+ //#endregion
2242
+ //#region src/components/RarityStars/Index.vue
2243
+ const _hoisted_1$10 = { class: "stars" };
2244
+ var Index_default$27 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2245
+ __name: "Index",
2246
+ props: { rarity: {} },
2247
+ setup(__props) {
2248
+ return (_ctx, _cache) => {
2249
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The game's rarity stars: one star for each rarity, in the game's gold "), createElementVNode("span", _hoisted_1$10, toDisplayString("★".repeat(__props.rarity)), 1)], 2112);
2250
+ };
2251
+ }
2252
+ }), [["__scopeId", "data-v-a4c4ddf9"]]);
1402
2253
  //#endregion
1403
2254
  //#region src/components/ReputationScreen/Index.vue
1404
- const _hoisted_1$5 = { class: "reputation-screen" };
1405
- const _hoisted_2$5 = { class: "head" };
1406
- const _hoisted_3$5 = {
2255
+ const _hoisted_1$9 = { class: "reputation-screen" };
2256
+ const _hoisted_2$8 = { class: "head" };
2257
+ const _hoisted_3$8 = {
1407
2258
  class: "title",
1408
2259
  role: "heading",
1409
2260
  "aria-level": "1"
1410
2261
  };
1411
- const _hoisted_4$4 = ["aria-label"];
1412
- const _hoisted_5$3 = { class: "detail" };
1413
- const _hoisted_6$2 = { class: "headline" };
1414
- const _hoisted_7$2 = { class: "requirement" };
1415
- const _hoisted_8$2 = { class: "levels" };
1416
- const _hoisted_9$2 = [
2262
+ const _hoisted_4$7 = ["aria-label"];
2263
+ const _hoisted_5$7 = { class: "detail" };
2264
+ const _hoisted_6$6 = { class: "headline" };
2265
+ const _hoisted_7$6 = { class: "requirement" };
2266
+ const _hoisted_8$4 = {
2267
+ key: 0,
2268
+ class: "offer"
2269
+ };
2270
+ const _hoisted_9$3 = { class: "offer-title" };
2271
+ const _hoisted_10$3 = { class: "levels" };
2272
+ const _hoisted_11$3 = [
1417
2273
  "aria-pressed",
1418
2274
  "data-achieved",
1419
2275
  "onClick"
1420
2276
  ];
1421
- const _hoisted_10$2 = { class: "badge" };
1422
- const _hoisted_11$1 = { class: "badge-face" };
1423
- const _hoisted_12$1 = { class: "badge-word" };
1424
- const _hoisted_13$1 = { class: "badge-number" };
1425
- const _hoisted_14$1 = { class: "items" };
1426
- const _hoisted_15$1 = {
2277
+ const _hoisted_12$3 = { class: "badge" };
2278
+ const _hoisted_13$3 = { class: "badge-face" };
2279
+ const _hoisted_14$3 = { class: "badge-word" };
2280
+ const _hoisted_15$2 = { class: "badge-number" };
2281
+ const _hoisted_16$2 = { class: "items" };
2282
+ const _hoisted_17$2 = {
1427
2283
  key: 0,
1428
2284
  class: "unlock"
1429
2285
  };
1430
- const _hoisted_16$1 = {
2286
+ const _hoisted_18$2 = {
1431
2287
  key: 1,
1432
2288
  class: "achieved"
1433
2289
  };
1434
- const _hoisted_17$1 = {
2290
+ const _hoisted_19$2 = {
1435
2291
  class: "check",
1436
2292
  viewBox: "0 0 252 228",
1437
2293
  "aria-hidden": "true"
1438
2294
  };
1439
- const _hoisted_18$1 = ["d"];
1440
- const _hoisted_19$1 = { class: "hidden-label" };
1441
- const _hoisted_20$1 = {
2295
+ const _hoisted_20$2 = ["d"];
2296
+ const _hoisted_21$2 = { class: "hidden-label" };
2297
+ const _hoisted_22$1 = {
1442
2298
  key: 2,
1443
2299
  class: "status"
1444
2300
  };
1445
- var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2301
+ var Index_default$28 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1446
2302
  __name: "Index",
1447
2303
  props: /*@__PURE__*/ mergeModels({
1448
2304
  achievedLabel: {},
@@ -1451,31 +2307,37 @@ var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1451
2307
  levelLabel: {},
1452
2308
  levels: {},
1453
2309
  notAchievedLabel: {},
2310
+ offer: {},
1454
2311
  requirement: {},
1455
2312
  title: {}
1456
2313
  }, {
1457
2314
  "level": { default: 0 },
1458
2315
  "levelModifiers": {}
1459
2316
  }),
1460
- emits: /*@__PURE__*/ mergeModels(["close"], ["update:level"]),
2317
+ emits: /*@__PURE__*/ mergeModels(["accept", "close"], ["update:level"]),
1461
2318
  setup(__props, { emit: __emit }) {
1462
2319
  const level = useModel(__props, "level");
1463
2320
  const emit = __emit;
1464
2321
  return (_ctx, _cache) => {
1465
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Reputation reward page, the nation's keeper opens: its title across the head with the way back, the picked\n level's reward and requirement on the left, and the levels down the right. Each row is the public clip's at 1080\n high (references/reputation-screen): its level on a pentagon badge, its items in slots coloured by rarity with\n their count beneath, its unlock line behind an info mark, and the tick or the not achieved block at its end. The\n head and the left column are still provisional: the reference frames only the level list "), createElementVNode("div", _hoisted_1$5, [
1466
- createElementVNode("header", _hoisted_2$5, [createElementVNode("p", _hoisted_3$5, toDisplayString(__props.title), 1), createElementVNode("button", {
2322
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Reputation reward page, the nation's keeper opens: its title across the head with the way back, the picked\n level's reward and requirement on the left, and the levels down the right. Each row is the public clip's at 1080\n high (references/reputation-screen): its level on a pentagon badge, its items in slots coloured by rarity with\n their count beneath, its unlock line behind an info mark, and the tick or the not achieved block at its end. The\n head and the left column are still provisional: the reference frames only the level list "), createElementVNode("div", _hoisted_1$9, [
2323
+ createElementVNode("header", _hoisted_2$8, [createElementVNode("p", _hoisted_3$8, toDisplayString(__props.title), 1), createElementVNode("button", {
1467
2324
  class: "back",
1468
2325
  "aria-label": __props.backLabel,
1469
2326
  type: "button",
1470
2327
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
1471
- }, "↶", 8, _hoisted_4$4)]),
1472
- createElementVNode("section", _hoisted_5$3, [createElementVNode("p", _hoisted_6$2, toDisplayString(__props.headline), 1), createElementVNode("p", _hoisted_7$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.requirement, ({ color, text }, index) => {
2328
+ }, "↶", 8, _hoisted_4$7)]),
2329
+ createElementVNode("section", _hoisted_5$7, [createElementVNode("p", _hoisted_6$6, toDisplayString(__props.headline), 1), createElementVNode("p", _hoisted_7$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.requirement, ({ color, text }, index) => {
1473
2330
  return openBlock(), createElementBlock("span", {
1474
2331
  key: index,
1475
2332
  style: normalizeStyle({ color })
1476
2333
  }, toDisplayString(text), 5);
1477
2334
  }), 128))])]),
1478
- createElementVNode("ul", _hoisted_8$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.levels, (cell) => {
2335
+ __props.offer ? (openBlock(), createElementBlock("section", _hoisted_8$4, [createElementVNode("p", _hoisted_9$3, toDisplayString(__props.offer.title), 1), createElementVNode("button", {
2336
+ class: "accept",
2337
+ type: "button",
2338
+ onClick: _cache[1] || (_cache[1] = ($event) => emit("accept"))
2339
+ }, toDisplayString(__props.offer.acceptLabel), 1)])) : createCommentVNode("v-if", true),
2340
+ createElementVNode("ul", _hoisted_10$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.levels, (cell) => {
1479
2341
  return openBlock(), createElementBlock("li", { key: cell.level }, [createElementVNode("button", {
1480
2342
  class: "level",
1481
2343
  "aria-pressed": cell.level === level.value,
@@ -1483,9 +2345,9 @@ var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1483
2345
  type: "button",
1484
2346
  onClick: ($event) => level.value = cell.level
1485
2347
  }, [
1486
- createElementVNode("span", _hoisted_10$2, [createElementVNode("span", _hoisted_11$1, [createElementVNode("span", _hoisted_12$1, toDisplayString(__props.levelLabel), 1), createElementVNode("span", _hoisted_13$1, toDisplayString(cell.level), 1)])]),
1487
- createElementVNode("span", _hoisted_14$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(cell.items, ({ count, label, rarity }, index) => {
1488
- return openBlock(), createBlock(Index_default$14, {
2348
+ createElementVNode("span", _hoisted_12$3, [createElementVNode("span", _hoisted_13$3, [createElementVNode("span", _hoisted_14$3, toDisplayString(__props.levelLabel), 1), createElementVNode("span", _hoisted_15$2, toDisplayString(cell.level), 1)])]),
2349
+ createElementVNode("span", _hoisted_16$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(cell.items, ({ count, label, rarity }, index) => {
2350
+ return openBlock(), createBlock(Index_default$20, {
1489
2351
  key: index,
1490
2352
  class: "item",
1491
2353
  "aria-label": label,
@@ -1498,14 +2360,14 @@ var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1498
2360
  "rarity"
1499
2361
  ]);
1500
2362
  }), 128))]),
1501
- cell.unlockLabel ? (openBlock(), createElementBlock("span", _hoisted_15$1, toDisplayString(cell.unlockLabel), 1)) : createCommentVNode("v-if", true),
1502
- cell.isAchieved ? (openBlock(), createElementBlock("span", _hoisted_16$1, [(openBlock(), createElementBlock("svg", _hoisted_17$1, [createElementVNode("path", { d: unref(CHECK_MARK_PATH) }, null, 8, _hoisted_18$1)])), createElementVNode("span", _hoisted_19$1, toDisplayString(__props.achievedLabel), 1)])) : (openBlock(), createElementBlock("span", _hoisted_20$1, toDisplayString(__props.notAchievedLabel), 1))
1503
- ], 8, _hoisted_9$2)]);
2363
+ cell.unlockLabel ? (openBlock(), createElementBlock("span", _hoisted_17$2, toDisplayString(cell.unlockLabel), 1)) : createCommentVNode("v-if", true),
2364
+ cell.isAchieved ? (openBlock(), createElementBlock("span", _hoisted_18$2, [(openBlock(), createElementBlock("svg", _hoisted_19$2, [createElementVNode("path", { d: unref(CHECK_MARK_PATH) }, null, 8, _hoisted_20$2)])), createElementVNode("span", _hoisted_21$2, toDisplayString(__props.achievedLabel), 1)])) : (openBlock(), createElementBlock("span", _hoisted_22$1, toDisplayString(__props.notAchievedLabel), 1))
2365
+ ], 8, _hoisted_11$3)]);
1504
2366
  }), 128))])
1505
2367
  ])], 2112);
1506
2368
  };
1507
2369
  }
1508
- }), [["__scopeId", "data-v-1a7ee007"]]);
2370
+ }), [["__scopeId", "data-v-9468271c"]]);
1509
2371
  //#endregion
1510
2372
  //#region src/models/InterfaceIcon.ts
1511
2373
  let InterfaceIcon = /* @__PURE__ */ function(InterfaceIcon) {
@@ -1537,16 +2399,15 @@ const InterfaceIconPathMap = {
1537
2399
  };
1538
2400
  //#endregion
1539
2401
  //#region src/components/RoundButton/Index.vue
1540
- const _hoisted_1$4 = ["aria-label"];
1541
- const _hoisted_2$4 = ["viewBox"];
1542
- const _hoisted_3$4 = ["d"];
1543
- const _hoisted_4$3 = [
2402
+ const _hoisted_1$8 = ["viewBox"];
2403
+ const _hoisted_2$7 = ["d"];
2404
+ const _hoisted_3$7 = [
1544
2405
  "cx",
1545
2406
  "cy",
1546
2407
  "r",
1547
2408
  "stroke-width"
1548
2409
  ];
1549
- var Index_default$20 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2410
+ var Index_default$29 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1550
2411
  __name: "Index",
1551
2412
  props: {
1552
2413
  icon: {},
@@ -1554,83 +2415,376 @@ var Index_default$20 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1554
2415
  },
1555
2416
  setup(__props) {
1556
2417
  return (_ctx, _cache) => {
1557
- 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 "), createElementVNode("button", {
1558
- class: "round-button",
1559
- "aria-label": __props.label,
1560
- type: "button"
1561
- }, [(openBlock(), createElementBlock("svg", {
1562
- class: "glyph",
1563
- viewBox: `${unref(InterfaceIconCentreMap)[__props.icon][0] - 24} ${unref(InterfaceIconCentreMap)[__props.icon][1] - 24} 48 48`,
1564
- "aria-hidden": "true"
1565
- }, [createElementVNode("path", {
1566
- d: unref(InterfaceIconPathMap)[__props.icon],
1567
- "fill-rule": "evenodd"
1568
- }, null, 8, _hoisted_3$4), __props.icon === unref(InterfaceIcon).Settings ? (openBlock(), createElementBlock("circle", {
1569
- key: 0,
1570
- cx: unref(SETTINGS_RING_CENTRE)[0],
1571
- cy: unref(SETTINGS_RING_CENTRE)[1],
1572
- r: unref(SETTINGS_RING_RADIUS),
1573
- class: "ring",
1574
- "stroke-width": unref(SETTINGS_RING_WIDTH)
1575
- }, null, 8, _hoisted_4$3)) : createCommentVNode("v-if", true)], 8, _hoisted_2$4))], 8, _hoisted_1$4)], 2112);
2418
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The game's round button: a white disc 52 units across under a soft dark rim, its glyph in the game's near black\n Centred on its ink, as the game centres each icon's sprite "), createVNode(Index_default$13, {
2419
+ label: __props.label,
2420
+ size: 52
2421
+ }, {
2422
+ default: withCtx(() => [(openBlock(), createElementBlock("svg", {
2423
+ class: "glyph",
2424
+ viewBox: `${unref(InterfaceIconCentreMap)[__props.icon][0] - 24} ${unref(InterfaceIconCentreMap)[__props.icon][1] - 24} 48 48`,
2425
+ "aria-hidden": "true"
2426
+ }, [createElementVNode("path", {
2427
+ d: unref(InterfaceIconPathMap)[__props.icon],
2428
+ "fill-rule": "evenodd"
2429
+ }, null, 8, _hoisted_2$7), __props.icon === unref(InterfaceIcon).Settings ? (openBlock(), createElementBlock("circle", {
2430
+ key: 0,
2431
+ cx: unref(SETTINGS_RING_CENTRE)[0],
2432
+ cy: unref(SETTINGS_RING_CENTRE)[1],
2433
+ r: unref(SETTINGS_RING_RADIUS),
2434
+ class: "ring",
2435
+ "stroke-width": unref(SETTINGS_RING_WIDTH)
2436
+ }, null, 8, _hoisted_3$7)) : createCommentVNode("v-if", true)], 8, _hoisted_1$8))]),
2437
+ _: 1
2438
+ }, 8, ["label"])], 2112);
1576
2439
  };
1577
2440
  }
1578
- }), [["__scopeId", "data-v-e1ab12d3"]]);
2441
+ }), [["__scopeId", "data-v-4f52a820"]]);
1579
2442
  //#endregion
1580
2443
  //#region src/components/ServerBar/Index.vue
1581
- const _hoisted_1$3 = { class: "server-bar" };
1582
- const _hoisted_2$3 = {
2444
+ const _hoisted_1$7 = { class: "server-bar" };
2445
+ const _hoisted_2$6 = {
1583
2446
  class: "mark",
1584
2447
  viewBox: "0 0 46 46",
1585
2448
  "aria-hidden": "true"
1586
2449
  };
1587
- const _hoisted_3$3 = ["d"];
1588
- const _hoisted_4$2 = ["d"];
1589
- const _hoisted_5$2 = { class: "name" };
1590
- var Index_default$21 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2450
+ const _hoisted_3$6 = ["d"];
2451
+ const _hoisted_4$6 = ["d"];
2452
+ const _hoisted_5$6 = { class: "name" };
2453
+ var Index_default$31 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1591
2454
  __name: "Index",
1592
2455
  props: { name: {} },
1593
2456
  setup(__props) {
1594
2457
  return (_ctx, _cache) => {
1595
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The bar naming the chosen server, 456 by 75 units: a dark glass slab with a faint rim, the ticked diamond at its\n Left and the server's name at its middle, measured from the English client's login screen at 1080 high "), createElementVNode("div", _hoisted_1$3, [(openBlock(), createElementBlock("svg", _hoisted_2$3, [createElementVNode("path", {
2458
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The bar naming the chosen server, 456 by 75 units: a dark glass slab with a faint rim, the ticked diamond at its\n Left and the server's name at its middle, measured from the English client's login screen at 1080 high "), createElementVNode("div", _hoisted_1$7, [(openBlock(), createElementBlock("svg", _hoisted_2$6, [createElementVNode("path", {
1596
2459
  class: "diamond",
1597
2460
  d: unref(SERVER_MARK_DIAMOND_PATH)
1598
- }, null, 8, _hoisted_3$3), createElementVNode("path", {
2461
+ }, null, 8, _hoisted_3$6), createElementVNode("path", {
1599
2462
  class: "tick",
1600
2463
  d: unref(SERVER_MARK_TICK_PATH)
1601
- }, null, 8, _hoisted_4$2)])), createElementVNode("p", _hoisted_5$2, toDisplayString(__props.name), 1)])], 2112);
2464
+ }, null, 8, _hoisted_4$6)])), createElementVNode("p", _hoisted_5$6, toDisplayString(__props.name), 1)])], 2112);
1602
2465
  };
1603
2466
  }
1604
2467
  }), [["__scopeId", "data-v-6b68b3eb"]]);
1605
2468
  //#endregion
1606
- //#region src/components/ToastNotice/Index.vue
1607
- const _sfc_main$3 = {};
1608
- const _hoisted_1$2 = {
1609
- class: "toast-notice",
1610
- role: "status"
2469
+ //#region src/components/ShopScreen/Index.vue
2470
+ const _hoisted_1$6 = { class: "shop-screen" };
2471
+ const _hoisted_2$5 = { class: "balances" };
2472
+ const _hoisted_3$5 = ["aria-label"];
2473
+ const _hoisted_4$5 = {
2474
+ key: 0,
2475
+ class: "top-up",
2476
+ "aria-hidden": "true"
1611
2477
  };
1612
- const _hoisted_2$2 = { class: "mark" };
1613
- const _hoisted_3$2 = { class: "text" };
1614
- function _sfc_render(_ctx, _cache) {
1615
- 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$2, [createElementVNode("span", _hoisted_2$2, [renderSlot(_ctx.$slots, "mark", {}, void 0, true)]), createElementVNode("p", _hoisted_3$2, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])])], 2112);
1616
- }
1617
- var Index_default$22 = /*#__PURE__*/ export_helper_default(_sfc_main$3, [["render", _sfc_render], ["__scopeId", "data-v-a09dfb40"]]);
1618
- //#endregion
1619
- //#region src/components/WishDetails/Index.vue
1620
- const _hoisted_1$1 = ["aria-label"];
1621
- const _hoisted_2$1 = { class: "panel" };
1622
- const _hoisted_3$1 = { class: "title" };
1623
- const _hoisted_4$1 = ["aria-label"];
1624
- const _hoisted_5$1 = { class: "pool" };
1625
- const _hoisted_6$1 = { class: "stars" };
1626
- const _hoisted_7$1 = { class: "pool-items" };
1627
- const _hoisted_8$1 = ["data-featured"];
1628
- const _hoisted_9$1 = {
2478
+ const _hoisted_5$5 = {
1629
2479
  key: 0,
1630
- class: "path"
2480
+ class: "tabs"
1631
2481
  };
1632
- const _hoisted_10$1 = { class: "fate-points" };
1633
- var Index_default$24 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2482
+ const _hoisted_6$5 = ["aria-pressed", "onClick"];
2483
+ const _hoisted_7$5 = { class: "goods" };
2484
+ const _hoisted_8$3 = ["aria-pressed", "onClick"];
2485
+ const _hoisted_9$2 = { class: "good-name" };
2486
+ const _hoisted_10$2 = {
2487
+ key: 0,
2488
+ class: "good-limit"
2489
+ };
2490
+ const _hoisted_11$2 = ["aria-label"];
2491
+ const _hoisted_12$2 = ["aria-label"];
2492
+ const _hoisted_13$2 = { class: "detail-good" };
2493
+ const _hoisted_14$2 = { class: "detail-name" };
2494
+ const _hoisted_15$1 = ["aria-label"];
2495
+ const _hoisted_16$1 = {
2496
+ key: 0,
2497
+ class: "detail-line"
2498
+ };
2499
+ const _hoisted_17$1 = {
2500
+ key: 1,
2501
+ class: "detail-line"
2502
+ };
2503
+ const _hoisted_18$1 = [
2504
+ "aria-label",
2505
+ "max",
2506
+ "value"
2507
+ ];
2508
+ const _hoisted_19$1 = { class: "amount-value" };
2509
+ const _hoisted_20$1 = ["aria-label"];
2510
+ const _hoisted_21$1 = ["disabled"];
2511
+ var Index_default$32 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2512
+ __name: "Index",
2513
+ props: /*@__PURE__*/ mergeModels({
2514
+ balances: {},
2515
+ buyLabel: {},
2516
+ closeLabel: {},
2517
+ countLabel: {},
2518
+ countMaximum: {},
2519
+ goods: {},
2520
+ tabs: {},
2521
+ title: {}
2522
+ }, {
2523
+ "count": { default: 1 },
2524
+ "countModifiers": {},
2525
+ "goodId": { default: 0 },
2526
+ "goodIdModifiers": {},
2527
+ "tabId": { default: 0 },
2528
+ "tabIdModifiers": {}
2529
+ }),
2530
+ emits: /*@__PURE__*/ mergeModels(["buy", "close"], [
2531
+ "update:count",
2532
+ "update:goodId",
2533
+ "update:tabId"
2534
+ ]),
2535
+ setup(__props, { emit: __emit }) {
2536
+ const count = useModel(__props, "count");
2537
+ const goodId = useModel(__props, "goodId");
2538
+ const tabId = useModel(__props, "tabId");
2539
+ const emit = __emit;
2540
+ const pickedGood = computed(() => __props.goods.find((good) => good.id === goodId.value));
2541
+ const pickedCount = computed(() => Math.min(Math.max(count.value, 1), Math.max(__props.countMaximum, 1)));
2542
+ const setCount = (event) => {
2543
+ count.value = Number(event.target.value);
2544
+ };
2545
+ const buy = () => {
2546
+ if (pickedGood.value && __props.countMaximum >= 1) emit("buy", pickedGood.value, pickedCount.value);
2547
+ };
2548
+ return (_ctx, _cache) => {
2549
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Shop screen, its pieces placed in the game's own pixels at 1080 high (`--unit` a pixel of that frame): the title\n and the balances across the head, the way out at the head's right, the tabs under them and the goods grid below. A\n picked good opens its detail over the grid, with its costs, limit and refresh, the count picker and the Buy button.\n The pixels are measured from the public Paimon's Bargains purchase clip aJq1MnTPtZ4 at 12 seconds (the frame is kept\n outside the repo): the panel at 505 by 250, the grid's four columns of 310 with gaps of 32, the Buy button at 1135 to\n 1345 by 728 to 790 "), createElementVNode("div", _hoisted_1$6, [
2550
+ createVNode(Index_default$30, {
2551
+ class: "heading",
2552
+ role: "heading",
2553
+ "aria-level": "1"
2554
+ }, {
2555
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.title), 1)]),
2556
+ _: 1
2557
+ }),
2558
+ createElementVNode("ul", _hoisted_2$5, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.balances, (balance) => {
2559
+ return openBlock(), createElementBlock("li", {
2560
+ key: balance.id,
2561
+ class: "balance"
2562
+ }, [
2563
+ createElementVNode("span", {
2564
+ class: "balance-icon",
2565
+ role: "img",
2566
+ "aria-label": balance.name
2567
+ }, null, 8, _hoisted_3$5),
2568
+ createTextVNode(" " + toDisplayString(balance.quantity) + " ", 1),
2569
+ balance.isTopUp ? (openBlock(), createElementBlock("span", _hoisted_4$5, "+")) : createCommentVNode("v-if", true)
2570
+ ]);
2571
+ }), 128))]),
2572
+ createVNode(Index_default$13, {
2573
+ class: "close",
2574
+ label: __props.closeLabel,
2575
+ size: 56,
2576
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
2577
+ }, {
2578
+ default: withCtx(() => [..._cache[4] || (_cache[4] = [createElementVNode("svg", {
2579
+ viewBox: "0 0 24 24",
2580
+ "aria-hidden": "true"
2581
+ }, [createElementVNode("path", { d: "M6 6 18 18M18 6 6 18" })], -1)])]),
2582
+ _: 1
2583
+ }, 8, ["label"]),
2584
+ __props.tabs.length > 0 ? (openBlock(), createElementBlock("ul", _hoisted_5$5, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (tab) => {
2585
+ return openBlock(), createElementBlock("li", { key: tab.id }, [createElementVNode("button", {
2586
+ class: "tab",
2587
+ "aria-pressed": tab.id === tabId.value,
2588
+ type: "button",
2589
+ onClick: ($event) => tabId.value = tab.id
2590
+ }, toDisplayString(tab.name), 9, _hoisted_6$5)]);
2591
+ }), 128))])) : createCommentVNode("v-if", true),
2592
+ createElementVNode("ul", _hoisted_7$5, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.goods, (good) => {
2593
+ return openBlock(), createElementBlock("li", { key: good.id }, [createElementVNode("button", {
2594
+ class: "good",
2595
+ "aria-pressed": good.id === goodId.value,
2596
+ type: "button",
2597
+ onClick: ($event) => goodId.value = good.id
2598
+ }, [
2599
+ createElementVNode("span", _hoisted_9$2, toDisplayString(good.name), 1),
2600
+ good.limitLabel ? (openBlock(), createElementBlock("span", _hoisted_10$2, toDisplayString(good.limitLabel), 1)) : createCommentVNode("v-if", true),
2601
+ (openBlock(true), createElementBlock(Fragment, null, renderList(good.costs, (cost) => {
2602
+ return openBlock(), createElementBlock("span", {
2603
+ key: cost.name,
2604
+ class: "good-price"
2605
+ }, [createElementVNode("span", {
2606
+ class: "price-icon",
2607
+ role: "img",
2608
+ "aria-label": cost.name
2609
+ }, null, 8, _hoisted_11$2), createTextVNode(" " + toDisplayString(cost.count), 1)]);
2610
+ }), 128))
2611
+ ], 8, _hoisted_8$3)]);
2612
+ }), 128))]),
2613
+ pickedGood.value ? (openBlock(), createElementBlock("div", {
2614
+ key: 1,
2615
+ class: "detail",
2616
+ role: "dialog",
2617
+ "aria-modal": "true",
2618
+ "aria-label": pickedGood.value.name
2619
+ }, [
2620
+ createElementVNode("div", _hoisted_13$2, [
2621
+ createElementVNode("p", _hoisted_14$2, toDisplayString(pickedGood.value.name), 1),
2622
+ (openBlock(true), createElementBlock(Fragment, null, renderList(pickedGood.value.costs, (cost) => {
2623
+ return openBlock(), createElementBlock("p", {
2624
+ key: cost.name,
2625
+ class: "detail-price"
2626
+ }, [createElementVNode("span", {
2627
+ class: "price-icon",
2628
+ role: "img",
2629
+ "aria-label": cost.name
2630
+ }, null, 8, _hoisted_15$1), createTextVNode(" " + toDisplayString(cost.count * pickedCount.value), 1)]);
2631
+ }), 128)),
2632
+ pickedGood.value.limitLabel ? (openBlock(), createElementBlock("p", _hoisted_16$1, toDisplayString(pickedGood.value.limitLabel), 1)) : createCommentVNode("v-if", true),
2633
+ pickedGood.value.refreshLabel ? (openBlock(), createElementBlock("p", _hoisted_17$1, toDisplayString(pickedGood.value.refreshLabel), 1)) : createCommentVNode("v-if", true)
2634
+ ]),
2635
+ createElementVNode("input", {
2636
+ "aria-label": __props.countLabel,
2637
+ class: "amount",
2638
+ max: __props.countMaximum,
2639
+ min: "1",
2640
+ type: "range",
2641
+ value: pickedCount.value,
2642
+ onInput: _cache[1] || (_cache[1] = (event) => setCount(event))
2643
+ }, null, 40, _hoisted_18$1),
2644
+ createElementVNode("p", _hoisted_19$1, toDisplayString(pickedCount.value), 1),
2645
+ createElementVNode("button", {
2646
+ class: "cancel",
2647
+ "aria-label": __props.closeLabel,
2648
+ type: "button",
2649
+ onClick: _cache[2] || (_cache[2] = ($event) => goodId.value = 0)
2650
+ }, [..._cache[5] || (_cache[5] = [createElementVNode("svg", {
2651
+ viewBox: "0 0 24 24",
2652
+ "aria-hidden": "true"
2653
+ }, [createElementVNode("path", { d: "M6 6 18 18M18 6 6 18" })], -1)])], 8, _hoisted_20$1),
2654
+ createElementVNode("button", {
2655
+ class: "buy",
2656
+ disabled: __props.countMaximum < 1,
2657
+ type: "button",
2658
+ onClick: _cache[3] || (_cache[3] = ($event) => buy())
2659
+ }, toDisplayString(__props.buyLabel), 9, _hoisted_21$1)
2660
+ ], 8, _hoisted_12$2)) : createCommentVNode("v-if", true)
2661
+ ])], 2112);
2662
+ };
2663
+ }
2664
+ }), [["__scopeId", "data-v-af7ce84f"]]);
2665
+ //#endregion
2666
+ //#region src/components/WeaponMenu/Index.vue
2667
+ const _hoisted_1$5 = ["data-tab"];
2668
+ const _hoisted_2$4 = { class: "breadcrumb" };
2669
+ const _hoisted_3$4 = { class: "tabs" };
2670
+ const _hoisted_4$4 = ["aria-pressed", "onClick"];
2671
+ const _hoisted_5$4 = ["aria-label"];
2672
+ const _hoisted_6$4 = { class: "refinement" };
2673
+ const _hoisted_7$4 = { class: "level" };
2674
+ const _hoisted_8$2 = { class: "level-text" };
2675
+ const _hoisted_9$1 = { class: "sparks" };
2676
+ const _hoisted_10$1 = { class: "experience-text" };
2677
+ const _hoisted_11$1 = { class: "experience" };
2678
+ const _hoisted_12$1 = ["aria-label"];
2679
+ const _hoisted_13$1 = ["disabled"];
2680
+ const _hoisted_14$1 = ["aria-label"];
2681
+ var Index_default$35 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2682
+ __name: "Index",
2683
+ props: /*@__PURE__*/ mergeModels({
2684
+ actionLabel: {},
2685
+ ascension: {},
2686
+ closeLabel: {},
2687
+ experienceRatio: {},
2688
+ experienceText: {},
2689
+ isActionDisabled: { type: Boolean },
2690
+ levelText: {},
2691
+ name: {},
2692
+ rarity: {},
2693
+ refinement: {},
2694
+ tabs: {}
2695
+ }, {
2696
+ "tab": { required: true },
2697
+ "tabModifiers": {}
2698
+ }),
2699
+ emits: /*@__PURE__*/ mergeModels(["action", "close"], ["update:tab"]),
2700
+ setup(__props, { emit: __emit }) {
2701
+ const tab = useModel(__props, "tab");
2702
+ const emit = __emit;
2703
+ return (_ctx, _cache) => {
2704
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The weapon screen's frame: the weapon's name at the top left, the tabs down the left with the open one lit, and the\n open tab's panel down the right with its level, EXP, phase and refinement above it and its action beneath "), createElementVNode("div", {
2705
+ class: "weapon-menu",
2706
+ "data-tab": tab.value
2707
+ }, [
2708
+ createElementVNode("p", _hoisted_2$4, toDisplayString(__props.name), 1),
2709
+ createElementVNode("ul", _hoisted_3$4, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (menuTab) => {
2710
+ return openBlock(), createElementBlock("li", { key: menuTab.tab }, [createElementVNode("button", {
2711
+ class: "tab",
2712
+ "aria-pressed": menuTab.tab === tab.value,
2713
+ type: "button",
2714
+ onClick: ($event) => tab.value = menuTab.tab
2715
+ }, toDisplayString(menuTab.label), 9, _hoisted_4$4)]);
2716
+ }), 128))]),
2717
+ createElementVNode("p", {
2718
+ class: "stars",
2719
+ "aria-label": `${__props.rarity}`
2720
+ }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.rarity, (star) => {
2721
+ return openBlock(), createElementBlock("span", {
2722
+ key: star,
2723
+ class: "star"
2724
+ });
2725
+ }), 128))], 8, _hoisted_5$4),
2726
+ createElementVNode("p", _hoisted_6$4, toDisplayString(__props.refinement), 1),
2727
+ createElementVNode("p", _hoisted_7$4, [createElementVNode("span", _hoisted_8$2, toDisplayString(__props.levelText), 1), createElementVNode("span", _hoisted_9$1, [createCommentVNode(" The ascension phases, each a small star the phases reached light "), (openBlock(true), createElementBlock(Fragment, null, renderList(unref(6), (phase) => {
2728
+ return openBlock(), createElementBlock("span", {
2729
+ key: phase,
2730
+ class: normalizeClass(["spark", { lit: phase <= __props.ascension }])
2731
+ }, null, 2);
2732
+ }), 128))])]),
2733
+ createElementVNode("p", _hoisted_10$1, toDisplayString(__props.experienceText), 1),
2734
+ createElementVNode("span", _hoisted_11$1, [createElementVNode("span", {
2735
+ class: "fill",
2736
+ style: normalizeStyle({ "--experience-ratio": __props.experienceRatio })
2737
+ }, null, 4)]),
2738
+ createElementVNode("section", {
2739
+ class: "panel",
2740
+ "aria-label": __props.actionLabel
2741
+ }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 8, _hoisted_12$1),
2742
+ createElementVNode("button", {
2743
+ class: "action",
2744
+ disabled: __props.isActionDisabled,
2745
+ type: "button",
2746
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("action"))
2747
+ }, toDisplayString(__props.actionLabel), 9, _hoisted_13$1),
2748
+ createElementVNode("button", {
2749
+ class: "close",
2750
+ "aria-label": __props.closeLabel,
2751
+ type: "button",
2752
+ onClick: _cache[1] || (_cache[1] = ($event) => emit("close"))
2753
+ }, "↶", 8, _hoisted_14$1)
2754
+ ], 8, _hoisted_1$5)], 2112);
2755
+ };
2756
+ }
2757
+ }), [["__scopeId", "data-v-f3f59f0e"]]);
2758
+ //#endregion
2759
+ //#region src/components/WishPath/Index.vue
2760
+ const _hoisted_1$4 = { class: "fate-points" };
2761
+ var Index_default$38 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2762
+ __name: "Index",
2763
+ props: {
2764
+ fatePoints: {},
2765
+ pathLabel: {}
2766
+ },
2767
+ setup(__props) {
2768
+ return (_ctx, _cache) => {
2769
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Epitomized Path the weapon wish's banner holds, its name and its Fate Points as the game words and colours them "), createElementVNode("p", null, [createTextVNode(toDisplayString(__props.pathLabel) + " ", 1), createElementVNode("span", _hoisted_1$4, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.fatePoints, ({ color, text }, index) => {
2770
+ return openBlock(), createElementBlock("span", {
2771
+ key: index,
2772
+ style: normalizeStyle({ color })
2773
+ }, toDisplayString(text), 5);
2774
+ }), 128))])])], 2112);
2775
+ };
2776
+ }
2777
+ }), [["__scopeId", "data-v-2456390c"]]);
2778
+ //#endregion
2779
+ //#region src/components/WishDetails/Index.vue
2780
+ const _hoisted_1$3 = ["aria-label"];
2781
+ const _hoisted_2$3 = { class: "panel" };
2782
+ const _hoisted_3$3 = { class: "title" };
2783
+ const _hoisted_4$3 = ["aria-label"];
2784
+ const _hoisted_5$3 = { class: "pool" };
2785
+ const _hoisted_6$3 = { class: "pool-items" };
2786
+ const _hoisted_7$3 = ["data-featured"];
2787
+ var Index_default$36 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1634
2788
  __name: "Index",
1635
2789
  props: {
1636
2790
  closeLabel: {},
@@ -1648,91 +2802,130 @@ var Index_default$24 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1648
2802
  class: "wish-details",
1649
2803
  role: "dialog",
1650
2804
  "aria-label": __props.title
1651
- }, [createElementVNode("div", _hoisted_2$1, [
1652
- createElementVNode("p", _hoisted_3$1, toDisplayString(__props.title), 1),
2805
+ }, [createElementVNode("div", _hoisted_2$3, [
2806
+ createElementVNode("p", _hoisted_3$3, toDisplayString(__props.title), 1),
1653
2807
  createElementVNode("button", {
1654
2808
  class: "close",
1655
2809
  type: "button",
1656
2810
  "aria-label": __props.closeLabel,
1657
2811
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
1658
- }, "✕", 8, _hoisted_4$1),
1659
- createElementVNode("ul", _hoisted_5$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(poolRarityCellsMap.value, ([rarity, cells]) => {
2812
+ }, "✕", 8, _hoisted_4$3),
2813
+ createElementVNode("ul", _hoisted_5$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(poolRarityCellsMap.value, ([rarity, cells]) => {
1660
2814
  return openBlock(), createElementBlock("li", {
1661
2815
  key: rarity,
1662
2816
  class: "pool-rarity"
1663
- }, [createElementVNode("span", _hoisted_6$1, toDisplayString("★".repeat(rarity)), 1), createElementVNode("ul", _hoisted_7$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(cells, ({ id, isFeatured, name }) => {
2817
+ }, [createVNode(Index_default$27, { rarity }, null, 8, ["rarity"]), createElementVNode("ul", _hoisted_6$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(cells, ({ id, isFeatured, name }) => {
1664
2818
  return openBlock(), createElementBlock("li", {
1665
2819
  key: id,
1666
2820
  class: "pool-item",
1667
2821
  "data-featured": isFeatured
1668
- }, toDisplayString(name), 9, _hoisted_8$1);
2822
+ }, toDisplayString(name), 9, _hoisted_7$3);
1669
2823
  }), 128))])]);
1670
2824
  }), 128))]),
1671
- __props.pathLabel ? (openBlock(), createElementBlock("p", _hoisted_9$1, [createTextVNode(toDisplayString(__props.pathLabel) + " ", 1), createElementVNode("span", _hoisted_10$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.fatePoints, ({ color, text }, index) => {
1672
- return openBlock(), createElementBlock("span", {
2825
+ __props.pathLabel ? (openBlock(), createBlock(Index_default$38, {
2826
+ key: 0,
2827
+ "path-label": __props.pathLabel,
2828
+ "fate-points": __props.fatePoints
2829
+ }, null, 8, ["path-label", "fate-points"])) : createCommentVNode("v-if", true)
2830
+ ])], 8, _hoisted_1$3)], 2112);
2831
+ };
2832
+ }
2833
+ }), [["__scopeId", "data-v-abdcc945"]]);
2834
+ //#endregion
2835
+ //#region src/components/WishHistory/Index.vue
2836
+ const _hoisted_1$2 = ["aria-label"];
2837
+ const _hoisted_2$2 = { class: "panel" };
2838
+ const _hoisted_3$2 = { class: "title" };
2839
+ const _hoisted_4$2 = ["aria-label"];
2840
+ const _hoisted_5$2 = { class: "draws" };
2841
+ const _hoisted_6$2 = { class: "time" };
2842
+ const _hoisted_7$2 = { class: "banner" };
2843
+ const _hoisted_8$1 = { class: "name" };
2844
+ var Index_default$37 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2845
+ __name: "Index",
2846
+ props: {
2847
+ closeLabel: {},
2848
+ history: {},
2849
+ title: {}
2850
+ },
2851
+ emits: ["close"],
2852
+ setup(__props, { emit: __emit }) {
2853
+ const emit = __emit;
2854
+ return (_ctx, _cache) => {
2855
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The History popup the wish screen's History opens: the draws of the last year, newest first, over the wish screen\n until its close is clicked. Provisional: its columns, their order and the time's format wait on a recording of the\n English Client's History at 1080 high "), createElementVNode("div", {
2856
+ class: "wish-history",
2857
+ role: "dialog",
2858
+ "aria-label": __props.title
2859
+ }, [createElementVNode("div", _hoisted_2$2, [
2860
+ createElementVNode("p", _hoisted_3$2, toDisplayString(__props.title), 1),
2861
+ createElementVNode("button", {
2862
+ class: "close",
2863
+ type: "button",
2864
+ "aria-label": __props.closeLabel,
2865
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
2866
+ }, "✕", 8, _hoisted_4$2),
2867
+ createElementVNode("ul", _hoisted_5$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.history, ({ bannerLabel, name, rarity, time }, index) => {
2868
+ return openBlock(), createElementBlock("li", {
1673
2869
  key: index,
1674
- style: normalizeStyle({ color })
1675
- }, toDisplayString(text), 5);
1676
- }), 128))])])) : createCommentVNode("v-if", true)
1677
- ])], 8, _hoisted_1$1)], 2112);
2870
+ class: "draw"
2871
+ }, [
2872
+ createElementVNode("span", _hoisted_6$2, toDisplayString(time), 1),
2873
+ createElementVNode("span", _hoisted_7$2, toDisplayString(bannerLabel), 1),
2874
+ createElementVNode("span", _hoisted_8$1, toDisplayString(name), 1),
2875
+ createVNode(Index_default$27, { rarity }, null, 8, ["rarity"])
2876
+ ]);
2877
+ }), 128))])
2878
+ ])], 8, _hoisted_1$2)], 2112);
1678
2879
  };
1679
2880
  }
1680
- }), [["__scopeId", "data-v-4fcea975"]]);
2881
+ }), [["__scopeId", "data-v-86f92bab"]]);
1681
2882
  //#endregion
1682
2883
  //#region src/components/WishScreen/Index.vue
1683
- const _hoisted_1 = { class: "wish-screen" };
1684
- const _hoisted_2 = {
1685
- class: "title",
1686
- role: "heading",
1687
- "aria-level": "1"
1688
- };
1689
- const _hoisted_3 = { class: "banners" };
1690
- const _hoisted_4 = { class: "currencies" };
1691
- const _hoisted_5 = { class: "currency-name" };
1692
- const _hoisted_6 = {
2884
+ const _hoisted_1$1 = { class: "wish-screen" };
2885
+ const _hoisted_2$1 = { class: "banners" };
2886
+ const _hoisted_3$1 = { class: "currencies" };
2887
+ const _hoisted_4$1 = { class: "currency-name" };
2888
+ const _hoisted_5$1 = {
1693
2889
  key: 0,
1694
2890
  class: "card"
1695
2891
  };
1696
- const _hoisted_7 = { class: "tag" };
1697
- const _hoisted_8 = { class: "card-title" };
1698
- const _hoisted_9 = { class: "probability" };
1699
- const _hoisted_10 = { class: "rate-up" };
1700
- const _hoisted_11 = {
2892
+ const _hoisted_6$1 = { class: "tag" };
2893
+ const _hoisted_7$1 = { class: "card-title" };
2894
+ const _hoisted_8 = { class: "probability" };
2895
+ const _hoisted_9 = { class: "rate-up" };
2896
+ const _hoisted_10 = {
1701
2897
  key: 0,
1702
2898
  class: "featured"
1703
2899
  };
1704
- const _hoisted_12 = { class: "featured-name" };
1705
- const _hoisted_13 = { class: "stars" };
1706
- const _hoisted_14 = { class: "featured-title" };
1707
- const _hoisted_15 = { class: "links" };
1708
- const _hoisted_16 = {
1709
- key: 1,
1710
- class: "path"
1711
- };
1712
- const _hoisted_17 = { class: "fate-points" };
1713
- const _hoisted_18 = {
2900
+ const _hoisted_11 = { class: "featured-name" };
2901
+ const _hoisted_12 = { class: "featured-title" };
2902
+ const _hoisted_13 = { class: "links" };
2903
+ const _hoisted_14 = {
1714
2904
  key: 2,
1715
2905
  class: "sets"
1716
2906
  };
1717
- const _hoisted_19 = { class: "set-label" };
1718
- const _hoisted_20 = { class: "cost" };
1719
- const _hoisted_21 = { class: "set-label" };
1720
- const _hoisted_22 = { class: "cost" };
1721
- const _hoisted_23 = { class: "result-list" };
1722
- const _hoisted_24 = ["data-capturing-radiance", "data-rarity"];
1723
- const _hoisted_25 = { class: "result-name" };
1724
- const _hoisted_26 = { class: "stars" };
1725
- const _hoisted_27 = { class: "result-return" };
1726
- var Index_default$25 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
2907
+ const _hoisted_15 = { class: "set-label" };
2908
+ const _hoisted_16 = { class: "cost" };
2909
+ const _hoisted_17 = { class: "set-label" };
2910
+ const _hoisted_18 = { class: "cost" };
2911
+ const _hoisted_19 = { class: "result-list" };
2912
+ const _hoisted_20 = ["data-capturing-radiance", "data-rarity"];
2913
+ const _hoisted_21 = { class: "result-name" };
2914
+ const _hoisted_22 = {
2915
+ key: 0,
2916
+ class: "result-stella-fortuna"
2917
+ };
2918
+ const _hoisted_23 = { class: "result-return" };
2919
+ var Index_default$39 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
1727
2920
  __name: "Index",
1728
2921
  props: /*@__PURE__*/ mergeModels({
1729
2922
  backLabel: {},
1730
2923
  bannerCard: {},
1731
- bannerKinds: {},
1732
- bannerLabels: {},
2924
+ banners: {},
1733
2925
  currencies: {},
1734
2926
  detailsLabel: {},
1735
2927
  fatePoints: {},
2928
+ history: {},
1736
2929
  historyLabel: {},
1737
2930
  pathLabel: {},
1738
2931
  pool: {},
@@ -1741,34 +2934,46 @@ var Index_default$25 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1741
2934
  results: {},
1742
2935
  sets: {},
1743
2936
  shopLabel: {},
1744
- title: {}
2937
+ title: {},
2938
+ trialLabel: {}
1745
2939
  }, {
1746
- "bannerKind": {},
1747
- "bannerKindModifiers": {}
2940
+ "bannerId": {},
2941
+ "bannerIdModifiers": {}
1748
2942
  }),
1749
2943
  emits: /*@__PURE__*/ mergeModels([
1750
2944
  "buy",
1751
2945
  "close",
1752
2946
  "dismiss",
2947
+ "trial",
1753
2948
  "wish"
1754
- ], ["update:bannerKind"]),
2949
+ ], ["update:bannerId"]),
1755
2950
  setup(__props, { emit: __emit }) {
1756
- const bannerKind = useModel(__props, "bannerKind");
2951
+ const bannerId = useModel(__props, "bannerId");
1757
2952
  const emit = __emit;
1758
2953
  const isDetailsOpen = ref(false);
2954
+ const isHistoryOpen = ref(false);
1759
2955
  const featuredCell = computed(() => __props.pool.find(({ isFeatured, rarity }) => isFeatured && rarity === 5));
1760
- const getBannerLabel = (kind) => __props.bannerLabels[kind].map(({ text }) => text).join("");
1761
- const bannerLabelText = computed(() => bannerKind.value && getBannerLabel(bannerKind.value));
2956
+ const getLabelText = (label) => label.map(({ text }) => text).join("");
2957
+ const bannerLabelText = computed(() => {
2958
+ const openBanner = __props.banners.find(({ id }) => id === bannerId.value);
2959
+ return openBanner && getLabelText(openBanner.label);
2960
+ });
1762
2961
  return (_ctx, _cache) => {
1763
- 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, [
1764
- createElementVNode("p", _hoisted_2, toDisplayString(__props.title), 1),
1765
- createElementVNode("ul", _hoisted_3, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.bannerKinds, (kind) => {
1766
- return openBlock(), createElementBlock("li", { key: kind }, [createVNode(Index_default$10, {
2962
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The wish, the F3 key's: the banners across the head with the counts and the way back beside them, the open banner's\n card over the screen with its promoted five-star, its ×1 and ×10 with their costs, and the Shop, Details and History\n Row under the card. Details opens the banner's pool over the screen, and over it all what the Last wishes drew, a card\n Each with its stars, until a click goes on. Provisional: every place, size and colour here waits on the wish's passes\n Against a recording of the English Client at 1080 high, and the banner card's art and the banners' tabs' portraits\n Are the plate's, which cannot ship "), createElementVNode("div", _hoisted_1$1, [
2963
+ createVNode(Index_default$30, {
2964
+ role: "heading",
2965
+ "aria-level": "1"
2966
+ }, {
2967
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.title), 1)]),
2968
+ _: 1
2969
+ }),
2970
+ createElementVNode("ul", _hoisted_2$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.banners, (banner) => {
2971
+ return openBlock(), createElementBlock("li", { key: banner.id }, [createVNode(Index_default$16, {
1767
2972
  class: "banner",
1768
- "aria-label": getBannerLabel(kind),
1769
- "aria-pressed": kind === bannerKind.value,
2973
+ "aria-label": getLabelText(banner.label),
2974
+ "aria-pressed": banner.id === bannerId.value,
1770
2975
  kind: unref(GameButtonKind).Row,
1771
- onClick: ($event) => bannerKind.value = kind
2976
+ onClick: ($event) => bannerId.value = banner.id
1772
2977
  }, null, 8, [
1773
2978
  "aria-label",
1774
2979
  "aria-pressed",
@@ -1776,76 +2981,86 @@ var Index_default$25 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1776
2981
  "onClick"
1777
2982
  ])]);
1778
2983
  }), 128))]),
1779
- createElementVNode("ul", _hoisted_4, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.currencies, ({ id, name, quantity }) => {
2984
+ createElementVNode("ul", _hoisted_3$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.currencies, ({ id, name, quantity }) => {
1780
2985
  return openBlock(), createElementBlock("li", {
1781
2986
  key: id,
1782
2987
  class: "currency"
1783
- }, [createElementVNode("span", _hoisted_5, toDisplayString(name), 1), createTextVNode(" " + toDisplayString(quantity), 1)]);
2988
+ }, [createElementVNode("span", _hoisted_4$1, toDisplayString(name), 1), createTextVNode(" " + toDisplayString(quantity), 1)]);
1784
2989
  }), 128))]),
1785
- createVNode(Index_default$10, {
2990
+ createVNode(Index_default$16, {
1786
2991
  class: "back",
1787
2992
  "aria-label": __props.backLabel,
1788
2993
  kind: unref(GameButtonKind).Plain,
1789
2994
  onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
1790
2995
  }, {
1791
- default: withCtx(() => [..._cache[5] || (_cache[5] = [createTextVNode("✕", -1)])]),
2996
+ default: withCtx(() => [..._cache[8] || (_cache[8] = [createTextVNode("✕", -1)])]),
1792
2997
  _: 1
1793
2998
  }, 8, ["aria-label", "kind"]),
1794
- __props.bannerCard && bannerLabelText.value ? (openBlock(), createElementBlock("section", _hoisted_6, [
1795
- createElementVNode("p", _hoisted_7, toDisplayString(bannerLabelText.value), 1),
1796
- createElementVNode("p", _hoisted_8, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.bannerCard.title, ({ color, text }, index) => {
2999
+ __props.bannerCard && bannerLabelText.value ? (openBlock(), createElementBlock("section", _hoisted_5$1, [
3000
+ createElementVNode("p", _hoisted_6$1, toDisplayString(bannerLabelText.value), 1),
3001
+ createElementVNode("p", _hoisted_7$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.bannerCard.title, ({ color, text }, index) => {
1797
3002
  return openBlock(), createElementBlock("span", {
1798
3003
  key: index,
1799
3004
  style: normalizeStyle({ color })
1800
3005
  }, toDisplayString(text), 5);
1801
3006
  }), 128))]),
1802
- createElementVNode("p", _hoisted_9, toDisplayString(__props.probabilityLabel), 1),
1803
- createElementVNode("p", _hoisted_10, toDisplayString(__props.bannerCard.rateUp), 1),
1804
- featuredCell.value ? (openBlock(), createElementBlock("div", _hoisted_11, [
1805
- createElementVNode("p", _hoisted_12, toDisplayString(featuredCell.value.name), 1),
1806
- createElementVNode("p", _hoisted_13, toDisplayString("★".repeat(featuredCell.value.rarity)), 1),
1807
- createElementVNode("p", _hoisted_14, toDisplayString(__props.bannerCard.featuredTitle), 1)
3007
+ createElementVNode("p", _hoisted_8, toDisplayString(__props.probabilityLabel), 1),
3008
+ createElementVNode("p", _hoisted_9, toDisplayString(__props.bannerCard.rateUp), 1),
3009
+ featuredCell.value ? (openBlock(), createElementBlock("div", _hoisted_10, [
3010
+ createElementVNode("p", _hoisted_11, toDisplayString(featuredCell.value.name), 1),
3011
+ createElementVNode("p", null, [createVNode(Index_default$27, { rarity: featuredCell.value.rarity }, null, 8, ["rarity"])]),
3012
+ createElementVNode("p", _hoisted_12, toDisplayString(__props.bannerCard.featuredTitle), 1)
1808
3013
  ])) : createCommentVNode("v-if", true)
1809
3014
  ])) : createCommentVNode("v-if", true),
1810
- createElementVNode("div", _hoisted_15, [
1811
- createVNode(Index_default$10, {
3015
+ createElementVNode("div", _hoisted_13, [
3016
+ createVNode(Index_default$16, {
1812
3017
  class: "link",
1813
3018
  kind: unref(GameButtonKind).Reply
1814
3019
  }, {
1815
3020
  default: withCtx(() => [createTextVNode(toDisplayString(__props.shopLabel), 1)]),
1816
3021
  _: 1
1817
3022
  }, 8, ["kind"]),
1818
- createVNode(Index_default$10, {
3023
+ __props.trialLabel ? (openBlock(), createBlock(Index_default$16, {
3024
+ key: 0,
3025
+ class: "link trial",
3026
+ kind: unref(GameButtonKind).Reply,
3027
+ onClick: _cache[1] || (_cache[1] = ($event) => emit("trial"))
3028
+ }, {
3029
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.trialLabel), 1)]),
3030
+ _: 1
3031
+ }, 8, ["kind"])) : createCommentVNode("v-if", true),
3032
+ createVNode(Index_default$16, {
1819
3033
  class: "link",
1820
3034
  kind: unref(GameButtonKind).Reply,
1821
- onClick: _cache[1] || (_cache[1] = ($event) => isDetailsOpen.value = true)
3035
+ onClick: _cache[2] || (_cache[2] = ($event) => isDetailsOpen.value = true)
1822
3036
  }, {
1823
3037
  default: withCtx(() => [createTextVNode(toDisplayString(__props.detailsLabel), 1)]),
1824
3038
  _: 1
1825
3039
  }, 8, ["kind"]),
1826
- createVNode(Index_default$10, {
3040
+ createVNode(Index_default$16, {
1827
3041
  class: "link",
1828
- kind: unref(GameButtonKind).Reply
3042
+ kind: unref(GameButtonKind).Reply,
3043
+ onClick: _cache[3] || (_cache[3] = ($event) => isHistoryOpen.value = true)
1829
3044
  }, {
1830
3045
  default: withCtx(() => [createTextVNode(toDisplayString(__props.historyLabel), 1)]),
1831
3046
  _: 1
1832
3047
  }, 8, ["kind"])
1833
3048
  ]),
1834
- __props.pathLabel ? (openBlock(), createElementBlock("p", _hoisted_16, [createTextVNode(toDisplayString(__props.pathLabel) + " ", 1), createElementVNode("span", _hoisted_17, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.fatePoints, ({ color, text }, index) => {
1835
- return openBlock(), createElementBlock("span", {
1836
- key: index,
1837
- style: normalizeStyle({ color })
1838
- }, toDisplayString(text), 5);
1839
- }), 128))])])) : createCommentVNode("v-if", true),
1840
- bannerKind.value ? (openBlock(), createElementBlock("div", _hoisted_18, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.sets, ({ cost, count, isAffordable, label }) => {
1841
- return openBlock(), createBlock(Index_default$10, {
3049
+ __props.pathLabel ? (openBlock(), createBlock(Index_default$38, {
3050
+ key: 1,
3051
+ class: "path",
3052
+ "path-label": __props.pathLabel,
3053
+ "fate-points": __props.fatePoints
3054
+ }, null, 8, ["path-label", "fate-points"])) : createCommentVNode("v-if", true),
3055
+ bannerId.value ? (openBlock(), createElementBlock("div", _hoisted_14, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.sets, ({ cost, count, isAffordable, label }) => {
3056
+ return openBlock(), createBlock(Index_default$16, {
1842
3057
  key: count,
1843
3058
  class: "set",
1844
3059
  disabled: !isAffordable,
1845
3060
  kind: unref(GameButtonKind).Pill,
1846
3061
  onClick: ($event) => emit("wish", count)
1847
3062
  }, {
1848
- default: withCtx(() => [createElementVNode("span", _hoisted_19, toDisplayString(label), 1), createElementVNode("span", _hoisted_20, toDisplayString(cost), 1)]),
3063
+ default: withCtx(() => [createElementVNode("span", _hoisted_15, toDisplayString(label), 1), createElementVNode("span", _hoisted_16, toDisplayString(cost), 1)]),
1849
3064
  _: 2
1850
3065
  }, 1032, [
1851
3066
  "disabled",
@@ -1853,25 +3068,25 @@ var Index_default$25 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1853
3068
  "onClick"
1854
3069
  ]);
1855
3070
  }), 128)), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.purchases, ({ cost, isAffordable, label }) => {
1856
- return openBlock(), createBlock(Index_default$10, {
3071
+ return openBlock(), createBlock(Index_default$16, {
1857
3072
  key: label,
1858
3073
  class: "set",
1859
3074
  disabled: !isAffordable,
1860
3075
  kind: unref(GameButtonKind).Pill,
1861
- onClick: _cache[2] || (_cache[2] = ($event) => emit("buy"))
3076
+ onClick: _cache[4] || (_cache[4] = ($event) => emit("buy"))
1862
3077
  }, {
1863
- default: withCtx(() => [createElementVNode("span", _hoisted_21, toDisplayString(label), 1), createElementVNode("span", _hoisted_22, toDisplayString(cost), 1)]),
3078
+ default: withCtx(() => [createElementVNode("span", _hoisted_17, toDisplayString(label), 1), createElementVNode("span", _hoisted_18, toDisplayString(cost), 1)]),
1864
3079
  _: 2
1865
3080
  }, 1032, ["disabled", "kind"]);
1866
3081
  }), 128))])) : createCommentVNode("v-if", true),
1867
- isDetailsOpen.value ? (openBlock(), createBlock(Index_default$24, {
3082
+ isDetailsOpen.value ? (openBlock(), createBlock(Index_default$36, {
1868
3083
  key: 3,
1869
3084
  "close-label": __props.backLabel,
1870
3085
  "fate-points": __props.fatePoints,
1871
3086
  "path-label": __props.pathLabel,
1872
3087
  pool: __props.pool,
1873
3088
  title: __props.detailsLabel,
1874
- onClose: _cache[3] || (_cache[3] = ($event) => isDetailsOpen.value = false)
3089
+ onClose: _cache[5] || (_cache[5] = ($event) => isDetailsOpen.value = false)
1875
3090
  }, null, 8, [
1876
3091
  "close-label",
1877
3092
  "fate-points",
@@ -1879,34 +3094,121 @@ var Index_default$25 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defin
1879
3094
  "pool",
1880
3095
  "title"
1881
3096
  ])) : createCommentVNode("v-if", true),
1882
- __props.results.length > 0 ? (openBlock(), createElementBlock("div", {
3097
+ isHistoryOpen.value ? (openBlock(), createBlock(Index_default$37, {
1883
3098
  key: 4,
3099
+ "close-label": __props.backLabel,
3100
+ history: __props.history,
3101
+ title: __props.historyLabel,
3102
+ onClose: _cache[6] || (_cache[6] = ($event) => isHistoryOpen.value = false)
3103
+ }, null, 8, [
3104
+ "close-label",
3105
+ "history",
3106
+ "title"
3107
+ ])) : createCommentVNode("v-if", true),
3108
+ __props.results.length > 0 ? (openBlock(), createElementBlock("div", {
3109
+ key: 5,
1884
3110
  class: "results",
1885
- onClick: _cache[4] || (_cache[4] = ($event) => emit("dismiss"))
1886
- }, [createElementVNode("ul", _hoisted_23, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.results, ({ isCapturingRadiance, name, rarity, wishReturn }, index) => {
3111
+ onClick: _cache[7] || (_cache[7] = ($event) => emit("dismiss"))
3112
+ }, [createElementVNode("ul", _hoisted_19, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.results, ({ isCapturingRadiance, name, rarity, stellaFortuna, wishReturn }, index) => {
1887
3113
  return openBlock(), createElementBlock("li", {
1888
3114
  key: index,
1889
3115
  class: "result",
1890
3116
  "data-capturing-radiance": isCapturingRadiance,
1891
3117
  "data-rarity": rarity
1892
3118
  }, [
1893
- createElementVNode("span", _hoisted_25, toDisplayString(name), 1),
1894
- createElementVNode("span", _hoisted_26, toDisplayString("★".repeat(rarity)), 1),
1895
- createElementVNode("span", _hoisted_27, toDisplayString(wishReturn), 1)
1896
- ], 8, _hoisted_24);
3119
+ createElementVNode("span", _hoisted_21, toDisplayString(name), 1),
3120
+ createVNode(Index_default$27, { rarity }, null, 8, ["rarity"]),
3121
+ stellaFortuna ? (openBlock(), createElementBlock("span", _hoisted_22, toDisplayString(stellaFortuna), 1)) : createCommentVNode("v-if", true),
3122
+ createElementVNode("span", _hoisted_23, toDisplayString(wishReturn), 1)
3123
+ ], 8, _hoisted_20);
1897
3124
  }), 128))])])) : createCommentVNode("v-if", true)
1898
3125
  ])], 2112);
1899
3126
  };
1900
3127
  }
1901
- }), [["__scopeId", "data-v-fe40ca36"]]);
3128
+ }), [["__scopeId", "data-v-669dc4ab"]]);
3129
+ //#endregion
3130
+ //#region src/models/WorshipLevelState.ts
3131
+ let WorshipLevelState = /* @__PURE__ */ function(WorshipLevelState) {
3132
+ WorshipLevelState["Claimable"] = "claimable";
3133
+ WorshipLevelState["Claimed"] = "claimed";
3134
+ WorshipLevelState["Locked"] = "locked";
3135
+ return WorshipLevelState;
3136
+ }({});
3137
+ //#endregion
3138
+ //#region src/components/WorshipScreen/Index.vue
3139
+ const _hoisted_1 = { class: "worship-screen" };
3140
+ const _hoisted_2 = { class: "title" };
3141
+ const _hoisted_3 = { class: "levels" };
3142
+ const _hoisted_4 = ["disabled"];
3143
+ const _hoisted_5 = { class: "level" };
3144
+ const _hoisted_6 = { class: "oculi" };
3145
+ const _hoisted_7 = { class: "rewards" };
3146
+ var Index_default$40 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
3147
+ __name: "Index",
3148
+ props: {
3149
+ blessingTitle: {},
3150
+ heldCount: {},
3151
+ levels: {},
3152
+ title: {}
3153
+ },
3154
+ emits: [
3155
+ "blessing",
3156
+ "claim",
3157
+ "close",
3158
+ "offer"
3159
+ ],
3160
+ setup(__props, { emit: __emit }) {
3161
+ const emit = __emit;
3162
+ const nextClaimableLevel = computed(() => __props.levels.find(({ state }) => state === "claimable")?.level);
3163
+ return (_ctx, _cache) => {
3164
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The layout is provisional until the recording of the Worship screen shows it "), createElementVNode("div", _hoisted_1, [
3165
+ createElementVNode("h1", _hoisted_2, toDisplayString(__props.title), 1),
3166
+ createElementVNode("button", {
3167
+ class: "close",
3168
+ type: "button",
3169
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
3170
+ }, "×"),
3171
+ createElementVNode("button", {
3172
+ class: "blessing",
3173
+ type: "button",
3174
+ onClick: _cache[1] || (_cache[1] = ($event) => emit("blessing"))
3175
+ }, toDisplayString(__props.blessingTitle), 1),
3176
+ createElementVNode("button", {
3177
+ class: "held",
3178
+ type: "button",
3179
+ onClick: _cache[2] || (_cache[2] = ($event) => emit("offer"))
3180
+ }, toDisplayString(__props.heldCount), 1),
3181
+ createElementVNode("ol", _hoisted_3, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.levels, ({ level, oculusCount, rewards, state }) => {
3182
+ return openBlock(), createElementBlock("li", {
3183
+ key: level,
3184
+ class: normalizeClass(state)
3185
+ }, [createElementVNode("button", {
3186
+ type: "button",
3187
+ disabled: level !== nextClaimableLevel.value,
3188
+ onClick: _cache[3] || (_cache[3] = ($event) => emit("claim"))
3189
+ }, [
3190
+ createElementVNode("span", _hoisted_5, toDisplayString(level), 1),
3191
+ createElementVNode("span", _hoisted_6, toDisplayString(oculusCount), 1),
3192
+ createElementVNode("span", _hoisted_7, [(openBlock(true), createElementBlock(Fragment, null, renderList(rewards, ({ count, name }) => {
3193
+ return openBlock(), createElementBlock("span", { key: name }, toDisplayString(name) + " × " + toDisplayString(count), 1);
3194
+ }), 128))])
3195
+ ], 8, _hoisted_4)], 2);
3196
+ }), 128))])
3197
+ ])], 2112);
3198
+ };
3199
+ }
3200
+ }), [["__scopeId", "data-v-529b74f5"]]);
1902
3201
  //#endregion
1903
3202
  //#region src/models/InteractionKind.ts
1904
3203
  let InteractionKind = /* @__PURE__ */ function(InteractionKind) {
1905
3204
  InteractionKind["Activate"] = "Activate";
3205
+ InteractionKind["Claim"] = "Claim";
3206
+ InteractionKind["Dig"] = "Dig";
1906
3207
  InteractionKind["Open"] = "Open";
1907
3208
  InteractionKind["PickUp"] = "PickUp";
1908
3209
  InteractionKind["Read"] = "Read";
1909
3210
  InteractionKind["Talk"] = "Talk";
3211
+ InteractionKind["Use"] = "Use";
1910
3212
  return InteractionKind;
1911
3213
  }({});
1912
3214
  //#endregion
@@ -1927,6 +3229,14 @@ let InterfaceClipProperty = /* @__PURE__ */ function(InterfaceClipProperty) {
1927
3229
  }({});
1928
3230
  const InterfaceClipProperties = Object.values(InterfaceClipProperty);
1929
3231
  //#endregion
3232
+ //#region src/models/WeaponMenuTab.ts
3233
+ let WeaponMenuTab = /* @__PURE__ */ function(WeaponMenuTab) {
3234
+ WeaponMenuTab["Ascend"] = "Ascend";
3235
+ WeaponMenuTab["Enhance"] = "Enhance";
3236
+ WeaponMenuTab["Refine"] = "Refine";
3237
+ return WeaponMenuTab;
3238
+ }({});
3239
+ //#endregion
1930
3240
  //#region src/models/reference/GameSourceKind.ts
1931
3241
  let GameSourceKind = /* @__PURE__ */ function(GameSourceKind) {
1932
3242
  GameSourceKind["AnimationClip"] = "AnimationClip";
@@ -1989,4 +3299,4 @@ const toInterfaceClip = ({ durationMs, tracks }) => ({
1989
3299
  }] : [])
1990
3300
  });
1991
3301
  //#endregion
1992
- export { ASCENSION_PHASE_COUNT, BannerKind, BannerKinds, CHECK_MARK_PATH, CONSTELLATION_NODE_PLACES, Index_default as CharacterMenu, Index_default$1 as CharacterMenuArtifacts, Index_default$2 as CharacterMenuButtons, Index_default$3 as CharacterMenuConstellation, Index_default$4 as CharacterMenuProfile, CharacterMenuTab, CharacterMenuTabs, Index_default$5 as CharacterMenuTalents, Index_default$6 as CharacterMenuWeapons, Index_default$7 as CraftingScreen, DialogueChoiceIcon, DialogueChoiceIconPathMap, Index_default$8 as DialogueScreen, FIXTURE_VARIANT_SEPARATOR, ForgeQueueState, Index_default$9 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$10 as GameButton, GameButtonKind, _sfc_main as GameRect, Index_default$11 as GameScreen, GameSourceKind, INTERACTION_HOVER_MS, INTERACTION_KEY_LABEL, INTERACTION_PILL_REST_MS, INTERACTION_PRESS_MS, INTERACTION_REST_MS, InteractionKind, Index_default$12 as InteractionPrompts, InteractionState, InterfaceClipProperties, InterfaceClipProperty, InterfaceIcon, InterfaceIconCentreMap, InterfaceIconPathMap, InterfaceIcons, Index_default$13 as InventoryScreen, InventorySort, InventorySorts, InvestigationOutcome, ItemCategories, ItemCategory, Index_default$14 as ItemTile, Index_default$15 as LoadingSpinner, MOBILE_INTERFACE_SCALE, ORNAMENT_END_PATH, ORNAMENT_MIDDLE_PATH, Index_default$16 as OrnamentDivider, Index_default$17 as ProgressBar, Index_default$18 as PromptBand, Index_default$19 as ReputationScreen, Index_default$20 as RoundButton, SERVER_MARK_DIAMOND_PATH, SERVER_MARK_TICK_PATH, SETTINGS_RING_CENTRE, SETTINGS_RING_RADIUS, SETTINGS_RING_WIDTH, Index_default$21 as ServerBar, Index_default$22 as ToastNotice, Index_default$23 as TwoColumnScreen, Index_default$24 as WishDetails, Index_default$25 as WishScreen, computeRectOffsets, playInterfaceClip, toCanvasRect, toCanvasRectStyle, toInterfaceClip };
3302
+ export { ASCENSION_PHASE_COUNT, Index_default as ArtifactEnhancePicker, Index_default$1 as ArtifactPicker, BannerKind, BannerKinds, Index_default$2 as BlessingScreen, CHECK_MARK_PATH, CONSTELLATION_NODE_PLACES, COOKING_ARC_CENTRE_X, COOKING_ARC_CENTRE_Y, COOKING_ARC_RADIUS_X, COOKING_ARC_RADIUS_Y, Index_default$3 as CharacterMenu, Index_default$4 as CharacterMenuArtifacts, Index_default$5 as CharacterMenuButtons, Index_default$6 as CharacterMenuConstellation, Index_default$7 as CharacterMenuProfile, CharacterMenuTab, CharacterMenuTabs, Index_default$8 as CharacterMenuTalents, Index_default$9 as CharacterMenuWeapons, Index_default$10 as CookingScreen, Index_default$11 as CraftingScreen, DialogueChoiceIcon, DialogueChoiceIconPathMap, Index_default$12 as DialogueScreen, Index_default$13 as DiscButton, ExpeditionActionKind, Index_default$14 as ExpeditionScreen, FIXTURE_VARIANT_SEPARATOR, ForgeQueueState, Index_default$15 as ForgeScreen, ForgeTab, GAME_CANVAS_INSET, GAME_CANVAS_RECT, GAME_CANVAS_UNIT, GAME_CREAM, GAME_CURSOR, GAME_FONT_FAMILY, GAME_GOLD, GAME_INK, GAME_REPLY_HOVER, GAME_REPLY_HOVER_INK, GAME_REPLY_REST, GAME_ROW_HOVER, GAME_ROW_PRESS, GAME_SMOOTHSTEP_EASING, GAME_UNIT, GAME_WHITE, Index_default$16 as GameButton, GameButtonKind, _sfc_main as GameRect, Index_default$17 as GameScreen, GameSourceKind, INTERACTION_HOVER_MS, INTERACTION_KEY_LABEL, INTERACTION_PILL_REST_MS, INTERACTION_PRESS_MS, INTERACTION_REST_MS, InteractionKind, Index_default$18 as InteractionPrompts, InteractionState, InterfaceClipProperties, InterfaceClipProperty, InterfaceIcon, InterfaceIconCentreMap, InterfaceIconPathMap, InterfaceIcons, Index_default$19 as InventoryScreen, InventorySort, InventorySorts, InvestigationOutcome, ItemCategories, ItemCategory, Index_default$20 as ItemTile, Index_default$21 as LoadingSpinner, MOBILE_INTERFACE_SCALE, ORNAMENT_END_PATH, ORNAMENT_MIDDLE_PATH, Index_default$22 as OrnamentDivider, Index_default$23 as PartySetupScreen, Index_default$24 as PickerShell, Index_default$25 as ProgressBar, Index_default$26 as PromptBand, Index_default$27 as RarityStars, Index_default$28 as ReputationScreen, Index_default$29 as RoundButton, SERVER_MARK_DIAMOND_PATH, SERVER_MARK_TICK_PATH, SETTINGS_RING_CENTRE, SETTINGS_RING_RADIUS, SETTINGS_RING_WIDTH, Index_default$30 as ScreenTitle, Index_default$31 as ServerBar, Index_default$32 as ShopScreen, Index_default$33 as ToastNotice, Index_default$34 as TwoColumnScreen, Index_default$35 as WeaponMenu, WeaponMenuTab, Index_default$36 as WishDetails, Index_default$37 as WishHistory, Index_default$38 as WishPath, Index_default$39 as WishScreen, WorshipLevelState, Index_default$40 as WorshipScreen, computeRectOffsets, playInterfaceClip, toCanvasRect, toCanvasRectStyle, toInterfaceClip };