@crockery/fellowship-components 0.1.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 (98) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +126 -0
  3. package/RELEASING.md +75 -0
  4. package/THIRD_PARTY_LICENSES.md +79 -0
  5. package/dist/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
  6. package/dist/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2 +0 -0
  7. package/dist/assets/ibm-plex-sans-condensed-latin-400-normal-DKyD6XsY.woff2 +0 -0
  8. package/dist/assets/ibm-plex-sans-condensed-latin-500-normal-BqaLkUoX.woff2 +0 -0
  9. package/dist/assets/ibm-plex-sans-condensed-latin-600-normal-CRd5VyFf.woff2 +0 -0
  10. package/dist/assets/ibm-plex-sans-condensed-latin-700-normal-D8r4s4aS.woff2 +0 -0
  11. package/dist/chunks/data-source-CoIFvV72.js +10 -0
  12. package/dist/chunks/data-source-CoIFvV72.js.map +1 -0
  13. package/dist/chunks/decorate-B_ZTN9li.js +92 -0
  14. package/dist/chunks/decorate-B_ZTN9li.js.map +1 -0
  15. package/dist/chunks/dungeon-map-IPN6sEDj.js +1144 -0
  16. package/dist/chunks/dungeon-map-IPN6sEDj.js.map +1 -0
  17. package/dist/chunks/talent-calculator-Ch1Pbbba.js +1086 -0
  18. package/dist/chunks/talent-calculator-Ch1Pbbba.js.map +1 -0
  19. package/dist/chunks/tooltip-DoQVSnOn.js +412 -0
  20. package/dist/chunks/tooltip-DoQVSnOn.js.map +1 -0
  21. package/dist/data/data-source.d.ts +17 -0
  22. package/dist/data/data-source.d.ts.map +1 -0
  23. package/dist/data/package-data-source.d.ts +6 -0
  24. package/dist/data/package-data-source.d.ts.map +1 -0
  25. package/dist/data/package-talent-data-source.d.ts +6 -0
  26. package/dist/data/package-talent-data-source.d.ts.map +1 -0
  27. package/dist/data/talent-data-source.d.ts +11 -0
  28. package/dist/data/talent-data-source.d.ts.map +1 -0
  29. package/dist/dungeon-map/dungeon-map.d.ts +56 -0
  30. package/dist/dungeon-map/dungeon-map.d.ts.map +1 -0
  31. package/dist/dungeon-map/dungeon-map.styles.d.ts +2 -0
  32. package/dist/dungeon-map/dungeon-map.styles.d.ts.map +1 -0
  33. package/dist/dungeon-map/index.d.ts +5 -0
  34. package/dist/dungeon-map/index.d.ts.map +1 -0
  35. package/dist/dungeon-map/layout.d.ts +3 -0
  36. package/dist/dungeon-map/layout.d.ts.map +1 -0
  37. package/dist/dungeon-map/render-model.d.ts +7 -0
  38. package/dist/dungeon-map/render-model.d.ts.map +1 -0
  39. package/dist/dungeon-map/types.d.ts +107 -0
  40. package/dist/dungeon-map/types.d.ts.map +1 -0
  41. package/dist/dungeon-map/viewport-controller.d.ts +13 -0
  42. package/dist/dungeon-map/viewport-controller.d.ts.map +1 -0
  43. package/dist/dungeon-map.js +7 -0
  44. package/dist/dungeon-map.js.map +1 -0
  45. package/dist/index.d.ts +9 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +8 -0
  48. package/dist/react/dungeon-map.d.ts +22 -0
  49. package/dist/react/dungeon-map.d.ts.map +1 -0
  50. package/dist/react/dungeon-map.js +180 -0
  51. package/dist/react/dungeon-map.js.map +1 -0
  52. package/dist/react/index.d.ts +7 -0
  53. package/dist/react/index.d.ts.map +1 -0
  54. package/dist/react/talent-calculator.d.ts +22 -0
  55. package/dist/react/talent-calculator.d.ts.map +1 -0
  56. package/dist/react/talent-calculator.js +71 -0
  57. package/dist/react/talent-calculator.js.map +1 -0
  58. package/dist/react/tooltip.d.ts +15 -0
  59. package/dist/react/tooltip.d.ts.map +1 -0
  60. package/dist/react/tooltip.js +26 -0
  61. package/dist/react/tooltip.js.map +1 -0
  62. package/dist/react.js +4 -0
  63. package/dist/styles/field-manual-fonts.d.ts +3 -0
  64. package/dist/styles/field-manual-fonts.d.ts.map +1 -0
  65. package/dist/styles/field-manual.styles.d.ts +3 -0
  66. package/dist/styles/field-manual.styles.d.ts.map +1 -0
  67. package/dist/talent-calculator/index.d.ts +5 -0
  68. package/dist/talent-calculator/index.d.ts.map +1 -0
  69. package/dist/talent-calculator/render-model.d.ts +5 -0
  70. package/dist/talent-calculator/render-model.d.ts.map +1 -0
  71. package/dist/talent-calculator/selection-state.d.ts +10 -0
  72. package/dist/talent-calculator/selection-state.d.ts.map +1 -0
  73. package/dist/talent-calculator/talent-calculator.d.ts +51 -0
  74. package/dist/talent-calculator/talent-calculator.d.ts.map +1 -0
  75. package/dist/talent-calculator/talent-calculator.styles.d.ts +2 -0
  76. package/dist/talent-calculator/talent-calculator.styles.d.ts.map +1 -0
  77. package/dist/talent-calculator/types.d.ts +92 -0
  78. package/dist/talent-calculator/types.d.ts.map +1 -0
  79. package/dist/talent-calculator.js +7 -0
  80. package/dist/talent-calculator.js.map +1 -0
  81. package/dist/tooltip/index.d.ts +6 -0
  82. package/dist/tooltip/index.d.ts.map +1 -0
  83. package/dist/tooltip/positioning.d.ts +23 -0
  84. package/dist/tooltip/positioning.d.ts.map +1 -0
  85. package/dist/tooltip/rich-text.d.ts +4 -0
  86. package/dist/tooltip/rich-text.d.ts.map +1 -0
  87. package/dist/tooltip/tooltip.d.ts +33 -0
  88. package/dist/tooltip/tooltip.d.ts.map +1 -0
  89. package/dist/tooltip/tooltip.styles.d.ts +2 -0
  90. package/dist/tooltip/tooltip.styles.d.ts.map +1 -0
  91. package/dist/tooltip/types.d.ts +19 -0
  92. package/dist/tooltip/types.d.ts.map +1 -0
  93. package/dist/tooltip.js +7 -0
  94. package/dist/tooltip.js.map +1 -0
  95. package/package.json +149 -0
  96. package/src/dungeon-map/README.md +168 -0
  97. package/src/talent-calculator/README.md +190 -0
  98. package/src/tooltip/README.md +113 -0
@@ -0,0 +1,71 @@
1
+ import { a as e, n as t, o as n, r, t as i } from "../chunks/talent-calculator-Ch1Pbbba.js";
2
+ import { createComponent as a } from "@lit/react";
3
+ import o, { forwardRef as s, useCallback as c, useEffect as l, useMemo as u, useState as d } from "react";
4
+ import { jsx as f } from "react/jsx-runtime";
5
+ //#region src/react/talent-calculator.tsx
6
+ t();
7
+ var p = a({
8
+ react: o,
9
+ tagName: "fellowship-talent-calculator",
10
+ elementClass: i,
11
+ events: {
12
+ onReady: "fellowship-talents-ready",
13
+ onError: "fellowship-talents-error",
14
+ onWarning: "fellowship-talents-warning",
15
+ onSelectionChange: "fellowship-talent-selection-change",
16
+ onTalentPointsChange: "fellowship-talent-points-change"
17
+ }
18
+ }), m = s(function({ renderTalent: t, onReady: i, onSelectionChange: a, onTalentPointsChange: o, selectedTalentIds: s, talentPoints: m, ...h }, g) {
19
+ let [_, v] = d(null), [y, b] = d(s ?? []), [x, S] = d(m ?? 14);
20
+ l(() => {
21
+ s !== void 0 && b(s);
22
+ }, [s]), l(() => {
23
+ m !== void 0 && S(m);
24
+ }, [m]);
25
+ let C = c((e) => {
26
+ v(e.detail.model), b(e.detail.selection.selectedTalentIds), i?.(e);
27
+ }, [i]), w = c((e) => {
28
+ b(e.detail.selectedTalentIds), a?.(e);
29
+ }, [a]), T = c((e) => {
30
+ S(e.detail.talentPoints), b(e.detail.selectedTalentIds), o?.(e);
31
+ }, [o]), E = u(() => {
32
+ if (!t || !_) return null;
33
+ let i = n(_, y, x);
34
+ return [..._.talentById.values()].map((n) => {
35
+ let a = i.selectedTalentIds.includes(n.talent.id), o = e(n.pointCost, i);
36
+ return /* @__PURE__ */ f("span", {
37
+ slot: r(n.talent.id),
38
+ children: t({
39
+ talent: n,
40
+ hero: _.hero,
41
+ selected: a,
42
+ affordable: o,
43
+ disabled: !a && !o,
44
+ spentPoints: i.spentPoints,
45
+ remainingPoints: i.remainingPoints,
46
+ talentPoints: x
47
+ })
48
+ }, n.talent.id);
49
+ });
50
+ }, [
51
+ _,
52
+ x,
53
+ t,
54
+ y
55
+ ]);
56
+ return /* @__PURE__ */ f(p, {
57
+ ...h,
58
+ ...s === void 0 ? {} : { selectedTalentIds: s },
59
+ ...m === void 0 ? {} : { talentPoints: m },
60
+ ref: g,
61
+ onReady: C,
62
+ onSelectionChange: w,
63
+ onTalentPointsChange: T,
64
+ children: E
65
+ });
66
+ });
67
+ m.displayName = "TalentCalculator";
68
+ //#endregion
69
+ export { m as TalentCalculator, m as default };
70
+
71
+ //# sourceMappingURL=talent-calculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"talent-calculator.js","names":[],"sources":["../../src/react/talent-calculator.tsx"],"sourcesContent":["import { createComponent, type EventName } from \"@lit/react\";\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useState,\n type ComponentProps,\n type ReactNode,\n} from \"react\";\n\nimport {\n FellowshipTalentCalculatorElement,\n defineFellowshipTalentCalculator,\n talentSlotName,\n} from \"../talent-calculator/talent-calculator.js\";\nimport {\n canSelectTalent,\n createTalentCalculatorSelectionState,\n MAX_TALENT_POINTS,\n} from \"../talent-calculator/selection-state.js\";\nimport type {\n FellowshipTalentsErrorEvent,\n FellowshipTalentsReadyEvent,\n FellowshipTalentsWarningEvent,\n TalentCalculatorRenderModel,\n TalentCalculatorTalentRenderContext,\n TalentPointsChangeEvent,\n TalentSelectionChangeEvent,\n} from \"../talent-calculator/types.js\";\n\ndefineFellowshipTalentCalculator();\n\nconst NativeTalentCalculator = createComponent({\n react: React,\n tagName: \"fellowship-talent-calculator\",\n elementClass: FellowshipTalentCalculatorElement,\n events: {\n onReady: \"fellowship-talents-ready\" as EventName<FellowshipTalentsReadyEvent>,\n onError: \"fellowship-talents-error\" as EventName<FellowshipTalentsErrorEvent>,\n onWarning: \"fellowship-talents-warning\" as EventName<FellowshipTalentsWarningEvent>,\n onSelectionChange:\n \"fellowship-talent-selection-change\" as EventName<TalentSelectionChangeEvent>,\n onTalentPointsChange: \"fellowship-talent-points-change\" as EventName<TalentPointsChangeEvent>,\n },\n});\n\ntype NativeTalentCalculatorProps = ComponentProps<typeof NativeTalentCalculator>;\n\nexport type ReactTalentRenderer = (context: TalentCalculatorTalentRenderContext) => ReactNode;\n\nexport interface TalentCalculatorProps\n extends Omit<\n NativeTalentCalculatorProps,\n \"children\" | \"onReady\" | \"onSelectionChange\" | \"onTalentPointsChange\" | \"renderTalent\"\n > {\n readonly renderTalent?: ReactTalentRenderer;\n readonly onReady?: (event: FellowshipTalentsReadyEvent) => void;\n readonly onSelectionChange?: (event: TalentSelectionChangeEvent) => void;\n readonly onTalentPointsChange?: (event: TalentPointsChangeEvent) => void;\n}\n\nexport const TalentCalculator = forwardRef<\n FellowshipTalentCalculatorElement,\n TalentCalculatorProps\n>(function TalentCalculator(\n {\n renderTalent,\n onReady,\n onSelectionChange,\n onTalentPointsChange,\n selectedTalentIds,\n talentPoints,\n ...properties\n },\n forwardedRef,\n) {\n const [model, setModel] = useState<TalentCalculatorRenderModel | null>(null);\n const [selectionIds, setSelectionIds] = useState<readonly string[]>(selectedTalentIds ?? []);\n const [points, setPoints] = useState(talentPoints ?? MAX_TALENT_POINTS);\n\n useEffect(() => {\n if (selectedTalentIds !== undefined) {\n setSelectionIds(selectedTalentIds);\n }\n }, [selectedTalentIds]);\n\n useEffect(() => {\n if (talentPoints !== undefined) {\n setPoints(talentPoints);\n }\n }, [talentPoints]);\n\n const handleReady = useCallback(\n (event: FellowshipTalentsReadyEvent) => {\n setModel(event.detail.model);\n setSelectionIds(event.detail.selection.selectedTalentIds);\n onReady?.(event);\n },\n [onReady],\n );\n\n const handleSelectionChange = useCallback(\n (event: TalentSelectionChangeEvent) => {\n setSelectionIds(event.detail.selectedTalentIds);\n onSelectionChange?.(event);\n },\n [onSelectionChange],\n );\n\n const handleTalentPointsChange = useCallback(\n (event: TalentPointsChangeEvent) => {\n setPoints(event.detail.talentPoints);\n setSelectionIds(event.detail.selectedTalentIds);\n onTalentPointsChange?.(event);\n },\n [onTalentPointsChange],\n );\n\n const renderedTalents = useMemo(() => {\n if (!renderTalent || !model) {\n return null;\n }\n const state = createTalentCalculatorSelectionState(model, selectionIds, points);\n return [...model.talentById.values()].map((talent) => {\n const selected = state.selectedTalentIds.includes(talent.talent.id);\n const affordable = canSelectTalent(talent.pointCost, state);\n return (\n <span key={talent.talent.id} slot={talentSlotName(talent.talent.id)}>\n {renderTalent({\n talent,\n hero: model.hero,\n selected,\n affordable,\n disabled: !selected && !affordable,\n spentPoints: state.spentPoints,\n remainingPoints: state.remainingPoints,\n talentPoints: points,\n })}\n </span>\n );\n });\n }, [model, points, renderTalent, selectionIds]);\n\n return (\n <NativeTalentCalculator\n {...properties}\n {...(selectedTalentIds === undefined ? {} : { selectedTalentIds })}\n {...(talentPoints === undefined ? {} : { talentPoints })}\n ref={forwardedRef}\n onReady={handleReady}\n onSelectionChange={handleSelectionChange}\n onTalentPointsChange={handleTalentPointsChange}\n >\n {renderedTalents}\n </NativeTalentCalculator>\n );\n});\n\nTalentCalculator.displayName = \"TalentCalculator\";\n\nexport default TalentCalculator;\n"],"mappings":";;;;;AA+BA,EAAiC;AAEjC,IAAM,IAAyB,EAAgB;CAC7C,OAAO;CACP,SAAS;CACT,cAAc;CACd,QAAQ;EACN,SAAS;EACT,SAAS;EACT,WAAW;EACX,mBACE;EACF,sBAAsB;CACxB;AACF,CAAC,GAiBY,IAAmB,EAG9B,SACA,EACE,iBACA,YACA,sBACA,yBACA,sBACA,iBACA,GAAG,KAEL,GACA;CACA,IAAM,CAAC,GAAO,KAAY,EAA6C,IAAI,GACrE,CAAC,GAAc,KAAmB,EAA4B,KAAqB,CAAC,CAAC,GACrF,CAAC,GAAQ,KAAa,EAAS,KAAA,EAAiC;CAQtE,AANA,QAAgB;EACd,AAAI,MAAsB,KAAA,KACxB,EAAgB,CAAiB;CAErC,GAAG,CAAC,CAAiB,CAAC,GAEtB,QAAgB;EACd,AAAI,MAAiB,KAAA,KACnB,EAAU,CAAY;CAE1B,GAAG,CAAC,CAAY,CAAC;CAEjB,IAAM,IAAc,GACjB,MAAuC;EAGtC,AAFA,EAAS,EAAM,OAAO,KAAK,GAC3B,EAAgB,EAAM,OAAO,UAAU,iBAAiB,GACxD,IAAU,CAAK;CACjB,GACA,CAAC,CAAO,CACV,GAEM,IAAwB,GAC3B,MAAsC;EAErC,AADA,EAAgB,EAAM,OAAO,iBAAiB,GAC9C,IAAoB,CAAK;CAC3B,GACA,CAAC,CAAiB,CACpB,GAEM,IAA2B,GAC9B,MAAmC;EAGlC,AAFA,EAAU,EAAM,OAAO,YAAY,GACnC,EAAgB,EAAM,OAAO,iBAAiB,GAC9C,IAAuB,CAAK;CAC9B,GACA,CAAC,CAAoB,CACvB,GAEM,IAAkB,QAAc;EACpC,IAAI,CAAC,KAAgB,CAAC,GACpB,OAAO;EAET,IAAM,IAAQ,EAAqC,GAAO,GAAc,CAAM;EAC9E,OAAO,CAAC,GAAG,EAAM,WAAW,OAAO,CAAC,CAAC,CAAC,KAAK,MAAW;GACpD,IAAM,IAAW,EAAM,kBAAkB,SAAS,EAAO,OAAO,EAAE,GAC5D,IAAa,EAAgB,EAAO,WAAW,CAAK;GAC1D,OACE,kBAAC,QAAD;IAA6B,MAAM,EAAe,EAAO,OAAO,EAAE;cAC/D,EAAa;KACZ;KACA,MAAM,EAAM;KACZ;KACA;KACA,UAAU,CAAC,KAAY,CAAC;KACxB,aAAa,EAAM;KACnB,iBAAiB,EAAM;KACvB,cAAc;IAChB,CAAC;GACG,GAXK,EAAO,OAAO,EAWnB;EAEV,CAAC;CACH,GAAG;EAAC;EAAO;EAAQ;EAAc;CAAY,CAAC;CAE9C,OACE,kBAAC,GAAD;EACE,GAAI;EACJ,GAAK,MAAsB,KAAA,IAAY,CAAC,IAAI,EAAE,qBAAkB;EAChE,GAAK,MAAiB,KAAA,IAAY,CAAC,IAAI,EAAE,gBAAa;EACtD,KAAK;EACL,SAAS;EACT,mBAAmB;EACnB,sBAAsB;YAErB;CACqB,CAAA;AAE5B,CAAC;AAED,EAAiB,cAAc"}
@@ -0,0 +1,15 @@
1
+ import { type EventName } from "@lit/react";
2
+ import React, { type ComponentProps, type ReactNode } from "react";
3
+ import { FellowshipTooltipElement } from "../tooltip/tooltip.js";
4
+ import type { FellowshipTooltipToggleEvent } from "../tooltip/types.js";
5
+ declare const NativeTooltip: import("@lit/react").ReactWebComponent<FellowshipTooltipElement, {
6
+ onToggle: EventName<FellowshipTooltipToggleEvent>;
7
+ }>;
8
+ type NativeTooltipProps = ComponentProps<typeof NativeTooltip>;
9
+ export interface TooltipProps extends Omit<NativeTooltipProps, "children" | "content"> {
10
+ readonly children?: ReactNode;
11
+ readonly content?: ReactNode;
12
+ }
13
+ export declare const Tooltip: React.ForwardRefExoticComponent<Omit<TooltipProps, "ref"> & React.RefAttributes<FellowshipTooltipElement>>;
14
+ export default Tooltip;
15
+ //# sourceMappingURL=tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/react/tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,EAAc,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE/E,OAAO,EAAE,wBAAwB,EAA2B,MAAM,uBAAuB,CAAC;AAC1F,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAIxE,QAAA,MAAM,aAAa;cAK0B,SAAS,CAAC,4BAA4B,CAAC;EAElF,CAAC;AAEH,KAAK,kBAAkB,GAAG,cAAc,CAAC,OAAO,aAAa,CAAC,CAAC;AAE/D,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,kBAAkB,EAAE,UAAU,GAAG,SAAS,CAAC;IACpF,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;CAC9B;AAED,eAAO,MAAM,OAAO,4GAUlB,CAAC;AAIH,eAAe,OAAO,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { n as e, t } from "../chunks/tooltip-DoQVSnOn.js";
2
+ import { createComponent as n } from "@lit/react";
3
+ import r, { forwardRef as i } from "react";
4
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
5
+ //#region src/react/tooltip.tsx
6
+ e();
7
+ var s = n({
8
+ react: r,
9
+ tagName: "fellowship-tooltip",
10
+ elementClass: t,
11
+ events: { onToggle: "fellowship-tooltip-toggle" }
12
+ }), c = i(function({ children: e, content: t, ...n }, r) {
13
+ return /* @__PURE__ */ o(s, {
14
+ ...n,
15
+ ref: r,
16
+ children: [e, t === void 0 ? null : /* @__PURE__ */ a("span", {
17
+ slot: "content",
18
+ children: t
19
+ })]
20
+ });
21
+ });
22
+ c.displayName = "Tooltip";
23
+ //#endregion
24
+ export { c as Tooltip, c as default };
25
+
26
+ //# sourceMappingURL=tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","names":[],"sources":["../../src/react/tooltip.tsx"],"sourcesContent":["import { createComponent, type EventName } from \"@lit/react\";\nimport React, { forwardRef, type ComponentProps, type ReactNode } from \"react\";\n\nimport { FellowshipTooltipElement, defineFellowshipTooltip } from \"../tooltip/tooltip.js\";\nimport type { FellowshipTooltipToggleEvent } from \"../tooltip/types.js\";\n\ndefineFellowshipTooltip();\n\nconst NativeTooltip = createComponent({\n react: React,\n tagName: \"fellowship-tooltip\",\n elementClass: FellowshipTooltipElement,\n events: {\n onToggle: \"fellowship-tooltip-toggle\" as EventName<FellowshipTooltipToggleEvent>,\n },\n});\n\ntype NativeTooltipProps = ComponentProps<typeof NativeTooltip>;\n\nexport interface TooltipProps extends Omit<NativeTooltipProps, \"children\" | \"content\"> {\n readonly children?: ReactNode;\n readonly content?: ReactNode;\n}\n\nexport const Tooltip = forwardRef<FellowshipTooltipElement, TooltipProps>(function Tooltip(\n { children, content, ...properties },\n forwardedRef,\n) {\n return (\n <NativeTooltip {...properties} ref={forwardedRef}>\n {children}\n {content === undefined ? null : <span slot=\"content\">{content}</span>}\n </NativeTooltip>\n );\n});\n\nTooltip.displayName = \"Tooltip\";\n\nexport default Tooltip;\n"],"mappings":";;;;;AAMA,EAAwB;AAExB,IAAM,IAAgB,EAAgB;CACpC,OAAO;CACP,SAAS;CACT,cAAc;CACd,QAAQ,EACN,UAAU,4BACZ;AACF,CAAC,GASY,IAAU,EAAmD,SACxE,EAAE,aAAU,YAAS,GAAG,KACxB,GACA;CACA,OACE,kBAAC,GAAD;EAAe,GAAI;EAAY,KAAK;YAApC,CACG,GACA,MAAY,KAAA,IAAY,OAAO,kBAAC,QAAD;GAAM,MAAK;aAAW;EAAc,CAAA,CACvD;;AAEnB,CAAC;AAED,EAAQ,cAAc"}
package/dist/react.js ADDED
@@ -0,0 +1,4 @@
1
+ import { DungeonMapViewer as e } from "./react/dungeon-map.js";
2
+ import { TalentCalculator as t } from "./react/talent-calculator.js";
3
+ import { Tooltip as n } from "./react/tooltip.js";
4
+ export { e as DungeonMapViewer, t as TalentCalculator, n as Tooltip };
@@ -0,0 +1,3 @@
1
+ /** Makes the bundled field-manual faces available to a component's owner document. */
2
+ export declare const installFieldManualFonts: (document: Document) => void;
3
+ //# sourceMappingURL=field-manual-fonts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-manual-fonts.d.ts","sourceRoot":"","sources":["../../src/styles/field-manual-fonts.ts"],"names":[],"mappings":"AAwBA,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,GAAI,UAAU,QAAQ,KAAG,IAsB5D,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Shared internal aliases for the public Expedition Field Manual theme tokens. */
2
+ export declare const fieldManualStyles: import("lit").CSSResult;
3
+ //# sourceMappingURL=field-manual.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-manual.styles.d.ts","sourceRoot":"","sources":["../../src/styles/field-manual.styles.ts"],"names":[],"mappings":"AAEA,mFAAmF;AACnF,eAAO,MAAM,iBAAiB,yBAmC7B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { createTalentCalculatorRenderModel, talentRowLabel } from "./render-model.js";
2
+ export { canSelectTalent, createTalentCalculatorSelectionState, MAX_TALENT_POINTS, normalizeSelectedTalentIds, normalizeTalentPoints, } from "./selection-state.js";
3
+ export { FellowshipTalentCalculatorElement, defineFellowshipTalentCalculator, talentSlotName, } from "./talent-calculator.js";
4
+ export type { FellowshipTalentCalculatorProperties, FellowshipTalentsErrorDetail, FellowshipTalentsErrorEvent, FellowshipTalentsReadyDetail, FellowshipTalentsReadyEvent, FellowshipTalentsWarningDetail, FellowshipTalentsWarningEvent, LitTalentRenderer, TalentCalculatorRenderModel, TalentCalculatorRowModel, TalentCalculatorSelectionState, TalentCalculatorTalentModel, TalentCalculatorTalentRenderContext, TalentCalculatorWarning, TalentCalculatorWarningCode, TalentPointsChangeDetail, TalentPointsChangeEvent, TalentPointsChangeSource, TalentSelectionChangeDetail, TalentSelectionChangeEvent, TalentSelectionChangeSource, } from "./types.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/talent-calculator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EACL,eAAe,EACf,oCAAoC,EACpC,iBAAiB,EACjB,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,iCAAiC,EACjC,gCAAgC,EAChC,cAAc,GACf,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,oCAAoC,EACpC,4BAA4B,EAC5B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,8BAA8B,EAC9B,6BAA6B,EAC7B,iBAAiB,EACjB,2BAA2B,EAC3B,wBAAwB,EACxB,8BAA8B,EAC9B,2BAA2B,EAC3B,mCAAmC,EACnC,uBAAuB,EACvB,2BAA2B,EAC3B,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,YAAY,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { FellowshipTalentDataSource, TalentCalculatorData } from "../data/talent-data-source.js";
2
+ import type { TalentCalculatorRenderModel } from "./types.js";
3
+ export declare const talentRowLabel: (row: number) => string;
4
+ export declare const createTalentCalculatorRenderModel: (data: TalentCalculatorData, source: FellowshipTalentDataSource) => TalentCalculatorRenderModel;
5
+ //# sourceMappingURL=render-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-model.d.ts","sourceRoot":"","sources":["../../src/talent-calculator/render-model.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EACV,2BAA2B,EAG5B,MAAM,YAAY,CAAC;AAIpB,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,KAAG,MAA+C,CAAC;AAQ7F,eAAO,MAAM,iCAAiC,GAC5C,MAAM,oBAAoB,EAC1B,QAAQ,0BAA0B,KACjC,2BAgGF,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { TalentCalculatorRenderModel, TalentCalculatorSelectionState } from "./types.js";
2
+ export declare const MAX_TALENT_POINTS = 14;
3
+ export declare const normalizeTalentPoints: (value: number) => number;
4
+ export declare const normalizeSelectedTalentIds: (model: TalentCalculatorRenderModel, selectedTalentIds: readonly string[]) => {
5
+ readonly selectedTalentIds: readonly string[];
6
+ readonly removedTalentIds: readonly string[];
7
+ };
8
+ export declare const createTalentCalculatorSelectionState: (model: TalentCalculatorRenderModel, selectedTalentIds: readonly string[], talentPoints: number) => TalentCalculatorSelectionState;
9
+ export declare const canSelectTalent: (pointCost: number | null, state: TalentCalculatorSelectionState) => boolean;
10
+ //# sourceMappingURL=selection-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection-state.d.ts","sourceRoot":"","sources":["../../src/talent-calculator/selection-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAE9F,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,KAAG,MAInD,CAAC;AAEJ,eAAO,MAAM,0BAA0B,GACrC,OAAO,2BAA2B,EAClC,mBAAmB,SAAS,MAAM,EAAE,KACnC;IACD,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CAS9C,CAAC;AAEF,eAAO,MAAM,oCAAoC,GAC/C,OAAO,2BAA2B,EAClC,mBAAmB,SAAS,MAAM,EAAE,EACpC,cAAc,MAAM,KACnB,8BAkBF,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,WAAW,MAAM,GAAG,IAAI,EACxB,OAAO,8BAA8B,KACpC,OAAwF,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { LitElement, type PropertyValues, type TemplateResult } from "lit";
2
+ import type { FellowshipTalentDataSource } from "../data/talent-data-source.js";
3
+ import { MAX_TALENT_POINTS } from "./selection-state.js";
4
+ import type { LitTalentRenderer, TalentCalculatorRenderModel, TalentCalculatorSelectionState } from "./types.js";
5
+ export declare const talentSlotName: (talentId: string) => string;
6
+ export { MAX_TALENT_POINTS };
7
+ /**
8
+ * @fires fellowship-talents-ready - Fired after talent data is loaded and rendered.
9
+ * @fires fellowship-talents-error - Fired when talent data cannot be loaded.
10
+ * @fires fellowship-talents-warning - Fired for recoverable data and renderer issues.
11
+ * @fires fellowship-talent-selection-change - Fired when selected talents change.
12
+ * @fires fellowship-talent-points-change - Fired when the point budget changes.
13
+ */
14
+ export declare class FellowshipTalentCalculatorElement extends LitElement {
15
+ #private;
16
+ static styles: import("lit").CSSResult[];
17
+ heroId: string;
18
+ talentPoints: number;
19
+ selectedTalentIds: readonly string[];
20
+ assetBaseUrl: string | null;
21
+ dataSource: FellowshipTalentDataSource | null;
22
+ renderTalent: LitTalentRenderer | null;
23
+ showPointControls: boolean;
24
+ showTooltips: boolean;
25
+ private _status;
26
+ private _error;
27
+ private _model;
28
+ private _failedImages;
29
+ private _announcement;
30
+ private _renderSelectionState;
31
+ private _talentPresentation;
32
+ private _talentRenderContent;
33
+ connectedCallback(): void;
34
+ disconnectedCallback(): void;
35
+ protected updated(changed: PropertyValues<this>): void;
36
+ protected willUpdate(changed: PropertyValues): void;
37
+ get renderModel(): TalentCalculatorRenderModel | null;
38
+ get selectionState(): TalentCalculatorSelectionState;
39
+ reset(): void;
40
+ selectTalent(talentId: string): boolean;
41
+ deselectTalent(talentId: string): boolean;
42
+ retry(): void;
43
+ render(): TemplateResult;
44
+ }
45
+ export declare const defineFellowshipTalentCalculator: () => void;
46
+ declare global {
47
+ interface HTMLElementTagNameMap {
48
+ "fellowship-talent-calculator": FellowshipTalentCalculatorElement;
49
+ }
50
+ }
51
+ //# sourceMappingURL=talent-calculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"talent-calculator.d.ts","sourceRoot":"","sources":["../../src/talent-calculator/talent-calculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAW,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAM1F,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAMhF,OAAO,EAGL,iBAAiB,EAGlB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAIV,iBAAiB,EACjB,2BAA2B,EAC3B,8BAA8B,EAQ/B,MAAM,YAAY,CAAC;AAoBpB,eAAO,MAAM,cAAc,GAAI,UAAU,MAAM,KAAG,MAA8B,CAAC;AASjF,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B;;;;;;GAMG;AACH,qBACa,iCAAkC,SAAQ,UAAU;;IAC/D,OAAgB,MAAM,4BAA+C;IAEnB,MAAM,SAAM;IACN,YAAY,SAAqB;IAEzF,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAM;IACe,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC5D,UAAU,EAAE,0BAA0B,GAAG,IAAI,CAAQ;IACrD,YAAY,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IACf,iBAAiB,UAAQ;IAC/B,YAAY,UAAQ;IAEpE,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,MAAM,CAA6C;IAC3D,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,qBAAqB,CAA6C;IAC1E,OAAO,CAAC,mBAAmB,CAAyC;IACpE,OAAO,CAAC,oBAAoB,CAA8B;IAS1D,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;cAKlB,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAmC5C,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAuB5D,IAAI,WAAW,IAAI,2BAA2B,GAAG,IAAI,CAEpD;IAED,IAAI,cAAc,IAAI,8BAA8B,CAInD;IAED,KAAK,IAAI,IAAI;IAQb,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAevC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IASzC,KAAK,IAAI,IAAI;IAIJ,MAAM,IAAI,cAAc;CAggBlC;AAED,eAAO,MAAM,gCAAgC,QAAO,IAKnD,CAAC;AAEF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,8BAA8B,EAAE,iCAAiC,CAAC;KACnE;CACF"}
@@ -0,0 +1,2 @@
1
+ export declare const talentCalculatorStyles: import("lit").CSSResult;
2
+ //# sourceMappingURL=talent-calculator.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"talent-calculator.styles.d.ts","sourceRoot":"","sources":["../../src/talent-calculator/talent-calculator.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,sBAAsB,yBAoiBlC,CAAC"}
@@ -0,0 +1,92 @@
1
+ import type { Hero, Talent } from "@crockery/fellowship-data";
2
+ import type { nothing, TemplateResult } from "lit";
3
+ import type { FellowshipTalentDataSource, TalentCalculatorData } from "../data/talent-data-source.js";
4
+ export type TalentCalculatorWarningCode = "invalid-position" | "duplicate-position" | "invalid-cost" | "missing-name" | "missing-description" | "missing-image" | "asset-url-error" | "asset-image-error" | "renderer-error" | "invalid-selection" | "over-budget";
5
+ export interface TalentCalculatorWarning {
6
+ readonly code: TalentCalculatorWarningCode;
7
+ readonly message: string;
8
+ readonly talentId: string | null;
9
+ }
10
+ export interface TalentCalculatorTalentModel {
11
+ readonly talent: Talent;
12
+ readonly row: number;
13
+ readonly column: number;
14
+ readonly pointCost: number | null;
15
+ readonly imageUrl: string | null;
16
+ }
17
+ export interface TalentCalculatorRowModel {
18
+ readonly row: number;
19
+ readonly label: string;
20
+ readonly talents: readonly TalentCalculatorTalentModel[];
21
+ }
22
+ export interface TalentCalculatorRenderModel {
23
+ readonly hero: Hero;
24
+ readonly rows: readonly TalentCalculatorRowModel[];
25
+ readonly talentById: ReadonlyMap<string, TalentCalculatorTalentModel>;
26
+ readonly warnings: readonly TalentCalculatorWarning[];
27
+ }
28
+ export interface TalentCalculatorSelectionState {
29
+ readonly selectedTalentIds: readonly string[];
30
+ readonly spentPoints: number;
31
+ readonly remainingPoints: number;
32
+ readonly overBudget: boolean;
33
+ }
34
+ export interface TalentCalculatorTalentRenderContext {
35
+ readonly talent: TalentCalculatorTalentModel;
36
+ readonly hero: Hero;
37
+ readonly selected: boolean;
38
+ readonly affordable: boolean;
39
+ readonly disabled: boolean;
40
+ readonly spentPoints: number;
41
+ readonly remainingPoints: number;
42
+ readonly talentPoints: number;
43
+ }
44
+ export type LitTalentRenderer = (context: TalentCalculatorTalentRenderContext) => TemplateResult | typeof nothing;
45
+ export interface FellowshipTalentsReadyDetail {
46
+ readonly model: TalentCalculatorRenderModel;
47
+ readonly data: TalentCalculatorData;
48
+ readonly selection: TalentCalculatorSelectionState;
49
+ }
50
+ export interface FellowshipTalentsErrorDetail {
51
+ readonly code: string;
52
+ readonly message: string;
53
+ readonly cause?: unknown;
54
+ }
55
+ export interface FellowshipTalentsWarningDetail {
56
+ readonly warnings: readonly TalentCalculatorWarning[];
57
+ readonly model: TalentCalculatorRenderModel | null;
58
+ }
59
+ export type TalentSelectionChangeSource = "user" | "api" | "reset" | "normalization";
60
+ export interface TalentSelectionChangeDetail extends TalentCalculatorSelectionState {
61
+ readonly source: TalentSelectionChangeSource;
62
+ }
63
+ export type TalentPointsChangeSource = "increment" | "decrement" | "property" | "normalization";
64
+ export interface TalentPointsChangeDetail extends TalentCalculatorSelectionState {
65
+ readonly talentPoints: number;
66
+ readonly source: TalentPointsChangeSource;
67
+ }
68
+ export type FellowshipTalentsReadyEvent = CustomEvent<FellowshipTalentsReadyDetail>;
69
+ export type FellowshipTalentsErrorEvent = CustomEvent<FellowshipTalentsErrorDetail>;
70
+ export type FellowshipTalentsWarningEvent = CustomEvent<FellowshipTalentsWarningDetail>;
71
+ export type TalentSelectionChangeEvent = CustomEvent<TalentSelectionChangeDetail>;
72
+ export type TalentPointsChangeEvent = CustomEvent<TalentPointsChangeDetail>;
73
+ export interface FellowshipTalentCalculatorProperties {
74
+ heroId: string;
75
+ talentPoints: number;
76
+ selectedTalentIds: readonly string[];
77
+ assetBaseUrl: string | null;
78
+ dataSource: FellowshipTalentDataSource | null;
79
+ renderTalent: LitTalentRenderer | null;
80
+ showPointControls: boolean;
81
+ showTooltips: boolean;
82
+ }
83
+ declare global {
84
+ interface HTMLElementEventMap {
85
+ "fellowship-talents-ready": FellowshipTalentsReadyEvent;
86
+ "fellowship-talents-error": FellowshipTalentsErrorEvent;
87
+ "fellowship-talents-warning": FellowshipTalentsWarningEvent;
88
+ "fellowship-talent-selection-change": TalentSelectionChangeEvent;
89
+ "fellowship-talent-points-change": TalentPointsChangeEvent;
90
+ }
91
+ }
92
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/talent-calculator/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c, u as l } from "./chunks/talent-calculator-Ch1Pbbba.js";
2
+ //#region src/talent-calculator/index.ts
3
+ i();
4
+ //#endregion
5
+ export { c as FellowshipTalentCalculatorElement, n as MAX_TALENT_POINTS, e as canSelectTalent, r as createTalentCalculatorRenderModel, a as createTalentCalculatorSelectionState, i as defineFellowshipTalentCalculator, s as normalizeSelectedTalentIds, t as normalizeTalentPoints, l as talentRowLabel, o as talentSlotName };
6
+
7
+ //# sourceMappingURL=talent-calculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"talent-calculator.js","names":[],"sources":["../src/talent-calculator/index.ts"],"sourcesContent":["export { createTalentCalculatorRenderModel, talentRowLabel } from \"./render-model.js\";\nexport {\n canSelectTalent,\n createTalentCalculatorSelectionState,\n MAX_TALENT_POINTS,\n normalizeSelectedTalentIds,\n normalizeTalentPoints,\n} from \"./selection-state.js\";\nexport {\n FellowshipTalentCalculatorElement,\n defineFellowshipTalentCalculator,\n talentSlotName,\n} from \"./talent-calculator.js\";\nexport type {\n FellowshipTalentCalculatorProperties,\n FellowshipTalentsErrorDetail,\n FellowshipTalentsErrorEvent,\n FellowshipTalentsReadyDetail,\n FellowshipTalentsReadyEvent,\n FellowshipTalentsWarningDetail,\n FellowshipTalentsWarningEvent,\n LitTalentRenderer,\n TalentCalculatorRenderModel,\n TalentCalculatorRowModel,\n TalentCalculatorSelectionState,\n TalentCalculatorTalentModel,\n TalentCalculatorTalentRenderContext,\n TalentCalculatorWarning,\n TalentCalculatorWarningCode,\n TalentPointsChangeDetail,\n TalentPointsChangeEvent,\n TalentPointsChangeSource,\n TalentSelectionChangeDetail,\n TalentSelectionChangeEvent,\n TalentSelectionChangeSource,\n} from \"./types.js\";\n\nimport { defineFellowshipTalentCalculator } from \"./talent-calculator.js\";\n\ndefineFellowshipTalentCalculator();\n"],"mappings":";;AAuCA,EAAiC"}
@@ -0,0 +1,6 @@
1
+ export { calculateTooltipPosition } from "./positioning.js";
2
+ export type { TooltipPosition, TooltipPositionOptions, TooltipRect } from "./positioning.js";
3
+ export { resolveFellowshipRichText, stripFellowshipRichText } from "./rich-text.js";
4
+ export { FellowshipTooltipElement, defineFellowshipTooltip } from "./tooltip.js";
5
+ export type { FellowshipRichTextDocument, FellowshipRichTextSegment, FellowshipTextTone, FellowshipTooltipPlacement, FellowshipTooltipToggleDetail, FellowshipTooltipToggleEvent, ResolvedTooltipPlacement, } from "./types.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tooltip/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACjF,YAAY,EACV,0BAA0B,EAC1B,yBAAyB,EACzB,kBAAkB,EAClB,0BAA0B,EAC1B,6BAA6B,EAC7B,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { FellowshipTooltipPlacement, ResolvedTooltipPlacement } from "./types.js";
2
+ export interface TooltipRect {
3
+ readonly top: number;
4
+ readonly right: number;
5
+ readonly bottom: number;
6
+ readonly left: number;
7
+ readonly width: number;
8
+ readonly height: number;
9
+ }
10
+ export interface TooltipPosition {
11
+ readonly x: number;
12
+ readonly y: number;
13
+ readonly placement: ResolvedTooltipPlacement;
14
+ }
15
+ export interface TooltipPositionOptions {
16
+ readonly placement?: FellowshipTooltipPlacement;
17
+ readonly viewportWidth: number;
18
+ readonly viewportHeight: number;
19
+ readonly gap?: number;
20
+ readonly margin?: number;
21
+ }
22
+ export declare const calculateTooltipPosition: (trigger: TooltipRect, tooltip: Pick<TooltipRect, "width" | "height">, options: TooltipPositionOptions) => TooltipPosition;
23
+ //# sourceMappingURL=positioning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"positioning.d.ts","sourceRoot":"","sources":["../../src/tooltip/positioning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEvF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,SAAS,EAAE,wBAAwB,CAAC;CAC9C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,0BAA0B,CAAC;IAChD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAKD,eAAO,MAAM,wBAAwB,GACnC,SAAS,WAAW,EACpB,SAAS,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,QAAQ,CAAC,EAC9C,SAAS,sBAAsB,KAC9B,eA2CF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { FellowshipRichTextDocument } from "./types.js";
2
+ export declare const resolveFellowshipRichText: (value: string) => FellowshipRichTextDocument;
3
+ export declare const stripFellowshipRichText: (value: string) => string;
4
+ //# sourceMappingURL=rich-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rich-text.d.ts","sourceRoot":"","sources":["../../src/tooltip/rich-text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAG3B,MAAM,YAAY,CAAC;AAqCpB,eAAO,MAAM,yBAAyB,GAAI,OAAO,MAAM,KAAG,0BAgCzD,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,OAAO,MAAM,KAAG,MAI7C,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { LitElement, type PropertyValues, type TemplateResult } from "lit";
2
+ import type { FellowshipTooltipPlacement } from "./types.js";
3
+ /**
4
+ * @fires fellowship-tooltip-toggle - Fired when the tooltip opens or closes.
5
+ */
6
+ export declare class FellowshipTooltipElement extends LitElement {
7
+ #private;
8
+ static styles: import("lit").CSSResult[];
9
+ heading: string | null;
10
+ text: string | null;
11
+ placement: FellowshipTooltipPlacement;
12
+ openDelay: number;
13
+ disabled: boolean;
14
+ private _open;
15
+ private _position;
16
+ private _resolvedPlacement;
17
+ private _paragraphs;
18
+ private _surface?;
19
+ connectedCallback(): void;
20
+ disconnectedCallback(): void;
21
+ protected updated(changed: PropertyValues<this>): void;
22
+ protected willUpdate(changed: PropertyValues<this>): void;
23
+ show(): void;
24
+ hide(): void;
25
+ render(): TemplateResult;
26
+ }
27
+ export declare const defineFellowshipTooltip: () => void;
28
+ declare global {
29
+ interface HTMLElementTagNameMap {
30
+ "fellowship-tooltip": FellowshipTooltipElement;
31
+ }
32
+ }
33
+ //# sourceMappingURL=tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/tooltip/tooltip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAW,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAU1F,OAAO,KAAK,EACV,0BAA0B,EAI3B,MAAM,YAAY,CAAC;AAIpB;;GAEG;AACH,qBACa,wBAAyB,SAAQ,UAAU;;IACtD,OAAgB,MAAM,4BAAsC;IAEhC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC9B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC3B,SAAS,EAAE,0BAA0B,CAAU;IACtB,SAAS,SAAO;IACzB,QAAQ,UAAS;IAEpD,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,kBAAkB,CAAmC;IAC7D,OAAO,CAAC,WAAW,CAAkC;IAE3C,OAAO,CAAC,QAAQ,CAAC,CAAc;IAQzC,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;cAOlB,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAa5C,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAOlE,IAAI,IAAI,IAAI;IAOZ,IAAI,IAAI,IAAI;IAOH,MAAM,IAAI,cAAc;CAgNlC;AAED,eAAO,MAAM,uBAAuB,QAAO,IAI1C,CAAC;AAEF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,oBAAoB,EAAE,wBAAwB,CAAC;KAChD;CACF"}
@@ -0,0 +1,2 @@
1
+ export declare const tooltipStyles: import("lit").CSSResult;
2
+ //# sourceMappingURL=tooltip.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.styles.d.ts","sourceRoot":"","sources":["../../src/tooltip/tooltip.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,yBAuLzB,CAAC"}
@@ -0,0 +1,19 @@
1
+ export type FellowshipTextTone = "default" | "strong" | "ability" | "warning" | "effect" | "resource" | "healing" | "meiko-primary" | "meiko-secondary";
2
+ export interface FellowshipRichTextSegment {
3
+ readonly text: string;
4
+ readonly tone: FellowshipTextTone;
5
+ }
6
+ export type FellowshipRichTextDocument = readonly (readonly FellowshipRichTextSegment[])[];
7
+ export type FellowshipTooltipPlacement = "auto" | "top" | "right" | "bottom" | "left";
8
+ export type ResolvedTooltipPlacement = Exclude<FellowshipTooltipPlacement, "auto">;
9
+ export interface FellowshipTooltipToggleDetail {
10
+ readonly open: boolean;
11
+ readonly reason: "pointer" | "focus" | "escape" | "programmatic" | "disabled";
12
+ }
13
+ export type FellowshipTooltipToggleEvent = CustomEvent<FellowshipTooltipToggleDetail>;
14
+ declare global {
15
+ interface HTMLElementEventMap {
16
+ "fellowship-tooltip-toggle": FellowshipTooltipToggleEvent;
17
+ }
18
+ }
19
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tooltip/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,QAAQ,GACR,SAAS,GACT,SAAS,GACT,QAAQ,GACR,UAAU,GACV,SAAS,GACT,eAAe,GACf,iBAAiB,CAAC;AAEtB,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;CACnC;AAED,MAAM,MAAM,0BAA0B,GAAG,SAAS,CAAC,SAAS,yBAAyB,EAAE,CAAC,EAAE,CAAC;AAE3F,MAAM,MAAM,0BAA0B,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AACtF,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;AAEnF,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,cAAc,GAAG,UAAU,CAAC;CAC/E;AAED,MAAM,MAAM,4BAA4B,GAAG,WAAW,CAAC,6BAA6B,CAAC,CAAC;AAEtF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,mBAAmB;QAC3B,2BAA2B,EAAE,4BAA4B,CAAC;KAC3D;CACF"}
@@ -0,0 +1,7 @@
1
+ import { a as e, i as t, n, r, t as i } from "./chunks/tooltip-DoQVSnOn.js";
2
+ //#region src/tooltip/index.ts
3
+ n();
4
+ //#endregion
5
+ export { i as FellowshipTooltipElement, r as calculateTooltipPosition, n as defineFellowshipTooltip, t as resolveFellowshipRichText, e as stripFellowshipRichText };
6
+
7
+ //# sourceMappingURL=tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","names":[],"sources":["../src/tooltip/index.ts"],"sourcesContent":["export { calculateTooltipPosition } from \"./positioning.js\";\nexport type { TooltipPosition, TooltipPositionOptions, TooltipRect } from \"./positioning.js\";\nexport { resolveFellowshipRichText, stripFellowshipRichText } from \"./rich-text.js\";\nexport { FellowshipTooltipElement, defineFellowshipTooltip } from \"./tooltip.js\";\nexport type {\n FellowshipRichTextDocument,\n FellowshipRichTextSegment,\n FellowshipTextTone,\n FellowshipTooltipPlacement,\n FellowshipTooltipToggleDetail,\n FellowshipTooltipToggleEvent,\n ResolvedTooltipPlacement,\n} from \"./types.js\";\n\nimport { defineFellowshipTooltip } from \"./tooltip.js\";\n\ndefineFellowshipTooltip();\n"],"mappings":";;AAgBA,EAAwB"}