@almadar/ui 5.113.0 → 5.115.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 +240 -1055
- package/dist/avl/index.js +235 -1050
- package/dist/{cn-BkQrMR01.d.cts → cn-D3H9UzCW.d.cts} +1 -1
- package/dist/{cn-CTEFm9PC.d.ts → cn-Dm0VrLRG.d.ts} +1 -1
- package/dist/components/index.cjs +132 -680
- package/dist/components/index.d.cts +7 -3
- package/dist/components/index.d.ts +7 -3
- package/dist/components/index.js +131 -679
- package/dist/lib/drawable/three/index.cjs +58 -38
- package/dist/lib/drawable/three/index.d.cts +3 -2
- package/dist/lib/drawable/three/index.d.ts +3 -2
- package/dist/lib/drawable/three/index.js +58 -38
- package/dist/lib/index.d.cts +2 -2
- package/dist/lib/index.d.ts +2 -2
- package/dist/marketing/index.cjs +16 -637
- package/dist/marketing/index.js +16 -637
- package/dist/{paintDispatch-DR942knx.d.cts → paintDispatch-BXJgISot.d.cts} +2 -0
- package/dist/{paintDispatch-DR942knx.d.ts → paintDispatch-BXJgISot.d.ts} +2 -0
- package/dist/providers/index.cjs +132 -680
- package/dist/providers/index.js +131 -679
- package/dist/runtime/index.cjs +267 -1089
- package/dist/runtime/index.d.cts +11 -112
- package/dist/runtime/index.d.ts +11 -112
- package/dist/runtime/index.js +230 -1078
- package/package.json +3 -3
package/dist/runtime/index.cjs
CHANGED
|
@@ -11,6 +11,7 @@ var reactDom = require('react-dom');
|
|
|
11
11
|
var hooks = require('@almadar/ui/hooks');
|
|
12
12
|
var context = require('@almadar/ui/context');
|
|
13
13
|
var evaluator = require('@almadar/evaluator');
|
|
14
|
+
var ui = require('@almadar/runtime/ui');
|
|
14
15
|
var reactRouterDom = require('react-router-dom');
|
|
15
16
|
var ELK = require('elkjs/lib/elk.bundled.js');
|
|
16
17
|
var SyntaxHighlighter = require('react-syntax-highlighter/dist/esm/prism-light.js');
|
|
@@ -43,6 +44,7 @@ var utilities = require('@dnd-kit/utilities');
|
|
|
43
44
|
var react = require('@xyflow/react');
|
|
44
45
|
var patterns = require('@almadar/core/patterns');
|
|
45
46
|
var runtime = require('@almadar/runtime');
|
|
47
|
+
var registry = require('@almadar/std/registry');
|
|
46
48
|
var OrbitalServerRuntime = require('@almadar/runtime/OrbitalServerRuntime');
|
|
47
49
|
|
|
48
50
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -1062,41 +1064,6 @@ function kebabToPascal(name) {
|
|
|
1062
1064
|
return part.charAt(0).toUpperCase() + part.slice(1);
|
|
1063
1065
|
}).join("");
|
|
1064
1066
|
}
|
|
1065
|
-
function loadLib(key, importer) {
|
|
1066
|
-
let p = libPromises.get(key);
|
|
1067
|
-
if (!p) {
|
|
1068
|
-
p = importer();
|
|
1069
|
-
libPromises.set(key, p);
|
|
1070
|
-
}
|
|
1071
|
-
return p;
|
|
1072
|
-
}
|
|
1073
|
-
function lazyFamilyIcon(libKey, importer, pick, fallbackName, family) {
|
|
1074
|
-
const Lazy = React81__namespace.default.lazy(async () => {
|
|
1075
|
-
const lib = await loadLib(libKey, importer);
|
|
1076
|
-
const Comp = pick(lib);
|
|
1077
|
-
if (!Comp) {
|
|
1078
|
-
warnFallback(fallbackName, family);
|
|
1079
|
-
return { default: makeLucideAdapter(fallbackName, true) };
|
|
1080
|
-
}
|
|
1081
|
-
return { default: Comp };
|
|
1082
|
-
});
|
|
1083
|
-
const Wrapped = (props) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1084
|
-
React81__namespace.default.Suspense,
|
|
1085
|
-
{
|
|
1086
|
-
fallback: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1087
|
-
"span",
|
|
1088
|
-
{
|
|
1089
|
-
"aria-hidden": true,
|
|
1090
|
-
className: props.className,
|
|
1091
|
-
style: { display: "inline-block", ...props.style }
|
|
1092
|
-
}
|
|
1093
|
-
),
|
|
1094
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Lazy, { ...props })
|
|
1095
|
-
}
|
|
1096
|
-
);
|
|
1097
|
-
Wrapped.displayName = `Lazy.${libKey}.${fallbackName}`;
|
|
1098
|
-
return Wrapped;
|
|
1099
|
-
}
|
|
1100
1067
|
function isComponentLike(v) {
|
|
1101
1068
|
return v != null && (typeof v === "function" || typeof v === "object");
|
|
1102
1069
|
}
|
|
@@ -1110,146 +1077,32 @@ function resolveLucide(name) {
|
|
|
1110
1077
|
if (isComponentLike(asIs)) return asIs;
|
|
1111
1078
|
return LucideIcons2__namespace.HelpCircle;
|
|
1112
1079
|
}
|
|
1113
|
-
function
|
|
1114
|
-
const target = phosphorAliases[name] ?? kebabToPascal(name);
|
|
1115
|
-
return lazyFamilyIcon(
|
|
1116
|
-
"phosphor",
|
|
1117
|
-
() => import('@phosphor-icons/react'),
|
|
1118
|
-
(lib) => {
|
|
1119
|
-
const PhosphorComp = lib[target];
|
|
1120
|
-
if (!PhosphorComp) return null;
|
|
1121
|
-
const Component = PhosphorComp;
|
|
1122
|
-
const Adapter = (props) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1123
|
-
Component,
|
|
1124
|
-
{
|
|
1125
|
-
weight,
|
|
1126
|
-
className: props.className,
|
|
1127
|
-
style: props.style,
|
|
1128
|
-
size: props.size ?? "1em"
|
|
1129
|
-
}
|
|
1130
|
-
);
|
|
1131
|
-
Adapter.displayName = `Phosphor.${target}.${weight}`;
|
|
1132
|
-
return Adapter;
|
|
1133
|
-
},
|
|
1134
|
-
name,
|
|
1135
|
-
family
|
|
1136
|
-
);
|
|
1137
|
-
}
|
|
1138
|
-
function resolveTabler(name, family) {
|
|
1139
|
-
const suffix = tablerAliases[name] ?? kebabToPascal(name);
|
|
1140
|
-
const target = `Icon${suffix}`;
|
|
1141
|
-
return lazyFamilyIcon(
|
|
1142
|
-
"tabler",
|
|
1143
|
-
() => import('@tabler/icons-react'),
|
|
1144
|
-
(lib) => {
|
|
1145
|
-
const TablerComp = lib[target];
|
|
1146
|
-
if (!TablerComp) return null;
|
|
1147
|
-
const Component = TablerComp;
|
|
1148
|
-
const Adapter = (props) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1149
|
-
Component,
|
|
1150
|
-
{
|
|
1151
|
-
stroke: props.strokeWidth ?? 1.5,
|
|
1152
|
-
className: props.className,
|
|
1153
|
-
style: props.style,
|
|
1154
|
-
size: props.size ?? 24
|
|
1155
|
-
}
|
|
1156
|
-
);
|
|
1157
|
-
Adapter.displayName = `Tabler.${target}`;
|
|
1158
|
-
return Adapter;
|
|
1159
|
-
},
|
|
1160
|
-
name,
|
|
1161
|
-
family
|
|
1162
|
-
);
|
|
1163
|
-
}
|
|
1164
|
-
function resolveFa(name, family) {
|
|
1165
|
-
const suffix = faAliases[name] ?? kebabToPascal(name);
|
|
1166
|
-
const target = `Fa${suffix}`;
|
|
1167
|
-
return lazyFamilyIcon(
|
|
1168
|
-
"fa",
|
|
1169
|
-
() => import('react-icons/fa'),
|
|
1170
|
-
(lib) => {
|
|
1171
|
-
const FaComp = lib[target];
|
|
1172
|
-
if (!FaComp) return null;
|
|
1173
|
-
const Component = FaComp;
|
|
1174
|
-
const Adapter = (props) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1175
|
-
Component,
|
|
1176
|
-
{
|
|
1177
|
-
className: props.className,
|
|
1178
|
-
style: props.style,
|
|
1179
|
-
size: props.size ?? "1em"
|
|
1180
|
-
}
|
|
1181
|
-
);
|
|
1182
|
-
Adapter.displayName = `Fa.${target}`;
|
|
1183
|
-
return Adapter;
|
|
1184
|
-
},
|
|
1185
|
-
name,
|
|
1186
|
-
family
|
|
1187
|
-
);
|
|
1188
|
-
}
|
|
1189
|
-
function warnFallback(name, family) {
|
|
1190
|
-
const key = `${family}::${name}`;
|
|
1191
|
-
if (warned.has(key)) return;
|
|
1192
|
-
warned.add(key);
|
|
1193
|
-
if (typeof console !== "undefined") {
|
|
1194
|
-
console.warn(
|
|
1195
|
-
`[iconFamily] No '${name}' mapping in family '${family}'; falling back to lucide. Add an alias in lib/iconFamily.ts.`
|
|
1196
|
-
);
|
|
1197
|
-
}
|
|
1198
|
-
}
|
|
1199
|
-
function makeLucideAdapter(name, isFallback = false) {
|
|
1080
|
+
function makeLucideAdapter(name) {
|
|
1200
1081
|
const LucideComp = resolveLucide(name);
|
|
1201
|
-
const Adapter = (props) =>
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
}
|
|
1212
|
-
);
|
|
1213
|
-
};
|
|
1214
|
-
Adapter.displayName = `Lucide.${name}${isFallback ? ".fallback" : ""}`;
|
|
1082
|
+
const Adapter = (props) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1083
|
+
LucideComp,
|
|
1084
|
+
{
|
|
1085
|
+
className: props.className,
|
|
1086
|
+
strokeWidth: props.strokeWidth,
|
|
1087
|
+
style: props.style,
|
|
1088
|
+
size: props.size
|
|
1089
|
+
}
|
|
1090
|
+
);
|
|
1091
|
+
Adapter.displayName = `Lucide.${name}`;
|
|
1215
1092
|
return Adapter;
|
|
1216
1093
|
}
|
|
1217
|
-
function resolveIconForFamily(name,
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
// Non-lucide families resolve to a lazy, Suspense-wrapped component that
|
|
1222
|
-
// dynamic-imports the library on first render and falls back to lucide
|
|
1223
|
-
// internally when the family lacks the icon (see lazyFamilyIcon).
|
|
1224
|
-
case "phosphor-outline":
|
|
1225
|
-
return resolvePhosphor(name, "regular", family);
|
|
1226
|
-
case "phosphor-fill":
|
|
1227
|
-
return resolvePhosphor(name, "fill", family);
|
|
1228
|
-
case "phosphor-duotone":
|
|
1229
|
-
return resolvePhosphor(name, "duotone", family);
|
|
1230
|
-
case "tabler":
|
|
1231
|
-
return resolveTabler(name, family);
|
|
1232
|
-
case "fa-solid":
|
|
1233
|
-
return resolveFa(name, family);
|
|
1234
|
-
}
|
|
1235
|
-
}
|
|
1236
|
-
var DEFAULT_FAMILY, VALID_FAMILIES, cachedFamily, listeners, observer, libPromises, lucideAliases, phosphorAliases, tablerAliases, faAliases, warned;
|
|
1094
|
+
function resolveIconForFamily(name, _family) {
|
|
1095
|
+
return makeLucideAdapter(name);
|
|
1096
|
+
}
|
|
1097
|
+
var DEFAULT_FAMILY, VALID_FAMILIES, cachedFamily, listeners, observer, lucideAliases;
|
|
1237
1098
|
var init_iconFamily = __esm({
|
|
1238
1099
|
"lib/iconFamily.tsx"() {
|
|
1239
1100
|
"use client";
|
|
1240
1101
|
DEFAULT_FAMILY = "lucide";
|
|
1241
|
-
VALID_FAMILIES = [
|
|
1242
|
-
"lucide",
|
|
1243
|
-
"phosphor-outline",
|
|
1244
|
-
"phosphor-fill",
|
|
1245
|
-
"phosphor-duotone",
|
|
1246
|
-
"tabler",
|
|
1247
|
-
"fa-solid"
|
|
1248
|
-
];
|
|
1102
|
+
VALID_FAMILIES = [DEFAULT_FAMILY];
|
|
1249
1103
|
cachedFamily = null;
|
|
1250
1104
|
listeners = /* @__PURE__ */ new Set();
|
|
1251
1105
|
observer = null;
|
|
1252
|
-
libPromises = /* @__PURE__ */ new Map();
|
|
1253
1106
|
lucideAliases = {
|
|
1254
1107
|
close: LucideIcons2__namespace.X,
|
|
1255
1108
|
trash: LucideIcons2__namespace.Trash2,
|
|
@@ -1262,478 +1115,6 @@ var init_iconFamily = __esm({
|
|
|
1262
1115
|
"sort-asc": LucideIcons2__namespace.ArrowUpNarrowWide,
|
|
1263
1116
|
"sort-desc": LucideIcons2__namespace.ArrowDownNarrowWide
|
|
1264
1117
|
};
|
|
1265
|
-
phosphorAliases = {
|
|
1266
|
-
// lucide name → phosphor PascalCase name
|
|
1267
|
-
// Actions
|
|
1268
|
-
plus: "Plus",
|
|
1269
|
-
minus: "Minus",
|
|
1270
|
-
x: "X",
|
|
1271
|
-
check: "Check",
|
|
1272
|
-
close: "X",
|
|
1273
|
-
edit: "PencilSimple",
|
|
1274
|
-
pencil: "PencilSimple",
|
|
1275
|
-
trash: "Trash",
|
|
1276
|
-
save: "FloppyDisk",
|
|
1277
|
-
copy: "Copy",
|
|
1278
|
-
share: "Share",
|
|
1279
|
-
send: "PaperPlaneRight",
|
|
1280
|
-
download: "DownloadSimple",
|
|
1281
|
-
upload: "UploadSimple",
|
|
1282
|
-
archive: "Archive",
|
|
1283
|
-
refresh: "ArrowsClockwise",
|
|
1284
|
-
loader: "CircleNotch",
|
|
1285
|
-
link: "Link",
|
|
1286
|
-
paperclip: "Paperclip",
|
|
1287
|
-
// Navigation
|
|
1288
|
-
"chevron-down": "CaretDown",
|
|
1289
|
-
"chevron-up": "CaretUp",
|
|
1290
|
-
"chevron-left": "CaretLeft",
|
|
1291
|
-
"chevron-right": "CaretRight",
|
|
1292
|
-
"arrow-up": "ArrowUp",
|
|
1293
|
-
"arrow-down": "ArrowDown",
|
|
1294
|
-
"arrow-left": "ArrowLeft",
|
|
1295
|
-
"arrow-right": "ArrowRight",
|
|
1296
|
-
menu: "List",
|
|
1297
|
-
more: "DotsThree",
|
|
1298
|
-
"more-vertical": "DotsThreeVertical",
|
|
1299
|
-
"more-horizontal": "DotsThree",
|
|
1300
|
-
external: "ArrowSquareOut",
|
|
1301
|
-
"external-link": "ArrowSquareOut",
|
|
1302
|
-
// Files
|
|
1303
|
-
file: "File",
|
|
1304
|
-
"file-text": "FileText",
|
|
1305
|
-
"file-plus": "FilePlus",
|
|
1306
|
-
"file-minus": "FileMinus",
|
|
1307
|
-
folder: "Folder",
|
|
1308
|
-
"folder-open": "FolderOpen",
|
|
1309
|
-
document: "FileText",
|
|
1310
|
-
// Charts
|
|
1311
|
-
"bar-chart": "ChartBar",
|
|
1312
|
-
"bar-chart-2": "ChartBar",
|
|
1313
|
-
"bar-chart-3": "ChartBar",
|
|
1314
|
-
"line-chart": "ChartLine",
|
|
1315
|
-
"pie-chart": "ChartPie",
|
|
1316
|
-
activity: "Pulse",
|
|
1317
|
-
"trending-up": "TrendUp",
|
|
1318
|
-
"trending-down": "TrendDown",
|
|
1319
|
-
// Messages
|
|
1320
|
-
message: "ChatCircle",
|
|
1321
|
-
"message-circle": "ChatCircle",
|
|
1322
|
-
"message-square": "ChatText",
|
|
1323
|
-
"messages-square": "ChatsCircle",
|
|
1324
|
-
comment: "ChatCircle",
|
|
1325
|
-
comments: "ChatsCircle",
|
|
1326
|
-
inbox: "Tray",
|
|
1327
|
-
mail: "Envelope",
|
|
1328
|
-
envelope: "Envelope",
|
|
1329
|
-
// Status
|
|
1330
|
-
"alert-circle": "WarningCircle",
|
|
1331
|
-
"alert-triangle": "Warning",
|
|
1332
|
-
"check-circle": "CheckCircle",
|
|
1333
|
-
"x-circle": "XCircle",
|
|
1334
|
-
info: "Info",
|
|
1335
|
-
"help-circle": "Question",
|
|
1336
|
-
"life-buoy": "Lifebuoy",
|
|
1337
|
-
lifebuoy: "Lifebuoy",
|
|
1338
|
-
warning: "Warning",
|
|
1339
|
-
error: "WarningCircle",
|
|
1340
|
-
// Media
|
|
1341
|
-
image: "Image",
|
|
1342
|
-
video: "VideoCamera",
|
|
1343
|
-
film: "FilmStrip",
|
|
1344
|
-
camera: "Camera",
|
|
1345
|
-
music: "MusicNote",
|
|
1346
|
-
play: "Play",
|
|
1347
|
-
pause: "Pause",
|
|
1348
|
-
stop: "Stop",
|
|
1349
|
-
"skip-forward": "SkipForward",
|
|
1350
|
-
"skip-back": "SkipBack",
|
|
1351
|
-
volume: "SpeakerHigh",
|
|
1352
|
-
"volume-2": "SpeakerHigh",
|
|
1353
|
-
"volume-x": "SpeakerX",
|
|
1354
|
-
mic: "Microphone",
|
|
1355
|
-
"mic-off": "MicrophoneSlash",
|
|
1356
|
-
// People
|
|
1357
|
-
user: "User",
|
|
1358
|
-
users: "Users",
|
|
1359
|
-
"user-plus": "UserPlus",
|
|
1360
|
-
"user-check": "UserCheck",
|
|
1361
|
-
// Time
|
|
1362
|
-
calendar: "Calendar",
|
|
1363
|
-
clock: "Clock",
|
|
1364
|
-
timer: "Timer",
|
|
1365
|
-
// Location
|
|
1366
|
-
map: "MapTrifold",
|
|
1367
|
-
"map-pin": "MapPin",
|
|
1368
|
-
navigation: "NavigationArrow",
|
|
1369
|
-
compass: "Compass",
|
|
1370
|
-
globe: "Globe",
|
|
1371
|
-
target: "Target",
|
|
1372
|
-
// Project / layout
|
|
1373
|
-
kanban: "Kanban",
|
|
1374
|
-
list: "List",
|
|
1375
|
-
table: "Table",
|
|
1376
|
-
grid: "GridFour",
|
|
1377
|
-
layout: "Layout",
|
|
1378
|
-
columns: "Columns",
|
|
1379
|
-
rows: "Rows",
|
|
1380
|
-
// Misc
|
|
1381
|
-
bell: "Bell",
|
|
1382
|
-
bookmark: "Bookmark",
|
|
1383
|
-
briefcase: "Briefcase",
|
|
1384
|
-
flag: "Flag",
|
|
1385
|
-
tag: "Tag",
|
|
1386
|
-
tags: "Tag",
|
|
1387
|
-
star: "Star",
|
|
1388
|
-
heart: "Heart",
|
|
1389
|
-
home: "House",
|
|
1390
|
-
settings: "Gear",
|
|
1391
|
-
eye: "Eye",
|
|
1392
|
-
"eye-off": "EyeSlash",
|
|
1393
|
-
lock: "Lock",
|
|
1394
|
-
unlock: "LockOpen",
|
|
1395
|
-
key: "Key",
|
|
1396
|
-
shield: "Shield",
|
|
1397
|
-
search: "MagnifyingGlass",
|
|
1398
|
-
filter: "Funnel",
|
|
1399
|
-
"sort-asc": "SortAscending",
|
|
1400
|
-
"sort-desc": "SortDescending",
|
|
1401
|
-
zap: "Lightning",
|
|
1402
|
-
sparkles: "Sparkle",
|
|
1403
|
-
// Code
|
|
1404
|
-
code: "Code",
|
|
1405
|
-
terminal: "Terminal",
|
|
1406
|
-
database: "Database",
|
|
1407
|
-
server: "HardDrives",
|
|
1408
|
-
cloud: "Cloud",
|
|
1409
|
-
wifi: "WifiHigh",
|
|
1410
|
-
package: "Package",
|
|
1411
|
-
box: "Package",
|
|
1412
|
-
// Theme
|
|
1413
|
-
sun: "Sun",
|
|
1414
|
-
moon: "Moon",
|
|
1415
|
-
// Phone
|
|
1416
|
-
phone: "Phone",
|
|
1417
|
-
printer: "Printer",
|
|
1418
|
-
// Hierarchy
|
|
1419
|
-
tree: "Tree",
|
|
1420
|
-
network: "Network"
|
|
1421
|
-
};
|
|
1422
|
-
tablerAliases = {
|
|
1423
|
-
// lucide name → tabler suffix (after the `Icon` prefix)
|
|
1424
|
-
// Actions
|
|
1425
|
-
plus: "Plus",
|
|
1426
|
-
minus: "Minus",
|
|
1427
|
-
x: "X",
|
|
1428
|
-
check: "Check",
|
|
1429
|
-
close: "X",
|
|
1430
|
-
edit: "Pencil",
|
|
1431
|
-
pencil: "Pencil",
|
|
1432
|
-
trash: "Trash",
|
|
1433
|
-
save: "DeviceFloppy",
|
|
1434
|
-
copy: "Copy",
|
|
1435
|
-
share: "Share",
|
|
1436
|
-
send: "Send",
|
|
1437
|
-
download: "Download",
|
|
1438
|
-
upload: "Upload",
|
|
1439
|
-
archive: "Archive",
|
|
1440
|
-
refresh: "Refresh",
|
|
1441
|
-
loader: "Loader2",
|
|
1442
|
-
link: "Link",
|
|
1443
|
-
paperclip: "Paperclip",
|
|
1444
|
-
external: "ExternalLink",
|
|
1445
|
-
"external-link": "ExternalLink",
|
|
1446
|
-
// Navigation
|
|
1447
|
-
"chevron-down": "ChevronDown",
|
|
1448
|
-
"chevron-up": "ChevronUp",
|
|
1449
|
-
"chevron-left": "ChevronLeft",
|
|
1450
|
-
"chevron-right": "ChevronRight",
|
|
1451
|
-
"arrow-down": "ArrowDown",
|
|
1452
|
-
"arrow-up": "ArrowUp",
|
|
1453
|
-
"arrow-left": "ArrowLeft",
|
|
1454
|
-
"arrow-right": "ArrowRight",
|
|
1455
|
-
menu: "Menu2",
|
|
1456
|
-
more: "Dots",
|
|
1457
|
-
"more-vertical": "DotsVertical",
|
|
1458
|
-
// Files
|
|
1459
|
-
file: "File",
|
|
1460
|
-
"file-text": "FileText",
|
|
1461
|
-
"file-plus": "FilePlus",
|
|
1462
|
-
"file-check": "FileCheck",
|
|
1463
|
-
"file-minus": "FileMinus",
|
|
1464
|
-
folder: "Folder",
|
|
1465
|
-
"folder-open": "FolderOpen",
|
|
1466
|
-
document: "FileText",
|
|
1467
|
-
// Charts
|
|
1468
|
-
"bar-chart": "ChartBar",
|
|
1469
|
-
"bar-chart-2": "ChartBar",
|
|
1470
|
-
"bar-chart-3": "ChartBar",
|
|
1471
|
-
"line-chart": "ChartLine",
|
|
1472
|
-
"pie-chart": "ChartPie",
|
|
1473
|
-
activity: "Activity",
|
|
1474
|
-
"trending-up": "TrendingUp",
|
|
1475
|
-
"trending-down": "TrendingDown",
|
|
1476
|
-
// Messages
|
|
1477
|
-
message: "Message",
|
|
1478
|
-
"message-circle": "MessageCircle",
|
|
1479
|
-
"message-square": "Message2",
|
|
1480
|
-
"messages-square": "Messages",
|
|
1481
|
-
comment: "Message",
|
|
1482
|
-
comments: "Messages",
|
|
1483
|
-
inbox: "Inbox",
|
|
1484
|
-
mail: "Mail",
|
|
1485
|
-
envelope: "Mail",
|
|
1486
|
-
// Status
|
|
1487
|
-
"alert-circle": "AlertCircle",
|
|
1488
|
-
"alert-triangle": "AlertTriangle",
|
|
1489
|
-
"check-circle": "CircleCheck",
|
|
1490
|
-
"x-circle": "CircleX",
|
|
1491
|
-
info: "InfoCircle",
|
|
1492
|
-
"help-circle": "HelpCircle",
|
|
1493
|
-
"life-buoy": "Lifebuoy",
|
|
1494
|
-
warning: "AlertTriangle",
|
|
1495
|
-
error: "AlertOctagon",
|
|
1496
|
-
// Media
|
|
1497
|
-
image: "Photo",
|
|
1498
|
-
video: "Video",
|
|
1499
|
-
camera: "Camera",
|
|
1500
|
-
music: "Music",
|
|
1501
|
-
play: "PlayerPlay",
|
|
1502
|
-
pause: "PlayerPause",
|
|
1503
|
-
stop: "PlayerStop",
|
|
1504
|
-
"skip-forward": "PlayerSkipForward",
|
|
1505
|
-
"skip-back": "PlayerSkipBack",
|
|
1506
|
-
volume: "Volume",
|
|
1507
|
-
"volume-2": "Volume",
|
|
1508
|
-
"volume-x": "VolumeOff",
|
|
1509
|
-
mic: "Microphone",
|
|
1510
|
-
"mic-off": "MicrophoneOff",
|
|
1511
|
-
// People
|
|
1512
|
-
user: "User",
|
|
1513
|
-
users: "Users",
|
|
1514
|
-
"user-plus": "UserPlus",
|
|
1515
|
-
"user-check": "UserCheck",
|
|
1516
|
-
// Time
|
|
1517
|
-
calendar: "Calendar",
|
|
1518
|
-
clock: "Clock",
|
|
1519
|
-
timer: "Hourglass",
|
|
1520
|
-
// Location
|
|
1521
|
-
map: "Map",
|
|
1522
|
-
"map-pin": "MapPin",
|
|
1523
|
-
navigation: "Navigation",
|
|
1524
|
-
compass: "Compass",
|
|
1525
|
-
globe: "World",
|
|
1526
|
-
target: "Target",
|
|
1527
|
-
// Project / layout
|
|
1528
|
-
kanban: "LayoutKanban",
|
|
1529
|
-
list: "List",
|
|
1530
|
-
table: "Table",
|
|
1531
|
-
grid: "LayoutGrid",
|
|
1532
|
-
layout: "Layout",
|
|
1533
|
-
columns: "LayoutColumns",
|
|
1534
|
-
rows: "LayoutRows",
|
|
1535
|
-
// Misc
|
|
1536
|
-
bell: "Bell",
|
|
1537
|
-
bookmark: "Bookmark",
|
|
1538
|
-
briefcase: "Briefcase",
|
|
1539
|
-
flag: "Flag",
|
|
1540
|
-
tag: "Tag",
|
|
1541
|
-
tags: "Tags",
|
|
1542
|
-
star: "Star",
|
|
1543
|
-
heart: "Heart",
|
|
1544
|
-
home: "Home",
|
|
1545
|
-
settings: "Settings",
|
|
1546
|
-
eye: "Eye",
|
|
1547
|
-
"eye-off": "EyeOff",
|
|
1548
|
-
lock: "Lock",
|
|
1549
|
-
unlock: "LockOpen",
|
|
1550
|
-
key: "Key",
|
|
1551
|
-
shield: "Shield",
|
|
1552
|
-
search: "Search",
|
|
1553
|
-
filter: "Filter",
|
|
1554
|
-
"sort-asc": "SortAscending",
|
|
1555
|
-
"sort-desc": "SortDescending",
|
|
1556
|
-
zap: "Bolt",
|
|
1557
|
-
sparkles: "Sparkles",
|
|
1558
|
-
// Code / data
|
|
1559
|
-
code: "Code",
|
|
1560
|
-
terminal: "Terminal",
|
|
1561
|
-
database: "Database",
|
|
1562
|
-
server: "Server",
|
|
1563
|
-
cloud: "Cloud",
|
|
1564
|
-
wifi: "Wifi",
|
|
1565
|
-
package: "Package",
|
|
1566
|
-
box: "Box",
|
|
1567
|
-
// Theme
|
|
1568
|
-
sun: "Sun",
|
|
1569
|
-
moon: "Moon",
|
|
1570
|
-
// Phone
|
|
1571
|
-
phone: "Phone",
|
|
1572
|
-
printer: "Printer",
|
|
1573
|
-
// Hierarchy
|
|
1574
|
-
tree: "Hierarchy",
|
|
1575
|
-
network: "Network"
|
|
1576
|
-
};
|
|
1577
|
-
faAliases = {
|
|
1578
|
-
// lucide name → fa-solid suffix (after the `Fa` prefix).
|
|
1579
|
-
// react-icons/fa ships FontAwesome 5 — names like `FaFileText` don't exist
|
|
1580
|
-
// (FA renamed to `FaFileAlt`). When you see a console.warn from
|
|
1581
|
-
// [iconFamily] about an unmapped lucide name in this family, add the
|
|
1582
|
-
// closest FA5 sibling here so the fallback stays in-family.
|
|
1583
|
-
search: "Search",
|
|
1584
|
-
close: "Times",
|
|
1585
|
-
x: "Times",
|
|
1586
|
-
loader: "Spinner",
|
|
1587
|
-
refresh: "Sync",
|
|
1588
|
-
"sort-asc": "SortAmountUp",
|
|
1589
|
-
"sort-desc": "SortAmountDown",
|
|
1590
|
-
"chevron-down": "ChevronDown",
|
|
1591
|
-
"chevron-up": "ChevronUp",
|
|
1592
|
-
"chevron-left": "ChevronLeft",
|
|
1593
|
-
"chevron-right": "ChevronRight",
|
|
1594
|
-
"help-circle": "QuestionCircle",
|
|
1595
|
-
"alert-triangle": "ExclamationTriangle",
|
|
1596
|
-
"alert-circle": "ExclamationCircle",
|
|
1597
|
-
"check-circle": "CheckCircle",
|
|
1598
|
-
"x-circle": "TimesCircle",
|
|
1599
|
-
edit: "Edit",
|
|
1600
|
-
pencil: "PencilAlt",
|
|
1601
|
-
trash: "Trash",
|
|
1602
|
-
send: "PaperPlane",
|
|
1603
|
-
share: "ShareAlt",
|
|
1604
|
-
external: "ExternalLinkAlt",
|
|
1605
|
-
plus: "Plus",
|
|
1606
|
-
minus: "Minus",
|
|
1607
|
-
check: "Check",
|
|
1608
|
-
star: "Star",
|
|
1609
|
-
heart: "Heart",
|
|
1610
|
-
home: "Home",
|
|
1611
|
-
user: "User",
|
|
1612
|
-
users: "Users",
|
|
1613
|
-
"user-plus": "UserPlus",
|
|
1614
|
-
"user-check": "UserCheck",
|
|
1615
|
-
settings: "Cog",
|
|
1616
|
-
menu: "Bars",
|
|
1617
|
-
"arrow-up": "ArrowUp",
|
|
1618
|
-
"arrow-down": "ArrowDown",
|
|
1619
|
-
"arrow-left": "ArrowLeft",
|
|
1620
|
-
"arrow-right": "ArrowRight",
|
|
1621
|
-
copy: "Copy",
|
|
1622
|
-
download: "Download",
|
|
1623
|
-
upload: "Upload",
|
|
1624
|
-
filter: "Filter",
|
|
1625
|
-
calendar: "Calendar",
|
|
1626
|
-
clock: "Clock",
|
|
1627
|
-
bell: "Bell",
|
|
1628
|
-
mail: "Envelope",
|
|
1629
|
-
envelope: "Envelope",
|
|
1630
|
-
lock: "Lock",
|
|
1631
|
-
unlock: "LockOpen",
|
|
1632
|
-
eye: "Eye",
|
|
1633
|
-
"eye-off": "EyeSlash",
|
|
1634
|
-
more: "EllipsisH",
|
|
1635
|
-
"more-vertical": "EllipsisV",
|
|
1636
|
-
info: "InfoCircle",
|
|
1637
|
-
warning: "ExclamationTriangle",
|
|
1638
|
-
error: "ExclamationCircle",
|
|
1639
|
-
// Time
|
|
1640
|
-
timer: "Hourglass",
|
|
1641
|
-
// Files (FA renamed FileText → FileAlt)
|
|
1642
|
-
file: "File",
|
|
1643
|
-
"file-text": "FileAlt",
|
|
1644
|
-
"file-plus": "FileMedical",
|
|
1645
|
-
"file-minus": "FileExcel",
|
|
1646
|
-
"file-check": "FileSignature",
|
|
1647
|
-
document: "FileAlt",
|
|
1648
|
-
// Charts (lucide BarChart2 / BarChart3 → FA ChartBar)
|
|
1649
|
-
"bar-chart": "ChartBar",
|
|
1650
|
-
"bar-chart-2": "ChartBar",
|
|
1651
|
-
"bar-chart-3": "ChartBar",
|
|
1652
|
-
"line-chart": "ChartLine",
|
|
1653
|
-
"pie-chart": "ChartPie",
|
|
1654
|
-
activity: "ChartLine",
|
|
1655
|
-
"trending-up": "ChartLine",
|
|
1656
|
-
"trending-down": "ChartLine",
|
|
1657
|
-
// Messages (lucide MessageCircle/MessageSquare → FA CommentDots/CommentAlt)
|
|
1658
|
-
message: "Comment",
|
|
1659
|
-
"message-circle": "CommentDots",
|
|
1660
|
-
"message-square": "CommentAlt",
|
|
1661
|
-
"messages-square": "Comments",
|
|
1662
|
-
comment: "Comment",
|
|
1663
|
-
comments: "Comments",
|
|
1664
|
-
inbox: "Inbox",
|
|
1665
|
-
// Support / help
|
|
1666
|
-
"life-buoy": "LifeRing",
|
|
1667
|
-
lifebuoy: "LifeRing",
|
|
1668
|
-
// Project / kanban (FA has no kanban; closest semantic is Tasks/Columns)
|
|
1669
|
-
kanban: "Tasks",
|
|
1670
|
-
columns: "Columns",
|
|
1671
|
-
rows: "Bars",
|
|
1672
|
-
layout: "ThLarge",
|
|
1673
|
-
grid: "Th",
|
|
1674
|
-
list: "List",
|
|
1675
|
-
table: "Table",
|
|
1676
|
-
// Storage / folders
|
|
1677
|
-
folder: "Folder",
|
|
1678
|
-
"folder-open": "FolderOpen",
|
|
1679
|
-
archive: "Archive",
|
|
1680
|
-
bookmark: "Bookmark",
|
|
1681
|
-
briefcase: "Briefcase",
|
|
1682
|
-
package: "Box",
|
|
1683
|
-
box: "Box",
|
|
1684
|
-
// Map / location
|
|
1685
|
-
map: "Map",
|
|
1686
|
-
"map-pin": "MapMarkerAlt",
|
|
1687
|
-
navigation: "LocationArrow",
|
|
1688
|
-
compass: "Compass",
|
|
1689
|
-
globe: "Globe",
|
|
1690
|
-
target: "Bullseye",
|
|
1691
|
-
// Media
|
|
1692
|
-
image: "Image",
|
|
1693
|
-
video: "Video",
|
|
1694
|
-
film: "Film",
|
|
1695
|
-
camera: "Camera",
|
|
1696
|
-
music: "Music",
|
|
1697
|
-
play: "Play",
|
|
1698
|
-
pause: "Pause",
|
|
1699
|
-
stop: "Stop",
|
|
1700
|
-
"skip-forward": "Forward",
|
|
1701
|
-
"skip-back": "Backward",
|
|
1702
|
-
volume: "VolumeUp",
|
|
1703
|
-
"volume-2": "VolumeUp",
|
|
1704
|
-
"volume-x": "VolumeMute",
|
|
1705
|
-
mic: "Microphone",
|
|
1706
|
-
"mic-off": "MicrophoneSlash",
|
|
1707
|
-
phone: "Phone",
|
|
1708
|
-
// Code / data
|
|
1709
|
-
code: "Code",
|
|
1710
|
-
terminal: "Terminal",
|
|
1711
|
-
database: "Database",
|
|
1712
|
-
server: "Server",
|
|
1713
|
-
cloud: "Cloud",
|
|
1714
|
-
wifi: "Wifi",
|
|
1715
|
-
// Security
|
|
1716
|
-
shield: "ShieldAlt",
|
|
1717
|
-
key: "Key",
|
|
1718
|
-
// Misc actions
|
|
1719
|
-
printer: "Print",
|
|
1720
|
-
save: "Save",
|
|
1721
|
-
link: "Link",
|
|
1722
|
-
unlink: "Unlink",
|
|
1723
|
-
paperclip: "Paperclip",
|
|
1724
|
-
flag: "Flag",
|
|
1725
|
-
tag: "Tag",
|
|
1726
|
-
tags: "Tags",
|
|
1727
|
-
zap: "Bolt",
|
|
1728
|
-
sparkles: "Magic",
|
|
1729
|
-
// Theme
|
|
1730
|
-
sun: "Sun",
|
|
1731
|
-
moon: "Moon",
|
|
1732
|
-
// Hierarchy (FA has no Tree icon for hierarchies; Sitemap is the org-chart icon)
|
|
1733
|
-
tree: "Sitemap",
|
|
1734
|
-
network: "NetworkWired"
|
|
1735
|
-
};
|
|
1736
|
-
warned = /* @__PURE__ */ new Set();
|
|
1737
1118
|
}
|
|
1738
1119
|
});
|
|
1739
1120
|
function kebabToPascal2(name) {
|
|
@@ -1814,7 +1195,7 @@ var init_Icon = __esm({
|
|
|
1814
1195
|
const family = useIconFamily();
|
|
1815
1196
|
const RenderedComponent = React81__namespace.default.useMemo(() => {
|
|
1816
1197
|
if (directIcon) return null;
|
|
1817
|
-
return effectiveName ? resolveIconForFamily(effectiveName
|
|
1198
|
+
return effectiveName ? resolveIconForFamily(effectiveName) : null;
|
|
1818
1199
|
}, [directIcon, effectiveName, family]);
|
|
1819
1200
|
const effectiveStrokeWidth = strokeWidth ?? void 0;
|
|
1820
1201
|
const inlineStyle = {
|
|
@@ -2193,7 +1574,7 @@ var init_Button = __esm({
|
|
|
2193
1574
|
ref,
|
|
2194
1575
|
disabled: disabled || isLoading,
|
|
2195
1576
|
className: cn(
|
|
2196
|
-
"inline-flex items-center justify-center gap-2",
|
|
1577
|
+
"relative inline-flex items-center justify-center gap-2",
|
|
2197
1578
|
"font-medium",
|
|
2198
1579
|
"rounded-sm",
|
|
2199
1580
|
"cursor-pointer",
|
|
@@ -3961,6 +3342,7 @@ var init_Input = __esm({
|
|
|
3961
3342
|
icon: iconProp,
|
|
3962
3343
|
clearable,
|
|
3963
3344
|
onClear,
|
|
3345
|
+
action,
|
|
3964
3346
|
value,
|
|
3965
3347
|
options,
|
|
3966
3348
|
rows = 3,
|
|
@@ -4010,6 +3392,11 @@ var init_Input = __esm({
|
|
|
4010
3392
|
onClear?.();
|
|
4011
3393
|
}
|
|
4012
3394
|
};
|
|
3395
|
+
const handleKeyDown = (e) => {
|
|
3396
|
+
if (action && e.key === "Enter") {
|
|
3397
|
+
eventBus.emit(`UI:${action}`, { value: e.currentTarget.value });
|
|
3398
|
+
}
|
|
3399
|
+
};
|
|
4013
3400
|
const wrapField = (field) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full", children: [
|
|
4014
3401
|
label && /* @__PURE__ */ jsxRuntime.jsx("label", { className: "block text-sm font-medium text-foreground mb-1", children: label }),
|
|
4015
3402
|
field,
|
|
@@ -4083,6 +3470,7 @@ var init_Input = __esm({
|
|
|
4083
3470
|
type,
|
|
4084
3471
|
value,
|
|
4085
3472
|
onChange: handleChange,
|
|
3473
|
+
onKeyDown: handleKeyDown,
|
|
4086
3474
|
className: baseClassName,
|
|
4087
3475
|
...props
|
|
4088
3476
|
}
|
|
@@ -4615,7 +4003,7 @@ var init_Card = __esm({
|
|
|
4615
4003
|
});
|
|
4616
4004
|
function GameIcon({ assetUrl, icon, size = "md", alt, className }) {
|
|
4617
4005
|
const px = typeof size === "number" ? size : sizeMap[size];
|
|
4618
|
-
|
|
4006
|
+
useIconFamily();
|
|
4619
4007
|
if (assetUrl?.url) {
|
|
4620
4008
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4621
4009
|
AtlasImage,
|
|
@@ -4627,7 +4015,7 @@ function GameIcon({ assetUrl, icon, size = "md", alt, className }) {
|
|
|
4627
4015
|
}
|
|
4628
4016
|
);
|
|
4629
4017
|
}
|
|
4630
|
-
const I = typeof icon === "string" ? resolveIconForFamily(icon
|
|
4018
|
+
const I = typeof icon === "string" ? resolveIconForFamily(icon) : icon;
|
|
4631
4019
|
return /* @__PURE__ */ jsxRuntime.jsx(I, { width: px, height: px, className: cn("flex-shrink-0", className) });
|
|
4632
4020
|
}
|
|
4633
4021
|
var sizeMap;
|
|
@@ -7024,8 +6412,8 @@ function Seigaiha({ size, color, strokeWidth }) {
|
|
|
7024
6412
|
[s, s * 0.1]
|
|
7025
6413
|
];
|
|
7026
6414
|
for (const [cx, cy] of centers) {
|
|
7027
|
-
for (let
|
|
7028
|
-
const cr = r * (
|
|
6415
|
+
for (let ring = 1; ring <= 3; ring++) {
|
|
6416
|
+
const cr = r * (ring / 3);
|
|
7029
6417
|
paths.push(
|
|
7030
6418
|
`M ${f(cx - cr)},${f(cy)} A ${f(cr)} ${f(cr)} 0 0 1 ${f(cx + cr)},${f(cy)}`
|
|
7031
6419
|
);
|
|
@@ -7122,8 +6510,8 @@ function Arch({ size, color, strokeWidth }) {
|
|
|
7122
6510
|
const h = size * 1.5;
|
|
7123
6511
|
const cx = w / 2;
|
|
7124
6512
|
const paths = [];
|
|
7125
|
-
for (let
|
|
7126
|
-
const scale = 1 -
|
|
6513
|
+
for (let ring = 0; ring < 4; ring++) {
|
|
6514
|
+
const scale = 1 - ring * 0.2;
|
|
7127
6515
|
const archW = w * 0.48 * scale;
|
|
7128
6516
|
const archH = h * 0.7 * scale;
|
|
7129
6517
|
const baseY = h * 0.85;
|
|
@@ -7138,7 +6526,7 @@ function Arch({ size, color, strokeWidth }) {
|
|
|
7138
6526
|
paths.push(
|
|
7139
6527
|
`M ${f(lx)},${f(baseY)} A ${f(radius)} ${f(radius)} 0 0 1 ${f(cx)},${f(tipY)} A ${f(radius)} ${f(radius)} 0 0 1 ${f(rx)},${f(baseY)}`
|
|
7140
6528
|
);
|
|
7141
|
-
if (
|
|
6529
|
+
if (ring === 0) {
|
|
7142
6530
|
paths.push(`M ${f(lx)},${f(baseY)} L ${f(rx)},${f(baseY)}`);
|
|
7143
6531
|
}
|
|
7144
6532
|
}
|
|
@@ -9546,9 +8934,9 @@ var init_webPainter2d = __esm({
|
|
|
9546
8934
|
// lib/drawable/projector.ts
|
|
9547
8935
|
function create2DProjector(opts) {
|
|
9548
8936
|
const { scale, baseOffsetX, layout } = opts;
|
|
9549
|
-
const tileWidth = TILE_WIDTH * scale;
|
|
9550
|
-
const floorHeight = FLOOR_HEIGHT * scale;
|
|
9551
|
-
const diamondTopY = (opts.diamondTopY ?? DIAMOND_TOP_Y) * scale;
|
|
8937
|
+
const tileWidth = layout === "free" ? 1 : TILE_WIDTH * scale;
|
|
8938
|
+
const floorHeight = layout === "free" ? 1 : FLOOR_HEIGHT * scale;
|
|
8939
|
+
const diamondTopY = layout === "free" ? 0 : (opts.diamondTopY ?? DIAMOND_TOP_Y) * scale;
|
|
9552
8940
|
const squareGrid = layout === "flat" || layout === "free";
|
|
9553
8941
|
const project = (pos) => layout === "free" ? { x: pos.x, y: pos.y } : isoToScreen(pos.x, pos.y, scale, baseOffsetX, layout);
|
|
9554
8942
|
const anchorPoint = (pos, anchor) => {
|
|
@@ -9589,6 +8977,15 @@ var init_projector = __esm({
|
|
|
9589
8977
|
}
|
|
9590
8978
|
});
|
|
9591
8979
|
|
|
8980
|
+
// lib/drawable/contract.ts
|
|
8981
|
+
function isValidScenePos(pos) {
|
|
8982
|
+
return Number.isFinite(pos?.x) && Number.isFinite(pos?.y);
|
|
8983
|
+
}
|
|
8984
|
+
var init_contract = __esm({
|
|
8985
|
+
"lib/drawable/contract.ts"() {
|
|
8986
|
+
}
|
|
8987
|
+
});
|
|
8988
|
+
|
|
9592
8989
|
// components/game/atoms/DrawSprite.tsx
|
|
9593
8990
|
function DrawSprite(_props) {
|
|
9594
8991
|
return null;
|
|
@@ -9598,10 +8995,12 @@ var init_DrawSprite = __esm({
|
|
|
9598
8995
|
"components/game/atoms/DrawSprite.tsx"() {
|
|
9599
8996
|
"use client";
|
|
9600
8997
|
init_atlasSlice();
|
|
8998
|
+
init_contract();
|
|
9601
8999
|
paintSprite = (painter, node, dctx) => {
|
|
9000
|
+
if (!node.asset?.url || !isValidScenePos(node.position)) return;
|
|
9602
9001
|
const tex = painter.resolveTexture(node.asset.url);
|
|
9603
9002
|
if (!tex) return;
|
|
9604
|
-
let src = node.frame;
|
|
9003
|
+
let src = typeof node.frame === "object" ? node.frame : void 0;
|
|
9605
9004
|
if (!src && isAtlasAsset(node.asset)) {
|
|
9606
9005
|
const atlas = getAtlas(node.asset.atlas, dctx.invalidate);
|
|
9607
9006
|
if (!atlas) return;
|
|
@@ -9646,7 +9045,9 @@ var paintShape;
|
|
|
9646
9045
|
var init_DrawShape = __esm({
|
|
9647
9046
|
"components/game/atoms/DrawShape.tsx"() {
|
|
9648
9047
|
"use client";
|
|
9048
|
+
init_contract();
|
|
9649
9049
|
paintShape = (painter, node, dctx) => {
|
|
9050
|
+
if (!isValidScenePos(node.position)) return;
|
|
9650
9051
|
painter.save();
|
|
9651
9052
|
if (node.opacity !== void 0 && node.opacity !== 1) painter.setAlpha(node.opacity);
|
|
9652
9053
|
switch (node.shape) {
|
|
@@ -9700,7 +9101,9 @@ var paintText;
|
|
|
9700
9101
|
var init_DrawText = __esm({
|
|
9701
9102
|
"components/game/atoms/DrawText.tsx"() {
|
|
9702
9103
|
"use client";
|
|
9104
|
+
init_contract();
|
|
9703
9105
|
paintText = (painter, node, dctx) => {
|
|
9106
|
+
if (!isValidScenePos(node.position)) return;
|
|
9704
9107
|
const p = dctx.projector.anchorPoint(node.position, node.anchor ?? "center");
|
|
9705
9108
|
const x = p.x + (node.offsetX ?? 0);
|
|
9706
9109
|
const y = p.y + (node.offsetY ?? 0);
|
|
@@ -9805,12 +9208,14 @@ function collectDrawnItems(nodes) {
|
|
|
9805
9208
|
case "draw-sprite":
|
|
9806
9209
|
case "draw-shape":
|
|
9807
9210
|
case "draw-text":
|
|
9808
|
-
out.push({ pos: n.position, id: n.id });
|
|
9211
|
+
if (isValidScenePos(n.position)) out.push({ pos: n.position, id: n.id });
|
|
9809
9212
|
break;
|
|
9810
9213
|
case "draw-sprite-layer":
|
|
9811
9214
|
case "draw-shape-layer":
|
|
9812
9215
|
case "draw-text-layer":
|
|
9813
|
-
for (const it of n.items)
|
|
9216
|
+
for (const it of n.items) {
|
|
9217
|
+
if (isValidScenePos(it.position)) out.push({ pos: it.position, id: it.id });
|
|
9218
|
+
}
|
|
9814
9219
|
break;
|
|
9815
9220
|
}
|
|
9816
9221
|
}
|
|
@@ -9825,6 +9230,7 @@ function buildHitIndex(items) {
|
|
|
9825
9230
|
}
|
|
9826
9231
|
var init_hitTest = __esm({
|
|
9827
9232
|
"lib/drawable/hitTest.ts"() {
|
|
9233
|
+
init_contract();
|
|
9828
9234
|
}
|
|
9829
9235
|
});
|
|
9830
9236
|
function normalizeBackdrop(bg) {
|
|
@@ -11864,21 +11270,6 @@ var init_renderer = __esm({
|
|
|
11864
11270
|
init_slot_definitions();
|
|
11865
11271
|
}
|
|
11866
11272
|
});
|
|
11867
|
-
|
|
11868
|
-
// lib/wrapCallbackForEvent.ts
|
|
11869
|
-
function wrapCallbackForEvent(qualifiedEvent, callbackArgs, emit) {
|
|
11870
|
-
const argNames = (callbackArgs ?? []).map((a) => a.name);
|
|
11871
|
-
if (argNames.length === 0) {
|
|
11872
|
-
return () => emit(qualifiedEvent);
|
|
11873
|
-
}
|
|
11874
|
-
return (...args) => {
|
|
11875
|
-
const payload = {};
|
|
11876
|
-
for (let i = 0; i < argNames.length; i += 1) {
|
|
11877
|
-
payload[argNames[i]] = args[i];
|
|
11878
|
-
}
|
|
11879
|
-
emit(qualifiedEvent, payload);
|
|
11880
|
-
};
|
|
11881
|
-
}
|
|
11882
11273
|
var init_wrapCallbackForEvent = __esm({
|
|
11883
11274
|
"lib/wrapCallbackForEvent.ts"() {
|
|
11884
11275
|
}
|
|
@@ -22769,7 +22160,8 @@ function DataGrid({
|
|
|
22769
22160
|
const { t } = hooks.useTranslate();
|
|
22770
22161
|
const [selectedIds, setSelectedIds] = React81.useState(/* @__PURE__ */ new Set());
|
|
22771
22162
|
const [visibleCount, setVisibleCount] = React81.useState(pageSize || Infinity);
|
|
22772
|
-
const fieldDefs = fields ?? columns ?? [];
|
|
22163
|
+
const fieldDefs = (Array.isArray(fields) ? fields : void 0) ?? (Array.isArray(columns) ? columns : void 0) ?? [];
|
|
22164
|
+
const actionDefs = Array.isArray(itemActions) ? itemActions : [];
|
|
22773
22165
|
const allDataRaw = Array.isArray(entity) ? entity : entity ? [entity] : [];
|
|
22774
22166
|
const dnd = useDataDnd({
|
|
22775
22167
|
items: allDataRaw,
|
|
@@ -22813,8 +22205,8 @@ function DataGrid({
|
|
|
22813
22205
|
const titleField = fieldDefs.find((f3) => f3.variant === "h3" || f3.variant === "h4") ?? fieldDefs[0];
|
|
22814
22206
|
const badgeFields = fieldDefs.filter((f3) => f3.variant === "badge" && f3 !== titleField);
|
|
22815
22207
|
const bodyFields = fieldDefs.filter((f3) => f3 !== titleField && !badgeFields.includes(f3));
|
|
22816
|
-
const primaryActions =
|
|
22817
|
-
const dangerActions =
|
|
22208
|
+
const primaryActions = actionDefs.filter((a) => a.variant !== "danger");
|
|
22209
|
+
const dangerActions = actionDefs.filter((a) => a.variant === "danger");
|
|
22818
22210
|
const handleActionClick = (action, itemData) => (e) => {
|
|
22819
22211
|
e.stopPropagation();
|
|
22820
22212
|
const payload = {
|
|
@@ -35344,7 +34736,7 @@ function measureLabelWidth(text) {
|
|
|
35344
34736
|
if (typeof document === "undefined") return text.length * 6;
|
|
35345
34737
|
if (!labelMeasureCtx) labelMeasureCtx = document.createElement("canvas").getContext("2d");
|
|
35346
34738
|
if (!labelMeasureCtx) return text.length * 6;
|
|
35347
|
-
labelMeasureCtx.font = "
|
|
34739
|
+
labelMeasureCtx.font = "12px system-ui";
|
|
35348
34740
|
return labelMeasureCtx.measureText(text).width;
|
|
35349
34741
|
}
|
|
35350
34742
|
function getGroupColor(group, groups) {
|
|
@@ -35390,6 +34782,7 @@ var init_GraphCanvas = __esm({
|
|
|
35390
34782
|
actions,
|
|
35391
34783
|
onNodeClick,
|
|
35392
34784
|
onNodeDoubleClick,
|
|
34785
|
+
onBadgeClick,
|
|
35393
34786
|
nodeClickEvent,
|
|
35394
34787
|
selectedNodeId,
|
|
35395
34788
|
repulsion = 800,
|
|
@@ -35507,7 +34900,7 @@ var init_GraphCanvas = __esm({
|
|
|
35507
34900
|
nodesRef.current = simNodes;
|
|
35508
34901
|
if (layout === "force") {
|
|
35509
34902
|
let iterations = 0;
|
|
35510
|
-
const maxIterations =
|
|
34903
|
+
const maxIterations = 300;
|
|
35511
34904
|
const tick = () => {
|
|
35512
34905
|
const nodes = nodesRef.current;
|
|
35513
34906
|
const centerX = w / 2;
|
|
@@ -35537,7 +34930,9 @@ var init_GraphCanvas = __esm({
|
|
|
35537
34930
|
const dx = target.x - source.x;
|
|
35538
34931
|
const dy = target.y - source.y;
|
|
35539
34932
|
const dist = Math.sqrt(dx * dx + dy * dy) || 1;
|
|
35540
|
-
const
|
|
34933
|
+
const w2 = Math.min(1, Math.max(0, edge.weight ?? 1));
|
|
34934
|
+
const linkTarget = linkDistance * (0.5 + (1 - w2) * 1.5);
|
|
34935
|
+
const force = (dist - linkTarget) * (0.04 + 0.1 * w2);
|
|
35541
34936
|
const fx = dx / dist * force;
|
|
35542
34937
|
const fy = dy / dist * force;
|
|
35543
34938
|
source.fx += fx;
|
|
@@ -35545,9 +34940,27 @@ var init_GraphCanvas = __esm({
|
|
|
35545
34940
|
target.fx -= fx;
|
|
35546
34941
|
target.fy -= fy;
|
|
35547
34942
|
}
|
|
34943
|
+
const centroids = /* @__PURE__ */ new Map();
|
|
35548
34944
|
for (const node of nodes) {
|
|
35549
|
-
|
|
35550
|
-
|
|
34945
|
+
const g = node.group ?? "__none__";
|
|
34946
|
+
let c = centroids.get(g);
|
|
34947
|
+
if (!c) {
|
|
34948
|
+
c = { x: 0, y: 0, n: 0 };
|
|
34949
|
+
centroids.set(g, c);
|
|
34950
|
+
}
|
|
34951
|
+
c.x += node.x;
|
|
34952
|
+
c.y += node.y;
|
|
34953
|
+
c.n += 1;
|
|
34954
|
+
}
|
|
34955
|
+
for (const node of nodes) {
|
|
34956
|
+
const c = centroids.get(node.group ?? "__none__");
|
|
34957
|
+
if (c && c.n > 1) {
|
|
34958
|
+
node.fx += (c.x / c.n - node.x) * 0.04;
|
|
34959
|
+
node.fy += (c.y / c.n - node.y) * 0.04;
|
|
34960
|
+
} else {
|
|
34961
|
+
node.fx += (centerX - node.x) * 0.01;
|
|
34962
|
+
node.fy += (centerY - node.y) * 0.01;
|
|
34963
|
+
}
|
|
35551
34964
|
}
|
|
35552
34965
|
const damping = 0.9;
|
|
35553
34966
|
for (const node of nodes) {
|
|
@@ -35559,7 +34972,7 @@ var init_GraphCanvas = __esm({
|
|
|
35559
34972
|
node.y = Math.max(30, Math.min(h - 30, node.y));
|
|
35560
34973
|
}
|
|
35561
34974
|
const LABEL_GAP = 12;
|
|
35562
|
-
const LABEL_H =
|
|
34975
|
+
const LABEL_H = 16;
|
|
35563
34976
|
const pad = nodeSpacing / 2;
|
|
35564
34977
|
for (let i = 0; i < nodes.length; i++) {
|
|
35565
34978
|
for (let j = i + 1; j < nodes.length; j++) {
|
|
@@ -35580,13 +34993,13 @@ var init_GraphCanvas = __esm({
|
|
|
35580
34993
|
const overlapY = Math.min(aBot, bBot) - Math.max(aTop, bTop);
|
|
35581
34994
|
if (overlapX > 0 && overlapY > 0) {
|
|
35582
34995
|
if (overlapX <= overlapY) {
|
|
35583
|
-
const
|
|
35584
|
-
a.x = Math.max(30, Math.min(w - 30, a.x -
|
|
35585
|
-
b.x = Math.max(30, Math.min(w - 30, b.x +
|
|
34996
|
+
const push = overlapX / 2 * (b.x >= a.x ? 1 : -1);
|
|
34997
|
+
a.x = Math.max(30, Math.min(w - 30, a.x - push));
|
|
34998
|
+
b.x = Math.max(30, Math.min(w - 30, b.x + push));
|
|
35586
34999
|
} else {
|
|
35587
|
-
const
|
|
35588
|
-
a.y = Math.max(30, Math.min(h - 30, a.y -
|
|
35589
|
-
b.y = Math.max(30, Math.min(h - 30, b.y +
|
|
35000
|
+
const push = overlapY / 2 * (bTop + bBot >= aTop + aBot ? 1 : -1);
|
|
35001
|
+
a.y = Math.max(30, Math.min(h - 30, a.y - push));
|
|
35002
|
+
b.y = Math.max(30, Math.min(h - 30, b.y + push));
|
|
35590
35003
|
}
|
|
35591
35004
|
}
|
|
35592
35005
|
}
|
|
@@ -35614,6 +35027,11 @@ var init_GraphCanvas = __esm({
|
|
|
35614
35027
|
const h = height;
|
|
35615
35028
|
const nodes = nodesRef.current;
|
|
35616
35029
|
const accentColor = resolveColor3("var(--color-accent)", canvas);
|
|
35030
|
+
const fontFamily = resolveColor3("var(--font-family)", canvas) || "system-ui";
|
|
35031
|
+
const fgColor = resolveColor3("var(--color-foreground)", canvas);
|
|
35032
|
+
const mutedColor = resolveColor3("var(--color-muted-foreground)", canvas) || fgColor;
|
|
35033
|
+
const bgColor = resolveColor3("var(--color-background)", canvas) || "#ffffff";
|
|
35034
|
+
const accentFg = resolveColor3("var(--color-accent-foreground)", canvas) || "#ffffff";
|
|
35617
35035
|
const dpr = typeof window !== "undefined" && window.devicePixelRatio || 1;
|
|
35618
35036
|
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
|
35619
35037
|
ctx.clearRect(0, 0, w, h);
|
|
@@ -35633,19 +35051,21 @@ var init_GraphCanvas = __esm({
|
|
|
35633
35051
|
const target = nodes.find((n) => n.id === edge.target);
|
|
35634
35052
|
if (!source || !target) continue;
|
|
35635
35053
|
const incident = !!hoveredNode && (edge.source === hoveredNode || edge.target === hoveredNode);
|
|
35636
|
-
|
|
35054
|
+
const w2 = edge.weight ?? 1;
|
|
35055
|
+
ctx.globalAlpha = hoveredNode ? incident ? 1 : 0.05 : linkOpacity * w2;
|
|
35637
35056
|
ctx.beginPath();
|
|
35638
35057
|
ctx.moveTo(source.x, source.y);
|
|
35639
35058
|
ctx.lineTo(target.x, target.y);
|
|
35640
35059
|
ctx.strokeStyle = incident ? accentColor : edge.color || "#888888";
|
|
35641
|
-
ctx.lineWidth = incident ? 2 :
|
|
35060
|
+
ctx.lineWidth = incident ? 2 : Math.max(0.75, w2);
|
|
35642
35061
|
ctx.stroke();
|
|
35643
35062
|
if (edge.label && showLabels) {
|
|
35644
35063
|
const mx = (source.x + target.x) / 2;
|
|
35645
35064
|
const my = (source.y + target.y) / 2;
|
|
35646
|
-
ctx.fillStyle =
|
|
35647
|
-
ctx.font =
|
|
35065
|
+
ctx.fillStyle = mutedColor;
|
|
35066
|
+
ctx.font = `9px ${fontFamily}`;
|
|
35648
35067
|
ctx.textAlign = "center";
|
|
35068
|
+
ctx.textBaseline = "alphabetic";
|
|
35649
35069
|
ctx.fillText(edge.label, mx, my - 4);
|
|
35650
35070
|
}
|
|
35651
35071
|
}
|
|
@@ -35670,10 +35090,33 @@ var init_GraphCanvas = __esm({
|
|
|
35670
35090
|
}
|
|
35671
35091
|
ctx.stroke();
|
|
35672
35092
|
if (showLabels && node.label) {
|
|
35673
|
-
ctx.
|
|
35674
|
-
ctx.
|
|
35093
|
+
ctx.font = `${isSelected || isHovered ? "600" : "500"} 12px ${fontFamily}`;
|
|
35094
|
+
ctx.textAlign = "center";
|
|
35095
|
+
ctx.textBaseline = "middle";
|
|
35096
|
+
const ly = node.y + radius + 14;
|
|
35097
|
+
ctx.lineWidth = 3;
|
|
35098
|
+
ctx.lineJoin = "round";
|
|
35099
|
+
ctx.strokeStyle = bgColor;
|
|
35100
|
+
ctx.strokeText(node.label, node.x, ly);
|
|
35101
|
+
ctx.fillStyle = isSelected || isHovered ? fgColor : mutedColor;
|
|
35102
|
+
ctx.fillText(node.label, node.x, ly);
|
|
35103
|
+
}
|
|
35104
|
+
if (node.badge && node.badge > 1) {
|
|
35105
|
+
const bx = node.x + radius * 0.7;
|
|
35106
|
+
const by = node.y - radius * 0.7;
|
|
35107
|
+
const br = Math.max(7, Math.min(11, radius * 0.45));
|
|
35108
|
+
ctx.beginPath();
|
|
35109
|
+
ctx.arc(bx, by, br, 0, Math.PI * 2);
|
|
35110
|
+
ctx.fillStyle = accentColor;
|
|
35111
|
+
ctx.fill();
|
|
35112
|
+
ctx.strokeStyle = bgColor;
|
|
35113
|
+
ctx.lineWidth = 2;
|
|
35114
|
+
ctx.stroke();
|
|
35115
|
+
ctx.fillStyle = accentFg;
|
|
35116
|
+
ctx.font = `600 9px ${fontFamily}`;
|
|
35675
35117
|
ctx.textAlign = "center";
|
|
35676
|
-
ctx.
|
|
35118
|
+
ctx.textBaseline = "middle";
|
|
35119
|
+
ctx.fillText(String(node.badge), bx, by + 0.5);
|
|
35677
35120
|
}
|
|
35678
35121
|
}
|
|
35679
35122
|
ctx.restore();
|
|
@@ -35766,11 +35209,21 @@ var init_GraphCanvas = __esm({
|
|
|
35766
35209
|
if (!coords) return;
|
|
35767
35210
|
const node = nodeAt(coords.graphX, coords.graphY);
|
|
35768
35211
|
if (node) {
|
|
35212
|
+
if (node.badge && node.badge > 1 && onBadgeClick) {
|
|
35213
|
+
const r = (node.size || 8) + (selectedNodeId === node.id ? 4 : 0);
|
|
35214
|
+
const bx = node.x + r * 0.7;
|
|
35215
|
+
const by = node.y - r * 0.7;
|
|
35216
|
+
const br = Math.max(7, Math.min(11, r * 0.45)) + 3;
|
|
35217
|
+
if (Math.hypot(coords.graphX - bx, coords.graphY - by) <= br) {
|
|
35218
|
+
onBadgeClick(node);
|
|
35219
|
+
return;
|
|
35220
|
+
}
|
|
35221
|
+
}
|
|
35769
35222
|
handleNodeClick(node);
|
|
35770
35223
|
}
|
|
35771
35224
|
}
|
|
35772
35225
|
},
|
|
35773
|
-
[toCoords, nodeAt, handleNodeClick]
|
|
35226
|
+
[toCoords, nodeAt, handleNodeClick, onBadgeClick, selectedNodeId]
|
|
35774
35227
|
);
|
|
35775
35228
|
const handlePointerLeave = React81.useCallback(() => {
|
|
35776
35229
|
setHoveredNode(null);
|
|
@@ -40291,7 +39744,7 @@ function getAllEvents(traits2) {
|
|
|
40291
39744
|
function EventDispatcherTab({ traits: traits2, schema }) {
|
|
40292
39745
|
const eventBus = useEventBus();
|
|
40293
39746
|
const { t } = hooks.useTranslate();
|
|
40294
|
-
const [
|
|
39747
|
+
const [log9, setLog] = React81__namespace.useState([]);
|
|
40295
39748
|
const prevStatesRef = React81__namespace.useRef(/* @__PURE__ */ new Map());
|
|
40296
39749
|
React81__namespace.useEffect(() => {
|
|
40297
39750
|
for (const trait of traits2) {
|
|
@@ -40355,9 +39808,9 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
40355
39808
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.otherEvents") }),
|
|
40356
39809
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
|
|
40357
39810
|
] }),
|
|
40358
|
-
|
|
39811
|
+
log9.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
40359
39812
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.recentTransitions") }),
|
|
40360
|
-
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children:
|
|
39813
|
+
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: log9.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
|
|
40361
39814
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-400", children: entry.traitName }),
|
|
40362
39815
|
" ",
|
|
40363
39816
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-500", children: entry.from }),
|
|
@@ -43759,7 +43212,7 @@ function SlotContentRenderer({
|
|
|
43759
43212
|
if (typeof propValue !== "string") continue;
|
|
43760
43213
|
const propDef = propsSchema[propKey];
|
|
43761
43214
|
if (!propDef || propDef.kind !== "callback") continue;
|
|
43762
|
-
renderedProps[propKey] = wrapCallbackForEvent(
|
|
43215
|
+
renderedProps[propKey] = ui.wrapCallbackForEvent(
|
|
43763
43216
|
`UI:${propValue}`,
|
|
43764
43217
|
propDef.callbackArgs,
|
|
43765
43218
|
(eventKey, payload) => eventBus.emit(eventKey, payload)
|
|
@@ -43994,27 +43447,27 @@ var log2 = logger.createLogger("almadar:ui:shared-entity-store");
|
|
|
43994
43447
|
var EMPTY_ENTITY_STATE = {};
|
|
43995
43448
|
function createSharedEntityStore() {
|
|
43996
43449
|
const states = /* @__PURE__ */ new Map();
|
|
43997
|
-
const
|
|
43998
|
-
const
|
|
43999
|
-
const
|
|
44000
|
-
let set =
|
|
43450
|
+
const subscribers = /* @__PURE__ */ new Map();
|
|
43451
|
+
const getSnapshot2 = (entityId) => states.get(entityId) ?? EMPTY_ENTITY_STATE;
|
|
43452
|
+
const subscribe = (entityId, callback) => {
|
|
43453
|
+
let set = subscribers.get(entityId);
|
|
44001
43454
|
if (!set) {
|
|
44002
43455
|
set = /* @__PURE__ */ new Set();
|
|
44003
|
-
|
|
43456
|
+
subscribers.set(entityId, set);
|
|
44004
43457
|
}
|
|
44005
43458
|
set.add(callback);
|
|
44006
43459
|
return () => {
|
|
44007
|
-
const current =
|
|
43460
|
+
const current = subscribers.get(entityId);
|
|
44008
43461
|
if (!current) return;
|
|
44009
43462
|
current.delete(callback);
|
|
44010
43463
|
if (current.size === 0) {
|
|
44011
|
-
|
|
43464
|
+
subscribers.delete(entityId);
|
|
44012
43465
|
}
|
|
44013
43466
|
};
|
|
44014
43467
|
};
|
|
44015
43468
|
const commit = (entityId, nextState) => {
|
|
44016
43469
|
states.set(entityId, nextState);
|
|
44017
|
-
const set =
|
|
43470
|
+
const set = subscribers.get(entityId);
|
|
44018
43471
|
if (!set) return;
|
|
44019
43472
|
set.forEach((callback) => {
|
|
44020
43473
|
try {
|
|
@@ -44032,7 +43485,7 @@ function createSharedEntityStore() {
|
|
|
44032
43485
|
states.set(entityId, initialState);
|
|
44033
43486
|
}
|
|
44034
43487
|
};
|
|
44035
|
-
return { getSnapshot:
|
|
43488
|
+
return { getSnapshot: getSnapshot2, subscribe, commit, seed };
|
|
44036
43489
|
}
|
|
44037
43490
|
function useSharedEntityStore() {
|
|
44038
43491
|
const storeRef = React81.useRef(null);
|
|
@@ -44108,6 +43561,11 @@ function createClientEffectHandlers(options) {
|
|
|
44108
43561
|
};
|
|
44109
43562
|
}
|
|
44110
43563
|
var lambdaLog = logger.createLogger("almadar:ui:fn-form-lambda");
|
|
43564
|
+
function isOperatorCall(value) {
|
|
43565
|
+
const first = value[0];
|
|
43566
|
+
if (typeof first !== "string") return false;
|
|
43567
|
+
return registry.isKnownStdOperator(first) || first.includes("/") || first === "lambda" || first === "let";
|
|
43568
|
+
}
|
|
44111
43569
|
function isFnFormLambda(value) {
|
|
44112
43570
|
if (!Array.isArray(value)) return false;
|
|
44113
43571
|
const arr = value;
|
|
@@ -44147,7 +43605,14 @@ function resolveLambdaBindings(body, params, item, index) {
|
|
|
44147
43605
|
return body;
|
|
44148
43606
|
}
|
|
44149
43607
|
if (Array.isArray(body)) {
|
|
44150
|
-
|
|
43608
|
+
if (isFnFormLambda(body)) return body;
|
|
43609
|
+
const arr = body;
|
|
43610
|
+
const substituted = arr.map((b) => recur(b));
|
|
43611
|
+
if (isOperatorCall(substituted) && core.isSExpr(substituted)) {
|
|
43612
|
+
const evaluated = evaluator.evaluate(substituted, evaluator.createMinimalContext());
|
|
43613
|
+
return core.isEventPayloadValue(evaluated) ? evaluated : String(evaluated);
|
|
43614
|
+
}
|
|
43615
|
+
return substituted;
|
|
44151
43616
|
}
|
|
44152
43617
|
if (body !== null && typeof body === "object" && !React81__namespace.default.isValidElement(body) && !(body instanceof Date) && typeof body !== "function") {
|
|
44153
43618
|
const out = {};
|
|
@@ -44344,8 +43809,8 @@ function getBindingConfig(binding) {
|
|
|
44344
43809
|
function evalFieldDefault(value) {
|
|
44345
43810
|
if (!Array.isArray(value) || value.length === 0) return value;
|
|
44346
43811
|
const head = value[0];
|
|
44347
|
-
const
|
|
44348
|
-
if (!
|
|
43812
|
+
const isSExpr2 = typeof head === "string" && (head.includes("/") || head === "let" || head === "if" || head === "lambda");
|
|
43813
|
+
if (!isSExpr2) return value;
|
|
44349
43814
|
try {
|
|
44350
43815
|
return evaluator.evaluate(value, evaluator.createMinimalContext({}, {}, ""));
|
|
44351
43816
|
} catch {
|
|
@@ -44419,7 +43884,9 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
44419
43884
|
const traitDefs = traitBindings.map(toTraitDefinition);
|
|
44420
43885
|
const m = new runtime.StateMachineManager(traitDefs);
|
|
44421
43886
|
for (const binding of traitBindings) {
|
|
44422
|
-
const
|
|
43887
|
+
const rawCfg = getBindingConfig(binding);
|
|
43888
|
+
const resolvedCfg = traitConfigsByName?.[binding.trait.name];
|
|
43889
|
+
const cfg = rawCfg || resolvedCfg ? { ...rawCfg ?? {}, ...resolvedCfg ?? {} } : void 0;
|
|
44423
43890
|
if (cfg !== void 0) {
|
|
44424
43891
|
m.setTraitConfig(binding.trait.name, cfg);
|
|
44425
43892
|
}
|
|
@@ -44597,7 +44064,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
44597
44064
|
};
|
|
44598
44065
|
}, [traitBindings]);
|
|
44599
44066
|
const executeTransitionEffects = React81.useCallback(async (params) => {
|
|
44600
|
-
const { binding, previousState, newState, payload, flushEvent, syncOnly, log:
|
|
44067
|
+
const { binding, previousState, newState, payload, flushEvent, syncOnly, log: log9 } = params;
|
|
44601
44068
|
const traitName = binding.trait.name;
|
|
44602
44069
|
const linkedEntity = binding.linkedEntity || "";
|
|
44603
44070
|
const entityId = payload?.entityId;
|
|
@@ -44671,10 +44138,20 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
44671
44138
|
state: previousState
|
|
44672
44139
|
};
|
|
44673
44140
|
const sharedDeclared = runtime.collectDeclaredConfigDefaults(binding.trait);
|
|
44674
|
-
const
|
|
44675
|
-
|
|
44141
|
+
const sharedResolved = traitConfigsByName?.[traitName];
|
|
44142
|
+
const sharedCallSiteRaw = getBindingConfig(binding);
|
|
44143
|
+
const sharedCallSite = sharedCallSiteRaw ? runtime.resolveCallSitePayloadCaptures(
|
|
44144
|
+
Object.fromEntries(
|
|
44145
|
+
Object.entries(sharedCallSiteRaw).filter(
|
|
44146
|
+
([, v]) => !(typeof v === "string" && v.startsWith("@config."))
|
|
44147
|
+
)
|
|
44148
|
+
),
|
|
44149
|
+
payload || {}
|
|
44150
|
+
) : void 0;
|
|
44151
|
+
if (sharedDeclared || sharedResolved || sharedCallSite) {
|
|
44676
44152
|
sharedBindings.config = {
|
|
44677
44153
|
...sharedDeclared ?? {},
|
|
44154
|
+
...sharedResolved ?? {},
|
|
44678
44155
|
...sharedCallSite ?? {}
|
|
44679
44156
|
};
|
|
44680
44157
|
}
|
|
@@ -44708,7 +44185,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
44708
44185
|
...handlers,
|
|
44709
44186
|
set: async (targetId, field, value) => {
|
|
44710
44187
|
if (baseSet) await baseSet(targetId, field, value);
|
|
44711
|
-
|
|
44188
|
+
log9.debug("set:write", {
|
|
44712
44189
|
traitName,
|
|
44713
44190
|
field,
|
|
44714
44191
|
value: JSON.stringify(value),
|
|
@@ -44722,11 +44199,21 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
44722
44199
|
state: previousState
|
|
44723
44200
|
};
|
|
44724
44201
|
const declaredDefaults = runtime.collectDeclaredConfigDefaults(binding.trait);
|
|
44202
|
+
const resolvedDefaults = traitConfigsByName?.[traitName];
|
|
44725
44203
|
const callSiteConfig = getBindingConfig(binding);
|
|
44726
|
-
|
|
44204
|
+
const callSiteOverrides = callSiteConfig ? runtime.resolveCallSitePayloadCaptures(
|
|
44205
|
+
Object.fromEntries(
|
|
44206
|
+
Object.entries(callSiteConfig).filter(
|
|
44207
|
+
([, v]) => !(typeof v === "string" && v.startsWith("@config."))
|
|
44208
|
+
)
|
|
44209
|
+
),
|
|
44210
|
+
payload || {}
|
|
44211
|
+
) : void 0;
|
|
44212
|
+
if (declaredDefaults || resolvedDefaults || callSiteOverrides) {
|
|
44727
44213
|
bindingCtx.config = {
|
|
44728
44214
|
...declaredDefaults ?? {},
|
|
44729
|
-
...
|
|
44215
|
+
...resolvedDefaults ?? {},
|
|
44216
|
+
...callSiteOverrides ?? {}
|
|
44730
44217
|
};
|
|
44731
44218
|
}
|
|
44732
44219
|
if (traitName === "Authority" || traitName === "Hero") {
|
|
@@ -44775,7 +44262,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
44775
44262
|
if (sharedKey !== void 0) {
|
|
44776
44263
|
sharedEntityStore.commit(sharedKey, liveEntity);
|
|
44777
44264
|
}
|
|
44778
|
-
|
|
44265
|
+
log9.debug("effects:executed", () => ({
|
|
44779
44266
|
traitName,
|
|
44780
44267
|
transition: `${previousState}->${newState}`,
|
|
44781
44268
|
event: flushEvent,
|
|
@@ -44785,7 +44272,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
44785
44272
|
slotsTouched: Array.from(pendingSlots.keys()).join(",")
|
|
44786
44273
|
}));
|
|
44787
44274
|
for (const [slot, patterns] of pendingSlots) {
|
|
44788
|
-
|
|
44275
|
+
log9.debug("flush:slot", {
|
|
44789
44276
|
traitName,
|
|
44790
44277
|
slot,
|
|
44791
44278
|
patternCount: patterns.length,
|
|
@@ -44800,7 +44287,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
44800
44287
|
});
|
|
44801
44288
|
}
|
|
44802
44289
|
} catch (error) {
|
|
44803
|
-
|
|
44290
|
+
log9.error("effects:error", {
|
|
44804
44291
|
traitName,
|
|
44805
44292
|
transition: `${previousState}->${newState}`,
|
|
44806
44293
|
event: flushEvent,
|
|
@@ -44822,7 +44309,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
44822
44309
|
payload: {},
|
|
44823
44310
|
state: currentState
|
|
44824
44311
|
};
|
|
44825
|
-
const bindingCfg = getBindingConfig(binding);
|
|
44312
|
+
const bindingCfg = getBindingConfig(binding) ?? traitConfigsByName?.[traitName];
|
|
44826
44313
|
if (bindingCfg) {
|
|
44827
44314
|
guardCtx.config = bindingCfg;
|
|
44828
44315
|
}
|
|
@@ -45185,17 +44672,19 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
45185
44672
|
}, [traitBindings, eventBus, enqueueAndDrain]);
|
|
45186
44673
|
React81.useEffect(() => {
|
|
45187
44674
|
const mgr = managerRef.current;
|
|
45188
|
-
const
|
|
44675
|
+
const eventsToFire = /* @__PURE__ */ new Set();
|
|
45189
44676
|
for (const binding of traitBindings) {
|
|
45190
44677
|
const traitName = binding.trait.name;
|
|
45191
|
-
if (inited.has(traitName)) continue;
|
|
45192
44678
|
const lifecycleEvent = LIFECYCLE_EVENTS.find(
|
|
45193
44679
|
(evt) => mgr.canHandleEvent(traitName, evt)
|
|
45194
44680
|
);
|
|
45195
|
-
if (lifecycleEvent
|
|
45196
|
-
|
|
45197
|
-
|
|
45198
|
-
|
|
44681
|
+
if (lifecycleEvent !== void 0) {
|
|
44682
|
+
eventsToFire.add(lifecycleEvent);
|
|
44683
|
+
}
|
|
44684
|
+
}
|
|
44685
|
+
for (const event of eventsToFire) {
|
|
44686
|
+
stateLog.debug("mount:fire-lifecycle", { event, traitCount: traitBindings.length });
|
|
44687
|
+
enqueueAndDrain(event, {});
|
|
45199
44688
|
}
|
|
45200
44689
|
return () => {
|
|
45201
44690
|
initedTraitsRef.current = /* @__PURE__ */ new Set();
|
|
@@ -45310,343 +44799,8 @@ init_Typography();
|
|
|
45310
44799
|
init_UISlotRenderer();
|
|
45311
44800
|
init_useEventBus();
|
|
45312
44801
|
|
|
45313
|
-
// lib/embedded-traits.ts
|
|
45314
|
-
var TRAIT_BINDING_PREFIX = "@trait.";
|
|
45315
|
-
function collectTraitRefsFromValue(value, into) {
|
|
45316
|
-
if (value === null || value === void 0) return;
|
|
45317
|
-
if (typeof value === "string") {
|
|
45318
|
-
if (value.startsWith(TRAIT_BINDING_PREFIX)) {
|
|
45319
|
-
const rest = value.slice(TRAIT_BINDING_PREFIX.length);
|
|
45320
|
-
const dot = rest.indexOf(".");
|
|
45321
|
-
const traitName = dot === -1 ? rest : rest.slice(0, dot);
|
|
45322
|
-
if (traitName.length > 0) into.add(traitName);
|
|
45323
|
-
}
|
|
45324
|
-
return;
|
|
45325
|
-
}
|
|
45326
|
-
if (Array.isArray(value)) {
|
|
45327
|
-
for (const item of value) collectTraitRefsFromValue(item, into);
|
|
45328
|
-
return;
|
|
45329
|
-
}
|
|
45330
|
-
if (typeof value === "object") {
|
|
45331
|
-
for (const v of Object.values(value)) {
|
|
45332
|
-
collectTraitRefsFromValue(v, into);
|
|
45333
|
-
}
|
|
45334
|
-
}
|
|
45335
|
-
}
|
|
45336
|
-
function collectTraitRefsFromEffects(effects, into) {
|
|
45337
|
-
if (!effects) return;
|
|
45338
|
-
for (const effect of effects) {
|
|
45339
|
-
if (!Array.isArray(effect)) continue;
|
|
45340
|
-
if (effect[0] === "render-ui" && effect.length >= 3) {
|
|
45341
|
-
collectTraitRefsFromValue(effect[2], into);
|
|
45342
|
-
continue;
|
|
45343
|
-
}
|
|
45344
|
-
for (let i = 1; i < effect.length; i++) {
|
|
45345
|
-
const arg = effect[i];
|
|
45346
|
-
if (Array.isArray(arg)) collectTraitRefsFromEffects([arg], into);
|
|
45347
|
-
else collectTraitRefsFromValue(arg, into);
|
|
45348
|
-
}
|
|
45349
|
-
}
|
|
45350
|
-
}
|
|
45351
|
-
function collectTraitRefsFromResolvedTrait(trait) {
|
|
45352
|
-
const out = /* @__PURE__ */ new Set();
|
|
45353
|
-
for (const transition of trait.transitions ?? []) {
|
|
45354
|
-
collectTraitRefsFromEffects(transition.effects, out);
|
|
45355
|
-
}
|
|
45356
|
-
for (const tick of trait.ticks ?? []) {
|
|
45357
|
-
collectTraitRefsFromEffects(tick.effects, out);
|
|
45358
|
-
}
|
|
45359
|
-
return out;
|
|
45360
|
-
}
|
|
45361
|
-
function collectEmbeddedTraits(schema) {
|
|
45362
|
-
const out = /* @__PURE__ */ new Set();
|
|
45363
|
-
if (!schema?.orbitals) return out;
|
|
45364
|
-
for (const orbital of schema.orbitals) {
|
|
45365
|
-
const traits2 = orbital.traits;
|
|
45366
|
-
if (!Array.isArray(traits2)) continue;
|
|
45367
|
-
for (const traitRef of traits2) {
|
|
45368
|
-
if (!traitRef || typeof traitRef !== "object") continue;
|
|
45369
|
-
const resolved = traitRef._resolved;
|
|
45370
|
-
const target = resolved && typeof resolved === "object" ? resolved : traitRef;
|
|
45371
|
-
if (target.config) {
|
|
45372
|
-
collectTraitRefsFromValue(target.config, out);
|
|
45373
|
-
}
|
|
45374
|
-
const transitions = target.stateMachine?.transitions;
|
|
45375
|
-
if (!Array.isArray(transitions)) continue;
|
|
45376
|
-
for (const t of transitions) {
|
|
45377
|
-
collectTraitRefsFromEffects(t.effects, out);
|
|
45378
|
-
}
|
|
45379
|
-
collectTraitRefsFromEffects(target.initialEffects, out);
|
|
45380
|
-
const ticks2 = target.ticks;
|
|
45381
|
-
if (Array.isArray(ticks2)) {
|
|
45382
|
-
for (const tick of ticks2) {
|
|
45383
|
-
collectTraitRefsFromEffects(tick.effects, out);
|
|
45384
|
-
}
|
|
45385
|
-
}
|
|
45386
|
-
}
|
|
45387
|
-
}
|
|
45388
|
-
return out;
|
|
45389
|
-
}
|
|
45390
|
-
|
|
45391
|
-
// lib/orbitalsByTrait.ts
|
|
45392
|
-
function buildOrbitalsByTrait(schema, resolvedPages = []) {
|
|
45393
|
-
const map = {};
|
|
45394
|
-
if (!schema?.orbitals) return map;
|
|
45395
|
-
const pagePathToOrbital = {};
|
|
45396
|
-
for (const orb of schema.orbitals) {
|
|
45397
|
-
for (const traitRef of orb.traits ?? []) {
|
|
45398
|
-
let traitName;
|
|
45399
|
-
if (typeof traitRef === "string") {
|
|
45400
|
-
const parts = traitRef.split(".");
|
|
45401
|
-
traitName = parts[parts.length - 1];
|
|
45402
|
-
} else if (typeof traitRef.ref === "string") {
|
|
45403
|
-
const parts = traitRef.ref.split(".");
|
|
45404
|
-
traitName = traitRef.name ?? parts[parts.length - 1];
|
|
45405
|
-
} else if (typeof traitRef.name === "string") {
|
|
45406
|
-
traitName = traitRef.name;
|
|
45407
|
-
}
|
|
45408
|
-
if (traitName) map[traitName] = orb.name;
|
|
45409
|
-
}
|
|
45410
|
-
for (const pg of orb.pages ?? []) {
|
|
45411
|
-
const path = typeof pg === "string" ? pg : pg?.path;
|
|
45412
|
-
if (path) pagePathToOrbital[path] = orb.name;
|
|
45413
|
-
}
|
|
45414
|
-
}
|
|
45415
|
-
for (const page of resolvedPages) {
|
|
45416
|
-
const orbital = page.path ? pagePathToOrbital[page.path] : void 0;
|
|
45417
|
-
if (!orbital) continue;
|
|
45418
|
-
for (const traitName of page.traitNames) {
|
|
45419
|
-
if (traitName && !(traitName in map)) map[traitName] = orbital;
|
|
45420
|
-
}
|
|
45421
|
-
}
|
|
45422
|
-
return map;
|
|
45423
|
-
}
|
|
45424
|
-
|
|
45425
44802
|
// runtime/OrbPreview.tsx
|
|
45426
44803
|
init_verificationRegistry();
|
|
45427
|
-
var PERF_NAMESPACE = "almadar:perf:canvas";
|
|
45428
|
-
var log9 = logger.createLogger(PERF_NAMESPACE);
|
|
45429
|
-
var RING_SIZE = 50;
|
|
45430
|
-
var ring = [];
|
|
45431
|
-
var writeIdx = 0;
|
|
45432
|
-
var subscribers = /* @__PURE__ */ new Set();
|
|
45433
|
-
var notifyScheduled = false;
|
|
45434
|
-
var revision = 0;
|
|
45435
|
-
var cachedSnapshot = [];
|
|
45436
|
-
var cachedRevision = -1;
|
|
45437
|
-
function scheduleNotify() {
|
|
45438
|
-
if (notifyScheduled) return;
|
|
45439
|
-
notifyScheduled = true;
|
|
45440
|
-
queueMicrotask(() => {
|
|
45441
|
-
notifyScheduled = false;
|
|
45442
|
-
revision++;
|
|
45443
|
-
for (const fn of subscribers) fn();
|
|
45444
|
-
});
|
|
45445
|
-
}
|
|
45446
|
-
function push(entry) {
|
|
45447
|
-
if (ring.length < RING_SIZE) {
|
|
45448
|
-
ring.push(entry);
|
|
45449
|
-
} else {
|
|
45450
|
-
ring[writeIdx] = entry;
|
|
45451
|
-
}
|
|
45452
|
-
writeIdx = (writeIdx + 1) % RING_SIZE;
|
|
45453
|
-
scheduleNotify();
|
|
45454
|
-
}
|
|
45455
|
-
function isEnabled() {
|
|
45456
|
-
return logger.isLogLevelEnabled("DEBUG", PERF_NAMESPACE);
|
|
45457
|
-
}
|
|
45458
|
-
function now() {
|
|
45459
|
-
return typeof performance !== "undefined" && typeof performance.now === "function" ? performance.now() : Date.now();
|
|
45460
|
-
}
|
|
45461
|
-
function perfStart(name) {
|
|
45462
|
-
if (!isEnabled()) return -1;
|
|
45463
|
-
if (typeof performance !== "undefined" && typeof performance.mark === "function") {
|
|
45464
|
-
try {
|
|
45465
|
-
performance.mark(`${name}-start`);
|
|
45466
|
-
} catch {
|
|
45467
|
-
}
|
|
45468
|
-
}
|
|
45469
|
-
return now();
|
|
45470
|
-
}
|
|
45471
|
-
function perfEnd(name, startToken, detail) {
|
|
45472
|
-
if (startToken < 0 || !isEnabled()) return;
|
|
45473
|
-
const endTs = now();
|
|
45474
|
-
const durationMs = endTs - startToken;
|
|
45475
|
-
if (typeof performance !== "undefined" && typeof performance.measure === "function") {
|
|
45476
|
-
try {
|
|
45477
|
-
performance.mark(`${name}-end`);
|
|
45478
|
-
performance.measure(name, `${name}-start`, `${name}-end`);
|
|
45479
|
-
} catch {
|
|
45480
|
-
}
|
|
45481
|
-
}
|
|
45482
|
-
push({ name, durationMs, ts: endTs, detail });
|
|
45483
|
-
log9.debug(name, () => ({ durationMs, ...detail ?? {} }));
|
|
45484
|
-
}
|
|
45485
|
-
function perfTime(name, fn, detail) {
|
|
45486
|
-
const t = perfStart(name);
|
|
45487
|
-
try {
|
|
45488
|
-
return fn();
|
|
45489
|
-
} finally {
|
|
45490
|
-
perfEnd(name, t, detail);
|
|
45491
|
-
}
|
|
45492
|
-
}
|
|
45493
|
-
var profilerOnRender = (id, phase, actualDuration, baseDuration, _startTime, commitTime) => {
|
|
45494
|
-
if (!isEnabled()) return;
|
|
45495
|
-
push({
|
|
45496
|
-
name: `profiler:${id}:${phase}`,
|
|
45497
|
-
durationMs: actualDuration,
|
|
45498
|
-
ts: commitTime,
|
|
45499
|
-
detail: { baseDuration }
|
|
45500
|
-
});
|
|
45501
|
-
log9.debug(`profiler:${id}:${phase}`, () => ({ actualDuration, baseDuration }));
|
|
45502
|
-
};
|
|
45503
|
-
function getPerfSnapshot() {
|
|
45504
|
-
if (ring.length < RING_SIZE) return ring.slice();
|
|
45505
|
-
return [...ring.slice(writeIdx), ...ring.slice(0, writeIdx)];
|
|
45506
|
-
}
|
|
45507
|
-
function getSnapshot2() {
|
|
45508
|
-
if (cachedRevision !== revision) {
|
|
45509
|
-
cachedSnapshot = getPerfSnapshot();
|
|
45510
|
-
cachedRevision = revision;
|
|
45511
|
-
}
|
|
45512
|
-
return cachedSnapshot;
|
|
45513
|
-
}
|
|
45514
|
-
function subscribe(fn) {
|
|
45515
|
-
subscribers.add(fn);
|
|
45516
|
-
return () => {
|
|
45517
|
-
subscribers.delete(fn);
|
|
45518
|
-
};
|
|
45519
|
-
}
|
|
45520
|
-
function usePerfBuffer() {
|
|
45521
|
-
return React81.useSyncExternalStore(subscribe, getSnapshot2, getSnapshot2);
|
|
45522
|
-
}
|
|
45523
|
-
function clearPerf() {
|
|
45524
|
-
ring.length = 0;
|
|
45525
|
-
writeIdx = 0;
|
|
45526
|
-
scheduleNotify();
|
|
45527
|
-
}
|
|
45528
|
-
|
|
45529
|
-
// lib/prepareSchemaForPreview.ts
|
|
45530
|
-
function generateEntityRow(entity, idx) {
|
|
45531
|
-
const row = { id: String(idx) };
|
|
45532
|
-
for (const f3 of entity.fields) {
|
|
45533
|
-
if (f3.name === void 0 || f3.name === "id") continue;
|
|
45534
|
-
row[f3.name] = generateFieldValue(entity.name, f3, idx);
|
|
45535
|
-
}
|
|
45536
|
-
return row;
|
|
45537
|
-
}
|
|
45538
|
-
function generateFieldValue(entityName, field, idx) {
|
|
45539
|
-
if ("values" in field && field.values && field.values.length > 0) {
|
|
45540
|
-
return field.values[(idx - 1) % field.values.length];
|
|
45541
|
-
}
|
|
45542
|
-
const fieldName = field.name ?? "";
|
|
45543
|
-
switch (field.type) {
|
|
45544
|
-
case "string":
|
|
45545
|
-
return `${entityName} ${fieldName.charAt(0).toUpperCase() + fieldName.slice(1)} ${idx}`;
|
|
45546
|
-
case "number":
|
|
45547
|
-
return idx * 10;
|
|
45548
|
-
case "boolean":
|
|
45549
|
-
return idx % 2 === 0;
|
|
45550
|
-
default:
|
|
45551
|
-
return field.default ?? null;
|
|
45552
|
-
}
|
|
45553
|
-
}
|
|
45554
|
-
function buildMockData(schema) {
|
|
45555
|
-
const t = perfStart("build-mock-data");
|
|
45556
|
-
const result = {};
|
|
45557
|
-
for (const orbital of schema.orbitals) {
|
|
45558
|
-
const entity = orbital.entity;
|
|
45559
|
-
if (!entity || typeof entity === "string") continue;
|
|
45560
|
-
if (core.isEntityCall(entity)) continue;
|
|
45561
|
-
const entityName = entity.name;
|
|
45562
|
-
if (!entityName) continue;
|
|
45563
|
-
if (entity.instances && entity.instances.length > 0) {
|
|
45564
|
-
result[entityName] = entity.instances;
|
|
45565
|
-
continue;
|
|
45566
|
-
}
|
|
45567
|
-
const rows = Array.from(
|
|
45568
|
-
{ length: 10 },
|
|
45569
|
-
(_, i) => generateEntityRow(entity, i + 1)
|
|
45570
|
-
);
|
|
45571
|
-
result[entityName] = rows;
|
|
45572
|
-
}
|
|
45573
|
-
for (const orbital of schema.orbitals) {
|
|
45574
|
-
for (const traitRef of orbital.traits ?? []) {
|
|
45575
|
-
if (!isInlineTrait3(traitRef)) continue;
|
|
45576
|
-
const trait = traitRef;
|
|
45577
|
-
const sourceEntity = trait.sourceEntityDefinition;
|
|
45578
|
-
if (!sourceEntity || core.isEntityCall(sourceEntity)) continue;
|
|
45579
|
-
const sourceName = sourceEntity.name;
|
|
45580
|
-
if (!sourceName) continue;
|
|
45581
|
-
if (!result[sourceName]) {
|
|
45582
|
-
result[sourceName] = sourceEntity.instances && sourceEntity.instances.length > 0 ? sourceEntity.instances : Array.from(
|
|
45583
|
-
{ length: 10 },
|
|
45584
|
-
(_, i) => generateEntityRow(sourceEntity, i + 1)
|
|
45585
|
-
);
|
|
45586
|
-
}
|
|
45587
|
-
const reboundName = trait.linkedEntity;
|
|
45588
|
-
if (!reboundName || reboundName === sourceName) continue;
|
|
45589
|
-
const reboundRows = result[reboundName];
|
|
45590
|
-
if (!reboundRows || reboundRows.length === 0) continue;
|
|
45591
|
-
reboundRows.forEach((row, i) => {
|
|
45592
|
-
for (const f3 of sourceEntity.fields) {
|
|
45593
|
-
if (f3.name === void 0 || f3.name === "id") continue;
|
|
45594
|
-
if (row[f3.name] !== void 0) continue;
|
|
45595
|
-
row[f3.name] = generateFieldValue(sourceName, f3, i + 1);
|
|
45596
|
-
}
|
|
45597
|
-
});
|
|
45598
|
-
}
|
|
45599
|
-
}
|
|
45600
|
-
perfEnd("build-mock-data", t, { orbitalCount: schema.orbitals.length, entityCount: Object.keys(result).length });
|
|
45601
|
-
return result;
|
|
45602
|
-
}
|
|
45603
|
-
function isInlineTrait3(traitRef) {
|
|
45604
|
-
return typeof traitRef === "object" && traitRef !== null && "stateMachine" in traitRef;
|
|
45605
|
-
}
|
|
45606
|
-
function findDataState(sm, initialStateName) {
|
|
45607
|
-
return sm.states.find((s) => {
|
|
45608
|
-
if (s.name === initialStateName) return false;
|
|
45609
|
-
return sm.transitions.some(
|
|
45610
|
-
(t) => t.event === "INIT" && (t.from === s.name || Array.isArray(t.from) && t.from.includes(s.name))
|
|
45611
|
-
);
|
|
45612
|
-
});
|
|
45613
|
-
}
|
|
45614
|
-
function rewriteTraitInitialState(trait, mockData) {
|
|
45615
|
-
const sm = trait.stateMachine;
|
|
45616
|
-
if (!sm) return trait;
|
|
45617
|
-
const linkedEntity = trait.linkedEntity;
|
|
45618
|
-
if (!linkedEntity || !mockData[linkedEntity]?.length) return trait;
|
|
45619
|
-
const initialStateName = sm.states.find((s) => s.isInitial)?.name ?? sm.states[0]?.name;
|
|
45620
|
-
if (!initialStateName) return trait;
|
|
45621
|
-
const dataState = findDataState(sm, initialStateName);
|
|
45622
|
-
if (!dataState) return trait;
|
|
45623
|
-
const updatedStates = sm.states.map((s) => {
|
|
45624
|
-
if (s.name === initialStateName) return { ...s, isInitial: false };
|
|
45625
|
-
if (s.name === dataState.name) return { ...s, isInitial: true };
|
|
45626
|
-
return s;
|
|
45627
|
-
});
|
|
45628
|
-
return { ...trait, stateMachine: { ...sm, states: updatedStates } };
|
|
45629
|
-
}
|
|
45630
|
-
function adjustSchemaForMockData(schema, mockData) {
|
|
45631
|
-
let changed = false;
|
|
45632
|
-
const updatedOrbitals = schema.orbitals.map((orbital) => {
|
|
45633
|
-
const traits2 = orbital.traits ?? [];
|
|
45634
|
-
const updatedTraits = traits2.map((traitRef) => {
|
|
45635
|
-
if (!isInlineTrait3(traitRef)) return traitRef;
|
|
45636
|
-
const updated = rewriteTraitInitialState(traitRef, mockData);
|
|
45637
|
-
if (updated !== traitRef) changed = true;
|
|
45638
|
-
return updated;
|
|
45639
|
-
});
|
|
45640
|
-
return changed ? { ...orbital, traits: updatedTraits } : orbital;
|
|
45641
|
-
});
|
|
45642
|
-
return changed ? { ...schema, orbitals: updatedOrbitals } : schema;
|
|
45643
|
-
}
|
|
45644
|
-
function prepareSchemaForPreview(input) {
|
|
45645
|
-
const parsed = typeof input === "string" ? JSON.parse(input) : input;
|
|
45646
|
-
const mockData = buildMockData(parsed);
|
|
45647
|
-
const schema = adjustSchemaForMockData(parsed, mockData);
|
|
45648
|
-
return { schema, mockData };
|
|
45649
|
-
}
|
|
45650
44804
|
var xOrbitalLog = logger.createLogger("almadar:runtime:cross-orbital");
|
|
45651
44805
|
var navLog = logger.createLogger("almadar:runtime:navigation");
|
|
45652
44806
|
function normalizeChild(child) {
|
|
@@ -45813,7 +44967,7 @@ function SchemaRunner({ schema, serverUrl, transport, mockData, pageName, onNavi
|
|
|
45813
44967
|
while (queue.length > 0) {
|
|
45814
44968
|
const binding = queue.shift();
|
|
45815
44969
|
if (!binding) continue;
|
|
45816
|
-
for (const refName of collectTraitRefsFromResolvedTrait(binding.trait)) {
|
|
44970
|
+
for (const refName of ui.collectTraitRefsFromResolvedTrait(binding.trait)) {
|
|
45817
44971
|
if (byName.has(refName)) continue;
|
|
45818
44972
|
const rt = allTraits.get(refName);
|
|
45819
44973
|
if (!rt) continue;
|
|
@@ -45831,7 +44985,7 @@ function SchemaRunner({ schema, serverUrl, transport, mockData, pageName, onNavi
|
|
|
45831
44985
|
return orbitals.map((o) => o.name);
|
|
45832
44986
|
}, [schema]);
|
|
45833
44987
|
const orbitalsByTrait = React81.useMemo(
|
|
45834
|
-
() => buildOrbitalsByTrait(
|
|
44988
|
+
() => ui.buildOrbitalsByTrait(
|
|
45835
44989
|
schema,
|
|
45836
44990
|
ir ? Array.from(ir.pages.values()).map((p) => ({
|
|
45837
44991
|
path: p.path,
|
|
@@ -45880,26 +45034,12 @@ function SchemaRunner({ schema, serverUrl, transport, mockData, pageName, onNavi
|
|
|
45880
45034
|
pageOrbitalNames: pageOrbitalNames.join(",")
|
|
45881
45035
|
});
|
|
45882
45036
|
}, [pageName, allPageTraits, orbitalsByTrait, pageOrbitalNames]);
|
|
45883
|
-
const traitConfigsByName = React81.useMemo(
|
|
45884
|
-
|
|
45885
|
-
|
|
45886
|
-
|
|
45887
|
-
for (const orb of orbitals) {
|
|
45888
|
-
const traitRefs = orb.traits;
|
|
45889
|
-
if (!traitRefs) continue;
|
|
45890
|
-
for (const t of traitRefs) {
|
|
45891
|
-
if (typeof t === "string") continue;
|
|
45892
|
-
const name = t.name ?? t.ref;
|
|
45893
|
-
const config = t.config;
|
|
45894
|
-
if (typeof name === "string" && config !== void 0) {
|
|
45895
|
-
map[name] = config;
|
|
45896
|
-
}
|
|
45897
|
-
}
|
|
45898
|
-
}
|
|
45899
|
-
return map;
|
|
45900
|
-
}, [schema]);
|
|
45037
|
+
const traitConfigsByName = React81.useMemo(
|
|
45038
|
+
() => core.buildResolvedTraitConfigs(schema),
|
|
45039
|
+
[schema]
|
|
45040
|
+
);
|
|
45901
45041
|
const embeddedTraits = React81.useMemo(() => {
|
|
45902
|
-
const set = collectEmbeddedTraits(schema);
|
|
45042
|
+
const set = ui.collectEmbeddedTraits(schema);
|
|
45903
45043
|
xOrbitalLog.info("SchemaRunner:embeddedTraits", {
|
|
45904
45044
|
pageName,
|
|
45905
45045
|
embedded: Array.from(set),
|
|
@@ -45984,7 +45124,7 @@ function OrbPreview({
|
|
|
45984
45124
|
parsed = schema;
|
|
45985
45125
|
}
|
|
45986
45126
|
if (autoMock && !serverUrl && !transport) {
|
|
45987
|
-
const prepared = prepareSchemaForPreview(parsed);
|
|
45127
|
+
const prepared = ui.prepareSchemaForPreview(parsed);
|
|
45988
45128
|
return { ok: true, schema: prepared.schema, mockData: prepared.mockData };
|
|
45989
45129
|
}
|
|
45990
45130
|
return { ok: true, schema: parsed, mockData: mockData ?? {} };
|
|
@@ -46159,6 +45299,17 @@ function BrowserPlayground({
|
|
|
46159
45299
|
}
|
|
46160
45300
|
);
|
|
46161
45301
|
}
|
|
45302
|
+
function usePerfBuffer() {
|
|
45303
|
+
return React81.useSyncExternalStore(ui.perfStore.subscribe, ui.perfStore.getSnapshot, ui.perfStore.getSnapshot);
|
|
45304
|
+
}
|
|
45305
|
+
var profilerOnRender = (id, phase, actualDuration, baseDuration, _startTime, commitTime) => {
|
|
45306
|
+
ui.pushPerfEntry({
|
|
45307
|
+
name: `profiler:${id}:${phase}`,
|
|
45308
|
+
durationMs: actualDuration,
|
|
45309
|
+
ts: commitTime,
|
|
45310
|
+
detail: { baseDuration }
|
|
45311
|
+
});
|
|
45312
|
+
};
|
|
46162
45313
|
|
|
46163
45314
|
Object.defineProperty(exports, "EntitySchemaProvider", {
|
|
46164
45315
|
enumerable: true,
|
|
@@ -46196,20 +45347,47 @@ Object.defineProperty(exports, "useTraitContext", {
|
|
|
46196
45347
|
enumerable: true,
|
|
46197
45348
|
get: function () { return providers.useTraitContext; }
|
|
46198
45349
|
});
|
|
45350
|
+
Object.defineProperty(exports, "PERF_NAMESPACE", {
|
|
45351
|
+
enumerable: true,
|
|
45352
|
+
get: function () { return ui.PERF_NAMESPACE; }
|
|
45353
|
+
});
|
|
45354
|
+
Object.defineProperty(exports, "adjustSchemaForMockData", {
|
|
45355
|
+
enumerable: true,
|
|
45356
|
+
get: function () { return ui.adjustSchemaForMockData; }
|
|
45357
|
+
});
|
|
45358
|
+
Object.defineProperty(exports, "buildMockData", {
|
|
45359
|
+
enumerable: true,
|
|
45360
|
+
get: function () { return ui.buildMockData; }
|
|
45361
|
+
});
|
|
45362
|
+
Object.defineProperty(exports, "clearPerf", {
|
|
45363
|
+
enumerable: true,
|
|
45364
|
+
get: function () { return ui.clearPerf; }
|
|
45365
|
+
});
|
|
45366
|
+
Object.defineProperty(exports, "perfEnd", {
|
|
45367
|
+
enumerable: true,
|
|
45368
|
+
get: function () { return ui.perfEnd; }
|
|
45369
|
+
});
|
|
45370
|
+
Object.defineProperty(exports, "perfStart", {
|
|
45371
|
+
enumerable: true,
|
|
45372
|
+
get: function () { return ui.perfStart; }
|
|
45373
|
+
});
|
|
45374
|
+
Object.defineProperty(exports, "perfTime", {
|
|
45375
|
+
enumerable: true,
|
|
45376
|
+
get: function () { return ui.perfTime; }
|
|
45377
|
+
});
|
|
45378
|
+
Object.defineProperty(exports, "prepareSchemaForPreview", {
|
|
45379
|
+
enumerable: true,
|
|
45380
|
+
get: function () { return ui.prepareSchemaForPreview; }
|
|
45381
|
+
});
|
|
45382
|
+
Object.defineProperty(exports, "wrapCallbackForEvent", {
|
|
45383
|
+
enumerable: true,
|
|
45384
|
+
get: function () { return ui.wrapCallbackForEvent; }
|
|
45385
|
+
});
|
|
46199
45386
|
exports.BrowserPlayground = BrowserPlayground;
|
|
46200
45387
|
exports.OrbPreview = OrbPreview;
|
|
46201
|
-
exports.PERF_NAMESPACE = PERF_NAMESPACE;
|
|
46202
|
-
exports.adjustSchemaForMockData = adjustSchemaForMockData;
|
|
46203
|
-
exports.buildMockData = buildMockData;
|
|
46204
|
-
exports.clearPerf = clearPerf;
|
|
46205
45388
|
exports.clearSchemaCache = clearSchemaCache;
|
|
46206
45389
|
exports.createClientEffectHandlers = createClientEffectHandlers;
|
|
46207
|
-
exports.perfEnd = perfEnd;
|
|
46208
|
-
exports.perfStart = perfStart;
|
|
46209
|
-
exports.perfTime = perfTime;
|
|
46210
|
-
exports.prepareSchemaForPreview = prepareSchemaForPreview;
|
|
46211
45390
|
exports.profilerOnRender = profilerOnRender;
|
|
46212
45391
|
exports.usePerfBuffer = usePerfBuffer;
|
|
46213
45392
|
exports.useResolvedSchema = useResolvedSchema;
|
|
46214
45393
|
exports.useTraitStateMachine = useTraitStateMachine;
|
|
46215
|
-
exports.wrapCallbackForEvent = wrapCallbackForEvent;
|