@almadar/ui 5.83.0 → 5.85.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 +1265 -1672
- package/dist/avl/index.js +235 -642
- package/dist/components/game/2d/atoms/ChoiceButton.d.ts +3 -1
- package/dist/components/game/2d/molecules/index.d.ts +0 -2
- package/dist/components/index.cjs +1354 -1765
- package/dist/components/index.js +311 -720
- package/dist/providers/index.cjs +1132 -1539
- package/dist/providers/index.js +211 -618
- package/dist/runtime/index.cjs +1126 -1533
- package/dist/runtime/index.js +215 -622
- package/package.json +1 -1
- package/dist/components/game/2d/organisms/CardBattlerBoard.d.ts +0 -45
- package/dist/components/game/2d/organisms/VisualNovelBoard.d.ts +0 -44
package/dist/components/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import * as
|
|
3
|
-
import
|
|
2
|
+
import * as React74 from 'react';
|
|
3
|
+
import React74__default, { createContext, useContext, useMemo, useRef, useEffect, useCallback, useState, Suspense, lazy, useLayoutEffect, useId, useSyncExternalStore } from 'react';
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import { EventBusContext, useTraitScope, useCurrentPagePath, useEntitySchemaOptional, TraitScopeProvider } from '@almadar/ui/providers';
|
|
@@ -227,7 +227,7 @@ var init_SvgFlow = __esm({
|
|
|
227
227
|
width = 100,
|
|
228
228
|
height = 100
|
|
229
229
|
}) => {
|
|
230
|
-
const markerId =
|
|
230
|
+
const markerId = React74__default.useMemo(() => {
|
|
231
231
|
flowIdCounter += 1;
|
|
232
232
|
return `almadar-flow-arrow-${flowIdCounter}`;
|
|
233
233
|
}, []);
|
|
@@ -820,7 +820,7 @@ var init_SvgRing = __esm({
|
|
|
820
820
|
width = 100,
|
|
821
821
|
height = 100
|
|
822
822
|
}) => {
|
|
823
|
-
const gradientId =
|
|
823
|
+
const gradientId = React74__default.useMemo(() => {
|
|
824
824
|
ringIdCounter += 1;
|
|
825
825
|
return `almadar-ring-glow-${ringIdCounter}`;
|
|
826
826
|
}, []);
|
|
@@ -1232,7 +1232,7 @@ function loadLib(key, importer) {
|
|
|
1232
1232
|
return p2;
|
|
1233
1233
|
}
|
|
1234
1234
|
function lazyFamilyIcon(libKey, importer, pick, fallbackName, family) {
|
|
1235
|
-
const Lazy =
|
|
1235
|
+
const Lazy = React74__default.lazy(async () => {
|
|
1236
1236
|
const lib = await loadLib(libKey, importer);
|
|
1237
1237
|
const Comp = pick(lib);
|
|
1238
1238
|
if (!Comp) {
|
|
@@ -1242,7 +1242,7 @@ function lazyFamilyIcon(libKey, importer, pick, fallbackName, family) {
|
|
|
1242
1242
|
return { default: Comp };
|
|
1243
1243
|
});
|
|
1244
1244
|
const Wrapped = (props) => /* @__PURE__ */ jsx(
|
|
1245
|
-
|
|
1245
|
+
React74__default.Suspense,
|
|
1246
1246
|
{
|
|
1247
1247
|
fallback: /* @__PURE__ */ jsx(
|
|
1248
1248
|
"span",
|
|
@@ -1973,7 +1973,7 @@ var init_Icon = __esm({
|
|
|
1973
1973
|
const directIcon = typeof icon === "string" ? void 0 : icon;
|
|
1974
1974
|
const effectiveName = typeof icon === "string" ? icon : name;
|
|
1975
1975
|
const family = useIconFamily();
|
|
1976
|
-
const RenderedComponent =
|
|
1976
|
+
const RenderedComponent = React74__default.useMemo(() => {
|
|
1977
1977
|
if (directIcon) return null;
|
|
1978
1978
|
return effectiveName ? resolveIconForFamily(effectiveName, family) : null;
|
|
1979
1979
|
}, [directIcon, effectiveName, family]);
|
|
@@ -2035,7 +2035,7 @@ function resolveIconProp(value, sizeClass) {
|
|
|
2035
2035
|
const IconComp = value;
|
|
2036
2036
|
return /* @__PURE__ */ jsx(IconComp, { className: sizeClass });
|
|
2037
2037
|
}
|
|
2038
|
-
if (
|
|
2038
|
+
if (React74__default.isValidElement(value)) {
|
|
2039
2039
|
return value;
|
|
2040
2040
|
}
|
|
2041
2041
|
if (typeof value === "object" && value !== null && isIconLike(value)) {
|
|
@@ -2111,7 +2111,7 @@ var init_Button = __esm({
|
|
|
2111
2111
|
md: "h-icon-default w-icon-default",
|
|
2112
2112
|
lg: "h-icon-default w-icon-default"
|
|
2113
2113
|
};
|
|
2114
|
-
Button =
|
|
2114
|
+
Button = React74__default.forwardRef(
|
|
2115
2115
|
({
|
|
2116
2116
|
className,
|
|
2117
2117
|
variant = "primary",
|
|
@@ -2181,7 +2181,7 @@ var init_Input = __esm({
|
|
|
2181
2181
|
init_cn();
|
|
2182
2182
|
init_Icon();
|
|
2183
2183
|
init_useEventBus();
|
|
2184
|
-
Input =
|
|
2184
|
+
Input = React74__default.forwardRef(
|
|
2185
2185
|
({
|
|
2186
2186
|
className,
|
|
2187
2187
|
inputType,
|
|
@@ -2341,7 +2341,7 @@ var Label;
|
|
|
2341
2341
|
var init_Label = __esm({
|
|
2342
2342
|
"components/core/atoms/Label.tsx"() {
|
|
2343
2343
|
init_cn();
|
|
2344
|
-
Label =
|
|
2344
|
+
Label = React74__default.forwardRef(
|
|
2345
2345
|
({ className, required, children, ...props }, ref) => {
|
|
2346
2346
|
return /* @__PURE__ */ jsxs(
|
|
2347
2347
|
"label",
|
|
@@ -2368,7 +2368,7 @@ var init_Textarea = __esm({
|
|
|
2368
2368
|
"components/core/atoms/Textarea.tsx"() {
|
|
2369
2369
|
init_cn();
|
|
2370
2370
|
init_useEventBus();
|
|
2371
|
-
Textarea =
|
|
2371
|
+
Textarea = React74__default.forwardRef(
|
|
2372
2372
|
({ className, error, onChange, ...props }, ref) => {
|
|
2373
2373
|
const eventBus = useEventBus();
|
|
2374
2374
|
const handleChange = (e) => {
|
|
@@ -2607,7 +2607,7 @@ var init_Select = __esm({
|
|
|
2607
2607
|
init_cn();
|
|
2608
2608
|
init_Icon();
|
|
2609
2609
|
init_useEventBus();
|
|
2610
|
-
Select =
|
|
2610
|
+
Select = React74__default.forwardRef(
|
|
2611
2611
|
(props, _ref) => {
|
|
2612
2612
|
const { multiple, searchable, clearable } = props;
|
|
2613
2613
|
if (multiple || searchable || clearable) {
|
|
@@ -2624,7 +2624,7 @@ var init_Checkbox = __esm({
|
|
|
2624
2624
|
"components/core/atoms/Checkbox.tsx"() {
|
|
2625
2625
|
init_cn();
|
|
2626
2626
|
init_useEventBus();
|
|
2627
|
-
Checkbox =
|
|
2627
|
+
Checkbox = React74__default.forwardRef(
|
|
2628
2628
|
({ className, label, id, onChange, ...props }, ref) => {
|
|
2629
2629
|
const inputId = id || `checkbox-${Math.random().toString(36).substr(2, 9)}`;
|
|
2630
2630
|
const eventBus = useEventBus();
|
|
@@ -2678,7 +2678,7 @@ var init_Spinner = __esm({
|
|
|
2678
2678
|
md: "h-6 w-6",
|
|
2679
2679
|
lg: "h-8 w-8"
|
|
2680
2680
|
};
|
|
2681
|
-
Spinner =
|
|
2681
|
+
Spinner = React74__default.forwardRef(
|
|
2682
2682
|
({ className, size = "md", overlay, ...props }, ref) => {
|
|
2683
2683
|
if (overlay) {
|
|
2684
2684
|
return /* @__PURE__ */ jsx(
|
|
@@ -2768,7 +2768,7 @@ var init_Card = __esm({
|
|
|
2768
2768
|
chip: "shadow-none rounded-pill border-[length:var(--border-width)] border-border",
|
|
2769
2769
|
"tile-image-first": "p-0 overflow-hidden"
|
|
2770
2770
|
};
|
|
2771
|
-
Card =
|
|
2771
|
+
Card = React74__default.forwardRef(
|
|
2772
2772
|
({
|
|
2773
2773
|
className,
|
|
2774
2774
|
variant = "bordered",
|
|
@@ -2816,9 +2816,9 @@ var init_Card = __esm({
|
|
|
2816
2816
|
}
|
|
2817
2817
|
);
|
|
2818
2818
|
Card.displayName = "Card";
|
|
2819
|
-
CardHeader =
|
|
2819
|
+
CardHeader = React74__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-4", className), ...props }));
|
|
2820
2820
|
CardHeader.displayName = "CardHeader";
|
|
2821
|
-
CardTitle =
|
|
2821
|
+
CardTitle = React74__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2822
2822
|
"h3",
|
|
2823
2823
|
{
|
|
2824
2824
|
ref,
|
|
@@ -2831,11 +2831,11 @@ var init_Card = __esm({
|
|
|
2831
2831
|
}
|
|
2832
2832
|
));
|
|
2833
2833
|
CardTitle.displayName = "CardTitle";
|
|
2834
|
-
CardContent =
|
|
2834
|
+
CardContent = React74__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props }));
|
|
2835
2835
|
CardContent.displayName = "CardContent";
|
|
2836
2836
|
CardBody = CardContent;
|
|
2837
2837
|
CardBody.displayName = "CardBody";
|
|
2838
|
-
CardFooter =
|
|
2838
|
+
CardFooter = React74__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2839
2839
|
"div",
|
|
2840
2840
|
{
|
|
2841
2841
|
ref,
|
|
@@ -2888,7 +2888,7 @@ var init_Badge = __esm({
|
|
|
2888
2888
|
md: "px-2.5 py-1 text-sm",
|
|
2889
2889
|
lg: "px-3 py-1.5 text-base"
|
|
2890
2890
|
};
|
|
2891
|
-
Badge =
|
|
2891
|
+
Badge = React74__default.forwardRef(
|
|
2892
2892
|
({ className, variant = "default", size = "sm", amount, label, icon, iconAsset, children, onRemove, removeLabel, ...props }, ref) => {
|
|
2893
2893
|
const iconSizes3 = {
|
|
2894
2894
|
sm: "h-icon-default w-icon-default",
|
|
@@ -2982,7 +2982,7 @@ var init_FilterPill = __esm({
|
|
|
2982
2982
|
md: "w-3.5 h-3.5",
|
|
2983
2983
|
lg: "w-4 h-4"
|
|
2984
2984
|
};
|
|
2985
|
-
FilterPill =
|
|
2985
|
+
FilterPill = React74__default.forwardRef(
|
|
2986
2986
|
({
|
|
2987
2987
|
className,
|
|
2988
2988
|
variant = "default",
|
|
@@ -3111,8 +3111,8 @@ var init_Avatar = __esm({
|
|
|
3111
3111
|
actionPayload
|
|
3112
3112
|
}) => {
|
|
3113
3113
|
const eventBus = useEventBus();
|
|
3114
|
-
const [imgFailed, setImgFailed] =
|
|
3115
|
-
|
|
3114
|
+
const [imgFailed, setImgFailed] = React74__default.useState(false);
|
|
3115
|
+
React74__default.useEffect(() => {
|
|
3116
3116
|
setImgFailed(false);
|
|
3117
3117
|
}, [src]);
|
|
3118
3118
|
const initials = providedInitials ?? (name ? generateInitials(name) : void 0);
|
|
@@ -3364,7 +3364,7 @@ var init_Box = __esm({
|
|
|
3364
3364
|
fixed: "fixed",
|
|
3365
3365
|
sticky: "sticky"
|
|
3366
3366
|
};
|
|
3367
|
-
Box =
|
|
3367
|
+
Box = React74__default.forwardRef(
|
|
3368
3368
|
({
|
|
3369
3369
|
padding,
|
|
3370
3370
|
paddingX,
|
|
@@ -3429,7 +3429,7 @@ var init_Box = __esm({
|
|
|
3429
3429
|
onPointerDown?.(e);
|
|
3430
3430
|
}, [hoverEvent, tapReveal, triggerProps, onPointerDown]);
|
|
3431
3431
|
const isClickable = action || onClick;
|
|
3432
|
-
return
|
|
3432
|
+
return React74__default.createElement(
|
|
3433
3433
|
Component,
|
|
3434
3434
|
{
|
|
3435
3435
|
ref,
|
|
@@ -3483,7 +3483,7 @@ var init_Center = __esm({
|
|
|
3483
3483
|
as: Component = "div"
|
|
3484
3484
|
}) => {
|
|
3485
3485
|
const mergedStyle = minHeight ? { minHeight, ...style } : style;
|
|
3486
|
-
return
|
|
3486
|
+
return React74__default.createElement(Component, {
|
|
3487
3487
|
className: cn(
|
|
3488
3488
|
inline ? "inline-flex" : "flex",
|
|
3489
3489
|
horizontal && "justify-center",
|
|
@@ -3751,7 +3751,7 @@ var init_Radio = __esm({
|
|
|
3751
3751
|
md: "w-2.5 h-2.5",
|
|
3752
3752
|
lg: "w-3 h-3"
|
|
3753
3753
|
};
|
|
3754
|
-
Radio =
|
|
3754
|
+
Radio = React74__default.forwardRef(
|
|
3755
3755
|
({
|
|
3756
3756
|
label,
|
|
3757
3757
|
helperText,
|
|
@@ -3768,12 +3768,12 @@ var init_Radio = __esm({
|
|
|
3768
3768
|
onChange,
|
|
3769
3769
|
...props
|
|
3770
3770
|
}, ref) => {
|
|
3771
|
-
const reactId =
|
|
3771
|
+
const reactId = React74__default.useId();
|
|
3772
3772
|
const baseId = id || `radio-${reactId}`;
|
|
3773
3773
|
const hasError = !!error;
|
|
3774
3774
|
const eventBus = useEventBus();
|
|
3775
|
-
const [selected, setSelected] =
|
|
3776
|
-
|
|
3775
|
+
const [selected, setSelected] = React74__default.useState(value);
|
|
3776
|
+
React74__default.useEffect(() => {
|
|
3777
3777
|
if (value !== void 0) setSelected(value);
|
|
3778
3778
|
}, [value]);
|
|
3779
3779
|
const pick = (next, e) => {
|
|
@@ -3955,7 +3955,7 @@ var init_Switch = __esm({
|
|
|
3955
3955
|
"components/core/atoms/Switch.tsx"() {
|
|
3956
3956
|
"use client";
|
|
3957
3957
|
init_cn();
|
|
3958
|
-
Switch =
|
|
3958
|
+
Switch = React74.forwardRef(
|
|
3959
3959
|
({
|
|
3960
3960
|
checked,
|
|
3961
3961
|
defaultChecked = false,
|
|
@@ -3966,10 +3966,10 @@ var init_Switch = __esm({
|
|
|
3966
3966
|
name,
|
|
3967
3967
|
className
|
|
3968
3968
|
}, ref) => {
|
|
3969
|
-
const [isChecked, setIsChecked] =
|
|
3969
|
+
const [isChecked, setIsChecked] = React74.useState(
|
|
3970
3970
|
checked !== void 0 ? checked : defaultChecked
|
|
3971
3971
|
);
|
|
3972
|
-
|
|
3972
|
+
React74.useEffect(() => {
|
|
3973
3973
|
if (checked !== void 0) {
|
|
3974
3974
|
setIsChecked(checked);
|
|
3975
3975
|
}
|
|
@@ -4132,7 +4132,7 @@ var init_Stack = __esm({
|
|
|
4132
4132
|
};
|
|
4133
4133
|
const isHorizontal = direction === "horizontal";
|
|
4134
4134
|
const directionClass = responsive && isHorizontal ? reverse ? "flex-col-reverse md:flex-row-reverse" : "flex-col md:flex-row" : isHorizontal ? reverse ? "flex-row-reverse" : "flex-row" : reverse ? "flex-col-reverse" : "flex-col";
|
|
4135
|
-
return
|
|
4135
|
+
return React74__default.createElement(
|
|
4136
4136
|
Component,
|
|
4137
4137
|
{
|
|
4138
4138
|
className: cn(
|
|
@@ -4328,7 +4328,7 @@ var init_Typography = __esm({
|
|
|
4328
4328
|
}) => {
|
|
4329
4329
|
const variant = variantProp ?? (level ? `h${level}` : "body1");
|
|
4330
4330
|
const Component = as || defaultElements[variant];
|
|
4331
|
-
return
|
|
4331
|
+
return React74__default.createElement(
|
|
4332
4332
|
Component,
|
|
4333
4333
|
{
|
|
4334
4334
|
id,
|
|
@@ -4487,7 +4487,7 @@ var Dialog;
|
|
|
4487
4487
|
var init_Dialog = __esm({
|
|
4488
4488
|
"components/core/atoms/Dialog.tsx"() {
|
|
4489
4489
|
init_cn();
|
|
4490
|
-
Dialog =
|
|
4490
|
+
Dialog = React74__default.forwardRef(
|
|
4491
4491
|
({
|
|
4492
4492
|
role = "dialog",
|
|
4493
4493
|
"aria-modal": ariaModal = true,
|
|
@@ -4513,7 +4513,7 @@ var Aside;
|
|
|
4513
4513
|
var init_Aside = __esm({
|
|
4514
4514
|
"components/core/atoms/Aside.tsx"() {
|
|
4515
4515
|
init_cn();
|
|
4516
|
-
Aside =
|
|
4516
|
+
Aside = React74__default.forwardRef(
|
|
4517
4517
|
({ className, children, ...rest }, ref) => /* @__PURE__ */ jsx("aside", { ref, className: cn(className), ...rest, children })
|
|
4518
4518
|
);
|
|
4519
4519
|
Aside.displayName = "Aside";
|
|
@@ -4592,9 +4592,9 @@ var init_LawReferenceTooltip = __esm({
|
|
|
4592
4592
|
className
|
|
4593
4593
|
}) => {
|
|
4594
4594
|
const { t } = useTranslate();
|
|
4595
|
-
const [isVisible, setIsVisible] =
|
|
4596
|
-
const timeoutRef =
|
|
4597
|
-
const triggerRef =
|
|
4595
|
+
const [isVisible, setIsVisible] = React74__default.useState(false);
|
|
4596
|
+
const timeoutRef = React74__default.useRef(null);
|
|
4597
|
+
const triggerRef = React74__default.useRef(null);
|
|
4598
4598
|
const handleMouseEnter = () => {
|
|
4599
4599
|
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
4600
4600
|
timeoutRef.current = setTimeout(() => setIsVisible(true), 200);
|
|
@@ -4605,7 +4605,7 @@ var init_LawReferenceTooltip = __esm({
|
|
|
4605
4605
|
};
|
|
4606
4606
|
const { revealed, triggerProps } = useTapReveal({ refs: [triggerRef] });
|
|
4607
4607
|
const open = isVisible || revealed;
|
|
4608
|
-
|
|
4608
|
+
React74__default.useEffect(() => {
|
|
4609
4609
|
return () => {
|
|
4610
4610
|
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
4611
4611
|
};
|
|
@@ -4815,7 +4815,7 @@ var init_StatusDot = __esm({
|
|
|
4815
4815
|
md: "w-2.5 h-2.5",
|
|
4816
4816
|
lg: "w-3 h-3"
|
|
4817
4817
|
};
|
|
4818
|
-
StatusDot =
|
|
4818
|
+
StatusDot = React74__default.forwardRef(
|
|
4819
4819
|
({ className, status = "offline", pulse = false, size = "md", label, ...props }, ref) => {
|
|
4820
4820
|
return /* @__PURE__ */ jsx(
|
|
4821
4821
|
"span",
|
|
@@ -4869,7 +4869,7 @@ var init_TrendIndicator = __esm({
|
|
|
4869
4869
|
down: "trending-down",
|
|
4870
4870
|
flat: "arrow-right"
|
|
4871
4871
|
};
|
|
4872
|
-
TrendIndicator =
|
|
4872
|
+
TrendIndicator = React74__default.forwardRef(
|
|
4873
4873
|
({
|
|
4874
4874
|
className,
|
|
4875
4875
|
value,
|
|
@@ -4936,7 +4936,7 @@ var init_RangeSlider = __esm({
|
|
|
4936
4936
|
md: "w-4 h-4",
|
|
4937
4937
|
lg: "w-5 h-5"
|
|
4938
4938
|
};
|
|
4939
|
-
RangeSlider =
|
|
4939
|
+
RangeSlider = React74__default.forwardRef(
|
|
4940
4940
|
({
|
|
4941
4941
|
className,
|
|
4942
4942
|
min = 0,
|
|
@@ -5530,7 +5530,7 @@ var init_ContentSection = __esm({
|
|
|
5530
5530
|
md: "py-16",
|
|
5531
5531
|
lg: "py-24"
|
|
5532
5532
|
};
|
|
5533
|
-
ContentSection =
|
|
5533
|
+
ContentSection = React74__default.forwardRef(
|
|
5534
5534
|
({ children, background = "default", padding = "lg", id, className }, ref) => {
|
|
5535
5535
|
return /* @__PURE__ */ jsx(
|
|
5536
5536
|
Box,
|
|
@@ -6064,7 +6064,7 @@ var init_AnimatedReveal = __esm({
|
|
|
6064
6064
|
"scale-up": { opacity: 1, transform: "scale(1) translateY(0)" },
|
|
6065
6065
|
"none": {}
|
|
6066
6066
|
};
|
|
6067
|
-
AnimatedReveal =
|
|
6067
|
+
AnimatedReveal = React74__default.forwardRef(
|
|
6068
6068
|
({
|
|
6069
6069
|
trigger = "scroll",
|
|
6070
6070
|
animation = "fade-up",
|
|
@@ -6224,7 +6224,7 @@ var init_AnimatedGraphic = __esm({
|
|
|
6224
6224
|
"components/marketing/atoms/AnimatedGraphic.tsx"() {
|
|
6225
6225
|
"use client";
|
|
6226
6226
|
init_cn();
|
|
6227
|
-
AnimatedGraphic =
|
|
6227
|
+
AnimatedGraphic = React74__default.forwardRef(
|
|
6228
6228
|
({
|
|
6229
6229
|
src,
|
|
6230
6230
|
svgContent,
|
|
@@ -6247,7 +6247,7 @@ var init_AnimatedGraphic = __esm({
|
|
|
6247
6247
|
const fetchedSvg = useFetchedSvg(svgContent ? void 0 : src);
|
|
6248
6248
|
const resolvedSvg = svgContent ?? fetchedSvg;
|
|
6249
6249
|
const prevAnimateRef = useRef(animate);
|
|
6250
|
-
const setRef =
|
|
6250
|
+
const setRef = React74__default.useCallback(
|
|
6251
6251
|
(node) => {
|
|
6252
6252
|
containerRef.current = node;
|
|
6253
6253
|
if (typeof ref === "function") ref(node);
|
|
@@ -6920,7 +6920,7 @@ var init_ErrorBoundary = __esm({
|
|
|
6920
6920
|
}
|
|
6921
6921
|
);
|
|
6922
6922
|
};
|
|
6923
|
-
ErrorBoundary = class extends
|
|
6923
|
+
ErrorBoundary = class extends React74__default.Component {
|
|
6924
6924
|
constructor(props) {
|
|
6925
6925
|
super(props);
|
|
6926
6926
|
__publicField(this, "reset", () => {
|
|
@@ -7216,7 +7216,7 @@ var init_Container = __esm({
|
|
|
7216
7216
|
as: Component = "div"
|
|
7217
7217
|
}) => {
|
|
7218
7218
|
const resolvedSize = maxWidth ?? size ?? "lg";
|
|
7219
|
-
return
|
|
7219
|
+
return React74__default.createElement(
|
|
7220
7220
|
Component,
|
|
7221
7221
|
{
|
|
7222
7222
|
className: cn(
|
|
@@ -10410,7 +10410,7 @@ var init_CodeBlock = __esm({
|
|
|
10410
10410
|
DIFF_STYLE_FALLBACK = { bg: "", prefix: " ", text: "text-foreground" };
|
|
10411
10411
|
LINE_PROPS_FN = (n) => ({ "data-line": String(n - 1) });
|
|
10412
10412
|
HIDDEN_LINE_NUMBERS = { display: "none" };
|
|
10413
|
-
CodeBlock =
|
|
10413
|
+
CodeBlock = React74__default.memo(
|
|
10414
10414
|
({
|
|
10415
10415
|
code: rawCode,
|
|
10416
10416
|
language = "text",
|
|
@@ -10997,7 +10997,7 @@ var init_MarkdownContent = __esm({
|
|
|
10997
10997
|
init_Box();
|
|
10998
10998
|
init_CodeBlock();
|
|
10999
10999
|
init_cn();
|
|
11000
|
-
MarkdownContent =
|
|
11000
|
+
MarkdownContent = React74__default.memo(
|
|
11001
11001
|
({ content, direction = "ltr", className }) => {
|
|
11002
11002
|
const { t: _t } = useTranslate();
|
|
11003
11003
|
const safeContent = typeof content === "string" ? content : String(content ?? "");
|
|
@@ -12324,7 +12324,7 @@ var init_StateMachineView = __esm({
|
|
|
12324
12324
|
style: { top: title ? 30 : 0 },
|
|
12325
12325
|
children: [
|
|
12326
12326
|
entity && /* @__PURE__ */ jsx(EntityBox, { entity, config }),
|
|
12327
|
-
states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(
|
|
12327
|
+
states.map((state) => renderStateNode ? /* @__PURE__ */ jsx(React74__default.Fragment, { children: renderStateNode(state, config) }, state.id) : /* @__PURE__ */ jsx(
|
|
12328
12328
|
StateNode,
|
|
12329
12329
|
{
|
|
12330
12330
|
state,
|
|
@@ -14948,8 +14948,8 @@ function MiniMap({
|
|
|
14948
14948
|
tileAssets,
|
|
14949
14949
|
unitAssets
|
|
14950
14950
|
}) {
|
|
14951
|
-
const canvasRef =
|
|
14952
|
-
const imgCacheRef =
|
|
14951
|
+
const canvasRef = React74.useRef(null);
|
|
14952
|
+
const imgCacheRef = React74.useRef(/* @__PURE__ */ new Map());
|
|
14953
14953
|
function loadImg(url) {
|
|
14954
14954
|
const cached = imgCacheRef.current.get(url);
|
|
14955
14955
|
if (cached) return cached.complete ? cached : null;
|
|
@@ -14964,7 +14964,7 @@ function MiniMap({
|
|
|
14964
14964
|
imgCacheRef.current.set(url, img);
|
|
14965
14965
|
return null;
|
|
14966
14966
|
}
|
|
14967
|
-
|
|
14967
|
+
React74.useEffect(() => {
|
|
14968
14968
|
const canvas = canvasRef.current;
|
|
14969
14969
|
if (!canvas) return;
|
|
14970
14970
|
const ctx = canvas.getContext("2d");
|
|
@@ -18399,278 +18399,6 @@ var init_CanvasEffect = __esm({
|
|
|
18399
18399
|
CanvasEffect.displayName = "CanvasEffect";
|
|
18400
18400
|
}
|
|
18401
18401
|
});
|
|
18402
|
-
function GameCard({
|
|
18403
|
-
id,
|
|
18404
|
-
cost,
|
|
18405
|
-
art,
|
|
18406
|
-
frameAsset,
|
|
18407
|
-
attack,
|
|
18408
|
-
defense,
|
|
18409
|
-
name,
|
|
18410
|
-
selected = false,
|
|
18411
|
-
disabled = false,
|
|
18412
|
-
size = "md",
|
|
18413
|
-
onClick,
|
|
18414
|
-
clickEvent,
|
|
18415
|
-
className
|
|
18416
|
-
}) {
|
|
18417
|
-
const eventBus = useEventBus();
|
|
18418
|
-
const handleClick = React76.useCallback(() => {
|
|
18419
|
-
if (disabled) return;
|
|
18420
|
-
onClick?.(id);
|
|
18421
|
-
if (clickEvent) eventBus.emit(`UI:${clickEvent}`, { cardId: id });
|
|
18422
|
-
}, [disabled, id, onClick, clickEvent, eventBus]);
|
|
18423
|
-
const artPx = artPxMap[size];
|
|
18424
|
-
const frameStyle = frameAsset?.url ? { backgroundImage: `url(${frameAsset.url})`, backgroundSize: "100% 100%", backgroundRepeat: "no-repeat" } : {};
|
|
18425
|
-
return /* @__PURE__ */ jsxs(
|
|
18426
|
-
Button,
|
|
18427
|
-
{
|
|
18428
|
-
variant: "ghost",
|
|
18429
|
-
onClick: handleClick,
|
|
18430
|
-
disabled,
|
|
18431
|
-
title: name,
|
|
18432
|
-
style: frameStyle,
|
|
18433
|
-
className: cn(
|
|
18434
|
-
"relative flex flex-col items-center rounded-interactive",
|
|
18435
|
-
"bg-card/90 px-1.5 pt-1.5 pb-1 transition-all duration-150",
|
|
18436
|
-
frameAsset?.url ? "border-0" : "border-2",
|
|
18437
|
-
cardSizeMap[size],
|
|
18438
|
-
disabled ? "border-border opacity-50 cursor-not-allowed" : "border-accent hover:brightness-125 hover:-translate-y-1 cursor-pointer",
|
|
18439
|
-
selected && "ring-2 ring-foreground ring-offset-1 ring-offset-background -translate-y-1",
|
|
18440
|
-
className
|
|
18441
|
-
),
|
|
18442
|
-
children: [
|
|
18443
|
-
cost != null && /* @__PURE__ */ jsx(
|
|
18444
|
-
Typography,
|
|
18445
|
-
{
|
|
18446
|
-
as: "span",
|
|
18447
|
-
className: cn(
|
|
18448
|
-
"absolute -top-2 -left-2 flex items-center justify-center",
|
|
18449
|
-
"min-w-[22px] h-[22px] rounded-full px-1",
|
|
18450
|
-
"bg-info text-foreground text-xs font-bold border border-background"
|
|
18451
|
-
),
|
|
18452
|
-
children: cost
|
|
18453
|
-
}
|
|
18454
|
-
),
|
|
18455
|
-
/* @__PURE__ */ jsx(Box, { className: "flex-1 flex items-center justify-center w-full", children: art ? /* @__PURE__ */ jsx(GameIcon, { assetUrl: art, icon: "image", size: artPx, alt: name ?? id, className: "flex-shrink-0" }) : /* @__PURE__ */ jsx(Box, { className: "rounded bg-muted/40", style: { width: artPx, height: artPx } }) }),
|
|
18456
|
-
name != null && /* @__PURE__ */ jsx(
|
|
18457
|
-
Typography,
|
|
18458
|
-
{
|
|
18459
|
-
variant: "small",
|
|
18460
|
-
className: "w-full truncate text-center text-[10px] leading-tight font-semibold",
|
|
18461
|
-
children: name
|
|
18462
|
-
}
|
|
18463
|
-
),
|
|
18464
|
-
(attack != null || defense != null) && /* @__PURE__ */ jsxs(Box, { className: "flex w-full items-center justify-between px-0.5 text-[10px] font-bold leading-none", children: [
|
|
18465
|
-
/* @__PURE__ */ jsx(Typography, { as: "span", className: "text-error", children: attack != null ? `\u2694${attack}` : "" }),
|
|
18466
|
-
/* @__PURE__ */ jsx(Typography, { as: "span", className: "text-info", children: defense != null ? `\u{1F6E1}${defense}` : "" })
|
|
18467
|
-
] })
|
|
18468
|
-
]
|
|
18469
|
-
}
|
|
18470
|
-
);
|
|
18471
|
-
}
|
|
18472
|
-
var cardSizeMap, artPxMap;
|
|
18473
|
-
var init_GameCard = __esm({
|
|
18474
|
-
"components/game/2d/atoms/GameCard.tsx"() {
|
|
18475
|
-
"use client";
|
|
18476
|
-
init_cn();
|
|
18477
|
-
init_useEventBus();
|
|
18478
|
-
init_Box();
|
|
18479
|
-
init_Button();
|
|
18480
|
-
init_Typography();
|
|
18481
|
-
init_GameIcon();
|
|
18482
|
-
cardSizeMap = {
|
|
18483
|
-
sm: "w-16 h-24",
|
|
18484
|
-
md: "w-20 h-28",
|
|
18485
|
-
lg: "w-24 h-36"
|
|
18486
|
-
};
|
|
18487
|
-
artPxMap = { sm: 40, md: 52, lg: 64 };
|
|
18488
|
-
GameCard.displayName = "GameCard";
|
|
18489
|
-
}
|
|
18490
|
-
});
|
|
18491
|
-
function rowToCard(r) {
|
|
18492
|
-
return {
|
|
18493
|
-
id: str(r.id),
|
|
18494
|
-
iconKey: r.iconKey == null ? void 0 : str(r.iconKey),
|
|
18495
|
-
title: r.title == null ? void 0 : str(r.title),
|
|
18496
|
-
cost: r.cost == null ? void 0 : num(r.cost),
|
|
18497
|
-
attack: r.attack == null ? void 0 : num(r.attack),
|
|
18498
|
-
defense: r.defense == null ? void 0 : num(r.defense)
|
|
18499
|
-
};
|
|
18500
|
-
}
|
|
18501
|
-
function resolveCardArt(card, manifest) {
|
|
18502
|
-
const key = card.iconKey ?? card.id;
|
|
18503
|
-
return manifest?.cards?.[key];
|
|
18504
|
-
}
|
|
18505
|
-
function CardBattlerBoard({
|
|
18506
|
-
entity,
|
|
18507
|
-
deck: propDeck,
|
|
18508
|
-
hand: propHand,
|
|
18509
|
-
board: propBoard,
|
|
18510
|
-
mana: propMana,
|
|
18511
|
-
maxMana: propMaxMana,
|
|
18512
|
-
turn: propTurn,
|
|
18513
|
-
result: propResult,
|
|
18514
|
-
assetManifest: propAssetManifest,
|
|
18515
|
-
playCardEvent,
|
|
18516
|
-
endTurnEvent,
|
|
18517
|
-
playAgainEvent,
|
|
18518
|
-
gameEndEvent,
|
|
18519
|
-
className
|
|
18520
|
-
}) {
|
|
18521
|
-
const board = boardEntity(entity) ?? {};
|
|
18522
|
-
const eventBus = useEventBus();
|
|
18523
|
-
const { t } = useTranslate();
|
|
18524
|
-
const assetManifest = propAssetManifest ?? board.assetManifest;
|
|
18525
|
-
const entityHand = useMemo(() => rows(board.hand).map(rowToCard), [board.hand]);
|
|
18526
|
-
const rawHand = propHand ?? entityHand;
|
|
18527
|
-
const hand = rawHand.length > 0 ? rawHand : DEFAULT_HAND;
|
|
18528
|
-
const entityBoard = useMemo(() => rows(board.board).map(rowToCard), [board.board]);
|
|
18529
|
-
const playedCards = propBoard ?? entityBoard;
|
|
18530
|
-
const entityDeck = useMemo(() => rows(board.deck).map(rowToCard), [board.deck]);
|
|
18531
|
-
const deck = propDeck ?? entityDeck;
|
|
18532
|
-
const mana = propMana ?? num(board.mana, 3);
|
|
18533
|
-
const maxMana = propMaxMana ?? num(board.maxMana, 3);
|
|
18534
|
-
const turn = propTurn ?? num(board.turn, 1);
|
|
18535
|
-
const result = propResult ?? (str(board.result) || "none");
|
|
18536
|
-
const handCards = hand;
|
|
18537
|
-
const boardCards = playedCards;
|
|
18538
|
-
const emittedGameEnd = useRef(false);
|
|
18539
|
-
if (result !== "none" && !emittedGameEnd.current) {
|
|
18540
|
-
emittedGameEnd.current = true;
|
|
18541
|
-
if (gameEndEvent) {
|
|
18542
|
-
eventBus.emit(`UI:${gameEndEvent}`, { result });
|
|
18543
|
-
}
|
|
18544
|
-
}
|
|
18545
|
-
if (result === "none") {
|
|
18546
|
-
emittedGameEnd.current = false;
|
|
18547
|
-
}
|
|
18548
|
-
const handlePlayCard = useCallback((cardId) => {
|
|
18549
|
-
if (result !== "none") return;
|
|
18550
|
-
if (playCardEvent) {
|
|
18551
|
-
eventBus.emit(`UI:${playCardEvent}`, { cardId });
|
|
18552
|
-
}
|
|
18553
|
-
}, [result, playCardEvent, eventBus]);
|
|
18554
|
-
const handleEndTurn = useCallback(() => {
|
|
18555
|
-
if (result !== "none") return;
|
|
18556
|
-
if (endTurnEvent) {
|
|
18557
|
-
eventBus.emit(`UI:${endTurnEvent}`, {});
|
|
18558
|
-
}
|
|
18559
|
-
}, [result, endTurnEvent, eventBus]);
|
|
18560
|
-
const handlePlayAgain = useCallback(() => {
|
|
18561
|
-
if (playAgainEvent) {
|
|
18562
|
-
eventBus.emit(`UI:${playAgainEvent}`, {});
|
|
18563
|
-
}
|
|
18564
|
-
}, [playAgainEvent, eventBus]);
|
|
18565
|
-
return /* @__PURE__ */ jsxs(VStack, { className: cn("card-battler-board relative min-h-[600px] bg-background", className), gap: "none", children: [
|
|
18566
|
-
/* @__PURE__ */ jsxs(
|
|
18567
|
-
HStack,
|
|
18568
|
-
{
|
|
18569
|
-
className: "px-4 py-2 border-b border-border bg-surface",
|
|
18570
|
-
gap: "lg",
|
|
18571
|
-
align: "center",
|
|
18572
|
-
children: [
|
|
18573
|
-
/* @__PURE__ */ jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
18574
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", children: t("cb.mana") ?? "Mana" }),
|
|
18575
|
-
/* @__PURE__ */ jsxs(Typography, { variant: "body2", weight: "bold", className: "text-info", children: [
|
|
18576
|
-
mana,
|
|
18577
|
-
" / ",
|
|
18578
|
-
maxMana
|
|
18579
|
-
] })
|
|
18580
|
-
] }),
|
|
18581
|
-
/* @__PURE__ */ jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
18582
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", children: t("cb.turn") ?? "Turn" }),
|
|
18583
|
-
/* @__PURE__ */ jsx(Typography, { variant: "body2", weight: "bold", children: turn })
|
|
18584
|
-
] }),
|
|
18585
|
-
/* @__PURE__ */ jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
18586
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", children: t("cb.deck") ?? "Deck" }),
|
|
18587
|
-
/* @__PURE__ */ jsx(Typography, { variant: "body2", weight: "bold", children: deck.length })
|
|
18588
|
-
] }),
|
|
18589
|
-
/* @__PURE__ */ jsx(Box, { className: "ml-auto", children: result === "none" && /* @__PURE__ */ jsx(Button, { variant: "primary", size: "sm", onClick: handleEndTurn, children: t("cb.endTurn") ?? "End Turn" }) })
|
|
18590
|
-
]
|
|
18591
|
-
}
|
|
18592
|
-
),
|
|
18593
|
-
/* @__PURE__ */ jsxs(Box, { className: "flex-1 relative p-4 overflow-auto", children: [
|
|
18594
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", className: "mb-2 uppercase tracking-wide", children: t("cb.battlefield") ?? "Battlefield" }),
|
|
18595
|
-
boardCards.length > 0 ? /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2 items-end justify-start", children: boardCards.map((card) => /* @__PURE__ */ jsx(
|
|
18596
|
-
GameCard,
|
|
18597
|
-
{
|
|
18598
|
-
id: card.id,
|
|
18599
|
-
cost: card.cost,
|
|
18600
|
-
art: resolveCardArt(card, assetManifest),
|
|
18601
|
-
attack: card.attack,
|
|
18602
|
-
defense: card.defense,
|
|
18603
|
-
name: card.title,
|
|
18604
|
-
disabled: card.cost != null && card.cost > mana,
|
|
18605
|
-
size: "md"
|
|
18606
|
-
},
|
|
18607
|
-
card.id
|
|
18608
|
-
)) }) : /* @__PURE__ */ jsx(Box, { className: "flex items-center justify-center h-32 rounded-interactive border-2 border-dashed border-border", children: /* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", children: t("cb.emptyBoard") ?? "Play a card to begin" }) })
|
|
18609
|
-
] }),
|
|
18610
|
-
/* @__PURE__ */ jsxs(Box, { className: "border-t border-border bg-surface px-4 py-3", children: [
|
|
18611
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", className: "mb-2 uppercase tracking-wide", children: t("cb.hand") ?? "Your Hand" }),
|
|
18612
|
-
handCards.length === 0 ? /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center p-4", children: /* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", children: t("cb.emptyHand") ?? "No cards in hand" }) }) : /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2 items-end justify-center", children: handCards.map((card) => /* @__PURE__ */ jsx(
|
|
18613
|
-
GameCard,
|
|
18614
|
-
{
|
|
18615
|
-
id: card.id,
|
|
18616
|
-
cost: card.cost,
|
|
18617
|
-
art: resolveCardArt(card, assetManifest),
|
|
18618
|
-
attack: card.attack,
|
|
18619
|
-
defense: card.defense,
|
|
18620
|
-
name: card.title,
|
|
18621
|
-
disabled: card.cost != null && card.cost > mana,
|
|
18622
|
-
size: "lg",
|
|
18623
|
-
onClick: handlePlayCard
|
|
18624
|
-
},
|
|
18625
|
-
card.id
|
|
18626
|
-
)) })
|
|
18627
|
-
] }),
|
|
18628
|
-
result !== "none" && /* @__PURE__ */ jsx(Box, { className: "absolute inset-0 z-50 flex items-center justify-center bg-background/70 backdrop-blur-sm", children: /* @__PURE__ */ jsxs(VStack, { className: "text-center p-8", gap: "lg", children: [
|
|
18629
|
-
/* @__PURE__ */ jsx(
|
|
18630
|
-
Typography,
|
|
18631
|
-
{
|
|
18632
|
-
variant: "h2",
|
|
18633
|
-
className: cn(
|
|
18634
|
-
"text-4xl font-black tracking-widest uppercase",
|
|
18635
|
-
result === "won" ? "text-warning" : "text-error"
|
|
18636
|
-
),
|
|
18637
|
-
children: result === "won" ? t("cb.victory") ?? "Victory!" : t("cb.defeat") ?? "Defeat!"
|
|
18638
|
-
}
|
|
18639
|
-
),
|
|
18640
|
-
/* @__PURE__ */ jsx(
|
|
18641
|
-
Button,
|
|
18642
|
-
{
|
|
18643
|
-
variant: "primary",
|
|
18644
|
-
className: "px-8 py-3 font-semibold",
|
|
18645
|
-
onClick: handlePlayAgain,
|
|
18646
|
-
children: t("cb.playAgain") ?? "Play Again"
|
|
18647
|
-
}
|
|
18648
|
-
)
|
|
18649
|
-
] }) })
|
|
18650
|
-
] });
|
|
18651
|
-
}
|
|
18652
|
-
var DEFAULT_HAND;
|
|
18653
|
-
var init_CardBattlerBoard = __esm({
|
|
18654
|
-
"components/game/2d/organisms/CardBattlerBoard.tsx"() {
|
|
18655
|
-
"use client";
|
|
18656
|
-
init_cn();
|
|
18657
|
-
init_useEventBus();
|
|
18658
|
-
init_Box();
|
|
18659
|
-
init_Button();
|
|
18660
|
-
init_Typography();
|
|
18661
|
-
init_Stack();
|
|
18662
|
-
init_GameCard();
|
|
18663
|
-
init_boardEntity();
|
|
18664
|
-
DEFAULT_HAND = [
|
|
18665
|
-
{ id: "c1", iconKey: "bear", title: "Bear", cost: 3, attack: 5, defense: 4 },
|
|
18666
|
-
{ id: "c2", iconKey: "owl", title: "Owl", cost: 1, attack: 2, defense: 1 },
|
|
18667
|
-
{ id: "c3", iconKey: "gorilla", title: "Gorilla", cost: 4, attack: 6, defense: 5 },
|
|
18668
|
-
{ id: "c4", iconKey: "frog", title: "Frog", cost: 1, attack: 1, defense: 2 },
|
|
18669
|
-
{ id: "c5", iconKey: "snake", title: "Snake", cost: 2, attack: 4, defense: 1 }
|
|
18670
|
-
];
|
|
18671
|
-
CardBattlerBoard.displayName = "CardBattlerBoard";
|
|
18672
|
-
}
|
|
18673
|
-
});
|
|
18674
18402
|
|
|
18675
18403
|
// lib/getNestedValue.ts
|
|
18676
18404
|
function getNestedValue(obj, path) {
|
|
@@ -20531,6 +20259,7 @@ function ChoiceButton({
|
|
|
20531
20259
|
selected = false,
|
|
20532
20260
|
onClick,
|
|
20533
20261
|
action,
|
|
20262
|
+
payload,
|
|
20534
20263
|
className
|
|
20535
20264
|
}) {
|
|
20536
20265
|
const eventBus = useEventBus();
|
|
@@ -20540,7 +20269,7 @@ function ChoiceButton({
|
|
|
20540
20269
|
variant: "ghost",
|
|
20541
20270
|
disabled,
|
|
20542
20271
|
onClick: () => {
|
|
20543
|
-
if (action) eventBus.emit(`UI:${action}`, {});
|
|
20272
|
+
if (action) eventBus.emit(`UI:${action}`, payload ?? {});
|
|
20544
20273
|
onClick?.();
|
|
20545
20274
|
},
|
|
20546
20275
|
className: cn(
|
|
@@ -21186,9 +20915,9 @@ function ControlButton({
|
|
|
21186
20915
|
className
|
|
21187
20916
|
}) {
|
|
21188
20917
|
const eventBus = useEventBus();
|
|
21189
|
-
const [isPressed, setIsPressed] =
|
|
20918
|
+
const [isPressed, setIsPressed] = React74.useState(false);
|
|
21190
20919
|
const actualPressed = pressed ?? isPressed;
|
|
21191
|
-
const handlePointerDown =
|
|
20920
|
+
const handlePointerDown = React74.useCallback(
|
|
21192
20921
|
(e) => {
|
|
21193
20922
|
e.preventDefault();
|
|
21194
20923
|
if (disabled) return;
|
|
@@ -21198,7 +20927,7 @@ function ControlButton({
|
|
|
21198
20927
|
},
|
|
21199
20928
|
[disabled, pressEvent, eventBus, onPress]
|
|
21200
20929
|
);
|
|
21201
|
-
const handlePointerUp =
|
|
20930
|
+
const handlePointerUp = React74.useCallback(
|
|
21202
20931
|
(e) => {
|
|
21203
20932
|
e.preventDefault();
|
|
21204
20933
|
if (disabled) return;
|
|
@@ -21208,7 +20937,7 @@ function ControlButton({
|
|
|
21208
20937
|
},
|
|
21209
20938
|
[disabled, releaseEvent, eventBus, onRelease]
|
|
21210
20939
|
);
|
|
21211
|
-
const handlePointerLeave =
|
|
20940
|
+
const handlePointerLeave = React74.useCallback(
|
|
21212
20941
|
(e) => {
|
|
21213
20942
|
if (isPressed) {
|
|
21214
20943
|
setIsPressed(false);
|
|
@@ -21301,8 +21030,8 @@ function ControlGrid({
|
|
|
21301
21030
|
className
|
|
21302
21031
|
}) {
|
|
21303
21032
|
const eventBus = useEventBus();
|
|
21304
|
-
const [active, setActive] =
|
|
21305
|
-
const handlePress =
|
|
21033
|
+
const [active, setActive] = React74.useState(/* @__PURE__ */ new Set());
|
|
21034
|
+
const handlePress = React74.useCallback(
|
|
21306
21035
|
(id) => {
|
|
21307
21036
|
setActive((prev) => new Set(prev).add(id));
|
|
21308
21037
|
if (actionEvent) eventBus.emit(`UI:${actionEvent}`, { id, pressed: true });
|
|
@@ -21316,7 +21045,7 @@ function ControlGrid({
|
|
|
21316
21045
|
},
|
|
21317
21046
|
[kind, actionEvent, directionEvent, directionEvents, eventBus, onAction, onDirection]
|
|
21318
21047
|
);
|
|
21319
|
-
const handleRelease =
|
|
21048
|
+
const handleRelease = React74.useCallback(
|
|
21320
21049
|
(id) => {
|
|
21321
21050
|
setActive((prev) => {
|
|
21322
21051
|
const next = new Set(prev);
|
|
@@ -22582,8 +22311,8 @@ var init_Menu = __esm({
|
|
|
22582
22311
|
"bottom-end": "bottom-start"
|
|
22583
22312
|
};
|
|
22584
22313
|
const effectivePosition = direction === "rtl" ? rtlMirror[position] ?? position : position;
|
|
22585
|
-
const triggerChild =
|
|
22586
|
-
const triggerElement =
|
|
22314
|
+
const triggerChild = React74__default.isValidElement(trigger) ? trigger : /* @__PURE__ */ jsx(Typography, { variant: "small", as: "span", children: trigger });
|
|
22315
|
+
const triggerElement = React74__default.cloneElement(
|
|
22587
22316
|
triggerChild,
|
|
22588
22317
|
{
|
|
22589
22318
|
ref: triggerRef,
|
|
@@ -22678,14 +22407,14 @@ function useDataDnd(args) {
|
|
|
22678
22407
|
const isZone = Boolean(dragGroup || accepts || sortable);
|
|
22679
22408
|
const enabled = isZone || Boolean(dndRoot);
|
|
22680
22409
|
const eventBus = useEventBus();
|
|
22681
|
-
const parentRoot =
|
|
22410
|
+
const parentRoot = React74__default.useContext(RootCtx);
|
|
22682
22411
|
const isRoot = enabled && parentRoot === null;
|
|
22683
|
-
const zoneId =
|
|
22412
|
+
const zoneId = React74__default.useId();
|
|
22684
22413
|
const ownGroup = dragGroup ?? accepts ?? zoneId;
|
|
22685
|
-
const [optimisticOrders, setOptimisticOrders] =
|
|
22686
|
-
const optimisticOrdersRef =
|
|
22414
|
+
const [optimisticOrders, setOptimisticOrders] = React74__default.useState(() => /* @__PURE__ */ new Map());
|
|
22415
|
+
const optimisticOrdersRef = React74__default.useRef(optimisticOrders);
|
|
22687
22416
|
optimisticOrdersRef.current = optimisticOrders;
|
|
22688
|
-
const clearOptimisticOrder =
|
|
22417
|
+
const clearOptimisticOrder = React74__default.useCallback((group) => {
|
|
22689
22418
|
setOptimisticOrders((prev) => {
|
|
22690
22419
|
if (!prev.has(group)) return prev;
|
|
22691
22420
|
const next = new Map(prev);
|
|
@@ -22710,7 +22439,7 @@ function useDataDnd(args) {
|
|
|
22710
22439
|
const raw = it[dndItemIdField];
|
|
22711
22440
|
return raw != null ? String(raw) : `__idx_${idx}`;
|
|
22712
22441
|
}).join("|");
|
|
22713
|
-
const itemIds =
|
|
22442
|
+
const itemIds = React74__default.useMemo(
|
|
22714
22443
|
() => orderedItems.map((it, idx) => {
|
|
22715
22444
|
const raw = it[dndItemIdField];
|
|
22716
22445
|
return raw != null ? String(raw) : `__idx_${idx}`;
|
|
@@ -22721,7 +22450,7 @@ function useDataDnd(args) {
|
|
|
22721
22450
|
const raw = it[dndItemIdField];
|
|
22722
22451
|
return raw != null ? String(raw) : `__${idx}`;
|
|
22723
22452
|
}).join("|");
|
|
22724
|
-
|
|
22453
|
+
React74__default.useEffect(() => {
|
|
22725
22454
|
const root = isRoot ? null : parentRoot;
|
|
22726
22455
|
if (root) {
|
|
22727
22456
|
root.clearOptimisticOrder(ownGroup);
|
|
@@ -22729,20 +22458,20 @@ function useDataDnd(args) {
|
|
|
22729
22458
|
clearOptimisticOrder(ownGroup);
|
|
22730
22459
|
}
|
|
22731
22460
|
}, [itemsContentSig, ownGroup]);
|
|
22732
|
-
const zonesRef =
|
|
22733
|
-
const registerZone =
|
|
22461
|
+
const zonesRef = React74__default.useRef(/* @__PURE__ */ new Map());
|
|
22462
|
+
const registerZone = React74__default.useCallback((zoneId2, meta2) => {
|
|
22734
22463
|
zonesRef.current.set(zoneId2, meta2);
|
|
22735
22464
|
}, []);
|
|
22736
|
-
const unregisterZone =
|
|
22465
|
+
const unregisterZone = React74__default.useCallback((zoneId2) => {
|
|
22737
22466
|
zonesRef.current.delete(zoneId2);
|
|
22738
22467
|
}, []);
|
|
22739
|
-
const [activeDrag, setActiveDrag] =
|
|
22740
|
-
const [overZoneGroup, setOverZoneGroup] =
|
|
22741
|
-
const meta =
|
|
22468
|
+
const [activeDrag, setActiveDrag] = React74__default.useState(null);
|
|
22469
|
+
const [overZoneGroup, setOverZoneGroup] = React74__default.useState(null);
|
|
22470
|
+
const meta = React74__default.useMemo(
|
|
22742
22471
|
() => ({ group: ownGroup, dropEvent, reorderEvent, positionEvent, itemIds, rawItems: items, idField: dndItemIdField }),
|
|
22743
22472
|
[ownGroup, dropEvent, reorderEvent, positionEvent, itemIds, items, dndItemIdField]
|
|
22744
22473
|
);
|
|
22745
|
-
|
|
22474
|
+
React74__default.useEffect(() => {
|
|
22746
22475
|
const target = isRoot ? null : parentRoot;
|
|
22747
22476
|
if (!target) {
|
|
22748
22477
|
zonesRef.current.set(zoneId, meta);
|
|
@@ -22761,7 +22490,7 @@ function useDataDnd(args) {
|
|
|
22761
22490
|
}, [parentRoot, isRoot, zoneId, meta]);
|
|
22762
22491
|
const sensors = useAlmadarDndSensors(true);
|
|
22763
22492
|
const collisionDetection = almadarDndCollisionDetection;
|
|
22764
|
-
const findZoneByItem =
|
|
22493
|
+
const findZoneByItem = React74__default.useCallback(
|
|
22765
22494
|
(id) => {
|
|
22766
22495
|
for (const z of zonesRef.current.values()) {
|
|
22767
22496
|
if (z.itemIds.includes(id)) return z;
|
|
@@ -22770,7 +22499,7 @@ function useDataDnd(args) {
|
|
|
22770
22499
|
},
|
|
22771
22500
|
[]
|
|
22772
22501
|
);
|
|
22773
|
-
|
|
22502
|
+
React74__default.useCallback(
|
|
22774
22503
|
(group) => {
|
|
22775
22504
|
for (const z of zonesRef.current.values()) {
|
|
22776
22505
|
if (z.group === group) return z;
|
|
@@ -22779,7 +22508,7 @@ function useDataDnd(args) {
|
|
|
22779
22508
|
},
|
|
22780
22509
|
[]
|
|
22781
22510
|
);
|
|
22782
|
-
const handleDragEnd =
|
|
22511
|
+
const handleDragEnd = React74__default.useCallback(
|
|
22783
22512
|
(event) => {
|
|
22784
22513
|
const { active, over } = event;
|
|
22785
22514
|
const activeIdStr = String(active.id);
|
|
@@ -22870,8 +22599,8 @@ function useDataDnd(args) {
|
|
|
22870
22599
|
},
|
|
22871
22600
|
[eventBus]
|
|
22872
22601
|
);
|
|
22873
|
-
const sortableData =
|
|
22874
|
-
const SortableItem =
|
|
22602
|
+
const sortableData = React74__default.useMemo(() => ({ dndGroup: ownGroup }), [ownGroup]);
|
|
22603
|
+
const SortableItem = React74__default.useCallback(
|
|
22875
22604
|
({ id, children }) => {
|
|
22876
22605
|
const {
|
|
22877
22606
|
attributes,
|
|
@@ -22911,7 +22640,7 @@ function useDataDnd(args) {
|
|
|
22911
22640
|
id: droppableId,
|
|
22912
22641
|
data: sortableData
|
|
22913
22642
|
});
|
|
22914
|
-
const ctx =
|
|
22643
|
+
const ctx = React74__default.useContext(RootCtx);
|
|
22915
22644
|
const activeDrag2 = ctx?.activeDrag ?? null;
|
|
22916
22645
|
const overZoneGroup2 = ctx?.overZoneGroup ?? null;
|
|
22917
22646
|
const isThisZoneOver = overZoneGroup2 === ownGroup;
|
|
@@ -22926,7 +22655,7 @@ function useDataDnd(args) {
|
|
|
22926
22655
|
showForeignPlaceholder,
|
|
22927
22656
|
ctxAvailable: ctx != null
|
|
22928
22657
|
});
|
|
22929
|
-
|
|
22658
|
+
React74__default.useEffect(() => {
|
|
22930
22659
|
dndLog.info("dropzone:isOver:change", { droppableId, group: ownGroup, isOver, isThisZoneOver, showForeignPlaceholder, activeDragSourceGroup: activeDrag2?.sourceGroup ?? null });
|
|
22931
22660
|
}, [droppableId, isOver, isThisZoneOver, showForeignPlaceholder]);
|
|
22932
22661
|
return /* @__PURE__ */ jsx(
|
|
@@ -22940,11 +22669,11 @@ function useDataDnd(args) {
|
|
|
22940
22669
|
}
|
|
22941
22670
|
);
|
|
22942
22671
|
};
|
|
22943
|
-
const rootContextValue =
|
|
22672
|
+
const rootContextValue = React74__default.useMemo(
|
|
22944
22673
|
() => ({ registerZone, unregisterZone, activeDrag, overZoneGroup, optimisticOrders, clearOptimisticOrder }),
|
|
22945
22674
|
[registerZone, unregisterZone, activeDrag, overZoneGroup, optimisticOrders, clearOptimisticOrder]
|
|
22946
22675
|
);
|
|
22947
|
-
const handleDragStart =
|
|
22676
|
+
const handleDragStart = React74__default.useCallback((event) => {
|
|
22948
22677
|
const sourceZone = findZoneByItem(event.active.id);
|
|
22949
22678
|
const rect = event.active.rect.current.initial;
|
|
22950
22679
|
const height = rect?.height && rect.height > 0 ? rect.height : 64;
|
|
@@ -22963,7 +22692,7 @@ function useDataDnd(args) {
|
|
|
22963
22692
|
isRoot
|
|
22964
22693
|
});
|
|
22965
22694
|
}, [findZoneByItem, isRoot, zoneId]);
|
|
22966
|
-
const handleDragOver =
|
|
22695
|
+
const handleDragOver = React74__default.useCallback((event) => {
|
|
22967
22696
|
const { active, over } = event;
|
|
22968
22697
|
const overData = over?.data?.current;
|
|
22969
22698
|
const overGroup = overData?.dndGroup ?? null;
|
|
@@ -23033,7 +22762,7 @@ function useDataDnd(args) {
|
|
|
23033
22762
|
return next;
|
|
23034
22763
|
});
|
|
23035
22764
|
}, []);
|
|
23036
|
-
const handleDragCancel =
|
|
22765
|
+
const handleDragCancel = React74__default.useCallback((event) => {
|
|
23037
22766
|
setActiveDrag(null);
|
|
23038
22767
|
setOverZoneGroup(null);
|
|
23039
22768
|
dndLog.warn("dragCancel", {
|
|
@@ -23041,12 +22770,12 @@ function useDataDnd(args) {
|
|
|
23041
22770
|
reason: "dnd-kit cancelled the drag (escape key, pointer interrupted, or external)"
|
|
23042
22771
|
});
|
|
23043
22772
|
}, []);
|
|
23044
|
-
const handleDragEndWithCleanup =
|
|
22773
|
+
const handleDragEndWithCleanup = React74__default.useCallback((event) => {
|
|
23045
22774
|
handleDragEnd(event);
|
|
23046
22775
|
setActiveDrag(null);
|
|
23047
22776
|
setOverZoneGroup(null);
|
|
23048
22777
|
}, [handleDragEnd]);
|
|
23049
|
-
const wrapContainer =
|
|
22778
|
+
const wrapContainer = React74__default.useCallback(
|
|
23050
22779
|
(children) => {
|
|
23051
22780
|
if (!enabled) return children;
|
|
23052
22781
|
const strategy = layout === "grid" ? rectSortingStrategy : verticalListSortingStrategy;
|
|
@@ -23100,7 +22829,7 @@ var init_useDataDnd = __esm({
|
|
|
23100
22829
|
init_useAlmadarDndCollision();
|
|
23101
22830
|
init_Box();
|
|
23102
22831
|
dndLog = createLogger("almadar:ui:dnd");
|
|
23103
|
-
RootCtx =
|
|
22832
|
+
RootCtx = React74__default.createContext(null);
|
|
23104
22833
|
}
|
|
23105
22834
|
});
|
|
23106
22835
|
function renderIconInput(icon, props) {
|
|
@@ -23626,7 +23355,7 @@ function DataList({
|
|
|
23626
23355
|
}) {
|
|
23627
23356
|
const eventBus = useEventBus();
|
|
23628
23357
|
const { t } = useTranslate();
|
|
23629
|
-
const [visibleCount, setVisibleCount] =
|
|
23358
|
+
const [visibleCount, setVisibleCount] = React74__default.useState(pageSize || Infinity);
|
|
23630
23359
|
const fieldDefs = fields ?? columns ?? [];
|
|
23631
23360
|
const allDataRaw = Array.isArray(entity) ? entity : entity ? [entity] : [];
|
|
23632
23361
|
const dnd = useDataDnd({
|
|
@@ -23645,7 +23374,7 @@ function DataList({
|
|
|
23645
23374
|
const data = pageSize > 0 ? allData.slice(0, visibleCount) : allData;
|
|
23646
23375
|
const hasMoreLocal = pageSize > 0 && visibleCount < allData.length;
|
|
23647
23376
|
const hasRenderProp = typeof children === "function";
|
|
23648
|
-
|
|
23377
|
+
React74__default.useEffect(() => {
|
|
23649
23378
|
const renderItemTypeOf = typeof schemaRenderItem;
|
|
23650
23379
|
const childrenTypeOf = typeof children;
|
|
23651
23380
|
if (data.length > 0 && !hasRenderProp) {
|
|
@@ -23749,7 +23478,7 @@ function DataList({
|
|
|
23749
23478
|
const items2 = [...data];
|
|
23750
23479
|
const groups2 = groupBy ? groupData(items2, groupBy) : [{ label: "", items: items2 }];
|
|
23751
23480
|
const contentField = titleField?.name ?? fieldDefs[0]?.name ?? "";
|
|
23752
|
-
return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(
|
|
23481
|
+
return /* @__PURE__ */ jsx(VStack, { gap: "sm", className: cn("py-2", className), children: groups2.map((group, gi) => /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
|
|
23753
23482
|
group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: "my-2" }),
|
|
23754
23483
|
group.items.map((itemData, index) => {
|
|
23755
23484
|
const id = itemData.id || `${gi}-${index}`;
|
|
@@ -23890,7 +23619,7 @@ function DataList({
|
|
|
23890
23619
|
className
|
|
23891
23620
|
),
|
|
23892
23621
|
children: [
|
|
23893
|
-
groups.map((group, gi) => /* @__PURE__ */ jsxs(
|
|
23622
|
+
groups.map((group, gi) => /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
|
|
23894
23623
|
group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: gi > 0 ? "mt-4" : "mt-0" }),
|
|
23895
23624
|
group.items.map(
|
|
23896
23625
|
(itemData, index) => renderItem(itemData, index, gi === groups.length - 1 && index === group.items.length - 1)
|
|
@@ -23997,8 +23726,8 @@ function ScalarControl({
|
|
|
23997
23726
|
}
|
|
23998
23727
|
const numeric = typeof value === "number";
|
|
23999
23728
|
const initial = value === null ? "" : String(value);
|
|
24000
|
-
const [draft, setDraft] =
|
|
24001
|
-
|
|
23729
|
+
const [draft, setDraft] = React74__default.useState(initial);
|
|
23730
|
+
React74__default.useEffect(() => setDraft(initial), [initial]);
|
|
24002
23731
|
const commit = () => {
|
|
24003
23732
|
if (numeric) {
|
|
24004
23733
|
const n = draft.trim() === "" ? 0 : Number(draft);
|
|
@@ -24066,8 +23795,8 @@ function Row({
|
|
|
24066
23795
|
onRemove,
|
|
24067
23796
|
readonly
|
|
24068
23797
|
}) {
|
|
24069
|
-
const [keyDraft, setKeyDraft] =
|
|
24070
|
-
|
|
23798
|
+
const [keyDraft, setKeyDraft] = React74__default.useState(rowKey);
|
|
23799
|
+
React74__default.useEffect(() => setKeyDraft(rowKey), [rowKey]);
|
|
24071
23800
|
const container = isObj(value) || isArr(value);
|
|
24072
23801
|
return /* @__PURE__ */ jsxs(VStack, { gap: "none", className: "group w-max min-w-full", children: [
|
|
24073
23802
|
/* @__PURE__ */ jsxs(HStack, { gap: "xs", align: "center", className: "py-0.5 w-max", children: [
|
|
@@ -24110,7 +23839,7 @@ function ContainerNode({
|
|
|
24110
23839
|
depth,
|
|
24111
23840
|
readonly
|
|
24112
23841
|
}) {
|
|
24113
|
-
const [open, setOpen] =
|
|
23842
|
+
const [open, setOpen] = React74__default.useState(depth < 2);
|
|
24114
23843
|
const array = isArr(value);
|
|
24115
23844
|
const entries = array ? value.map((v, i) => [String(i), v]) : Object.entries(value);
|
|
24116
23845
|
const setObjValue = (key, next) => {
|
|
@@ -24252,7 +23981,7 @@ var init_FormSection = __esm({
|
|
|
24252
23981
|
columns = 1,
|
|
24253
23982
|
className
|
|
24254
23983
|
}) => {
|
|
24255
|
-
const [collapsed, setCollapsed] =
|
|
23984
|
+
const [collapsed, setCollapsed] = React74__default.useState(defaultCollapsed);
|
|
24256
23985
|
const { t } = useTranslate();
|
|
24257
23986
|
const eventBus = useEventBus();
|
|
24258
23987
|
const gridClass = {
|
|
@@ -24260,7 +23989,7 @@ var init_FormSection = __esm({
|
|
|
24260
23989
|
2: "grid-cols-1 md:grid-cols-2",
|
|
24261
23990
|
3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3"
|
|
24262
23991
|
}[columns];
|
|
24263
|
-
|
|
23992
|
+
React74__default.useCallback(() => {
|
|
24264
23993
|
if (collapsible) {
|
|
24265
23994
|
setCollapsed((prev) => !prev);
|
|
24266
23995
|
eventBus.emit("UI:TOGGLE_COLLAPSE", { collapsed: !collapsed });
|
|
@@ -24668,8 +24397,8 @@ function TextLikeControl({
|
|
|
24668
24397
|
onCommit
|
|
24669
24398
|
}) {
|
|
24670
24399
|
const initial = value === void 0 || value === null ? "" : String(value);
|
|
24671
|
-
const [draft, setDraft] =
|
|
24672
|
-
|
|
24400
|
+
const [draft, setDraft] = React74__default.useState(initial);
|
|
24401
|
+
React74__default.useEffect(() => setDraft(initial), [initial]);
|
|
24673
24402
|
const commit = () => {
|
|
24674
24403
|
if (numeric) {
|
|
24675
24404
|
const n = draft.trim() === "" ? 0 : Number(draft);
|
|
@@ -24854,14 +24583,14 @@ var init_NodeSlotEditor = __esm({
|
|
|
24854
24583
|
isObj2 = (v) => v !== null && v !== void 0 && typeof v === "object" && !Array.isArray(v);
|
|
24855
24584
|
NodeSlotEditor = ({ value, onChange, className }) => {
|
|
24856
24585
|
const { type, props, wasArray } = normalize(value);
|
|
24857
|
-
const patterns =
|
|
24586
|
+
const patterns = React74__default.useMemo(() => {
|
|
24858
24587
|
try {
|
|
24859
24588
|
return [...getKnownPatterns()].sort();
|
|
24860
24589
|
} catch {
|
|
24861
24590
|
return [];
|
|
24862
24591
|
}
|
|
24863
24592
|
}, []);
|
|
24864
|
-
const options =
|
|
24593
|
+
const options = React74__default.useMemo(
|
|
24865
24594
|
() => [{ value: "", label: "\u2014 none \u2014" }, ...patterns.map((p2) => ({ value: p2, label: p2 }))],
|
|
24866
24595
|
[patterns]
|
|
24867
24596
|
);
|
|
@@ -24873,7 +24602,7 @@ var init_NodeSlotEditor = __esm({
|
|
|
24873
24602
|
const pattern = { type: nextType, ...nextProps };
|
|
24874
24603
|
onChange(wasArray || value === void 0 ? [pattern] : pattern);
|
|
24875
24604
|
};
|
|
24876
|
-
const schemaEntries =
|
|
24605
|
+
const schemaEntries = React74__default.useMemo(() => {
|
|
24877
24606
|
if (!type) return [];
|
|
24878
24607
|
const def = getPatternDefinition(type);
|
|
24879
24608
|
if (!def?.propsSchema) return [];
|
|
@@ -25775,7 +25504,7 @@ var init_Flex = __esm({
|
|
|
25775
25504
|
flexStyle.flexBasis = typeof basis === "number" ? `${basis}px` : basis;
|
|
25776
25505
|
}
|
|
25777
25506
|
}
|
|
25778
|
-
return
|
|
25507
|
+
return React74__default.createElement(Component, {
|
|
25779
25508
|
className: cn(
|
|
25780
25509
|
inline ? "inline-flex" : "flex",
|
|
25781
25510
|
directionStyles[direction],
|
|
@@ -25894,7 +25623,7 @@ var init_Grid = __esm({
|
|
|
25894
25623
|
as: Component = "div"
|
|
25895
25624
|
}) => {
|
|
25896
25625
|
const mergedStyle = rows2 ? { gridTemplateRows: `repeat(${rows2}, minmax(0, 1fr))`, ...style } : style;
|
|
25897
|
-
return
|
|
25626
|
+
return React74__default.createElement(
|
|
25898
25627
|
Component,
|
|
25899
25628
|
{
|
|
25900
25629
|
className: cn(
|
|
@@ -26090,9 +25819,9 @@ var init_Popover = __esm({
|
|
|
26090
25819
|
onMouseLeave: handleClose,
|
|
26091
25820
|
onPointerDown: tapTriggerProps.onPointerDown
|
|
26092
25821
|
};
|
|
26093
|
-
const childElement =
|
|
25822
|
+
const childElement = React74__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
|
|
26094
25823
|
const childPointerDown = childElement.props.onPointerDown;
|
|
26095
|
-
const triggerElement =
|
|
25824
|
+
const triggerElement = React74__default.cloneElement(
|
|
26096
25825
|
childElement,
|
|
26097
25826
|
{
|
|
26098
25827
|
ref: triggerRef,
|
|
@@ -26944,9 +26673,9 @@ var init_Tooltip = __esm({
|
|
|
26944
26673
|
if (hideTimeoutRef.current) clearTimeout(hideTimeoutRef.current);
|
|
26945
26674
|
};
|
|
26946
26675
|
}, []);
|
|
26947
|
-
const triggerElement =
|
|
26676
|
+
const triggerElement = React74__default.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
|
|
26948
26677
|
const childPointerDown = triggerElement.props.onPointerDown;
|
|
26949
|
-
const trigger =
|
|
26678
|
+
const trigger = React74__default.cloneElement(triggerElement, {
|
|
26950
26679
|
ref: triggerRef,
|
|
26951
26680
|
onMouseEnter: handleMouseEnter,
|
|
26952
26681
|
onMouseLeave: handleMouseLeave,
|
|
@@ -27036,7 +26765,7 @@ var init_WizardProgress = __esm({
|
|
|
27036
26765
|
children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: normalizedSteps.map((step, index) => {
|
|
27037
26766
|
const isActive = index === currentStep;
|
|
27038
26767
|
const isCompleted = index < currentStep;
|
|
27039
|
-
return /* @__PURE__ */ jsxs(
|
|
26768
|
+
return /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
|
|
27040
26769
|
/* @__PURE__ */ jsx(
|
|
27041
26770
|
"button",
|
|
27042
26771
|
{
|
|
@@ -28123,6 +27852,95 @@ var init_shared = __esm({
|
|
|
28123
27852
|
init_canvasEffects();
|
|
28124
27853
|
}
|
|
28125
27854
|
});
|
|
27855
|
+
function GameCard({
|
|
27856
|
+
id,
|
|
27857
|
+
cost,
|
|
27858
|
+
art,
|
|
27859
|
+
frameAsset,
|
|
27860
|
+
attack,
|
|
27861
|
+
defense,
|
|
27862
|
+
name,
|
|
27863
|
+
selected = false,
|
|
27864
|
+
disabled = false,
|
|
27865
|
+
size = "md",
|
|
27866
|
+
onClick,
|
|
27867
|
+
clickEvent,
|
|
27868
|
+
className
|
|
27869
|
+
}) {
|
|
27870
|
+
const eventBus = useEventBus();
|
|
27871
|
+
const handleClick = React74.useCallback(() => {
|
|
27872
|
+
if (disabled) return;
|
|
27873
|
+
onClick?.(id);
|
|
27874
|
+
if (clickEvent) eventBus.emit(`UI:${clickEvent}`, { cardId: id });
|
|
27875
|
+
}, [disabled, id, onClick, clickEvent, eventBus]);
|
|
27876
|
+
const artPx = artPxMap[size];
|
|
27877
|
+
const frameStyle = frameAsset?.url ? { backgroundImage: `url(${frameAsset.url})`, backgroundSize: "100% 100%", backgroundRepeat: "no-repeat" } : {};
|
|
27878
|
+
return /* @__PURE__ */ jsxs(
|
|
27879
|
+
Button,
|
|
27880
|
+
{
|
|
27881
|
+
variant: "ghost",
|
|
27882
|
+
onClick: handleClick,
|
|
27883
|
+
disabled,
|
|
27884
|
+
title: name,
|
|
27885
|
+
style: frameStyle,
|
|
27886
|
+
className: cn(
|
|
27887
|
+
"relative flex flex-col items-center rounded-interactive",
|
|
27888
|
+
"bg-card/90 px-1.5 pt-1.5 pb-1 transition-all duration-150",
|
|
27889
|
+
frameAsset?.url ? "border-0" : "border-2",
|
|
27890
|
+
cardSizeMap[size],
|
|
27891
|
+
disabled ? "border-border opacity-50 cursor-not-allowed" : "border-accent hover:brightness-125 hover:-translate-y-1 cursor-pointer",
|
|
27892
|
+
selected && "ring-2 ring-foreground ring-offset-1 ring-offset-background -translate-y-1",
|
|
27893
|
+
className
|
|
27894
|
+
),
|
|
27895
|
+
children: [
|
|
27896
|
+
cost != null && /* @__PURE__ */ jsx(
|
|
27897
|
+
Typography,
|
|
27898
|
+
{
|
|
27899
|
+
as: "span",
|
|
27900
|
+
className: cn(
|
|
27901
|
+
"absolute -top-2 -left-2 flex items-center justify-center",
|
|
27902
|
+
"min-w-[22px] h-[22px] rounded-full px-1",
|
|
27903
|
+
"bg-info text-foreground text-xs font-bold border border-background"
|
|
27904
|
+
),
|
|
27905
|
+
children: cost
|
|
27906
|
+
}
|
|
27907
|
+
),
|
|
27908
|
+
/* @__PURE__ */ jsx(Box, { className: "flex-1 flex items-center justify-center w-full", children: art ? /* @__PURE__ */ jsx(GameIcon, { assetUrl: art, icon: "image", size: artPx, alt: name ?? id, className: "flex-shrink-0" }) : /* @__PURE__ */ jsx(Box, { className: "rounded bg-muted/40", style: { width: artPx, height: artPx } }) }),
|
|
27909
|
+
name != null && /* @__PURE__ */ jsx(
|
|
27910
|
+
Typography,
|
|
27911
|
+
{
|
|
27912
|
+
variant: "small",
|
|
27913
|
+
className: "w-full truncate text-center text-[10px] leading-tight font-semibold",
|
|
27914
|
+
children: name
|
|
27915
|
+
}
|
|
27916
|
+
),
|
|
27917
|
+
(attack != null || defense != null) && /* @__PURE__ */ jsxs(Box, { className: "flex w-full items-center justify-between px-0.5 text-[10px] font-bold leading-none", children: [
|
|
27918
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", className: "text-error", children: attack != null ? `\u2694${attack}` : "" }),
|
|
27919
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", className: "text-info", children: defense != null ? `\u{1F6E1}${defense}` : "" })
|
|
27920
|
+
] })
|
|
27921
|
+
]
|
|
27922
|
+
}
|
|
27923
|
+
);
|
|
27924
|
+
}
|
|
27925
|
+
var cardSizeMap, artPxMap;
|
|
27926
|
+
var init_GameCard = __esm({
|
|
27927
|
+
"components/game/2d/atoms/GameCard.tsx"() {
|
|
27928
|
+
"use client";
|
|
27929
|
+
init_cn();
|
|
27930
|
+
init_useEventBus();
|
|
27931
|
+
init_Box();
|
|
27932
|
+
init_Button();
|
|
27933
|
+
init_Typography();
|
|
27934
|
+
init_GameIcon();
|
|
27935
|
+
cardSizeMap = {
|
|
27936
|
+
sm: "w-16 h-24",
|
|
27937
|
+
md: "w-20 h-28",
|
|
27938
|
+
lg: "w-24 h-36"
|
|
27939
|
+
};
|
|
27940
|
+
artPxMap = { sm: 40, md: 52, lg: 64 };
|
|
27941
|
+
GameCard.displayName = "GameCard";
|
|
27942
|
+
}
|
|
27943
|
+
});
|
|
28126
27944
|
function ScoreDisplay({
|
|
28127
27945
|
assetUrl = DEFAULT_ASSET_URL5,
|
|
28128
27946
|
value,
|
|
@@ -28942,7 +28760,7 @@ function InventoryGrid({
|
|
|
28942
28760
|
const eventBus = useEventBus();
|
|
28943
28761
|
const slotCount = totalSlots ?? items.length;
|
|
28944
28762
|
const emptySlotCount = Math.max(0, slotCount - items.length);
|
|
28945
|
-
const handleSelect =
|
|
28763
|
+
const handleSelect = React74.useCallback(
|
|
28946
28764
|
(id) => {
|
|
28947
28765
|
onSelect?.(id);
|
|
28948
28766
|
if (selectEvent) {
|
|
@@ -29159,7 +28977,7 @@ function GameMenu({
|
|
|
29159
28977
|
}) {
|
|
29160
28978
|
const resolvedOptions = options ?? menuItems ?? DEFAULT_MENU_OPTIONS;
|
|
29161
28979
|
const eventBus = useEventBus();
|
|
29162
|
-
const handleOptionClick =
|
|
28980
|
+
const handleOptionClick = React74.useCallback(
|
|
29163
28981
|
(option) => {
|
|
29164
28982
|
if (option.event) {
|
|
29165
28983
|
eventBus.emit(`UI:${option.event}`, { option });
|
|
@@ -29679,227 +29497,6 @@ var init_GameAudioToggle = __esm({
|
|
|
29679
29497
|
GameAudioToggle.displayName = "GameAudioToggle";
|
|
29680
29498
|
}
|
|
29681
29499
|
});
|
|
29682
|
-
function VisualNovelBoard({
|
|
29683
|
-
entity,
|
|
29684
|
-
nodes: propNodes,
|
|
29685
|
-
currentNodeId: propCurrentNodeId,
|
|
29686
|
-
assetManifest: propAssetManifest,
|
|
29687
|
-
typewriterSpeed = 30,
|
|
29688
|
-
portraitScale = 1,
|
|
29689
|
-
chooseEvent,
|
|
29690
|
-
advanceEvent,
|
|
29691
|
-
restartEvent,
|
|
29692
|
-
className
|
|
29693
|
-
}) {
|
|
29694
|
-
const board = boardEntity(entity) ?? {};
|
|
29695
|
-
const eventBus = useEventBus();
|
|
29696
|
-
const assetManifest = propAssetManifest ?? board.assetManifest;
|
|
29697
|
-
const entityNodes = useMemo(
|
|
29698
|
-
() => rows(board.nodes).map((r) => ({
|
|
29699
|
-
id: str(r.id),
|
|
29700
|
-
speaker: str(r.speaker),
|
|
29701
|
-
text: str(r.text),
|
|
29702
|
-
backgroundKey: r.backgroundKey == null ? void 0 : str(r.backgroundKey),
|
|
29703
|
-
portraitKey: r.portraitKey == null ? void 0 : str(r.portraitKey),
|
|
29704
|
-
choices: rows(r.choices).map((c) => ({
|
|
29705
|
-
label: str(c.label),
|
|
29706
|
-
nextId: str(c.nextId)
|
|
29707
|
-
}))
|
|
29708
|
-
})),
|
|
29709
|
-
[board.nodes]
|
|
29710
|
-
);
|
|
29711
|
-
const rawNodes = propNodes ?? entityNodes;
|
|
29712
|
-
const nodes = rawNodes.length > 0 ? rawNodes : DEFAULT_NODES;
|
|
29713
|
-
const currentNodeId = propCurrentNodeId ?? (str(board.currentNodeId) || nodes[0]?.id);
|
|
29714
|
-
const currentNode = nodes.find((n) => n.id === currentNodeId) ?? nodes[0];
|
|
29715
|
-
const backgroundImage = useMemo(
|
|
29716
|
-
() => assetManifest?.backgrounds?.[currentNode?.backgroundKey ?? ""],
|
|
29717
|
-
[assetManifest, currentNode?.backgroundKey]
|
|
29718
|
-
);
|
|
29719
|
-
const portraitAsset = useMemo(
|
|
29720
|
-
() => assetManifest?.portraits?.[currentNode?.portraitKey ?? ""],
|
|
29721
|
-
[assetManifest, currentNode?.portraitKey]
|
|
29722
|
-
);
|
|
29723
|
-
const [displayedText, setDisplayedText] = useState("");
|
|
29724
|
-
const [isTyping, setIsTyping] = useState(false);
|
|
29725
|
-
const textRef = useRef(currentNode?.text ?? "");
|
|
29726
|
-
const charIndexRef = useRef(0);
|
|
29727
|
-
useEffect(() => {
|
|
29728
|
-
const fullText = currentNode?.text ?? "";
|
|
29729
|
-
textRef.current = fullText;
|
|
29730
|
-
charIndexRef.current = 0;
|
|
29731
|
-
if (typewriterSpeed === 0) {
|
|
29732
|
-
setDisplayedText(fullText);
|
|
29733
|
-
setIsTyping(false);
|
|
29734
|
-
} else {
|
|
29735
|
-
setDisplayedText("");
|
|
29736
|
-
setIsTyping(true);
|
|
29737
|
-
}
|
|
29738
|
-
}, [currentNode?.id, typewriterSpeed]);
|
|
29739
|
-
useEffect(() => {
|
|
29740
|
-
if (!isTyping || typewriterSpeed === 0) return;
|
|
29741
|
-
const interval = setInterval(() => {
|
|
29742
|
-
if (charIndexRef.current < textRef.current.length) {
|
|
29743
|
-
charIndexRef.current++;
|
|
29744
|
-
setDisplayedText(textRef.current.slice(0, charIndexRef.current));
|
|
29745
|
-
} else {
|
|
29746
|
-
setIsTyping(false);
|
|
29747
|
-
clearInterval(interval);
|
|
29748
|
-
}
|
|
29749
|
-
}, typewriterSpeed);
|
|
29750
|
-
return () => clearInterval(interval);
|
|
29751
|
-
}, [isTyping, typewriterSpeed]);
|
|
29752
|
-
const skipTypewriter = useCallback(() => {
|
|
29753
|
-
if (isTyping) {
|
|
29754
|
-
charIndexRef.current = textRef.current.length;
|
|
29755
|
-
setDisplayedText(textRef.current);
|
|
29756
|
-
setIsTyping(false);
|
|
29757
|
-
}
|
|
29758
|
-
}, [isTyping]);
|
|
29759
|
-
const handleChoice = useCallback(
|
|
29760
|
-
(index) => {
|
|
29761
|
-
if (chooseEvent) {
|
|
29762
|
-
eventBus.emit(`UI:${chooseEvent}`, { choiceIndex: index });
|
|
29763
|
-
}
|
|
29764
|
-
},
|
|
29765
|
-
[chooseEvent, eventBus]
|
|
29766
|
-
);
|
|
29767
|
-
const handleAdvance = useCallback(() => {
|
|
29768
|
-
if (advanceEvent) {
|
|
29769
|
-
eventBus.emit(`UI:${advanceEvent}`, {});
|
|
29770
|
-
}
|
|
29771
|
-
}, [advanceEvent, eventBus]);
|
|
29772
|
-
const handleRestart = useCallback(() => {
|
|
29773
|
-
if (restartEvent) {
|
|
29774
|
-
eventBus.emit(`UI:${restartEvent}`, {});
|
|
29775
|
-
}
|
|
29776
|
-
}, [restartEvent, eventBus]);
|
|
29777
|
-
const handleContainerClick = useCallback(() => {
|
|
29778
|
-
if (isTyping) {
|
|
29779
|
-
skipTypewriter();
|
|
29780
|
-
} else if (!currentNode?.choices?.length) {
|
|
29781
|
-
handleAdvance();
|
|
29782
|
-
}
|
|
29783
|
-
}, [isTyping, skipTypewriter, currentNode?.choices, handleAdvance]);
|
|
29784
|
-
if (!currentNode) {
|
|
29785
|
-
return /* @__PURE__ */ jsxs(VStack, { className: cn("visual-novel-board relative min-h-[600px] bg-background items-center justify-center", className), gap: "lg", children: [
|
|
29786
|
-
/* @__PURE__ */ jsx(Typography, { variant: "h3", color: "muted", children: "No dialogue nodes" }),
|
|
29787
|
-
/* @__PURE__ */ jsx(Button, { variant: "primary", onClick: handleRestart, children: "Restart" })
|
|
29788
|
-
] });
|
|
29789
|
-
}
|
|
29790
|
-
return /* @__PURE__ */ jsxs(
|
|
29791
|
-
Box,
|
|
29792
|
-
{
|
|
29793
|
-
className: cn("visual-novel-board relative min-h-[600px] bg-background overflow-hidden", className),
|
|
29794
|
-
onClick: handleContainerClick,
|
|
29795
|
-
children: [
|
|
29796
|
-
backgroundImage && /* @__PURE__ */ jsx(
|
|
29797
|
-
"div",
|
|
29798
|
-
{
|
|
29799
|
-
className: "absolute inset-0 z-0 bg-center bg-cover bg-no-repeat",
|
|
29800
|
-
style: { backgroundImage: `url(${backgroundImage.url})` },
|
|
29801
|
-
"aria-hidden": "true"
|
|
29802
|
-
}
|
|
29803
|
-
),
|
|
29804
|
-
portraitAsset && /* @__PURE__ */ jsx(
|
|
29805
|
-
"div",
|
|
29806
|
-
{
|
|
29807
|
-
className: "absolute left-1/2 -translate-x-1/2 bottom-0 z-10 pointer-events-none flex items-end",
|
|
29808
|
-
style: { height: `${60 * portraitScale}vh` },
|
|
29809
|
-
children: /* @__PURE__ */ jsx(
|
|
29810
|
-
"img",
|
|
29811
|
-
{
|
|
29812
|
-
src: portraitAsset.url,
|
|
29813
|
-
alt: currentNode.speaker,
|
|
29814
|
-
className: "h-full w-auto object-contain drop-shadow-2xl"
|
|
29815
|
-
}
|
|
29816
|
-
)
|
|
29817
|
-
}
|
|
29818
|
-
),
|
|
29819
|
-
/* @__PURE__ */ jsx("div", { className: "absolute left-0 right-0 bottom-0 z-20 mx-4 mb-4", children: /* @__PURE__ */ jsxs("div", { className: cn(
|
|
29820
|
-
"rounded-container border-2 overflow-hidden",
|
|
29821
|
-
backgroundImage ? "bg-black/80 backdrop-blur-sm border-white/20" : "bg-card/95 border-border"
|
|
29822
|
-
), children: [
|
|
29823
|
-
/* @__PURE__ */ jsx(
|
|
29824
|
-
DialogueBubble,
|
|
29825
|
-
{
|
|
29826
|
-
speaker: currentNode.speaker,
|
|
29827
|
-
text: displayedText + (isTyping ? "\u258C" : ""),
|
|
29828
|
-
portrait: portraitAsset,
|
|
29829
|
-
position: "bottom",
|
|
29830
|
-
className: "border-0 rounded-none bg-transparent backdrop-blur-none"
|
|
29831
|
-
}
|
|
29832
|
-
),
|
|
29833
|
-
!isTyping && (currentNode.choices?.length ?? 0) > 0 && /* @__PURE__ */ jsx("div", { className: "px-4 pb-4 space-y-2", onClick: (e) => e.stopPropagation(), children: currentNode.choices.map((choice, index) => /* @__PURE__ */ jsx(
|
|
29834
|
-
ChoiceButton,
|
|
29835
|
-
{
|
|
29836
|
-
text: choice.label,
|
|
29837
|
-
index: index + 1,
|
|
29838
|
-
onClick: () => handleChoice(index)
|
|
29839
|
-
},
|
|
29840
|
-
choice.nextId
|
|
29841
|
-
)) }),
|
|
29842
|
-
!isTyping && !currentNode.choices?.length && /* @__PURE__ */ jsx("div", { className: "px-4 pb-3 text-muted-foreground text-sm animate-pulse", children: "Press click to continue..." })
|
|
29843
|
-
] }) })
|
|
29844
|
-
]
|
|
29845
|
-
}
|
|
29846
|
-
);
|
|
29847
|
-
}
|
|
29848
|
-
var DEFAULT_NODES;
|
|
29849
|
-
var init_VisualNovelBoard = __esm({
|
|
29850
|
-
"components/game/2d/organisms/VisualNovelBoard.tsx"() {
|
|
29851
|
-
"use client";
|
|
29852
|
-
init_cn();
|
|
29853
|
-
init_useEventBus();
|
|
29854
|
-
init_Box();
|
|
29855
|
-
init_Typography();
|
|
29856
|
-
init_Stack();
|
|
29857
|
-
init_Button();
|
|
29858
|
-
init_DialogueBubble();
|
|
29859
|
-
init_ChoiceButton();
|
|
29860
|
-
init_boardEntity();
|
|
29861
|
-
DEFAULT_NODES = [
|
|
29862
|
-
{
|
|
29863
|
-
id: "start",
|
|
29864
|
-
speaker: "Narrator",
|
|
29865
|
-
text: "The corridor stretches into shadow. A lone sentinel blocks your path.",
|
|
29866
|
-
backgroundKey: "corridor",
|
|
29867
|
-
portraitKey: "guide",
|
|
29868
|
-
choices: [
|
|
29869
|
-
{ label: "Approach the sentinel.", nextId: "meet" },
|
|
29870
|
-
{ label: "Turn back.", nextId: "retreat" }
|
|
29871
|
-
]
|
|
29872
|
-
},
|
|
29873
|
-
{
|
|
29874
|
-
id: "meet",
|
|
29875
|
-
speaker: "Sentinel",
|
|
29876
|
-
text: "You carry the old marks. Speak your purpose, traveler.",
|
|
29877
|
-
backgroundKey: "forge",
|
|
29878
|
-
portraitKey: "rival",
|
|
29879
|
-
choices: [
|
|
29880
|
-
{ label: "I seek the core.", nextId: "end" },
|
|
29881
|
-
{ label: "I am only passing through.", nextId: "retreat" }
|
|
29882
|
-
]
|
|
29883
|
-
},
|
|
29884
|
-
{
|
|
29885
|
-
id: "retreat",
|
|
29886
|
-
speaker: "Narrator",
|
|
29887
|
-
text: "You withdraw into the dark. The path will wait for braver feet.",
|
|
29888
|
-
backgroundKey: "corridor",
|
|
29889
|
-
choices: [{ label: "Begin again.", nextId: "start" }]
|
|
29890
|
-
},
|
|
29891
|
-
{
|
|
29892
|
-
id: "end",
|
|
29893
|
-
speaker: "Sentinel",
|
|
29894
|
-
text: "Then the way is open. Walk it well.",
|
|
29895
|
-
backgroundKey: "core",
|
|
29896
|
-
portraitKey: "rival",
|
|
29897
|
-
choices: [{ label: "Begin again.", nextId: "start" }]
|
|
29898
|
-
}
|
|
29899
|
-
];
|
|
29900
|
-
VisualNovelBoard.displayName = "VisualNovelBoard";
|
|
29901
|
-
}
|
|
29902
|
-
});
|
|
29903
29500
|
function LinearView({
|
|
29904
29501
|
trait,
|
|
29905
29502
|
size = "md",
|
|
@@ -29911,7 +29508,7 @@ function LinearView({
|
|
|
29911
29508
|
/* @__PURE__ */ jsx(HStack, { className: "flex-wrap items-center", gap: "xs", children: trait.states.map((state, i) => {
|
|
29912
29509
|
const isDone = i < currentIdx;
|
|
29913
29510
|
const isCurrent = i === currentIdx;
|
|
29914
|
-
return /* @__PURE__ */ jsxs(
|
|
29511
|
+
return /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
|
|
29915
29512
|
i > 0 && /* @__PURE__ */ jsx(
|
|
29916
29513
|
Typography,
|
|
29917
29514
|
{
|
|
@@ -30537,7 +30134,7 @@ function SequenceBar({
|
|
|
30537
30134
|
onSlotRemove(index);
|
|
30538
30135
|
}, [onSlotRemove, playing]);
|
|
30539
30136
|
const paddedSlots = Array.from({ length: maxSlots }, (_, i) => slots[i]);
|
|
30540
|
-
return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(
|
|
30137
|
+
return /* @__PURE__ */ jsx(HStack, { className: cn("items-center", className), gap: "sm", children: paddedSlots.map((slot, i) => /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
|
|
30541
30138
|
i > 0 && /* @__PURE__ */ jsx(
|
|
30542
30139
|
Typography,
|
|
30543
30140
|
{
|
|
@@ -33009,8 +32606,6 @@ var init_molecules = __esm({
|
|
|
33009
32606
|
init_GameAudioToggle();
|
|
33010
32607
|
init_useGameAudio();
|
|
33011
32608
|
init_useCamera();
|
|
33012
|
-
init_VisualNovelBoard();
|
|
33013
|
-
init_CardBattlerBoard();
|
|
33014
32609
|
init_TraitStateViewer();
|
|
33015
32610
|
init_TraitSlot();
|
|
33016
32611
|
init_editorUtils();
|
|
@@ -33640,13 +33235,13 @@ var init_MapView = __esm({
|
|
|
33640
33235
|
shadowSize: [41, 41]
|
|
33641
33236
|
});
|
|
33642
33237
|
L.Marker.prototype.options.icon = defaultIcon;
|
|
33643
|
-
const { useEffect:
|
|
33238
|
+
const { useEffect: useEffect72, useRef: useRef68, useCallback: useCallback116, useState: useState110 } = React74__default;
|
|
33644
33239
|
const { Typography: Typography2 } = await Promise.resolve().then(() => (init_Typography(), Typography_exports));
|
|
33645
33240
|
const { useEventBus: useEventBus2 } = await Promise.resolve().then(() => (init_useEventBus(), useEventBus_exports));
|
|
33646
33241
|
function MapUpdater({ centerLat, centerLng, zoom }) {
|
|
33647
33242
|
const map = useMap();
|
|
33648
|
-
const prevRef =
|
|
33649
|
-
|
|
33243
|
+
const prevRef = useRef68({ centerLat, centerLng, zoom });
|
|
33244
|
+
useEffect72(() => {
|
|
33650
33245
|
const prev = prevRef.current;
|
|
33651
33246
|
if (prev.centerLat !== centerLat || prev.centerLng !== centerLng || prev.zoom !== zoom) {
|
|
33652
33247
|
map.setView([centerLat, centerLng], zoom);
|
|
@@ -33657,7 +33252,7 @@ var init_MapView = __esm({
|
|
|
33657
33252
|
}
|
|
33658
33253
|
function MapClickHandler({ onMapClick }) {
|
|
33659
33254
|
const map = useMap();
|
|
33660
|
-
|
|
33255
|
+
useEffect72(() => {
|
|
33661
33256
|
if (!onMapClick) return;
|
|
33662
33257
|
const handler = (e) => {
|
|
33663
33258
|
onMapClick(e.latlng.lat, e.latlng.lng);
|
|
@@ -33685,8 +33280,8 @@ var init_MapView = __esm({
|
|
|
33685
33280
|
showAttribution = true
|
|
33686
33281
|
}) {
|
|
33687
33282
|
const eventBus = useEventBus2();
|
|
33688
|
-
const [clickedPosition, setClickedPosition] =
|
|
33689
|
-
const handleMapClick =
|
|
33283
|
+
const [clickedPosition, setClickedPosition] = useState110(null);
|
|
33284
|
+
const handleMapClick = useCallback116((lat, lng) => {
|
|
33690
33285
|
if (showClickedPin) {
|
|
33691
33286
|
setClickedPosition({ lat, lng });
|
|
33692
33287
|
}
|
|
@@ -33695,7 +33290,7 @@ var init_MapView = __esm({
|
|
|
33695
33290
|
eventBus.emit(`UI:${mapClickEvent}`, { latitude: lat, longitude: lng });
|
|
33696
33291
|
}
|
|
33697
33292
|
}, [onMapClick, mapClickEvent, eventBus, showClickedPin]);
|
|
33698
|
-
const handleMarkerClick =
|
|
33293
|
+
const handleMarkerClick = useCallback116((marker) => {
|
|
33699
33294
|
onMarkerClick?.(marker);
|
|
33700
33295
|
if (markerClickEvent) {
|
|
33701
33296
|
eventBus.emit(`UI:${markerClickEvent}`, { ...marker });
|
|
@@ -34555,8 +34150,8 @@ function TableView({
|
|
|
34555
34150
|
}) {
|
|
34556
34151
|
const eventBus = useEventBus();
|
|
34557
34152
|
const { t } = useTranslate();
|
|
34558
|
-
const [visibleCount, setVisibleCount] =
|
|
34559
|
-
const [localSelected, setLocalSelected] =
|
|
34153
|
+
const [visibleCount, setVisibleCount] = React74__default.useState(pageSize > 0 ? pageSize : Infinity);
|
|
34154
|
+
const [localSelected, setLocalSelected] = React74__default.useState(/* @__PURE__ */ new Set());
|
|
34560
34155
|
const colDefs = columns ?? fields ?? [];
|
|
34561
34156
|
const allDataRaw = Array.isArray(entity) ? entity : entity ? [entity] : [];
|
|
34562
34157
|
const dnd = useDataDnd({
|
|
@@ -34751,12 +34346,12 @@ function TableView({
|
|
|
34751
34346
|
]
|
|
34752
34347
|
}
|
|
34753
34348
|
);
|
|
34754
|
-
return dnd.isZone ? /* @__PURE__ */ jsx(dnd.SortableItem, { id: row[idField] ?? id, children: rowInner }, id) : /* @__PURE__ */ jsx(
|
|
34349
|
+
return dnd.isZone ? /* @__PURE__ */ jsx(dnd.SortableItem, { id: row[idField] ?? id, children: rowInner }, id) : /* @__PURE__ */ jsx(React74__default.Fragment, { children: rowInner }, id);
|
|
34755
34350
|
};
|
|
34756
34351
|
const items = Array.from(data);
|
|
34757
34352
|
const groups = groupBy ? groupData2(items, groupBy) : [{ label: "", items }];
|
|
34758
34353
|
let runningIndex = 0;
|
|
34759
|
-
const body = /* @__PURE__ */ jsx(Box, { role: "rowgroup", children: groups.map((group, gi) => /* @__PURE__ */ jsxs(
|
|
34354
|
+
const body = /* @__PURE__ */ jsx(Box, { role: "rowgroup", children: groups.map((group, gi) => /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
|
|
34760
34355
|
group.label && /* @__PURE__ */ jsx(Divider, { label: group.label, className: gi > 0 ? "mt-3" : "mt-0" }),
|
|
34761
34356
|
group.items.map((row) => renderRow(row, runningIndex++))
|
|
34762
34357
|
] }, gi)) });
|
|
@@ -36113,7 +35708,7 @@ var init_StepFlow = __esm({
|
|
|
36113
35708
|
className
|
|
36114
35709
|
}) => {
|
|
36115
35710
|
if (orientation === "vertical") {
|
|
36116
|
-
return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(
|
|
35711
|
+
return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(React74__default.Fragment, { children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "start", className: "w-full", children: [
|
|
36117
35712
|
/* @__PURE__ */ jsxs(VStack, { gap: "none", align: "center", children: [
|
|
36118
35713
|
/* @__PURE__ */ jsx(StepCircle, { step, index }),
|
|
36119
35714
|
showConnectors && index < steps.length - 1 && /* @__PURE__ */ jsx(Box, { className: "w-px h-8 bg-border" })
|
|
@@ -36124,7 +35719,7 @@ var init_StepFlow = __esm({
|
|
|
36124
35719
|
] })
|
|
36125
35720
|
] }) }, index)) });
|
|
36126
35721
|
}
|
|
36127
|
-
return /* @__PURE__ */ jsx(Box, { className: cn("w-full flex flex-col md:flex-row items-start gap-0", className), children: steps.map((step, index) => /* @__PURE__ */ jsxs(
|
|
35722
|
+
return /* @__PURE__ */ jsx(Box, { className: cn("w-full flex flex-col md:flex-row items-start gap-0", className), children: steps.map((step, index) => /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
|
|
36128
35723
|
/* @__PURE__ */ jsxs(VStack, { gap: "sm", align: "center", className: "flex-1 w-full md:w-auto", children: [
|
|
36129
35724
|
/* @__PURE__ */ jsx(StepCircle, { step, index }),
|
|
36130
35725
|
/* @__PURE__ */ jsx(Typography, { variant: "h4", className: "text-center", children: step.title }),
|
|
@@ -37109,7 +36704,7 @@ var init_LikertScale = __esm({
|
|
|
37109
36704
|
md: "text-base",
|
|
37110
36705
|
lg: "text-lg"
|
|
37111
36706
|
};
|
|
37112
|
-
LikertScale =
|
|
36707
|
+
LikertScale = React74__default.forwardRef(
|
|
37113
36708
|
({
|
|
37114
36709
|
question,
|
|
37115
36710
|
options = DEFAULT_LIKERT_OPTIONS,
|
|
@@ -37121,7 +36716,7 @@ var init_LikertScale = __esm({
|
|
|
37121
36716
|
variant = "radios",
|
|
37122
36717
|
className
|
|
37123
36718
|
}, ref) => {
|
|
37124
|
-
const groupId =
|
|
36719
|
+
const groupId = React74__default.useId();
|
|
37125
36720
|
const eventBus = useEventBus();
|
|
37126
36721
|
const handleSelect = useCallback(
|
|
37127
36722
|
(next) => {
|
|
@@ -39403,7 +38998,7 @@ var init_DocBreadcrumb = __esm({
|
|
|
39403
38998
|
"aria-label": t("aria.breadcrumb"),
|
|
39404
38999
|
children: /* @__PURE__ */ jsx(HStack, { gap: "xs", align: "center", wrap: true, children: items.map((item, idx) => {
|
|
39405
39000
|
const isLast = idx === items.length - 1;
|
|
39406
|
-
return /* @__PURE__ */ jsxs(
|
|
39001
|
+
return /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
|
|
39407
39002
|
idx > 0 && /* @__PURE__ */ jsx(
|
|
39408
39003
|
Icon,
|
|
39409
39004
|
{
|
|
@@ -40272,7 +39867,7 @@ var init_MiniStateMachine = __esm({
|
|
|
40272
39867
|
const x = 2 + i * (NODE_W + GAP2 + ARROW_W + GAP2);
|
|
40273
39868
|
const tc = transitionCounts[s.name] ?? 0;
|
|
40274
39869
|
const role = getStateRole(s.name, s.isInitial ?? void 0, s.isTerminal ?? void 0, tc, maxTC);
|
|
40275
|
-
return /* @__PURE__ */ jsxs(
|
|
39870
|
+
return /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
|
|
40276
39871
|
/* @__PURE__ */ jsx(
|
|
40277
39872
|
AvlState,
|
|
40278
39873
|
{
|
|
@@ -40476,7 +40071,7 @@ var init_PageHeader = __esm({
|
|
|
40476
40071
|
info: "bg-info/10 text-info"
|
|
40477
40072
|
};
|
|
40478
40073
|
return /* @__PURE__ */ jsxs(Box, { className: cn("mb-6", className), children: [
|
|
40479
|
-
breadcrumbs && breadcrumbs.length > 0 && /* @__PURE__ */ jsx(Box, { as: "nav", className: "mb-4", children: /* @__PURE__ */ jsx(Box, { as: "ol", className: "flex items-center gap-2 text-sm", children: breadcrumbs.map((crumb, idx) => /* @__PURE__ */ jsxs(
|
|
40074
|
+
breadcrumbs && breadcrumbs.length > 0 && /* @__PURE__ */ jsx(Box, { as: "nav", className: "mb-4", children: /* @__PURE__ */ jsx(Box, { as: "ol", className: "flex items-center gap-2 text-sm", children: breadcrumbs.map((crumb, idx) => /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
|
|
40480
40075
|
idx > 0 && /* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", children: "/" }),
|
|
40481
40076
|
crumb.href ? /* @__PURE__ */ jsx(
|
|
40482
40077
|
"a",
|
|
@@ -40834,7 +40429,7 @@ var init_Section = __esm({
|
|
|
40834
40429
|
as: Component = "section"
|
|
40835
40430
|
}) => {
|
|
40836
40431
|
const hasHeader = title || description || action;
|
|
40837
|
-
return
|
|
40432
|
+
return React74__default.createElement(
|
|
40838
40433
|
Component,
|
|
40839
40434
|
{
|
|
40840
40435
|
className: cn(
|
|
@@ -41208,7 +40803,7 @@ var init_WizardContainer = __esm({
|
|
|
41208
40803
|
const isCompleted = index < currentStep;
|
|
41209
40804
|
const stepKey = step.id ?? step.tabId ?? `step-${index}`;
|
|
41210
40805
|
const stepTitle = step.title ?? step.name ?? `Step ${index + 1}`;
|
|
41211
|
-
return /* @__PURE__ */ jsxs(
|
|
40806
|
+
return /* @__PURE__ */ jsxs(React74__default.Fragment, { children: [
|
|
41212
40807
|
/* @__PURE__ */ jsx(
|
|
41213
40808
|
Button,
|
|
41214
40809
|
{
|
|
@@ -43857,7 +43452,7 @@ var init_DetailPanel = __esm({
|
|
|
43857
43452
|
}
|
|
43858
43453
|
});
|
|
43859
43454
|
function extractTitle(children) {
|
|
43860
|
-
if (!
|
|
43455
|
+
if (!React74__default.isValidElement(children)) return void 0;
|
|
43861
43456
|
const props = children.props;
|
|
43862
43457
|
if (typeof props.title === "string") {
|
|
43863
43458
|
return props.title;
|
|
@@ -44207,12 +43802,12 @@ var init_Form = __esm({
|
|
|
44207
43802
|
const isSchemaEntity = isOrbitalEntitySchema(entity);
|
|
44208
43803
|
const resolvedEntity = isSchemaEntity ? entity : void 0;
|
|
44209
43804
|
const entityName = typeof entity === "string" ? entity : resolvedEntity?.name;
|
|
44210
|
-
const normalizedInitialData =
|
|
43805
|
+
const normalizedInitialData = React74__default.useMemo(() => {
|
|
44211
43806
|
const entityRowAsInitial = isPlainEntityRow(entity) ? entity : void 0;
|
|
44212
43807
|
const callerInitial = initialData !== null && typeof initialData === "object" && !Array.isArray(initialData) ? initialData : {};
|
|
44213
43808
|
return entityRowAsInitial !== void 0 ? { ...entityRowAsInitial, ...callerInitial } : callerInitial;
|
|
44214
43809
|
}, [entity, initialData]);
|
|
44215
|
-
const entityDerivedFields =
|
|
43810
|
+
const entityDerivedFields = React74__default.useMemo(() => {
|
|
44216
43811
|
if (fields && fields.length > 0) return void 0;
|
|
44217
43812
|
if (!resolvedEntity) return void 0;
|
|
44218
43813
|
return resolvedEntity.fields.map(
|
|
@@ -44233,16 +43828,16 @@ var init_Form = __esm({
|
|
|
44233
43828
|
const conditionalFields = typeof conditionalFieldsRaw === "boolean" ? {} : conditionalFieldsRaw;
|
|
44234
43829
|
const hiddenCalculations = typeof hiddenCalculationsRaw === "boolean" ? [] : hiddenCalculationsRaw;
|
|
44235
43830
|
const violationTriggers = typeof violationTriggersRaw === "boolean" ? [] : violationTriggersRaw;
|
|
44236
|
-
const [formData, setFormData] =
|
|
43831
|
+
const [formData, setFormData] = React74__default.useState(
|
|
44237
43832
|
normalizedInitialData
|
|
44238
43833
|
);
|
|
44239
|
-
const [collapsedSections, setCollapsedSections] =
|
|
43834
|
+
const [collapsedSections, setCollapsedSections] = React74__default.useState(
|
|
44240
43835
|
/* @__PURE__ */ new Set()
|
|
44241
43836
|
);
|
|
44242
|
-
const [submitError, setSubmitError] =
|
|
44243
|
-
const formRef =
|
|
43837
|
+
const [submitError, setSubmitError] = React74__default.useState(null);
|
|
43838
|
+
const formRef = React74__default.useRef(null);
|
|
44244
43839
|
const formMode = props.mode;
|
|
44245
|
-
const mountedRef =
|
|
43840
|
+
const mountedRef = React74__default.useRef(false);
|
|
44246
43841
|
if (!mountedRef.current) {
|
|
44247
43842
|
mountedRef.current = true;
|
|
44248
43843
|
debug("forms", "mount", {
|
|
@@ -44255,7 +43850,7 @@ var init_Form = __esm({
|
|
|
44255
43850
|
});
|
|
44256
43851
|
}
|
|
44257
43852
|
const shouldShowCancel = showCancel ?? (fields && fields.length > 0);
|
|
44258
|
-
const evalContext =
|
|
43853
|
+
const evalContext = React74__default.useMemo(
|
|
44259
43854
|
() => ({
|
|
44260
43855
|
formValues: formData,
|
|
44261
43856
|
globalVariables: externalContext?.globalVariables ?? {},
|
|
@@ -44264,7 +43859,7 @@ var init_Form = __esm({
|
|
|
44264
43859
|
}),
|
|
44265
43860
|
[formData, externalContext]
|
|
44266
43861
|
);
|
|
44267
|
-
|
|
43862
|
+
React74__default.useEffect(() => {
|
|
44268
43863
|
debug("forms", "initialData-sync", {
|
|
44269
43864
|
mode: formMode,
|
|
44270
43865
|
normalizedInitialData,
|
|
@@ -44275,7 +43870,7 @@ var init_Form = __esm({
|
|
|
44275
43870
|
setFormData(normalizedInitialData);
|
|
44276
43871
|
}
|
|
44277
43872
|
}, [normalizedInitialData]);
|
|
44278
|
-
const processCalculations =
|
|
43873
|
+
const processCalculations = React74__default.useCallback(
|
|
44279
43874
|
(changedFieldId, newFormData) => {
|
|
44280
43875
|
if (!hiddenCalculations.length) return;
|
|
44281
43876
|
const context = {
|
|
@@ -44300,7 +43895,7 @@ var init_Form = __esm({
|
|
|
44300
43895
|
},
|
|
44301
43896
|
[hiddenCalculations, externalContext, eventBus]
|
|
44302
43897
|
);
|
|
44303
|
-
const checkViolations =
|
|
43898
|
+
const checkViolations = React74__default.useCallback(
|
|
44304
43899
|
(changedFieldId, newFormData) => {
|
|
44305
43900
|
if (!violationTriggers.length) return;
|
|
44306
43901
|
const context = {
|
|
@@ -44338,7 +43933,7 @@ var init_Form = __esm({
|
|
|
44338
43933
|
processCalculations(name, newFormData);
|
|
44339
43934
|
checkViolations(name, newFormData);
|
|
44340
43935
|
};
|
|
44341
|
-
const isFieldVisible =
|
|
43936
|
+
const isFieldVisible = React74__default.useCallback(
|
|
44342
43937
|
(fieldName) => {
|
|
44343
43938
|
const condition = conditionalFields[fieldName];
|
|
44344
43939
|
if (!condition) return true;
|
|
@@ -44346,7 +43941,7 @@ var init_Form = __esm({
|
|
|
44346
43941
|
},
|
|
44347
43942
|
[conditionalFields, evalContext]
|
|
44348
43943
|
);
|
|
44349
|
-
const isSectionVisible =
|
|
43944
|
+
const isSectionVisible = React74__default.useCallback(
|
|
44350
43945
|
(section) => {
|
|
44351
43946
|
if (!section.condition) return true;
|
|
44352
43947
|
return Boolean(evaluateFormExpression(section.condition, evalContext));
|
|
@@ -44422,7 +44017,7 @@ var init_Form = __esm({
|
|
|
44422
44017
|
eventBus.emit(`UI:${onCancel}`);
|
|
44423
44018
|
}
|
|
44424
44019
|
};
|
|
44425
|
-
const renderField =
|
|
44020
|
+
const renderField = React74__default.useCallback(
|
|
44426
44021
|
(field) => {
|
|
44427
44022
|
const fieldName = field.name || field.field;
|
|
44428
44023
|
if (!fieldName) return null;
|
|
@@ -44443,7 +44038,7 @@ var init_Form = __esm({
|
|
|
44443
44038
|
[formData, isFieldVisible, relationsData, relationsLoading, isLoading]
|
|
44444
44039
|
);
|
|
44445
44040
|
const effectiveFields = entityDerivedFields ?? fields;
|
|
44446
|
-
const normalizedFields =
|
|
44041
|
+
const normalizedFields = React74__default.useMemo(() => {
|
|
44447
44042
|
if (!effectiveFields || effectiveFields.length === 0) return [];
|
|
44448
44043
|
return effectiveFields.map((field) => {
|
|
44449
44044
|
if (typeof field === "string") {
|
|
@@ -44467,7 +44062,7 @@ var init_Form = __esm({
|
|
|
44467
44062
|
return field;
|
|
44468
44063
|
});
|
|
44469
44064
|
}, [effectiveFields, resolvedEntity]);
|
|
44470
|
-
const schemaFields =
|
|
44065
|
+
const schemaFields = React74__default.useMemo(() => {
|
|
44471
44066
|
if (normalizedFields.length === 0) return null;
|
|
44472
44067
|
if (isDebugEnabled()) {
|
|
44473
44068
|
debugGroup(`Form: ${entityName || "unknown"}`);
|
|
@@ -44477,7 +44072,7 @@ var init_Form = __esm({
|
|
|
44477
44072
|
}
|
|
44478
44073
|
return normalizedFields.map(renderField).filter(Boolean);
|
|
44479
44074
|
}, [normalizedFields, renderField, entityName, conditionalFields]);
|
|
44480
|
-
const sectionElements =
|
|
44075
|
+
const sectionElements = React74__default.useMemo(() => {
|
|
44481
44076
|
if (!sections || sections.length === 0) return null;
|
|
44482
44077
|
return sections.map((section) => {
|
|
44483
44078
|
if (!isSectionVisible(section)) {
|
|
@@ -45202,7 +44797,7 @@ var init_List = __esm({
|
|
|
45202
44797
|
if (entity && typeof entity === "object" && "id" in entity) return [entity];
|
|
45203
44798
|
return [];
|
|
45204
44799
|
}, [entity]);
|
|
45205
|
-
const getItemActions =
|
|
44800
|
+
const getItemActions = React74__default.useCallback(
|
|
45206
44801
|
(item) => {
|
|
45207
44802
|
if (!itemActions) return [];
|
|
45208
44803
|
if (typeof itemActions === "function") {
|
|
@@ -45677,7 +45272,7 @@ var init_MediaGallery = __esm({
|
|
|
45677
45272
|
[selectable, selectedItems, selectionEvent, eventBus]
|
|
45678
45273
|
);
|
|
45679
45274
|
const entityData = Array.isArray(entity) ? entity : [];
|
|
45680
|
-
const items =
|
|
45275
|
+
const items = React74__default.useMemo(() => {
|
|
45681
45276
|
if (propItems) return propItems;
|
|
45682
45277
|
if (entityData.length === 0) return [];
|
|
45683
45278
|
return entityData.map((record, idx) => {
|
|
@@ -45840,7 +45435,7 @@ var init_MediaGallery = __esm({
|
|
|
45840
45435
|
}
|
|
45841
45436
|
});
|
|
45842
45437
|
function extractTitle2(children) {
|
|
45843
|
-
if (!
|
|
45438
|
+
if (!React74__default.isValidElement(children)) return void 0;
|
|
45844
45439
|
const props = children.props;
|
|
45845
45440
|
if (typeof props.title === "string") {
|
|
45846
45441
|
return props.title;
|
|
@@ -46095,7 +45690,7 @@ var init_debugRegistry = __esm({
|
|
|
46095
45690
|
}
|
|
46096
45691
|
});
|
|
46097
45692
|
function useDebugData() {
|
|
46098
|
-
const [data, setData] =
|
|
45693
|
+
const [data, setData] = React74.useState(() => ({
|
|
46099
45694
|
traits: [],
|
|
46100
45695
|
ticks: [],
|
|
46101
45696
|
guards: [],
|
|
@@ -46109,7 +45704,7 @@ function useDebugData() {
|
|
|
46109
45704
|
},
|
|
46110
45705
|
lastUpdate: Date.now()
|
|
46111
45706
|
}));
|
|
46112
|
-
|
|
45707
|
+
React74.useEffect(() => {
|
|
46113
45708
|
const updateData = () => {
|
|
46114
45709
|
setData({
|
|
46115
45710
|
traits: getAllTraits(),
|
|
@@ -46218,12 +45813,12 @@ function layoutGraph(states, transitions, initialState, width, height) {
|
|
|
46218
45813
|
return positions;
|
|
46219
45814
|
}
|
|
46220
45815
|
function WalkMinimap() {
|
|
46221
|
-
const [walkStep, setWalkStep] =
|
|
46222
|
-
const [traits2, setTraits] =
|
|
46223
|
-
const [coveredEdges, setCoveredEdges] =
|
|
46224
|
-
const [completedTraits, setCompletedTraits] =
|
|
46225
|
-
const prevTraitRef =
|
|
46226
|
-
|
|
45816
|
+
const [walkStep, setWalkStep] = React74.useState(null);
|
|
45817
|
+
const [traits2, setTraits] = React74.useState([]);
|
|
45818
|
+
const [coveredEdges, setCoveredEdges] = React74.useState([]);
|
|
45819
|
+
const [completedTraits, setCompletedTraits] = React74.useState(/* @__PURE__ */ new Set());
|
|
45820
|
+
const prevTraitRef = React74.useRef(null);
|
|
45821
|
+
React74.useEffect(() => {
|
|
46227
45822
|
const interval = setInterval(() => {
|
|
46228
45823
|
const w = window;
|
|
46229
45824
|
const step = w.__orbitalWalkStep;
|
|
@@ -46659,15 +46254,15 @@ var init_EntitiesTab = __esm({
|
|
|
46659
46254
|
});
|
|
46660
46255
|
function EventFlowTab({ events: events2 }) {
|
|
46661
46256
|
const { t } = useTranslate();
|
|
46662
|
-
const [filter, setFilter] =
|
|
46663
|
-
const containerRef =
|
|
46664
|
-
const [autoScroll, setAutoScroll] =
|
|
46665
|
-
|
|
46257
|
+
const [filter, setFilter] = React74.useState("all");
|
|
46258
|
+
const containerRef = React74.useRef(null);
|
|
46259
|
+
const [autoScroll, setAutoScroll] = React74.useState(true);
|
|
46260
|
+
React74.useEffect(() => {
|
|
46666
46261
|
if (autoScroll && containerRef.current) {
|
|
46667
46262
|
containerRef.current.scrollTop = containerRef.current.scrollHeight;
|
|
46668
46263
|
}
|
|
46669
46264
|
}, [events2.length, autoScroll]);
|
|
46670
|
-
const filteredEvents =
|
|
46265
|
+
const filteredEvents = React74.useMemo(() => {
|
|
46671
46266
|
if (filter === "all") return events2;
|
|
46672
46267
|
return events2.filter((e) => e.type === filter);
|
|
46673
46268
|
}, [events2, filter]);
|
|
@@ -46783,7 +46378,7 @@ var init_EventFlowTab = __esm({
|
|
|
46783
46378
|
});
|
|
46784
46379
|
function GuardsPanel({ guards }) {
|
|
46785
46380
|
const { t } = useTranslate();
|
|
46786
|
-
const [filter, setFilter] =
|
|
46381
|
+
const [filter, setFilter] = React74.useState("all");
|
|
46787
46382
|
if (guards.length === 0) {
|
|
46788
46383
|
return /* @__PURE__ */ jsx(
|
|
46789
46384
|
EmptyState,
|
|
@@ -46796,7 +46391,7 @@ function GuardsPanel({ guards }) {
|
|
|
46796
46391
|
}
|
|
46797
46392
|
const passedCount = guards.filter((g) => g.result).length;
|
|
46798
46393
|
const failedCount = guards.length - passedCount;
|
|
46799
|
-
const filteredGuards =
|
|
46394
|
+
const filteredGuards = React74.useMemo(() => {
|
|
46800
46395
|
if (filter === "all") return guards;
|
|
46801
46396
|
if (filter === "passed") return guards.filter((g) => g.result);
|
|
46802
46397
|
return guards.filter((g) => !g.result);
|
|
@@ -46959,10 +46554,10 @@ function EffectBadge({ effect }) {
|
|
|
46959
46554
|
}
|
|
46960
46555
|
function TransitionTimeline({ transitions }) {
|
|
46961
46556
|
const { t } = useTranslate();
|
|
46962
|
-
const containerRef =
|
|
46963
|
-
const [autoScroll, setAutoScroll] =
|
|
46964
|
-
const [expandedId, setExpandedId] =
|
|
46965
|
-
|
|
46557
|
+
const containerRef = React74.useRef(null);
|
|
46558
|
+
const [autoScroll, setAutoScroll] = React74.useState(true);
|
|
46559
|
+
const [expandedId, setExpandedId] = React74.useState(null);
|
|
46560
|
+
React74.useEffect(() => {
|
|
46966
46561
|
if (autoScroll && containerRef.current) {
|
|
46967
46562
|
containerRef.current.scrollTop = containerRef.current.scrollHeight;
|
|
46968
46563
|
}
|
|
@@ -47242,9 +46837,9 @@ function getAllEvents(traits2) {
|
|
|
47242
46837
|
function EventDispatcherTab({ traits: traits2, schema }) {
|
|
47243
46838
|
const eventBus = useEventBus();
|
|
47244
46839
|
const { t } = useTranslate();
|
|
47245
|
-
const [log18, setLog] =
|
|
47246
|
-
const prevStatesRef =
|
|
47247
|
-
|
|
46840
|
+
const [log18, setLog] = React74.useState([]);
|
|
46841
|
+
const prevStatesRef = React74.useRef(/* @__PURE__ */ new Map());
|
|
46842
|
+
React74.useEffect(() => {
|
|
47248
46843
|
for (const trait of traits2) {
|
|
47249
46844
|
const prev = prevStatesRef.current.get(trait.id);
|
|
47250
46845
|
if (prev && prev !== trait.currentState) {
|
|
@@ -47413,10 +47008,10 @@ function VerifyModePanel({
|
|
|
47413
47008
|
localCount
|
|
47414
47009
|
}) {
|
|
47415
47010
|
const { t } = useTranslate();
|
|
47416
|
-
const [expanded, setExpanded] =
|
|
47417
|
-
const scrollRef =
|
|
47418
|
-
const prevCountRef =
|
|
47419
|
-
|
|
47011
|
+
const [expanded, setExpanded] = React74.useState(true);
|
|
47012
|
+
const scrollRef = React74.useRef(null);
|
|
47013
|
+
const prevCountRef = React74.useRef(0);
|
|
47014
|
+
React74.useEffect(() => {
|
|
47420
47015
|
if (expanded && transitions.length > prevCountRef.current && scrollRef.current) {
|
|
47421
47016
|
scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
|
|
47422
47017
|
}
|
|
@@ -47473,10 +47068,10 @@ function RuntimeDebugger({
|
|
|
47473
47068
|
schema
|
|
47474
47069
|
}) {
|
|
47475
47070
|
const { t } = useTranslate();
|
|
47476
|
-
const [isCollapsed, setIsCollapsed] =
|
|
47477
|
-
const [isVisible, setIsVisible] =
|
|
47071
|
+
const [isCollapsed, setIsCollapsed] = React74.useState(mode === "verify" ? true : defaultCollapsed);
|
|
47072
|
+
const [isVisible, setIsVisible] = React74.useState(mode === "inline" || mode === "verify" || isDebugEnabled2());
|
|
47478
47073
|
const debugData = useDebugData();
|
|
47479
|
-
|
|
47074
|
+
React74.useEffect(() => {
|
|
47480
47075
|
if (mode === "inline") return;
|
|
47481
47076
|
return onDebugToggle((enabled) => {
|
|
47482
47077
|
setIsVisible(enabled);
|
|
@@ -47485,7 +47080,7 @@ function RuntimeDebugger({
|
|
|
47485
47080
|
}
|
|
47486
47081
|
});
|
|
47487
47082
|
}, [mode]);
|
|
47488
|
-
|
|
47083
|
+
React74.useEffect(() => {
|
|
47489
47084
|
if (mode === "inline") return;
|
|
47490
47085
|
const handleKeyDown = (e) => {
|
|
47491
47086
|
if (e.key === "`" && isVisible) {
|
|
@@ -48005,7 +47600,7 @@ var init_StatCard = __esm({
|
|
|
48005
47600
|
const labelToUse = propLabel ?? propTitle;
|
|
48006
47601
|
const eventBus = useEventBus();
|
|
48007
47602
|
const { t } = useTranslate();
|
|
48008
|
-
const handleActionClick =
|
|
47603
|
+
const handleActionClick = React74__default.useCallback(() => {
|
|
48009
47604
|
if (action?.event) {
|
|
48010
47605
|
eventBus.emit(`UI:${action.event}`, {});
|
|
48011
47606
|
}
|
|
@@ -48016,7 +47611,7 @@ var init_StatCard = __esm({
|
|
|
48016
47611
|
const data = Array.isArray(entity) ? entity : entity ? [entity] : [];
|
|
48017
47612
|
const isLoading = externalLoading ?? false;
|
|
48018
47613
|
const error = externalError;
|
|
48019
|
-
const computeMetricValue =
|
|
47614
|
+
const computeMetricValue = React74__default.useCallback(
|
|
48020
47615
|
(metric, items) => {
|
|
48021
47616
|
if (metric.value !== void 0) {
|
|
48022
47617
|
return metric.value;
|
|
@@ -48055,7 +47650,7 @@ var init_StatCard = __esm({
|
|
|
48055
47650
|
},
|
|
48056
47651
|
[]
|
|
48057
47652
|
);
|
|
48058
|
-
const schemaStats =
|
|
47653
|
+
const schemaStats = React74__default.useMemo(() => {
|
|
48059
47654
|
if (!metrics || metrics.length === 0) return null;
|
|
48060
47655
|
return metrics.map((metric) => ({
|
|
48061
47656
|
label: metric.label,
|
|
@@ -48063,7 +47658,7 @@ var init_StatCard = __esm({
|
|
|
48063
47658
|
format: metric.format
|
|
48064
47659
|
}));
|
|
48065
47660
|
}, [metrics, data, computeMetricValue]);
|
|
48066
|
-
const calculatedTrend =
|
|
47661
|
+
const calculatedTrend = React74__default.useMemo(() => {
|
|
48067
47662
|
if (manualTrend !== void 0) return manualTrend;
|
|
48068
47663
|
if (previousValue === void 0 || currentValue2 === void 0)
|
|
48069
47664
|
return void 0;
|
|
@@ -48703,8 +48298,8 @@ var init_SubagentTracePanel = __esm({
|
|
|
48703
48298
|
] });
|
|
48704
48299
|
};
|
|
48705
48300
|
InlineActivityStream = ({ activities, autoScroll = true, className }) => {
|
|
48706
|
-
const endRef =
|
|
48707
|
-
|
|
48301
|
+
const endRef = React74__default.useRef(null);
|
|
48302
|
+
React74__default.useEffect(() => {
|
|
48708
48303
|
if (!autoScroll) return;
|
|
48709
48304
|
endRef.current?.scrollIntoView({ behavior: "smooth", block: "end" });
|
|
48710
48305
|
}, [activities.length, autoScroll]);
|
|
@@ -48798,7 +48393,7 @@ var init_SubagentTracePanel = __esm({
|
|
|
48798
48393
|
};
|
|
48799
48394
|
SubagentRichCard = ({ subagent }) => {
|
|
48800
48395
|
const { t } = useTranslate();
|
|
48801
|
-
const activities =
|
|
48396
|
+
const activities = React74__default.useMemo(
|
|
48802
48397
|
() => subagentMessagesToActivities(subagent.messages),
|
|
48803
48398
|
[subagent.messages]
|
|
48804
48399
|
);
|
|
@@ -48875,8 +48470,8 @@ var init_SubagentTracePanel = __esm({
|
|
|
48875
48470
|
] });
|
|
48876
48471
|
};
|
|
48877
48472
|
CoordinatorConversation = ({ messages, autoScroll = true, className }) => {
|
|
48878
|
-
const endRef =
|
|
48879
|
-
|
|
48473
|
+
const endRef = React74__default.useRef(null);
|
|
48474
|
+
React74__default.useEffect(() => {
|
|
48880
48475
|
if (!autoScroll) return;
|
|
48881
48476
|
endRef.current?.scrollIntoView({ behavior: "smooth", block: "end" });
|
|
48882
48477
|
}, [messages.length, autoScroll]);
|
|
@@ -49306,7 +48901,7 @@ var init_Timeline = __esm({
|
|
|
49306
48901
|
}) => {
|
|
49307
48902
|
const { t } = useTranslate();
|
|
49308
48903
|
const entityData = entity ?? [];
|
|
49309
|
-
const items =
|
|
48904
|
+
const items = React74__default.useMemo(() => {
|
|
49310
48905
|
if (propItems) return propItems;
|
|
49311
48906
|
if (entityData.length === 0) return [];
|
|
49312
48907
|
return entityData.map((record, idx) => {
|
|
@@ -49408,7 +49003,7 @@ var init_Timeline = __esm({
|
|
|
49408
49003
|
}
|
|
49409
49004
|
});
|
|
49410
49005
|
function extractToastProps(children) {
|
|
49411
|
-
if (!
|
|
49006
|
+
if (!React74__default.isValidElement(children)) {
|
|
49412
49007
|
if (typeof children === "string") {
|
|
49413
49008
|
return { message: children };
|
|
49414
49009
|
}
|
|
@@ -49450,7 +49045,7 @@ var init_ToastSlot = __esm({
|
|
|
49450
49045
|
eventBus.emit(`${prefix}CLOSE`);
|
|
49451
49046
|
};
|
|
49452
49047
|
if (!isVisible) return null;
|
|
49453
|
-
const isCustomContent =
|
|
49048
|
+
const isCustomContent = React74__default.isValidElement(children) && !message;
|
|
49454
49049
|
return /* @__PURE__ */ jsx(Box, { className: "fixed bottom-4 right-4 z-50", children: isCustomContent ? children : /* @__PURE__ */ jsx(
|
|
49455
49050
|
Toast,
|
|
49456
49051
|
{
|
|
@@ -49467,7 +49062,7 @@ var init_ToastSlot = __esm({
|
|
|
49467
49062
|
}
|
|
49468
49063
|
});
|
|
49469
49064
|
function lazyThree(name, loader) {
|
|
49470
|
-
const Lazy =
|
|
49065
|
+
const Lazy = React74__default.lazy(
|
|
49471
49066
|
() => loader().then((m) => {
|
|
49472
49067
|
const Resolved = m[name];
|
|
49473
49068
|
if (!Resolved) {
|
|
@@ -49479,13 +49074,13 @@ function lazyThree(name, loader) {
|
|
|
49479
49074
|
})
|
|
49480
49075
|
);
|
|
49481
49076
|
function ThreeWrapper(props) {
|
|
49482
|
-
return
|
|
49077
|
+
return React74__default.createElement(
|
|
49483
49078
|
ThreeBoundary,
|
|
49484
49079
|
{ name },
|
|
49485
|
-
|
|
49486
|
-
|
|
49080
|
+
React74__default.createElement(
|
|
49081
|
+
React74__default.Suspense,
|
|
49487
49082
|
{ fallback: null },
|
|
49488
|
-
|
|
49083
|
+
React74__default.createElement(Lazy, props)
|
|
49489
49084
|
)
|
|
49490
49085
|
);
|
|
49491
49086
|
}
|
|
@@ -49527,7 +49122,6 @@ var init_component_registry_generated = __esm({
|
|
|
49527
49122
|
init_Canvas2D();
|
|
49528
49123
|
init_CanvasEffect();
|
|
49529
49124
|
init_Card();
|
|
49530
|
-
init_CardBattlerBoard();
|
|
49531
49125
|
init_CardGrid();
|
|
49532
49126
|
init_Carousel();
|
|
49533
49127
|
init_CaseStudyCard();
|
|
@@ -49758,13 +49352,12 @@ var init_component_registry_generated = __esm({
|
|
|
49758
49352
|
init_UploadDropZone();
|
|
49759
49353
|
init_VersionDiff();
|
|
49760
49354
|
init_ViolationAlert();
|
|
49761
|
-
init_VisualNovelBoard();
|
|
49762
49355
|
init_VoteStack();
|
|
49763
49356
|
init_WaypointMarker();
|
|
49764
49357
|
init_WizardContainer();
|
|
49765
49358
|
init_WizardNavigation();
|
|
49766
49359
|
init_WizardProgress();
|
|
49767
|
-
ThreeBoundary = class extends
|
|
49360
|
+
ThreeBoundary = class extends React74__default.Component {
|
|
49768
49361
|
constructor() {
|
|
49769
49362
|
super(...arguments);
|
|
49770
49363
|
__publicField(this, "state", { failed: false });
|
|
@@ -49774,7 +49367,7 @@ var init_component_registry_generated = __esm({
|
|
|
49774
49367
|
}
|
|
49775
49368
|
render() {
|
|
49776
49369
|
if (this.state.failed) {
|
|
49777
|
-
return
|
|
49370
|
+
return React74__default.createElement(
|
|
49778
49371
|
"div",
|
|
49779
49372
|
{
|
|
49780
49373
|
"data-testid": "three-unavailable",
|
|
@@ -49828,7 +49421,6 @@ var init_component_registry_generated = __esm({
|
|
|
49828
49421
|
"Canvas2D": Canvas2D,
|
|
49829
49422
|
"CanvasEffect": CanvasEffect,
|
|
49830
49423
|
"Card": Card,
|
|
49831
|
-
"CardBattlerBoard": CardBattlerBoard,
|
|
49832
49424
|
"CardGrid": CardGrid,
|
|
49833
49425
|
"Carousel": Carousel,
|
|
49834
49426
|
"CaseStudyCard": CaseStudyCard,
|
|
@@ -50073,7 +49665,6 @@ var init_component_registry_generated = __esm({
|
|
|
50073
49665
|
"VStack": VStack,
|
|
50074
49666
|
"VersionDiff": VersionDiff,
|
|
50075
49667
|
"ViolationAlert": ViolationAlert,
|
|
50076
|
-
"VisualNovelBoard": VisualNovelBoard,
|
|
50077
49668
|
"VoteStack": VoteStack,
|
|
50078
49669
|
"WaypointMarker": WaypointMarker,
|
|
50079
49670
|
"WizardContainer": WizardContainer,
|
|
@@ -50097,7 +49688,7 @@ function SuspenseConfigProvider({
|
|
|
50097
49688
|
config,
|
|
50098
49689
|
children
|
|
50099
49690
|
}) {
|
|
50100
|
-
return
|
|
49691
|
+
return React74__default.createElement(
|
|
50101
49692
|
SuspenseConfigContext.Provider,
|
|
50102
49693
|
{ value: config },
|
|
50103
49694
|
children
|
|
@@ -50139,7 +49730,7 @@ function enrichFormFields(fields, entityDef) {
|
|
|
50139
49730
|
}
|
|
50140
49731
|
return { name: field, label: field.replace(/([a-z])([A-Z])/g, "$1 $2").replace(/\b\w/g, (c) => c.toUpperCase()) };
|
|
50141
49732
|
}
|
|
50142
|
-
if (field && typeof field === "object" && !Array.isArray(field) && !
|
|
49733
|
+
if (field && typeof field === "object" && !Array.isArray(field) && !React74__default.isValidElement(field) && !(field instanceof Date)) {
|
|
50143
49734
|
const obj = field;
|
|
50144
49735
|
const fieldName = typeof obj.name === "string" ? obj.name : typeof obj.field === "string" ? obj.field : void 0;
|
|
50145
49736
|
if (!fieldName) return field;
|
|
@@ -50592,7 +50183,7 @@ function renderPatternChildren(children, onDismiss, parentId = "root", parentPat
|
|
|
50592
50183
|
const key = `${parentId}-${index}-trait:${traitName}`;
|
|
50593
50184
|
return /* @__PURE__ */ jsx(TraitFrame, { traitName }, key);
|
|
50594
50185
|
}
|
|
50595
|
-
return /* @__PURE__ */ jsx(
|
|
50186
|
+
return /* @__PURE__ */ jsx(React74__default.Fragment, { children: child }, `${parentId}-${index}`);
|
|
50596
50187
|
}
|
|
50597
50188
|
if (!child || typeof child !== "object") return null;
|
|
50598
50189
|
const childId = `${parentId}-${index}`;
|
|
@@ -50632,14 +50223,14 @@ function isPatternConfig(value) {
|
|
|
50632
50223
|
if (value === null || value === void 0) return false;
|
|
50633
50224
|
if (typeof value !== "object") return false;
|
|
50634
50225
|
if (Array.isArray(value)) return false;
|
|
50635
|
-
if (
|
|
50226
|
+
if (React74__default.isValidElement(value)) return false;
|
|
50636
50227
|
if (value instanceof Date) return false;
|
|
50637
50228
|
if (typeof value === "function") return false;
|
|
50638
50229
|
const record = value;
|
|
50639
50230
|
return "type" in record && typeof record.type === "string" && getComponentForPattern$1(record.type) !== null;
|
|
50640
50231
|
}
|
|
50641
50232
|
function isPlainConfigObject(value) {
|
|
50642
|
-
if (
|
|
50233
|
+
if (React74__default.isValidElement(value)) return false;
|
|
50643
50234
|
if (value instanceof Date) return false;
|
|
50644
50235
|
const proto = Object.getPrototypeOf(value);
|
|
50645
50236
|
return proto === Object.prototype || proto === null;
|
|
@@ -50765,7 +50356,7 @@ function SlotContentRenderer({
|
|
|
50765
50356
|
for (const slotKey of CONTENT_NODE_SLOTS) {
|
|
50766
50357
|
const slotVal = restProps[slotKey];
|
|
50767
50358
|
if (slotVal === void 0 || slotVal === null) continue;
|
|
50768
|
-
if (
|
|
50359
|
+
if (React74__default.isValidElement(slotVal) || typeof slotVal === "string" || typeof slotVal === "number" || typeof slotVal === "boolean") continue;
|
|
50769
50360
|
if (Array.isArray(slotVal) || typeof slotVal === "object" && "type" in slotVal) {
|
|
50770
50361
|
nodeSlotOverrides[slotKey] = renderPatternChildren(
|
|
50771
50362
|
slotVal,
|
|
@@ -50814,7 +50405,7 @@ function SlotContentRenderer({
|
|
|
50814
50405
|
const resolvedItems = Array.isArray(entityVal) && entityVal[0] !== "fn" ? entityVal : null;
|
|
50815
50406
|
if (resolvedItems && resolvedItems.length > 0 && !finalProps.fields && !finalProps.columns) {
|
|
50816
50407
|
const sample = resolvedItems[0];
|
|
50817
|
-
if (sample && typeof sample === "object" && !Array.isArray(sample) && !
|
|
50408
|
+
if (sample && typeof sample === "object" && !Array.isArray(sample) && !React74__default.isValidElement(sample) && !(sample instanceof Date)) {
|
|
50818
50409
|
const keys = Object.keys(sample).filter((k) => k !== "id" && k !== "_id");
|
|
50819
50410
|
finalProps.fields = keys.map((k, i) => ({ name: k, variant: i === 0 ? "h4" : "body" }));
|
|
50820
50411
|
}
|
|
@@ -53114,7 +52705,7 @@ var I18nContext = createContext({
|
|
|
53114
52705
|
});
|
|
53115
52706
|
I18nContext.displayName = "I18nContext";
|
|
53116
52707
|
var I18nProvider = I18nContext.Provider;
|
|
53117
|
-
function
|
|
52708
|
+
function useTranslate127() {
|
|
53118
52709
|
return useContext(I18nContext);
|
|
53119
52710
|
}
|
|
53120
52711
|
function createTranslate(messages) {
|
|
@@ -53315,4 +52906,4 @@ function useGitHubBranches(owner, repo, enabled = true) {
|
|
|
53315
52906
|
});
|
|
53316
52907
|
}
|
|
53317
52908
|
|
|
53318
|
-
export { ALL_PRESETS, ALMADAR_DND_MIME, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, ActionButton, Card2 as ActionCard, ActionPalette, ActionTile, ActivationBlock, Alert, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, Aside, AssetPicker, AuthLayout, Avatar, Badge, BehaviorView, BiologyCanvas, BloomQuizBlock, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, BranchingLogicBuilder, Breadcrumb, BuilderBoard, Button, ButtonGroup, CTABanner, CalendarGrid, Canvas2D, CanvasEffect, Card,
|
|
52909
|
+
export { ALL_PRESETS, ALMADAR_DND_MIME, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, ActionButton, Card2 as ActionCard, ActionPalette, ActionTile, ActivationBlock, Alert, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, Aside, AssetPicker, AuthLayout, Avatar, Badge, BehaviorView, BiologyCanvas, BloomQuizBlock, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, BranchingLogicBuilder, Breadcrumb, BuilderBoard, Button, ButtonGroup, CTABanner, CalendarGrid, Canvas2D, CanvasEffect, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, Center, Chart, ChartLegend, ChatBar, Checkbox, ChemistryCanvas, ChoiceButton, ClassifierBoard, Coachmark, CodeBlock, CodeRunnerPanel, CollapsibleSection, ComboCounter, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, ConnectionBlock, Container, ContentRenderer, ContentSection, ControlButton, ControlGrid, CounterTemplate, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, DEFAULT_SLOTS, DIAMOND_TOP_Y, DamageNumber, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, DateRangePicker, DateRangeSelector, DayCell, DebuggerBoard, DetailPanel, Dialog, DialogueBubble, Divider, DocBreadcrumb, DocPagination, DocSearch, DocSidebar, DocTOC, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, ELEMENT_SELECTED_EVENT, EMPTY_EFFECT_STATE, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmptyState, EntityDisplayEvents, ErrorBoundary, ErrorState, EventHandlerBoard, EventLog, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, GameAudioContext, GameAudioProvider, GameAudioToggle, GameCard, GameHud, GameIcon, GameMenu, GameShell, GameTemplate, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, GridPicker, HStack, Header, HealthBar, HeroOrganism, HeroSection, I18nProvider, IDENTITY_BOOK_FIELDS, Icon, IconPicker, InfiniteScrollSentinel, Input, InputGroup, InstallBox, InventoryGrid, ItemSlot, JazariStateMachine, JsonTreeEditor, Label, LandingPageTemplate, LawReferenceTooltip, LearningCanvas, Lightbox, LikertScale, LineChart2 as LineChart, List3 as List, LoadingState, MapView, MarkdownContent, MarketingFooter, MarketingStatCard, MasterDetail, MasterDetailLayout, MathCanvas, MatrixQuestion, MediaGallery, Menu, Meter, MiniMap, Modal, ModalSlot, ModuleCard, Navigation, NegotiatorBoard, NodeSlotEditor, NotifyListener, NumberStepper, ObjectRulePanel, OnboardingSpotlight, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, Pagination, PatternTile, PhysicsCanvas, Popover, PositionedCanvas, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PropertyInspector, PullQuote, PullToRefresh, QrScanner, QuizBlock, Radio, RangeSlider, ReflectionBlock, RelationSelect, RepeatableFormSection, ReplyTree, ResourceBar, ResourceCounter, RichBlockEditor, RuleEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreDisplay, SearchInput, Section, SectionHeader, SegmentRenderer, Select, SequenceBar, SequencerBoard, ServiceCatalog, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, SimulationCanvas, SimulationControls, SimulationGraph, SimulatorBoard, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, SplitSection, Sprite, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateArchitectBoard, StateIndicator, StateJsonView, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StatusEffect, StepFlow, StepFlowOrganism, SubagentTracePanel, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, TableView, Tabs, TagCloud, TagInput, TeamCard, TeamOrganism, TerrainPalette, TextHighlight, Textarea, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitFrame, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TurnIndicator, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UploadDropZone, VStack, VariablePanel, VersionDiff, ViolationAlert, VoteStack, WaypointMarker, WizardContainer, WizardNavigation, WizardProgress, boardEntity, bool, calculateAttackTargets, calculateValidMoves, cn, createCombatPresets, createInitialGameState, createTranslate, createUnitAnimationState, drawEffectState, drawSprite, drawTintedImage, getAllEffectSpriteUrls, getCurrentFrame, getTileDimensions, hasActiveEffects, inferDirection, isoToScreen, makeAsset, makeAssetMap, mapBookData, num, objAvailableActions, objAvailableEvents, objCurrentState, objIcon, objId, objMaxRules, objName, objRules, objStates, parseEditFocus, parseLessonSegments, parseMarkdownWithCodeBlocks, parseQueryBinding, pendulum, projectileMotion, resolveFieldMap, resolveFrame, resolveSheetDirection, rows, screenToIso, spawnOverlay, spawnParticles, spawnSequence, springOscillator, str, tickAnimationState, toCodeLanguage, transitionAnimation, unitHealth, unitPosition, unitTeam, updateEffectState, useAgentChat, useAnchorRect, useAuthContext, useCamera, useCanvasEffects, useCanvasGestures, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useDragReorder, useDraggable, useDropZone, useEmitEvent, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useGameAudio, useGameAudioContext, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useImageCache, useInfiniteScroll, useLongPress, useOrbitalHistory, usePreview, usePullToRefresh, useQuerySingleton, useRenderInterpolation, useSwipeGesture, useTapReveal, useTraitListens, useTranslate127 as useTranslate, useUIEvents, useUISlotManager, useUnitSpriteAtlas, useValidation, vec2 };
|