@dreamboard-games/sdk 0.5.0-alpha.0 → 0.5.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +127 -0
- package/dist/browser-interaction.d.ts +22 -22
- package/dist/{chunk-VRRR6QZT.js → chunk-32PFKDV7.js} +170 -406
- package/dist/chunk-32PFKDV7.js.map +1 -0
- package/dist/{chunk-N33CGX2F.js → chunk-3BAD4VC2.js} +3 -3
- package/dist/{chunk-LMHCGCA6.js → chunk-3SKDNDPG.js} +2 -2
- package/dist/chunk-5YV2WHJ4.js +25 -0
- package/dist/chunk-5YV2WHJ4.js.map +1 -0
- package/dist/{chunk-VWTKGIYF.js → chunk-ANRB4XKA.js} +1 -1
- package/dist/chunk-ANRB4XKA.js.map +1 -0
- package/dist/{chunk-EOEA3I64.js → chunk-BI4G3PM2.js} +7 -7
- package/dist/chunk-BI4G3PM2.js.map +1 -0
- package/dist/{chunk-KRJPRYEA.js → chunk-EVCLTY4Q.js} +21 -8
- package/dist/chunk-EVCLTY4Q.js.map +1 -0
- package/dist/{chunk-DQS2EG5E.js → chunk-GDPKTBUR.js} +2 -2
- package/dist/{chunk-FL67RDID.js → chunk-H6VDGFL5.js} +128 -128
- package/dist/chunk-H6VDGFL5.js.map +1 -0
- package/dist/{chunk-6LMESVGT.js → chunk-LR3ZTWQF.js} +3 -3
- package/dist/chunk-LR3ZTWQF.js.map +1 -0
- package/dist/{chunk-TXELBVTG.js → chunk-PN5O6GG2.js} +2 -2
- package/dist/{chunk-533O7C4L.js → chunk-S2JEDVWH.js} +500 -430
- package/dist/chunk-S2JEDVWH.js.map +1 -0
- package/dist/{chunk-2GQIALJL.js → chunk-UGH54WZ2.js} +6 -2
- package/dist/chunk-UGH54WZ2.js.map +1 -0
- package/dist/chunk-VCDWP5VL.js +746 -0
- package/dist/chunk-VCDWP5VL.js.map +1 -0
- package/dist/{chunk-ZSTCUJKZ.js → chunk-Y75CFE77.js} +2 -6
- package/dist/chunk-Y75CFE77.js.map +1 -0
- package/dist/chunk-Z7QCREWI.js +3435 -0
- package/dist/chunk-Z7QCREWI.js.map +1 -0
- package/dist/chunk-ZZGN2ATS.js +1941 -0
- package/dist/chunk-ZZGN2ATS.js.map +1 -0
- package/dist/{components-CNAt5J1p.d.ts → components-gAbIz7hK.d.ts} +2 -18
- package/dist/{definitions-bZSBaPjj.d.ts → definitions-BgmV_GhC.d.ts} +3 -3
- package/dist/digest.d.ts +2 -2
- package/dist/game-CsZScpcn.d.ts +763 -0
- package/dist/{index-CR69MyWr.d.ts → index-CcT9Q7N7.d.ts} +1 -1
- package/dist/{index.d-Bw8AOcgp.d.ts → index.d-DjzoK7zn.d.ts} +67 -2
- package/dist/index.js +1 -2
- package/dist/package-set.js +1 -2
- package/dist/plugin-runtime-contract.d.ts +4 -4
- package/dist/plugin-runtime-contract.js +13 -15
- package/dist/{protocol-CVaSqPgX.d.ts → protocol-dYgafTYY.d.ts} +1 -7
- package/dist/reducer/advanced.d.ts +12 -11
- package/dist/reducer/advanced.js +10 -4
- package/dist/reducer-contract.d.ts +10 -2
- package/dist/reducer-contract.js +4 -4
- package/dist/reducer.d.ts +12 -689
- package/dist/reducer.js +19 -1293
- package/dist/reducer.js.map +1 -1
- package/dist/runtime/primitives.d.ts +4 -4
- package/dist/runtime/primitives.js +5 -5
- package/dist/runtime/runtime-api.d.ts +2 -2
- package/dist/runtime/workspace-contract.d.ts +50 -17
- package/dist/runtime/workspace-contract.js +15 -10
- package/dist/{runtime-C7Z2acNU.d.ts → runtime-RJ5orDJU.d.ts} +23 -30
- package/dist/{plugin-state-BRH3UiUp.d.ts → runtime-api-Bz5pwNU_.d.ts} +86 -4
- package/dist/runtime.d.ts +8 -8
- package/dist/runtime.js +19 -17
- package/dist/runtime.js.map +1 -1
- package/dist/schema.d.ts +2 -28
- package/dist/testing-compiler.d.ts +4 -4
- package/dist/testing-runtime.d.ts +7 -7
- package/dist/testing-runtime.js +6 -6
- package/dist/testing.d.ts +17 -17
- package/dist/testing.js +14 -14
- package/dist/{types-q1Guidm5.d.ts → types-DR7DoB1x.d.ts} +1 -1
- package/dist/{types-DN4O7kH_.d.ts → types-JWCYHmu7.d.ts} +2 -2
- package/dist/types.js +6 -18
- package/dist/types.js.map +1 -1
- package/dist/ui/components.d.ts +3 -4
- package/dist/ui/components.js +1 -5
- package/dist/{ui-contract-BC4JpysE.d.ts → ui-contract-GTUPkf8z.d.ts} +175 -176
- package/dist/ui.d.ts +4 -5
- package/dist/ui.js +2 -6
- package/dist/{views-D2Cfzr3h.d.ts → views-BpuWcOyN.d.ts} +101 -48
- package/package.json +3 -22
- package/dist/authoring/index.d.ts +0 -59
- package/dist/authoring/index.js +0 -24
- package/dist/authoring/index.js.map +0 -1
- package/dist/authoring-compiler.d.ts +0 -27
- package/dist/authoring-compiler.js +0 -11
- package/dist/authoring-compiler.js.map +0 -1
- package/dist/authoring-materialize-cli.d.ts +0 -1
- package/dist/authoring-materialize-cli.js +0 -45
- package/dist/authoring-materialize-cli.js.map +0 -1
- package/dist/chunk-2GQIALJL.js.map +0 -1
- package/dist/chunk-533O7C4L.js.map +0 -1
- package/dist/chunk-6LMESVGT.js.map +0 -1
- package/dist/chunk-EOEA3I64.js.map +0 -1
- package/dist/chunk-FL67RDID.js.map +0 -1
- package/dist/chunk-HIH6Y4FA.js +0 -7802
- package/dist/chunk-HIH6Y4FA.js.map +0 -1
- package/dist/chunk-HUK4234C.js +0 -166
- package/dist/chunk-HUK4234C.js.map +0 -1
- package/dist/chunk-KGV2EUNN.js +0 -532
- package/dist/chunk-KGV2EUNN.js.map +0 -1
- package/dist/chunk-KRJPRYEA.js.map +0 -1
- package/dist/chunk-KWHOFBDM.js +0 -9
- package/dist/chunk-KWHOFBDM.js.map +0 -1
- package/dist/chunk-VRRR6QZT.js.map +0 -1
- package/dist/chunk-VWTKGIYF.js.map +0 -1
- package/dist/chunk-XFMSLL3P.js +0 -637
- package/dist/chunk-XFMSLL3P.js.map +0 -1
- package/dist/chunk-ZSTCUJKZ.js.map +0 -1
- package/dist/codegen.d.ts +0 -941
- package/dist/codegen.js +0 -44
- package/dist/codegen.js.map +0 -1
- package/dist/runtime-api-CgPuEVeF.d.ts +0 -86
- /package/dist/{chunk-N33CGX2F.js.map → chunk-3BAD4VC2.js.map} +0 -0
- /package/dist/{chunk-LMHCGCA6.js.map → chunk-3SKDNDPG.js.map} +0 -0
- /package/dist/{chunk-DQS2EG5E.js.map → chunk-GDPKTBUR.js.map} +0 -0
- /package/dist/{chunk-TXELBVTG.js.map → chunk-PN5O6GG2.js.map} +0 -0
|
@@ -8771,240 +8771,6 @@ function OutcomeDialog({
|
|
|
8771
8771
|
) });
|
|
8772
8772
|
}
|
|
8773
8773
|
|
|
8774
|
-
// src/ui/components/GameEventLog.tsx
|
|
8775
|
-
import { Activity, ChevronDown as ChevronDown2 } from "lucide-react";
|
|
8776
|
-
import { useId as useId7 } from "react";
|
|
8777
|
-
import { jsx as jsx38, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
8778
|
-
function formatDetailValue(value) {
|
|
8779
|
-
if (typeof value === "boolean") return value ? "Yes" : "No";
|
|
8780
|
-
return String(value);
|
|
8781
|
-
}
|
|
8782
|
-
function eventKey(event) {
|
|
8783
|
-
return `${event.version}:${event.index}`;
|
|
8784
|
-
}
|
|
8785
|
-
function SystemActionSummary({
|
|
8786
|
-
event,
|
|
8787
|
-
className,
|
|
8788
|
-
style
|
|
8789
|
-
}) {
|
|
8790
|
-
const theme = useTheme();
|
|
8791
|
-
const titleId = useId7();
|
|
8792
|
-
const summaryId = useId7();
|
|
8793
|
-
return /* @__PURE__ */ jsxs21(
|
|
8794
|
-
"article",
|
|
8795
|
-
{
|
|
8796
|
-
className,
|
|
8797
|
-
"aria-labelledby": titleId,
|
|
8798
|
-
"aria-describedby": event.summary ? summaryId : void 0,
|
|
8799
|
-
style: {
|
|
8800
|
-
...eventItemStyle(theme),
|
|
8801
|
-
...style
|
|
8802
|
-
},
|
|
8803
|
-
children: [
|
|
8804
|
-
/* @__PURE__ */ jsx38(
|
|
8805
|
-
Activity,
|
|
8806
|
-
{
|
|
8807
|
-
"aria-hidden": "true",
|
|
8808
|
-
size: 18,
|
|
8809
|
-
strokeWidth: 2.5,
|
|
8810
|
-
style: {
|
|
8811
|
-
color: theme.semantic.intent.info.solid,
|
|
8812
|
-
flex: "0 0 auto",
|
|
8813
|
-
marginTop: 2
|
|
8814
|
-
}
|
|
8815
|
-
}
|
|
8816
|
-
),
|
|
8817
|
-
/* @__PURE__ */ jsxs21("div", { style: { display: "grid", gap: theme.space[2], minWidth: 0 }, children: [
|
|
8818
|
-
/* @__PURE__ */ jsxs21("div", { style: { display: "grid", gap: theme.space[1] }, children: [
|
|
8819
|
-
/* @__PURE__ */ jsx38("h3", { id: titleId, style: eventTitleStyle(theme), children: event.title }),
|
|
8820
|
-
event.summary ? /* @__PURE__ */ jsx38("p", { id: summaryId, style: eventBodyStyle(theme), children: event.summary }) : null
|
|
8821
|
-
] }),
|
|
8822
|
-
event.details && event.details.length > 0 ? /* @__PURE__ */ jsx38("dl", { style: detailGridStyle(theme), children: event.details.map((detail, index) => /* @__PURE__ */ jsxs21(
|
|
8823
|
-
"div",
|
|
8824
|
-
{
|
|
8825
|
-
style: {
|
|
8826
|
-
display: "flex",
|
|
8827
|
-
justifyContent: "space-between",
|
|
8828
|
-
gap: theme.space[3],
|
|
8829
|
-
minWidth: 0
|
|
8830
|
-
},
|
|
8831
|
-
children: [
|
|
8832
|
-
/* @__PURE__ */ jsx38("dt", { style: detailLabelStyle(theme), children: detail.label }),
|
|
8833
|
-
/* @__PURE__ */ jsx38("dd", { style: detailValueStyle(theme), children: formatDetailValue(detail.value) })
|
|
8834
|
-
]
|
|
8835
|
-
},
|
|
8836
|
-
`${detail.label}:${index}`
|
|
8837
|
-
)) }) : null
|
|
8838
|
-
] })
|
|
8839
|
-
]
|
|
8840
|
-
}
|
|
8841
|
-
);
|
|
8842
|
-
}
|
|
8843
|
-
function GameEventLog({
|
|
8844
|
-
events,
|
|
8845
|
-
empty = "No automated actions yet.",
|
|
8846
|
-
maxVisible,
|
|
8847
|
-
className,
|
|
8848
|
-
style
|
|
8849
|
-
}) {
|
|
8850
|
-
const theme = useTheme();
|
|
8851
|
-
const titleId = useId7();
|
|
8852
|
-
const visibleEvents = maxVisible === void 0 ? events : events.slice(0, maxVisible);
|
|
8853
|
-
const hiddenCount = Math.max(0, events.length - visibleEvents.length);
|
|
8854
|
-
return /* @__PURE__ */ jsxs21(
|
|
8855
|
-
"section",
|
|
8856
|
-
{
|
|
8857
|
-
className,
|
|
8858
|
-
"aria-labelledby": titleId,
|
|
8859
|
-
style: {
|
|
8860
|
-
...logContainerStyle(theme),
|
|
8861
|
-
...style
|
|
8862
|
-
},
|
|
8863
|
-
children: [
|
|
8864
|
-
/* @__PURE__ */ jsxs21("header", { style: logHeaderStyle(theme), children: [
|
|
8865
|
-
/* @__PURE__ */ jsx38("h2", { id: titleId, style: logTitleStyle(theme), children: "Automated actions" }),
|
|
8866
|
-
/* @__PURE__ */ jsx38("span", { style: logCountStyle(theme), children: events.length })
|
|
8867
|
-
] }),
|
|
8868
|
-
visibleEvents.length === 0 ? /* @__PURE__ */ jsx38("p", { style: emptyStyle(theme), children: empty }) : /* @__PURE__ */ jsx38(
|
|
8869
|
-
"ol",
|
|
8870
|
-
{
|
|
8871
|
-
"aria-live": "polite",
|
|
8872
|
-
style: {
|
|
8873
|
-
display: "grid",
|
|
8874
|
-
gap: theme.space[2],
|
|
8875
|
-
margin: 0,
|
|
8876
|
-
padding: 0,
|
|
8877
|
-
listStyle: "none"
|
|
8878
|
-
},
|
|
8879
|
-
children: visibleEvents.map((event) => /* @__PURE__ */ jsx38("li", { children: /* @__PURE__ */ jsx38(SystemActionSummary, { event }) }, eventKey(event)))
|
|
8880
|
-
}
|
|
8881
|
-
),
|
|
8882
|
-
hiddenCount > 0 ? /* @__PURE__ */ jsxs21("div", { style: moreStyle(theme), children: [
|
|
8883
|
-
/* @__PURE__ */ jsx38(ChevronDown2, { "aria-hidden": "true", size: 16 }),
|
|
8884
|
-
/* @__PURE__ */ jsxs21("span", { children: [
|
|
8885
|
-
hiddenCount,
|
|
8886
|
-
" earlier actions hidden"
|
|
8887
|
-
] })
|
|
8888
|
-
] }) : null
|
|
8889
|
-
]
|
|
8890
|
-
}
|
|
8891
|
-
);
|
|
8892
|
-
}
|
|
8893
|
-
function logContainerStyle(theme) {
|
|
8894
|
-
return {
|
|
8895
|
-
...surfaceStyle(theme, { tone: "card" }),
|
|
8896
|
-
display: "grid",
|
|
8897
|
-
gap: theme.space[3],
|
|
8898
|
-
padding: theme.space[4],
|
|
8899
|
-
borderRadius: theme.radius.lg,
|
|
8900
|
-
border: `1px solid ${theme.semantic.border.subtle}`,
|
|
8901
|
-
minWidth: 0
|
|
8902
|
-
};
|
|
8903
|
-
}
|
|
8904
|
-
function logHeaderStyle(theme) {
|
|
8905
|
-
return {
|
|
8906
|
-
display: "flex",
|
|
8907
|
-
justifyContent: "space-between",
|
|
8908
|
-
alignItems: "center",
|
|
8909
|
-
gap: theme.space[3],
|
|
8910
|
-
minWidth: 0
|
|
8911
|
-
};
|
|
8912
|
-
}
|
|
8913
|
-
function logTitleStyle(theme) {
|
|
8914
|
-
return {
|
|
8915
|
-
margin: 0,
|
|
8916
|
-
color: theme.semantic.text.primary,
|
|
8917
|
-
fontSize: theme.typography.fontSize.lg,
|
|
8918
|
-
fontWeight: theme.typography.fontWeight.bold
|
|
8919
|
-
};
|
|
8920
|
-
}
|
|
8921
|
-
function logCountStyle(theme) {
|
|
8922
|
-
return {
|
|
8923
|
-
minWidth: 28,
|
|
8924
|
-
height: 28,
|
|
8925
|
-
display: "inline-flex",
|
|
8926
|
-
alignItems: "center",
|
|
8927
|
-
justifyContent: "center",
|
|
8928
|
-
borderRadius: theme.radius.pill,
|
|
8929
|
-
background: theme.semantic.intent.info.soft,
|
|
8930
|
-
color: theme.semantic.intent.info.onSoft,
|
|
8931
|
-
fontFamily: theme.typography.fontFamily.tabular,
|
|
8932
|
-
fontSize: theme.typography.fontSize.sm,
|
|
8933
|
-
fontWeight: theme.typography.fontWeight.bold
|
|
8934
|
-
};
|
|
8935
|
-
}
|
|
8936
|
-
function eventItemStyle(theme) {
|
|
8937
|
-
return {
|
|
8938
|
-
display: "grid",
|
|
8939
|
-
gridTemplateColumns: "20px minmax(0, 1fr)",
|
|
8940
|
-
gap: theme.space[3],
|
|
8941
|
-
padding: theme.space[3],
|
|
8942
|
-
borderRadius: theme.radius.md,
|
|
8943
|
-
border: `1px solid ${theme.semantic.intent.info.border}`,
|
|
8944
|
-
background: theme.semantic.intent.info.soft,
|
|
8945
|
-
minWidth: 0
|
|
8946
|
-
};
|
|
8947
|
-
}
|
|
8948
|
-
function eventTitleStyle(theme) {
|
|
8949
|
-
return {
|
|
8950
|
-
margin: 0,
|
|
8951
|
-
color: theme.semantic.text.primary,
|
|
8952
|
-
fontSize: theme.typography.fontSize.sm,
|
|
8953
|
-
fontWeight: theme.typography.fontWeight.bold
|
|
8954
|
-
};
|
|
8955
|
-
}
|
|
8956
|
-
function eventBodyStyle(theme) {
|
|
8957
|
-
return {
|
|
8958
|
-
margin: 0,
|
|
8959
|
-
color: theme.semantic.text.muted,
|
|
8960
|
-
fontSize: theme.typography.fontSize.sm,
|
|
8961
|
-
lineHeight: theme.typography.lineHeight.normal
|
|
8962
|
-
};
|
|
8963
|
-
}
|
|
8964
|
-
function detailGridStyle(theme) {
|
|
8965
|
-
return {
|
|
8966
|
-
display: "grid",
|
|
8967
|
-
gap: theme.space[1],
|
|
8968
|
-
margin: 0,
|
|
8969
|
-
paddingTop: theme.space[2],
|
|
8970
|
-
borderTop: `1px solid ${theme.semantic.intent.info.border}`
|
|
8971
|
-
};
|
|
8972
|
-
}
|
|
8973
|
-
function detailLabelStyle(theme) {
|
|
8974
|
-
return {
|
|
8975
|
-
color: theme.semantic.text.muted,
|
|
8976
|
-
fontSize: theme.typography.fontSize.xs,
|
|
8977
|
-
minWidth: 0
|
|
8978
|
-
};
|
|
8979
|
-
}
|
|
8980
|
-
function detailValueStyle(theme) {
|
|
8981
|
-
return {
|
|
8982
|
-
margin: 0,
|
|
8983
|
-
color: theme.semantic.text.primary,
|
|
8984
|
-
fontFamily: theme.typography.fontFamily.tabular,
|
|
8985
|
-
fontSize: theme.typography.fontSize.xs,
|
|
8986
|
-
fontWeight: theme.typography.fontWeight.bold,
|
|
8987
|
-
textAlign: "right",
|
|
8988
|
-
minWidth: 0
|
|
8989
|
-
};
|
|
8990
|
-
}
|
|
8991
|
-
function emptyStyle(theme) {
|
|
8992
|
-
return {
|
|
8993
|
-
margin: 0,
|
|
8994
|
-
color: theme.semantic.text.muted,
|
|
8995
|
-
fontSize: theme.typography.fontSize.sm
|
|
8996
|
-
};
|
|
8997
|
-
}
|
|
8998
|
-
function moreStyle(theme) {
|
|
8999
|
-
return {
|
|
9000
|
-
display: "inline-flex",
|
|
9001
|
-
alignItems: "center",
|
|
9002
|
-
gap: theme.space[1],
|
|
9003
|
-
color: theme.semantic.text.muted,
|
|
9004
|
-
fontSize: theme.typography.fontSize.xs
|
|
9005
|
-
};
|
|
9006
|
-
}
|
|
9007
|
-
|
|
9008
8774
|
// src/ui/components/board/NetworkGraph.tsx
|
|
9009
8775
|
import { useMemo as useMemo11 } from "react";
|
|
9010
8776
|
import { clsx as clsx16 } from "clsx";
|
|
@@ -9025,7 +8791,7 @@ function handleKeyboardActivation(event, onActivate, options) {
|
|
|
9025
8791
|
}
|
|
9026
8792
|
|
|
9027
8793
|
// src/ui/components/board/NetworkGraph.tsx
|
|
9028
|
-
import { Fragment as Fragment5, jsx as
|
|
8794
|
+
import { Fragment as Fragment5, jsx as jsx38, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
9029
8795
|
var EMPTY_NETWORK_EDGES = [];
|
|
9030
8796
|
var EMPTY_NETWORK_PIECES = [];
|
|
9031
8797
|
function DefaultNetworkNode({
|
|
@@ -9046,7 +8812,7 @@ function DefaultNetworkNode({
|
|
|
9046
8812
|
const effectiveStroke = isSelected ? "#60a5fa" : isHighlighted ? "#4ade80" : stroke;
|
|
9047
8813
|
const effectiveStrokeWidth = isSelected || isHighlighted ? 3 : strokeWidth;
|
|
9048
8814
|
const displayLabel = label ? label.length > maxLabelLength ? label.slice(0, maxLabelLength - 1) + "\u2026" : label : void 0;
|
|
9049
|
-
return /* @__PURE__ */
|
|
8815
|
+
return /* @__PURE__ */ jsxs21(
|
|
9050
8816
|
"g",
|
|
9051
8817
|
{
|
|
9052
8818
|
onClick,
|
|
@@ -9062,7 +8828,7 @@ function DefaultNetworkNode({
|
|
|
9062
8828
|
tabIndex: onClick ? 0 : void 0,
|
|
9063
8829
|
"aria-label": onClick ? label ?? "Network node" : void 0,
|
|
9064
8830
|
children: [
|
|
9065
|
-
/* @__PURE__ */
|
|
8831
|
+
/* @__PURE__ */ jsx38(
|
|
9066
8832
|
"circle",
|
|
9067
8833
|
{
|
|
9068
8834
|
r: radius,
|
|
@@ -9071,7 +8837,7 @@ function DefaultNetworkNode({
|
|
|
9071
8837
|
strokeWidth: effectiveStrokeWidth
|
|
9072
8838
|
}
|
|
9073
8839
|
),
|
|
9074
|
-
displayLabel && /* @__PURE__ */
|
|
8840
|
+
displayLabel && /* @__PURE__ */ jsx38(
|
|
9075
8841
|
"text",
|
|
9076
8842
|
{
|
|
9077
8843
|
textAnchor: "middle",
|
|
@@ -9103,7 +8869,7 @@ function DefaultNetworkEdge({
|
|
|
9103
8869
|
const effectiveWidth = isSelected || isHighlighted ? strokeWidth + 2 : strokeWidth;
|
|
9104
8870
|
const midX = (from.x + to.x) / 2;
|
|
9105
8871
|
const midY = (from.y + to.y) / 2;
|
|
9106
|
-
return /* @__PURE__ */
|
|
8872
|
+
return /* @__PURE__ */ jsxs21(
|
|
9107
8873
|
"g",
|
|
9108
8874
|
{
|
|
9109
8875
|
onClick,
|
|
@@ -9119,7 +8885,7 @@ function DefaultNetworkEdge({
|
|
|
9119
8885
|
tabIndex: onClick ? 0 : void 0,
|
|
9120
8886
|
"aria-label": onClick ? label !== void 0 ? `Network edge ${label}` : "Network edge" : void 0,
|
|
9121
8887
|
children: [
|
|
9122
|
-
/* @__PURE__ */
|
|
8888
|
+
/* @__PURE__ */ jsx38(
|
|
9123
8889
|
"line",
|
|
9124
8890
|
{
|
|
9125
8891
|
x1: from.x,
|
|
@@ -9131,8 +8897,8 @@ function DefaultNetworkEdge({
|
|
|
9131
8897
|
strokeLinecap: "round"
|
|
9132
8898
|
}
|
|
9133
8899
|
),
|
|
9134
|
-
label !== void 0 && /* @__PURE__ */
|
|
9135
|
-
/* @__PURE__ */
|
|
8900
|
+
label !== void 0 && /* @__PURE__ */ jsxs21(Fragment5, { children: [
|
|
8901
|
+
/* @__PURE__ */ jsx38(
|
|
9136
8902
|
"circle",
|
|
9137
8903
|
{
|
|
9138
8904
|
cx: midX,
|
|
@@ -9143,7 +8909,7 @@ function DefaultNetworkEdge({
|
|
|
9143
8909
|
strokeWidth: 1
|
|
9144
8910
|
}
|
|
9145
8911
|
),
|
|
9146
|
-
/* @__PURE__ */
|
|
8912
|
+
/* @__PURE__ */ jsx38(
|
|
9147
8913
|
"text",
|
|
9148
8914
|
{
|
|
9149
8915
|
x: midX,
|
|
@@ -9168,7 +8934,7 @@ function DefaultNetworkPiece({
|
|
|
9168
8934
|
onClick,
|
|
9169
8935
|
className
|
|
9170
8936
|
}) {
|
|
9171
|
-
return /* @__PURE__ */
|
|
8937
|
+
return /* @__PURE__ */ jsx38(
|
|
9172
8938
|
"g",
|
|
9173
8939
|
{
|
|
9174
8940
|
onClick,
|
|
@@ -9177,7 +8943,7 @@ function DefaultNetworkPiece({
|
|
|
9177
8943
|
role: onClick ? "button" : void 0,
|
|
9178
8944
|
tabIndex: onClick ? 0 : void 0,
|
|
9179
8945
|
"aria-label": onClick ? "Network piece" : void 0,
|
|
9180
|
-
children: shape === "square" ? /* @__PURE__ */
|
|
8946
|
+
children: shape === "square" ? /* @__PURE__ */ jsx38(
|
|
9181
8947
|
"rect",
|
|
9182
8948
|
{
|
|
9183
8949
|
x: -radius,
|
|
@@ -9188,7 +8954,7 @@ function DefaultNetworkPiece({
|
|
|
9188
8954
|
stroke: "white",
|
|
9189
8955
|
strokeWidth: 1.5
|
|
9190
8956
|
}
|
|
9191
|
-
) : /* @__PURE__ */
|
|
8957
|
+
) : /* @__PURE__ */ jsx38("circle", { r: radius, fill: color, stroke: "white", strokeWidth: 1.5 })
|
|
9192
8958
|
}
|
|
9193
8959
|
);
|
|
9194
8960
|
}
|
|
@@ -9255,7 +9021,7 @@ function NetworkGraph({
|
|
|
9255
9021
|
const viewBoxX = viewBoxParts[0] ?? 0;
|
|
9256
9022
|
const viewBoxY = viewBoxParts[1] ?? 0;
|
|
9257
9023
|
const viewBoxHeight = viewBoxParts[3] ?? 0;
|
|
9258
|
-
return /* @__PURE__ */
|
|
9024
|
+
return /* @__PURE__ */ jsxs21(
|
|
9259
9025
|
"svg",
|
|
9260
9026
|
{
|
|
9261
9027
|
width,
|
|
@@ -9272,11 +9038,11 @@ function NetworkGraph({
|
|
|
9272
9038
|
role: "img",
|
|
9273
9039
|
"aria-label": "Network graph",
|
|
9274
9040
|
children: [
|
|
9275
|
-
/* @__PURE__ */
|
|
9041
|
+
/* @__PURE__ */ jsx38("g", { className: "network-edges", role: "list", "aria-label": "Network connections", children: edges.map((edge) => {
|
|
9276
9042
|
const fromNode = nodeMap[edge.from];
|
|
9277
9043
|
const toNode = nodeMap[edge.to];
|
|
9278
9044
|
if (!fromNode || !toNode) return null;
|
|
9279
|
-
return /* @__PURE__ */
|
|
9045
|
+
return /* @__PURE__ */ jsx38(
|
|
9280
9046
|
"g",
|
|
9281
9047
|
{
|
|
9282
9048
|
role: "listitem",
|
|
@@ -9286,9 +9052,9 @@ function NetworkGraph({
|
|
|
9286
9052
|
edge.id
|
|
9287
9053
|
);
|
|
9288
9054
|
}) }),
|
|
9289
|
-
/* @__PURE__ */
|
|
9055
|
+
/* @__PURE__ */ jsx38("g", { className: "network-nodes", role: "list", "aria-label": "Network nodes", children: nodes.map((node) => {
|
|
9290
9056
|
const nodePieces = piecesByNode[node.id] ?? [];
|
|
9291
|
-
return /* @__PURE__ */
|
|
9057
|
+
return /* @__PURE__ */ jsxs21(
|
|
9292
9058
|
"g",
|
|
9293
9059
|
{
|
|
9294
9060
|
transform: `translate(${node.position.x}, ${node.position.y})`,
|
|
@@ -9296,11 +9062,11 @@ function NetworkGraph({
|
|
|
9296
9062
|
"aria-label": node.label ?? node.id,
|
|
9297
9063
|
children: [
|
|
9298
9064
|
renderNode(node, nodePieces),
|
|
9299
|
-
nodePieces.length > 0 && /* @__PURE__ */
|
|
9065
|
+
nodePieces.length > 0 && /* @__PURE__ */ jsx38("g", { className: "node-pieces", children: nodePieces.map((piece, i) => {
|
|
9300
9066
|
const angle = i / nodePieces.length * 2 * Math.PI - Math.PI / 2;
|
|
9301
9067
|
const pieceX = Math.cos(angle) * (nodeRadius + 8);
|
|
9302
9068
|
const pieceY = Math.sin(angle) * (nodeRadius + 8);
|
|
9303
|
-
return /* @__PURE__ */
|
|
9069
|
+
return /* @__PURE__ */ jsx38(
|
|
9304
9070
|
"g",
|
|
9305
9071
|
{
|
|
9306
9072
|
transform: `translate(${pieceX}, ${pieceY})`,
|
|
@@ -9314,12 +9080,12 @@ function NetworkGraph({
|
|
|
9314
9080
|
node.id
|
|
9315
9081
|
);
|
|
9316
9082
|
}) }),
|
|
9317
|
-
enablePanZoom && transform.zoom !== 1 && /* @__PURE__ */
|
|
9083
|
+
enablePanZoom && transform.zoom !== 1 && /* @__PURE__ */ jsxs21(
|
|
9318
9084
|
"g",
|
|
9319
9085
|
{
|
|
9320
9086
|
transform: `translate(${viewBoxX + 10}, ${viewBoxY + viewBoxHeight - 30})`,
|
|
9321
9087
|
children: [
|
|
9322
|
-
/* @__PURE__ */
|
|
9088
|
+
/* @__PURE__ */ jsx38(
|
|
9323
9089
|
"rect",
|
|
9324
9090
|
{
|
|
9325
9091
|
x: 0,
|
|
@@ -9330,7 +9096,7 @@ function NetworkGraph({
|
|
|
9330
9096
|
fill: "rgba(0,0,0,0.6)"
|
|
9331
9097
|
}
|
|
9332
9098
|
),
|
|
9333
|
-
/* @__PURE__ */
|
|
9099
|
+
/* @__PURE__ */ jsxs21("text", { x: 30, y: 14, textAnchor: "middle", fill: "white", fontSize: 12, children: [
|
|
9334
9100
|
Math.round(transform.zoom * 100),
|
|
9335
9101
|
"%"
|
|
9336
9102
|
] })
|
|
@@ -9345,7 +9111,7 @@ function NetworkGraph({
|
|
|
9345
9111
|
// src/ui/components/board/ZoneMap.tsx
|
|
9346
9112
|
import { useMemo as useMemo12 } from "react";
|
|
9347
9113
|
import { clsx as clsx17 } from "clsx";
|
|
9348
|
-
import { jsx as
|
|
9114
|
+
import { jsx as jsx39, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
9349
9115
|
var HIGHLIGHT_COLORS = {
|
|
9350
9116
|
valid: "rgba(34, 197, 94, 0.4)",
|
|
9351
9117
|
// Green
|
|
@@ -9398,7 +9164,7 @@ function DefaultZone({
|
|
|
9398
9164
|
switch (zone.shape.type) {
|
|
9399
9165
|
case "polygon":
|
|
9400
9166
|
if (!zone.shape.points) return null;
|
|
9401
|
-
return /* @__PURE__ */
|
|
9167
|
+
return /* @__PURE__ */ jsx39(
|
|
9402
9168
|
"polygon",
|
|
9403
9169
|
{
|
|
9404
9170
|
points: zone.shape.points.map((p) => `${p.x},${p.y}`).join(" "),
|
|
@@ -9409,7 +9175,7 @@ function DefaultZone({
|
|
|
9409
9175
|
);
|
|
9410
9176
|
case "path":
|
|
9411
9177
|
if (!zone.shape.path) return null;
|
|
9412
|
-
return /* @__PURE__ */
|
|
9178
|
+
return /* @__PURE__ */ jsx39(
|
|
9413
9179
|
"path",
|
|
9414
9180
|
{
|
|
9415
9181
|
d: zone.shape.path,
|
|
@@ -9420,7 +9186,7 @@ function DefaultZone({
|
|
|
9420
9186
|
);
|
|
9421
9187
|
case "circle":
|
|
9422
9188
|
if (!zone.shape.center) return null;
|
|
9423
|
-
return /* @__PURE__ */
|
|
9189
|
+
return /* @__PURE__ */ jsx39(
|
|
9424
9190
|
"circle",
|
|
9425
9191
|
{
|
|
9426
9192
|
cx: zone.shape.center.x,
|
|
@@ -9435,7 +9201,7 @@ function DefaultZone({
|
|
|
9435
9201
|
return null;
|
|
9436
9202
|
}
|
|
9437
9203
|
};
|
|
9438
|
-
return /* @__PURE__ */
|
|
9204
|
+
return /* @__PURE__ */ jsxs22(
|
|
9439
9205
|
"g",
|
|
9440
9206
|
{
|
|
9441
9207
|
onClick,
|
|
@@ -9448,7 +9214,7 @@ function DefaultZone({
|
|
|
9448
9214
|
tabIndex: onClick ? 0 : void 0,
|
|
9449
9215
|
children: [
|
|
9450
9216
|
renderShape(),
|
|
9451
|
-
showLabel && zone.shape?.center && /* @__PURE__ */
|
|
9217
|
+
showLabel && zone.shape?.center && /* @__PURE__ */ jsx39(
|
|
9452
9218
|
"text",
|
|
9453
9219
|
{
|
|
9454
9220
|
x: zone.shape.center.x,
|
|
@@ -9462,7 +9228,7 @@ function DefaultZone({
|
|
|
9462
9228
|
children: zone.name
|
|
9463
9229
|
}
|
|
9464
9230
|
),
|
|
9465
|
-
showValue && zone.value !== void 0 && zone.shape?.center && /* @__PURE__ */
|
|
9231
|
+
showValue && zone.value !== void 0 && zone.shape?.center && /* @__PURE__ */ jsxs22(
|
|
9466
9232
|
"text",
|
|
9467
9233
|
{
|
|
9468
9234
|
x: zone.shape.center.x,
|
|
@@ -9508,19 +9274,19 @@ function DefaultZonePieces({
|
|
|
9508
9274
|
});
|
|
9509
9275
|
const owners = Object.keys(piecesByOwner);
|
|
9510
9276
|
const startOffset = -((owners.length - 1) * spacing) / 2;
|
|
9511
|
-
return /* @__PURE__ */
|
|
9277
|
+
return /* @__PURE__ */ jsx39("g", { className: clsx17("zone-pieces", className), children: owners.map((owner, i) => {
|
|
9512
9278
|
const ownerPieces = piecesByOwner[owner] || [];
|
|
9513
9279
|
const totalCount = ownerPieces.reduce(
|
|
9514
9280
|
(sum, p) => sum + (p.count || 1),
|
|
9515
9281
|
0
|
|
9516
9282
|
);
|
|
9517
9283
|
const offsetX = startOffset + i * spacing;
|
|
9518
|
-
return /* @__PURE__ */
|
|
9284
|
+
return /* @__PURE__ */ jsxs22(
|
|
9519
9285
|
"g",
|
|
9520
9286
|
{
|
|
9521
9287
|
transform: `translate(${centerX + offsetX}, ${centerY + yOffset})`,
|
|
9522
9288
|
children: [
|
|
9523
|
-
/* @__PURE__ */
|
|
9289
|
+
/* @__PURE__ */ jsx39(
|
|
9524
9290
|
"circle",
|
|
9525
9291
|
{
|
|
9526
9292
|
r: radius,
|
|
@@ -9529,7 +9295,7 @@ function DefaultZonePieces({
|
|
|
9529
9295
|
strokeWidth: 2
|
|
9530
9296
|
}
|
|
9531
9297
|
),
|
|
9532
|
-
/* @__PURE__ */
|
|
9298
|
+
/* @__PURE__ */ jsx39(
|
|
9533
9299
|
"text",
|
|
9534
9300
|
{
|
|
9535
9301
|
textAnchor: "middle",
|
|
@@ -9556,7 +9322,7 @@ function DefaultZonePiece({
|
|
|
9556
9322
|
className
|
|
9557
9323
|
}) {
|
|
9558
9324
|
const count = piece.count || 1;
|
|
9559
|
-
return /* @__PURE__ */
|
|
9325
|
+
return /* @__PURE__ */ jsxs22(
|
|
9560
9326
|
"g",
|
|
9561
9327
|
{
|
|
9562
9328
|
transform: `translate(${x}, ${y})`,
|
|
@@ -9570,8 +9336,8 @@ function DefaultZonePiece({
|
|
|
9570
9336
|
tabIndex: onClick ? 0 : void 0,
|
|
9571
9337
|
"aria-label": `Piece ${piece.id}`,
|
|
9572
9338
|
children: [
|
|
9573
|
-
/* @__PURE__ */
|
|
9574
|
-
/* @__PURE__ */
|
|
9339
|
+
/* @__PURE__ */ jsx39("circle", { r: radius, fill: color, stroke: "white", strokeWidth: 2 }),
|
|
9340
|
+
/* @__PURE__ */ jsx39(
|
|
9575
9341
|
"text",
|
|
9576
9342
|
{
|
|
9577
9343
|
textAnchor: "middle",
|
|
@@ -9624,7 +9390,7 @@ function ZoneMap({
|
|
|
9624
9390
|
const viewBoxHeight = baseHeight / transform.zoom;
|
|
9625
9391
|
const viewBoxX = (baseWidth - viewBoxWidth) / 2 - transform.pan.x;
|
|
9626
9392
|
const viewBoxY = (baseHeight - viewBoxHeight) / 2 - transform.pan.y;
|
|
9627
|
-
return /* @__PURE__ */
|
|
9393
|
+
return /* @__PURE__ */ jsxs22(
|
|
9628
9394
|
"svg",
|
|
9629
9395
|
{
|
|
9630
9396
|
width,
|
|
@@ -9641,17 +9407,17 @@ function ZoneMap({
|
|
|
9641
9407
|
role: "img",
|
|
9642
9408
|
"aria-label": "Zone map",
|
|
9643
9409
|
children: [
|
|
9644
|
-
backgroundImage && /* @__PURE__ */
|
|
9645
|
-
/* @__PURE__ */
|
|
9410
|
+
backgroundImage && /* @__PURE__ */ jsx39("image", { href: backgroundImage, width, height }),
|
|
9411
|
+
/* @__PURE__ */ jsx39("g", { className: "zones", role: "list", "aria-label": "Map zones", children: zones.map((zone) => {
|
|
9646
9412
|
const zonePieces = piecesByZone[zone.id] || [];
|
|
9647
|
-
return /* @__PURE__ */
|
|
9413
|
+
return /* @__PURE__ */ jsx39("g", { children: renderZone(zone, zonePieces) }, zone.id);
|
|
9648
9414
|
}) }),
|
|
9649
|
-
enablePanZoom && transform.zoom !== 1 && /* @__PURE__ */
|
|
9415
|
+
enablePanZoom && transform.zoom !== 1 && /* @__PURE__ */ jsxs22(
|
|
9650
9416
|
"g",
|
|
9651
9417
|
{
|
|
9652
9418
|
transform: `translate(${viewBoxX + 10}, ${viewBoxY + viewBoxHeight - 30})`,
|
|
9653
9419
|
children: [
|
|
9654
|
-
/* @__PURE__ */
|
|
9420
|
+
/* @__PURE__ */ jsx39(
|
|
9655
9421
|
"rect",
|
|
9656
9422
|
{
|
|
9657
9423
|
x: 0,
|
|
@@ -9662,7 +9428,7 @@ function ZoneMap({
|
|
|
9662
9428
|
fill: "rgba(0,0,0,0.6)"
|
|
9663
9429
|
}
|
|
9664
9430
|
),
|
|
9665
|
-
/* @__PURE__ */
|
|
9431
|
+
/* @__PURE__ */ jsxs22("text", { x: 30, y: 14, textAnchor: "middle", fill: "white", fontSize: 12, children: [
|
|
9666
9432
|
Math.round(transform.zoom * 100),
|
|
9667
9433
|
"%"
|
|
9668
9434
|
] })
|
|
@@ -9677,7 +9443,7 @@ function ZoneMap({
|
|
|
9677
9443
|
// src/ui/components/board/TrackBoard.tsx
|
|
9678
9444
|
import { useMemo as useMemo13 } from "react";
|
|
9679
9445
|
import { clsx as clsx18 } from "clsx";
|
|
9680
|
-
import { jsx as
|
|
9446
|
+
import { jsx as jsx40, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
9681
9447
|
function DefaultTrackSpace({
|
|
9682
9448
|
space,
|
|
9683
9449
|
size = 50,
|
|
@@ -9696,7 +9462,7 @@ function DefaultTrackSpace({
|
|
|
9696
9462
|
const computedFill = isHighlighted ? "rgba(59, 130, 246, 0.3)" : fill;
|
|
9697
9463
|
const computedStroke = isSelected ? "#3b82f6" : isHighlighted ? "#60a5fa" : stroke;
|
|
9698
9464
|
const computedStrokeWidth = isHighlighted || isSelected ? 3 : strokeWidth;
|
|
9699
|
-
return /* @__PURE__ */
|
|
9465
|
+
return /* @__PURE__ */ jsxs23(
|
|
9700
9466
|
"g",
|
|
9701
9467
|
{
|
|
9702
9468
|
onClick,
|
|
@@ -9708,7 +9474,7 @@ function DefaultTrackSpace({
|
|
|
9708
9474
|
"aria-label": space.name || `Space ${space.index}`,
|
|
9709
9475
|
tabIndex: onClick ? 0 : void 0,
|
|
9710
9476
|
children: [
|
|
9711
|
-
/* @__PURE__ */
|
|
9477
|
+
/* @__PURE__ */ jsx40(
|
|
9712
9478
|
"rect",
|
|
9713
9479
|
{
|
|
9714
9480
|
x: -halfSize,
|
|
@@ -9721,7 +9487,7 @@ function DefaultTrackSpace({
|
|
|
9721
9487
|
strokeWidth: computedStrokeWidth
|
|
9722
9488
|
}
|
|
9723
9489
|
),
|
|
9724
|
-
space.name ? /* @__PURE__ */
|
|
9490
|
+
space.name ? /* @__PURE__ */ jsx40(
|
|
9725
9491
|
"text",
|
|
9726
9492
|
{
|
|
9727
9493
|
textAnchor: "middle",
|
|
@@ -9731,7 +9497,7 @@ function DefaultTrackSpace({
|
|
|
9731
9497
|
fontWeight: "bold",
|
|
9732
9498
|
children: space.name.length > 8 ? space.name.slice(0, 7) + "\u2026" : space.name
|
|
9733
9499
|
}
|
|
9734
|
-
) : /* @__PURE__ */
|
|
9500
|
+
) : /* @__PURE__ */ jsx40(
|
|
9735
9501
|
"text",
|
|
9736
9502
|
{
|
|
9737
9503
|
textAnchor: "middle",
|
|
@@ -9742,9 +9508,9 @@ function DefaultTrackSpace({
|
|
|
9742
9508
|
children: space.index
|
|
9743
9509
|
}
|
|
9744
9510
|
),
|
|
9745
|
-
showJumpIndicator && space.jumpTo && /* @__PURE__ */
|
|
9746
|
-
/* @__PURE__ */
|
|
9747
|
-
/* @__PURE__ */
|
|
9511
|
+
showJumpIndicator && space.jumpTo && /* @__PURE__ */ jsxs23("g", { transform: `translate(${halfSize - 6}, ${-halfSize + 6})`, children: [
|
|
9512
|
+
/* @__PURE__ */ jsx40("circle", { r: 6, fill: "#fbbf24" }),
|
|
9513
|
+
/* @__PURE__ */ jsx40(
|
|
9748
9514
|
"text",
|
|
9749
9515
|
{
|
|
9750
9516
|
textAnchor: "middle",
|
|
@@ -9775,7 +9541,7 @@ function DefaultTrackPiece({
|
|
|
9775
9541
|
const offset = total > 1 ? spacing : 0;
|
|
9776
9542
|
const px = Math.cos(angle) * offset;
|
|
9777
9543
|
const py = Math.sin(angle) * offset;
|
|
9778
|
-
return /* @__PURE__ */
|
|
9544
|
+
return /* @__PURE__ */ jsx40(
|
|
9779
9545
|
"circle",
|
|
9780
9546
|
{
|
|
9781
9547
|
cx: px,
|
|
@@ -9803,7 +9569,7 @@ function DefaultTrackConnection({
|
|
|
9803
9569
|
strokeWidth = 2,
|
|
9804
9570
|
className
|
|
9805
9571
|
}) {
|
|
9806
|
-
return /* @__PURE__ */
|
|
9572
|
+
return /* @__PURE__ */ jsx40(
|
|
9807
9573
|
"line",
|
|
9808
9574
|
{
|
|
9809
9575
|
x1: from.x,
|
|
@@ -9838,8 +9604,8 @@ function DefaultTrackJump({
|
|
|
9838
9604
|
const endX = to.x - unitX * (spaceSize / 2 + 5);
|
|
9839
9605
|
const endY = to.y - unitY * (spaceSize / 2 + 5);
|
|
9840
9606
|
const markerId = `arrow-${isUp ? "up" : "down"}-${from.x}-${from.y}`;
|
|
9841
|
-
return /* @__PURE__ */
|
|
9842
|
-
/* @__PURE__ */
|
|
9607
|
+
return /* @__PURE__ */ jsxs23("g", { className, children: [
|
|
9608
|
+
/* @__PURE__ */ jsx40("defs", { children: /* @__PURE__ */ jsx40(
|
|
9843
9609
|
"marker",
|
|
9844
9610
|
{
|
|
9845
9611
|
id: markerId,
|
|
@@ -9848,10 +9614,10 @@ function DefaultTrackJump({
|
|
|
9848
9614
|
refX: "9",
|
|
9849
9615
|
refY: "3.5",
|
|
9850
9616
|
orient: "auto",
|
|
9851
|
-
children: /* @__PURE__ */
|
|
9617
|
+
children: /* @__PURE__ */ jsx40("polygon", { points: "0 0, 10 3.5, 0 7", fill: color })
|
|
9852
9618
|
}
|
|
9853
9619
|
) }),
|
|
9854
|
-
/* @__PURE__ */
|
|
9620
|
+
/* @__PURE__ */ jsx40(
|
|
9855
9621
|
"line",
|
|
9856
9622
|
{
|
|
9857
9623
|
x1: startX,
|
|
@@ -9915,7 +9681,7 @@ function TrackBoard({
|
|
|
9915
9681
|
return nextSpaceIds.map((nextId) => {
|
|
9916
9682
|
const targetSpace = spaceMap.get(nextId);
|
|
9917
9683
|
if (!targetSpace) return null;
|
|
9918
|
-
return /* @__PURE__ */
|
|
9684
|
+
return /* @__PURE__ */ jsx40("g", { children: renderConnection(
|
|
9919
9685
|
space.position,
|
|
9920
9686
|
targetSpace.position,
|
|
9921
9687
|
space,
|
|
@@ -9932,7 +9698,7 @@ function TrackBoard({
|
|
|
9932
9698
|
if (!targetSpace) return [];
|
|
9933
9699
|
const isUp = targetSpace.index > space.index;
|
|
9934
9700
|
return [
|
|
9935
|
-
/* @__PURE__ */
|
|
9701
|
+
/* @__PURE__ */ jsx40("g", { children: renderJump(
|
|
9936
9702
|
space.position,
|
|
9937
9703
|
targetSpace.position,
|
|
9938
9704
|
space,
|
|
@@ -9948,7 +9714,7 @@ function TrackBoard({
|
|
|
9948
9714
|
const viewBoxHeight = baseHeight / transform.zoom;
|
|
9949
9715
|
const viewBoxX = (baseWidth - viewBoxWidth) / 2 - transform.pan.x;
|
|
9950
9716
|
const viewBoxY = (baseHeight - viewBoxHeight) / 2 - transform.pan.y;
|
|
9951
|
-
return /* @__PURE__ */
|
|
9717
|
+
return /* @__PURE__ */ jsxs23(
|
|
9952
9718
|
"svg",
|
|
9953
9719
|
{
|
|
9954
9720
|
width,
|
|
@@ -9965,11 +9731,11 @@ function TrackBoard({
|
|
|
9965
9731
|
role: "img",
|
|
9966
9732
|
"aria-label": "Track board",
|
|
9967
9733
|
children: [
|
|
9968
|
-
/* @__PURE__ */
|
|
9969
|
-
/* @__PURE__ */
|
|
9970
|
-
/* @__PURE__ */
|
|
9734
|
+
/* @__PURE__ */ jsx40("g", { className: "track-connections", children: renderConnections() }),
|
|
9735
|
+
/* @__PURE__ */ jsx40("g", { className: "track-jumps", children: renderJumps() }),
|
|
9736
|
+
/* @__PURE__ */ jsx40("g", { className: "track-spaces", role: "list", "aria-label": "Track spaces", children: spaces.map((space) => {
|
|
9971
9737
|
const spacePieces = piecesBySpace[space.id] || [];
|
|
9972
|
-
return /* @__PURE__ */
|
|
9738
|
+
return /* @__PURE__ */ jsx40(
|
|
9973
9739
|
"g",
|
|
9974
9740
|
{
|
|
9975
9741
|
transform: `translate(${space.position.x}, ${space.position.y})`,
|
|
@@ -9978,12 +9744,12 @@ function TrackBoard({
|
|
|
9978
9744
|
space.id
|
|
9979
9745
|
);
|
|
9980
9746
|
}) }),
|
|
9981
|
-
enablePanZoom && transform.zoom !== 1 && /* @__PURE__ */
|
|
9747
|
+
enablePanZoom && transform.zoom !== 1 && /* @__PURE__ */ jsxs23(
|
|
9982
9748
|
"g",
|
|
9983
9749
|
{
|
|
9984
9750
|
transform: `translate(${viewBoxX + 10}, ${viewBoxY + viewBoxHeight - 30})`,
|
|
9985
9751
|
children: [
|
|
9986
|
-
/* @__PURE__ */
|
|
9752
|
+
/* @__PURE__ */ jsx40(
|
|
9987
9753
|
"rect",
|
|
9988
9754
|
{
|
|
9989
9755
|
x: 0,
|
|
@@ -9994,7 +9760,7 @@ function TrackBoard({
|
|
|
9994
9760
|
fill: "rgba(0,0,0,0.6)"
|
|
9995
9761
|
}
|
|
9996
9762
|
),
|
|
9997
|
-
/* @__PURE__ */
|
|
9763
|
+
/* @__PURE__ */ jsxs23("text", { x: 30, y: 14, textAnchor: "middle", fill: "white", fontSize: 12, children: [
|
|
9998
9764
|
Math.round(transform.zoom * 100),
|
|
9999
9765
|
"%"
|
|
10000
9766
|
] })
|
|
@@ -10010,7 +9776,7 @@ function TrackBoard({
|
|
|
10010
9776
|
import { useMemo as useMemo14 } from "react";
|
|
10011
9777
|
import { clsx as clsx19 } from "clsx";
|
|
10012
9778
|
import { Users, Lock, Gift, Coins } from "lucide-react";
|
|
10013
|
-
import { jsx as
|
|
9779
|
+
import { jsx as jsx41, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
10014
9780
|
var EMPTY_SLOT_OCCUPANTS = [];
|
|
10015
9781
|
function DefaultSlotItem({
|
|
10016
9782
|
name,
|
|
@@ -10034,7 +9800,7 @@ function DefaultSlotItem({
|
|
|
10034
9800
|
const borderColor = isSelected ? theme.semantic.intent.primary.border : isFull ? theme.semantic.border.strong : isAvailable ? theme.semantic.border.default : theme.semantic.border.subtle;
|
|
10035
9801
|
const background = isSelected ? theme.semantic.intent.primary.soft : isFull ? theme.semantic.surface.inset : theme.semantic.surface.card;
|
|
10036
9802
|
const ringColor = isSelected ? theme.semantic.intent.primary.border : isHighlighted ? theme.semantic.intent.warning.border : void 0;
|
|
10037
|
-
return /* @__PURE__ */
|
|
9803
|
+
return /* @__PURE__ */ jsxs24(
|
|
10038
9804
|
"div",
|
|
10039
9805
|
{
|
|
10040
9806
|
onClick: isAvailable ? onClick : void 0,
|
|
@@ -10056,9 +9822,9 @@ function DefaultSlotItem({
|
|
|
10056
9822
|
"aria-disabled": !isAvailable,
|
|
10057
9823
|
tabIndex: isAvailable && onClick ? 0 : void 0,
|
|
10058
9824
|
children: [
|
|
10059
|
-
/* @__PURE__ */
|
|
10060
|
-
/* @__PURE__ */
|
|
10061
|
-
/* @__PURE__ */
|
|
9825
|
+
/* @__PURE__ */ jsxs24("div", { className: "flex items-start justify-between gap-2", children: [
|
|
9826
|
+
/* @__PURE__ */ jsxs24("div", { children: [
|
|
9827
|
+
/* @__PURE__ */ jsx41(
|
|
10062
9828
|
"h3",
|
|
10063
9829
|
{
|
|
10064
9830
|
className: "font-bold",
|
|
@@ -10066,7 +9832,7 @@ function DefaultSlotItem({
|
|
|
10066
9832
|
children: name
|
|
10067
9833
|
}
|
|
10068
9834
|
),
|
|
10069
|
-
description && /* @__PURE__ */
|
|
9835
|
+
description && /* @__PURE__ */ jsx41(
|
|
10070
9836
|
"p",
|
|
10071
9837
|
{
|
|
10072
9838
|
className: "text-xs mt-0.5",
|
|
@@ -10075,8 +9841,8 @@ function DefaultSlotItem({
|
|
|
10075
9841
|
}
|
|
10076
9842
|
)
|
|
10077
9843
|
] }),
|
|
10078
|
-
/* @__PURE__ */
|
|
10079
|
-
isExclusive && /* @__PURE__ */
|
|
9844
|
+
/* @__PURE__ */ jsxs24("div", { className: "flex items-center gap-1", children: [
|
|
9845
|
+
isExclusive && /* @__PURE__ */ jsx41(
|
|
10080
9846
|
Lock,
|
|
10081
9847
|
{
|
|
10082
9848
|
className: "w-4 h-4",
|
|
@@ -10084,46 +9850,46 @@ function DefaultSlotItem({
|
|
|
10084
9850
|
"aria-label": "Exclusive slot"
|
|
10085
9851
|
}
|
|
10086
9852
|
),
|
|
10087
|
-
capacity > 1 && /* @__PURE__ */
|
|
9853
|
+
capacity > 1 && /* @__PURE__ */ jsxs24(
|
|
10088
9854
|
"div",
|
|
10089
9855
|
{
|
|
10090
9856
|
className: "flex items-center gap-0.5 text-xs",
|
|
10091
9857
|
style: { color: theme.semantic.text.muted },
|
|
10092
9858
|
title: `Capacity: ${capacity}`,
|
|
10093
9859
|
children: [
|
|
10094
|
-
/* @__PURE__ */
|
|
10095
|
-
/* @__PURE__ */
|
|
9860
|
+
/* @__PURE__ */ jsx41(Users, { className: "w-3 h-3" }),
|
|
9861
|
+
/* @__PURE__ */ jsx41("span", { children: capacity })
|
|
10096
9862
|
]
|
|
10097
9863
|
}
|
|
10098
9864
|
)
|
|
10099
9865
|
] })
|
|
10100
9866
|
] }),
|
|
10101
|
-
(costLabel || rewardLabel) && /* @__PURE__ */
|
|
10102
|
-
costLabel && /* @__PURE__ */
|
|
9867
|
+
(costLabel || rewardLabel) && /* @__PURE__ */ jsxs24("div", { className: "mt-2 flex flex-wrap gap-2 text-xs", children: [
|
|
9868
|
+
costLabel && /* @__PURE__ */ jsxs24(
|
|
10103
9869
|
"div",
|
|
10104
9870
|
{
|
|
10105
9871
|
className: "flex items-center gap-1",
|
|
10106
9872
|
style: { color: theme.semantic.intent.danger.solid },
|
|
10107
9873
|
children: [
|
|
10108
|
-
/* @__PURE__ */
|
|
10109
|
-
/* @__PURE__ */
|
|
9874
|
+
/* @__PURE__ */ jsx41(Coins, { className: "w-3 h-3", "aria-hidden": "true" }),
|
|
9875
|
+
/* @__PURE__ */ jsx41("span", { children: costLabel })
|
|
10110
9876
|
]
|
|
10111
9877
|
}
|
|
10112
9878
|
),
|
|
10113
|
-
rewardLabel && /* @__PURE__ */
|
|
9879
|
+
rewardLabel && /* @__PURE__ */ jsxs24(
|
|
10114
9880
|
"div",
|
|
10115
9881
|
{
|
|
10116
9882
|
className: "flex items-center gap-1",
|
|
10117
9883
|
style: { color: theme.semantic.intent.success.solid },
|
|
10118
9884
|
children: [
|
|
10119
|
-
/* @__PURE__ */
|
|
10120
|
-
/* @__PURE__ */
|
|
9885
|
+
/* @__PURE__ */ jsx41(Gift, { className: "w-3 h-3", "aria-hidden": "true" }),
|
|
9886
|
+
/* @__PURE__ */ jsx41("span", { children: rewardLabel })
|
|
10121
9887
|
]
|
|
10122
9888
|
}
|
|
10123
9889
|
)
|
|
10124
9890
|
] }),
|
|
10125
|
-
renderOccupants && /* @__PURE__ */
|
|
10126
|
-
!isAvailable && !isFull && /* @__PURE__ */
|
|
9891
|
+
renderOccupants && /* @__PURE__ */ jsx41("div", { className: "mt-2", children: renderOccupants() }),
|
|
9892
|
+
!isAvailable && !isFull && /* @__PURE__ */ jsx41(
|
|
10127
9893
|
"div",
|
|
10128
9894
|
{
|
|
10129
9895
|
className: "mt-2 text-xs",
|
|
@@ -10143,7 +9909,7 @@ function DefaultSlotOccupant({
|
|
|
10143
9909
|
onClick,
|
|
10144
9910
|
className
|
|
10145
9911
|
}) {
|
|
10146
|
-
return /* @__PURE__ */
|
|
9912
|
+
return /* @__PURE__ */ jsx41(
|
|
10147
9913
|
"div",
|
|
10148
9914
|
{
|
|
10149
9915
|
onClick,
|
|
@@ -10171,7 +9937,7 @@ function DefaultEmptySlot({
|
|
|
10171
9937
|
className
|
|
10172
9938
|
}) {
|
|
10173
9939
|
const theme = useTheme();
|
|
10174
|
-
return /* @__PURE__ */
|
|
9940
|
+
return /* @__PURE__ */ jsx41(
|
|
10175
9941
|
"div",
|
|
10176
9942
|
{
|
|
10177
9943
|
className: clsx19("rounded-full border-2 border-dashed", className),
|
|
@@ -10226,18 +9992,18 @@ function SlotSystem({
|
|
|
10226
9992
|
}, [slots, layout]);
|
|
10227
9993
|
const renderSlotItem = (slot) => {
|
|
10228
9994
|
const slotOccupants = occupantsBySlot[slot.id] ?? [];
|
|
10229
|
-
return /* @__PURE__ */
|
|
9995
|
+
return /* @__PURE__ */ jsx41("div", { role: "listitem", "aria-label": slot.name, children: renderSlot(slot, slotOccupants) }, slot.id);
|
|
10230
9996
|
};
|
|
10231
9997
|
const responsiveGridStyle = {
|
|
10232
9998
|
display: "grid",
|
|
10233
9999
|
gridTemplateColumns: `repeat(auto-fit, minmax(${minSlotWidth}px, 1fr))`,
|
|
10234
10000
|
gap: "1rem"
|
|
10235
10001
|
};
|
|
10236
|
-
const wrapContent = (content) => /* @__PURE__ */
|
|
10002
|
+
const wrapContent = (content) => /* @__PURE__ */ jsx41("div", { style: { width, height }, className: clsx19("slot-system", className), children: content });
|
|
10237
10003
|
if (layout === "grouped" && slotGroups) {
|
|
10238
10004
|
return wrapContent(
|
|
10239
|
-
/* @__PURE__ */
|
|
10240
|
-
/* @__PURE__ */
|
|
10005
|
+
/* @__PURE__ */ jsx41("div", { className: "space-y-6", role: "list", children: Object.entries(slotGroups).map(([groupName, groupSlots]) => /* @__PURE__ */ jsxs24("div", { children: [
|
|
10006
|
+
/* @__PURE__ */ jsx41(
|
|
10241
10007
|
"h3",
|
|
10242
10008
|
{
|
|
10243
10009
|
className: "text-lg font-semibold mb-3",
|
|
@@ -10245,17 +10011,17 @@ function SlotSystem({
|
|
|
10245
10011
|
children: groupName
|
|
10246
10012
|
}
|
|
10247
10013
|
),
|
|
10248
|
-
/* @__PURE__ */
|
|
10014
|
+
/* @__PURE__ */ jsx41("div", { style: responsiveGridStyle, children: groupSlots.map(renderSlotItem) })
|
|
10249
10015
|
] }, groupName)) })
|
|
10250
10016
|
);
|
|
10251
10017
|
}
|
|
10252
10018
|
if (layout === "list") {
|
|
10253
10019
|
return wrapContent(
|
|
10254
|
-
/* @__PURE__ */
|
|
10020
|
+
/* @__PURE__ */ jsx41("div", { className: "flex flex-col gap-2", role: "list", children: slots.map(renderSlotItem) })
|
|
10255
10021
|
);
|
|
10256
10022
|
}
|
|
10257
10023
|
return wrapContent(
|
|
10258
|
-
/* @__PURE__ */
|
|
10024
|
+
/* @__PURE__ */ jsx41("div", { style: responsiveGridStyle, role: "list", children: slots.map(renderSlotItem) })
|
|
10259
10025
|
);
|
|
10260
10026
|
}
|
|
10261
10027
|
|
|
@@ -10377,7 +10143,7 @@ function isInteractiveTargetSelectable(layer, state) {
|
|
|
10377
10143
|
}
|
|
10378
10144
|
|
|
10379
10145
|
// src/ui/components/board/tiled-grid/interactive-layer.tsx
|
|
10380
|
-
import { jsx as
|
|
10146
|
+
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
10381
10147
|
function InteractiveTargetLayerGroup({
|
|
10382
10148
|
layer,
|
|
10383
10149
|
targets,
|
|
@@ -10392,7 +10158,7 @@ function InteractiveTargetLayerGroup({
|
|
|
10392
10158
|
renderTargetContent
|
|
10393
10159
|
}) {
|
|
10394
10160
|
const { hoveredTargetId, setHoveredTargetId } = hover;
|
|
10395
|
-
return /* @__PURE__ */
|
|
10161
|
+
return /* @__PURE__ */ jsx42("g", { className: groupClassName, role: "group", "aria-label": groupAriaLabel, children: targets.map((target) => {
|
|
10396
10162
|
const targetId = getTargetId(target);
|
|
10397
10163
|
const state = interactiveTargetRenderState(
|
|
10398
10164
|
layer,
|
|
@@ -10409,7 +10175,7 @@ function InteractiveTargetLayerGroup({
|
|
|
10409
10175
|
// HexGrid markup variant: browserAttributes spread first, then
|
|
10410
10176
|
// transform, role, className (preserves HexGrid's rendered
|
|
10411
10177
|
// attribute order).
|
|
10412
|
-
/* @__PURE__ */
|
|
10178
|
+
/* @__PURE__ */ jsx42(
|
|
10413
10179
|
"g",
|
|
10414
10180
|
{
|
|
10415
10181
|
...state.browserAttributes,
|
|
@@ -10435,7 +10201,7 @@ function InteractiveTargetLayerGroup({
|
|
|
10435
10201
|
// SquareGrid markup variant: transform first, then browser
|
|
10436
10202
|
// attributes, className, role (preserves SquareGrid's rendered
|
|
10437
10203
|
// attribute order while exposing semantic replay metadata).
|
|
10438
|
-
/* @__PURE__ */
|
|
10204
|
+
/* @__PURE__ */ jsx42(
|
|
10439
10205
|
"g",
|
|
10440
10206
|
{
|
|
10441
10207
|
...getTargetTransform ? { transform: getTargetTransform(target) } : {},
|
|
@@ -10467,7 +10233,7 @@ function resolveBoardProp(props, buildInlineBoard) {
|
|
|
10467
10233
|
}
|
|
10468
10234
|
|
|
10469
10235
|
// src/ui/components/board/SquareGrid.tsx
|
|
10470
|
-
import { Fragment as Fragment6, jsx as
|
|
10236
|
+
import { Fragment as Fragment6, jsx as jsx43, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
10471
10237
|
function DefaultGridCell({
|
|
10472
10238
|
size,
|
|
10473
10239
|
isLight = true,
|
|
@@ -10485,7 +10251,7 @@ function DefaultGridCell({
|
|
|
10485
10251
|
className
|
|
10486
10252
|
}) {
|
|
10487
10253
|
const baseColor = isLight ? lightColor : darkColor;
|
|
10488
|
-
return /* @__PURE__ */
|
|
10254
|
+
return /* @__PURE__ */ jsxs25(
|
|
10489
10255
|
"g",
|
|
10490
10256
|
{
|
|
10491
10257
|
onClick,
|
|
@@ -10501,8 +10267,8 @@ function DefaultGridCell({
|
|
|
10501
10267
|
tabIndex: onClick ? 0 : void 0,
|
|
10502
10268
|
"aria-label": onClick ? "Grid cell" : void 0,
|
|
10503
10269
|
children: [
|
|
10504
|
-
/* @__PURE__ */
|
|
10505
|
-
isSelected && /* @__PURE__ */
|
|
10270
|
+
/* @__PURE__ */ jsx43("rect", { width: size, height: size, fill: baseColor }),
|
|
10271
|
+
isSelected && /* @__PURE__ */ jsx43(
|
|
10506
10272
|
"rect",
|
|
10507
10273
|
{
|
|
10508
10274
|
width: size,
|
|
@@ -10511,7 +10277,7 @@ function DefaultGridCell({
|
|
|
10511
10277
|
pointerEvents: "none"
|
|
10512
10278
|
}
|
|
10513
10279
|
),
|
|
10514
|
-
isHighlighted && !isSelected && /* @__PURE__ */
|
|
10280
|
+
isHighlighted && !isSelected && /* @__PURE__ */ jsx43(
|
|
10515
10281
|
"rect",
|
|
10516
10282
|
{
|
|
10517
10283
|
width: size,
|
|
@@ -10520,7 +10286,7 @@ function DefaultGridCell({
|
|
|
10520
10286
|
pointerEvents: "none"
|
|
10521
10287
|
}
|
|
10522
10288
|
),
|
|
10523
|
-
isValidMove && !isCapture && /* @__PURE__ */
|
|
10289
|
+
isValidMove && !isCapture && /* @__PURE__ */ jsx43(
|
|
10524
10290
|
"circle",
|
|
10525
10291
|
{
|
|
10526
10292
|
cx: size / 2,
|
|
@@ -10530,7 +10296,7 @@ function DefaultGridCell({
|
|
|
10530
10296
|
pointerEvents: "none"
|
|
10531
10297
|
}
|
|
10532
10298
|
),
|
|
10533
|
-
isCapture && /* @__PURE__ */
|
|
10299
|
+
isCapture && /* @__PURE__ */ jsx43(
|
|
10534
10300
|
"circle",
|
|
10535
10301
|
{
|
|
10536
10302
|
cx: size / 2,
|
|
@@ -10558,7 +10324,7 @@ function DefaultGridPiece({
|
|
|
10558
10324
|
}) {
|
|
10559
10325
|
const radius = size * 0.38;
|
|
10560
10326
|
const effectiveStroke = strokeColor ?? (color === "#f8fafc" || color === "#ffffff" ? "#1e293b" : "#f8fafc");
|
|
10561
|
-
return /* @__PURE__ */
|
|
10327
|
+
return /* @__PURE__ */ jsxs25(
|
|
10562
10328
|
"g",
|
|
10563
10329
|
{
|
|
10564
10330
|
onClick,
|
|
@@ -10574,7 +10340,7 @@ function DefaultGridPiece({
|
|
|
10574
10340
|
tabIndex: onClick ? 0 : void 0,
|
|
10575
10341
|
"aria-label": onClick ? label ?? "Grid piece" : void 0,
|
|
10576
10342
|
children: [
|
|
10577
|
-
/* @__PURE__ */
|
|
10343
|
+
/* @__PURE__ */ jsx43(
|
|
10578
10344
|
"circle",
|
|
10579
10345
|
{
|
|
10580
10346
|
r: isDragging ? radius * 1.1 : radius,
|
|
@@ -10584,7 +10350,7 @@ function DefaultGridPiece({
|
|
|
10584
10350
|
style: { filter: "drop-shadow(1px 2px 2px rgba(0,0,0,0.4))" }
|
|
10585
10351
|
}
|
|
10586
10352
|
),
|
|
10587
|
-
label && /* @__PURE__ */
|
|
10353
|
+
label && /* @__PURE__ */ jsx43(
|
|
10588
10354
|
"text",
|
|
10589
10355
|
{
|
|
10590
10356
|
y: 4,
|
|
@@ -10629,7 +10395,7 @@ function DefaultChessPiece({
|
|
|
10629
10395
|
const symbol = CHESS_SYMBOLS[owner]?.[type] ?? "?";
|
|
10630
10396
|
const textColor = owner === "white" ? "#f8fafc" : "#1e293b";
|
|
10631
10397
|
const shadowFilter = owner === "white" ? "drop-shadow(1px 1px 1px rgba(0,0,0,0.5))" : "drop-shadow(1px 1px 1px rgba(255,255,255,0.3))";
|
|
10632
|
-
return /* @__PURE__ */
|
|
10398
|
+
return /* @__PURE__ */ jsx43(
|
|
10633
10399
|
"g",
|
|
10634
10400
|
{
|
|
10635
10401
|
onClick,
|
|
@@ -10642,7 +10408,7 @@ function DefaultChessPiece({
|
|
|
10642
10408
|
role: onClick ? "button" : void 0,
|
|
10643
10409
|
tabIndex: onClick ? 0 : void 0,
|
|
10644
10410
|
"aria-label": onClick ? `${owner} ${type}` : void 0,
|
|
10645
|
-
children: /* @__PURE__ */
|
|
10411
|
+
children: /* @__PURE__ */ jsx43(
|
|
10646
10412
|
"text",
|
|
10647
10413
|
{
|
|
10648
10414
|
textAnchor: "middle",
|
|
@@ -10899,7 +10665,7 @@ function SquareGridImpl(props) {
|
|
|
10899
10665
|
bounds: { minX: 0, minY: 0, width: totalWidth, height: totalHeight },
|
|
10900
10666
|
viewBoxMode: "static-when-disabled"
|
|
10901
10667
|
});
|
|
10902
|
-
return /* @__PURE__ */
|
|
10668
|
+
return /* @__PURE__ */ jsxs25(
|
|
10903
10669
|
"svg",
|
|
10904
10670
|
{
|
|
10905
10671
|
width: svgWidth,
|
|
@@ -10916,11 +10682,11 @@ function SquareGridImpl(props) {
|
|
|
10916
10682
|
role: "group",
|
|
10917
10683
|
"aria-label": `${rows}x${cols} game grid`,
|
|
10918
10684
|
children: [
|
|
10919
|
-
/* @__PURE__ */
|
|
10920
|
-
/* @__PURE__ */
|
|
10685
|
+
/* @__PURE__ */ jsx43("defs", { children: /* @__PURE__ */ jsx43("filter", { id: "pieceShadow", x: "-20%", y: "-20%", width: "140%", height: "140%", children: /* @__PURE__ */ jsx43("feDropShadow", { dx: "1", dy: "2", stdDeviation: "2", floodOpacity: "0.4" }) }) }),
|
|
10686
|
+
/* @__PURE__ */ jsx43("g", { className: "cells", role: "list", "aria-label": "Grid cells", children: renderableCells.map(({ row, col }) => {
|
|
10921
10687
|
const x = labelMargin + col * cellSize;
|
|
10922
10688
|
const y = row * cellSize;
|
|
10923
|
-
return /* @__PURE__ */
|
|
10689
|
+
return /* @__PURE__ */ jsx43(
|
|
10924
10690
|
"g",
|
|
10925
10691
|
{
|
|
10926
10692
|
transform: `translate(${x}, ${y})`,
|
|
@@ -10931,7 +10697,7 @@ function SquareGridImpl(props) {
|
|
|
10931
10697
|
`${row}-${col}`
|
|
10932
10698
|
);
|
|
10933
10699
|
}) }),
|
|
10934
|
-
interactiveSpaces && /* @__PURE__ */
|
|
10700
|
+
interactiveSpaces && /* @__PURE__ */ jsx43(
|
|
10935
10701
|
InteractiveTargetLayerGroup,
|
|
10936
10702
|
{
|
|
10937
10703
|
layer: interactiveSpaces,
|
|
@@ -10944,8 +10710,8 @@ function SquareGridImpl(props) {
|
|
|
10944
10710
|
selectMode: "layer-direct",
|
|
10945
10711
|
hover: spaceHover,
|
|
10946
10712
|
getTargetTransform: (space) => `translate(${labelMargin + space.col * cellSize}, ${space.row * cellSize})`,
|
|
10947
|
-
renderTargetContent: (space, state, isSelectable) => /* @__PURE__ */
|
|
10948
|
-
isSelectable && /* @__PURE__ */
|
|
10713
|
+
renderTargetContent: (space, state, isSelectable) => /* @__PURE__ */ jsxs25(Fragment6, { children: [
|
|
10714
|
+
isSelectable && /* @__PURE__ */ jsx43(
|
|
10949
10715
|
"rect",
|
|
10950
10716
|
{
|
|
10951
10717
|
x: 0,
|
|
@@ -10960,8 +10726,8 @@ function SquareGridImpl(props) {
|
|
|
10960
10726
|
] })
|
|
10961
10727
|
}
|
|
10962
10728
|
),
|
|
10963
|
-
renderEdge && resolvedEdgePositions.length > 0 && /* @__PURE__ */
|
|
10964
|
-
interactiveEdges && /* @__PURE__ */
|
|
10729
|
+
renderEdge && resolvedEdgePositions.length > 0 && /* @__PURE__ */ jsx43("g", { className: "edges", "aria-label": "Board edges", children: resolvedEdgePositions.map(({ edge, interactiveEdge }) => /* @__PURE__ */ jsx43("g", { children: renderEdge(edge, interactiveEdge.position) }, edge.id)) }),
|
|
10730
|
+
interactiveEdges && /* @__PURE__ */ jsx43(
|
|
10965
10731
|
InteractiveTargetLayerGroup,
|
|
10966
10732
|
{
|
|
10967
10733
|
layer: interactiveEdges,
|
|
@@ -10973,7 +10739,7 @@ function SquareGridImpl(props) {
|
|
|
10973
10739
|
browserAttributeOrder: "after-transform",
|
|
10974
10740
|
selectMode: "layer-direct",
|
|
10975
10741
|
hover: edgeHover,
|
|
10976
|
-
renderTargetContent: ({ interactiveEdge: edge }, state) => renderInteractiveEdge ? renderInteractiveEdge(edge, edge.position, state) : state.isEnabled && state.isEligible ? /* @__PURE__ */
|
|
10742
|
+
renderTargetContent: ({ interactiveEdge: edge }, state) => renderInteractiveEdge ? renderInteractiveEdge(edge, edge.position, state) : state.isEnabled && state.isEligible ? /* @__PURE__ */ jsx43(
|
|
10977
10743
|
"line",
|
|
10978
10744
|
{
|
|
10979
10745
|
x1: edge.position.x1,
|
|
@@ -10987,8 +10753,8 @@ function SquareGridImpl(props) {
|
|
|
10987
10753
|
) : null
|
|
10988
10754
|
}
|
|
10989
10755
|
),
|
|
10990
|
-
renderVertex && resolvedVertexPositions.length > 0 && /* @__PURE__ */
|
|
10991
|
-
interactiveVertices && /* @__PURE__ */
|
|
10756
|
+
renderVertex && resolvedVertexPositions.length > 0 && /* @__PURE__ */ jsx43("g", { className: "vertices", "aria-label": "Board vertices", children: resolvedVertexPositions.map(({ vertex, interactiveVertex }) => /* @__PURE__ */ jsx43("g", { children: renderVertex(vertex, interactiveVertex.position) }, vertex.id)) }),
|
|
10757
|
+
interactiveVertices && /* @__PURE__ */ jsx43(
|
|
10992
10758
|
InteractiveTargetLayerGroup,
|
|
10993
10759
|
{
|
|
10994
10760
|
layer: interactiveVertices,
|
|
@@ -11000,7 +10766,7 @@ function SquareGridImpl(props) {
|
|
|
11000
10766
|
browserAttributeOrder: "after-transform",
|
|
11001
10767
|
selectMode: "layer-direct",
|
|
11002
10768
|
hover: vertexHover,
|
|
11003
|
-
renderTargetContent: ({ interactiveVertex: vertex }, state) => renderInteractiveVertex ? renderInteractiveVertex(vertex, vertex.position, state) : state.isEnabled && state.isEligible ? /* @__PURE__ */
|
|
10769
|
+
renderTargetContent: ({ interactiveVertex: vertex }, state) => renderInteractiveVertex ? renderInteractiveVertex(vertex, vertex.position, state) : state.isEnabled && state.isEligible ? /* @__PURE__ */ jsx43(
|
|
11004
10770
|
"circle",
|
|
11005
10771
|
{
|
|
11006
10772
|
cx: vertex.position.x,
|
|
@@ -11012,10 +10778,10 @@ function SquareGridImpl(props) {
|
|
|
11012
10778
|
) : null
|
|
11013
10779
|
}
|
|
11014
10780
|
),
|
|
11015
|
-
showCoordinates && coordinateStyle !== "none" && /* @__PURE__ */
|
|
10781
|
+
showCoordinates && coordinateStyle !== "none" && /* @__PURE__ */ jsxs25("g", { className: "coordinates", "aria-hidden": "true", children: [
|
|
11016
10782
|
Array.from({ length: cols }).map((_, col) => {
|
|
11017
10783
|
const label = coordinateStyle === "algebraic" ? String.fromCharCode(97 + col) : String(col + 1);
|
|
11018
|
-
return /* @__PURE__ */
|
|
10784
|
+
return /* @__PURE__ */ jsx43(
|
|
11019
10785
|
"text",
|
|
11020
10786
|
{
|
|
11021
10787
|
x: labelMargin + col * cellSize + cellSize / 2,
|
|
@@ -11031,7 +10797,7 @@ function SquareGridImpl(props) {
|
|
|
11031
10797
|
}),
|
|
11032
10798
|
Array.from({ length: rows }).map((_, row) => {
|
|
11033
10799
|
const label = coordinateStyle === "algebraic" ? String(rows - row) : String(row + 1);
|
|
11034
|
-
return /* @__PURE__ */
|
|
10800
|
+
return /* @__PURE__ */ jsx43(
|
|
11035
10801
|
"text",
|
|
11036
10802
|
{
|
|
11037
10803
|
x: 10,
|
|
@@ -11046,10 +10812,10 @@ function SquareGridImpl(props) {
|
|
|
11046
10812
|
);
|
|
11047
10813
|
})
|
|
11048
10814
|
] }),
|
|
11049
|
-
/* @__PURE__ */
|
|
10815
|
+
/* @__PURE__ */ jsx43("g", { className: "pieces", role: "list", "aria-label": "Game pieces", children: resolvedPieces.map((piece) => {
|
|
11050
10816
|
const x = labelMargin + piece.col * cellSize + cellSize / 2;
|
|
11051
10817
|
const y = piece.row * cellSize + cellSize / 2;
|
|
11052
|
-
return /* @__PURE__ */
|
|
10818
|
+
return /* @__PURE__ */ jsx43(
|
|
11053
10819
|
"g",
|
|
11054
10820
|
{
|
|
11055
10821
|
transform: `translate(${x}, ${y})`,
|
|
@@ -11060,7 +10826,7 @@ function SquareGridImpl(props) {
|
|
|
11060
10826
|
piece.id
|
|
11061
10827
|
);
|
|
11062
10828
|
}) }),
|
|
11063
|
-
enablePanZoom && transform.zoom !== 1 && /* @__PURE__ */
|
|
10829
|
+
enablePanZoom && transform.zoom !== 1 && /* @__PURE__ */ jsx43(
|
|
11064
10830
|
GridZoomIndicator,
|
|
11065
10831
|
{
|
|
11066
10832
|
viewBoxX,
|
|
@@ -11078,7 +10844,7 @@ var SquareGrid = SquareGridImpl;
|
|
|
11078
10844
|
// src/ui/components/board/HexGrid.tsx
|
|
11079
10845
|
import { useMemo as useMemo16 } from "react";
|
|
11080
10846
|
import { clsx as clsx22 } from "clsx";
|
|
11081
|
-
import { Fragment as Fragment7, jsx as
|
|
10847
|
+
import { Fragment as Fragment7, jsx as jsx44, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
11082
10848
|
function DefaultHexTile({
|
|
11083
10849
|
size,
|
|
11084
10850
|
fill,
|
|
@@ -11099,7 +10865,7 @@ function DefaultHexTile({
|
|
|
11099
10865
|
const effectiveStroke = isSelected ? "#3b82f6" : isHighlighted ? "#22c55e" : stroke;
|
|
11100
10866
|
const effectiveStrokeWidth = isSelected || isHighlighted ? 3 : strokeWidth;
|
|
11101
10867
|
const points = hexUtils.getHexPoints(0, 0, size * 0.95, orientation);
|
|
11102
|
-
return /* @__PURE__ */
|
|
10868
|
+
return /* @__PURE__ */ jsxs26(
|
|
11103
10869
|
"g",
|
|
11104
10870
|
{
|
|
11105
10871
|
onClick,
|
|
@@ -11115,7 +10881,7 @@ function DefaultHexTile({
|
|
|
11115
10881
|
tabIndex: onClick ? 0 : void 0,
|
|
11116
10882
|
"aria-label": onClick ? label ?? "Hex tile" : void 0,
|
|
11117
10883
|
children: [
|
|
11118
|
-
/* @__PURE__ */
|
|
10884
|
+
/* @__PURE__ */ jsx44(
|
|
11119
10885
|
"polygon",
|
|
11120
10886
|
{
|
|
11121
10887
|
points,
|
|
@@ -11125,7 +10891,7 @@ function DefaultHexTile({
|
|
|
11125
10891
|
filter: "url(#hexShadow)"
|
|
11126
10892
|
}
|
|
11127
10893
|
),
|
|
11128
|
-
label && /* @__PURE__ */
|
|
10894
|
+
label && /* @__PURE__ */ jsx44(
|
|
11129
10895
|
"text",
|
|
11130
10896
|
{
|
|
11131
10897
|
x: 0,
|
|
@@ -11140,7 +10906,7 @@ function DefaultHexTile({
|
|
|
11140
10906
|
children: label
|
|
11141
10907
|
}
|
|
11142
10908
|
),
|
|
11143
|
-
showCoordinates && coordinates && /* @__PURE__ */
|
|
10909
|
+
showCoordinates && coordinates && /* @__PURE__ */ jsxs26(
|
|
11144
10910
|
"text",
|
|
11145
10911
|
{
|
|
11146
10912
|
x: 0,
|
|
@@ -11174,7 +10940,7 @@ function DefaultHexEdge({
|
|
|
11174
10940
|
position.x2 - position.x1,
|
|
11175
10941
|
position.y2 - position.y1
|
|
11176
10942
|
);
|
|
11177
|
-
return /* @__PURE__ */
|
|
10943
|
+
return /* @__PURE__ */ jsxs26(
|
|
11178
10944
|
"g",
|
|
11179
10945
|
{
|
|
11180
10946
|
onClick,
|
|
@@ -11188,7 +10954,7 @@ function DefaultHexEdge({
|
|
|
11188
10954
|
tabIndex: onClick ? 0 : void 0,
|
|
11189
10955
|
"aria-label": onClick ? "Hex edge" : void 0,
|
|
11190
10956
|
children: [
|
|
11191
|
-
/* @__PURE__ */
|
|
10957
|
+
/* @__PURE__ */ jsx44(
|
|
11192
10958
|
"rect",
|
|
11193
10959
|
{
|
|
11194
10960
|
x: position.midX - touchTargetLength / 2,
|
|
@@ -11201,7 +10967,7 @@ function DefaultHexEdge({
|
|
|
11201
10967
|
pointerEvents: "all"
|
|
11202
10968
|
}
|
|
11203
10969
|
),
|
|
11204
|
-
/* @__PURE__ */
|
|
10970
|
+
/* @__PURE__ */ jsx44(
|
|
11205
10971
|
"line",
|
|
11206
10972
|
{
|
|
11207
10973
|
x1: position.x1,
|
|
@@ -11237,7 +11003,7 @@ function DefaultHexVertex({
|
|
|
11237
11003
|
const effectiveColor = isSelected ? "rgba(59, 130, 246, 0.8)" : isHighlighted ? "rgba(34, 197, 94, 0.8)" : color;
|
|
11238
11004
|
const effectiveStroke = isSelected ? "#3b82f6" : isHighlighted ? "#22c55e" : stroke;
|
|
11239
11005
|
const effectiveStrokeWidth = isSelected || isHighlighted ? 3 : strokeWidth;
|
|
11240
|
-
return /* @__PURE__ */
|
|
11006
|
+
return /* @__PURE__ */ jsxs26(
|
|
11241
11007
|
"g",
|
|
11242
11008
|
{
|
|
11243
11009
|
onClick,
|
|
@@ -11254,7 +11020,7 @@ function DefaultHexVertex({
|
|
|
11254
11020
|
tabIndex: onClick ? 0 : void 0,
|
|
11255
11021
|
"aria-label": onClick ? "Hex vertex" : void 0,
|
|
11256
11022
|
children: [
|
|
11257
|
-
/* @__PURE__ */
|
|
11023
|
+
/* @__PURE__ */ jsx44(
|
|
11258
11024
|
"circle",
|
|
11259
11025
|
{
|
|
11260
11026
|
cx: position.x,
|
|
@@ -11264,7 +11030,7 @@ function DefaultHexVertex({
|
|
|
11264
11030
|
pointerEvents: "all"
|
|
11265
11031
|
}
|
|
11266
11032
|
),
|
|
11267
|
-
shape === "square" ? /* @__PURE__ */
|
|
11033
|
+
shape === "square" ? /* @__PURE__ */ jsx44(
|
|
11268
11034
|
"rect",
|
|
11269
11035
|
{
|
|
11270
11036
|
x: position.x - size,
|
|
@@ -11276,7 +11042,7 @@ function DefaultHexVertex({
|
|
|
11276
11042
|
strokeWidth: effectiveStrokeWidth,
|
|
11277
11043
|
className: hasOwner ? "" : "opacity-30"
|
|
11278
11044
|
}
|
|
11279
|
-
) : /* @__PURE__ */
|
|
11045
|
+
) : /* @__PURE__ */ jsx44(
|
|
11280
11046
|
"circle",
|
|
11281
11047
|
{
|
|
11282
11048
|
cx: position.x,
|
|
@@ -11300,7 +11066,7 @@ function DefaultInteractiveVertex({
|
|
|
11300
11066
|
hoverColor = "rgba(34, 197, 94, 0.8)",
|
|
11301
11067
|
className
|
|
11302
11068
|
}) {
|
|
11303
|
-
return /* @__PURE__ */
|
|
11069
|
+
return /* @__PURE__ */ jsx44(
|
|
11304
11070
|
"circle",
|
|
11305
11071
|
{
|
|
11306
11072
|
cx: position.x,
|
|
@@ -11321,7 +11087,7 @@ function DefaultInteractiveEdge({
|
|
|
11321
11087
|
hoverColor = "rgba(251, 146, 60, 0.8)",
|
|
11322
11088
|
className
|
|
11323
11089
|
}) {
|
|
11324
|
-
return /* @__PURE__ */
|
|
11090
|
+
return /* @__PURE__ */ jsx44(
|
|
11325
11091
|
"line",
|
|
11326
11092
|
{
|
|
11327
11093
|
x1: position.x1,
|
|
@@ -11601,7 +11367,7 @@ function HexGridImpl(props) {
|
|
|
11601
11367
|
bounds,
|
|
11602
11368
|
viewBoxMode: "transformed"
|
|
11603
11369
|
});
|
|
11604
|
-
return /* @__PURE__ */
|
|
11370
|
+
return /* @__PURE__ */ jsxs26(
|
|
11605
11371
|
"svg",
|
|
11606
11372
|
{
|
|
11607
11373
|
width,
|
|
@@ -11618,18 +11384,18 @@ function HexGridImpl(props) {
|
|
|
11618
11384
|
role: "group",
|
|
11619
11385
|
"aria-label": "Hex grid game board",
|
|
11620
11386
|
children: [
|
|
11621
|
-
/* @__PURE__ */
|
|
11622
|
-
/* @__PURE__ */
|
|
11623
|
-
/* @__PURE__ */
|
|
11624
|
-
/* @__PURE__ */
|
|
11387
|
+
/* @__PURE__ */ jsxs26("defs", { children: [
|
|
11388
|
+
/* @__PURE__ */ jsxs26("linearGradient", { id: "oceanGradient", x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [
|
|
11389
|
+
/* @__PURE__ */ jsx44("stop", { offset: "0%", stopColor: "#0ea5e9" }),
|
|
11390
|
+
/* @__PURE__ */ jsx44("stop", { offset: "100%", stopColor: "#0284c7" })
|
|
11625
11391
|
] }),
|
|
11626
|
-
/* @__PURE__ */
|
|
11392
|
+
/* @__PURE__ */ jsx44("filter", { id: "hexShadow", x: "-20%", y: "-20%", width: "140%", height: "140%", children: /* @__PURE__ */ jsx44("feDropShadow", { dx: "1", dy: "1", stdDeviation: "2", floodOpacity: "0.3" }) })
|
|
11627
11393
|
] }),
|
|
11628
|
-
/* @__PURE__ */
|
|
11394
|
+
/* @__PURE__ */ jsx44("g", { className: "tiles", role: "list", "aria-label": "Hex tiles", children: resolvedTiles.map((tile) => {
|
|
11629
11395
|
const pos = tilePositions.get(tile.id);
|
|
11630
11396
|
if (!pos) return null;
|
|
11631
11397
|
const geometry = buildTileGeometry(pos);
|
|
11632
|
-
return /* @__PURE__ */
|
|
11398
|
+
return /* @__PURE__ */ jsx44(
|
|
11633
11399
|
"g",
|
|
11634
11400
|
{
|
|
11635
11401
|
transform: `translate(${pos.x}, ${pos.y})`,
|
|
@@ -11640,7 +11406,7 @@ function HexGridImpl(props) {
|
|
|
11640
11406
|
tile.id
|
|
11641
11407
|
);
|
|
11642
11408
|
}) }),
|
|
11643
|
-
interactiveSpaces && resolvedTiles.length > 0 && /* @__PURE__ */
|
|
11409
|
+
interactiveSpaces && resolvedTiles.length > 0 && /* @__PURE__ */ jsx44(
|
|
11644
11410
|
InteractiveTargetLayerGroup,
|
|
11645
11411
|
{
|
|
11646
11412
|
layer: interactiveSpaces,
|
|
@@ -11653,8 +11419,8 @@ function HexGridImpl(props) {
|
|
|
11653
11419
|
selectMode: "render-state",
|
|
11654
11420
|
hover: spaceHover,
|
|
11655
11421
|
getTargetTransform: ({ pos }) => `translate(${pos.x}, ${pos.y})`,
|
|
11656
|
-
renderTargetContent: ({ space, pos }, state, isSelectable) => /* @__PURE__ */
|
|
11657
|
-
isSelectable && /* @__PURE__ */
|
|
11422
|
+
renderTargetContent: ({ space, pos }, state, isSelectable) => /* @__PURE__ */ jsxs26(Fragment7, { children: [
|
|
11423
|
+
isSelectable && /* @__PURE__ */ jsx44(
|
|
11658
11424
|
"polygon",
|
|
11659
11425
|
{
|
|
11660
11426
|
points: buildTileGeometry(pos).points({
|
|
@@ -11668,13 +11434,13 @@ function HexGridImpl(props) {
|
|
|
11668
11434
|
] })
|
|
11669
11435
|
}
|
|
11670
11436
|
),
|
|
11671
|
-
resolvedEdges.length > 0 && /* @__PURE__ */
|
|
11672
|
-
return /* @__PURE__ */
|
|
11437
|
+
resolvedEdges.length > 0 && /* @__PURE__ */ jsx44("g", { className: "edges", role: "list", "aria-label": "Hex edges", children: resolvedEdgePositions.map(({ edge, interactiveEdge }) => {
|
|
11438
|
+
return /* @__PURE__ */ jsx44("g", { role: "listitem", children: renderEdge(edge, interactiveEdge.position) }, edge.id);
|
|
11673
11439
|
}) }),
|
|
11674
|
-
resolvedVertices.length > 0 && /* @__PURE__ */
|
|
11675
|
-
return /* @__PURE__ */
|
|
11440
|
+
resolvedVertices.length > 0 && /* @__PURE__ */ jsx44("g", { className: "vertices", role: "list", "aria-label": "Hex vertices", children: resolvedVertexPositions.map(({ vertex, interactiveVertex }) => {
|
|
11441
|
+
return /* @__PURE__ */ jsx44("g", { role: "listitem", children: renderVertex(vertex, interactiveVertex.position) }, vertex.id);
|
|
11676
11442
|
}) }),
|
|
11677
|
-
interactiveEdges && resolvedEdgePositions.length > 0 && /* @__PURE__ */
|
|
11443
|
+
interactiveEdges && resolvedEdgePositions.length > 0 && /* @__PURE__ */ jsx44(
|
|
11678
11444
|
InteractiveTargetLayerGroup,
|
|
11679
11445
|
{
|
|
11680
11446
|
layer: interactiveEdges,
|
|
@@ -11691,8 +11457,8 @@ function HexGridImpl(props) {
|
|
|
11691
11457
|
edge.position.x2 - edge.position.x1,
|
|
11692
11458
|
edge.position.y2 - edge.position.y1
|
|
11693
11459
|
);
|
|
11694
|
-
return /* @__PURE__ */
|
|
11695
|
-
isSelectable && /* @__PURE__ */
|
|
11460
|
+
return /* @__PURE__ */ jsxs26(Fragment7, { children: [
|
|
11461
|
+
isSelectable && /* @__PURE__ */ jsx44(
|
|
11696
11462
|
"rect",
|
|
11697
11463
|
{
|
|
11698
11464
|
x: edge.position.midX - touchTargetLength / 2,
|
|
@@ -11705,7 +11471,7 @@ function HexGridImpl(props) {
|
|
|
11705
11471
|
pointerEvents: "all"
|
|
11706
11472
|
}
|
|
11707
11473
|
),
|
|
11708
|
-
renderInteractiveEdge ? renderInteractiveEdge(edge, edge.position, state) : state.isEnabled && state.isEligible ? /* @__PURE__ */
|
|
11474
|
+
renderInteractiveEdge ? renderInteractiveEdge(edge, edge.position, state) : state.isEnabled && state.isEligible ? /* @__PURE__ */ jsx44(
|
|
11709
11475
|
DefaultInteractiveEdge,
|
|
11710
11476
|
{
|
|
11711
11477
|
position: edge.position,
|
|
@@ -11717,7 +11483,7 @@ function HexGridImpl(props) {
|
|
|
11717
11483
|
}
|
|
11718
11484
|
}
|
|
11719
11485
|
),
|
|
11720
|
-
interactiveVertices && resolvedVertexPositions.length > 0 && /* @__PURE__ */
|
|
11486
|
+
interactiveVertices && resolvedVertexPositions.length > 0 && /* @__PURE__ */ jsx44(
|
|
11721
11487
|
InteractiveTargetLayerGroup,
|
|
11722
11488
|
{
|
|
11723
11489
|
layer: interactiveVertices,
|
|
@@ -11729,8 +11495,8 @@ function HexGridImpl(props) {
|
|
|
11729
11495
|
browserAttributeOrder: "before-transform",
|
|
11730
11496
|
selectMode: "render-state",
|
|
11731
11497
|
hover: vertexHover,
|
|
11732
|
-
renderTargetContent: ({ interactiveVertex: vertex }, state, isSelectable) => /* @__PURE__ */
|
|
11733
|
-
isSelectable && /* @__PURE__ */
|
|
11498
|
+
renderTargetContent: ({ interactiveVertex: vertex }, state, isSelectable) => /* @__PURE__ */ jsxs26(Fragment7, { children: [
|
|
11499
|
+
isSelectable && /* @__PURE__ */ jsx44(
|
|
11734
11500
|
"circle",
|
|
11735
11501
|
{
|
|
11736
11502
|
cx: vertex.position.x,
|
|
@@ -11740,7 +11506,7 @@ function HexGridImpl(props) {
|
|
|
11740
11506
|
pointerEvents: "all"
|
|
11741
11507
|
}
|
|
11742
11508
|
),
|
|
11743
|
-
renderInteractiveVertex ? renderInteractiveVertex(vertex, vertex.position, state) : state.isEnabled && state.isEligible ? /* @__PURE__ */
|
|
11509
|
+
renderInteractiveVertex ? renderInteractiveVertex(vertex, vertex.position, state) : state.isEnabled && state.isEligible ? /* @__PURE__ */ jsx44(
|
|
11744
11510
|
DefaultInteractiveVertex,
|
|
11745
11511
|
{
|
|
11746
11512
|
position: vertex.position,
|
|
@@ -11751,7 +11517,7 @@ function HexGridImpl(props) {
|
|
|
11751
11517
|
] })
|
|
11752
11518
|
}
|
|
11753
11519
|
),
|
|
11754
|
-
effectivePanZoom && transform.zoom !== 1 && /* @__PURE__ */
|
|
11520
|
+
effectivePanZoom && transform.zoom !== 1 && /* @__PURE__ */ jsx44(
|
|
11755
11521
|
GridZoomIndicator,
|
|
11756
11522
|
{
|
|
11757
11523
|
viewBoxX,
|
|
@@ -11906,8 +11672,6 @@ export {
|
|
|
11906
11672
|
ActionHelp,
|
|
11907
11673
|
StandingsTable,
|
|
11908
11674
|
OutcomeDialog,
|
|
11909
|
-
SystemActionSummary,
|
|
11910
|
-
GameEventLog,
|
|
11911
11675
|
DefaultNetworkNode,
|
|
11912
11676
|
DefaultNetworkEdge,
|
|
11913
11677
|
DefaultNetworkPiece,
|
|
@@ -11938,4 +11702,4 @@ export {
|
|
|
11938
11702
|
HexGrid,
|
|
11939
11703
|
createHexBoardView
|
|
11940
11704
|
};
|
|
11941
|
-
//# sourceMappingURL=chunk-
|
|
11705
|
+
//# sourceMappingURL=chunk-32PFKDV7.js.map
|