@crockery/fellowship-components 0.4.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/README.md +40 -26
  2. package/RELEASING.md +15 -14
  3. package/THIRD_PARTY_LICENSES.md +12 -0
  4. package/dist/assets/dm-mono-latin-400-normal-4GdczIuU.woff2 +0 -0
  5. package/dist/assets/dm-mono-latin-500-normal-DRMDZjhP.woff2 +0 -0
  6. package/dist/assets/syne-latin-700-normal-AF3Rs61n.woff2 +0 -0
  7. package/dist/assets/syne-latin-800-normal-EehdNYzx.woff2 +0 -0
  8. package/dist/chunks/decorate-DyMgX_Uh.js +9 -0
  9. package/dist/chunks/{dungeon-cast-browser-CSnu3gC5.js → dungeon-cast-browser-DdG8klca.js} +62 -60
  10. package/dist/chunks/{dungeon-map-CutIcCVP.js → dungeon-map-D0-DAjZ9.js} +130 -133
  11. package/dist/chunks/{decorate-B_ZTN9li.js → field-manual-fonts-DTFloVFe.js} +18 -25
  12. package/dist/chunks/gear-planner-Bgt77Ovf.js +1696 -0
  13. package/dist/chunks/{talent-calculator-Dxuc2dZ8.js → talent-calculator-DbU6P1AP.js} +36 -37
  14. package/dist/chunks/tooltip-C3SSJw-t.js +482 -0
  15. package/dist/data/cast-data-source.d.ts +1 -2
  16. package/dist/data/data-source.d.ts +1 -2
  17. package/dist/data/package-cast-data-source.d.ts +1 -6
  18. package/dist/data/package-data-source.d.ts +1 -6
  19. package/dist/data/package-talent-data-source.d.ts +1 -6
  20. package/dist/data/talent-data-source.d.ts +1 -2
  21. package/dist/dungeon-cast-browser/dungeon-cast-browser.d.ts +2 -2
  22. package/dist/dungeon-cast-browser/dungeon-cast-browser.styles.d.ts +0 -1
  23. package/dist/dungeon-cast-browser/index.d.ts +0 -1
  24. package/dist/dungeon-cast-browser/render-model.d.ts +3 -3
  25. package/dist/dungeon-cast-browser/types.d.ts +2 -3
  26. package/dist/dungeon-cast-browser.js +1 -3
  27. package/dist/dungeon-map/dungeon-map.d.ts +2 -2
  28. package/dist/dungeon-map/dungeon-map.styles.d.ts +0 -1
  29. package/dist/dungeon-map/index.d.ts +0 -1
  30. package/dist/dungeon-map/layout.d.ts +0 -1
  31. package/dist/dungeon-map/render-model.d.ts +3 -4
  32. package/dist/dungeon-map/types.d.ts +2 -3
  33. package/dist/dungeon-map/viewport-controller.d.ts +0 -1
  34. package/dist/dungeon-map.js +1 -3
  35. package/dist/gear-planner/gear-planner.d.ts +36 -0
  36. package/dist/gear-planner/gear-planner.styles.d.ts +1 -0
  37. package/dist/gear-planner/gear-position.d.ts +19 -0
  38. package/dist/gear-planner/index.d.ts +2 -0
  39. package/dist/gear-planner/item-workbench.d.ts +18 -0
  40. package/dist/gear-planner/item-workbench.styles.d.ts +1 -0
  41. package/dist/gear-planner/types.d.ts +24 -0
  42. package/dist/gear-planner.js +5 -0
  43. package/dist/index.d.ts +6 -6
  44. package/dist/index.js +9 -7
  45. package/dist/react/dungeon-cast-browser.d.ts +8 -4
  46. package/dist/react/dungeon-cast-browser.js +11 -6
  47. package/dist/react/dungeon-map.d.ts +3 -2
  48. package/dist/react/dungeon-map.js +1 -3
  49. package/dist/react/gear-planner.d.ts +14 -0
  50. package/dist/react/gear-planner.js +23 -0
  51. package/dist/react/index.d.ts +2 -1
  52. package/dist/react/talent-calculator.d.ts +3 -2
  53. package/dist/react/talent-calculator.js +1 -3
  54. package/dist/react/tooltip.d.ts +0 -1
  55. package/dist/react/tooltip.js +1 -3
  56. package/dist/react.js +2 -1
  57. package/dist/styles/dungeon-poster-fonts.d.ts +2 -0
  58. package/dist/styles/dungeon-poster.styles.d.ts +7 -0
  59. package/dist/styles/field-manual-fonts.d.ts +0 -1
  60. package/dist/styles/field-manual.styles.d.ts +0 -1
  61. package/dist/talent-calculator/index.d.ts +0 -1
  62. package/dist/talent-calculator/render-model.d.ts +3 -3
  63. package/dist/talent-calculator/selection-state.d.ts +0 -1
  64. package/dist/talent-calculator/talent-calculator.d.ts +2 -2
  65. package/dist/talent-calculator/talent-calculator.styles.d.ts +0 -1
  66. package/dist/talent-calculator/types.d.ts +2 -3
  67. package/dist/talent-calculator.js +1 -3
  68. package/dist/tooltip/index.d.ts +0 -1
  69. package/dist/tooltip/positioning.d.ts +0 -1
  70. package/dist/tooltip/rich-text.d.ts +0 -1
  71. package/dist/tooltip/tooltip.d.ts +0 -1
  72. package/dist/tooltip/tooltip.styles.d.ts +0 -1
  73. package/dist/tooltip/types.d.ts +0 -1
  74. package/dist/tooltip.js +3 -5
  75. package/package.json +21 -15
  76. package/src/dungeon-cast-browser/README.md +10 -4
  77. package/src/dungeon-map/README.md +5 -6
  78. package/src/gear-planner/README.md +44 -0
  79. package/src/talent-calculator/README.md +5 -6
  80. package/src/tooltip/README.md +5 -6
  81. package/dist/chunks/data-source-XbksqUrw.js +0 -9
  82. package/dist/chunks/data-source-XbksqUrw.js.map +0 -1
  83. package/dist/chunks/decorate-B_ZTN9li.js.map +0 -1
  84. package/dist/chunks/dungeon-cast-browser-CSnu3gC5.js.map +0 -1
  85. package/dist/chunks/dungeon-map-CutIcCVP.js.map +0 -1
  86. package/dist/chunks/talent-calculator-Dxuc2dZ8.js.map +0 -1
  87. package/dist/chunks/tooltip-DoQVSnOn.js +0 -412
  88. package/dist/chunks/tooltip-DoQVSnOn.js.map +0 -1
  89. package/dist/data/cast-data-source.d.ts.map +0 -1
  90. package/dist/data/data-source.d.ts.map +0 -1
  91. package/dist/data/package-cast-data-source.d.ts.map +0 -1
  92. package/dist/data/package-data-source.d.ts.map +0 -1
  93. package/dist/data/package-talent-data-source.d.ts.map +0 -1
  94. package/dist/data/talent-data-source.d.ts.map +0 -1
  95. package/dist/dungeon-cast-browser/dungeon-cast-browser.d.ts.map +0 -1
  96. package/dist/dungeon-cast-browser/dungeon-cast-browser.styles.d.ts.map +0 -1
  97. package/dist/dungeon-cast-browser/index.d.ts.map +0 -1
  98. package/dist/dungeon-cast-browser/render-model.d.ts.map +0 -1
  99. package/dist/dungeon-cast-browser/types.d.ts.map +0 -1
  100. package/dist/dungeon-cast-browser.js.map +0 -1
  101. package/dist/dungeon-map/dungeon-map.d.ts.map +0 -1
  102. package/dist/dungeon-map/dungeon-map.styles.d.ts.map +0 -1
  103. package/dist/dungeon-map/index.d.ts.map +0 -1
  104. package/dist/dungeon-map/layout.d.ts.map +0 -1
  105. package/dist/dungeon-map/render-model.d.ts.map +0 -1
  106. package/dist/dungeon-map/types.d.ts.map +0 -1
  107. package/dist/dungeon-map/viewport-controller.d.ts.map +0 -1
  108. package/dist/dungeon-map.js.map +0 -1
  109. package/dist/index.d.ts.map +0 -1
  110. package/dist/react/dungeon-cast-browser.d.ts.map +0 -1
  111. package/dist/react/dungeon-cast-browser.js.map +0 -1
  112. package/dist/react/dungeon-map.d.ts.map +0 -1
  113. package/dist/react/dungeon-map.js.map +0 -1
  114. package/dist/react/index.d.ts.map +0 -1
  115. package/dist/react/talent-calculator.d.ts.map +0 -1
  116. package/dist/react/talent-calculator.js.map +0 -1
  117. package/dist/react/tooltip.d.ts.map +0 -1
  118. package/dist/react/tooltip.js.map +0 -1
  119. package/dist/styles/field-manual-fonts.d.ts.map +0 -1
  120. package/dist/styles/field-manual.styles.d.ts.map +0 -1
  121. package/dist/talent-calculator/index.d.ts.map +0 -1
  122. package/dist/talent-calculator/render-model.d.ts.map +0 -1
  123. package/dist/talent-calculator/selection-state.d.ts.map +0 -1
  124. package/dist/talent-calculator/talent-calculator.d.ts.map +0 -1
  125. package/dist/talent-calculator/talent-calculator.styles.d.ts.map +0 -1
  126. package/dist/talent-calculator/types.d.ts.map +0 -1
  127. package/dist/talent-calculator.js.map +0 -1
  128. package/dist/tooltip/index.d.ts.map +0 -1
  129. package/dist/tooltip/positioning.d.ts.map +0 -1
  130. package/dist/tooltip/rich-text.d.ts.map +0 -1
  131. package/dist/tooltip/tooltip.d.ts.map +0 -1
  132. package/dist/tooltip/tooltip.styles.d.ts.map +0 -1
  133. package/dist/tooltip/types.d.ts.map +0 -1
  134. package/dist/tooltip.js.map +0 -1
@@ -1,412 +0,0 @@
1
- import { n as e, r as t, t as n } from "./decorate-B_ZTN9li.js";
2
- import { LitElement as r, css as i, html as a, nothing as o } from "lit";
3
- import { customElement as s, property as c, query as l, state as u } from "lit/decorators.js";
4
- import { repeat as d } from "lit/directives/repeat.js";
5
- import { styleMap as f } from "lit/directives/style-map.js";
6
- //#region src/tooltip/rich-text.ts
7
- var p = {
8
- bold: "strong",
9
- "rt.bold": "strong",
10
- "rt.absorb": "ability",
11
- "rt.warning": "warning",
12
- "rt.effect": "effect",
13
- "rt.mana": "resource",
14
- "rt.heal": "healing",
15
- "rt.meikoability1": "meiko-primary",
16
- "rt.meikoability2": "meiko-secondary"
17
- }, m = (e, t, n) => {
18
- let r = t.replace(/\r\n?/g, "\n").split(/\n{2,}/);
19
- r.forEach((t, i) => {
20
- let a = e.at(-1);
21
- if (t.length > 0) {
22
- let e = a.at(-1);
23
- e?.tone === n ? a[a.length - 1] = {
24
- text: `${e.text}${t}`,
25
- tone: n
26
- } : a.push({
27
- text: t,
28
- tone: n
29
- });
30
- }
31
- i < r.length - 1 && e.push([]);
32
- });
33
- }, h = (e) => {
34
- let t = [[]], n = ["default"], r = e.split(/(<\/?[^>]+>|<\/>)/g);
35
- for (let e of r) {
36
- if (!e) continue;
37
- if (e === "</>") {
38
- n.length > 1 && n.pop();
39
- continue;
40
- }
41
- if (e.match(/^<\/\s*([^>\s]+)\s*>$/)) {
42
- n.length > 1 && n.pop();
43
- continue;
44
- }
45
- let r = e.match(/^<\s*([^/][^>\s]*)\s*>$/);
46
- if (r) {
47
- let e = r[1]?.toLowerCase() ?? "";
48
- n.push(p[e] ?? "default");
49
- continue;
50
- }
51
- m(t, e, n.at(-1) ?? "default");
52
- }
53
- return t;
54
- }, g = (e) => h(e).map((e) => e.map(({ text: e }) => e).join("")).join("\n\n").trim(), _ = (e, t, n) => Math.min(Math.max(e, t), Math.max(t, n)), v = (e, t, n) => {
55
- let r = n.gap ?? 8, i = n.margin ?? 8, a = {
56
- top: e.top - i,
57
- bottom: n.viewportHeight - e.bottom - i,
58
- right: n.viewportWidth - e.right - i,
59
- left: e.left - i
60
- }, o = {
61
- top: t.height + r,
62
- bottom: t.height + r,
63
- right: t.width + r,
64
- left: t.width + r
65
- }, s = [
66
- "top",
67
- "bottom",
68
- "right",
69
- "left"
70
- ], c = n.placement ?? "auto", l = c === "auto" ? s.find((e) => a[e] >= o[e]) ?? [...s].sort((e, t) => a[t] - a[e])[0] : c, u = e.left + e.width / 2 - t.width / 2, d = e.top + e.height / 2 - t.height / 2, f = l === "left" ? e.left - t.width - r : l === "right" ? e.right + r : u, p = l === "top" ? e.top - t.height - r : l === "bottom" ? e.bottom + r : d;
71
- return {
72
- placement: l,
73
- x: Math.round(_(f, i, n.viewportWidth - t.width - i)),
74
- y: Math.round(_(p, i, n.viewportHeight - t.height - i))
75
- };
76
- }, y = i`
77
- :host {
78
- --fellowship-tooltip-void: var(--_fellowship-field-surface-raised);
79
- --fellowship-tooltip-ink: var(--_fellowship-field-ink);
80
- --fellowship-tooltip-muted-ink: var(--_fellowship-field-muted);
81
- --fellowship-tooltip-border: var(--_fellowship-field-border-strong);
82
- --fellowship-tooltip-focus: var(--_fellowship-field-focus);
83
- --fellowship-tooltip-ability: #76c5d2;
84
- --fellowship-tooltip-warning: #d4a761;
85
- --fellowship-tooltip-effect: #afa1ca;
86
- --fellowship-tooltip-resource: #7cb2c2;
87
- --fellowship-tooltip-healing: #82b997;
88
- --fellowship-tooltip-meiko-primary: #c892a0;
89
- --fellowship-tooltip-meiko-secondary: #8dbab7;
90
- --fellowship-tooltip-font-family: var(--_fellowship-field-font-family);
91
- --fellowship-tooltip-radius: var(--_fellowship-field-radius);
92
- --fellowship-tooltip-max-width: 360px;
93
-
94
- display: inline-block;
95
- min-width: 0;
96
- color: var(--fellowship-tooltip-ink);
97
- font-family: var(--fellowship-tooltip-font-family);
98
- -webkit-font-smoothing: antialiased;
99
- }
100
-
101
- :host([hidden]) {
102
- display: none;
103
- }
104
-
105
- .trigger {
106
- display: contents;
107
- }
108
-
109
- .surface {
110
- position: fixed;
111
- z-index: 2147483647;
112
- box-sizing: border-box;
113
- display: none;
114
- overflow: visible;
115
- width: max-content;
116
- max-width: min(var(--fellowship-tooltip-max-width), calc(100vw - 16px));
117
- margin: 0;
118
- padding: 12px 14px 14px;
119
- border: 1px solid var(--fellowship-tooltip-border);
120
- border-radius: var(--fellowship-tooltip-radius);
121
- background: var(--fellowship-tooltip-void);
122
- color: var(--fellowship-tooltip-ink);
123
- box-shadow: 0 8px 24px rgb(0 0 0 / 34%);
124
- opacity: 0;
125
- transform: translateY(4px) scale(0.98);
126
- transform-origin: bottom center;
127
- transition:
128
- opacity 140ms cubic-bezier(0.23, 1, 0.32, 1),
129
- transform 140ms cubic-bezier(0.23, 1, 0.32, 1);
130
- pointer-events: none;
131
- }
132
-
133
- .surface[data-open="true"] {
134
- display: block;
135
- opacity: 1;
136
- transform: translateY(0) scale(1);
137
- }
138
-
139
- .surface[data-placement="bottom"] {
140
- transform-origin: top center;
141
- }
142
-
143
- .surface[data-placement="left"] {
144
- transform-origin: center right;
145
- }
146
-
147
- .surface[data-placement="right"] {
148
- transform-origin: center left;
149
- }
150
-
151
- .heading {
152
- position: relative;
153
- margin: 0 0 6px;
154
- padding-left: 12px;
155
- color: var(--fellowship-tooltip-ink);
156
- font-size: 14px;
157
- font-weight: 600;
158
- line-height: 20px;
159
- text-wrap: balance;
160
- }
161
-
162
- .heading::before {
163
- position: absolute;
164
- inset: 4px auto 4px 0;
165
- width: 2px;
166
- background: var(--_fellowship-field-accent);
167
- content: "";
168
- }
169
-
170
- .content {
171
- color: var(--fellowship-tooltip-muted-ink);
172
- font-size: 13px;
173
- font-weight: 400;
174
- line-height: 20px;
175
- text-wrap: pretty;
176
- }
177
-
178
- .paragraph {
179
- margin: 0;
180
- white-space: pre-line;
181
- }
182
-
183
- .paragraph + .paragraph {
184
- margin-top: 8px;
185
- }
186
-
187
- [data-tone="strong"] {
188
- color: var(--fellowship-tooltip-ink);
189
- font-weight: 600;
190
- }
191
-
192
- [data-tone="ability"] {
193
- color: var(--fellowship-tooltip-ability);
194
- }
195
-
196
- [data-tone="warning"] {
197
- color: var(--fellowship-tooltip-warning);
198
- }
199
-
200
- [data-tone="effect"] {
201
- color: var(--fellowship-tooltip-effect);
202
- }
203
-
204
- [data-tone="resource"] {
205
- color: var(--fellowship-tooltip-resource);
206
- }
207
-
208
- [data-tone="healing"] {
209
- color: var(--fellowship-tooltip-healing);
210
- }
211
-
212
- [data-tone="meiko-primary"] {
213
- color: var(--fellowship-tooltip-meiko-primary);
214
- }
215
-
216
- [data-tone="meiko-secondary"] {
217
- color: var(--fellowship-tooltip-meiko-secondary);
218
- }
219
-
220
- .arrow {
221
- position: absolute;
222
- width: 8px;
223
- height: 8px;
224
- border: solid var(--fellowship-tooltip-border);
225
- background: var(--fellowship-tooltip-void);
226
- transform: rotate(45deg);
227
- }
228
-
229
- .surface[data-placement="top"] .arrow {
230
- bottom: -5px;
231
- left: calc(50% - 4px);
232
- border-width: 0 1px 1px 0;
233
- }
234
-
235
- .surface[data-placement="bottom"] .arrow {
236
- top: -5px;
237
- left: calc(50% - 4px);
238
- border-width: 1px 0 0 1px;
239
- }
240
-
241
- .surface[data-placement="left"] .arrow {
242
- top: calc(50% - 4px);
243
- right: -5px;
244
- border-width: 1px 1px 0 0;
245
- }
246
-
247
- .surface[data-placement="right"] .arrow {
248
- top: calc(50% - 4px);
249
- left: -5px;
250
- border-width: 0 0 1px 1px;
251
- }
252
-
253
- @media (prefers-reduced-motion: reduce) {
254
- .surface {
255
- transition: opacity 100ms linear;
256
- transform: none;
257
- }
258
- }
259
- `, b = {
260
- bubbles: !0,
261
- composed: !0
262
- }, x = class extends r {
263
- constructor(...e) {
264
- super(...e), this.heading = null, this.text = null, this.placement = "auto", this.openDelay = 250, this.disabled = !1, this._open = !1, this._position = {
265
- x: 0,
266
- y: 0
267
- }, this._resolvedPlacement = "top", this._paragraphs = [], this.#e = null, this.#t = null, this.#n = null, this.#r = !1, this.#i = null, this.#o = () => {
268
- if (!this._open || !this.#t || !this._surface) return;
269
- let e = v(this.#t.getBoundingClientRect(), this._surface.getBoundingClientRect(), {
270
- placement: this.placement,
271
- viewportWidth: window.innerWidth,
272
- viewportHeight: window.innerHeight
273
- });
274
- e.x === this._position.x && e.y === this._position.y && e.placement === this._resolvedPlacement || (this._position = {
275
- x: e.x,
276
- y: e.y
277
- }, this._resolvedPlacement = e.placement);
278
- }, this.#l = () => {
279
- this.disabled || this._open || (this.#_(), this.#e = window.setTimeout(() => {
280
- this.#e = null, this.#a(!0, "pointer");
281
- }, Math.max(0, this.openDelay)));
282
- }, this.#u = () => {
283
- this.#_(), this._open && this.#a(!1, "pointer");
284
- }, this.#d = () => {
285
- this.#_(), !this.disabled && !this._open && this.#a(!0, "focus");
286
- }, this.#f = (e) => {
287
- !this.contains(e.relatedTarget) && this._open && this.#a(!1, "focus");
288
- }, this.#p = (e) => {
289
- e.key === "Escape" && this._open && (e.stopPropagation(), this.#a(!1, "escape"));
290
- }, this.#m = (e) => {
291
- let t = e.currentTarget.assignedElements({ flatten: !0 })[0];
292
- this.#g(), this.#t = t instanceof HTMLElement ? t : null, this.#h();
293
- };
294
- }
295
- static {
296
- this.styles = [t, y];
297
- }
298
- #e;
299
- #t;
300
- #n;
301
- #r;
302
- #i;
303
- connectedCallback() {
304
- super.connectedCallback(), e(this.ownerDocument), this.#i ??= new ResizeObserver(() => this.#o());
305
- }
306
- disconnectedCallback() {
307
- this.#_(), this.#c(), this.#g(), super.disconnectedCallback();
308
- }
309
- updated(e) {
310
- super.updated(e), (e.has("text") || e.has("heading")) && this.#h(), e.has("disabled") && this.disabled && this._open && this.#a(!1, "disabled"), e.has("placement") && this._open && this.#o();
311
- }
312
- willUpdate(e) {
313
- super.willUpdate(e), e.has("text") && (this._paragraphs = h(this.text ?? ""));
314
- }
315
- show() {
316
- this.disabled || this._open || this.#a(!0, "programmatic");
317
- }
318
- hide() {
319
- this.#_(), this._open && this.#a(!1, "programmatic");
320
- }
321
- render() {
322
- let e = {
323
- left: `${this._position.x}px`,
324
- top: `${this._position.y}px`
325
- };
326
- return a`
327
- <span
328
- class="trigger"
329
- part="trigger"
330
- @pointerenter=${this.#l}
331
- @pointerleave=${this.#u}
332
- @focusin=${this.#d}
333
- @focusout=${this.#f}
334
- @keydown=${this.#p}
335
- >
336
- <slot @slotchange=${this.#m}></slot>
337
- </span>
338
- <div
339
- class="surface"
340
- part="surface"
341
- role="tooltip"
342
- popover="manual"
343
- data-open=${String(this._open)}
344
- data-placement=${this._resolvedPlacement}
345
- style=${f(e)}
346
- >
347
- <span class="arrow" part="arrow" aria-hidden="true"></span>
348
- <slot name="content">
349
- ${this.heading ? a`<p class="heading" part="heading">${this.heading}</p>` : o}
350
- <div class="content" part="content">
351
- ${d(this._paragraphs, (e, t) => t, (e, t) => a`
352
- <p class="paragraph" part="paragraph">
353
- ${d(e, (e, n) => `${t}:${n}:${e.tone}:${e.text}`, (e) => a`<span data-tone=${e.tone}>${e.text}</span>`)}
354
- </p>
355
- `)}
356
- </div>
357
- </slot>
358
- </div>
359
- `;
360
- }
361
- #a(e, t) {
362
- e !== this._open && (this._open = e, this.updateComplete.then(() => {
363
- let t = this._surface;
364
- t && (e ? ("showPopover" in t && !t.matches(":popover-open") && t.showPopover(), this.#s(), this.#o()) : ("hidePopover" in t && t.matches(":popover-open") && t.hidePopover(), this.#c()));
365
- }), this.dispatchEvent(new CustomEvent("fellowship-tooltip-toggle", {
366
- ...b,
367
- detail: {
368
- open: e,
369
- reason: t
370
- }
371
- })));
372
- }
373
- #o;
374
- #s() {
375
- window.addEventListener("resize", this.#o), window.addEventListener("scroll", this.#o, !0), this.#t && this.#i?.observe(this.#t), this._surface && this.#i?.observe(this._surface);
376
- }
377
- #c() {
378
- window.removeEventListener("resize", this.#o), window.removeEventListener("scroll", this.#o, !0), this.#i?.disconnect();
379
- }
380
- #l;
381
- #u;
382
- #d;
383
- #f;
384
- #p;
385
- #m;
386
- #h() {
387
- if (!this.#t) return;
388
- this.#r ||= (this.#n = this.#t.getAttribute("aria-description"), !0);
389
- let e = [this.heading, g(this.text ?? "")].filter(Boolean).join(". ");
390
- e ? this.#t.setAttribute("aria-description", e) : this.#n === null && this.#t.removeAttribute("aria-description");
391
- }
392
- #g() {
393
- this.#t && (this.#n === null ? this.#t.removeAttribute("aria-description") : this.#t.setAttribute("aria-description", this.#n), this.#t = null, this.#n = null, this.#r = !1);
394
- }
395
- #_() {
396
- this.#e !== null && (window.clearTimeout(this.#e), this.#e = null);
397
- }
398
- };
399
- n([c({ type: String })], x.prototype, "heading", void 0), n([c({ type: String })], x.prototype, "text", void 0), n([c({ type: String })], x.prototype, "placement", void 0), n([c({
400
- type: Number,
401
- attribute: "open-delay"
402
- })], x.prototype, "openDelay", void 0), n([c({
403
- type: Boolean,
404
- reflect: !0
405
- })], x.prototype, "disabled", void 0), n([u()], x.prototype, "_open", void 0), n([u()], x.prototype, "_position", void 0), n([u()], x.prototype, "_resolvedPlacement", void 0), n([u()], x.prototype, "_paragraphs", void 0), n([l(".surface")], x.prototype, "_surface", void 0), x = n([s("fellowship-tooltip")], x);
406
- var S = () => {
407
- customElements.get("fellowship-tooltip") || customElements.define("fellowship-tooltip", x);
408
- };
409
- //#endregion
410
- export { g as a, h as i, S as n, v as r, x as t };
411
-
412
- //# sourceMappingURL=tooltip-DoQVSnOn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tooltip-DoQVSnOn.js","names":["#trigger","#clearTimer","#timer","#setOpen","#restoreTriggerDescription","#syncTriggerDescription","#resizeObserver","#positionSurface","#stopPositionTracking","#handlePointerEnter","#handlePointerLeave","#handleFocusIn","#handleFocusOut","#handleKeydown","#handleTriggerSlotChange","#startPositionTracking","#hasStoredAriaDescription","#previousAriaDescription"],"sources":["../../src/tooltip/rich-text.ts","../../src/tooltip/positioning.ts","../../src/tooltip/tooltip.styles.ts","../../src/tooltip/tooltip.ts"],"sourcesContent":["import type {\n FellowshipRichTextDocument,\n FellowshipRichTextSegment,\n FellowshipTextTone,\n} from \"./types.js\";\n\nconst toneByTag: Readonly<Record<string, FellowshipTextTone>> = {\n bold: \"strong\",\n \"rt.bold\": \"strong\",\n \"rt.absorb\": \"ability\",\n \"rt.warning\": \"warning\",\n \"rt.effect\": \"effect\",\n \"rt.mana\": \"resource\",\n \"rt.heal\": \"healing\",\n \"rt.meikoability1\": \"meiko-primary\",\n \"rt.meikoability2\": \"meiko-secondary\",\n};\n\nconst appendText = (\n paragraphs: FellowshipRichTextSegment[][],\n text: string,\n tone: FellowshipTextTone,\n): void => {\n const normalized = text.replace(/\\r\\n?/g, \"\\n\");\n const parts = normalized.split(/\\n{2,}/);\n parts.forEach((part, index) => {\n const paragraph = paragraphs.at(-1)!;\n if (part.length > 0) {\n const previous = paragraph.at(-1);\n if (previous?.tone === tone) {\n paragraph[paragraph.length - 1] = { text: `${previous.text}${part}`, tone };\n } else {\n paragraph.push({ text: part, tone });\n }\n }\n if (index < parts.length - 1) {\n paragraphs.push([]);\n }\n });\n};\n\nexport const resolveFellowshipRichText = (value: string): FellowshipRichTextDocument => {\n const paragraphs: FellowshipRichTextSegment[][] = [[]];\n const tones: FellowshipTextTone[] = [\"default\"];\n const tokens = value.split(/(<\\/?[^>]+>|<\\/>)/g);\n\n for (const token of tokens) {\n if (!token) {\n continue;\n }\n if (token === \"</>\") {\n if (tones.length > 1) {\n tones.pop();\n }\n continue;\n }\n const closing = token.match(/^<\\/\\s*([^>\\s]+)\\s*>$/);\n if (closing) {\n if (tones.length > 1) {\n tones.pop();\n }\n continue;\n }\n const opening = token.match(/^<\\s*([^/][^>\\s]*)\\s*>$/);\n if (opening) {\n const tag = opening[1]?.toLowerCase() ?? \"\";\n tones.push(toneByTag[tag] ?? \"default\");\n continue;\n }\n appendText(paragraphs, token, tones.at(-1) ?? \"default\");\n }\n\n return paragraphs;\n};\n\nexport const stripFellowshipRichText = (value: string): string =>\n resolveFellowshipRichText(value)\n .map((paragraph) => paragraph.map(({ text }) => text).join(\"\"))\n .join(\"\\n\\n\")\n .trim();\n","import type { FellowshipTooltipPlacement, ResolvedTooltipPlacement } from \"./types.js\";\n\nexport interface TooltipRect {\n readonly top: number;\n readonly right: number;\n readonly bottom: number;\n readonly left: number;\n readonly width: number;\n readonly height: number;\n}\n\nexport interface TooltipPosition {\n readonly x: number;\n readonly y: number;\n readonly placement: ResolvedTooltipPlacement;\n}\n\nexport interface TooltipPositionOptions {\n readonly placement?: FellowshipTooltipPlacement;\n readonly viewportWidth: number;\n readonly viewportHeight: number;\n readonly gap?: number;\n readonly margin?: number;\n}\n\nconst clamp = (value: number, minimum: number, maximum: number): number =>\n Math.min(Math.max(value, minimum), Math.max(minimum, maximum));\n\nexport const calculateTooltipPosition = (\n trigger: TooltipRect,\n tooltip: Pick<TooltipRect, \"width\" | \"height\">,\n options: TooltipPositionOptions,\n): TooltipPosition => {\n const gap = options.gap ?? 8;\n const margin = options.margin ?? 8;\n const available: Record<ResolvedTooltipPlacement, number> = {\n top: trigger.top - margin,\n bottom: options.viewportHeight - trigger.bottom - margin,\n right: options.viewportWidth - trigger.right - margin,\n left: trigger.left - margin,\n };\n const required: Record<ResolvedTooltipPlacement, number> = {\n top: tooltip.height + gap,\n bottom: tooltip.height + gap,\n right: tooltip.width + gap,\n left: tooltip.width + gap,\n };\n const order: readonly ResolvedTooltipPlacement[] = [\"top\", \"bottom\", \"right\", \"left\"];\n const preferred = options.placement ?? \"auto\";\n const placement =\n preferred === \"auto\"\n ? (order.find((candidate) => available[candidate] >= required[candidate]) ??\n [...order].sort((a, b) => available[b] - available[a])[0]!)\n : preferred;\n\n const centeredX = trigger.left + trigger.width / 2 - tooltip.width / 2;\n const centeredY = trigger.top + trigger.height / 2 - tooltip.height / 2;\n const x =\n placement === \"left\"\n ? trigger.left - tooltip.width - gap\n : placement === \"right\"\n ? trigger.right + gap\n : centeredX;\n const y =\n placement === \"top\"\n ? trigger.top - tooltip.height - gap\n : placement === \"bottom\"\n ? trigger.bottom + gap\n : centeredY;\n\n return {\n placement,\n x: Math.round(clamp(x, margin, options.viewportWidth - tooltip.width - margin)),\n y: Math.round(clamp(y, margin, options.viewportHeight - tooltip.height - margin)),\n };\n};\n","import { css } from \"lit\";\n\nexport const tooltipStyles = css`\n :host {\n --fellowship-tooltip-void: var(--_fellowship-field-surface-raised);\n --fellowship-tooltip-ink: var(--_fellowship-field-ink);\n --fellowship-tooltip-muted-ink: var(--_fellowship-field-muted);\n --fellowship-tooltip-border: var(--_fellowship-field-border-strong);\n --fellowship-tooltip-focus: var(--_fellowship-field-focus);\n --fellowship-tooltip-ability: #76c5d2;\n --fellowship-tooltip-warning: #d4a761;\n --fellowship-tooltip-effect: #afa1ca;\n --fellowship-tooltip-resource: #7cb2c2;\n --fellowship-tooltip-healing: #82b997;\n --fellowship-tooltip-meiko-primary: #c892a0;\n --fellowship-tooltip-meiko-secondary: #8dbab7;\n --fellowship-tooltip-font-family: var(--_fellowship-field-font-family);\n --fellowship-tooltip-radius: var(--_fellowship-field-radius);\n --fellowship-tooltip-max-width: 360px;\n\n display: inline-block;\n min-width: 0;\n color: var(--fellowship-tooltip-ink);\n font-family: var(--fellowship-tooltip-font-family);\n -webkit-font-smoothing: antialiased;\n }\n\n :host([hidden]) {\n display: none;\n }\n\n .trigger {\n display: contents;\n }\n\n .surface {\n position: fixed;\n z-index: 2147483647;\n box-sizing: border-box;\n display: none;\n overflow: visible;\n width: max-content;\n max-width: min(var(--fellowship-tooltip-max-width), calc(100vw - 16px));\n margin: 0;\n padding: 12px 14px 14px;\n border: 1px solid var(--fellowship-tooltip-border);\n border-radius: var(--fellowship-tooltip-radius);\n background: var(--fellowship-tooltip-void);\n color: var(--fellowship-tooltip-ink);\n box-shadow: 0 8px 24px rgb(0 0 0 / 34%);\n opacity: 0;\n transform: translateY(4px) scale(0.98);\n transform-origin: bottom center;\n transition:\n opacity 140ms cubic-bezier(0.23, 1, 0.32, 1),\n transform 140ms cubic-bezier(0.23, 1, 0.32, 1);\n pointer-events: none;\n }\n\n .surface[data-open=\"true\"] {\n display: block;\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n\n .surface[data-placement=\"bottom\"] {\n transform-origin: top center;\n }\n\n .surface[data-placement=\"left\"] {\n transform-origin: center right;\n }\n\n .surface[data-placement=\"right\"] {\n transform-origin: center left;\n }\n\n .heading {\n position: relative;\n margin: 0 0 6px;\n padding-left: 12px;\n color: var(--fellowship-tooltip-ink);\n font-size: 14px;\n font-weight: 600;\n line-height: 20px;\n text-wrap: balance;\n }\n\n .heading::before {\n position: absolute;\n inset: 4px auto 4px 0;\n width: 2px;\n background: var(--_fellowship-field-accent);\n content: \"\";\n }\n\n .content {\n color: var(--fellowship-tooltip-muted-ink);\n font-size: 13px;\n font-weight: 400;\n line-height: 20px;\n text-wrap: pretty;\n }\n\n .paragraph {\n margin: 0;\n white-space: pre-line;\n }\n\n .paragraph + .paragraph {\n margin-top: 8px;\n }\n\n [data-tone=\"strong\"] {\n color: var(--fellowship-tooltip-ink);\n font-weight: 600;\n }\n\n [data-tone=\"ability\"] {\n color: var(--fellowship-tooltip-ability);\n }\n\n [data-tone=\"warning\"] {\n color: var(--fellowship-tooltip-warning);\n }\n\n [data-tone=\"effect\"] {\n color: var(--fellowship-tooltip-effect);\n }\n\n [data-tone=\"resource\"] {\n color: var(--fellowship-tooltip-resource);\n }\n\n [data-tone=\"healing\"] {\n color: var(--fellowship-tooltip-healing);\n }\n\n [data-tone=\"meiko-primary\"] {\n color: var(--fellowship-tooltip-meiko-primary);\n }\n\n [data-tone=\"meiko-secondary\"] {\n color: var(--fellowship-tooltip-meiko-secondary);\n }\n\n .arrow {\n position: absolute;\n width: 8px;\n height: 8px;\n border: solid var(--fellowship-tooltip-border);\n background: var(--fellowship-tooltip-void);\n transform: rotate(45deg);\n }\n\n .surface[data-placement=\"top\"] .arrow {\n bottom: -5px;\n left: calc(50% - 4px);\n border-width: 0 1px 1px 0;\n }\n\n .surface[data-placement=\"bottom\"] .arrow {\n top: -5px;\n left: calc(50% - 4px);\n border-width: 1px 0 0 1px;\n }\n\n .surface[data-placement=\"left\"] .arrow {\n top: calc(50% - 4px);\n right: -5px;\n border-width: 1px 1px 0 0;\n }\n\n .surface[data-placement=\"right\"] .arrow {\n top: calc(50% - 4px);\n left: -5px;\n border-width: 0 0 1px 1px;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .surface {\n transition: opacity 100ms linear;\n transform: none;\n }\n }\n`;\n","import { html, LitElement, nothing, type PropertyValues, type TemplateResult } from \"lit\";\nimport { customElement, property, query, state } from \"lit/decorators.js\";\nimport { repeat } from \"lit/directives/repeat.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\n\nimport { fieldManualStyles } from \"../styles/field-manual.styles.js\";\nimport { installFieldManualFonts } from \"../styles/field-manual-fonts.js\";\nimport { calculateTooltipPosition } from \"./positioning.js\";\nimport { resolveFellowshipRichText, stripFellowshipRichText } from \"./rich-text.js\";\nimport { tooltipStyles } from \"./tooltip.styles.js\";\nimport type {\n FellowshipTooltipPlacement,\n FellowshipRichTextDocument,\n FellowshipTooltipToggleDetail,\n ResolvedTooltipPlacement,\n} from \"./types.js\";\n\nconst eventOptions = { bubbles: true, composed: true } as const;\n\n/**\n * @fires fellowship-tooltip-toggle - Fired when the tooltip opens or closes.\n */\n@customElement(\"fellowship-tooltip\")\nexport class FellowshipTooltipElement extends LitElement {\n static override styles = [fieldManualStyles, tooltipStyles];\n\n @property({ type: String }) heading: string | null = null;\n @property({ type: String }) text: string | null = null;\n @property({ type: String }) placement: FellowshipTooltipPlacement = \"auto\";\n @property({ type: Number, attribute: \"open-delay\" }) openDelay = 250;\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n @state() private _open = false;\n @state() private _position = { x: 0, y: 0 };\n @state() private _resolvedPlacement: ResolvedTooltipPlacement = \"top\";\n @state() private _paragraphs: FellowshipRichTextDocument = [];\n\n @query(\".surface\") private _surface?: HTMLElement;\n\n #timer: number | null = null;\n #trigger: HTMLElement | null = null;\n #previousAriaDescription: string | null = null;\n #hasStoredAriaDescription = false;\n #resizeObserver: ResizeObserver | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n installFieldManualFonts(this.ownerDocument);\n this.#resizeObserver ??= new ResizeObserver(() => this.#positionSurface());\n }\n\n override disconnectedCallback(): void {\n this.#clearTimer();\n this.#stopPositionTracking();\n this.#restoreTriggerDescription();\n super.disconnectedCallback();\n }\n\n protected override updated(changed: PropertyValues<this>): void {\n super.updated(changed);\n if (changed.has(\"text\") || changed.has(\"heading\")) {\n this.#syncTriggerDescription();\n }\n if (changed.has(\"disabled\") && this.disabled && this._open) {\n this.#setOpen(false, \"disabled\");\n }\n if (changed.has(\"placement\") && this._open) {\n this.#positionSurface();\n }\n }\n\n protected override willUpdate(changed: PropertyValues<this>): void {\n super.willUpdate(changed);\n if (changed.has(\"text\")) {\n this._paragraphs = resolveFellowshipRichText(this.text ?? \"\");\n }\n }\n\n show(): void {\n if (this.disabled || this._open) {\n return;\n }\n this.#setOpen(true, \"programmatic\");\n }\n\n hide(): void {\n this.#clearTimer();\n if (this._open) {\n this.#setOpen(false, \"programmatic\");\n }\n }\n\n override render(): TemplateResult {\n const surfaceStyle = {\n left: `${this._position.x}px`,\n top: `${this._position.y}px`,\n };\n\n return html`\n <span\n class=\"trigger\"\n part=\"trigger\"\n @pointerenter=${this.#handlePointerEnter}\n @pointerleave=${this.#handlePointerLeave}\n @focusin=${this.#handleFocusIn}\n @focusout=${this.#handleFocusOut}\n @keydown=${this.#handleKeydown}\n >\n <slot @slotchange=${this.#handleTriggerSlotChange}></slot>\n </span>\n <div\n class=\"surface\"\n part=\"surface\"\n role=\"tooltip\"\n popover=\"manual\"\n data-open=${String(this._open)}\n data-placement=${this._resolvedPlacement}\n style=${styleMap(surfaceStyle)}\n >\n <span class=\"arrow\" part=\"arrow\" aria-hidden=\"true\"></span>\n <slot name=\"content\">\n ${this.heading ? html`<p class=\"heading\" part=\"heading\">${this.heading}</p>` : nothing}\n <div class=\"content\" part=\"content\">\n ${repeat(\n this._paragraphs,\n (_paragraph, paragraphIndex) => paragraphIndex,\n (paragraph, paragraphIndex) => html`\n <p class=\"paragraph\" part=\"paragraph\">\n ${repeat(\n paragraph,\n (segment, segmentIndex) =>\n `${paragraphIndex}:${segmentIndex}:${segment.tone}:${segment.text}`,\n (segment) => html`<span data-tone=${segment.tone}>${segment.text}</span>`,\n )}\n </p>\n `,\n )}\n </div>\n </slot>\n </div>\n `;\n }\n\n #setOpen(open: boolean, reason: FellowshipTooltipToggleDetail[\"reason\"]): void {\n if (open === this._open) {\n return;\n }\n this._open = open;\n void this.updateComplete.then(() => {\n const surface = this._surface;\n if (!surface) {\n return;\n }\n if (open) {\n if (\"showPopover\" in surface && !surface.matches(\":popover-open\")) {\n surface.showPopover();\n }\n this.#startPositionTracking();\n this.#positionSurface();\n } else {\n if (\"hidePopover\" in surface && surface.matches(\":popover-open\")) {\n surface.hidePopover();\n }\n this.#stopPositionTracking();\n }\n });\n this.dispatchEvent(\n new CustomEvent<FellowshipTooltipToggleDetail>(\"fellowship-tooltip-toggle\", {\n ...eventOptions,\n detail: { open, reason },\n }),\n );\n }\n\n #positionSurface = (): void => {\n if (!this._open || !this.#trigger || !this._surface) {\n return;\n }\n const trigger = this.#trigger.getBoundingClientRect();\n const surface = this._surface.getBoundingClientRect();\n const next = calculateTooltipPosition(trigger, surface, {\n placement: this.placement,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n });\n if (\n next.x === this._position.x &&\n next.y === this._position.y &&\n next.placement === this._resolvedPlacement\n ) {\n return;\n }\n this._position = { x: next.x, y: next.y };\n this._resolvedPlacement = next.placement;\n };\n\n #startPositionTracking(): void {\n window.addEventListener(\"resize\", this.#positionSurface);\n window.addEventListener(\"scroll\", this.#positionSurface, true);\n if (this.#trigger) {\n this.#resizeObserver?.observe(this.#trigger);\n }\n if (this._surface) {\n this.#resizeObserver?.observe(this._surface);\n }\n }\n\n #stopPositionTracking(): void {\n window.removeEventListener(\"resize\", this.#positionSurface);\n window.removeEventListener(\"scroll\", this.#positionSurface, true);\n this.#resizeObserver?.disconnect();\n }\n\n #handlePointerEnter = (): void => {\n if (this.disabled || this._open) {\n return;\n }\n this.#clearTimer();\n this.#timer = window.setTimeout(\n () => {\n this.#timer = null;\n this.#setOpen(true, \"pointer\");\n },\n Math.max(0, this.openDelay),\n );\n };\n\n #handlePointerLeave = (): void => {\n this.#clearTimer();\n if (this._open) {\n this.#setOpen(false, \"pointer\");\n }\n };\n\n #handleFocusIn = (): void => {\n this.#clearTimer();\n if (!this.disabled && !this._open) {\n this.#setOpen(true, \"focus\");\n }\n };\n\n #handleFocusOut = (event: FocusEvent): void => {\n if (!this.contains(event.relatedTarget as Node | null) && this._open) {\n this.#setOpen(false, \"focus\");\n }\n };\n\n #handleKeydown = (event: KeyboardEvent): void => {\n if (event.key === \"Escape\" && this._open) {\n event.stopPropagation();\n this.#setOpen(false, \"escape\");\n }\n };\n\n #handleTriggerSlotChange = (event: Event): void => {\n const slot = event.currentTarget as HTMLSlotElement;\n const nextTrigger = slot.assignedElements({ flatten: true })[0];\n this.#restoreTriggerDescription();\n this.#trigger = nextTrigger instanceof HTMLElement ? nextTrigger : null;\n this.#syncTriggerDescription();\n };\n\n #syncTriggerDescription(): void {\n if (!this.#trigger) {\n return;\n }\n if (!this.#hasStoredAriaDescription) {\n this.#previousAriaDescription = this.#trigger.getAttribute(\"aria-description\");\n this.#hasStoredAriaDescription = true;\n }\n const description = [this.heading, stripFellowshipRichText(this.text ?? \"\")]\n .filter(Boolean)\n .join(\". \");\n if (description) {\n this.#trigger.setAttribute(\"aria-description\", description);\n } else if (this.#previousAriaDescription === null) {\n this.#trigger.removeAttribute(\"aria-description\");\n }\n }\n\n #restoreTriggerDescription(): void {\n if (!this.#trigger) {\n return;\n }\n if (this.#previousAriaDescription === null) {\n this.#trigger.removeAttribute(\"aria-description\");\n } else {\n this.#trigger.setAttribute(\"aria-description\", this.#previousAriaDescription);\n }\n this.#trigger = null;\n this.#previousAriaDescription = null;\n this.#hasStoredAriaDescription = false;\n }\n\n #clearTimer(): void {\n if (this.#timer !== null) {\n window.clearTimeout(this.#timer);\n this.#timer = null;\n }\n }\n}\n\nexport const defineFellowshipTooltip = (): void => {\n if (!customElements.get(\"fellowship-tooltip\")) {\n customElements.define(\"fellowship-tooltip\", FellowshipTooltipElement);\n }\n};\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"fellowship-tooltip\": FellowshipTooltipElement;\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cast-data-source.d.ts","sourceRoot":"","sources":["../../src/data/cast-data-source.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,wEAAwE;AACxE,MAAM,MAAM,wBAAwB,GAAG,IAAI,CACzC,oBAAoB,EACpB,kBAAkB,GAAG,iBAAiB,CACvC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-source.d.ts","sourceRoot":"","sources":["../../src/data/data-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAC/B,YAAY,EACV,cAAc,EACd,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAI7E,eAAO,MAAM,mCAAmC,GAAI,eAAe,MAAM,KAAG,IAO3E,CAAC;AAEF,wEAAwE;AACxE,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,aAAa,GAAG,iBAAiB,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-cast-data-source.d.ts","sourceRoot":"","sources":["../../src/data/package-cast-data-source.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,mEAAmE;AACnE,MAAM,WAAW,sCAAsC;IACrD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,mGAAmG;AACnG,eAAO,MAAM,qCAAqC,GAChD,UAAS,sCAA2C,KACnD,wBAMF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-data-source.d.ts","sourceRoot":"","sources":["../../src/data/package-data-source.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,mEAAmE;AACnE,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,mGAAmG;AACnG,eAAO,MAAM,iCAAiC,GAC5C,UAAS,kCAAuC,KAC/C,oBAMF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-talent-data-source.d.ts","sourceRoot":"","sources":["../../src/data/package-talent-data-source.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAE1E,mEAAmE;AACnE,MAAM,WAAW,wCAAwC;IACvD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,mGAAmG;AACnG,eAAO,MAAM,uCAAuC,GAClD,UAAS,wCAA6C,KACrD,0BAMF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"talent-data-source.d.ts","sourceRoot":"","sources":["../../src/data/talent-data-source.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,wEAAwE;AACxE,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,oBAAoB,EACpB,iBAAiB,GAAG,iBAAiB,CACtC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dungeon-cast-browser.d.ts","sourceRoot":"","sources":["../../src/dungeon-cast-browser/dungeon-cast-browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAW,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAI1F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAO5E,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EAKvB,sBAAsB,EAEvB,MAAM,YAAY,CAAC;AAMpB;;;;GAIG;AACH,qBACa,mCAAoC,SAAQ,UAAU;;IACjE,OAAgB,MAAM,4BAAiD;IAElB,SAAS,SAAM;IACpC,YAAY,EAAE,sBAAsB,GAAG,IAAI,CAAQ;IACnD,eAAe,EAAE,SAAS,sBAAsB,EAAE,CAAM;IAExF,gBAAgB,EAAE,oBAAoB,CAAS;IACH,IAAI,UAAS;IACA,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC5D,UAAU,EAAE,wBAAwB,GAAG,IAAI,CAAQ;IAE1E,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,MAAM,CAAiD;IAC/D,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,MAAM,CAAM;IAKpB,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;cAKlB,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAS/D,KAAK,IAAI,IAAI;IAIb,IAAI,WAAW,IAAI,uBAAuB,GAAG,IAAI,CAEhD;IAEQ,MAAM,IAAI,cAAc;CAySlC;AAED,eAAO,MAAM,kCAAkC,QAAO,IAUrD,CAAC;AAEF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iCAAiC,EAAE,mCAAmC,CAAC;KACxE;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dungeon-cast-browser.styles.d.ts","sourceRoot":"","sources":["../../src/dungeon-cast-browser/dungeon-cast-browser.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,wBAAwB,yBAwapC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dungeon-cast-browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AACnF,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,EAChB,gCAAgC,EAChC,+BAA+B,EAC/B,gCAAgC,EAChC,+BAA+B,EAC/B,sBAAsB,EACtB,4BAA4B,EAC5B,2BAA2B,EAC3B,sCAAsC,GACvC,MAAM,YAAY,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"render-model.d.ts","sourceRoot":"","sources":["../../src/dungeon-cast-browser/render-model.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC7F,OAAO,KAAK,EAEV,uBAAuB,EAGvB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,eAAe,GAAI,wBAAwB,sBAAsB,KAAG,MACjD,CAAC;AAgBjC,eAAO,MAAM,6BAA6B,GACxC,MAAM,eAAe,EACrB,QAAQ,wBAAwB,KAC/B,uBA+CF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dungeon-cast-browser/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,KAAK,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAE7F,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,YAAY,GAAG,cAAc,CAAC;AAEzE,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,kBAAkB,GAAG,MAAM,GAAG,aAAa,CAAC;AAE5F,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,mBAAmB,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACnD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;CAChC;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;CACjC;AAED,MAAM,MAAM,+BAA+B,GAAG,WAAW,CAAC,gCAAgC,CAAC,CAAC;AAC5F,MAAM,MAAM,+BAA+B,GAAG,WAAW,CAAC,gCAAgC,CAAC,CAAC;AAC5F,MAAM,MAAM,2BAA2B,GAAG,WAAW,CAAC,4BAA4B,CAAC,CAAC;AAEpF,MAAM,WAAW,sCAAsC;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC5C,eAAe,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACnD,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,wBAAwB,GAAG,IAAI,CAAC;CAC7C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,mBAAmB;QAC3B,+BAA+B,EAAE,+BAA+B,CAAC;QACjE,+BAA+B,EAAE,+BAA+B,CAAC;QACjE,0BAA0B,EAAE,2BAA2B,CAAC;KACzD;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dungeon-cast-browser.js","names":[],"sources":["../src/dungeon-cast-browser/index.ts"],"sourcesContent":["export {\n defineFellowshipDungeonCastBrowser,\n FellowshipDungeonCastBrowserElement,\n} from \"./dungeon-cast-browser.js\";\nexport { castIdentityKey, createDungeonCastBrowserModel } from \"./render-model.js\";\nexport type {\n CastCapabilityLabel,\n ConfiguredCastFilter,\n DungeonCastBrowserModel,\n DungeonCastEnemyModel,\n DungeonCastModel,\n FellowshipCastBrowserErrorDetail,\n FellowshipCastBrowserErrorEvent,\n FellowshipCastBrowserReadyDetail,\n FellowshipCastBrowserReadyEvent,\n FellowshipCastIdentity,\n FellowshipCastSelectedDetail,\n FellowshipCastSelectedEvent,\n FellowshipDungeonCastBrowserProperties,\n} from \"./types.js\";\n\nimport { defineFellowshipDungeonCastBrowser } from \"./dungeon-cast-browser.js\";\n\ndefineFellowshipDungeonCastBrowser();\n"],"mappings":";;AAuBA,EAAmC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dungeon-map.d.ts","sourceRoot":"","sources":["../../src/dungeon-map/dungeon-map.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,UAAU,EAAW,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAK1F,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,wBAAwB,CAAC;AAMhC,OAAO,KAAK,EAGV,qBAAqB,EAMrB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EAGlB,MAAM,YAAY,CAAC;AAYpB;;;;;;GAMG;AACH,qBACa,2BAA4B,SAAQ,UAAU;;IACzD,OAAgB,MAAM,4BAAyC;IAEV,SAAS,SAAM;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC/B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC5D,UAAU,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IAC/C,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAC5C,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAC5C,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAC1B,YAAY,UAAQ;IAChB,eAAe,UAAQ;IACjC,OAAO,SAAK;IAE/D,iDAAiD;IACF,eAAe,UAAS;IAE9D,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,cAAc,CAAoD;IAC1E,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,mBAAmB,CAAsD;IACjF,OAAO,CAAC,mBAAmB,CAAsD;IACjF,OAAO,CAAC,UAAU,CAA6B;IAEpC,OAAO,CAAC,gBAAgB,CAAC,CAAc;IAC1C,OAAO,CAAC,cAAc,CAAC,CAAoB;IAenD,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;cAMlB,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAQjD,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cA4B5C,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAkB5D,SAAS,IAAI,IAAI;IAKjB,MAAM,IAAI,IAAI;IAKd,OAAO,IAAI,IAAI;IAKf,KAAK,IAAI,IAAI;IAIb,IAAI,WAAW,IAAI,qBAAqB,GAAG,IAAI,CAE9C;IAEQ,MAAM,IAAI,cAAc;CA4uBlC;AAED,eAAO,MAAM,0BAA0B,QAAO,IAO7C,CAAC;AAEF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,wBAAwB,EAAE,2BAA2B,CAAC;KACvD;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dungeon-map.styles.d.ts","sourceRoot":"","sources":["../../src/dungeon-map/dungeon-map.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB,yBA8b5B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dungeon-map/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EACV,oBAAoB,EACpB,4BAA4B,EAC5B,oBAAoB,EACpB,4BAA4B,EAC5B,qBAAqB,EACrB,iBAAiB,EACjB,8BAA8B,EAC9B,wBAAwB,EACxB,8BAA8B,EAC9B,wBAAwB,EACxB,iCAAiC,EACjC,0BAA0B,EAC1B,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,aAAa,GACd,MAAM,YAAY,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/dungeon-map/layout.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAkB,MAAM,YAAY,CAAC;AAiD7F,eAAO,MAAM,0BAA0B,GACrC,IAAI,MAAM,GAAG,IAAI,EACjB,SAAS,SAAS,oBAAoB,EAAE,KACvC,oBAUF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"render-model.d.ts","sourceRoot":"","sources":["../../src/dungeon-map/render-model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEpF,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnF,OAAO,KAAK,EAAwB,qBAAqB,EAAqB,MAAM,YAAY,CAAC;AAEjG,eAAO,MAAM,kBAAkB,GAAI,UAAU,UAAU,GAAG,IAAI,KAAG,QAAQ,IAAI,UAO5D,CAAC;AAElB,eAAO,MAAM,2BAA2B,GACtC,MAAM,cAAc,EACpB,UAAU,aAAa,EACvB,QAAQ,oBAAoB,KAC3B,qBAuEF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,UAAU,aAAa,EAAE,SAAS,OAAO,KAAG,MAW5E,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dungeon-map/types.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"viewport-controller.d.ts","sourceRoot":"","sources":["../../src/dungeon-map/viewport-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAKhD,qBAAa,kBAAkB;;IAS7B,OAAO,SAAK;IAEZ,IAAI,KAAK,IAAI,aAAa,CAEzB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,QAAQ,IAAI,MAAM,CAKrB;IAED,aAAa,CACX,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,aAAa;IAoBhB,GAAG,IAAI,aAAa;IAOpB,MAAM,CACJ,MAAM,EAAE,MAAM,EACd,MAAM,SAA0B,EAChC,MAAM,SAA2B,GAChC,aAAa;IAWhB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa;CAoBrD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dungeon-map.js","names":[],"sources":["../src/dungeon-map/index.ts"],"sourcesContent":["export { FellowshipDungeonMapElement, defineFellowshipDungeonMap } from \"./dungeon-map.js\";\nexport { createDungeonMapRenderModel, humanizeMapLabel } from \"./render-model.js\";\nexport { ViewportController } from \"./viewport-controller.js\";\nexport type {\n DungeonMapEnemyModel,\n DungeonMapEnemyRenderContext,\n DungeonMapGroupModel,\n DungeonMapGroupRenderContext,\n DungeonMapRenderModel,\n DungeonMapWarning,\n FellowshipDungeonMapProperties,\n FellowshipMapErrorDetail,\n FellowshipMapImageChangeDetail,\n FellowshipMapReadyDetail,\n FellowshipMapViewportChangeDetail,\n FellowshipMapWarningDetail,\n LitEnemyRenderer,\n LitGroupRenderer,\n MapLabelFormatter,\n NormalizedRect,\n ViewportState,\n} from \"./types.js\";\n\nimport { defineFellowshipDungeonMap } from \"./dungeon-map.js\";\n\ndefineFellowshipDungeonMap();\n"],"mappings":";;AAyBA,EAA2B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,OAAO,EACP,OAAO,EACP,oBAAoB,EACpB,YAAY,EACZ,0BAA0B,EAC1B,SAAS,EACT,KAAK,EACL,OAAO,EACP,sBAAsB,EACtB,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,aAAa,EACb,UAAU,EACV,UAAU,EACV,MAAM,GACP,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AACrF,YAAY,EACV,oBAAoB,EACpB,kCAAkC,GACnC,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,GAC1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iCAAiC,EACjC,KAAK,kCAAkC,GACxC,MAAM,+BAA+B,CAAC;AACvC,YAAY,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EACL,qCAAqC,EACrC,KAAK,sCAAsC,GAC5C,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,uCAAuC,EACvC,KAAK,wCAAwC,GAC9C,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EACV,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dungeon-cast-browser.d.ts","sourceRoot":"","sources":["../../src/react/dungeon-cast-browser.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAc,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAEnD,OAAO,EAEL,mCAAmC,EACpC,MAAM,iDAAiD,CAAC;AACzD,OAAO,KAAK,EACV,+BAA+B,EAC/B,+BAA+B,EAC/B,2BAA2B,EAC5B,MAAM,kCAAkC,CAAC;AAI1C,eAAO,MAAM,kBAAkB;aAKiB,SAAS,CAAC,+BAA+B,CAAC;aAC1C,SAAS,CAAC,+BAA+B,CAAC;oBACxC,SAAS,CAAC,2BAA2B,CAAC;EAEtF,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,cAAc,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEhF,eAAe,kBAAkB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dungeon-cast-browser.js","names":[],"sources":["../../src/react/dungeon-cast-browser.tsx"],"sourcesContent":["import { createComponent, type EventName } from \"@lit/react\";\nimport React, { type ComponentProps } from \"react\";\n\nimport {\n defineFellowshipDungeonCastBrowser,\n FellowshipDungeonCastBrowserElement,\n} from \"../dungeon-cast-browser/dungeon-cast-browser.js\";\nimport type {\n FellowshipCastBrowserErrorEvent,\n FellowshipCastBrowserReadyEvent,\n FellowshipCastSelectedEvent,\n} from \"../dungeon-cast-browser/types.js\";\n\ndefineFellowshipDungeonCastBrowser();\n\nexport const DungeonCastBrowser = createComponent({\n react: React,\n tagName: \"fellowship-dungeon-cast-browser\",\n elementClass: FellowshipDungeonCastBrowserElement,\n events: {\n onReady: \"fellowship-cast-browser-ready\" as EventName<FellowshipCastBrowserReadyEvent>,\n onError: \"fellowship-cast-browser-error\" as EventName<FellowshipCastBrowserErrorEvent>,\n onCastSelected: \"fellowship-cast-selected\" as EventName<FellowshipCastSelectedEvent>,\n },\n});\n\nexport type DungeonCastBrowserProps = ComponentProps<typeof DungeonCastBrowser>;\n\nexport default DungeonCastBrowser;\n"],"mappings":";;;;AAaA,EAAmC;AAEnC,IAAa,IAAqB,EAAgB;CAChD,OAAO;CACP,SAAS;CACT,cAAc;CACd,QAAQ;EACN,SAAS;EACT,SAAS;EACT,gBAAgB;CAClB;AACF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dungeon-map.d.ts","sourceRoot":"","sources":["../../src/react/dungeon-map.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,EAKZ,KAAK,cAAc,EAEnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,2BAA2B,EAE5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAEV,4BAA4B,EAE5B,4BAA4B,EAE5B,uBAAuB,EACvB,6BAA6B,EAC7B,uBAAuB,EACvB,gCAAgC,EAChC,yBAAyB,EAC1B,MAAM,yBAAyB,CAAC;AAIjC,QAAA,MAAM,gBAAgB;aAKiB,SAAS,CAAC,uBAAuB,CAAC;aAClC,SAAS,CAAC,uBAAuB,CAAC;eAC9B,SAAS,CAAC,yBAAyB,CAAC;sBACxB,SAAS,CAAC,6BAA6B,CAAC;sBAErD,SAAS,CAAC,gCAAgC,CAAC;EAEnF,CAAC;AAEH,KAAK,qBAAqB,GAAG,cAAc,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAErE,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,4BAA4B,KAAK,SAAS,CAAC;AACtF,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,4BAA4B,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC;AAEjG,MAAM,WAAW,qBACf,SAAQ,IAAI,CACV,qBAAqB,EACrB,UAAU,GAAG,iBAAiB,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,CAC3E;IACD,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAC1C,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,IAAI,CAAC;CAC7D;AAoLD,eAAO,MAAM,gBAAgB,wHA+C5B,CAAC;AAIF,eAAe,gBAAgB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dungeon-map.js","names":[],"sources":["../../src/react/dungeon-map.tsx"],"sourcesContent":["import { createComponent, type EventName } from \"@lit/react\";\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useState,\n type ComponentProps,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\n\nimport {\n FellowshipDungeonMapElement,\n defineFellowshipDungeonMap,\n} from \"../dungeon-map/dungeon-map.js\";\nimport type {\n DungeonMapEnemyModel,\n DungeonMapEnemyRenderContext,\n DungeonMapGroupModel,\n DungeonMapGroupRenderContext,\n DungeonMapRenderModel,\n FellowshipMapErrorEvent,\n FellowshipMapImageChangeEvent,\n FellowshipMapReadyEvent,\n FellowshipMapViewportChangeEvent,\n FellowshipMapWarningEvent,\n} from \"../dungeon-map/types.js\";\n\ndefineFellowshipDungeonMap();\n\nconst NativeDungeonMap = createComponent({\n react: React,\n tagName: \"fellowship-dungeon-map\",\n elementClass: FellowshipDungeonMapElement,\n events: {\n onReady: \"fellowship-map-ready\" as EventName<FellowshipMapReadyEvent>,\n onError: \"fellowship-map-error\" as EventName<FellowshipMapErrorEvent>,\n onWarning: \"fellowship-map-warning\" as EventName<FellowshipMapWarningEvent>,\n onMapImageChange: \"fellowship-map-image-change\" as EventName<FellowshipMapImageChangeEvent>,\n onViewportChange:\n \"fellowship-map-viewport-change\" as EventName<FellowshipMapViewportChangeEvent>,\n },\n});\n\ntype NativeDungeonMapProps = ComponentProps<typeof NativeDungeonMap>;\n\nexport type ReactEnemyRenderer = (context: DungeonMapEnemyRenderContext) => ReactNode;\nexport type ReactGroupRenderer = (context: DungeonMapGroupRenderContext<ReactNode>) => ReactNode;\n\nexport interface DungeonMapViewerProps\n extends Omit<\n NativeDungeonMapProps,\n \"children\" | \"externalOverlay\" | \"onReady\" | \"renderEnemy\" | \"renderGroup\"\n > {\n readonly renderEnemy?: ReactEnemyRenderer;\n readonly renderGroup?: ReactGroupRenderer;\n readonly onReady?: (event: FellowshipMapReadyEvent) => void;\n}\n\nconst overlayStyle: CSSProperties = {\n position: \"absolute\",\n inset: 0,\n width: \"100%\",\n height: \"100%\",\n pointerEvents: \"none\",\n};\n\nconst markerStyle: CSSProperties = {\n position: \"relative\",\n display: \"grid\",\n width: \"var(--fellowship-map-enemy-size, 32px)\",\n height: \"var(--fellowship-map-enemy-size, 32px)\",\n placeItems: \"center\",\n overflow: \"hidden\",\n border: \"2px solid var(--fellowship-map-rune, #4bc7de)\",\n borderRadius: \"50%\",\n background: \"#131a22\",\n color: \"var(--fellowship-map-ink, #f2f0e8)\",\n boxShadow: \"0 0 0 1px rgba(0,0,0,.72), 0 2px 6px rgba(0,0,0,.32)\",\n fontFamily: \"var(--fellowship-map-tactical-font-family, ui-monospace, monospace)\",\n fontSize: 10,\n fontWeight: 800,\n};\n\nconst defaultEnemy = (enemy: DungeonMapEnemyModel): ReactNode => {\n const name = enemy.enemy?.name ?? enemy.placement.id;\n const fallback = name\n .split(/\\s+/)\n .map((part) => part[0])\n .join(\"\")\n .slice(0, 2)\n .toUpperCase();\n const bossStyle = enemy.enemy?.isBoss\n ? { borderColor: \"var(--fellowship-map-ember, #ff7a2f)\", width: 36, height: 36 }\n : undefined;\n\n return (\n <span style={{ ...markerStyle, ...bossStyle }}>\n {enemy.imageUrl ? (\n <img\n src={enemy.imageUrl}\n alt=\"\"\n draggable={false}\n style={{ width: \"100%\", height: \"100%\", objectFit: \"cover\" }}\n />\n ) : (\n fallback\n )}\n </span>\n );\n};\n\nconst renderEnemyAnchor = (\n model: DungeonMapRenderModel,\n group: DungeonMapGroupModel,\n enemy: DungeonMapEnemyModel,\n renderEnemy?: ReactEnemyRenderer,\n): ReactNode => {\n const bounds = group.visualBounds;\n const name = enemy.enemy?.name ?? enemy.placement.id;\n const context: DungeonMapEnemyRenderContext = {\n model: enemy,\n group,\n dungeon: model.dungeon,\n mapImage: model.mapImage,\n };\n\n return (\n <div\n key={enemy.instanceId}\n role=\"img\"\n aria-label={name}\n title={name}\n style={{\n position: \"absolute\",\n left: `${((enemy.position.x - bounds.x) / bounds.width) * 100}%`,\n top: `${((enemy.position.y - bounds.y) / bounds.height) * 100}%`,\n width: 0,\n height: 0,\n zIndex: 2,\n pointerEvents: \"auto\",\n }}\n >\n <div\n style={{\n position: \"absolute\",\n transform: \"translate(-50%, -50%) scale(var(--fellowship-map-inverse-scale, 1))\",\n transformOrigin: \"center\",\n }}\n >\n {renderEnemy ? renderEnemy(context) : defaultEnemy(enemy)}\n </div>\n </div>\n );\n};\n\nconst defaultGroup = (group: DungeonMapGroupModel, children: readonly ReactNode[]): ReactNode => {\n const label = `G${group.id ?? \"–\"}${group.dungeonScore === null ? \"\" : ` · ${group.dungeonScore}`}`;\n return (\n <div style={{ position: \"absolute\", inset: 0 }}>\n <div\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n inset: 0,\n border:\n \"calc(1px * var(--fellowship-map-inverse-scale, 1)) solid var(--fellowship-map-ember, #ff7a2f)\",\n borderRadius: \"50%\",\n background: \"color-mix(in srgb, var(--fellowship-map-ember, #ff7a2f) 7%, transparent)\",\n opacity: 0.5,\n }}\n />\n <span\n style={{\n position: \"absolute\",\n left: \"50%\",\n top: 0,\n minHeight: 22,\n display: \"inline-flex\",\n alignItems: \"center\",\n padding: \"0 7px\",\n border:\n \"1px solid color-mix(in srgb, var(--fellowship-map-ember, #ff7a2f) 58%, transparent)\",\n borderRadius: 4,\n background: \"var(--fellowship-map-control-surface, rgba(12,17,23,.88))\",\n color: \"var(--fellowship-map-ink, #f2f0e8)\",\n fontFamily: \"var(--fellowship-map-tactical-font-family, ui-monospace, monospace)\",\n fontSize: 11,\n fontWeight: 700,\n whiteSpace: \"nowrap\",\n transform: \"translate(-50%, -45%) scale(var(--fellowship-map-inverse-scale, 1))\",\n transformOrigin: \"center\",\n }}\n >\n {label}\n </span>\n {children}\n </div>\n );\n};\n\nconst renderReactOverlay = (\n model: DungeonMapRenderModel,\n renderEnemy?: ReactEnemyRenderer,\n renderGroup?: ReactGroupRenderer,\n): ReactNode =>\n model.groups.map((group) => {\n const bounds = group.visualBounds;\n const children = group.enemies.map((enemy) =>\n renderEnemyAnchor(model, group, enemy, renderEnemy),\n );\n const content = renderGroup\n ? renderGroup({\n group,\n children,\n dungeon: model.dungeon,\n mapImage: model.mapImage,\n })\n : defaultGroup(group, children);\n\n return (\n <div\n key={`${model.mapImage.id}:${String(group.id)}:${group.enemies[0]?.instanceId ?? \"empty\"}`}\n style={{\n position: \"absolute\",\n left: `${bounds.x * 100}%`,\n top: `${bounds.y * 100}%`,\n width: `${bounds.width * 100}%`,\n height: `${bounds.height * 100}%`,\n pointerEvents: \"none\",\n }}\n >\n {content}\n </div>\n );\n });\n\nexport const DungeonMapViewer = forwardRef<FellowshipDungeonMapElement, DungeonMapViewerProps>(\n function DungeonMapViewer(\n { renderEnemy, renderGroup, onReady, onMapImageChange, mapImageId, ...properties },\n forwardedRef,\n ) {\n const [model, setModel] = useState<DungeonMapRenderModel | null>(null);\n const [selectedMapImageId, setSelectedMapImageId] = useState(mapImageId);\n const usesReactOverlay = Boolean(renderEnemy || renderGroup);\n\n useEffect(() => {\n if (mapImageId !== undefined) {\n setSelectedMapImageId(mapImageId);\n }\n }, [mapImageId]);\n\n const handleReady = useCallback(\n (event: FellowshipMapReadyEvent) => {\n setModel(event.detail.model);\n onReady?.(event);\n },\n [onReady],\n );\n const handleMapImageChange = useCallback(\n (event: FellowshipMapImageChangeEvent) => {\n setSelectedMapImageId(event.detail.mapImageId);\n onMapImageChange?.(event);\n },\n [onMapImageChange],\n );\n\n return (\n <NativeDungeonMap\n {...properties}\n {...(mapImageId === undefined ? {} : { mapImageId: selectedMapImageId })}\n ref={forwardedRef}\n externalOverlay={usesReactOverlay}\n onReady={handleReady}\n onMapImageChange={handleMapImageChange}\n >\n {usesReactOverlay && model ? (\n <div slot=\"overlay\" style={overlayStyle}>\n {renderReactOverlay(model, renderEnemy, renderGroup)}\n </div>\n ) : null}\n </NativeDungeonMap>\n );\n },\n);\n\nDungeonMapViewer.displayName = \"DungeonMapViewer\";\n\nexport default DungeonMapViewer;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EACV,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,YAAY,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"talent-calculator.d.ts","sourceRoot":"","sources":["../../src/react/talent-calculator.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,EAMZ,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,iCAAiC,EAGlC,MAAM,2CAA2C,CAAC;AAMnD,OAAO,KAAK,EACV,2BAA2B,EAC3B,2BAA2B,EAC3B,6BAA6B,EAE7B,mCAAmC,EACnC,uBAAuB,EACvB,0BAA0B,EAC3B,MAAM,+BAA+B,CAAC;AAIvC,QAAA,MAAM,sBAAsB;aAKe,SAAS,CAAC,2BAA2B,CAAC;aACtC,SAAS,CAAC,2BAA2B,CAAC;eAClC,SAAS,CAAC,6BAA6B,CAAC;uBAEzC,SAAS,CAAC,0BAA0B,CAAC;0BACpB,SAAS,CAAC,uBAAuB,CAAC;EAE/F,CAAC;AAEH,KAAK,2BAA2B,GAAG,cAAc,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEjF,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,mCAAmC,KAAK,SAAS,CAAC;AAE9F,MAAM,WAAW,qBACf,SAAQ,IAAI,CACV,2BAA2B,EAC3B,UAAU,GAAG,SAAS,GAAG,mBAAmB,GAAG,sBAAsB,GAAG,cAAc,CACvF;IACD,QAAQ,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,IAAI,CAAC;IAChE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,0BAA0B,KAAK,IAAI,CAAC;IACzE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,IAAI,CAAC;CAC1E;AAED,eAAO,MAAM,gBAAgB,8HA+F3B,CAAC;AAIH,eAAe,gBAAgB,CAAC"}