@almadar/ui 5.107.0 → 5.108.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/avl/index.cjs +1427 -2828
- package/dist/avl/index.js +525 -1926
- package/dist/components/{game → core}/atoms/GameIcon.d.ts +1 -1
- package/dist/components/core/atoms/index.d.ts +1 -0
- package/dist/components/core/templates/index.d.ts +0 -1
- package/dist/components/game/molecules/index.d.ts +8 -28
- package/dist/components/index.cjs +223 -1691
- package/dist/components/index.js +213 -1671
- package/dist/lib/drawable/projector.d.ts +1 -1
- package/dist/{components/game/three/molecules/GameCanvas3D.d.ts → lib/drawable/three/Canvas3DHost.d.ts} +12 -9
- package/dist/lib/drawable/{Drawable3D.d.ts → three/Drawable3D.d.ts} +2 -2
- package/dist/lib/drawable/three/GameCamera3D.d.ts +16 -0
- package/dist/lib/drawable/three/game3dTheme.d.ts +14 -0
- package/dist/{components/game → lib/drawable}/three/hooks/useGameCanvas3DEvents.d.ts +1 -1
- package/dist/{components/game → lib/drawable}/three/index.cjs +2019 -2020
- package/dist/{components/game → lib/drawable}/three/index.css +3 -3
- package/dist/lib/drawable/three/index.d.ts +39 -0
- package/dist/{components/game → lib/drawable}/three/index.js +1932 -1934
- package/dist/lib/drawable/{mesh3d.d.ts → three/mesh3d.d.ts} +4 -4
- package/dist/{components/game/lib → lib}/puzzleObject.d.ts +11 -2
- package/dist/{components/game/providers → providers}/GameAudioProvider.d.ts +1 -1
- package/dist/providers/index.cjs +1619 -2690
- package/dist/providers/index.d.ts +2 -0
- package/dist/providers/index.js +827 -1902
- package/dist/runtime/index.cjs +1288 -2689
- package/dist/runtime/index.js +505 -1906
- package/package.json +7 -7
- package/dist/components/game/atoms/ActionButton.d.ts +0 -31
- package/dist/components/game/atoms/ComboCounter.d.ts +0 -20
- package/dist/components/game/atoms/DamageNumber.d.ts +0 -18
- package/dist/components/game/atoms/GameCard.d.ts +0 -34
- package/dist/components/game/atoms/ItemSlot.d.ts +0 -31
- package/dist/components/game/atoms/ResourceCounter.d.ts +0 -26
- package/dist/components/game/atoms/Sprite.d.ts +0 -52
- package/dist/components/game/atoms/StatusEffect.d.ts +0 -25
- package/dist/components/game/atoms/TurnIndicator.d.ts +0 -22
- package/dist/components/game/atoms/WaypointMarker.d.ts +0 -23
- package/dist/components/game/molecules/EventLog.d.ts +0 -31
- package/dist/components/game/molecules/InventoryGrid.d.ts +0 -35
- package/dist/components/game/molecules/ObjectRulePanel.d.ts +0 -32
- package/dist/components/game/molecules/ResourceBar.d.ts +0 -26
- package/dist/components/game/molecules/RuleEditor.d.ts +0 -39
- package/dist/components/game/molecules/VariablePanel.d.ts +0 -28
- package/dist/components/game/templates/GameTemplate.d.ts +0 -35
- package/dist/components/game/three/atoms/SpriteBillboard3D.d.ts +0 -18
- package/dist/components/game/three/game3dTheme.d.ts +0 -55
- package/dist/components/game/three/index.d.ts +0 -12
- package/dist/components/game/three/lib/game3dAssetManifest.d.ts +0 -48
- package/dist/components/game/three/molecules/GameCamera3D.d.ts +0 -35
- package/dist/components/game/three/molecules/index.d.ts +0 -32
- package/dist/components/game/three/patterns.d.ts +0 -16
- /package/dist/{components/game/hooks → hooks}/useCamera.d.ts +0 -0
- /package/dist/{components/game/hooks → hooks}/useGameAudio.d.ts +0 -0
- /package/dist/{components/game/hooks → hooks}/useImageCache.d.ts +0 -0
- /package/dist/{components/game/hooks → hooks}/useUnitSpriteAtlas.d.ts +0 -0
- /package/dist/{components/game/lib → lib}/boardEntity.d.ts +0 -0
- /package/dist/{components/game/three/molecules → lib/drawable/three}/Camera3D.d.ts +0 -0
- /package/dist/{components/game/three/molecules → lib/drawable/three}/Canvas3DErrorBoundary.d.ts +0 -0
- /package/dist/{components/game/three/molecules → lib/drawable/three}/Canvas3DLoadingState.d.ts +0 -0
- /package/dist/{components/game/three/molecules → lib/drawable/three}/Lighting3D.d.ts +0 -0
- /package/dist/{components/game/three/molecules → lib/drawable/three}/ModelLoader.d.ts +0 -0
- /package/dist/{components/game/three/molecules → lib/drawable/three}/Scene3D.d.ts +0 -0
- /package/dist/{components/game → lib/drawable}/three/hooks/useAssetLoader.d.ts +0 -0
- /package/dist/{components/game → lib/drawable}/three/hooks/useRaycaster.d.ts +0 -0
- /package/dist/{components/game → lib/drawable}/three/hooks/useSceneGraph.d.ts +0 -0
- /package/dist/{components/game → lib/drawable}/three/hooks/useThree.d.ts +0 -0
- /package/dist/{components/game → lib/drawable}/three/lib/AssetLoader.d.ts +0 -0
- /package/dist/{components/game → lib/drawable}/three/lib/culling.d.ts +0 -0
- /package/dist/{components/game → lib/drawable}/three/lib/grid3D.d.ts +0 -0
- /package/dist/{components/game/lib → lib}/editorUtils.d.ts +0 -0
- /package/dist/{components/game/lib → lib}/game.d.ts +0 -0
- /package/dist/{components/game/lib/index.d.ts → lib/gameShared.d.ts} +0 -0
- /package/dist/{components/game/lib → lib}/isometric.d.ts +0 -0
- /package/dist/{components/game/lib → lib}/isometricTypes.d.ts +0 -0
- /package/dist/{components/game/lib → lib}/makeAsset.d.ts +0 -0
- /package/dist/{components/game/lib → lib}/mechanics.d.ts +0 -0
- /package/dist/{components/game/lib → lib}/physicsPresets.d.ts +0 -0
- /package/dist/{components/game/lib → lib}/physicsTypes.d.ts +0 -0
- /package/dist/{components/game/lib → lib}/spriteAnimation.d.ts +0 -0
- /package/dist/{components/game/lib → lib}/spriteAnimationTypes.d.ts +0 -0
- /package/dist/{components/game/lib → lib}/spriteSheetConstants.d.ts +0 -0
|
@@ -3190,6 +3190,38 @@ var init_Badge = __esm({
|
|
|
3190
3190
|
exports.Badge.displayName = "Badge";
|
|
3191
3191
|
}
|
|
3192
3192
|
});
|
|
3193
|
+
function GameIcon({ assetUrl, icon, size = "md", alt, className }) {
|
|
3194
|
+
const px = typeof size === "number" ? size : sizeMap[size];
|
|
3195
|
+
const family = useIconFamily();
|
|
3196
|
+
if (assetUrl?.url) {
|
|
3197
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3198
|
+
AtlasImage,
|
|
3199
|
+
{
|
|
3200
|
+
asset: assetUrl,
|
|
3201
|
+
size: px,
|
|
3202
|
+
alt: alt ?? assetUrl.category ?? "",
|
|
3203
|
+
className: cn("flex-shrink-0", className)
|
|
3204
|
+
}
|
|
3205
|
+
);
|
|
3206
|
+
}
|
|
3207
|
+
const I = typeof icon === "string" ? resolveIconForFamily(icon, family) : icon;
|
|
3208
|
+
return /* @__PURE__ */ jsxRuntime.jsx(I, { width: px, height: px, className: cn("flex-shrink-0", className) });
|
|
3209
|
+
}
|
|
3210
|
+
var sizeMap;
|
|
3211
|
+
var init_GameIcon = __esm({
|
|
3212
|
+
"components/core/atoms/GameIcon.tsx"() {
|
|
3213
|
+
"use client";
|
|
3214
|
+
init_cn();
|
|
3215
|
+
init_iconFamily();
|
|
3216
|
+
init_AtlasImage();
|
|
3217
|
+
sizeMap = {
|
|
3218
|
+
sm: 16,
|
|
3219
|
+
md: 24,
|
|
3220
|
+
lg: 32
|
|
3221
|
+
};
|
|
3222
|
+
GameIcon.displayName = "GameIcon";
|
|
3223
|
+
}
|
|
3224
|
+
});
|
|
3193
3225
|
var variantStyles4, sizeStyles4, iconSizes; exports.FilterPill = void 0;
|
|
3194
3226
|
var init_FilterPill = __esm({
|
|
3195
3227
|
"components/core/atoms/FilterPill.tsx"() {
|
|
@@ -4430,7 +4462,7 @@ var init_TextHighlight = __esm({
|
|
|
4430
4462
|
}) => {
|
|
4431
4463
|
const eventBus = useEventBus();
|
|
4432
4464
|
const baseStyles = "cursor-pointer transition-all duration-150";
|
|
4433
|
-
const
|
|
4465
|
+
const typeStyles = {
|
|
4434
4466
|
question: cn(
|
|
4435
4467
|
// Blue border for questions
|
|
4436
4468
|
"bg-card border-b-2 border-primary-600",
|
|
@@ -4450,7 +4482,7 @@ var init_TextHighlight = __esm({
|
|
|
4450
4482
|
"data-highlight": "true",
|
|
4451
4483
|
"data-highlight-type": highlightType,
|
|
4452
4484
|
"data-annotation-id": annotationId,
|
|
4453
|
-
className: cn(baseStyles,
|
|
4485
|
+
className: cn(baseStyles, typeStyles[highlightType], className),
|
|
4454
4486
|
onClick: () => {
|
|
4455
4487
|
if (action) eventBus.emit(`UI:${action}`, { annotationId });
|
|
4456
4488
|
onClick?.();
|
|
@@ -8191,135 +8223,6 @@ var init_Accordion = __esm({
|
|
|
8191
8223
|
exports.Accordion.displayName = "Accordion";
|
|
8192
8224
|
}
|
|
8193
8225
|
});
|
|
8194
|
-
function GameIcon({ assetUrl, icon, size = "md", alt, className }) {
|
|
8195
|
-
const px = typeof size === "number" ? size : sizeMap[size];
|
|
8196
|
-
if (assetUrl?.url) {
|
|
8197
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8198
|
-
AtlasImage,
|
|
8199
|
-
{
|
|
8200
|
-
asset: assetUrl,
|
|
8201
|
-
size: px,
|
|
8202
|
-
alt: alt ?? assetUrl.category ?? "",
|
|
8203
|
-
className: cn("flex-shrink-0", className)
|
|
8204
|
-
}
|
|
8205
|
-
);
|
|
8206
|
-
}
|
|
8207
|
-
const I = typeof icon === "string" ? resolveIcon(icon) : icon;
|
|
8208
|
-
return /* @__PURE__ */ jsxRuntime.jsx(I, { width: px, height: px, className: cn("flex-shrink-0", className) });
|
|
8209
|
-
}
|
|
8210
|
-
var sizeMap;
|
|
8211
|
-
var init_GameIcon = __esm({
|
|
8212
|
-
"components/game/atoms/GameIcon.tsx"() {
|
|
8213
|
-
"use client";
|
|
8214
|
-
init_cn();
|
|
8215
|
-
init_Icon();
|
|
8216
|
-
init_AtlasImage();
|
|
8217
|
-
sizeMap = {
|
|
8218
|
-
sm: 16,
|
|
8219
|
-
md: 24,
|
|
8220
|
-
lg: 32
|
|
8221
|
-
};
|
|
8222
|
-
GameIcon.displayName = "GameIcon";
|
|
8223
|
-
}
|
|
8224
|
-
});
|
|
8225
|
-
function ActionButton({
|
|
8226
|
-
assetUrl = DEFAULT_ASSET_URL,
|
|
8227
|
-
label = "Attack",
|
|
8228
|
-
icon,
|
|
8229
|
-
cooldown = 0,
|
|
8230
|
-
disabled = false,
|
|
8231
|
-
hotkey,
|
|
8232
|
-
size = "md",
|
|
8233
|
-
variant = "primary",
|
|
8234
|
-
onClick,
|
|
8235
|
-
action,
|
|
8236
|
-
className
|
|
8237
|
-
}) {
|
|
8238
|
-
const eventBus = useEventBus();
|
|
8239
|
-
const sizes = sizeMap2[size];
|
|
8240
|
-
const onCooldown = cooldown > 0;
|
|
8241
|
-
const isDisabled = disabled || onCooldown;
|
|
8242
|
-
const cooldownDeg = Math.round(cooldown * 360);
|
|
8243
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8244
|
-
exports.Button,
|
|
8245
|
-
{
|
|
8246
|
-
variant: variant === "danger" ? "danger" : variant === "secondary" ? "secondary" : "primary",
|
|
8247
|
-
disabled: isDisabled,
|
|
8248
|
-
onClick: () => {
|
|
8249
|
-
if (action) eventBus.emit(`UI:${action}`, {});
|
|
8250
|
-
onClick?.();
|
|
8251
|
-
},
|
|
8252
|
-
className: cn(
|
|
8253
|
-
"relative inline-flex items-center gap-1.5 rounded-interactive border font-medium overflow-hidden transition-colors duration-150",
|
|
8254
|
-
sizes.button,
|
|
8255
|
-
variantStyles7[variant],
|
|
8256
|
-
isDisabled && "opacity-60 cursor-not-allowed",
|
|
8257
|
-
className
|
|
8258
|
-
),
|
|
8259
|
-
children: [
|
|
8260
|
-
onCooldown && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8261
|
-
exports.Box,
|
|
8262
|
-
{
|
|
8263
|
-
position: "absolute",
|
|
8264
|
-
className: "inset-0 bg-foreground/40 pointer-events-none",
|
|
8265
|
-
style: {
|
|
8266
|
-
clipPath: `conic-gradient(from 0deg, transparent ${360 - cooldownDeg}deg, black ${360 - cooldownDeg}deg)`,
|
|
8267
|
-
WebkitClipPath: `conic-gradient(from 0deg, transparent ${360 - cooldownDeg}deg, black ${360 - cooldownDeg}deg)`,
|
|
8268
|
-
background: `conic-gradient(from 0deg, transparent ${360 - cooldownDeg}deg, rgba(0,0,0,0.6) ${360 - cooldownDeg}deg)`
|
|
8269
|
-
}
|
|
8270
|
-
}
|
|
8271
|
-
),
|
|
8272
|
-
assetUrl ? /* @__PURE__ */ jsxRuntime.jsx(GameIcon, { assetUrl, icon: "image", size: 16, className: cn("flex-shrink-0", sizes.icon) }) : icon ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { as: "span", className: cn("flex-shrink-0", sizes.icon), children: typeof icon === "string" ? (() => {
|
|
8273
|
-
const I = resolveIcon(icon);
|
|
8274
|
-
return I ? /* @__PURE__ */ jsxRuntime.jsx(I, { className: "w-4 h-4" }) : null;
|
|
8275
|
-
})() : /* @__PURE__ */ (() => {
|
|
8276
|
-
const I = icon;
|
|
8277
|
-
return /* @__PURE__ */ jsxRuntime.jsx(I, { className: "w-4 h-4" });
|
|
8278
|
-
})() }) : null,
|
|
8279
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { as: "span", className: "relative z-10", children: label }),
|
|
8280
|
-
hotkey && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8281
|
-
exports.Typography,
|
|
8282
|
-
{
|
|
8283
|
-
as: "span",
|
|
8284
|
-
className: cn(
|
|
8285
|
-
"absolute top-0.5 right-0.5 bg-foreground/30 text-primary-foreground rounded font-mono leading-tight",
|
|
8286
|
-
sizes.hotkey
|
|
8287
|
-
),
|
|
8288
|
-
children: hotkey
|
|
8289
|
-
}
|
|
8290
|
-
)
|
|
8291
|
-
]
|
|
8292
|
-
}
|
|
8293
|
-
);
|
|
8294
|
-
}
|
|
8295
|
-
var sizeMap2, variantStyles7, DEFAULT_ASSET_URL;
|
|
8296
|
-
var init_ActionButton = __esm({
|
|
8297
|
-
"components/game/atoms/ActionButton.tsx"() {
|
|
8298
|
-
init_cn();
|
|
8299
|
-
init_Icon();
|
|
8300
|
-
init_useEventBus();
|
|
8301
|
-
init_Button();
|
|
8302
|
-
init_Box();
|
|
8303
|
-
init_Typography();
|
|
8304
|
-
init_GameIcon();
|
|
8305
|
-
sizeMap2 = {
|
|
8306
|
-
sm: { button: "h-button-sm px-3 text-xs", hotkey: "text-[9px] px-1", icon: "text-xs" },
|
|
8307
|
-
md: { button: "h-button-md px-4 text-sm", hotkey: "text-xs px-1.5", icon: "text-sm" },
|
|
8308
|
-
lg: { button: "h-button-lg px-5 text-base", hotkey: "text-xs px-2", icon: "text-base" }
|
|
8309
|
-
};
|
|
8310
|
-
variantStyles7 = {
|
|
8311
|
-
primary: "bg-primary text-primary-foreground hover:bg-primary-hover border-primary",
|
|
8312
|
-
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary-hover border-border",
|
|
8313
|
-
danger: "bg-error text-error-foreground hover:bg-error/90 border-error"
|
|
8314
|
-
};
|
|
8315
|
-
DEFAULT_ASSET_URL = {
|
|
8316
|
-
url: "https://almadar-kflow-assets.web.app/shared/effects/particles/slash_01.png",
|
|
8317
|
-
role: "ui",
|
|
8318
|
-
category: "action"
|
|
8319
|
-
};
|
|
8320
|
-
ActionButton.displayName = "ActionButton";
|
|
8321
|
-
}
|
|
8322
|
-
});
|
|
8323
8226
|
function ActionTile({
|
|
8324
8227
|
action,
|
|
8325
8228
|
size = "md",
|
|
@@ -14163,14 +14066,14 @@ function SpacerPattern({ size = "flex" }) {
|
|
|
14163
14066
|
if (size === "flex") {
|
|
14164
14067
|
return /* @__PURE__ */ jsxRuntime.jsx(exports.Spacer, {});
|
|
14165
14068
|
}
|
|
14166
|
-
const
|
|
14069
|
+
const sizeMap8 = {
|
|
14167
14070
|
xs: "0.25rem",
|
|
14168
14071
|
sm: "0.5rem",
|
|
14169
14072
|
md: "1rem",
|
|
14170
14073
|
lg: "1.5rem",
|
|
14171
14074
|
xl: "2rem"
|
|
14172
14075
|
};
|
|
14173
|
-
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { style: { width:
|
|
14076
|
+
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { style: { width: sizeMap8[size], height: sizeMap8[size], flexShrink: 0 } });
|
|
14174
14077
|
}
|
|
14175
14078
|
function DividerPattern({
|
|
14176
14079
|
orientation = "horizontal",
|
|
@@ -15456,7 +15359,7 @@ function useImageCache(urls) {
|
|
|
15456
15359
|
};
|
|
15457
15360
|
}
|
|
15458
15361
|
var init_useImageCache = __esm({
|
|
15459
|
-
"
|
|
15362
|
+
"hooks/useImageCache.ts"() {
|
|
15460
15363
|
"use client";
|
|
15461
15364
|
init_verificationRegistry();
|
|
15462
15365
|
}
|
|
@@ -15570,7 +15473,7 @@ function useCamera() {
|
|
|
15570
15473
|
};
|
|
15571
15474
|
}
|
|
15572
15475
|
var init_useCamera = __esm({
|
|
15573
|
-
"
|
|
15476
|
+
"hooks/useCamera.ts"() {
|
|
15574
15477
|
"use client";
|
|
15575
15478
|
}
|
|
15576
15479
|
});
|
|
@@ -15834,7 +15737,7 @@ var init_webPainter2d = __esm({
|
|
|
15834
15737
|
}
|
|
15835
15738
|
});
|
|
15836
15739
|
|
|
15837
|
-
//
|
|
15740
|
+
// lib/isometric.ts
|
|
15838
15741
|
function isoToScreen(tileX, tileY, scale, baseOffsetX, layout = "isometric") {
|
|
15839
15742
|
const scaledTileWidth = exports.TILE_WIDTH * scale;
|
|
15840
15743
|
const scaledFloorHeight = exports.FLOOR_HEIGHT * scale;
|
|
@@ -15872,7 +15775,7 @@ function screenToIso(screenX, screenY, scale, baseOffsetX, layout = "isometric")
|
|
|
15872
15775
|
}
|
|
15873
15776
|
exports.TILE_WIDTH = void 0; exports.TILE_HEIGHT = void 0; exports.FLOOR_HEIGHT = void 0; exports.DIAMOND_TOP_Y = void 0; exports.FEATURE_COLORS = void 0; var BACKGROUND_FALLBACK_COLOR, MINIMAP_TERRAIN_COLORS;
|
|
15874
15777
|
var init_isometric = __esm({
|
|
15875
|
-
"
|
|
15778
|
+
"lib/isometric.ts"() {
|
|
15876
15779
|
exports.TILE_WIDTH = 256;
|
|
15877
15780
|
exports.TILE_HEIGHT = 512;
|
|
15878
15781
|
exports.FLOOR_HEIGHT = 128;
|
|
@@ -16618,7 +16521,7 @@ function Canvas({
|
|
|
16618
16521
|
keyMap,
|
|
16619
16522
|
keyUpMap
|
|
16620
16523
|
};
|
|
16621
|
-
return /* @__PURE__ */ jsxRuntime.jsx(React73.Suspense, { fallback: null, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
16524
|
+
return /* @__PURE__ */ jsxRuntime.jsx(React73.Suspense, { fallback: null, children: /* @__PURE__ */ jsxRuntime.jsx(Canvas3DHost, { ...props3d }) });
|
|
16622
16525
|
}
|
|
16623
16526
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
16624
16527
|
Canvas2D,
|
|
@@ -16642,13 +16545,13 @@ function Canvas({
|
|
|
16642
16545
|
}
|
|
16643
16546
|
);
|
|
16644
16547
|
}
|
|
16645
|
-
var
|
|
16548
|
+
var Canvas3DHost;
|
|
16646
16549
|
var init_Canvas = __esm({
|
|
16647
16550
|
"components/game/molecules/Canvas.tsx"() {
|
|
16648
16551
|
"use client";
|
|
16649
16552
|
init_Canvas2D();
|
|
16650
|
-
|
|
16651
|
-
() => import('@almadar/ui/components/molecules/game/three').then((m) => ({ default: m.
|
|
16553
|
+
Canvas3DHost = React73.lazy(
|
|
16554
|
+
() => import('@almadar/ui/components/molecules/game/three').then((m) => ({ default: m.Canvas3DHost }))
|
|
16652
16555
|
);
|
|
16653
16556
|
Canvas.displayName = "Canvas";
|
|
16654
16557
|
}
|
|
@@ -18516,16 +18419,14 @@ function ChoiceButton({
|
|
|
18516
18419
|
payload,
|
|
18517
18420
|
className
|
|
18518
18421
|
}) {
|
|
18519
|
-
const eventBus = useEventBus();
|
|
18520
18422
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
18521
18423
|
exports.Button,
|
|
18522
18424
|
{
|
|
18523
18425
|
variant: "ghost",
|
|
18524
18426
|
disabled,
|
|
18525
|
-
|
|
18526
|
-
|
|
18527
|
-
|
|
18528
|
-
},
|
|
18427
|
+
action,
|
|
18428
|
+
actionPayload: payload,
|
|
18429
|
+
onClick,
|
|
18529
18430
|
className: cn(
|
|
18530
18431
|
"w-full text-left px-4 py-2.5 rounded-interactive border transition-all duration-150",
|
|
18531
18432
|
"flex items-center gap-2",
|
|
@@ -18564,7 +18465,6 @@ var init_ChoiceButton = __esm({
|
|
|
18564
18465
|
"components/game/atoms/ChoiceButton.tsx"() {
|
|
18565
18466
|
init_cn();
|
|
18566
18467
|
init_Icon();
|
|
18567
|
-
init_useEventBus();
|
|
18568
18468
|
init_Button();
|
|
18569
18469
|
init_Box();
|
|
18570
18470
|
init_Typography();
|
|
@@ -18735,73 +18635,6 @@ var init_CodeRunnerPanel = __esm({
|
|
|
18735
18635
|
exports.CodeRunnerPanel.displayName = "CodeRunnerPanel";
|
|
18736
18636
|
}
|
|
18737
18637
|
});
|
|
18738
|
-
function getComboIntensity(combo) {
|
|
18739
|
-
if (combo >= 10) return "text-error animate-pulse";
|
|
18740
|
-
if (combo >= 7) return "text-warning";
|
|
18741
|
-
if (combo >= 4) return "text-warning";
|
|
18742
|
-
return "text-foreground";
|
|
18743
|
-
}
|
|
18744
|
-
function getComboScale(combo) {
|
|
18745
|
-
if (combo >= 10) return "scale-110";
|
|
18746
|
-
if (combo >= 5) return "scale-105";
|
|
18747
|
-
return "";
|
|
18748
|
-
}
|
|
18749
|
-
function ComboCounter({
|
|
18750
|
-
assetUrl = DEFAULT_ASSET_URL2,
|
|
18751
|
-
combo = 5,
|
|
18752
|
-
multiplier,
|
|
18753
|
-
streak,
|
|
18754
|
-
size = "md",
|
|
18755
|
-
className
|
|
18756
|
-
}) {
|
|
18757
|
-
const sizes = sizeMap3[size];
|
|
18758
|
-
if (combo <= 0) return null;
|
|
18759
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
18760
|
-
exports.Box,
|
|
18761
|
-
{
|
|
18762
|
-
className: cn(
|
|
18763
|
-
"inline-flex flex-col items-center justify-center",
|
|
18764
|
-
"rounded-container bg-card/80 border border-muted px-3 py-1.5",
|
|
18765
|
-
"transition-transform duration-200",
|
|
18766
|
-
getComboScale(combo),
|
|
18767
|
-
className
|
|
18768
|
-
),
|
|
18769
|
-
children: [
|
|
18770
|
-
assetUrl && /* @__PURE__ */ jsxRuntime.jsx(GameIcon, { assetUrl, icon: "image", size: 24, className: "flex-shrink-0 mb-0.5" }),
|
|
18771
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { as: "span", className: cn("font-black tabular-nums leading-none", sizes.combo, getComboIntensity(combo)), children: combo }),
|
|
18772
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { as: "span", className: cn("font-bold uppercase tracking-wider text-muted-foreground", sizes.label), children: "combo" }),
|
|
18773
|
-
multiplier != null && multiplier > 1 && /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { as: "span", className: cn("font-bold text-warning tabular-nums", sizes.multiplier), children: [
|
|
18774
|
-
"x",
|
|
18775
|
-
multiplier.toFixed(1)
|
|
18776
|
-
] }),
|
|
18777
|
-
streak != null && streak > 0 && /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { as: "span", className: cn("text-muted-foreground tabular-nums", sizes.label), children: [
|
|
18778
|
-
streak,
|
|
18779
|
-
" streak"
|
|
18780
|
-
] })
|
|
18781
|
-
]
|
|
18782
|
-
}
|
|
18783
|
-
);
|
|
18784
|
-
}
|
|
18785
|
-
var DEFAULT_ASSET_URL2, sizeMap3;
|
|
18786
|
-
var init_ComboCounter = __esm({
|
|
18787
|
-
"components/game/atoms/ComboCounter.tsx"() {
|
|
18788
|
-
init_cn();
|
|
18789
|
-
init_Box();
|
|
18790
|
-
init_Typography();
|
|
18791
|
-
init_GameIcon();
|
|
18792
|
-
DEFAULT_ASSET_URL2 = {
|
|
18793
|
-
url: "https://almadar-kflow-assets.web.app/shared/effects/flash/flash00.png",
|
|
18794
|
-
role: "effect",
|
|
18795
|
-
category: "effect"
|
|
18796
|
-
};
|
|
18797
|
-
sizeMap3 = {
|
|
18798
|
-
sm: { combo: "text-lg", label: "text-xs", multiplier: "text-xs" },
|
|
18799
|
-
md: { combo: "text-2xl", label: "text-xs", multiplier: "text-sm" },
|
|
18800
|
-
lg: { combo: "text-4xl", label: "text-sm", multiplier: "text-base" }
|
|
18801
|
-
};
|
|
18802
|
-
ComboCounter.displayName = "ComboCounter";
|
|
18803
|
-
}
|
|
18804
|
-
});
|
|
18805
18638
|
function formatCount(count) {
|
|
18806
18639
|
if (count >= 1e3) {
|
|
18807
18640
|
return `${(count / 1e3).toFixed(1)}k`;
|
|
@@ -19051,7 +18884,7 @@ function ControlButton({
|
|
|
19051
18884
|
"select-none touch-none",
|
|
19052
18885
|
"transition-all duration-100",
|
|
19053
18886
|
"active:scale-95",
|
|
19054
|
-
|
|
18887
|
+
sizeMap2[size] ?? sizeMap2.md,
|
|
19055
18888
|
shapeMap[shape] ?? shapeMap.circle,
|
|
19056
18889
|
variantMap[variant] ?? variantMap.secondary,
|
|
19057
18890
|
actualPressed && "scale-95 brightness-110 border-foreground",
|
|
@@ -19068,7 +18901,7 @@ function ControlButton({
|
|
|
19068
18901
|
}
|
|
19069
18902
|
);
|
|
19070
18903
|
}
|
|
19071
|
-
var
|
|
18904
|
+
var sizeMap2, shapeMap, variantMap;
|
|
19072
18905
|
var init_ControlButton = __esm({
|
|
19073
18906
|
"components/game/atoms/ControlButton.tsx"() {
|
|
19074
18907
|
"use client";
|
|
@@ -19079,7 +18912,7 @@ var init_ControlButton = __esm({
|
|
|
19079
18912
|
init_Box();
|
|
19080
18913
|
init_Typography();
|
|
19081
18914
|
init_GameIcon();
|
|
19082
|
-
|
|
18915
|
+
sizeMap2 = {
|
|
19083
18916
|
sm: "w-10 h-10 text-sm",
|
|
19084
18917
|
md: "w-14 h-14 text-base",
|
|
19085
18918
|
lg: "w-18 h-18 text-lg",
|
|
@@ -19520,67 +19353,6 @@ var init_CounterTemplate = __esm({
|
|
|
19520
19353
|
exports.CounterTemplate.displayName = "CounterTemplate";
|
|
19521
19354
|
}
|
|
19522
19355
|
});
|
|
19523
|
-
function DamageNumber({
|
|
19524
|
-
assetUrl = DEFAULT_ASSET_URL3,
|
|
19525
|
-
value = 42,
|
|
19526
|
-
type = "damage",
|
|
19527
|
-
size = "md",
|
|
19528
|
-
className
|
|
19529
|
-
}) {
|
|
19530
|
-
const displayText = type === "miss" ? "MISS" : type === "heal" ? `+${value}` : `${value}`;
|
|
19531
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
19532
|
-
/* @__PURE__ */ jsxRuntime.jsx("style", { children: floatKeyframes }),
|
|
19533
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
19534
|
-
exports.Typography,
|
|
19535
|
-
{
|
|
19536
|
-
as: "span",
|
|
19537
|
-
className: cn(
|
|
19538
|
-
"inline-flex items-center gap-0.5 font-mono select-none pointer-events-none",
|
|
19539
|
-
sizeMap5[size],
|
|
19540
|
-
typeStyles[type],
|
|
19541
|
-
className
|
|
19542
|
-
),
|
|
19543
|
-
style: { animation: "damageFloat 1s ease-out forwards" },
|
|
19544
|
-
children: [
|
|
19545
|
-
assetUrl && /* @__PURE__ */ jsxRuntime.jsx(GameIcon, { assetUrl, icon: "image", size: 14, className: "flex-shrink-0" }),
|
|
19546
|
-
displayText
|
|
19547
|
-
]
|
|
19548
|
-
}
|
|
19549
|
-
)
|
|
19550
|
-
] });
|
|
19551
|
-
}
|
|
19552
|
-
var sizeMap5, typeStyles, floatKeyframes, DEFAULT_ASSET_URL3;
|
|
19553
|
-
var init_DamageNumber = __esm({
|
|
19554
|
-
"components/game/atoms/DamageNumber.tsx"() {
|
|
19555
|
-
init_cn();
|
|
19556
|
-
init_Typography();
|
|
19557
|
-
init_GameIcon();
|
|
19558
|
-
sizeMap5 = {
|
|
19559
|
-
sm: "text-sm",
|
|
19560
|
-
md: "text-lg",
|
|
19561
|
-
lg: "text-2xl"
|
|
19562
|
-
};
|
|
19563
|
-
typeStyles = {
|
|
19564
|
-
damage: "text-error font-bold",
|
|
19565
|
-
heal: "text-success font-bold",
|
|
19566
|
-
crit: "text-warning font-extrabold",
|
|
19567
|
-
miss: "text-muted-foreground italic"
|
|
19568
|
-
};
|
|
19569
|
-
floatKeyframes = `
|
|
19570
|
-
@keyframes damageFloat {
|
|
19571
|
-
0% { opacity: 1; transform: translateY(0) scale(1); }
|
|
19572
|
-
20% { transform: translateY(-8px) scale(1.1); }
|
|
19573
|
-
100% { opacity: 0; transform: translateY(-32px) scale(0.8); }
|
|
19574
|
-
}
|
|
19575
|
-
`;
|
|
19576
|
-
DEFAULT_ASSET_URL3 = {
|
|
19577
|
-
url: "https://almadar-kflow-assets.web.app/shared/effects/particles/spark_01.png",
|
|
19578
|
-
role: "effect",
|
|
19579
|
-
category: "effect"
|
|
19580
|
-
};
|
|
19581
|
-
DamageNumber.displayName = "DamageNumber";
|
|
19582
|
-
}
|
|
19583
|
-
});
|
|
19584
19356
|
var gapStyles4, columnStyles, colSpanStyles, rowSpanStyles; exports.DashboardGrid = void 0;
|
|
19585
19357
|
var init_DashboardGrid = __esm({
|
|
19586
19358
|
"components/core/organisms/layout/DashboardGrid.tsx"() {
|
|
@@ -25755,13 +25527,13 @@ var init_LineChart = __esm({
|
|
|
25755
25527
|
exports.LineChart.displayName = "LineChart";
|
|
25756
25528
|
}
|
|
25757
25529
|
});
|
|
25758
|
-
var
|
|
25530
|
+
var sizeMap3, stateColors; exports.ProgressDots = void 0;
|
|
25759
25531
|
var init_ProgressDots = __esm({
|
|
25760
25532
|
"components/core/molecules/ProgressDots.tsx"() {
|
|
25761
25533
|
"use client";
|
|
25762
25534
|
init_cn();
|
|
25763
25535
|
init_atoms();
|
|
25764
|
-
|
|
25536
|
+
sizeMap3 = {
|
|
25765
25537
|
sm: { dot: 6, active: 8 },
|
|
25766
25538
|
md: { dot: 8, active: 10 },
|
|
25767
25539
|
lg: { dot: 10, active: 14 }
|
|
@@ -25787,7 +25559,7 @@ var init_ProgressDots = __esm({
|
|
|
25787
25559
|
[currentIndex]
|
|
25788
25560
|
);
|
|
25789
25561
|
const resolveState = getState2 ?? defaultGetState;
|
|
25790
|
-
const dims =
|
|
25562
|
+
const dims = sizeMap3[size];
|
|
25791
25563
|
return /* @__PURE__ */ jsxRuntime.jsx(exports.HStack, { gap: "xs", align: "center", className: cn(className), children: Array.from({ length: count }, (_, index) => {
|
|
25792
25564
|
const state = resolveState(index);
|
|
25793
25565
|
const isActive = state === "active";
|
|
@@ -25815,7 +25587,7 @@ var init_ProgressDots = __esm({
|
|
|
25815
25587
|
}
|
|
25816
25588
|
});
|
|
25817
25589
|
|
|
25818
|
-
//
|
|
25590
|
+
// lib/game.ts
|
|
25819
25591
|
function createInitialGameState(width, height, units, defaultTerrain = "floorStone") {
|
|
25820
25592
|
const board = Array.from(
|
|
25821
25593
|
{ length: height },
|
|
@@ -25885,11 +25657,11 @@ function calculateAttackTargets(state, unitId) {
|
|
|
25885
25657
|
return targets;
|
|
25886
25658
|
}
|
|
25887
25659
|
var init_game = __esm({
|
|
25888
|
-
"
|
|
25660
|
+
"lib/game.ts"() {
|
|
25889
25661
|
}
|
|
25890
25662
|
});
|
|
25891
25663
|
|
|
25892
|
-
//
|
|
25664
|
+
// lib/boardEntity.ts
|
|
25893
25665
|
function boardEntity(entity) {
|
|
25894
25666
|
if (!entity) return void 0;
|
|
25895
25667
|
return Array.isArray(entity) ? entity[0] : entity;
|
|
@@ -25921,11 +25693,11 @@ function unitHealth(u) {
|
|
|
25921
25693
|
return num(u.health);
|
|
25922
25694
|
}
|
|
25923
25695
|
var init_boardEntity = __esm({
|
|
25924
|
-
"
|
|
25696
|
+
"lib/boardEntity.ts"() {
|
|
25925
25697
|
}
|
|
25926
25698
|
});
|
|
25927
25699
|
|
|
25928
|
-
//
|
|
25700
|
+
// lib/makeAsset.ts
|
|
25929
25701
|
function makeAsset(url, role, overrides = {}) {
|
|
25930
25702
|
const defaults = ROLE_DEFAULTS[role] ?? { dimension: "2d", animations: ["static"], aspect: "1:1" };
|
|
25931
25703
|
return {
|
|
@@ -25945,7 +25717,7 @@ function makeAssetMap(record, role, overrides = {}) {
|
|
|
25945
25717
|
}
|
|
25946
25718
|
var ROLE_DEFAULTS;
|
|
25947
25719
|
var init_makeAsset = __esm({
|
|
25948
|
-
"
|
|
25720
|
+
"lib/makeAsset.ts"() {
|
|
25949
25721
|
ROLE_DEFAULTS = {
|
|
25950
25722
|
tile: { dimension: "2d", animations: ["static"], aspect: "1:1" },
|
|
25951
25723
|
decoration: { dimension: "2d", animations: ["static"], aspect: "1:1" },
|
|
@@ -25961,10 +25733,10 @@ var init_makeAsset = __esm({
|
|
|
25961
25733
|
}
|
|
25962
25734
|
});
|
|
25963
25735
|
|
|
25964
|
-
//
|
|
25736
|
+
// lib/spriteSheetConstants.ts
|
|
25965
25737
|
exports.SHEET_COLUMNS = void 0; exports.SPRITE_SHEET_LAYOUT = void 0;
|
|
25966
25738
|
var init_spriteSheetConstants = __esm({
|
|
25967
|
-
"
|
|
25739
|
+
"lib/spriteSheetConstants.ts"() {
|
|
25968
25740
|
exports.SHEET_COLUMNS = 8;
|
|
25969
25741
|
exports.SPRITE_SHEET_LAYOUT = {
|
|
25970
25742
|
idle: { row: 0, frames: 4, frameRate: 6, loop: true },
|
|
@@ -25976,7 +25748,7 @@ var init_spriteSheetConstants = __esm({
|
|
|
25976
25748
|
}
|
|
25977
25749
|
});
|
|
25978
25750
|
|
|
25979
|
-
//
|
|
25751
|
+
// lib/spriteAnimation.ts
|
|
25980
25752
|
function inferDirection(dx, dy) {
|
|
25981
25753
|
if (dx === 0 && dy === 0) return "se";
|
|
25982
25754
|
if (dx >= 0 && dy >= 0) return "se";
|
|
@@ -26084,14 +25856,14 @@ function tickAnimationState(state, deltaMs) {
|
|
|
26084
25856
|
return { ...state, elapsed: newElapsed, frame, finished };
|
|
26085
25857
|
}
|
|
26086
25858
|
var init_spriteAnimation = __esm({
|
|
26087
|
-
"
|
|
25859
|
+
"lib/spriteAnimation.ts"() {
|
|
26088
25860
|
init_spriteSheetConstants();
|
|
26089
25861
|
}
|
|
26090
25862
|
});
|
|
26091
25863
|
|
|
26092
|
-
//
|
|
26093
|
-
var
|
|
26094
|
-
"
|
|
25864
|
+
// lib/gameShared.ts
|
|
25865
|
+
var init_gameShared = __esm({
|
|
25866
|
+
"lib/gameShared.ts"() {
|
|
26095
25867
|
init_game();
|
|
26096
25868
|
init_boardEntity();
|
|
26097
25869
|
init_makeAsset();
|
|
@@ -26101,103 +25873,6 @@ var init_lib = __esm({
|
|
|
26101
25873
|
init_spriteSheetConstants();
|
|
26102
25874
|
}
|
|
26103
25875
|
});
|
|
26104
|
-
function GameCard({
|
|
26105
|
-
id,
|
|
26106
|
-
cost,
|
|
26107
|
-
art,
|
|
26108
|
-
frameAsset,
|
|
26109
|
-
attack,
|
|
26110
|
-
defense,
|
|
26111
|
-
name,
|
|
26112
|
-
selected = false,
|
|
26113
|
-
disabled = false,
|
|
26114
|
-
size = "md",
|
|
26115
|
-
animState = "idle",
|
|
26116
|
-
onClick,
|
|
26117
|
-
clickEvent,
|
|
26118
|
-
className
|
|
26119
|
-
}) {
|
|
26120
|
-
const eventBus = useEventBus();
|
|
26121
|
-
const handleClick = React73__namespace.useCallback(() => {
|
|
26122
|
-
if (disabled) return;
|
|
26123
|
-
onClick?.(id);
|
|
26124
|
-
if (clickEvent) eventBus.emit(`UI:${clickEvent}`, { cardId: id });
|
|
26125
|
-
}, [disabled, id, onClick, clickEvent, eventBus]);
|
|
26126
|
-
const artPx = artPxMap[size];
|
|
26127
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26128
|
-
exports.Button,
|
|
26129
|
-
{
|
|
26130
|
-
variant: "ghost",
|
|
26131
|
-
onClick: handleClick,
|
|
26132
|
-
disabled,
|
|
26133
|
-
title: name,
|
|
26134
|
-
className: cn(
|
|
26135
|
-
"relative isolate flex flex-col items-center rounded-interactive",
|
|
26136
|
-
"px-1.5 pt-1.5 pb-1 transition-all duration-150",
|
|
26137
|
-
frameAsset?.url ? "border-0" : "border-2 bg-card/90",
|
|
26138
|
-
cardSizeMap[size],
|
|
26139
|
-
disabled ? "border-border opacity-50 cursor-not-allowed" : "border-accent hover:brightness-125 hover:-translate-y-1 cursor-pointer",
|
|
26140
|
-
selected && "ring-2 ring-foreground ring-offset-1 ring-offset-background -translate-y-1",
|
|
26141
|
-
ANIM_STATE_CLASS[animState],
|
|
26142
|
-
className
|
|
26143
|
-
),
|
|
26144
|
-
children: [
|
|
26145
|
-
frameAsset?.url && /* @__PURE__ */ jsxRuntime.jsx(AtlasImage, { asset: frameAsset, fill: true, fit: "fill", "aria-hidden": true, style: { zIndex: -1 } }),
|
|
26146
|
-
cost != null && /* @__PURE__ */ jsxRuntime.jsx(
|
|
26147
|
-
exports.Typography,
|
|
26148
|
-
{
|
|
26149
|
-
as: "span",
|
|
26150
|
-
className: cn(
|
|
26151
|
-
"absolute -top-2 -left-2 flex items-center justify-center",
|
|
26152
|
-
"min-w-[22px] h-[22px] rounded-full px-1",
|
|
26153
|
-
"bg-info text-foreground text-xs font-bold border border-background"
|
|
26154
|
-
),
|
|
26155
|
-
children: cost
|
|
26156
|
-
}
|
|
26157
|
-
),
|
|
26158
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "flex-1 flex items-center justify-center w-full", children: art ? /* @__PURE__ */ jsxRuntime.jsx(GameIcon, { assetUrl: art, icon: "image", size: artPx, alt: name ?? id, className: "flex-shrink-0" }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "rounded bg-muted/40", style: { width: artPx, height: artPx } }) }),
|
|
26159
|
-
name != null && /* @__PURE__ */ jsxRuntime.jsx(
|
|
26160
|
-
exports.Typography,
|
|
26161
|
-
{
|
|
26162
|
-
variant: "small",
|
|
26163
|
-
className: "w-full truncate text-center text-[10px] leading-tight font-semibold",
|
|
26164
|
-
children: name
|
|
26165
|
-
}
|
|
26166
|
-
),
|
|
26167
|
-
(attack != null || defense != null) && /* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "flex w-full items-center justify-between px-0.5 text-[10px] font-bold leading-none", children: [
|
|
26168
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { as: "span", className: "text-error", children: attack != null ? `\u2694${attack}` : "" }),
|
|
26169
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { as: "span", className: "text-info", children: defense != null ? `\u{1F6E1}${defense}` : "" })
|
|
26170
|
-
] })
|
|
26171
|
-
]
|
|
26172
|
-
}
|
|
26173
|
-
);
|
|
26174
|
-
}
|
|
26175
|
-
var cardSizeMap, artPxMap, ANIM_STATE_CLASS;
|
|
26176
|
-
var init_GameCard = __esm({
|
|
26177
|
-
"components/game/atoms/GameCard.tsx"() {
|
|
26178
|
-
"use client";
|
|
26179
|
-
init_cn();
|
|
26180
|
-
init_useEventBus();
|
|
26181
|
-
init_Box();
|
|
26182
|
-
init_Button();
|
|
26183
|
-
init_Typography();
|
|
26184
|
-
init_AtlasImage();
|
|
26185
|
-
init_GameIcon();
|
|
26186
|
-
cardSizeMap = {
|
|
26187
|
-
sm: "w-16 h-24",
|
|
26188
|
-
md: "w-20 h-28",
|
|
26189
|
-
lg: "w-24 h-36"
|
|
26190
|
-
};
|
|
26191
|
-
artPxMap = { sm: 40, md: 52, lg: 64 };
|
|
26192
|
-
ANIM_STATE_CLASS = {
|
|
26193
|
-
idle: "",
|
|
26194
|
-
drawn: "scale-105",
|
|
26195
|
-
played: "-translate-y-2 opacity-80",
|
|
26196
|
-
flipped: "scale-x-0"
|
|
26197
|
-
};
|
|
26198
|
-
GameCard.displayName = "GameCard";
|
|
26199
|
-
}
|
|
26200
|
-
});
|
|
26201
25876
|
function HealthBar({
|
|
26202
25877
|
current = 3,
|
|
26203
25878
|
max = 5,
|
|
@@ -26211,7 +25886,7 @@ function HealthBar({
|
|
|
26211
25886
|
frameAsset,
|
|
26212
25887
|
fillAsset
|
|
26213
25888
|
}) {
|
|
26214
|
-
const sizes =
|
|
25889
|
+
const sizes = sizeMap4[size];
|
|
26215
25890
|
const percentage = max > 0 ? Math.max(0, Math.min(100, current / max * 100)) : 0;
|
|
26216
25891
|
if (format === "hearts") {
|
|
26217
25892
|
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: cn("flex items-center gap-1", className), children: Array.from({ length: max }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -26316,7 +25991,7 @@ function HealthBar({
|
|
|
26316
25991
|
max
|
|
26317
25992
|
] });
|
|
26318
25993
|
}
|
|
26319
|
-
var heartIcon,
|
|
25994
|
+
var heartIcon, sizeMap4;
|
|
26320
25995
|
var init_HealthBar = __esm({
|
|
26321
25996
|
"components/game/atoms/HealthBar.tsx"() {
|
|
26322
25997
|
init_cn();
|
|
@@ -26333,7 +26008,7 @@ var init_HealthBar = __esm({
|
|
|
26333
26008
|
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" })
|
|
26334
26009
|
}
|
|
26335
26010
|
);
|
|
26336
|
-
|
|
26011
|
+
sizeMap4 = {
|
|
26337
26012
|
sm: { heart: "w-4 h-4", bar: "h-2", text: "text-sm", label: "text-xs", badge: "text-xs px-1.5 py-0.5" },
|
|
26338
26013
|
md: { heart: "w-6 h-6", bar: "h-3", text: "text-base", label: "text-xs", badge: "text-xs px-2 py-0.5" },
|
|
26339
26014
|
lg: { heart: "w-8 h-8", bar: "h-4", text: "text-lg", label: "text-sm", badge: "text-sm px-2.5 py-1" }
|
|
@@ -26358,7 +26033,7 @@ function ScoreDisplay({
|
|
|
26358
26033
|
{
|
|
26359
26034
|
className: cn(
|
|
26360
26035
|
"flex items-center gap-2 font-bold",
|
|
26361
|
-
|
|
26036
|
+
sizeMap5[size],
|
|
26362
26037
|
className
|
|
26363
26038
|
),
|
|
26364
26039
|
children: [
|
|
@@ -26369,7 +26044,7 @@ function ScoreDisplay({
|
|
|
26369
26044
|
}
|
|
26370
26045
|
);
|
|
26371
26046
|
}
|
|
26372
|
-
var
|
|
26047
|
+
var sizeMap5;
|
|
26373
26048
|
var init_ScoreDisplay = __esm({
|
|
26374
26049
|
"components/game/atoms/ScoreDisplay.tsx"() {
|
|
26375
26050
|
init_cn();
|
|
@@ -26377,7 +26052,7 @@ var init_ScoreDisplay = __esm({
|
|
|
26377
26052
|
init_Box();
|
|
26378
26053
|
init_Typography();
|
|
26379
26054
|
init_GameIcon();
|
|
26380
|
-
|
|
26055
|
+
sizeMap5 = {
|
|
26381
26056
|
sm: "text-sm",
|
|
26382
26057
|
md: "text-lg",
|
|
26383
26058
|
lg: "text-2xl",
|
|
@@ -26386,192 +26061,6 @@ var init_ScoreDisplay = __esm({
|
|
|
26386
26061
|
ScoreDisplay.displayName = "ScoreDisplay";
|
|
26387
26062
|
}
|
|
26388
26063
|
});
|
|
26389
|
-
function Sprite({
|
|
26390
|
-
spritesheet = DEFAULT_SPRITESHEET,
|
|
26391
|
-
frameWidth = 64,
|
|
26392
|
-
frameHeight = 64,
|
|
26393
|
-
frame = 0,
|
|
26394
|
-
x = 0,
|
|
26395
|
-
y = 0,
|
|
26396
|
-
scale = 1,
|
|
26397
|
-
flipX = false,
|
|
26398
|
-
flipY = false,
|
|
26399
|
-
rotation = 0,
|
|
26400
|
-
opacity = 1,
|
|
26401
|
-
zIndex = 0,
|
|
26402
|
-
columns = 16,
|
|
26403
|
-
animState: _animState,
|
|
26404
|
-
frameRate: _frameRate,
|
|
26405
|
-
className,
|
|
26406
|
-
onClick,
|
|
26407
|
-
action
|
|
26408
|
-
}) {
|
|
26409
|
-
const eventBus = useEventBus();
|
|
26410
|
-
const sourcePosition = React73.useMemo(() => {
|
|
26411
|
-
const { sx, sy } = frameRect(frame, Math.floor(frame / columns), columns, frameWidth, frameHeight);
|
|
26412
|
-
return { x: sx, y: sy };
|
|
26413
|
-
}, [frame, columns, frameWidth, frameHeight]);
|
|
26414
|
-
const transform = React73.useMemo(() => {
|
|
26415
|
-
const transforms = [
|
|
26416
|
-
`translate(${x}px, ${y}px)`
|
|
26417
|
-
];
|
|
26418
|
-
if (scale !== 1) {
|
|
26419
|
-
transforms.push(`scale(${scale})`);
|
|
26420
|
-
}
|
|
26421
|
-
if (flipX || flipY) {
|
|
26422
|
-
transforms.push(`scale(${flipX ? -1 : 1}, ${flipY ? -1 : 1})`);
|
|
26423
|
-
}
|
|
26424
|
-
if (rotation !== 0) {
|
|
26425
|
-
transforms.push(`rotate(${rotation}deg)`);
|
|
26426
|
-
}
|
|
26427
|
-
return transforms.join(" ");
|
|
26428
|
-
}, [x, y, scale, flipX, flipY, rotation]);
|
|
26429
|
-
const backgroundPosition = `-${sourcePosition.x}px -${sourcePosition.y}px`;
|
|
26430
|
-
const handleClick = () => {
|
|
26431
|
-
if (action) eventBus.emit(`UI:${action}`, {});
|
|
26432
|
-
onClick?.();
|
|
26433
|
-
};
|
|
26434
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26435
|
-
exports.Box,
|
|
26436
|
-
{
|
|
26437
|
-
position: "absolute",
|
|
26438
|
-
className,
|
|
26439
|
-
onClick: action || onClick ? handleClick : void 0,
|
|
26440
|
-
style: {
|
|
26441
|
-
width: frameWidth,
|
|
26442
|
-
height: frameHeight,
|
|
26443
|
-
backgroundImage: `url(${spritesheet.url})`,
|
|
26444
|
-
backgroundPosition,
|
|
26445
|
-
backgroundRepeat: "no-repeat",
|
|
26446
|
-
imageRendering: "pixelated",
|
|
26447
|
-
transform,
|
|
26448
|
-
transformOrigin: "center center",
|
|
26449
|
-
opacity,
|
|
26450
|
-
zIndex,
|
|
26451
|
-
pointerEvents: action || onClick ? "auto" : "none"
|
|
26452
|
-
}
|
|
26453
|
-
}
|
|
26454
|
-
);
|
|
26455
|
-
}
|
|
26456
|
-
function drawSprite(ctx, image, props) {
|
|
26457
|
-
const {
|
|
26458
|
-
frameWidth,
|
|
26459
|
-
frameHeight,
|
|
26460
|
-
frame,
|
|
26461
|
-
x,
|
|
26462
|
-
y,
|
|
26463
|
-
scale = 1,
|
|
26464
|
-
flipX = false,
|
|
26465
|
-
flipY = false,
|
|
26466
|
-
rotation = 0,
|
|
26467
|
-
opacity = 1,
|
|
26468
|
-
columns = 16
|
|
26469
|
-
} = props;
|
|
26470
|
-
const { sx: sourceX, sy: sourceY } = frameRect(frame, Math.floor(frame / columns), columns, frameWidth, frameHeight);
|
|
26471
|
-
ctx.save();
|
|
26472
|
-
ctx.globalAlpha = opacity;
|
|
26473
|
-
ctx.translate(x + frameWidth / 2, y + frameHeight / 2);
|
|
26474
|
-
if (rotation !== 0) {
|
|
26475
|
-
ctx.rotate(rotation * Math.PI / 180);
|
|
26476
|
-
}
|
|
26477
|
-
ctx.scale(scale * (flipX ? -1 : 1), scale * (flipY ? -1 : 1));
|
|
26478
|
-
ctx.drawImage(
|
|
26479
|
-
image,
|
|
26480
|
-
sourceX,
|
|
26481
|
-
sourceY,
|
|
26482
|
-
frameWidth,
|
|
26483
|
-
frameHeight,
|
|
26484
|
-
-frameWidth / 2,
|
|
26485
|
-
-frameHeight / 2,
|
|
26486
|
-
frameWidth,
|
|
26487
|
-
frameHeight
|
|
26488
|
-
);
|
|
26489
|
-
ctx.restore();
|
|
26490
|
-
}
|
|
26491
|
-
var DEFAULT_SPRITESHEET;
|
|
26492
|
-
var init_Sprite = __esm({
|
|
26493
|
-
"components/game/atoms/Sprite.tsx"() {
|
|
26494
|
-
"use client";
|
|
26495
|
-
init_useEventBus();
|
|
26496
|
-
init_Box();
|
|
26497
|
-
init_spriteAnimation();
|
|
26498
|
-
DEFAULT_SPRITESHEET = {
|
|
26499
|
-
url: "https://almadar-kflow-assets.web.app/shared/isometric-blocks/Spritesheet/allTiles_sheet.png",
|
|
26500
|
-
role: "tile",
|
|
26501
|
-
category: "tile"
|
|
26502
|
-
};
|
|
26503
|
-
}
|
|
26504
|
-
});
|
|
26505
|
-
function isKnownState(s) {
|
|
26506
|
-
return s in DEFAULT_STATE_STYLES;
|
|
26507
|
-
}
|
|
26508
|
-
function StateIndicator({
|
|
26509
|
-
assetUrl = DEFAULT_ASSET_URL4,
|
|
26510
|
-
state = "idle",
|
|
26511
|
-
label,
|
|
26512
|
-
size = "md",
|
|
26513
|
-
animated = true,
|
|
26514
|
-
stateStyles,
|
|
26515
|
-
className
|
|
26516
|
-
}) {
|
|
26517
|
-
const mergedStyles = stateStyles ? { ...DEFAULT_STATE_STYLES, ...stateStyles } : DEFAULT_STATE_STYLES;
|
|
26518
|
-
const knownState = isKnownState(state) ? state : null;
|
|
26519
|
-
const config = knownState !== null ? mergedStyles[knownState] ?? DEFAULT_STYLE : DEFAULT_STYLE;
|
|
26520
|
-
const displayLabel = label ?? state.charAt(0).toUpperCase() + state.slice(1);
|
|
26521
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26522
|
-
exports.Box,
|
|
26523
|
-
{
|
|
26524
|
-
display: "inline-flex",
|
|
26525
|
-
className: cn(
|
|
26526
|
-
"items-center gap-1 rounded-full text-foreground font-medium",
|
|
26527
|
-
config.bgClass,
|
|
26528
|
-
SIZE_CLASSES[size],
|
|
26529
|
-
animated && (knownState === null || !STATIC_STATES.has(knownState)) && "animate-pulse",
|
|
26530
|
-
className
|
|
26531
|
-
),
|
|
26532
|
-
children: [
|
|
26533
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { as: "span", children: assetUrl ? /* @__PURE__ */ jsxRuntime.jsx(GameIcon, { assetUrl, icon: "image", size: 16, alt: displayLabel, className: "flex-shrink-0" }) : typeof config.icon === "string" ? /^[a-zA-Z0-9-]+$/.test(config.icon) ? /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: config.icon }) : config.icon : /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: config.icon }) }),
|
|
26534
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { as: "span", children: displayLabel })
|
|
26535
|
-
]
|
|
26536
|
-
}
|
|
26537
|
-
);
|
|
26538
|
-
}
|
|
26539
|
-
var DEFAULT_ASSET_URL4, DEFAULT_STATE_STYLES, DEFAULT_STYLE, STATIC_STATES, SIZE_CLASSES;
|
|
26540
|
-
var init_StateIndicator = __esm({
|
|
26541
|
-
"components/game/atoms/StateIndicator.tsx"() {
|
|
26542
|
-
init_Box();
|
|
26543
|
-
init_Icon();
|
|
26544
|
-
init_cn();
|
|
26545
|
-
init_GameIcon();
|
|
26546
|
-
DEFAULT_ASSET_URL4 = {
|
|
26547
|
-
url: "https://almadar-kflow-assets.web.app/shared/isometric-dungeon/Isometric/chestClosed_E.png",
|
|
26548
|
-
role: "ui",
|
|
26549
|
-
category: "state"
|
|
26550
|
-
};
|
|
26551
|
-
DEFAULT_STATE_STYLES = {
|
|
26552
|
-
idle: { icon: "\u23F8", bgClass: "bg-muted" },
|
|
26553
|
-
active: { icon: "\u25B6", bgClass: "bg-success" },
|
|
26554
|
-
sleeping: { icon: "\u{1F4A4}", bgClass: "bg-muted" },
|
|
26555
|
-
moving: { icon: "\u{1F6B6}", bgClass: "bg-info" },
|
|
26556
|
-
eating: { icon: "\u{1F37D}\uFE0F", bgClass: "bg-success" },
|
|
26557
|
-
waiting: { icon: "\u23F3", bgClass: "bg-warning" },
|
|
26558
|
-
happy: { icon: "\u{1F60A}", bgClass: "bg-success" },
|
|
26559
|
-
scared: { icon: "\u{1F628}", bgClass: "bg-error" },
|
|
26560
|
-
done: { icon: "\u2713", bgClass: "bg-success" },
|
|
26561
|
-
error: { icon: "\u2717", bgClass: "bg-error" },
|
|
26562
|
-
ready: { icon: "\u2713", bgClass: "bg-success" },
|
|
26563
|
-
cooldown: { icon: "\u{1F504}", bgClass: "bg-warning" }
|
|
26564
|
-
};
|
|
26565
|
-
DEFAULT_STYLE = { icon: "?", bgClass: "bg-muted" };
|
|
26566
|
-
STATIC_STATES = /* @__PURE__ */ new Set(["idle", "done"]);
|
|
26567
|
-
SIZE_CLASSES = {
|
|
26568
|
-
sm: "text-xs px-1.5 py-0.5",
|
|
26569
|
-
md: "text-sm px-2 py-1",
|
|
26570
|
-
lg: "text-base px-3 py-1.5"
|
|
26571
|
-
};
|
|
26572
|
-
StateIndicator.displayName = "StateIndicator";
|
|
26573
|
-
}
|
|
26574
|
-
});
|
|
26575
26064
|
function formatTime(seconds, format) {
|
|
26576
26065
|
const clamped = Math.max(0, Math.floor(seconds));
|
|
26577
26066
|
if (format === "ss") {
|
|
@@ -26601,7 +26090,7 @@ function TimerDisplay({
|
|
|
26601
26090
|
className: cn(
|
|
26602
26091
|
"inline-flex items-center gap-1 justify-center rounded-container",
|
|
26603
26092
|
"bg-card/80 border border-muted font-mono font-bold tabular-nums",
|
|
26604
|
-
|
|
26093
|
+
sizeMap6[size],
|
|
26605
26094
|
running && "border-success/50",
|
|
26606
26095
|
isLow && "text-error border-error/50 animate-pulse",
|
|
26607
26096
|
!isLow && "text-foreground",
|
|
@@ -26614,13 +26103,13 @@ function TimerDisplay({
|
|
|
26614
26103
|
}
|
|
26615
26104
|
);
|
|
26616
26105
|
}
|
|
26617
|
-
var
|
|
26106
|
+
var sizeMap6;
|
|
26618
26107
|
var init_TimerDisplay = __esm({
|
|
26619
26108
|
"components/game/atoms/TimerDisplay.tsx"() {
|
|
26620
26109
|
init_cn();
|
|
26621
26110
|
init_Box();
|
|
26622
26111
|
init_GameIcon();
|
|
26623
|
-
|
|
26112
|
+
sizeMap6 = {
|
|
26624
26113
|
sm: "text-sm px-2 py-0.5",
|
|
26625
26114
|
md: "text-lg px-3 py-1",
|
|
26626
26115
|
lg: "text-2xl px-4 py-1.5"
|
|
@@ -26628,396 +26117,6 @@ var init_TimerDisplay = __esm({
|
|
|
26628
26117
|
TimerDisplay.displayName = "TimerDisplay";
|
|
26629
26118
|
}
|
|
26630
26119
|
});
|
|
26631
|
-
function ResourceCounter({
|
|
26632
|
-
assetUrl = DEFAULT_ASSET_URL5,
|
|
26633
|
-
icon,
|
|
26634
|
-
label = "Gold",
|
|
26635
|
-
value = 250,
|
|
26636
|
-
max,
|
|
26637
|
-
color,
|
|
26638
|
-
size = "md",
|
|
26639
|
-
className
|
|
26640
|
-
}) {
|
|
26641
|
-
const sizes = sizeMap10[size];
|
|
26642
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26643
|
-
exports.Box,
|
|
26644
|
-
{
|
|
26645
|
-
className: cn(
|
|
26646
|
-
"inline-flex items-center rounded-container",
|
|
26647
|
-
"bg-card/80 border border-muted font-medium text-foreground",
|
|
26648
|
-
sizes.wrapper,
|
|
26649
|
-
className
|
|
26650
|
-
),
|
|
26651
|
-
children: [
|
|
26652
|
-
assetUrl ? /* @__PURE__ */ jsxRuntime.jsx(GameIcon, { assetUrl, icon: "image", size: sizes.img, alt: label, className: "flex-shrink-0" }) : icon ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { as: "span", className: cn("flex-shrink-0", sizes.icon), children: typeof icon === "string" ? /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: icon }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon }) }) : null,
|
|
26653
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { as: "span", className: "text-muted-foreground", children: label }),
|
|
26654
|
-
/* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { as: "span", className: cn("font-bold tabular-nums", color && (color in colorTokenClasses2 ? colorTokenClasses2[color] : color)), children: [
|
|
26655
|
-
value,
|
|
26656
|
-
max != null && /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { as: "span", className: "text-muted-foreground", children: [
|
|
26657
|
-
"/",
|
|
26658
|
-
max
|
|
26659
|
-
] })
|
|
26660
|
-
] })
|
|
26661
|
-
]
|
|
26662
|
-
}
|
|
26663
|
-
);
|
|
26664
|
-
}
|
|
26665
|
-
var colorTokenClasses2, DEFAULT_ASSET_URL5, sizeMap10;
|
|
26666
|
-
var init_ResourceCounter = __esm({
|
|
26667
|
-
"components/game/atoms/ResourceCounter.tsx"() {
|
|
26668
|
-
init_cn();
|
|
26669
|
-
init_Icon();
|
|
26670
|
-
init_Box();
|
|
26671
|
-
init_Typography();
|
|
26672
|
-
init_GameIcon();
|
|
26673
|
-
colorTokenClasses2 = {
|
|
26674
|
-
primary: "text-primary",
|
|
26675
|
-
secondary: "text-secondary",
|
|
26676
|
-
success: "text-success",
|
|
26677
|
-
warning: "text-warning",
|
|
26678
|
-
error: "text-error",
|
|
26679
|
-
muted: "text-muted-foreground"
|
|
26680
|
-
};
|
|
26681
|
-
DEFAULT_ASSET_URL5 = {
|
|
26682
|
-
url: "https://almadar-kflow-assets.web.app/shared/world-map/gold_mine.png",
|
|
26683
|
-
role: "ui",
|
|
26684
|
-
category: "coin"
|
|
26685
|
-
};
|
|
26686
|
-
sizeMap10 = {
|
|
26687
|
-
sm: { wrapper: "text-xs gap-1 px-1.5 py-0.5", icon: "text-sm", img: 16 },
|
|
26688
|
-
md: { wrapper: "text-sm gap-1.5 px-2 py-1", icon: "text-base", img: 20 },
|
|
26689
|
-
lg: { wrapper: "text-base gap-2 px-3 py-1.5", icon: "text-lg", img: 28 }
|
|
26690
|
-
};
|
|
26691
|
-
ResourceCounter.displayName = "ResourceCounter";
|
|
26692
|
-
}
|
|
26693
|
-
});
|
|
26694
|
-
function ItemSlot({
|
|
26695
|
-
assetUrl = DEFAULT_ASSET_URL6,
|
|
26696
|
-
icon = "sword",
|
|
26697
|
-
label = "Iron Sword",
|
|
26698
|
-
quantity,
|
|
26699
|
-
rarity = "uncommon",
|
|
26700
|
-
empty,
|
|
26701
|
-
size = "md",
|
|
26702
|
-
selected,
|
|
26703
|
-
onClick,
|
|
26704
|
-
action,
|
|
26705
|
-
className
|
|
26706
|
-
}) {
|
|
26707
|
-
const eventBus = useEventBus();
|
|
26708
|
-
const isClickable = onClick != null || action != null;
|
|
26709
|
-
const px = assetSizeMap[size];
|
|
26710
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26711
|
-
exports.Button,
|
|
26712
|
-
{
|
|
26713
|
-
variant: "ghost",
|
|
26714
|
-
onClick: () => {
|
|
26715
|
-
if (action) eventBus.emit(`UI:${action}`, {});
|
|
26716
|
-
onClick?.();
|
|
26717
|
-
},
|
|
26718
|
-
disabled: !isClickable,
|
|
26719
|
-
title: label,
|
|
26720
|
-
className: cn(
|
|
26721
|
-
"relative flex items-center justify-center rounded-interactive border-2",
|
|
26722
|
-
"bg-card/80 transition-all duration-150",
|
|
26723
|
-
sizeMap11[size],
|
|
26724
|
-
empty ? "border-border bg-card/50" : rarityBorderMap[rarity],
|
|
26725
|
-
!empty && rarityGlowMap[rarity],
|
|
26726
|
-
selected && "ring-2 ring-foreground ring-offset-1 ring-offset-background",
|
|
26727
|
-
isClickable && !empty && "hover:brightness-125 cursor-pointer",
|
|
26728
|
-
isClickable && empty && "hover:border-muted cursor-pointer",
|
|
26729
|
-
!isClickable && "cursor-default",
|
|
26730
|
-
className
|
|
26731
|
-
),
|
|
26732
|
-
children: empty ? /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { as: "span", className: "text-muted-foreground text-base", children: "+" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
26733
|
-
assetUrl ? /* @__PURE__ */ jsxRuntime.jsx(GameIcon, { assetUrl, icon: "image", size: px, alt: label, className: "flex-shrink-0" }) : icon ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { as: "span", className: "flex-shrink-0", children: typeof icon === "string" ? /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: icon }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon }) }) : null,
|
|
26734
|
-
quantity != null && quantity > 1 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
26735
|
-
exports.Typography,
|
|
26736
|
-
{
|
|
26737
|
-
as: "span",
|
|
26738
|
-
className: cn(
|
|
26739
|
-
"absolute -bottom-1 -right-1 flex items-center justify-center",
|
|
26740
|
-
"min-w-[18px] h-[18px] rounded-full px-1",
|
|
26741
|
-
"bg-surface border border-muted text-xs font-bold text-foreground"
|
|
26742
|
-
),
|
|
26743
|
-
children: quantity
|
|
26744
|
-
}
|
|
26745
|
-
)
|
|
26746
|
-
] })
|
|
26747
|
-
}
|
|
26748
|
-
);
|
|
26749
|
-
}
|
|
26750
|
-
var sizeMap11, rarityBorderMap, rarityGlowMap, DEFAULT_ASSET_URL6, assetSizeMap;
|
|
26751
|
-
var init_ItemSlot = __esm({
|
|
26752
|
-
"components/game/atoms/ItemSlot.tsx"() {
|
|
26753
|
-
"use client";
|
|
26754
|
-
init_cn();
|
|
26755
|
-
init_Icon();
|
|
26756
|
-
init_useEventBus();
|
|
26757
|
-
init_Button();
|
|
26758
|
-
init_Box();
|
|
26759
|
-
init_Typography();
|
|
26760
|
-
init_GameIcon();
|
|
26761
|
-
sizeMap11 = {
|
|
26762
|
-
sm: "w-10 h-10 text-lg",
|
|
26763
|
-
md: "w-14 h-14 text-2xl",
|
|
26764
|
-
lg: "w-18 h-18 text-3xl"
|
|
26765
|
-
};
|
|
26766
|
-
rarityBorderMap = {
|
|
26767
|
-
common: "border-muted",
|
|
26768
|
-
uncommon: "border-success",
|
|
26769
|
-
rare: "border-info",
|
|
26770
|
-
epic: "border-accent",
|
|
26771
|
-
legendary: "border-warning"
|
|
26772
|
-
};
|
|
26773
|
-
rarityGlowMap = {
|
|
26774
|
-
common: "",
|
|
26775
|
-
uncommon: "",
|
|
26776
|
-
rare: "shadow-sm",
|
|
26777
|
-
epic: "shadow-lg",
|
|
26778
|
-
legendary: "shadow-lg"
|
|
26779
|
-
};
|
|
26780
|
-
DEFAULT_ASSET_URL6 = {
|
|
26781
|
-
url: "https://almadar-kflow-assets.web.app/shared/isometric-dungeon/Isometric/chestClosed_E.png",
|
|
26782
|
-
role: "item",
|
|
26783
|
-
category: "item"
|
|
26784
|
-
};
|
|
26785
|
-
assetSizeMap = {
|
|
26786
|
-
sm: 28,
|
|
26787
|
-
md: 40,
|
|
26788
|
-
lg: 56
|
|
26789
|
-
};
|
|
26790
|
-
ItemSlot.displayName = "ItemSlot";
|
|
26791
|
-
}
|
|
26792
|
-
});
|
|
26793
|
-
function TurnIndicator({
|
|
26794
|
-
assetUrl = DEFAULT_ASSET_URL7,
|
|
26795
|
-
currentTurn = 1,
|
|
26796
|
-
maxTurns,
|
|
26797
|
-
activeTeam,
|
|
26798
|
-
phase,
|
|
26799
|
-
size = "md",
|
|
26800
|
-
className
|
|
26801
|
-
}) {
|
|
26802
|
-
const sizes = sizeMap12[size];
|
|
26803
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26804
|
-
exports.Box,
|
|
26805
|
-
{
|
|
26806
|
-
className: cn(
|
|
26807
|
-
"inline-flex items-center rounded-container",
|
|
26808
|
-
"bg-card/80 border border-muted font-medium text-foreground",
|
|
26809
|
-
sizes.wrapper,
|
|
26810
|
-
className
|
|
26811
|
-
),
|
|
26812
|
-
children: [
|
|
26813
|
-
/* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { as: "span", className: "font-bold tabular-nums", children: [
|
|
26814
|
-
"Turn ",
|
|
26815
|
-
currentTurn,
|
|
26816
|
-
maxTurns != null && /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { as: "span", className: "text-muted-foreground", children: [
|
|
26817
|
-
"/",
|
|
26818
|
-
maxTurns
|
|
26819
|
-
] })
|
|
26820
|
-
] }),
|
|
26821
|
-
phase && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
26822
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { as: "span", className: "text-muted-foreground", children: "|" }),
|
|
26823
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { as: "span", className: "text-muted-foreground", children: phase })
|
|
26824
|
-
] }),
|
|
26825
|
-
activeTeam && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
26826
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { as: "span", className: "text-muted-foreground", children: "|" }),
|
|
26827
|
-
assetUrl ? /* @__PURE__ */ jsxRuntime.jsx(GameIcon, { assetUrl, icon: "image", size: 12, className: "flex-shrink-0" }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { as: "span", className: cn("rounded-full bg-success/20", sizes.dot) }),
|
|
26828
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { as: "span", className: "text-success", children: activeTeam })
|
|
26829
|
-
] })
|
|
26830
|
-
]
|
|
26831
|
-
}
|
|
26832
|
-
);
|
|
26833
|
-
}
|
|
26834
|
-
var sizeMap12, DEFAULT_ASSET_URL7;
|
|
26835
|
-
var init_TurnIndicator = __esm({
|
|
26836
|
-
"components/game/atoms/TurnIndicator.tsx"() {
|
|
26837
|
-
init_cn();
|
|
26838
|
-
init_Box();
|
|
26839
|
-
init_Typography();
|
|
26840
|
-
init_GameIcon();
|
|
26841
|
-
sizeMap12 = {
|
|
26842
|
-
sm: { wrapper: "text-xs gap-1.5 px-2 py-0.5", dot: "w-1.5 h-1.5" },
|
|
26843
|
-
md: { wrapper: "text-sm gap-2 px-3 py-1", dot: "w-2 h-2" },
|
|
26844
|
-
lg: { wrapper: "text-base gap-2.5 px-4 py-1.5", dot: "w-2.5 h-2.5" }
|
|
26845
|
-
};
|
|
26846
|
-
DEFAULT_ASSET_URL7 = {
|
|
26847
|
-
url: "https://almadar-kflow-assets.web.app/shared/effects/particles/symbol_01.png",
|
|
26848
|
-
role: "ui",
|
|
26849
|
-
category: "turn"
|
|
26850
|
-
};
|
|
26851
|
-
TurnIndicator.displayName = "TurnIndicator";
|
|
26852
|
-
}
|
|
26853
|
-
});
|
|
26854
|
-
function WaypointMarker({
|
|
26855
|
-
assetUrl = DEFAULT_ASSET_URL8,
|
|
26856
|
-
label,
|
|
26857
|
-
icon,
|
|
26858
|
-
active = true,
|
|
26859
|
-
completed = false,
|
|
26860
|
-
size = "md",
|
|
26861
|
-
className
|
|
26862
|
-
}) {
|
|
26863
|
-
const sizes = sizeMap13[size];
|
|
26864
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: cn("flex flex-col items-center", className), children: [
|
|
26865
|
-
/* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "relative flex items-center justify-center", children: [
|
|
26866
|
-
active && /* @__PURE__ */ jsxRuntime.jsx(
|
|
26867
|
-
exports.Box,
|
|
26868
|
-
{
|
|
26869
|
-
position: "absolute",
|
|
26870
|
-
className: cn(
|
|
26871
|
-
"rounded-full border-2 border-info animate-ping opacity-50",
|
|
26872
|
-
sizes.ring
|
|
26873
|
-
)
|
|
26874
|
-
}
|
|
26875
|
-
),
|
|
26876
|
-
active && /* @__PURE__ */ jsxRuntime.jsx(
|
|
26877
|
-
exports.Box,
|
|
26878
|
-
{
|
|
26879
|
-
position: "absolute",
|
|
26880
|
-
className: cn(
|
|
26881
|
-
"rounded-full border-2 border-info",
|
|
26882
|
-
sizes.ring
|
|
26883
|
-
)
|
|
26884
|
-
}
|
|
26885
|
-
),
|
|
26886
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26887
|
-
exports.Box,
|
|
26888
|
-
{
|
|
26889
|
-
position: "relative",
|
|
26890
|
-
className: cn(
|
|
26891
|
-
"flex items-center justify-center rounded-full transition-all duration-200",
|
|
26892
|
-
sizes.dot,
|
|
26893
|
-
completed && "bg-success text-foreground",
|
|
26894
|
-
active && !completed && "bg-info text-foreground",
|
|
26895
|
-
!active && !completed && "bg-muted"
|
|
26896
|
-
),
|
|
26897
|
-
children: completed ? checkIcon : assetUrl ? /* @__PURE__ */ jsxRuntime.jsx(GameIcon, { assetUrl, icon: "image", size: sizes.img, alt: label, className: "flex-shrink-0" }) : icon ? typeof icon === "string" ? /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: icon }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon }) : null
|
|
26898
|
-
}
|
|
26899
|
-
)
|
|
26900
|
-
] }),
|
|
26901
|
-
label && /* @__PURE__ */ jsxRuntime.jsx(
|
|
26902
|
-
exports.Typography,
|
|
26903
|
-
{
|
|
26904
|
-
as: "span",
|
|
26905
|
-
className: cn(
|
|
26906
|
-
"text-center whitespace-nowrap",
|
|
26907
|
-
sizes.label,
|
|
26908
|
-
completed ? "text-success" : active ? "text-info" : "text-muted-foreground"
|
|
26909
|
-
),
|
|
26910
|
-
children: label
|
|
26911
|
-
}
|
|
26912
|
-
)
|
|
26913
|
-
] });
|
|
26914
|
-
}
|
|
26915
|
-
var DEFAULT_ASSET_URL8, sizeMap13, checkIcon;
|
|
26916
|
-
var init_WaypointMarker = __esm({
|
|
26917
|
-
"components/game/atoms/WaypointMarker.tsx"() {
|
|
26918
|
-
init_cn();
|
|
26919
|
-
init_Icon();
|
|
26920
|
-
init_Box();
|
|
26921
|
-
init_Typography();
|
|
26922
|
-
init_GameIcon();
|
|
26923
|
-
DEFAULT_ASSET_URL8 = {
|
|
26924
|
-
url: "https://almadar-kflow-assets.web.app/shared/world-map/battle_marker.png",
|
|
26925
|
-
role: "ui",
|
|
26926
|
-
category: "waypoint"
|
|
26927
|
-
};
|
|
26928
|
-
sizeMap13 = {
|
|
26929
|
-
sm: { dot: "w-4 h-4", ring: "w-6 h-6", label: "text-xs mt-1", img: 12 },
|
|
26930
|
-
md: { dot: "w-6 h-6", ring: "w-8 h-8", label: "text-sm mt-1.5", img: 18 },
|
|
26931
|
-
lg: { dot: "w-8 h-8", ring: "w-10 h-10", label: "text-base mt-2", img: 24 }
|
|
26932
|
-
};
|
|
26933
|
-
checkIcon = /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 3, className: "w-3/5 h-3/5", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 13l4 4L19 7", strokeLinecap: "round", strokeLinejoin: "round" }) });
|
|
26934
|
-
WaypointMarker.displayName = "WaypointMarker";
|
|
26935
|
-
}
|
|
26936
|
-
});
|
|
26937
|
-
function formatDuration(seconds) {
|
|
26938
|
-
if (seconds >= 60) {
|
|
26939
|
-
return `${Math.floor(seconds / 60)}m`;
|
|
26940
|
-
}
|
|
26941
|
-
return `${Math.round(seconds)}s`;
|
|
26942
|
-
}
|
|
26943
|
-
function StatusEffect({
|
|
26944
|
-
assetUrl = DEFAULT_ASSET_URL9,
|
|
26945
|
-
icon,
|
|
26946
|
-
label = "Shield",
|
|
26947
|
-
duration = 30,
|
|
26948
|
-
stacks,
|
|
26949
|
-
variant = "buff",
|
|
26950
|
-
size = "md",
|
|
26951
|
-
className
|
|
26952
|
-
}) {
|
|
26953
|
-
const sizes = sizeMap14[size];
|
|
26954
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { position: "relative", className: cn("inline-flex flex-col items-center", className), children: [
|
|
26955
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
26956
|
-
exports.Box,
|
|
26957
|
-
{
|
|
26958
|
-
position: "relative",
|
|
26959
|
-
className: cn(
|
|
26960
|
-
"flex items-center justify-center rounded-interactive border-2",
|
|
26961
|
-
sizes.container,
|
|
26962
|
-
variantStyles8[variant]
|
|
26963
|
-
),
|
|
26964
|
-
title: label,
|
|
26965
|
-
children: [
|
|
26966
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { as: "span", className: cn("flex items-center justify-center", sizes.icon), children: assetUrl ? /* @__PURE__ */ jsxRuntime.jsx(GameIcon, { assetUrl, icon: "image", size: sizes.img, alt: label, className: "flex-shrink-0" }) : icon != null && typeof icon === "string" ? /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: icon, size: "sm" }) : icon != null ? /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon, size: "sm" }) : null }),
|
|
26967
|
-
duration !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
26968
|
-
exports.Typography,
|
|
26969
|
-
{
|
|
26970
|
-
as: "span",
|
|
26971
|
-
className: cn(
|
|
26972
|
-
"absolute bottom-0 left-0 right-0 text-center font-mono font-bold text-foreground bg-background/60 leading-tight",
|
|
26973
|
-
sizes.timer
|
|
26974
|
-
),
|
|
26975
|
-
children: formatDuration(duration)
|
|
26976
|
-
}
|
|
26977
|
-
)
|
|
26978
|
-
]
|
|
26979
|
-
}
|
|
26980
|
-
),
|
|
26981
|
-
stacks !== void 0 && stacks > 1 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
26982
|
-
exports.Typography,
|
|
26983
|
-
{
|
|
26984
|
-
as: "span",
|
|
26985
|
-
className: cn(
|
|
26986
|
-
"absolute flex items-center justify-center rounded-full bg-card text-foreground font-bold leading-none",
|
|
26987
|
-
sizes.badge
|
|
26988
|
-
),
|
|
26989
|
-
children: stacks
|
|
26990
|
-
}
|
|
26991
|
-
),
|
|
26992
|
-
label && /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { as: "span", className: "text-xs text-muted-foreground mt-0.5 text-center whitespace-nowrap", children: label })
|
|
26993
|
-
] });
|
|
26994
|
-
}
|
|
26995
|
-
var DEFAULT_ASSET_URL9, sizeMap14, variantStyles8;
|
|
26996
|
-
var init_StatusEffect = __esm({
|
|
26997
|
-
"components/game/atoms/StatusEffect.tsx"() {
|
|
26998
|
-
init_cn();
|
|
26999
|
-
init_Icon();
|
|
27000
|
-
init_Box();
|
|
27001
|
-
init_Typography();
|
|
27002
|
-
init_GameIcon();
|
|
27003
|
-
DEFAULT_ASSET_URL9 = {
|
|
27004
|
-
url: "https://almadar-kflow-assets.web.app/shared/effects/particles/flame_01.png",
|
|
27005
|
-
role: "ui",
|
|
27006
|
-
category: "effect"
|
|
27007
|
-
};
|
|
27008
|
-
sizeMap14 = {
|
|
27009
|
-
sm: { container: "w-8 h-8", icon: "text-sm", badge: "text-xs -top-1 -right-1 w-4 h-4", timer: "text-[9px]", img: 20 },
|
|
27010
|
-
md: { container: "w-10 h-10", icon: "text-base", badge: "text-xs -top-1 -right-1 w-5 h-5", timer: "text-xs", img: 28 },
|
|
27011
|
-
lg: { container: "w-12 h-12", icon: "text-lg", badge: "text-sm -top-1.5 -right-1.5 w-6 h-6", timer: "text-xs", img: 36 }
|
|
27012
|
-
};
|
|
27013
|
-
variantStyles8 = {
|
|
27014
|
-
buff: "border-success bg-success/20",
|
|
27015
|
-
debuff: "border-error bg-error/20",
|
|
27016
|
-
neutral: "border-muted bg-muted/20"
|
|
27017
|
-
};
|
|
27018
|
-
StatusEffect.displayName = "StatusEffect";
|
|
27019
|
-
}
|
|
27020
|
-
});
|
|
27021
26120
|
function DialogueBubble({
|
|
27022
26121
|
speaker = "Hero",
|
|
27023
26122
|
text = "The dungeon awaits. Choose your path wisely.",
|
|
@@ -27089,7 +26188,7 @@ function StatBadge({
|
|
|
27089
26188
|
{
|
|
27090
26189
|
className: cn(
|
|
27091
26190
|
"inline-flex items-center gap-2 rounded-container border backdrop-blur-sm",
|
|
27092
|
-
|
|
26191
|
+
sizeMap7[size] ?? sizeMap7.md,
|
|
27093
26192
|
variantMap2[variant] ?? variantMap2.default,
|
|
27094
26193
|
className
|
|
27095
26194
|
),
|
|
@@ -27126,7 +26225,7 @@ function StatBadge({
|
|
|
27126
26225
|
}
|
|
27127
26226
|
);
|
|
27128
26227
|
}
|
|
27129
|
-
var
|
|
26228
|
+
var sizeMap7, variantMap2;
|
|
27130
26229
|
var init_StatBadge = __esm({
|
|
27131
26230
|
"components/game/molecules/StatBadge.tsx"() {
|
|
27132
26231
|
init_cn();
|
|
@@ -27136,7 +26235,7 @@ var init_StatBadge = __esm({
|
|
|
27136
26235
|
init_GameIcon();
|
|
27137
26236
|
init_HealthBar();
|
|
27138
26237
|
init_ScoreDisplay();
|
|
27139
|
-
|
|
26238
|
+
sizeMap7 = {
|
|
27140
26239
|
sm: "text-xs px-2 py-1",
|
|
27141
26240
|
md: "text-sm px-3 py-1.5",
|
|
27142
26241
|
lg: "text-base px-4 py-2"
|
|
@@ -27151,129 +26250,6 @@ var init_StatBadge = __esm({
|
|
|
27151
26250
|
StatBadge.displayName = "StatBadge";
|
|
27152
26251
|
}
|
|
27153
26252
|
});
|
|
27154
|
-
function InventoryGrid({
|
|
27155
|
-
items = DEFAULT_GRID_ITEMS,
|
|
27156
|
-
columns = 4,
|
|
27157
|
-
totalSlots = 12,
|
|
27158
|
-
selectedId = "",
|
|
27159
|
-
onSelect,
|
|
27160
|
-
selectEvent,
|
|
27161
|
-
size = "md",
|
|
27162
|
-
className
|
|
27163
|
-
}) {
|
|
27164
|
-
const eventBus = useEventBus();
|
|
27165
|
-
const slotCount = totalSlots ?? items.length;
|
|
27166
|
-
const emptySlotCount = Math.max(0, slotCount - items.length);
|
|
27167
|
-
const handleSelect = React73__namespace.useCallback(
|
|
27168
|
-
(id) => {
|
|
27169
|
-
onSelect?.(id);
|
|
27170
|
-
if (selectEvent) {
|
|
27171
|
-
eventBus.emit(`UI:${selectEvent}`, { id });
|
|
27172
|
-
}
|
|
27173
|
-
},
|
|
27174
|
-
[onSelect, selectEvent, eventBus]
|
|
27175
|
-
);
|
|
27176
|
-
const gridClass = columnMap[columns] ?? `grid-cols-${columns}`;
|
|
27177
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
27178
|
-
exports.Box,
|
|
27179
|
-
{
|
|
27180
|
-
className: cn("grid gap-2", gridClass, className),
|
|
27181
|
-
children: [
|
|
27182
|
-
items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
27183
|
-
ItemSlot,
|
|
27184
|
-
{
|
|
27185
|
-
icon: item.icon,
|
|
27186
|
-
assetUrl: item.assetUrl,
|
|
27187
|
-
label: item.label,
|
|
27188
|
-
quantity: item.quantity,
|
|
27189
|
-
rarity: item.rarity,
|
|
27190
|
-
size,
|
|
27191
|
-
selected: selectedId === item.id,
|
|
27192
|
-
onClick: () => handleSelect(item.id)
|
|
27193
|
-
},
|
|
27194
|
-
item.id
|
|
27195
|
-
)),
|
|
27196
|
-
Array.from({ length: emptySlotCount }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
27197
|
-
ItemSlot,
|
|
27198
|
-
{
|
|
27199
|
-
empty: true,
|
|
27200
|
-
size
|
|
27201
|
-
},
|
|
27202
|
-
`empty-${index}`
|
|
27203
|
-
))
|
|
27204
|
-
]
|
|
27205
|
-
}
|
|
27206
|
-
);
|
|
27207
|
-
}
|
|
27208
|
-
var columnMap, DEFAULT_GRID_ITEMS;
|
|
27209
|
-
var init_InventoryGrid = __esm({
|
|
27210
|
-
"components/game/molecules/InventoryGrid.tsx"() {
|
|
27211
|
-
"use client";
|
|
27212
|
-
init_cn();
|
|
27213
|
-
init_useEventBus();
|
|
27214
|
-
init_ItemSlot();
|
|
27215
|
-
init_Box();
|
|
27216
|
-
columnMap = {
|
|
27217
|
-
2: "grid-cols-2",
|
|
27218
|
-
3: "grid-cols-3",
|
|
27219
|
-
4: "grid-cols-4",
|
|
27220
|
-
5: "grid-cols-5",
|
|
27221
|
-
6: "grid-cols-6",
|
|
27222
|
-
7: "grid-cols-7",
|
|
27223
|
-
8: "grid-cols-8"
|
|
27224
|
-
};
|
|
27225
|
-
DEFAULT_GRID_ITEMS = [
|
|
27226
|
-
{ id: "grid-1", icon: "sword", label: "Iron Sword", quantity: 1, rarity: "common" },
|
|
27227
|
-
{ id: "grid-2", icon: "flask-conical", label: "Health Potion", quantity: 3, rarity: "uncommon" },
|
|
27228
|
-
{ id: "grid-3", icon: "shield", label: "Wooden Shield", quantity: 1, rarity: "common" },
|
|
27229
|
-
{ id: "grid-4", icon: "gem", label: "Ruby Gem", quantity: 2, rarity: "rare" }
|
|
27230
|
-
];
|
|
27231
|
-
InventoryGrid.displayName = "InventoryGrid";
|
|
27232
|
-
}
|
|
27233
|
-
});
|
|
27234
|
-
function ResourceBar({
|
|
27235
|
-
resources = DEFAULT_RESOURCES,
|
|
27236
|
-
size = "md",
|
|
27237
|
-
className
|
|
27238
|
-
}) {
|
|
27239
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
27240
|
-
exports.Box,
|
|
27241
|
-
{
|
|
27242
|
-
className: cn(
|
|
27243
|
-
"flex items-center gap-2 flex-wrap",
|
|
27244
|
-
className
|
|
27245
|
-
),
|
|
27246
|
-
children: resources.map((resource, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
27247
|
-
StatBadge,
|
|
27248
|
-
{
|
|
27249
|
-
label: resource.label,
|
|
27250
|
-
value: resource.value,
|
|
27251
|
-
max: resource.max,
|
|
27252
|
-
format: resource.max != null ? "bar" : "number",
|
|
27253
|
-
icon: resource.icon,
|
|
27254
|
-
assetUrl: resource.assetUrl,
|
|
27255
|
-
size
|
|
27256
|
-
},
|
|
27257
|
-
i
|
|
27258
|
-
))
|
|
27259
|
-
}
|
|
27260
|
-
);
|
|
27261
|
-
}
|
|
27262
|
-
var DEFAULT_RESOURCES;
|
|
27263
|
-
var init_ResourceBar = __esm({
|
|
27264
|
-
"components/game/molecules/ResourceBar.tsx"() {
|
|
27265
|
-
"use client";
|
|
27266
|
-
init_cn();
|
|
27267
|
-
init_StatBadge();
|
|
27268
|
-
init_Box();
|
|
27269
|
-
DEFAULT_RESOURCES = [
|
|
27270
|
-
{ icon: "coins", label: "Gold", value: 320 },
|
|
27271
|
-
{ icon: "zap", label: "Energy", value: 7, max: 10 },
|
|
27272
|
-
{ icon: "gem", label: "Crystals", value: 15 }
|
|
27273
|
-
];
|
|
27274
|
-
ResourceBar.displayName = "ResourceBar";
|
|
27275
|
-
}
|
|
27276
|
-
});
|
|
27277
26253
|
function convertElementsToStats(elements) {
|
|
27278
26254
|
return elements.map((el) => {
|
|
27279
26255
|
const [source, field] = el.bind?.split(".") ?? [];
|
|
@@ -27756,11 +26732,46 @@ function useUnitSpriteAtlas(units) {
|
|
|
27756
26732
|
return { sheetUrls, resolveUnitFrame, pendingCount };
|
|
27757
26733
|
}
|
|
27758
26734
|
var init_useUnitSpriteAtlas = __esm({
|
|
27759
|
-
"
|
|
26735
|
+
"hooks/useUnitSpriteAtlas.ts"() {
|
|
27760
26736
|
"use client";
|
|
27761
26737
|
init_spriteAnimation();
|
|
27762
26738
|
}
|
|
27763
26739
|
});
|
|
26740
|
+
function GameAudioToggle({
|
|
26741
|
+
size = "sm",
|
|
26742
|
+
className,
|
|
26743
|
+
onAsset,
|
|
26744
|
+
offAsset
|
|
26745
|
+
}) {
|
|
26746
|
+
const ctx = providers.useGameAudioContextOptional();
|
|
26747
|
+
const [localMuted, setLocalMuted] = React73.useState(false);
|
|
26748
|
+
const muted = ctx ? ctx.muted : localMuted;
|
|
26749
|
+
const setMuted = ctx ? ctx.setMuted : setLocalMuted;
|
|
26750
|
+
const handleToggle = React73.useCallback(() => {
|
|
26751
|
+
setMuted(!muted);
|
|
26752
|
+
}, [muted, setMuted]);
|
|
26753
|
+
const activeAsset = muted ? offAsset : onAsset;
|
|
26754
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26755
|
+
exports.Button,
|
|
26756
|
+
{
|
|
26757
|
+
variant: "ghost",
|
|
26758
|
+
size,
|
|
26759
|
+
onClick: handleToggle,
|
|
26760
|
+
className: cn("text-lg leading-none px-2", className),
|
|
26761
|
+
"aria-pressed": muted,
|
|
26762
|
+
children: activeAsset ? /* @__PURE__ */ jsxRuntime.jsx(GameIcon, { assetUrl: activeAsset, icon: "image", size: 20, alt: muted ? "Muted" : "Sound on", className: "w-5 h-5 object-contain" }) : muted ? "\u{1F507}" : "\u{1F50A}"
|
|
26763
|
+
}
|
|
26764
|
+
);
|
|
26765
|
+
}
|
|
26766
|
+
var init_GameAudioToggle = __esm({
|
|
26767
|
+
"components/game/atoms/GameAudioToggle.tsx"() {
|
|
26768
|
+
"use client";
|
|
26769
|
+
init_atoms();
|
|
26770
|
+
init_cn();
|
|
26771
|
+
init_GameIcon();
|
|
26772
|
+
GameAudioToggle.displayName = "GameAudioToggle";
|
|
26773
|
+
}
|
|
26774
|
+
});
|
|
27764
26775
|
function pickPath(entry) {
|
|
27765
26776
|
if (Array.isArray(entry.path)) {
|
|
27766
26777
|
return entry.path[Math.floor(Math.random() * entry.path.length)];
|
|
@@ -28023,108 +27034,79 @@ function useGameAudio({
|
|
|
28023
27034
|
};
|
|
28024
27035
|
}
|
|
28025
27036
|
var init_useGameAudio = __esm({
|
|
28026
|
-
"
|
|
27037
|
+
"hooks/useGameAudio.ts"() {
|
|
28027
27038
|
"use client";
|
|
28028
27039
|
useGameAudio.displayName = "useGameAudio";
|
|
28029
27040
|
}
|
|
28030
27041
|
});
|
|
28031
|
-
function
|
|
28032
|
-
|
|
28033
|
-
if (!ctx) {
|
|
28034
|
-
throw new Error("useGameAudioContext must be used inside <GameAudioProvider>");
|
|
28035
|
-
}
|
|
28036
|
-
return ctx;
|
|
28037
|
-
}
|
|
28038
|
-
function useGameAudioContextOptional() {
|
|
28039
|
-
return React73.useContext(exports.GameAudioContext);
|
|
27042
|
+
function isKnownState(s) {
|
|
27043
|
+
return s in DEFAULT_STATE_STYLES;
|
|
28040
27044
|
}
|
|
28041
|
-
function
|
|
28042
|
-
|
|
28043
|
-
|
|
28044
|
-
|
|
28045
|
-
|
|
28046
|
-
|
|
28047
|
-
|
|
28048
|
-
|
|
28049
|
-
React73.useEffect(() => {
|
|
28050
|
-
const unsubPlay = eventBus.on("UI:PLAY_SOUND", (event) => {
|
|
28051
|
-
const key = event.payload?.key;
|
|
28052
|
-
if (key) play(key);
|
|
28053
|
-
});
|
|
28054
|
-
const unsubStop = eventBus.on("UI:STOP_SOUND", (event) => {
|
|
28055
|
-
const key = event.payload?.key;
|
|
28056
|
-
if (key) {
|
|
28057
|
-
stop(key);
|
|
28058
|
-
} else {
|
|
28059
|
-
stopAll();
|
|
28060
|
-
}
|
|
28061
|
-
});
|
|
28062
|
-
const unsubChangeMusic = eventBus.on("UI:CHANGE_MUSIC", (event) => {
|
|
28063
|
-
const key = event.payload?.key;
|
|
28064
|
-
if (key) {
|
|
28065
|
-
playMusic(key);
|
|
28066
|
-
} else {
|
|
28067
|
-
stopMusic();
|
|
28068
|
-
}
|
|
28069
|
-
});
|
|
28070
|
-
const unsubStopMusic = eventBus.on("UI:STOP_MUSIC", () => {
|
|
28071
|
-
stopMusic();
|
|
28072
|
-
});
|
|
28073
|
-
return () => {
|
|
28074
|
-
unsubPlay();
|
|
28075
|
-
unsubStop();
|
|
28076
|
-
unsubChangeMusic();
|
|
28077
|
-
unsubStopMusic();
|
|
28078
|
-
};
|
|
28079
|
-
}, [eventBus, play, stop, stopAll, playMusic, stopMusic]);
|
|
28080
|
-
const value = { muted, setMuted, masterVolume, setMasterVolume, play, playMusic, stopMusic };
|
|
28081
|
-
return /* @__PURE__ */ jsxRuntime.jsx(exports.GameAudioContext.Provider, { value, children });
|
|
28082
|
-
}
|
|
28083
|
-
exports.GameAudioContext = void 0;
|
|
28084
|
-
var init_GameAudioProvider = __esm({
|
|
28085
|
-
"components/game/providers/GameAudioProvider.tsx"() {
|
|
28086
|
-
"use client";
|
|
28087
|
-
init_useEventBus();
|
|
28088
|
-
init_useGameAudio();
|
|
28089
|
-
exports.GameAudioContext = React73.createContext(null);
|
|
28090
|
-
exports.GameAudioContext.displayName = "GameAudioContext";
|
|
28091
|
-
GameAudioProvider.displayName = "GameAudioProvider";
|
|
28092
|
-
}
|
|
28093
|
-
});
|
|
28094
|
-
function GameAudioToggle({
|
|
28095
|
-
size = "sm",
|
|
28096
|
-
className,
|
|
28097
|
-
onAsset,
|
|
28098
|
-
offAsset
|
|
27045
|
+
function StateIndicator({
|
|
27046
|
+
assetUrl = DEFAULT_ASSET_URL,
|
|
27047
|
+
state = "idle",
|
|
27048
|
+
label,
|
|
27049
|
+
size = "md",
|
|
27050
|
+
animated = true,
|
|
27051
|
+
stateStyles,
|
|
27052
|
+
className
|
|
28099
27053
|
}) {
|
|
28100
|
-
const
|
|
28101
|
-
const
|
|
28102
|
-
const
|
|
28103
|
-
const
|
|
28104
|
-
|
|
28105
|
-
|
|
28106
|
-
}, [muted, setMuted]);
|
|
28107
|
-
const activeAsset = muted ? offAsset : onAsset;
|
|
28108
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
28109
|
-
exports.Button,
|
|
27054
|
+
const mergedStyles = stateStyles ? { ...DEFAULT_STATE_STYLES, ...stateStyles } : DEFAULT_STATE_STYLES;
|
|
27055
|
+
const knownState = isKnownState(state) ? state : null;
|
|
27056
|
+
const config = knownState !== null ? mergedStyles[knownState] ?? DEFAULT_STYLE : DEFAULT_STYLE;
|
|
27057
|
+
const displayLabel = label ?? state.charAt(0).toUpperCase() + state.slice(1);
|
|
27058
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
27059
|
+
exports.Box,
|
|
28110
27060
|
{
|
|
28111
|
-
|
|
28112
|
-
|
|
28113
|
-
|
|
28114
|
-
|
|
28115
|
-
|
|
28116
|
-
|
|
27061
|
+
display: "inline-flex",
|
|
27062
|
+
className: cn(
|
|
27063
|
+
"items-center gap-1 rounded-full text-foreground font-medium",
|
|
27064
|
+
config.bgClass,
|
|
27065
|
+
SIZE_CLASSES[size],
|
|
27066
|
+
animated && (knownState === null || !STATIC_STATES.has(knownState)) && "animate-pulse",
|
|
27067
|
+
className
|
|
27068
|
+
),
|
|
27069
|
+
children: [
|
|
27070
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { as: "span", children: assetUrl ? /* @__PURE__ */ jsxRuntime.jsx(GameIcon, { assetUrl, icon: "image", size: 16, alt: displayLabel, className: "flex-shrink-0" }) : typeof config.icon === "string" ? /^[a-zA-Z0-9-]+$/.test(config.icon) ? /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: config.icon }) : config.icon : /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: config.icon }) }),
|
|
27071
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { as: "span", children: displayLabel })
|
|
27072
|
+
]
|
|
28117
27073
|
}
|
|
28118
27074
|
);
|
|
28119
27075
|
}
|
|
28120
|
-
var
|
|
28121
|
-
|
|
28122
|
-
|
|
28123
|
-
|
|
27076
|
+
var DEFAULT_ASSET_URL, DEFAULT_STATE_STYLES, DEFAULT_STYLE, STATIC_STATES, SIZE_CLASSES;
|
|
27077
|
+
var init_StateIndicator = __esm({
|
|
27078
|
+
"components/game/atoms/StateIndicator.tsx"() {
|
|
27079
|
+
init_Box();
|
|
27080
|
+
init_Icon();
|
|
28124
27081
|
init_cn();
|
|
28125
|
-
init_GameAudioProvider();
|
|
28126
27082
|
init_GameIcon();
|
|
28127
|
-
|
|
27083
|
+
DEFAULT_ASSET_URL = {
|
|
27084
|
+
url: "https://almadar-kflow-assets.web.app/shared/isometric-dungeon/Isometric/chestClosed_E.png",
|
|
27085
|
+
role: "ui",
|
|
27086
|
+
category: "state"
|
|
27087
|
+
};
|
|
27088
|
+
DEFAULT_STATE_STYLES = {
|
|
27089
|
+
idle: { icon: "\u23F8", bgClass: "bg-muted" },
|
|
27090
|
+
active: { icon: "\u25B6", bgClass: "bg-success" },
|
|
27091
|
+
sleeping: { icon: "\u{1F4A4}", bgClass: "bg-muted" },
|
|
27092
|
+
moving: { icon: "\u{1F6B6}", bgClass: "bg-info" },
|
|
27093
|
+
eating: { icon: "\u{1F37D}\uFE0F", bgClass: "bg-success" },
|
|
27094
|
+
waiting: { icon: "\u23F3", bgClass: "bg-warning" },
|
|
27095
|
+
happy: { icon: "\u{1F60A}", bgClass: "bg-success" },
|
|
27096
|
+
scared: { icon: "\u{1F628}", bgClass: "bg-error" },
|
|
27097
|
+
done: { icon: "\u2713", bgClass: "bg-success" },
|
|
27098
|
+
error: { icon: "\u2717", bgClass: "bg-error" },
|
|
27099
|
+
ready: { icon: "\u2713", bgClass: "bg-success" },
|
|
27100
|
+
cooldown: { icon: "\u{1F504}", bgClass: "bg-warning" }
|
|
27101
|
+
};
|
|
27102
|
+
DEFAULT_STYLE = { icon: "?", bgClass: "bg-muted" };
|
|
27103
|
+
STATIC_STATES = /* @__PURE__ */ new Set(["idle", "done"]);
|
|
27104
|
+
SIZE_CLASSES = {
|
|
27105
|
+
sm: "text-xs px-1.5 py-0.5",
|
|
27106
|
+
md: "text-sm px-2 py-1",
|
|
27107
|
+
lg: "text-base px-3 py-1.5"
|
|
27108
|
+
};
|
|
27109
|
+
StateIndicator.displayName = "StateIndicator";
|
|
28128
27110
|
}
|
|
28129
27111
|
});
|
|
28130
27112
|
function LinearView({
|
|
@@ -28697,7 +27679,7 @@ function EditorToolbar({ mode, onModeChange, className }) {
|
|
|
28697
27679
|
}
|
|
28698
27680
|
exports.TERRAIN_COLORS = void 0; exports.FEATURE_TYPES = void 0; var MODE_LABELS;
|
|
28699
27681
|
var init_editorUtils = __esm({
|
|
28700
|
-
"
|
|
27682
|
+
"lib/editorUtils.tsx"() {
|
|
28701
27683
|
init_Box();
|
|
28702
27684
|
init_Stack();
|
|
28703
27685
|
init_Typography();
|
|
@@ -28809,110 +27791,8 @@ var init_SequenceBar = __esm({
|
|
|
28809
27791
|
SequenceBar.displayName = "SequenceBar";
|
|
28810
27792
|
}
|
|
28811
27793
|
});
|
|
28812
|
-
function RuleEditor({
|
|
28813
|
-
rule,
|
|
28814
|
-
availableEvents,
|
|
28815
|
-
availableActions,
|
|
28816
|
-
onChange,
|
|
28817
|
-
onRemove,
|
|
28818
|
-
disabled = false,
|
|
28819
|
-
className
|
|
28820
|
-
}) {
|
|
28821
|
-
const { t } = hooks.useTranslate();
|
|
28822
|
-
const handleWhenChange = React73.useCallback((v) => {
|
|
28823
|
-
onChange({ ...rule, whenEvent: v });
|
|
28824
|
-
}, [rule, onChange]);
|
|
28825
|
-
const handleThenChange = React73.useCallback((v) => {
|
|
28826
|
-
onChange({ ...rule, thenAction: v });
|
|
28827
|
-
}, [rule, onChange]);
|
|
28828
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { className: cn("items-center p-2 rounded-lg bg-muted/50 border border-border", className), gap: "sm", children: [
|
|
28829
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-primary font-bold whitespace-nowrap", children: t("eventHandler.when") }),
|
|
28830
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28831
|
-
exports.Select,
|
|
28832
|
-
{
|
|
28833
|
-
value: rule.whenEvent,
|
|
28834
|
-
onValueChange: handleWhenChange,
|
|
28835
|
-
options: availableEvents,
|
|
28836
|
-
disabled,
|
|
28837
|
-
className: "flex-1 min-w-0"
|
|
28838
|
-
}
|
|
28839
|
-
),
|
|
28840
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-accent font-bold whitespace-nowrap", children: "\u2192 " + t("eventHandler.then") }),
|
|
28841
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28842
|
-
exports.Select,
|
|
28843
|
-
{
|
|
28844
|
-
value: rule.thenAction,
|
|
28845
|
-
onValueChange: handleThenChange,
|
|
28846
|
-
options: availableActions,
|
|
28847
|
-
disabled,
|
|
28848
|
-
className: "flex-1 min-w-0"
|
|
28849
|
-
}
|
|
28850
|
-
),
|
|
28851
|
-
onRemove && /* @__PURE__ */ jsxRuntime.jsx(exports.Button, { variant: "ghost", onClick: onRemove, disabled, className: "shrink-0", children: "\xD7" })
|
|
28852
|
-
] });
|
|
28853
|
-
}
|
|
28854
|
-
var init_RuleEditor = __esm({
|
|
28855
|
-
"components/game/molecules/RuleEditor.tsx"() {
|
|
28856
|
-
init_atoms();
|
|
28857
|
-
init_cn();
|
|
28858
|
-
RuleEditor.displayName = "RuleEditor";
|
|
28859
|
-
}
|
|
28860
|
-
});
|
|
28861
|
-
function EventLog({
|
|
28862
|
-
entries,
|
|
28863
|
-
maxHeight = 200,
|
|
28864
|
-
label,
|
|
28865
|
-
className
|
|
28866
|
-
}) {
|
|
28867
|
-
const { t } = hooks.useTranslate();
|
|
28868
|
-
const scrollRef = React73.useRef(null);
|
|
28869
|
-
React73.useEffect(() => {
|
|
28870
|
-
if (scrollRef.current) {
|
|
28871
|
-
scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
|
|
28872
|
-
}
|
|
28873
|
-
}, [entries.length]);
|
|
28874
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: cn("p-3 rounded-lg bg-card border border-border", className), gap: "sm", children: [
|
|
28875
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-muted-foreground font-medium", children: label ?? t("eventHandler.eventLog") }),
|
|
28876
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28877
|
-
exports.Box,
|
|
28878
|
-
{
|
|
28879
|
-
ref: scrollRef,
|
|
28880
|
-
className: "overflow-y-auto",
|
|
28881
|
-
style: { maxHeight },
|
|
28882
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "xs", children: [
|
|
28883
|
-
entries.length === 0 && /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-muted-foreground italic", children: t("eventHandler.noEvents") }),
|
|
28884
|
-
entries.map((entry) => /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { className: "items-start", gap: "xs", children: [
|
|
28885
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: STATUS_STYLES[entry.status], children: STATUS_DOTS[entry.status] }),
|
|
28886
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-foreground", children: entry.icon }),
|
|
28887
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: cn("flex-1", STATUS_STYLES[entry.status]), children: entry.message })
|
|
28888
|
-
] }, entry.id))
|
|
28889
|
-
] })
|
|
28890
|
-
}
|
|
28891
|
-
)
|
|
28892
|
-
] });
|
|
28893
|
-
}
|
|
28894
|
-
var STATUS_STYLES, STATUS_DOTS;
|
|
28895
|
-
var init_EventLog = __esm({
|
|
28896
|
-
"components/game/molecules/EventLog.tsx"() {
|
|
28897
|
-
init_atoms();
|
|
28898
|
-
init_cn();
|
|
28899
|
-
STATUS_STYLES = {
|
|
28900
|
-
pending: "text-muted-foreground",
|
|
28901
|
-
active: "text-primary animate-pulse",
|
|
28902
|
-
done: "text-success",
|
|
28903
|
-
error: "text-error"
|
|
28904
|
-
};
|
|
28905
|
-
STATUS_DOTS = {
|
|
28906
|
-
pending: "\u25CB",
|
|
28907
|
-
active: "\u25CF",
|
|
28908
|
-
done: "\u2714",
|
|
28909
|
-
error: "\u2717"
|
|
28910
|
-
};
|
|
28911
|
-
EventLog.displayName = "EventLog";
|
|
28912
|
-
}
|
|
28913
|
-
});
|
|
28914
27794
|
|
|
28915
|
-
//
|
|
27795
|
+
// lib/puzzleObject.ts
|
|
28916
27796
|
function objId(o) {
|
|
28917
27797
|
return o.id == null ? "" : String(o.id);
|
|
28918
27798
|
}
|
|
@@ -28942,121 +27822,7 @@ function objMaxRules(o) {
|
|
|
28942
27822
|
return Number.isFinite(n) && n > 0 ? n : 3;
|
|
28943
27823
|
}
|
|
28944
27824
|
var init_puzzleObject = __esm({
|
|
28945
|
-
"
|
|
28946
|
-
}
|
|
28947
|
-
});
|
|
28948
|
-
function ObjectRulePanel({
|
|
28949
|
-
object,
|
|
28950
|
-
onRulesChange,
|
|
28951
|
-
rulesChangeEvent,
|
|
28952
|
-
disabled = false,
|
|
28953
|
-
className
|
|
28954
|
-
}) {
|
|
28955
|
-
const { t } = hooks.useTranslate();
|
|
28956
|
-
const { emit } = useEventBus();
|
|
28957
|
-
const id = objId(object);
|
|
28958
|
-
const name = objName(object);
|
|
28959
|
-
const icon = objIcon(object);
|
|
28960
|
-
const states = objStates(object);
|
|
28961
|
-
const currentState = objCurrentState(object);
|
|
28962
|
-
const availableEvents = objAvailableEvents(object);
|
|
28963
|
-
const availableActions = objAvailableActions(object);
|
|
28964
|
-
const rules = objRules(object);
|
|
28965
|
-
const maxRules = objMaxRules(object);
|
|
28966
|
-
const canAdd = rules.length < maxRules;
|
|
28967
|
-
const emitRules = React73.useCallback((newRules) => {
|
|
28968
|
-
if (rulesChangeEvent) emit(`UI:${rulesChangeEvent}`, { objectId: id, rules: newRules });
|
|
28969
|
-
else onRulesChange?.(id, newRules);
|
|
28970
|
-
}, [rulesChangeEvent, emit, id, onRulesChange]);
|
|
28971
|
-
const handleRuleChange = React73.useCallback((index, updatedRule) => {
|
|
28972
|
-
const newRules = [...rules];
|
|
28973
|
-
newRules[index] = updatedRule;
|
|
28974
|
-
emitRules(newRules);
|
|
28975
|
-
}, [rules, emitRules]);
|
|
28976
|
-
const handleRuleRemove = React73.useCallback((index) => {
|
|
28977
|
-
const newRules = rules.filter((_, i) => i !== index);
|
|
28978
|
-
emitRules(newRules);
|
|
28979
|
-
}, [rules, emitRules]);
|
|
28980
|
-
const handleAddRule = React73.useCallback(() => {
|
|
28981
|
-
if (!canAdd || disabled) return;
|
|
28982
|
-
const firstEvent = availableEvents[0]?.value || "";
|
|
28983
|
-
const firstAction = availableActions[0]?.value || "";
|
|
28984
|
-
const newRule = {
|
|
28985
|
-
id: `rule-${nextRuleId++}`,
|
|
28986
|
-
whenEvent: firstEvent,
|
|
28987
|
-
thenAction: firstAction
|
|
28988
|
-
};
|
|
28989
|
-
emitRules([...rules, newRule]);
|
|
28990
|
-
}, [canAdd, disabled, rules, availableEvents, availableActions, emitRules]);
|
|
28991
|
-
const machine = {
|
|
28992
|
-
name,
|
|
28993
|
-
states,
|
|
28994
|
-
currentState,
|
|
28995
|
-
transitions: rules.map((r) => ({
|
|
28996
|
-
from: currentState,
|
|
28997
|
-
to: states.find((s) => s !== currentState) || currentState,
|
|
28998
|
-
event: r.whenEvent
|
|
28999
|
-
}))
|
|
29000
|
-
};
|
|
29001
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: cn("p-4 rounded-lg bg-card border border-border", className), gap: "sm", children: [
|
|
29002
|
-
/* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { className: "items-center", gap: "sm", children: [
|
|
29003
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h5", children: icon }),
|
|
29004
|
-
/* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "none", children: [
|
|
29005
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body1", className: "text-foreground font-bold", children: name }),
|
|
29006
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-muted-foreground", children: t("eventHandler.state") + ": " + currentState })
|
|
29007
|
-
] })
|
|
29008
|
-
] }),
|
|
29009
|
-
/* @__PURE__ */ jsxRuntime.jsx(TraitStateViewer, { trait: machine, variant: "compact", size: "sm" }),
|
|
29010
|
-
/* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "xs", children: [
|
|
29011
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-muted-foreground font-medium", children: t("eventHandler.rules", { count: rules.length, max: maxRules }) + ":" }),
|
|
29012
|
-
rules.map((rule, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
29013
|
-
RuleEditor,
|
|
29014
|
-
{
|
|
29015
|
-
rule,
|
|
29016
|
-
availableEvents,
|
|
29017
|
-
availableActions,
|
|
29018
|
-
onChange: (r) => handleRuleChange(i, r),
|
|
29019
|
-
onRemove: () => handleRuleRemove(i),
|
|
29020
|
-
disabled
|
|
29021
|
-
},
|
|
29022
|
-
rule.id
|
|
29023
|
-
)),
|
|
29024
|
-
canAdd && !disabled && /* @__PURE__ */ jsxRuntime.jsx(exports.Button, { variant: "ghost", onClick: handleAddRule, className: "self-start", children: t("eventHandler.addRule") })
|
|
29025
|
-
] })
|
|
29026
|
-
] });
|
|
29027
|
-
}
|
|
29028
|
-
var nextRuleId;
|
|
29029
|
-
var init_ObjectRulePanel = __esm({
|
|
29030
|
-
"components/game/molecules/ObjectRulePanel.tsx"() {
|
|
29031
|
-
init_atoms();
|
|
29032
|
-
init_cn();
|
|
29033
|
-
init_useEventBus();
|
|
29034
|
-
init_TraitStateViewer();
|
|
29035
|
-
init_RuleEditor();
|
|
29036
|
-
init_puzzleObject();
|
|
29037
|
-
nextRuleId = 1;
|
|
29038
|
-
ObjectRulePanel.displayName = "ObjectRulePanel";
|
|
29039
|
-
}
|
|
29040
|
-
});
|
|
29041
|
-
function VariablePanel({
|
|
29042
|
-
entityName,
|
|
29043
|
-
variables,
|
|
29044
|
-
className
|
|
29045
|
-
}) {
|
|
29046
|
-
const { t } = hooks.useTranslate();
|
|
29047
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: cn("p-3 rounded-lg bg-card border border-border", className), gap: "sm", children: [
|
|
29048
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-muted-foreground font-medium", children: t("stateArchitect.variables", { name: entityName }) }),
|
|
29049
|
-
(variables ?? []).map((v) => /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { className: "items-center justify-between", children: [
|
|
29050
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-foreground font-medium", children: v.name }),
|
|
29051
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-accent font-mono", children: v.value })
|
|
29052
|
-
] }, v.name))
|
|
29053
|
-
] });
|
|
29054
|
-
}
|
|
29055
|
-
var init_VariablePanel = __esm({
|
|
29056
|
-
"components/game/molecules/VariablePanel.tsx"() {
|
|
29057
|
-
init_atoms();
|
|
29058
|
-
init_cn();
|
|
29059
|
-
VariablePanel.displayName = "VariablePanel";
|
|
27825
|
+
"lib/puzzleObject.ts"() {
|
|
29060
27826
|
}
|
|
29061
27827
|
});
|
|
29062
27828
|
function StateJsonView({
|
|
@@ -29098,10 +27864,10 @@ var init_StateJsonView = __esm({
|
|
|
29098
27864
|
}
|
|
29099
27865
|
});
|
|
29100
27866
|
|
|
29101
|
-
//
|
|
27867
|
+
// lib/mechanics.ts
|
|
29102
27868
|
exports.projectileMotion = void 0; exports.pendulum = void 0; exports.springOscillator = void 0;
|
|
29103
27869
|
var init_mechanics = __esm({
|
|
29104
|
-
"
|
|
27870
|
+
"lib/mechanics.ts"() {
|
|
29105
27871
|
exports.projectileMotion = {
|
|
29106
27872
|
id: "mechanics-projectile",
|
|
29107
27873
|
name: "Projectile Motion",
|
|
@@ -29156,10 +27922,10 @@ var init_mechanics = __esm({
|
|
|
29156
27922
|
}
|
|
29157
27923
|
});
|
|
29158
27924
|
|
|
29159
|
-
//
|
|
27925
|
+
// lib/physicsPresets.ts
|
|
29160
27926
|
exports.ALL_PRESETS = void 0;
|
|
29161
27927
|
var init_physicsPresets = __esm({
|
|
29162
|
-
"
|
|
27928
|
+
"lib/physicsPresets.ts"() {
|
|
29163
27929
|
init_mechanics();
|
|
29164
27930
|
init_mechanics();
|
|
29165
27931
|
exports.ALL_PRESETS = [
|
|
@@ -29169,125 +27935,6 @@ var init_physicsPresets = __esm({
|
|
|
29169
27935
|
];
|
|
29170
27936
|
}
|
|
29171
27937
|
});
|
|
29172
|
-
exports.GameTemplate = void 0;
|
|
29173
|
-
var init_GameTemplate = __esm({
|
|
29174
|
-
"components/game/templates/GameTemplate.tsx"() {
|
|
29175
|
-
init_cn();
|
|
29176
|
-
init_Box();
|
|
29177
|
-
init_Stack();
|
|
29178
|
-
init_Typography();
|
|
29179
|
-
init_Button();
|
|
29180
|
-
exports.GameTemplate = ({
|
|
29181
|
-
entity,
|
|
29182
|
-
title = "Game",
|
|
29183
|
-
children,
|
|
29184
|
-
hud,
|
|
29185
|
-
debugPanel,
|
|
29186
|
-
showDebugPanel = false,
|
|
29187
|
-
controls,
|
|
29188
|
-
className,
|
|
29189
|
-
backgroundAsset
|
|
29190
|
-
}) => {
|
|
29191
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
29192
|
-
exports.Box,
|
|
29193
|
-
{
|
|
29194
|
-
display: "flex",
|
|
29195
|
-
fullHeight: true,
|
|
29196
|
-
className: cn("flex-col lg:flex-row", className),
|
|
29197
|
-
children: [
|
|
29198
|
-
/* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { display: "flex", className: "flex-1 flex-col", children: [
|
|
29199
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
29200
|
-
exports.Box,
|
|
29201
|
-
{
|
|
29202
|
-
padding: "md",
|
|
29203
|
-
border: true,
|
|
29204
|
-
className: "border-b-2 border-x-0 border-t-0 border-border flex items-center justify-between",
|
|
29205
|
-
children: [
|
|
29206
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h4", children: title }),
|
|
29207
|
-
controls && /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", align: "center", children: [
|
|
29208
|
-
controls.isPlaying ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
29209
|
-
exports.Button,
|
|
29210
|
-
{
|
|
29211
|
-
variant: "secondary",
|
|
29212
|
-
size: "sm",
|
|
29213
|
-
icon: "pause",
|
|
29214
|
-
onClick: controls.onPause,
|
|
29215
|
-
children: "Pause"
|
|
29216
|
-
}
|
|
29217
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
29218
|
-
exports.Button,
|
|
29219
|
-
{
|
|
29220
|
-
variant: "primary",
|
|
29221
|
-
size: "sm",
|
|
29222
|
-
icon: "play",
|
|
29223
|
-
onClick: controls.onPlay,
|
|
29224
|
-
children: "Play"
|
|
29225
|
-
}
|
|
29226
|
-
),
|
|
29227
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
29228
|
-
exports.Button,
|
|
29229
|
-
{
|
|
29230
|
-
variant: "ghost",
|
|
29231
|
-
size: "sm",
|
|
29232
|
-
icon: "rotate-ccw",
|
|
29233
|
-
onClick: controls.onReset,
|
|
29234
|
-
children: "Reset"
|
|
29235
|
-
}
|
|
29236
|
-
)
|
|
29237
|
-
] })
|
|
29238
|
-
]
|
|
29239
|
-
}
|
|
29240
|
-
),
|
|
29241
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
29242
|
-
exports.Box,
|
|
29243
|
-
{
|
|
29244
|
-
position: "relative",
|
|
29245
|
-
fullWidth: true,
|
|
29246
|
-
className: backgroundAsset ? "flex-1" : "flex-1 bg-muted",
|
|
29247
|
-
style: backgroundAsset ? { backgroundImage: `url(${backgroundAsset.url})`, backgroundSize: "cover", backgroundPosition: "center" } : void 0,
|
|
29248
|
-
children: [
|
|
29249
|
-
children,
|
|
29250
|
-
hud && /* @__PURE__ */ jsxRuntime.jsx(
|
|
29251
|
-
exports.Box,
|
|
29252
|
-
{
|
|
29253
|
-
position: "absolute",
|
|
29254
|
-
className: "top-0 left-0 right-0 pointer-events-none",
|
|
29255
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { padding: "md", className: "pointer-events-auto w-fit", children: hud })
|
|
29256
|
-
}
|
|
29257
|
-
)
|
|
29258
|
-
]
|
|
29259
|
-
}
|
|
29260
|
-
)
|
|
29261
|
-
] }),
|
|
29262
|
-
showDebugPanel && debugPanel && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
29263
|
-
exports.Box,
|
|
29264
|
-
{
|
|
29265
|
-
bg: "surface",
|
|
29266
|
-
border: true,
|
|
29267
|
-
shadow: "sm",
|
|
29268
|
-
overflow: "auto",
|
|
29269
|
-
className: "w-full lg:w-80 lg:border-l-2 lg:border-t-0 border-t-2 border-border",
|
|
29270
|
-
children: [
|
|
29271
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
29272
|
-
exports.Box,
|
|
29273
|
-
{
|
|
29274
|
-
padding: "md",
|
|
29275
|
-
border: true,
|
|
29276
|
-
className: "border-b-2 border-x-0 border-t-0 border-border",
|
|
29277
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h6", children: "Debug Panel" })
|
|
29278
|
-
}
|
|
29279
|
-
),
|
|
29280
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { padding: "md", children: debugPanel })
|
|
29281
|
-
]
|
|
29282
|
-
}
|
|
29283
|
-
)
|
|
29284
|
-
]
|
|
29285
|
-
}
|
|
29286
|
-
);
|
|
29287
|
-
};
|
|
29288
|
-
exports.GameTemplate.displayName = "GameTemplate";
|
|
29289
|
-
}
|
|
29290
|
-
});
|
|
29291
27938
|
var FONT_BASE, GAME_FONTS, FONT_FACES; exports.GameShell = void 0;
|
|
29292
27939
|
var init_GameShell = __esm({
|
|
29293
27940
|
"components/game/templates/GameShell.tsx"() {
|
|
@@ -29458,41 +28105,23 @@ var init_GameShell = __esm({
|
|
|
29458
28105
|
exports.GameShell.displayName = "GameShell";
|
|
29459
28106
|
}
|
|
29460
28107
|
});
|
|
29461
|
-
|
|
29462
|
-
// components/game/molecules/index.ts
|
|
29463
28108
|
var init_molecules = __esm({
|
|
29464
28109
|
"components/game/molecules/index.ts"() {
|
|
29465
|
-
|
|
29466
|
-
init_GameCard();
|
|
28110
|
+
init_gameShared();
|
|
29467
28111
|
init_HealthBar();
|
|
29468
28112
|
init_ScoreDisplay();
|
|
29469
28113
|
init_ControlButton();
|
|
29470
|
-
init_Sprite();
|
|
29471
|
-
init_StateIndicator();
|
|
29472
28114
|
init_TimerDisplay();
|
|
29473
|
-
init_ResourceCounter();
|
|
29474
|
-
init_ItemSlot();
|
|
29475
|
-
init_TurnIndicator();
|
|
29476
|
-
init_ComboCounter();
|
|
29477
|
-
init_WaypointMarker();
|
|
29478
|
-
init_StatusEffect();
|
|
29479
|
-
init_DamageNumber();
|
|
29480
28115
|
init_DialogueBubble();
|
|
29481
28116
|
init_ChoiceButton();
|
|
29482
|
-
init_ActionButton();
|
|
29483
|
-
init_MiniMap();
|
|
29484
|
-
init_GameIcon();
|
|
29485
28117
|
init_ControlGrid();
|
|
29486
28118
|
init_StatBadge();
|
|
29487
|
-
init_InventoryGrid();
|
|
29488
|
-
init_ResourceBar();
|
|
29489
28119
|
init_GameHud();
|
|
29490
28120
|
init_GameMenu();
|
|
29491
28121
|
init_StateGraph();
|
|
29492
28122
|
init_Canvas2D();
|
|
29493
28123
|
init_Canvas();
|
|
29494
28124
|
init_useUnitSpriteAtlas();
|
|
29495
|
-
init_GameAudioProvider();
|
|
29496
28125
|
init_GameAudioToggle();
|
|
29497
28126
|
init_useGameAudio();
|
|
29498
28127
|
init_useCamera();
|
|
@@ -29502,16 +28131,11 @@ var init_molecules = __esm({
|
|
|
29502
28131
|
init_ActionTile();
|
|
29503
28132
|
init_ActionPalette();
|
|
29504
28133
|
init_SequenceBar();
|
|
29505
|
-
init_RuleEditor();
|
|
29506
|
-
init_EventLog();
|
|
29507
|
-
init_ObjectRulePanel();
|
|
29508
28134
|
init_puzzleObject();
|
|
29509
28135
|
init_StateNode();
|
|
29510
28136
|
init_TransitionArrow();
|
|
29511
|
-
init_VariablePanel();
|
|
29512
28137
|
init_StateJsonView();
|
|
29513
28138
|
init_physicsPresets();
|
|
29514
|
-
init_GameTemplate();
|
|
29515
28139
|
init_GameShell();
|
|
29516
28140
|
}
|
|
29517
28141
|
});
|
|
@@ -30114,13 +28738,13 @@ var init_MapView = __esm({
|
|
|
30114
28738
|
shadowSize: [41, 41]
|
|
30115
28739
|
});
|
|
30116
28740
|
L.Marker.prototype.options.icon = defaultIcon;
|
|
30117
|
-
const { useEffect:
|
|
28741
|
+
const { useEffect: useEffect64, useRef: useRef61, useCallback: useCallback104, useState: useState100 } = React73__namespace.default;
|
|
30118
28742
|
const { Typography: Typography2 } = await Promise.resolve().then(() => (init_Typography(), Typography_exports));
|
|
30119
28743
|
const { useEventBus: useEventBus2 } = await Promise.resolve().then(() => (init_useEventBus(), useEventBus_exports));
|
|
30120
28744
|
function MapUpdater({ centerLat, centerLng, zoom }) {
|
|
30121
28745
|
const map = useMap();
|
|
30122
|
-
const prevRef =
|
|
30123
|
-
|
|
28746
|
+
const prevRef = useRef61({ centerLat, centerLng, zoom });
|
|
28747
|
+
useEffect64(() => {
|
|
30124
28748
|
const prev = prevRef.current;
|
|
30125
28749
|
if (prev.centerLat !== centerLat || prev.centerLng !== centerLng || prev.zoom !== zoom) {
|
|
30126
28750
|
map.setView([centerLat, centerLng], zoom);
|
|
@@ -30131,7 +28755,7 @@ var init_MapView = __esm({
|
|
|
30131
28755
|
}
|
|
30132
28756
|
function MapClickHandler({ onMapClick }) {
|
|
30133
28757
|
const map = useMap();
|
|
30134
|
-
|
|
28758
|
+
useEffect64(() => {
|
|
30135
28759
|
if (!onMapClick) return;
|
|
30136
28760
|
const handler = (e) => {
|
|
30137
28761
|
onMapClick(e.latlng.lat, e.latlng.lng);
|
|
@@ -30160,7 +28784,7 @@ var init_MapView = __esm({
|
|
|
30160
28784
|
}) {
|
|
30161
28785
|
const eventBus = useEventBus2();
|
|
30162
28786
|
const [clickedPosition, setClickedPosition] = useState100(null);
|
|
30163
|
-
const handleMapClick =
|
|
28787
|
+
const handleMapClick = useCallback104((lat, lng) => {
|
|
30164
28788
|
if (showClickedPin) {
|
|
30165
28789
|
setClickedPosition({ lat, lng });
|
|
30166
28790
|
}
|
|
@@ -30169,7 +28793,7 @@ var init_MapView = __esm({
|
|
|
30169
28793
|
eventBus.emit(`UI:${mapClickEvent}`, { latitude: lat, longitude: lng });
|
|
30170
28794
|
}
|
|
30171
28795
|
}, [onMapClick, mapClickEvent, eventBus, showClickedPin]);
|
|
30172
|
-
const handleMarkerClick =
|
|
28796
|
+
const handleMarkerClick = useCallback104((marker) => {
|
|
30173
28797
|
onMarkerClick?.(marker);
|
|
30174
28798
|
if (markerClickEvent) {
|
|
30175
28799
|
eventBus.emit(`UI:${markerClickEvent}`, { ...marker });
|
|
@@ -37267,7 +35891,7 @@ var init_Navigation = __esm({
|
|
|
37267
35891
|
exports.Navigation.displayName = "Navigation";
|
|
37268
35892
|
}
|
|
37269
35893
|
});
|
|
37270
|
-
var paddingStyles4,
|
|
35894
|
+
var paddingStyles4, variantStyles7; exports.Section = void 0;
|
|
37271
35895
|
var init_Section = __esm({
|
|
37272
35896
|
"components/core/molecules/Section.tsx"() {
|
|
37273
35897
|
init_cn();
|
|
@@ -37280,7 +35904,7 @@ var init_Section = __esm({
|
|
|
37280
35904
|
lg: "p-6",
|
|
37281
35905
|
xl: "p-8"
|
|
37282
35906
|
};
|
|
37283
|
-
|
|
35907
|
+
variantStyles7 = {
|
|
37284
35908
|
default: "",
|
|
37285
35909
|
card: [
|
|
37286
35910
|
"bg-card",
|
|
@@ -37313,7 +35937,7 @@ var init_Section = __esm({
|
|
|
37313
35937
|
{
|
|
37314
35938
|
className: cn(
|
|
37315
35939
|
paddingStyles4[padding],
|
|
37316
|
-
|
|
35940
|
+
variantStyles7[variant],
|
|
37317
35941
|
className
|
|
37318
35942
|
)
|
|
37319
35943
|
},
|
|
@@ -41489,18 +40113,18 @@ function entityFieldsFromListItem(item) {
|
|
|
41489
40113
|
function getStatusStyle(fieldName, value) {
|
|
41490
40114
|
const val = String(value).toLowerCase();
|
|
41491
40115
|
if (val.includes("complete") || val.includes("done"))
|
|
41492
|
-
return
|
|
40116
|
+
return STATUS_STYLES.complete;
|
|
41493
40117
|
if (val.includes("active") || val.includes("progress"))
|
|
41494
|
-
return
|
|
40118
|
+
return STATUS_STYLES.active;
|
|
41495
40119
|
if (val.includes("pending") || val.includes("waiting"))
|
|
41496
|
-
return
|
|
40120
|
+
return STATUS_STYLES.pending;
|
|
41497
40121
|
if (val.includes("block") || val.includes("cancel"))
|
|
41498
|
-
return
|
|
41499
|
-
if (val.includes("high") || val.includes("urgent")) return
|
|
40122
|
+
return STATUS_STYLES.blocked;
|
|
40123
|
+
if (val.includes("high") || val.includes("urgent")) return STATUS_STYLES.high;
|
|
41500
40124
|
if (val.includes("medium") || val.includes("normal"))
|
|
41501
|
-
return
|
|
41502
|
-
if (val.includes("low")) return
|
|
41503
|
-
return
|
|
40125
|
+
return STATUS_STYLES.medium;
|
|
40126
|
+
if (val.includes("low")) return STATUS_STYLES.low;
|
|
40127
|
+
return STATUS_STYLES.default;
|
|
41504
40128
|
}
|
|
41505
40129
|
function formatValue3(value, fieldName) {
|
|
41506
40130
|
if (typeof value === "number") {
|
|
@@ -41533,7 +40157,7 @@ function formatValue3(value, fieldName) {
|
|
|
41533
40157
|
function formatFieldLabel2(fieldName) {
|
|
41534
40158
|
return fieldName.replace(/([A-Z])/g, " $1").replace(/^./, (str2) => str2.toUpperCase()).replace(/Id$/, "").trim();
|
|
41535
40159
|
}
|
|
41536
|
-
var
|
|
40160
|
+
var STATUS_STYLES, StatusBadge, ProgressIndicator; exports.List = void 0;
|
|
41537
40161
|
var init_List = __esm({
|
|
41538
40162
|
"components/core/organisms/List.tsx"() {
|
|
41539
40163
|
"use client";
|
|
@@ -41546,7 +40170,7 @@ var init_List = __esm({
|
|
|
41546
40170
|
init_getNestedValue();
|
|
41547
40171
|
init_useEventBus();
|
|
41548
40172
|
init_types2();
|
|
41549
|
-
|
|
40173
|
+
STATUS_STYLES = {
|
|
41550
40174
|
complete: {
|
|
41551
40175
|
bg: "bg-success/10",
|
|
41552
40176
|
text: "text-success",
|
|
@@ -45730,7 +44354,7 @@ var init_TeamOrganism = __esm({
|
|
|
45730
44354
|
exports.TeamOrganism.displayName = "TeamOrganism";
|
|
45731
44355
|
}
|
|
45732
44356
|
});
|
|
45733
|
-
var lookStyles10,
|
|
44357
|
+
var lookStyles10, STATUS_STYLES2; exports.Timeline = void 0;
|
|
45734
44358
|
var init_Timeline = __esm({
|
|
45735
44359
|
"components/core/organisms/Timeline.tsx"() {
|
|
45736
44360
|
"use client";
|
|
@@ -45746,7 +44370,7 @@ var init_Timeline = __esm({
|
|
|
45746
44370
|
horizontal: "flex-row [&>*]:flex-row [&>*]:items-center",
|
|
45747
44371
|
swimlane: "flex-row gap-6 [&>*]:flex-row [&>*]:items-center"
|
|
45748
44372
|
};
|
|
45749
|
-
|
|
44373
|
+
STATUS_STYLES2 = {
|
|
45750
44374
|
complete: {
|
|
45751
44375
|
dotColor: "text-success",
|
|
45752
44376
|
lineColor: "bg-success",
|
|
@@ -45830,7 +44454,7 @@ var init_Timeline = __esm({
|
|
|
45830
44454
|
title && /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h5", weight: "semibold", children: title }),
|
|
45831
44455
|
/* @__PURE__ */ jsxRuntime.jsx(exports.VStack, { gap: "none", className: cn("relative", lookStyles10[look]), children: items.map((item, idx) => {
|
|
45832
44456
|
const status = item.status || "pending";
|
|
45833
|
-
const style =
|
|
44457
|
+
const style = STATUS_STYLES2[status] || STATUS_STYLES2.pending;
|
|
45834
44458
|
const ItemIcon = item.icon || style.icon;
|
|
45835
44459
|
const isLast = idx === items.length - 1;
|
|
45836
44460
|
return /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "md", align: "start", className: "relative", children: [
|
|
@@ -45941,38 +44565,13 @@ var init_ToastSlot = __esm({
|
|
|
45941
44565
|
exports.ToastSlot.displayName = "ToastSlot";
|
|
45942
44566
|
}
|
|
45943
44567
|
});
|
|
45944
|
-
|
|
45945
|
-
|
|
45946
|
-
|
|
45947
|
-
const Resolved = m[name];
|
|
45948
|
-
if (!Resolved) {
|
|
45949
|
-
throw new Error(
|
|
45950
|
-
`[@almadar/ui] 3D component "${name}" was not found in the three subpath bundle.`
|
|
45951
|
-
);
|
|
45952
|
-
}
|
|
45953
|
-
return { default: Resolved };
|
|
45954
|
-
})
|
|
45955
|
-
);
|
|
45956
|
-
function ThreeWrapper(props) {
|
|
45957
|
-
return React73__namespace.default.createElement(
|
|
45958
|
-
ThreeBoundary,
|
|
45959
|
-
{ name },
|
|
45960
|
-
React73__namespace.default.createElement(
|
|
45961
|
-
React73__namespace.default.Suspense,
|
|
45962
|
-
{ fallback: null },
|
|
45963
|
-
React73__namespace.default.createElement(Lazy, props)
|
|
45964
|
-
)
|
|
45965
|
-
);
|
|
45966
|
-
}
|
|
45967
|
-
ThreeWrapper.displayName = `Lazy(${name})`;
|
|
45968
|
-
return ThreeWrapper;
|
|
45969
|
-
}
|
|
45970
|
-
var ThreeBoundary, GameCanvas3D2, COMPONENT_REGISTRY;
|
|
44568
|
+
|
|
44569
|
+
// components/core/organisms/component-registry.generated.ts
|
|
44570
|
+
var COMPONENT_REGISTRY;
|
|
45971
44571
|
var init_component_registry_generated = __esm({
|
|
45972
44572
|
"components/core/organisms/component-registry.generated.ts"() {
|
|
45973
44573
|
init_AboutPageTemplate();
|
|
45974
44574
|
init_Accordion();
|
|
45975
|
-
init_ActionButton();
|
|
45976
44575
|
init_ActionPalette();
|
|
45977
44576
|
init_ActionTile();
|
|
45978
44577
|
init_ActivationBlock();
|
|
@@ -46016,7 +44615,6 @@ var init_component_registry_generated = __esm({
|
|
|
46016
44615
|
init_ChoiceButton();
|
|
46017
44616
|
init_CodeBlock();
|
|
46018
44617
|
init_CodeRunnerPanel();
|
|
46019
|
-
init_ComboCounter();
|
|
46020
44618
|
init_CommunityLinks();
|
|
46021
44619
|
init_ConditionalWrapper();
|
|
46022
44620
|
init_ConfettiEffect();
|
|
@@ -46028,7 +44626,6 @@ var init_component_registry_generated = __esm({
|
|
|
46028
44626
|
init_ControlButton();
|
|
46029
44627
|
init_ControlGrid();
|
|
46030
44628
|
init_CounterTemplate();
|
|
46031
|
-
init_DamageNumber();
|
|
46032
44629
|
init_DashboardGrid();
|
|
46033
44630
|
init_DashboardLayout();
|
|
46034
44631
|
init_DataGrid();
|
|
@@ -46058,7 +44655,6 @@ var init_component_registry_generated = __esm({
|
|
|
46058
44655
|
init_EmptyState();
|
|
46059
44656
|
init_ErrorBoundary();
|
|
46060
44657
|
init_ErrorState();
|
|
46061
|
-
init_EventLog();
|
|
46062
44658
|
init_FeatureCard();
|
|
46063
44659
|
init_FeatureDetailPageTemplate();
|
|
46064
44660
|
init_FeatureGrid();
|
|
@@ -46075,12 +44671,10 @@ var init_component_registry_generated = __esm({
|
|
|
46075
44671
|
init_FormField();
|
|
46076
44672
|
init_FormSectionHeader();
|
|
46077
44673
|
init_GameAudioToggle();
|
|
46078
|
-
init_GameCard();
|
|
46079
44674
|
init_GameHud();
|
|
46080
44675
|
init_GameIcon();
|
|
46081
44676
|
init_GameMenu();
|
|
46082
44677
|
init_GameShell();
|
|
46083
|
-
init_GameTemplate();
|
|
46084
44678
|
init_GenericAppTemplate();
|
|
46085
44679
|
init_GeometricPattern();
|
|
46086
44680
|
init_GradientDivider();
|
|
@@ -46097,8 +44691,6 @@ var init_component_registry_generated = __esm({
|
|
|
46097
44691
|
init_Input();
|
|
46098
44692
|
init_InputGroup();
|
|
46099
44693
|
init_InstallBox();
|
|
46100
|
-
init_InventoryGrid();
|
|
46101
|
-
init_ItemSlot();
|
|
46102
44694
|
init_JazariStateMachine();
|
|
46103
44695
|
init_LandingPageTemplate();
|
|
46104
44696
|
init_LawReferenceTooltip();
|
|
@@ -46119,13 +44711,11 @@ var init_component_registry_generated = __esm({
|
|
|
46119
44711
|
init_MediaGallery();
|
|
46120
44712
|
init_Menu();
|
|
46121
44713
|
init_Meter();
|
|
46122
|
-
init_MiniMap();
|
|
46123
44714
|
init_Modal();
|
|
46124
44715
|
init_ModalSlot();
|
|
46125
44716
|
init_ModuleCard();
|
|
46126
44717
|
init_Navigation();
|
|
46127
44718
|
init_NumberStepper();
|
|
46128
|
-
init_ObjectRulePanel();
|
|
46129
44719
|
init_OptionConstraintGroup();
|
|
46130
44720
|
init_OrbitalVisualization();
|
|
46131
44721
|
init_Overlay();
|
|
@@ -46151,8 +44741,6 @@ var init_component_registry_generated = __esm({
|
|
|
46151
44741
|
init_RelationSelect();
|
|
46152
44742
|
init_RepeatableFormSection();
|
|
46153
44743
|
init_ReplyTree();
|
|
46154
|
-
init_ResourceBar();
|
|
46155
|
-
init_ResourceCounter();
|
|
46156
44744
|
init_RichBlockEditor();
|
|
46157
44745
|
init_RuntimeDebugger2();
|
|
46158
44746
|
init_ScaledDiagram();
|
|
@@ -46178,19 +44766,16 @@ var init_component_registry_generated = __esm({
|
|
|
46178
44766
|
init_Split();
|
|
46179
44767
|
init_SplitPane();
|
|
46180
44768
|
init_SplitSection();
|
|
46181
|
-
init_Sprite();
|
|
46182
44769
|
init_StarRating();
|
|
46183
44770
|
init_StatBadge();
|
|
46184
44771
|
init_StatCard();
|
|
46185
44772
|
init_StatDisplay();
|
|
46186
44773
|
init_StateGraph();
|
|
46187
|
-
init_StateIndicator();
|
|
46188
44774
|
init_StateJsonView();
|
|
46189
44775
|
init_StateMachineView();
|
|
46190
44776
|
init_StatsGrid();
|
|
46191
44777
|
init_StatsOrganism();
|
|
46192
44778
|
init_StatusDot();
|
|
46193
|
-
init_StatusEffect();
|
|
46194
44779
|
init_StepFlow();
|
|
46195
44780
|
init_StepFlowOrganism();
|
|
46196
44781
|
init_SubagentTracePanel();
|
|
@@ -46227,46 +44812,19 @@ var init_component_registry_generated = __esm({
|
|
|
46227
44812
|
init_TraitFrame();
|
|
46228
44813
|
init_TraitSlot();
|
|
46229
44814
|
init_TrendIndicator();
|
|
46230
|
-
init_TurnIndicator();
|
|
46231
44815
|
init_TypewriterText();
|
|
46232
44816
|
init_Typography();
|
|
46233
44817
|
init_UISlotRenderer();
|
|
46234
44818
|
init_UploadDropZone();
|
|
46235
|
-
init_VariablePanel();
|
|
46236
44819
|
init_VersionDiff();
|
|
46237
44820
|
init_ViolationAlert();
|
|
46238
44821
|
init_VoteStack();
|
|
46239
|
-
init_WaypointMarker();
|
|
46240
44822
|
init_WizardContainer();
|
|
46241
44823
|
init_WizardNavigation();
|
|
46242
44824
|
init_WizardProgress();
|
|
46243
|
-
ThreeBoundary = class extends React73__namespace.default.Component {
|
|
46244
|
-
constructor() {
|
|
46245
|
-
super(...arguments);
|
|
46246
|
-
__publicField(this, "state", { failed: false });
|
|
46247
|
-
}
|
|
46248
|
-
static getDerivedStateFromError() {
|
|
46249
|
-
return { failed: true };
|
|
46250
|
-
}
|
|
46251
|
-
render() {
|
|
46252
|
-
if (this.state.failed) {
|
|
46253
|
-
return React73__namespace.default.createElement(
|
|
46254
|
-
"div",
|
|
46255
|
-
{
|
|
46256
|
-
"data-testid": "three-unavailable",
|
|
46257
|
-
style: { padding: 16, fontSize: 13, lineHeight: 1.5, opacity: 0.7 }
|
|
46258
|
-
},
|
|
46259
|
-
`3D pattern "${this.props.name}" requires three.js. Install the optional peers three + @react-three/fiber + @react-three/drei (matching the host React major) to render it.`
|
|
46260
|
-
);
|
|
46261
|
-
}
|
|
46262
|
-
return this.props.children;
|
|
46263
|
-
}
|
|
46264
|
-
};
|
|
46265
|
-
GameCanvas3D2 = lazyThree("GameCanvas3D", () => import('@almadar/ui/components/molecules/game/three'));
|
|
46266
44825
|
COMPONENT_REGISTRY = {
|
|
46267
44826
|
"AboutPageTemplate": exports.AboutPageTemplate,
|
|
46268
44827
|
"Accordion": exports.Accordion,
|
|
46269
|
-
"ActionButton": ActionButton,
|
|
46270
44828
|
"ActionPalette": ActionPalette,
|
|
46271
44829
|
"ActionTile": ActionTile,
|
|
46272
44830
|
"ActivationBlock": exports.ActivationBlock,
|
|
@@ -46315,7 +44873,6 @@ var init_component_registry_generated = __esm({
|
|
|
46315
44873
|
"ChoiceButton": ChoiceButton,
|
|
46316
44874
|
"CodeBlock": exports.CodeBlock,
|
|
46317
44875
|
"CodeRunnerPanel": exports.CodeRunnerPanel,
|
|
46318
|
-
"ComboCounter": ComboCounter,
|
|
46319
44876
|
"CommunityLinks": exports.CommunityLinks,
|
|
46320
44877
|
"ConditionalWrapper": exports.ConditionalWrapper,
|
|
46321
44878
|
"ConfettiEffect": exports.ConfettiEffect,
|
|
@@ -46327,7 +44884,6 @@ var init_component_registry_generated = __esm({
|
|
|
46327
44884
|
"ControlButton": ControlButton,
|
|
46328
44885
|
"ControlGrid": ControlGrid,
|
|
46329
44886
|
"CounterTemplate": exports.CounterTemplate,
|
|
46330
|
-
"DamageNumber": DamageNumber,
|
|
46331
44887
|
"DashboardGrid": exports.DashboardGrid,
|
|
46332
44888
|
"DashboardLayout": exports.DashboardLayout,
|
|
46333
44889
|
"DataGrid": DataGrid,
|
|
@@ -46359,7 +44915,6 @@ var init_component_registry_generated = __esm({
|
|
|
46359
44915
|
"EmptyState": exports.EmptyState,
|
|
46360
44916
|
"ErrorBoundary": exports.ErrorBoundary,
|
|
46361
44917
|
"ErrorState": exports.ErrorState,
|
|
46362
|
-
"EventLog": EventLog,
|
|
46363
44918
|
"FeatureCard": exports.FeatureCard,
|
|
46364
44919
|
"FeatureDetailPageTemplate": exports.FeatureDetailPageTemplate,
|
|
46365
44920
|
"FeatureGrid": exports.FeatureGrid,
|
|
@@ -46377,13 +44932,10 @@ var init_component_registry_generated = __esm({
|
|
|
46377
44932
|
"FormLayout": exports.FormLayout,
|
|
46378
44933
|
"FormSectionHeader": exports.FormSectionHeader,
|
|
46379
44934
|
"GameAudioToggle": GameAudioToggle,
|
|
46380
|
-
"GameCanvas3D": GameCanvas3D2,
|
|
46381
|
-
"GameCard": GameCard,
|
|
46382
44935
|
"GameHud": GameHud,
|
|
46383
44936
|
"GameIcon": GameIcon,
|
|
46384
44937
|
"GameMenu": GameMenu,
|
|
46385
44938
|
"GameShell": exports.GameShell,
|
|
46386
|
-
"GameTemplate": exports.GameTemplate,
|
|
46387
44939
|
"GenericAppTemplate": exports.GenericAppTemplate,
|
|
46388
44940
|
"GeometricPattern": exports.GeometricPattern,
|
|
46389
44941
|
"GradientDivider": exports.GradientDivider,
|
|
@@ -46400,8 +44952,6 @@ var init_component_registry_generated = __esm({
|
|
|
46400
44952
|
"Input": exports.Input,
|
|
46401
44953
|
"InputGroup": exports.InputGroup,
|
|
46402
44954
|
"InstallBox": exports.InstallBox,
|
|
46403
|
-
"InventoryGrid": InventoryGrid,
|
|
46404
|
-
"ItemSlot": ItemSlot,
|
|
46405
44955
|
"JazariStateMachine": exports.JazariStateMachine,
|
|
46406
44956
|
"Label": LabelPattern,
|
|
46407
44957
|
"LabelPattern": LabelPattern,
|
|
@@ -46424,13 +44974,11 @@ var init_component_registry_generated = __esm({
|
|
|
46424
44974
|
"MediaGallery": exports.MediaGallery,
|
|
46425
44975
|
"Menu": exports.Menu,
|
|
46426
44976
|
"Meter": exports.Meter,
|
|
46427
|
-
"MiniMap": MiniMap,
|
|
46428
44977
|
"Modal": exports.Modal,
|
|
46429
44978
|
"ModalSlot": exports.ModalSlot,
|
|
46430
44979
|
"ModuleCard": exports.ModuleCard,
|
|
46431
44980
|
"Navigation": exports.Navigation,
|
|
46432
44981
|
"NumberStepper": exports.NumberStepper,
|
|
46433
|
-
"ObjectRulePanel": ObjectRulePanel,
|
|
46434
44982
|
"OptionConstraintGroup": exports.OptionConstraintGroup,
|
|
46435
44983
|
"OrbitalVisualization": exports.OrbitalVisualization,
|
|
46436
44984
|
"Overlay": exports.Overlay,
|
|
@@ -46456,8 +45004,6 @@ var init_component_registry_generated = __esm({
|
|
|
46456
45004
|
"RelationSelect": exports.RelationSelect,
|
|
46457
45005
|
"RepeatableFormSection": exports.RepeatableFormSection,
|
|
46458
45006
|
"ReplyTree": exports.ReplyTree,
|
|
46459
|
-
"ResourceBar": ResourceBar,
|
|
46460
|
-
"ResourceCounter": ResourceCounter,
|
|
46461
45007
|
"RichBlockEditor": exports.RichBlockEditor,
|
|
46462
45008
|
"RuntimeDebugger": RuntimeDebugger,
|
|
46463
45009
|
"ScaledDiagram": exports.ScaledDiagram,
|
|
@@ -46485,20 +45031,17 @@ var init_component_registry_generated = __esm({
|
|
|
46485
45031
|
"Split": exports.Split,
|
|
46486
45032
|
"SplitPane": exports.SplitPane,
|
|
46487
45033
|
"SplitSection": exports.SplitSection,
|
|
46488
|
-
"Sprite": Sprite,
|
|
46489
45034
|
"Stack": exports.Stack,
|
|
46490
45035
|
"StarRating": exports.StarRating,
|
|
46491
45036
|
"StatBadge": StatBadge,
|
|
46492
45037
|
"StatCard": exports.StatCard,
|
|
46493
45038
|
"StatDisplay": exports.StatDisplay,
|
|
46494
45039
|
"StateGraph": StateGraph,
|
|
46495
|
-
"StateIndicator": StateIndicator,
|
|
46496
45040
|
"StateJsonView": StateJsonView,
|
|
46497
45041
|
"StateMachineView": exports.StateMachineView,
|
|
46498
45042
|
"StatsGrid": exports.StatsGrid,
|
|
46499
45043
|
"StatsOrganism": exports.StatsOrganism,
|
|
46500
45044
|
"StatusDot": exports.StatusDot,
|
|
46501
|
-
"StatusEffect": StatusEffect,
|
|
46502
45045
|
"StepFlow": exports.StepFlow,
|
|
46503
45046
|
"StepFlowOrganism": exports.StepFlowOrganism,
|
|
46504
45047
|
"SubagentTracePanel": exports.SubagentTracePanel,
|
|
@@ -46535,17 +45078,14 @@ var init_component_registry_generated = __esm({
|
|
|
46535
45078
|
"TraitFrame": TraitFrame,
|
|
46536
45079
|
"TraitSlot": TraitSlot,
|
|
46537
45080
|
"TrendIndicator": exports.TrendIndicator,
|
|
46538
|
-
"TurnIndicator": TurnIndicator,
|
|
46539
45081
|
"TypewriterText": exports.TypewriterText,
|
|
46540
45082
|
"Typography": exports.Typography,
|
|
46541
45083
|
"UISlotRenderer": UISlotRenderer,
|
|
46542
45084
|
"UploadDropZone": exports.UploadDropZone,
|
|
46543
45085
|
"VStack": exports.VStack,
|
|
46544
|
-
"VariablePanel": VariablePanel,
|
|
46545
45086
|
"VersionDiff": exports.VersionDiff,
|
|
46546
45087
|
"ViolationAlert": exports.ViolationAlert,
|
|
46547
45088
|
"VoteStack": exports.VoteStack,
|
|
46548
|
-
"WaypointMarker": WaypointMarker,
|
|
46549
45089
|
"WizardContainer": exports.WizardContainer,
|
|
46550
45090
|
"WizardNavigation": exports.WizardNavigation,
|
|
46551
45091
|
"WizardProgress": exports.WizardProgress,
|
|
@@ -47562,6 +46102,7 @@ var init_atoms = __esm({
|
|
|
47562
46102
|
init_Card();
|
|
47563
46103
|
init_Badge();
|
|
47564
46104
|
init_AtlasImage();
|
|
46105
|
+
init_GameIcon();
|
|
47565
46106
|
init_FilterPill();
|
|
47566
46107
|
init_Spinner();
|
|
47567
46108
|
init_Avatar();
|
|
@@ -49670,7 +48211,7 @@ var I18nContext = React73.createContext({
|
|
|
49670
48211
|
});
|
|
49671
48212
|
I18nContext.displayName = "I18nContext";
|
|
49672
48213
|
var I18nProvider = I18nContext.Provider;
|
|
49673
|
-
function
|
|
48214
|
+
function useTranslate115() {
|
|
49674
48215
|
return React73.useContext(I18nContext);
|
|
49675
48216
|
}
|
|
49676
48217
|
function createTranslate(messages) {
|
|
@@ -49935,8 +48476,19 @@ function useGitHubBranches(owner, repo, enabled = true) {
|
|
|
49935
48476
|
});
|
|
49936
48477
|
}
|
|
49937
48478
|
|
|
48479
|
+
Object.defineProperty(exports, "GameAudioContext", {
|
|
48480
|
+
enumerable: true,
|
|
48481
|
+
get: function () { return providers.GameAudioContext; }
|
|
48482
|
+
});
|
|
48483
|
+
Object.defineProperty(exports, "GameAudioProvider", {
|
|
48484
|
+
enumerable: true,
|
|
48485
|
+
get: function () { return providers.GameAudioProvider; }
|
|
48486
|
+
});
|
|
48487
|
+
Object.defineProperty(exports, "useGameAudioContext", {
|
|
48488
|
+
enumerable: true,
|
|
48489
|
+
get: function () { return providers.useGameAudioContext; }
|
|
48490
|
+
});
|
|
49938
48491
|
exports.ALMADAR_DND_MIME = ALMADAR_DND_MIME;
|
|
49939
|
-
exports.ActionButton = ActionButton;
|
|
49940
48492
|
exports.ActionCard = Card2;
|
|
49941
48493
|
exports.ActionPalette = ActionPalette;
|
|
49942
48494
|
exports.ActionTile = ActionTile;
|
|
@@ -49948,11 +48500,9 @@ exports.Canvas2D = Canvas2D;
|
|
|
49948
48500
|
exports.ChatBar = ChatBar;
|
|
49949
48501
|
exports.ChoiceButton = ChoiceButton;
|
|
49950
48502
|
exports.CollapsibleSection = CollapsibleSection;
|
|
49951
|
-
exports.ComboCounter = ComboCounter;
|
|
49952
48503
|
exports.ControlButton = ControlButton;
|
|
49953
48504
|
exports.ControlGrid = ControlGrid;
|
|
49954
48505
|
exports.DEFAULT_SLOTS = DEFAULT_SLOTS;
|
|
49955
|
-
exports.DamageNumber = DamageNumber;
|
|
49956
48506
|
exports.DataGrid = DataGrid;
|
|
49957
48507
|
exports.DataList = DataList;
|
|
49958
48508
|
exports.DataTable = DataTable;
|
|
@@ -49966,39 +48516,26 @@ exports.EditorSelect = EditorSelect;
|
|
|
49966
48516
|
exports.EditorSlider = EditorSlider;
|
|
49967
48517
|
exports.EditorTextInput = EditorTextInput;
|
|
49968
48518
|
exports.EditorToolbar = EditorToolbar;
|
|
49969
|
-
exports.EventLog = EventLog;
|
|
49970
|
-
exports.GameAudioProvider = GameAudioProvider;
|
|
49971
48519
|
exports.GameAudioToggle = GameAudioToggle;
|
|
49972
|
-
exports.GameCard = GameCard;
|
|
49973
48520
|
exports.GameHud = GameHud;
|
|
49974
48521
|
exports.GameIcon = GameIcon;
|
|
49975
48522
|
exports.GameMenu = GameMenu;
|
|
49976
48523
|
exports.HealthBar = HealthBar;
|
|
49977
48524
|
exports.I18nProvider = I18nProvider;
|
|
49978
|
-
exports.InventoryGrid = InventoryGrid;
|
|
49979
|
-
exports.ItemSlot = ItemSlot;
|
|
49980
48525
|
exports.MapView = MapView;
|
|
49981
48526
|
exports.MasterDetail = MasterDetail;
|
|
49982
|
-
exports.MiniMap = MiniMap;
|
|
49983
48527
|
exports.NotifyListener = NotifyListener;
|
|
49984
|
-
exports.ObjectRulePanel = ObjectRulePanel;
|
|
49985
48528
|
exports.OrbitalStateMachineView = exports.StateMachineView;
|
|
49986
|
-
exports.ResourceBar = ResourceBar;
|
|
49987
|
-
exports.ResourceCounter = ResourceCounter;
|
|
49988
|
-
exports.RuleEditor = RuleEditor;
|
|
49989
48529
|
exports.RuntimeDebugger = RuntimeDebugger;
|
|
49990
48530
|
exports.ScoreDisplay = ScoreDisplay;
|
|
49991
48531
|
exports.SequenceBar = SequenceBar;
|
|
49992
48532
|
exports.Skeleton = Skeleton;
|
|
49993
48533
|
exports.SlotContentRenderer = SlotContentRenderer;
|
|
49994
|
-
exports.Sprite = Sprite;
|
|
49995
48534
|
exports.StatBadge = StatBadge;
|
|
49996
48535
|
exports.StateGraph = StateGraph;
|
|
49997
|
-
exports.StateIndicator = StateIndicator;
|
|
49998
48536
|
exports.StateJsonView = StateJsonView;
|
|
49999
48537
|
exports.StateNode = StateNode2;
|
|
50000
48538
|
exports.StatusBar = StatusBar;
|
|
50001
|
-
exports.StatusEffect = StatusEffect;
|
|
50002
48539
|
exports.TableView = TableView;
|
|
50003
48540
|
exports.TerrainPalette = TerrainPalette;
|
|
50004
48541
|
exports.TimeSlotCell = TimeSlotCell;
|
|
@@ -50007,11 +48544,8 @@ exports.TraitFrame = TraitFrame;
|
|
|
50007
48544
|
exports.TraitSlot = TraitSlot;
|
|
50008
48545
|
exports.TraitStateViewer = TraitStateViewer;
|
|
50009
48546
|
exports.TransitionArrow = TransitionArrow;
|
|
50010
|
-
exports.TurnIndicator = TurnIndicator;
|
|
50011
48547
|
exports.UISlotComponent = UISlotComponent;
|
|
50012
48548
|
exports.UISlotRenderer = UISlotRenderer;
|
|
50013
|
-
exports.VariablePanel = VariablePanel;
|
|
50014
|
-
exports.WaypointMarker = WaypointMarker;
|
|
50015
48549
|
exports.boardEntity = boardEntity;
|
|
50016
48550
|
exports.bool = bool;
|
|
50017
48551
|
exports.calculateAttackTargets = calculateAttackTargets;
|
|
@@ -50021,7 +48555,6 @@ exports.createInitialGameState = createInitialGameState;
|
|
|
50021
48555
|
exports.createSharedEntityStore = createSharedEntityStore;
|
|
50022
48556
|
exports.createTranslate = createTranslate;
|
|
50023
48557
|
exports.createUnitAnimationState = createUnitAnimationState;
|
|
50024
|
-
exports.drawSprite = drawSprite;
|
|
50025
48558
|
exports.getCurrentFrame = getCurrentFrame;
|
|
50026
48559
|
exports.getTileDimensions = getTileDimensions;
|
|
50027
48560
|
exports.inferDirection = inferDirection;
|
|
@@ -50076,7 +48609,6 @@ exports.useExtensions = useExtensions;
|
|
|
50076
48609
|
exports.useFileEditor = useFileEditor;
|
|
50077
48610
|
exports.useFileSystem = useFileSystem;
|
|
50078
48611
|
exports.useGameAudio = useGameAudio;
|
|
50079
|
-
exports.useGameAudioContext = useGameAudioContext;
|
|
50080
48612
|
exports.useGitHubBranches = useGitHubBranches;
|
|
50081
48613
|
exports.useGitHubRepo = useGitHubRepo;
|
|
50082
48614
|
exports.useGitHubRepos = useGitHubRepos;
|
|
@@ -50094,7 +48626,7 @@ exports.useSharedEntityStore = useSharedEntityStore;
|
|
|
50094
48626
|
exports.useSwipeGesture = useSwipeGesture;
|
|
50095
48627
|
exports.useTapReveal = useTapReveal;
|
|
50096
48628
|
exports.useTraitListens = useTraitListens;
|
|
50097
|
-
exports.useTranslate =
|
|
48629
|
+
exports.useTranslate = useTranslate115;
|
|
50098
48630
|
exports.useUIEvents = useUIEvents;
|
|
50099
48631
|
exports.useUISlotManager = useUISlotManager;
|
|
50100
48632
|
exports.useUnitSpriteAtlas = useUnitSpriteAtlas;
|