@almadar/ui 6.57.0 → 6.59.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/{AwaitingSkeletonContext-DPgW__WV.d.ts → AwaitingSkeletonContext-Bh399p1x.d.ts} +1 -3
- package/dist/{Canvas3DHost-DfAhg6EH.d.ts → Canvas3DHost-CNjANoaU.d.ts} +1 -1
- package/dist/{GameAudioProvider-DyBvYP2c.d.ts → GameAudioProvider-Dv_L-PHt.d.ts} +1 -1
- package/dist/{UISlotRenderer-NCGDIXN4.js → UISlotRenderer-YNY7V2UJ.js} +2 -2
- package/dist/avl/index.cjs +137 -71
- package/dist/avl/index.js +24 -8
- package/dist/{chunk-GZGDBS4S.js → chunk-7CVXM2KS.js} +1 -1
- package/dist/{chunk-PYJ2UQWM.js → chunk-E6MWYQVZ.js} +42 -35
- package/dist/{chunk-HA7CJWQX.js → chunk-J755QADM.js} +1184 -1184
- package/dist/{chunk-VHTJRS2N.js → chunk-L3MTZ3RH.js} +7 -0
- package/dist/{chunk-RHP5WL55.js → chunk-QJIAJ6EH.js} +77 -42
- package/dist/components/index.cjs +76 -32
- package/dist/components/index.d.ts +9 -7
- package/dist/components/index.js +5 -5
- package/dist/context/index.cjs +7 -0
- package/dist/context/index.js +1 -1
- package/dist/hooks/index.cjs +7 -0
- package/dist/hooks/index.js +1 -1
- package/dist/lib/drawable/three/index.d.ts +3 -3
- package/dist/lib/drawable/three/index.js +3 -3
- package/dist/lib/index.d.ts +2 -2
- package/dist/{paintDispatch-_6EhJCiL.d.ts → paintDispatch-Cp1_S93j.d.ts} +30 -2
- package/dist/providers/index.cjs +51 -50
- package/dist/providers/index.d.ts +4 -4
- package/dist/providers/index.js +8 -21
- package/dist/runtime/index.cjs +120 -70
- package/dist/runtime/index.d.ts +4 -4
- package/dist/runtime/index.js +4 -4
- package/dist/ssr/index.cjs +2 -0
- package/dist/ssr/index.js +2 -0
- package/dist/{verificationRegistry-CD7Xb40L.d.ts → verificationRegistry-B3dj1Zl8.d.ts} +1 -1
- package/package.json +9 -8
|
@@ -309,6 +309,13 @@ function useUISlotManager() {
|
|
|
309
309
|
setSources((prev) => {
|
|
310
310
|
const slotSources = prev[slot];
|
|
311
311
|
if (!slotSources || !(sourceKey in slotSources)) {
|
|
312
|
+
const embedded = traitIndexRef.current.get(sourceTrait);
|
|
313
|
+
if (embedded !== void 0 && embedded.slot === slot) {
|
|
314
|
+
unindexTrait(sourceTrait);
|
|
315
|
+
notifyTraitSubscribers(sourceTrait, null);
|
|
316
|
+
log.info("slot:cleared-embedded", { slot, sourceTrait, lastPatternType: embedded.pattern });
|
|
317
|
+
return prev;
|
|
318
|
+
}
|
|
312
319
|
log.debug("slot:clear-noop", { slot, sourceTrait, reason: !slotSources ? "no-slot" : "no-source" });
|
|
313
320
|
return prev;
|
|
314
321
|
}
|
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
import { useTranslate, useRenderI18n, runTickFrame } from './chunk-N7JIG57B.js';
|
|
2
|
-
import { ALL_SLOTS } from './chunk-
|
|
3
|
-
import { LoadingState, ErrorState, UISlotRenderer } from './chunk-
|
|
4
|
-
import { Box } from './chunk-
|
|
2
|
+
import { ALL_SLOTS } from './chunk-L3MTZ3RH.js';
|
|
3
|
+
import { LoadingState, ErrorState, UISlotRenderer } from './chunk-E6MWYQVZ.js';
|
|
4
|
+
import { Box } from './chunk-J755QADM.js';
|
|
5
5
|
import { Typography } from './chunk-4ZGXIW3B.js';
|
|
6
6
|
import { beginPending, endPending } from './chunk-I5QOYW2Z.js';
|
|
7
7
|
import { useEventBus } from './chunk-CHNC4UYE.js';
|
|
8
8
|
import { registerTrait, unregisterTrait, perfTimeAsync } from './chunk-KJGVLXEN.js';
|
|
9
9
|
import { bindTraitStateGetter, registerTraitSnapshot, recordTransition, recordingTransport, recordServerResponse } from './chunk-Q47ZN2DW.js';
|
|
10
10
|
import { isNotificationSlot } from './chunk-PEST66PN.js';
|
|
11
|
-
import React, { useState, useMemo, useEffect, useRef, useCallback, useSyncExternalStore } from 'react';
|
|
11
|
+
import React, { createContext, useState, useMemo, useEffect, useRef, useCallback, useSyncExternalStore, useContext } from 'react';
|
|
12
12
|
import { schemaToIR, getPage, clearSchemaCache as clearSchemaCache$1, traitsEmbeddedByEvent, traitReferencesCallsitePayload, configReferencesCallsitePayload, TRAIT_MOUNT_ERROR_TESTID, traitsEmbeddedByEffects, applyListenPayloadMapping, buildResolvedTraitConfigs, collectCallsiteCaptureChildren, orbitalInlineEntities, storesRowsInBrowser, walkSExpr, isRenderBindingMarker, containsEntityBinding, isSExpr, isEventPayloadValue, RENDER_BINDING_MARKER } from '@almadar/core';
|
|
13
13
|
import { createLogger } from '@almadar/logger';
|
|
14
|
-
import { collectListenerTargets, LIFECYCLE_EVENTS, TraitMountError,
|
|
15
|
-
import { useUser,
|
|
14
|
+
import { collectListenerTargets, LIFECYCLE_EVENTS, TraitMountError, loadLazyPage, createInProcessTransport, buildTraitIndex, createMemoryCircuitStore, createLocalStoreTransport, createResidenceTransport, createClientKernel, createTickScheduler, isValidCronExpression, parseDurationString, UNMOUNT_EVENT, createClientEffectHandlers, EffectExecutor, isSExpression, collectDeclaredConfigDefaults, createContextFromBindings, openBrowserStore, browserStoreName, normalizeCallSiteConfigToValues } from '@almadar/runtime';
|
|
15
|
+
import { useUser, useArbitraryClassStyles, getAllPages, matchPathAmong, CurrentPagePathProvider, NavStackProvider, OrbitalProvider, ServerBridgeProvider, useNavStack, VerificationProvider, EntitySchemaProvider, OrbitalThemeProvider, useServerBridge, EntityBindingContext, AwaitingSkeletonContext } from '@almadar/ui/providers';
|
|
16
16
|
import { evaluateListenPayloadExpr, evaluate, createMinimalContext, evaluateGuard, executeEffects } from '@almadar/evaluator';
|
|
17
17
|
import { getPatternDefinition } from '@almadar/core/patterns';
|
|
18
18
|
import { isKnownStdOperator } from '@almadar/std/registry';
|
|
19
|
-
import { prepareSchemaForPreview, collectTraitRefsFromResolvedTrait, buildOrbitalsByTrait, collectEmbeddedTraits } from '@almadar/runtime/ui';
|
|
19
|
+
import { prepareSchemaForPreview, collectTraitRefsFromResolvedTrait, buildOrbitalsByTrait, buildTraitLinkedEntities, collectEmbeddedTraits } from '@almadar/runtime/ui';
|
|
20
20
|
export { adjustSchemaForMockData, buildMockData, collectEmbeddedTraits, prepareSchemaForPreview } from '@almadar/runtime/ui';
|
|
21
21
|
import { useInRouterContext, useHref } from 'react-router-dom';
|
|
22
22
|
import { UISlotProvider, useUISlots } from '@almadar/ui/context';
|
|
23
23
|
import { useTranslate as useTranslate$1, createTranslate, I18nProvider } from '@almadar/ui/hooks';
|
|
24
|
+
import { InMemoryPersistence } from '@almadar/db/mock';
|
|
24
25
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
25
26
|
import { OrbitalServerRuntime } from '@almadar/runtime/OrbitalServerRuntime';
|
|
26
27
|
import { localeDirection } from '@almadar/core/i18n';
|
|
@@ -440,6 +441,22 @@ function useBusIngress(traitBindings, traitIndex, settle, eventBus, appTraitName
|
|
|
440
441
|
});
|
|
441
442
|
unsubscribes.push(unsub);
|
|
442
443
|
}
|
|
444
|
+
const routedBareEvents = /* @__PURE__ */ new Set();
|
|
445
|
+
for (const binding of traitBindings) {
|
|
446
|
+
for (const listen of binding.trait.listens ?? []) {
|
|
447
|
+
if (listen.source !== void 0 && listen.source.kind !== "any") routedBareEvents.add(listen.event);
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
for (const eventKey of routedBareEvents) {
|
|
451
|
+
const unsub = eventBus.on(`UI:${eventKey}`, (event) => {
|
|
452
|
+
if (deliveredHere(event.source) || event.source?.trait === void 0) return;
|
|
453
|
+
for (const target of collectListenerTargets(traitIndex, event.source, eventKey, event.payload)) {
|
|
454
|
+
log2.debug("listen-bare:fire", { event: eventKey, source: event.source.trait, listener: target.listenerTrait, triggers: target.triggers });
|
|
455
|
+
dispatch(target.listenerTrait, target.triggers, target.payload, event.source);
|
|
456
|
+
}
|
|
457
|
+
});
|
|
458
|
+
unsubscribes.push(unsub);
|
|
459
|
+
}
|
|
443
460
|
return () => {
|
|
444
461
|
for (const unsub of unsubscribes) unsub();
|
|
445
462
|
};
|
|
@@ -518,7 +535,7 @@ function resolveLambdaBindings(body, params, item, index) {
|
|
|
518
535
|
return body;
|
|
519
536
|
}
|
|
520
537
|
var LazySlotContentRenderer = React.lazy(
|
|
521
|
-
() => import('./UISlotRenderer-
|
|
538
|
+
() => import('./UISlotRenderer-YNY7V2UJ.js').then((m) => ({ default: m.SlotContentRenderer }))
|
|
522
539
|
);
|
|
523
540
|
function deferLambdaEntityExprs(value) {
|
|
524
541
|
if (typeof value === "string") {
|
|
@@ -1331,9 +1348,16 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
1331
1348
|
useEffect(() => {
|
|
1332
1349
|
if (!transport?.subscribe) return;
|
|
1333
1350
|
return transport.subscribe((emitted, target) => {
|
|
1334
|
-
|
|
1335
|
-
|
|
1351
|
+
const listeners = collectListenerTargets(traitIndex, emitted.source, emitted.event, emitted.payload);
|
|
1352
|
+
if (target !== "origin") {
|
|
1353
|
+
for (const t2 of listeners) void dispatchAndSettle(t2.listenerTrait, t2.triggers, t2.payload);
|
|
1354
|
+
return;
|
|
1355
|
+
}
|
|
1356
|
+
const caller = emitted.source?.trait;
|
|
1357
|
+
if (caller !== void 0 && traitIndex.byName.has(caller) && !listeners.some((t2) => t2.listenerTrait === caller && t2.triggers === emitted.event)) {
|
|
1358
|
+
void progressAndSettle(caller, emitted.event, emitted.payload);
|
|
1336
1359
|
}
|
|
1360
|
+
for (const t2 of listeners) void progressAndSettle(t2.listenerTrait, t2.triggers, t2.payload);
|
|
1337
1361
|
}, { clientId: getTabClientId() });
|
|
1338
1362
|
}, [transport, traitIndex, progressAndSettle, dispatchAndSettle]);
|
|
1339
1363
|
useEffect(() => {
|
|
@@ -1343,7 +1367,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
1343
1367
|
if (traitName === void 0 || !traitIndex.byName.has(traitName)) return;
|
|
1344
1368
|
const composedBefore = new Map(store.callsitePayloads);
|
|
1345
1369
|
void kernel.foldHostDispatch(request, response).then((outcome) => settleOutcome(traitName, request.event, request.payload, outcome, composedBefore));
|
|
1346
|
-
});
|
|
1370
|
+
}, { clientId: getTabClientId() });
|
|
1347
1371
|
}, [transport, traitIndex, kernel, store, settleOutcome]);
|
|
1348
1372
|
const mountAndSettle = useCallback(async (seeds, payload) => {
|
|
1349
1373
|
const composedBefore = new Map(store.callsitePayloads);
|
|
@@ -1404,6 +1428,13 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
1404
1428
|
prevActiveTraitNamesRef.current = nextActiveTraitNames;
|
|
1405
1429
|
}, [traitBindings, uiSlots]);
|
|
1406
1430
|
const mountedRef = useRef(null);
|
|
1431
|
+
const aliveRef = useRef(true);
|
|
1432
|
+
useEffect(() => {
|
|
1433
|
+
aliveRef.current = true;
|
|
1434
|
+
return () => {
|
|
1435
|
+
aliveRef.current = false;
|
|
1436
|
+
};
|
|
1437
|
+
}, []);
|
|
1407
1438
|
const mountKey = `${options.mountKey ?? ""}\0${JSON.stringify(Object.entries(options.initPayload ?? {}).sort(([a], [b]) => a.localeCompare(b)))}`;
|
|
1408
1439
|
useEffect(() => {
|
|
1409
1440
|
const prev = mountedRef.current;
|
|
@@ -1434,6 +1465,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
1434
1465
|
const failed = err instanceof TraitMountError ? err.trait : traits.join(", ");
|
|
1435
1466
|
const cause = err instanceof TraitMountError ? err.original : err;
|
|
1436
1467
|
stateLog.warn("mount:failed", { traits, failed, error: message, stack: cause instanceof Error ? cause.stack : void 0 });
|
|
1468
|
+
if (!aliveRef.current) return;
|
|
1437
1469
|
uiSlots.render({
|
|
1438
1470
|
target: "main",
|
|
1439
1471
|
pattern: "error-state",
|
|
@@ -1562,6 +1594,7 @@ function TraitInitializer({ traits, routeParams, mountKey, orbitals, onNavigate,
|
|
|
1562
1594
|
}
|
|
1563
1595
|
var CONTENT_STAGE_WIDTH = 480;
|
|
1564
1596
|
var NO_ORBITALS = [];
|
|
1597
|
+
var LazyPageOfRegisteredProgram = createContext(false);
|
|
1565
1598
|
function FitToBox({ children, mode = "box" }) {
|
|
1566
1599
|
const outerRef = useRef(null);
|
|
1567
1600
|
const innerRef = useRef(null);
|
|
@@ -1677,19 +1710,10 @@ function SchemaRunner({ schema, serverUrl, transport, getAccessToken, mockData,
|
|
|
1677
1710
|
),
|
|
1678
1711
|
[schema, ir]
|
|
1679
1712
|
);
|
|
1680
|
-
const traitLinkedEntitiesMap = useMemo(
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
for (const binding of page.traits) {
|
|
1685
|
-
if (binding.linkedEntity) {
|
|
1686
|
-
map.set(binding.trait.name, binding.linkedEntity);
|
|
1687
|
-
}
|
|
1688
|
-
}
|
|
1689
|
-
}
|
|
1690
|
-
}
|
|
1691
|
-
return map;
|
|
1692
|
-
}, [ir]);
|
|
1713
|
+
const traitLinkedEntitiesMap = useMemo(
|
|
1714
|
+
() => ir ? buildTraitLinkedEntities(ir) : /* @__PURE__ */ new Map(),
|
|
1715
|
+
[ir]
|
|
1716
|
+
);
|
|
1693
1717
|
const orbitalsByTraitMap = useMemo(
|
|
1694
1718
|
() => new Map(Object.entries(orbitalsByTrait)),
|
|
1695
1719
|
[orbitalsByTrait]
|
|
@@ -1833,7 +1857,7 @@ function OrbPreview({
|
|
|
1833
1857
|
if (localFallback) return;
|
|
1834
1858
|
setLocalFallback(true);
|
|
1835
1859
|
}, [localFallback]);
|
|
1836
|
-
const
|
|
1860
|
+
const isLazyPageOfRegisteredProgram = useContext(LazyPageOfRegisteredProgram);
|
|
1837
1861
|
const parseResult = useMemo(() => {
|
|
1838
1862
|
let parsed;
|
|
1839
1863
|
if (typeof schema === "string") {
|
|
@@ -2025,13 +2049,13 @@ function OrbPreview({
|
|
|
2025
2049
|
navLog.info("interceptor:installed", { pageCount: pages.length, paths: pages.map((p) => p.page.path) });
|
|
2026
2050
|
return () => el.removeEventListener("click", handler, true);
|
|
2027
2051
|
}, [pages, handleNavigate, isolated, hostHrefBase]);
|
|
2028
|
-
const withBridge = (node) => (serverUrl || transport) && !
|
|
2052
|
+
const withBridge = (node) => (serverUrl || transport) && !isLazyPageOfRegisteredProgram ? /* @__PURE__ */ jsx(ServerBridgeProvider, { schema: parseResult.schema, serverUrl, transport, getAccessToken, children: node }) : node;
|
|
2029
2053
|
if (lazyRoute) {
|
|
2030
2054
|
return withBridge(
|
|
2031
2055
|
/* @__PURE__ */ jsxs(Box, { ref: containerRef, className: `overflow-auto ${className ?? ""}`, style: { height }, children: [
|
|
2032
2056
|
lazyLoad.status === "loading" && /* @__PURE__ */ jsx(LoadingState, {}),
|
|
2033
2057
|
lazyLoad.status === "error" && /* @__PURE__ */ jsx(ErrorState, { "data-testid": "lazy-page-error", message: lazyLoad.error }),
|
|
2034
|
-
lazyLoad.status === "ready" && /* @__PURE__ */ jsx(
|
|
2058
|
+
lazyLoad.status === "ready" && /* @__PURE__ */ jsx(LazyPageOfRegisteredProgram.Provider, { value: true, children: /* @__PURE__ */ jsx(
|
|
2035
2059
|
OrbPreview,
|
|
2036
2060
|
{
|
|
2037
2061
|
schema: lazyLoad.schema,
|
|
@@ -2051,7 +2075,7 @@ function OrbPreview({
|
|
|
2051
2075
|
onUnmatchedNavigate: handleNavigate
|
|
2052
2076
|
},
|
|
2053
2077
|
lazyRoute.page.orbRef
|
|
2054
|
-
)
|
|
2078
|
+
) })
|
|
2055
2079
|
] })
|
|
2056
2080
|
);
|
|
2057
2081
|
}
|
|
@@ -2148,21 +2172,28 @@ function BrowserPlayground({
|
|
|
2148
2172
|
runtime.resumeTicks();
|
|
2149
2173
|
}
|
|
2150
2174
|
}, [runtime, paused]);
|
|
2151
|
-
const
|
|
2152
|
-
const orbitalNames = schema.orbitals.map((o) => o.name);
|
|
2153
|
-
playgroundLog.debug("register:start", { schema: schema.name, orbitalNames });
|
|
2175
|
+
const lazySchemas = useMemo(() => {
|
|
2154
2176
|
const lazyPages = schema.lazyPages ?? [];
|
|
2155
|
-
|
|
2177
|
+
if (lazyPages.length === 0 || lazyLoader === void 0) return Promise.resolve([]);
|
|
2178
|
+
return Promise.all(lazyPages.map(async (page) => {
|
|
2156
2179
|
const loaded = await loadLazyPage(lazyLoader, page, schemaPath);
|
|
2157
2180
|
if (!loaded.success) throw new Error(loaded.error);
|
|
2158
2181
|
return loaded.data;
|
|
2159
|
-
}))
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2182
|
+
}));
|
|
2183
|
+
}, [schema.lazyPages, lazyLoader, schemaPath]);
|
|
2184
|
+
const registerProgram = useCallback((program) => {
|
|
2185
|
+
const orbitalNames = program.orbitals.map((o) => o.name);
|
|
2186
|
+
playgroundLog.debug("register:start", { schema: program.name, orbitalNames });
|
|
2187
|
+
return lazySchemas.then((lazy) => runtime.register(program, { ...messages !== void 0 ? { messages } : {}, lazy })).then(() => {
|
|
2188
|
+
playgroundLog.debug("register:done", { schema: program.name, orbitalNames });
|
|
2164
2189
|
});
|
|
2165
|
-
}, [runtime,
|
|
2190
|
+
}, [runtime, lazySchemas, messages]);
|
|
2191
|
+
const latestRegistration = useRef(Promise.resolve());
|
|
2192
|
+
const registrationReady = useMemo(() => {
|
|
2193
|
+
const ready = registerProgram(schema);
|
|
2194
|
+
latestRegistration.current = ready;
|
|
2195
|
+
return ready;
|
|
2196
|
+
}, [registerProgram, schema]);
|
|
2166
2197
|
const teardownTimerRef = useRef(null);
|
|
2167
2198
|
useEffect(() => {
|
|
2168
2199
|
if (teardownTimerRef.current !== null) {
|
|
@@ -2180,18 +2211,22 @@ function BrowserPlayground({
|
|
|
2180
2211
|
const transport = useMemo(
|
|
2181
2212
|
() => createInProcessTransport(
|
|
2182
2213
|
async (orbitalName, request) => {
|
|
2183
|
-
await
|
|
2214
|
+
await latestRegistration.current;
|
|
2184
2215
|
return runtime.processOrbitalEvent(orbitalName, request);
|
|
2185
2216
|
},
|
|
2186
2217
|
{
|
|
2187
|
-
//
|
|
2188
|
-
onRegister: () =>
|
|
2218
|
+
// Registers what the bridge hands over (lazy behaviors included): a bridge that unregistered first gets it back.
|
|
2219
|
+
onRegister: (program) => {
|
|
2220
|
+
const ready = registerProgram(program);
|
|
2221
|
+
latestRegistration.current = ready;
|
|
2222
|
+
return ready;
|
|
2223
|
+
},
|
|
2189
2224
|
onUnregister: () => {
|
|
2190
2225
|
runtime.unregisterAll();
|
|
2191
2226
|
}
|
|
2192
2227
|
}
|
|
2193
2228
|
),
|
|
2194
|
-
[runtime, registrationReady]
|
|
2229
|
+
[runtime, registerProgram, registrationReady]
|
|
2195
2230
|
);
|
|
2196
2231
|
const viewerLocale = locale ?? schema.locales?.[0];
|
|
2197
2232
|
const i18n = useMemo(() => {
|
|
@@ -5323,6 +5323,7 @@ var init_Avatar = __esm({
|
|
|
5323
5323
|
statusClasses[status],
|
|
5324
5324
|
statusSizeClasses[size2]
|
|
5325
5325
|
),
|
|
5326
|
+
role: "img",
|
|
5326
5327
|
"aria-label": t("avatar.status", { status: t(`avatar.status.${status}`) })
|
|
5327
5328
|
}
|
|
5328
5329
|
),
|
|
@@ -8478,6 +8479,7 @@ var init_AnimatedGraphic = __esm({
|
|
|
8478
8479
|
"div",
|
|
8479
8480
|
{
|
|
8480
8481
|
className: "w-full h-full [&>svg]:w-full [&>svg]:h-full",
|
|
8482
|
+
"aria-hidden": "true",
|
|
8481
8483
|
dangerouslySetInnerHTML: { __html: resolvedSvg }
|
|
8482
8484
|
}
|
|
8483
8485
|
) : children
|
|
@@ -10934,6 +10936,7 @@ var init_Tabs = __esm({
|
|
|
10934
10936
|
}
|
|
10935
10937
|
};
|
|
10936
10938
|
const activeTabContent = safeItems.find((item) => item.id === activeTab)?.content;
|
|
10939
|
+
const rendersPanel = activeTabContent !== void 0 && activeTabContent !== null;
|
|
10937
10940
|
if (safeItems.length === 0) {
|
|
10938
10941
|
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { ...domPassthrough(rest), className: cn("w-full", className), children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", color: "muted", className: "py-4", children: t("empty.noItems") }) });
|
|
10939
10942
|
}
|
|
@@ -10984,7 +10987,7 @@ var init_Tabs = __esm({
|
|
|
10984
10987
|
id: tabId(item.id),
|
|
10985
10988
|
role: "tab",
|
|
10986
10989
|
"aria-selected": isActive,
|
|
10987
|
-
"aria-controls": isActive ? panelId(item.id) : void 0,
|
|
10990
|
+
"aria-controls": isActive && rendersPanel ? panelId(item.id) : void 0,
|
|
10988
10991
|
"aria-disabled": isDisabled,
|
|
10989
10992
|
tabIndex: isActive ? 0 : -1,
|
|
10990
10993
|
onClick: () => !isDisabled && handleTabChange(item.id, item.event),
|
|
@@ -11044,7 +11047,7 @@ var init_Tabs = __esm({
|
|
|
11044
11047
|
)
|
|
11045
11048
|
] })
|
|
11046
11049
|
] }) : tablist,
|
|
11047
|
-
|
|
11050
|
+
rendersPanel && /* @__PURE__ */ jsxRuntime.jsx(
|
|
11048
11051
|
exports.Box,
|
|
11049
11052
|
{
|
|
11050
11053
|
role: "tabpanel",
|
|
@@ -20375,8 +20378,10 @@ var init_AvlFieldType = __esm({
|
|
|
20375
20378
|
pattern: "hexagon",
|
|
20376
20379
|
node: "hexagon",
|
|
20377
20380
|
event: "hexagon",
|
|
20381
|
+
EventAddress: "hexagon",
|
|
20378
20382
|
SExpr: "hexagon",
|
|
20379
20383
|
array: "bars",
|
|
20384
|
+
tuple: "bars",
|
|
20380
20385
|
relation: "link"
|
|
20381
20386
|
};
|
|
20382
20387
|
AvlFieldType = ({
|
|
@@ -32212,8 +32217,11 @@ function DataGrid({
|
|
|
32212
32217
|
children: [
|
|
32213
32218
|
imageField && (() => {
|
|
32214
32219
|
const imgUrl = resolveImageUrl(core.getNestedValue(itemData, imageField));
|
|
32215
|
-
|
|
32216
|
-
|
|
32220
|
+
const mediaClass = asRows ? "w-12 h-12 flex-shrink-0 overflow-hidden rounded-container" : "w-full aspect-video overflow-hidden rounded-t-container";
|
|
32221
|
+
if (!imgUrl) {
|
|
32222
|
+
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { "data-media-placeholder": true, "aria-hidden": "true", className: cn(mediaClass, "flex items-center justify-center bg-muted text-muted-foreground"), children: /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "image", size: asRows ? "sm" : "lg" }) });
|
|
32223
|
+
}
|
|
32224
|
+
return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: mediaClass, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
32217
32225
|
"img",
|
|
32218
32226
|
{
|
|
32219
32227
|
src: imgUrl,
|
|
@@ -32246,7 +32254,7 @@ function DataGrid({
|
|
|
32246
32254
|
exports.Typography,
|
|
32247
32255
|
{
|
|
32248
32256
|
variant: titleField?.variant === "h3" && !asRows ? "h3" : "h4",
|
|
32249
|
-
className: "font-semibold
|
|
32257
|
+
className: cn("font-semibold min-w-0", asRows ? "truncate" : "line-clamp-2 break-words"),
|
|
32250
32258
|
children: titleDisplay
|
|
32251
32259
|
}
|
|
32252
32260
|
)
|
|
@@ -32375,24 +32383,33 @@ var init_DataGrid = __esm({
|
|
|
32375
32383
|
DataGrid.displayName = "DataGrid";
|
|
32376
32384
|
}
|
|
32377
32385
|
});
|
|
32378
|
-
|
|
32379
|
-
|
|
32380
|
-
}
|
|
32381
|
-
function formatValue2(value, format, fmt2, relationOptions) {
|
|
32382
|
-
const relationDisplay = resolveRelationCellDisplay(value, relationOptions);
|
|
32383
|
-
if (relationDisplay !== void 0) return relationDisplay;
|
|
32384
|
-
return formatValue(value, format, fmt2);
|
|
32385
|
-
}
|
|
32386
|
-
function groupData(items, field) {
|
|
32386
|
+
|
|
32387
|
+
// lib/groupRows.ts
|
|
32388
|
+
function groupRows(items, field, format, fmt2 = {}) {
|
|
32387
32389
|
const groups = /* @__PURE__ */ new Map();
|
|
32388
32390
|
for (const item of items) {
|
|
32389
|
-
const
|
|
32391
|
+
const raw = core.getNestedValue(item, field);
|
|
32392
|
+
const key = format ? formatValue(raw ?? void 0, format, fmt2) : String(raw ?? "");
|
|
32390
32393
|
const group = groups.get(key);
|
|
32391
32394
|
if (group) group.push(item);
|
|
32392
32395
|
else groups.set(key, [item]);
|
|
32393
32396
|
}
|
|
32394
32397
|
return Array.from(groups.entries()).map(([label, groupItems]) => ({ label, items: groupItems }));
|
|
32395
32398
|
}
|
|
32399
|
+
var init_groupRows = __esm({
|
|
32400
|
+
"lib/groupRows.ts"() {
|
|
32401
|
+
init_format();
|
|
32402
|
+
init_getNestedValue();
|
|
32403
|
+
}
|
|
32404
|
+
});
|
|
32405
|
+
function renderIconInput2(icon, props) {
|
|
32406
|
+
return typeof icon === "string" ? /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: icon, ...props }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon, ...props });
|
|
32407
|
+
}
|
|
32408
|
+
function formatValue2(value, format, fmt2, relationOptions) {
|
|
32409
|
+
const relationDisplay = resolveRelationCellDisplay(value, relationOptions);
|
|
32410
|
+
if (relationDisplay !== void 0) return relationDisplay;
|
|
32411
|
+
return formatValue(value, format, fmt2);
|
|
32412
|
+
}
|
|
32396
32413
|
function DataList({
|
|
32397
32414
|
entity,
|
|
32398
32415
|
fields,
|
|
@@ -32403,6 +32420,7 @@ function DataList({
|
|
|
32403
32420
|
gap = "none",
|
|
32404
32421
|
variant = "default",
|
|
32405
32422
|
groupBy,
|
|
32423
|
+
groupFormat,
|
|
32406
32424
|
senderField,
|
|
32407
32425
|
senderLabelField,
|
|
32408
32426
|
currentUser,
|
|
@@ -32510,9 +32528,9 @@ function DataList({
|
|
|
32510
32528
|
e.stopPropagation();
|
|
32511
32529
|
fireRowAction(action, itemData, String(itemData.id ?? ""));
|
|
32512
32530
|
};
|
|
32513
|
-
const renderItemActions = (itemData, onPrimary = false) => {
|
|
32531
|
+
const renderItemActions = (itemData, onPrimary = false, only) => {
|
|
32514
32532
|
if (!itemActions || itemActions.length === 0) return null;
|
|
32515
|
-
const shown = rowActions(itemActions, itemData);
|
|
32533
|
+
const shown = only ?? rowActions(itemActions, itemData);
|
|
32516
32534
|
if (shown.length === 0) return null;
|
|
32517
32535
|
const inline = maxInlineActions != null ? shown.slice(0, maxInlineActions) : shown;
|
|
32518
32536
|
const overflow = maxInlineActions != null ? shown.slice(maxInlineActions) : [];
|
|
@@ -32596,7 +32614,7 @@ function DataList({
|
|
|
32596
32614
|
const isMessage = variant === "message";
|
|
32597
32615
|
if (isMessage) {
|
|
32598
32616
|
const items2 = [...data];
|
|
32599
|
-
const groups2 = groupBy ?
|
|
32617
|
+
const groups2 = groupBy ? groupRows(items2, groupBy, groupFormat, fmt2) : [{ label: "", items: items2 }];
|
|
32600
32618
|
const contentField = (fieldDefs.find((f3) => f3.variant === "body") ?? titleField)?.name ?? "";
|
|
32601
32619
|
const senderLabel = (itemData, raw) => {
|
|
32602
32620
|
if (!senderLabelField) return raw;
|
|
@@ -32693,7 +32711,7 @@ function DataList({
|
|
|
32693
32711
|
] });
|
|
32694
32712
|
}
|
|
32695
32713
|
const items = [...data];
|
|
32696
|
-
const groups = groupBy ?
|
|
32714
|
+
const groups = groupBy ? groupRows(items, groupBy, groupFormat, fmt2) : [{ label: "", items }];
|
|
32697
32715
|
const idFieldName = dndItemIdField ?? "id";
|
|
32698
32716
|
const renderItem = (itemData, index, isLast) => {
|
|
32699
32717
|
const dndId = itemData[idFieldName] ?? `__idx_${index}`;
|
|
@@ -32704,7 +32722,11 @@ function DataList({
|
|
|
32704
32722
|
const divider = (isCard || isCompact) && !isLast ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: cn("border-b border-border/40", isCompact ? "mx-4" : "mx-6") }) : null;
|
|
32705
32723
|
if (hasRenderProp) {
|
|
32706
32724
|
const id2 = itemData.id || String(index);
|
|
32707
|
-
const
|
|
32725
|
+
const allActions = itemActions ? rowActions(itemActions, itemData) : [];
|
|
32726
|
+
const primaryActions = allActions.filter((a) => a.variant === "primary");
|
|
32727
|
+
const otherActions = allActions.filter((a) => a.variant !== "primary");
|
|
32728
|
+
const primary = primaryActions.length > 0 ? renderItemActions(itemData, false, primaryActions) : null;
|
|
32729
|
+
const actions = otherActions.length > 0 ? renderItemActions(itemData, false, otherActions) : null;
|
|
32708
32730
|
return wrapDnd(
|
|
32709
32731
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
32710
32732
|
exports.Box,
|
|
@@ -32725,6 +32747,7 @@ function DataList({
|
|
|
32725
32747
|
}
|
|
32726
32748
|
),
|
|
32727
32749
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: cn(onOpen && "relative"), children: itemRenderer(itemData, index) }),
|
|
32750
|
+
primary && /* @__PURE__ */ jsxRuntime.jsx(exports.HStack, { justify: "end", className: cn("relative px-4 pb-3", STRETCHED_ABOVE), children: primary }),
|
|
32728
32751
|
actions && /* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { onClick: (e) => e.stopPropagation(), className: "absolute top-2 right-2 z-10 opacity-0 group-hover/rowactions:opacity-100 focus-within:opacity-100 [@media(pointer:coarse)]:opacity-100 transition-opacity duration-fast", children: [
|
|
32729
32752
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "rounded-container border border-border bg-card/95 backdrop-blur-sm shadow-elevation-popover surface-material p-0.5 [@media(pointer:coarse)]:hidden", children: actions }),
|
|
32730
32753
|
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "hidden [@media(pointer:coarse)]:block rounded-container border border-border bg-card/95 backdrop-blur-sm shadow-elevation-popover surface-material p-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -32732,7 +32755,7 @@ function DataList({
|
|
|
32732
32755
|
{
|
|
32733
32756
|
position: "bottom-end",
|
|
32734
32757
|
trigger: /* @__PURE__ */ jsxRuntime.jsx(exports.Button, { variant: "ghost", size: "sm", "aria-label": t("common.actions"), "data-testid": "action-overflow", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "more-horizontal", size: "xs" }) }),
|
|
32735
|
-
items:
|
|
32758
|
+
items: otherActions.map((action) => ({
|
|
32736
32759
|
label: action.label,
|
|
32737
32760
|
icon: action.icon,
|
|
32738
32761
|
variant: action.variant === "danger" ? "danger" : "default",
|
|
@@ -32923,6 +32946,7 @@ var init_DataList = __esm({
|
|
|
32923
32946
|
init_format();
|
|
32924
32947
|
init_relationLabel();
|
|
32925
32948
|
init_getNestedValue();
|
|
32949
|
+
init_groupRows();
|
|
32926
32950
|
init_useEventBus();
|
|
32927
32951
|
init_useRowActions();
|
|
32928
32952
|
init_Box();
|
|
@@ -34016,16 +34040,6 @@ function asFieldValue(v) {
|
|
|
34016
34040
|
if (t === "object") return v;
|
|
34017
34041
|
return void 0;
|
|
34018
34042
|
}
|
|
34019
|
-
function groupData2(items, field) {
|
|
34020
|
-
const groups = /* @__PURE__ */ new Map();
|
|
34021
|
-
for (const item of items) {
|
|
34022
|
-
const key = String(core.getNestedValue(item, field) ?? "");
|
|
34023
|
-
const group = groups.get(key);
|
|
34024
|
-
if (group) group.push(item);
|
|
34025
|
-
else groups.set(key, [item]);
|
|
34026
|
-
}
|
|
34027
|
-
return Array.from(groups.entries()).map(([label, groupItems]) => ({ label, items: groupItems }));
|
|
34028
|
-
}
|
|
34029
34043
|
function TableView({
|
|
34030
34044
|
entity,
|
|
34031
34045
|
columns,
|
|
@@ -34336,7 +34350,7 @@ function TableView({
|
|
|
34336
34350
|
return dnd.isZone ? /* @__PURE__ */ jsxRuntime.jsx(dnd.SortableItem, { id: row[idField] ?? id, children: rowInner }, id) : /* @__PURE__ */ jsxRuntime.jsx(React89__namespace.default.Fragment, { children: rowInner }, id);
|
|
34337
34351
|
};
|
|
34338
34352
|
const items = Array.from(data);
|
|
34339
|
-
const groups = groupBy ?
|
|
34353
|
+
const groups = groupBy ? groupRows(items, groupBy) : [{ label: "", items }];
|
|
34340
34354
|
let runningIndex = 0;
|
|
34341
34355
|
const body = /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { role: "rowgroup", children: groups.map((group, gi) => /* @__PURE__ */ jsxRuntime.jsxs(React89__namespace.default.Fragment, { children: [
|
|
34342
34356
|
group.label && /* @__PURE__ */ jsxRuntime.jsx(exports.Divider, { label: group.label, className: gi > 0 ? "mt-3" : "mt-0" }),
|
|
@@ -34375,6 +34389,7 @@ var init_TableView = __esm({
|
|
|
34375
34389
|
init_format();
|
|
34376
34390
|
init_relationLabel();
|
|
34377
34391
|
init_getNestedValue();
|
|
34392
|
+
init_groupRows();
|
|
34378
34393
|
init_useEventBus();
|
|
34379
34394
|
init_useRowActions();
|
|
34380
34395
|
init_Box();
|
|
@@ -59078,6 +59093,18 @@ init_AuthLayout();
|
|
|
59078
59093
|
init_CounterTemplate();
|
|
59079
59094
|
init_GenericAppTemplate();
|
|
59080
59095
|
|
|
59096
|
+
// components/game/patterns.ts
|
|
59097
|
+
init_DrawSprite();
|
|
59098
|
+
init_DrawShape();
|
|
59099
|
+
init_DrawText();
|
|
59100
|
+
init_DrawGroup();
|
|
59101
|
+
init_DrawMesh();
|
|
59102
|
+
init_DrawSkinnedMesh();
|
|
59103
|
+
init_DrawSpriteLayer();
|
|
59104
|
+
init_DrawShapeLayer();
|
|
59105
|
+
init_DrawTextLayer();
|
|
59106
|
+
init_DrawFxLayer();
|
|
59107
|
+
|
|
59081
59108
|
// components/index.ts
|
|
59082
59109
|
init_cn();
|
|
59083
59110
|
var log12 = logger.createLogger("almadar:ui:filesystem");
|
|
@@ -60230,6 +60257,13 @@ function useUISlotManager() {
|
|
|
60230
60257
|
setSources((prev) => {
|
|
60231
60258
|
const slotSources = prev[slot];
|
|
60232
60259
|
if (!slotSources || !(sourceKey in slotSources)) {
|
|
60260
|
+
const embedded = traitIndexRef.current.get(sourceTrait);
|
|
60261
|
+
if (embedded !== void 0 && embedded.slot === slot) {
|
|
60262
|
+
unindexTrait(sourceTrait);
|
|
60263
|
+
notifyTraitSubscribers(sourceTrait, null);
|
|
60264
|
+
log20.info("slot:cleared-embedded", { slot, sourceTrait, lastPatternType: embedded.pattern });
|
|
60265
|
+
return prev;
|
|
60266
|
+
}
|
|
60233
60267
|
log20.debug("slot:clear-noop", { slot, sourceTrait, reason: !slotSources ? "no-slot" : "no-source" });
|
|
60234
60268
|
return prev;
|
|
60235
60269
|
}
|
|
@@ -63300,6 +63334,16 @@ exports.DocSearch = DocSearch;
|
|
|
63300
63334
|
exports.DocumentDetails = DocumentDetails;
|
|
63301
63335
|
exports.DocumentPanel = DocumentPanel;
|
|
63302
63336
|
exports.DomStateMachineVisualizer = exports.StateMachineView;
|
|
63337
|
+
exports.DrawFxLayer = DrawFxLayer;
|
|
63338
|
+
exports.DrawGroup = DrawGroup;
|
|
63339
|
+
exports.DrawMesh = DrawMesh;
|
|
63340
|
+
exports.DrawShape = DrawShape;
|
|
63341
|
+
exports.DrawShapeLayer = DrawShapeLayer;
|
|
63342
|
+
exports.DrawSkinnedMesh = DrawSkinnedMesh;
|
|
63343
|
+
exports.DrawSprite = DrawSprite;
|
|
63344
|
+
exports.DrawSpriteLayer = DrawSpriteLayer;
|
|
63345
|
+
exports.DrawText = DrawText;
|
|
63346
|
+
exports.DrawTextLayer = DrawTextLayer;
|
|
63303
63347
|
exports.EditorCheckbox = EditorCheckbox;
|
|
63304
63348
|
exports.EditorSelect = EditorSelect;
|
|
63305
63349
|
exports.EditorSlider = EditorSlider;
|
|
@@ -2,12 +2,12 @@ import { A11yProps, Asset, EventKey, EventPayload, EventEmit, AssetUrl, FieldVal
|
|
|
2
2
|
export { AnimationDef, AnimationName, AudioManifest, BusEvent, BusEventListener, BusEventSource, BusEventListener as EventListener, SkeletonVariant, SoundEntry, SpriteDirection, UISlot, Unsubscribe } from '@almadar/core';
|
|
3
3
|
import * as React$1 from 'react';
|
|
4
4
|
import React__default, { ReactNode, ErrorInfo } from 'react';
|
|
5
|
-
import { I as IconInput, U as UiError, D as DrawableNode, P as Projector, F as FxOverlayItem, B as BadgeColor, M as MeshShapeKind, a as MeshMaterial, b as DrawGroupProps, c as DrawTextProps, d as DrawMeshProps, e as DisplayField, f as BadgeVariant, C as ColorToken } from '../paintDispatch-
|
|
6
|
-
export {
|
|
5
|
+
import { I as IconInput, U as UiError, D as DrawableNode, P as Projector, F as FxOverlayItem, B as BadgeColor, M as MeshShapeKind, a as MeshMaterial, b as DrawGroupProps, c as DrawTextProps, d as DrawMeshProps, e as DisplayField, f as DisplayFieldFormat, g as BadgeVariant, C as ColorToken } from '../paintDispatch-Cp1_S93j.js';
|
|
6
|
+
export { h as Badge, i as BadgeProps, j as DrawFxLayer, k as DrawGroup, l as DrawMesh, m as DrawShape, n as DrawShapeLayer, o as DrawSkinnedMesh, p as DrawSprite, q as DrawSpriteLayer, r as DrawText, s as DrawTextLayer, t as FxOverlayKind, u as Icon, v as IconAnimation, w as IconProps, x as IconSize, y as ImageSource, L as LinkAction, z as Point, R as Rect } from '../paintDispatch-Cp1_S93j.js';
|
|
7
7
|
import { SExpr } from '@almadar/evaluator';
|
|
8
|
-
import { U as UnitAnimationState, F as FacingDirection, S as SpriteSheetUrls, f as SpriteFrameDims, R as ResolvedFrame, g as CanvasLighting, h as CanvasPost, a as IsometricUnit, i as CameraState } from '../Canvas3DHost-
|
|
9
|
-
export { B as BoardTile, G as GameAction, j as GamePhase, k as GameState, l as GameUnit, b as IsometricFeature, I as IsometricTile, P as Position, m as UnitTrait, n as calculateAttackTargets, o as calculateValidMoves, p as createInitialGameState } from '../Canvas3DHost-
|
|
10
|
-
export { G as GameAudioContext, a as GameAudioContextValue, e as GameAudioControls, b as GameAudioProvider, c as GameAudioProviderProps, U as UseGameAudioOptions, f as useGameAudio, u as useGameAudioContext } from '../GameAudioProvider-
|
|
8
|
+
import { U as UnitAnimationState, F as FacingDirection, S as SpriteSheetUrls, f as SpriteFrameDims, R as ResolvedFrame, g as CanvasLighting, h as CanvasPost, a as IsometricUnit, i as CameraState } from '../Canvas3DHost-CNjANoaU.js';
|
|
9
|
+
export { B as BoardTile, G as GameAction, j as GamePhase, k as GameState, l as GameUnit, b as IsometricFeature, I as IsometricTile, P as Position, m as UnitTrait, n as calculateAttackTargets, o as calculateValidMoves, p as createInitialGameState } from '../Canvas3DHost-CNjANoaU.js';
|
|
10
|
+
export { G as GameAudioContext, a as GameAudioContextValue, e as GameAudioControls, b as GameAudioProvider, c as GameAudioProviderProps, U as UseGameAudioOptions, f as useGameAudio, u as useGameAudioContext } from '../GameAudioProvider-Dv_L-PHt.js';
|
|
11
11
|
import { e as AvlStateMachineProps } from '../FileTree-BSfgp-HH.js';
|
|
12
12
|
export { B as BehaviorView, f as BehaviorViewProps, g as FileTree, F as FileTreeItem, h as FileTreeNode, i as FileTreeProps, M as ModuleCard, j as ModuleCardProps } from '../FileTree-BSfgp-HH.js';
|
|
13
13
|
import { LucideIcon } from 'lucide-react';
|
|
@@ -18,7 +18,7 @@ import { EmojiPickPayload, ItemActionPayload, SelectionChangePayload } from '@al
|
|
|
18
18
|
import { T as TraitLevelData } from '../avl-schema-parser-CH1QoZw1.js';
|
|
19
19
|
import { a as SlotContent, c as SlotPropValue } from '../useUISlots-1dk2TR4j.js';
|
|
20
20
|
export { D as DEFAULT_SLOTS, S as SlotChangeCallback, b as SlotRenderConfig, U as UISlotManager, u as useUISlotManager } from '../useUISlots-1dk2TR4j.js';
|
|
21
|
-
import '../verificationRegistry-
|
|
21
|
+
import '../verificationRegistry-B3dj1Zl8.js';
|
|
22
22
|
export { ALMADAR_DND_MIME, AuthContextValue, AuthUser, CanvasGestureCallbacks, CanvasGestureHandlers, CompileResult, CompileStage, DragReorderResult, DraggablePayload, Extension, ExtensionManifest, FileSystemFile, FileSystemStatus, GitHubRepo, GitHubStatus, I18nContextValue, I18nProvider, InfiniteScrollOptions, InfiniteScrollResult, LongPressHandlers, LongPressOptions, OpenFile, Positioned, PullToRefreshOptions, PullToRefreshResult, QuerySingletonEntity, QuerySingletonResult, QuerySingletonState, QueryState, RenderI18n, RenderInterpolationHandle, RenderInterpolationOptions, SelectedFile, SharedEntityStore, SharedEntityStoreContext, SharedEntitySubscriber, SharedEntityWriter, SwipeGestureOptions, SwipeGestureResult, SwipeHandlers, TapRevealOptions, TapRevealResult, TraitListenSpec, TranslateFunction, UseCanvasGesturesOptions, UseCompileResult, UseDraggableOptions, UseDraggableResult, UseDropZoneOptions, UseDropZoneResult, UseExtensionsOptions, UseExtensionsResult, UseFileEditorOptions, UseFileEditorResult, UseFileSystemResult, createSharedEntityStore, createTranslate, parseQueryBinding, runTickFrame, useAgentChat, useAuthContext, useCanvasGestures, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useDragReorder, useDraggable, useDropZone, useEmitEvent, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useFormatContext, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useInfiniteScroll, useLongPress, useMediaQuery, usePrefersReducedMotion, usePreview, usePullToRefresh, useQuerySingleton, useRenderI18n, useRenderInterpolation, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useSwipeGesture, useTapReveal, useTraitListens, useTranslate, useUIEvents, useValidation } from '../hooks/index.js';
|
|
23
23
|
export { E as EventBusContextType, a as NavStackApi, u as useNavStack } from '../NavStackContext-04NLdXsY.js';
|
|
24
24
|
export { E as EditorKeyEvent, a as KeyCaptureEntry, K as KeyCaptureTable, U as UseKeyboardRouterOptions, k as keyChord, m as mergeCaptureTables, u as useKeyboardRouter } from '../useKeyboardRouter-BW3rThep.js';
|
|
@@ -8190,6 +8190,8 @@ interface DataListProps extends DataDndProps, EmptyStateSlotProps, A11yProps {
|
|
|
8190
8190
|
variant?: 'default' | 'card' | 'compact' | 'message';
|
|
8191
8191
|
/** Group items by a field value (renders section headers between groups) */
|
|
8192
8192
|
groupBy?: string;
|
|
8193
|
+
/** How a `groupBy` value is bucketed and labelled (`date` = one section per day) */
|
|
8194
|
+
groupFormat?: DisplayFieldFormat;
|
|
8193
8195
|
/** Field name identifying the sender (used with variant: "message") */
|
|
8194
8196
|
senderField?: string;
|
|
8195
8197
|
/**
|
|
@@ -8275,7 +8277,7 @@ interface DataListProps extends DataDndProps, EmptyStateSlotProps, A11yProps {
|
|
|
8275
8277
|
* field whose type is relation. Same contract DetailPanel takes. */
|
|
8276
8278
|
relationsData?: Record<string, readonly RelationOption[]>;
|
|
8277
8279
|
}
|
|
8278
|
-
declare function DataList({ entity, fields, columns, itemActions, maxInlineActions, itemClickEvent, gap, variant, groupBy, senderField, senderLabelField, currentUser, emptyMessage, emptyIcon, emptyTitle, emptyDescription, emptyAction, className, isLoading, skeleton, error, reorderable: _reorderable, reorderEvent: _reorderEvent, swipeLeftEvent: _swipeLeftEvent, swipeLeftActions: _swipeLeftActions, swipeRightEvent: _swipeRightEvent, swipeRightActions: _swipeRightActions, longPressEvent: _longPressEvent, infiniteScroll, loadMoreEvent, hasMore, children, pageSize, sortBy, sortDirection, renderItem: schemaRenderItem, dragGroup, accepts, sortable: sortableProp, dropEvent, reorderEvent: dndReorderEvent, positionEvent, dndItemIdField, dndRoot, look, surface, relationsData, ...rest }: DataListProps): React__default.JSX.Element;
|
|
8280
|
+
declare function DataList({ entity, fields, columns, itemActions, maxInlineActions, itemClickEvent, gap, variant, groupBy, groupFormat, senderField, senderLabelField, currentUser, emptyMessage, emptyIcon, emptyTitle, emptyDescription, emptyAction, className, isLoading, skeleton, error, reorderable: _reorderable, reorderEvent: _reorderEvent, swipeLeftEvent: _swipeLeftEvent, swipeLeftActions: _swipeLeftActions, swipeRightEvent: _swipeRightEvent, swipeRightActions: _swipeRightActions, longPressEvent: _longPressEvent, infiniteScroll, loadMoreEvent, hasMore, children, pageSize, sortBy, sortDirection, renderItem: schemaRenderItem, dragGroup, accepts, sortable: sortableProp, dropEvent, reorderEvent: dndReorderEvent, positionEvent, dndItemIdField, dndRoot, look, surface, relationsData, ...rest }: DataListProps): React__default.JSX.Element;
|
|
8279
8281
|
declare namespace DataList {
|
|
8280
8282
|
var displayName: string;
|
|
8281
8283
|
}
|
package/dist/components/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export { assertUniqueSlotsPerHost } from '../chunk-O2EIWXWE.js';
|
|
2
2
|
export { keyChord, mergeCaptureTables, useAgentChat, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useExtensions, useFileEditor, useFileSystem, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useKeyboardRouter, useNavStack, usePreview, useRenderInterpolation, useTraitListens, useUIEvents, useValidation } from '../chunk-MZIDOJMD.js';
|
|
3
3
|
export { I18nProvider, SharedEntityStoreContext, createSharedEntityStore, createTranslate, runTickFrame, useFormatContext, useRenderI18n, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useTranslate } from '../chunk-N7JIG57B.js';
|
|
4
|
-
export { DEFAULT_SLOTS, useUISlotManager } from '../chunk-
|
|
4
|
+
export { DEFAULT_SLOTS, useUISlotManager } from '../chunk-L3MTZ3RH.js';
|
|
5
5
|
import '../chunk-YYYHH5BA.js';
|
|
6
|
-
import { GridPicker, Icon, Button, FormSection, Select, JsonTreeEditor, ThemedPortal, Switch, Input } from '../chunk-
|
|
7
|
-
export { ALL_PRESETS, Accordion, Card2 as ActionCard, ActionPalette, ActionTile, ActivationBlock, AgentActivityFeed, AgentActivityRow, AgentChatFeed, AgentThinkingRow, Alert, AlgoGraphCanvas, AlgorithmCanvas, AnimatedCounter, AnimatedGraphic, AnimatedReveal, Aside, AtlasImage, AtlasPanel, AuthLayout, Avatar, Badge, BehaviorView, BiologyCanvas, BloomQuizBlock, BranchingLogicBuilder, Breadcrumb, Button, ButtonGroup, COMPACT_MEDIA_QUERY, CalendarGrid, Canvas, Canvas2D, Card, CardBody, CardContent, CardFooter, CardHeader, CardTitle, Carousel, Center, ChangeList, Chart, ChartLegend, ChatBar, Checkbox, ChemistryCanvas, ChoiceButton, CodeBlock, CodeRunnerPanel, CollapsibleSection, CommandPalette, CommitRow, ConditionalWrapper, ConfettiEffect, ConfirmDialog, ConnectionBlock, Container, ContentRenderer, ControlButton, ControlGrid, CounterTemplate, DEFAULT_LIKERT_OPTION_KEYS, DEFAULT_MATRIX_COLUMN_KEYS, DIAMOND_TOP_Y, DashboardGrid, DashboardLayout, DataGrid, DataList, DateRangePicker, DateRangeSelector, DayCell, DetailPanel, Dialog, DialogueBubble, Divider, DocBreadcrumb, DocPagination, DocSearch, DocSidebar, DocTOC, DockLayout, DocumentDetails, DocumentPanel, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, ELEMENT_SELECTED_EVENT, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmojiPicker, EmptyState, ErrorBoundary, ErrorState, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureGrid, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, FloatingToolbar, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, FxOverlay, GameAudioContext, GameAudioCue, GameAudioProvider, GameAudioToggle, GameHud, GameIcon, GameMenu, GameShell, Gantt, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, GridPicker, Header, HealthBar, Icon, IconButton, Image, ImportPreviewTree, ImportProgress, ImportSourcePicker, InfiniteScrollSentinel, Input, InputGroup, JazariStateMachine, JsonTreeEditor, Label, LawReferenceTooltip, LearningCanvas, LearningScene3D, Lightbox, LikertScale, LineChart, LoadingState, MapView, MarkdownContent, MasterDetailLayout, MathCanvas, MatrixQuestion, MediaGallery, Menu, Meter, Modal, ModalSlot, ModuleCard, Navigation, NumberStepper, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, PageTransition, Pagination, PatternTile, PhysicsCanvas, Popover, PositionedCanvas, ProgressBar, ProgressDots, PullToRefresh, QrScanner, QuizBlock, Radio, RangeSlider, ReflectionBlock, RelationSelect, RepeatableFormSection, ReplyTree, RichTextEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreDisplay, SearchInput, Section, SectionHeader, SegmentRenderer, Select, SequenceBar, SidePanel, Sidebar, SignaturePad, SimpleGrid, Skeleton, SkeletonTree, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, StarRating, StatBadge, StatCard, StatDisplay, StateGraph, StateJsonView, StateMachineView, StatusBar, StatusDot, SubagentTracePanel, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, TableView, Tabs, TagInput, TerrainPalette, TextHighlight, Textarea, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TopNavItem, TraitFrame, TraitSlot, TraitStateViewer, TrendIndicator, TypewriterText, UISlotComponent, UISlotRenderer, UploadDropZone, VersionDiff, ViolationAlert, VoteStack, WizardContainer, WizardNavigation, WizardProgress, activityRowFacts, applyCompletion, applySuggestions, arrowBetween, billboardLabel, boardEntity, bool, calculateAttackTargets, calculateValidMoves, createInitialGameState, createUnitAnimationState, cylinderBetween, dispatchCommandPaletteCommand, get3DClickPayload, getCurrentFrame, getTileDimensions, groupIntoConversations, inferDirection, isoToScreen, makeAsset, makeAssetMap, meshSphere, num, objAvailableActions, objAvailableEvents, objCurrentState, objIcon, objId, objMaxRules, objName, objRules, objStates, parseEditFocus, pendulum, projectileMotion, registerCodeLanguageLoader, renderPatternValue, resolveFrame, resolveSheetDirection, rows, sanitizeRichHtml, screenToIso, springOscillator, str, tickAnimationState, toCodeLanguage, transitionAnimation, unitHealth, unitPosition, unitTeam, useAtlasSliceDataUrl, useCamera, useCompactLayout, useDockLayout, useGameAudio, useGameAudioContext, useImageCache, useUnitSpriteAtlas, vec2 } from '../chunk-
|
|
8
|
-
import { VStack, HStack, Box } from '../chunk-
|
|
9
|
-
export { Box, HStack, Stack, VStack } from '../chunk-
|
|
6
|
+
import { GridPicker, Icon, Button, FormSection, Select, JsonTreeEditor, ThemedPortal, Switch, Input } from '../chunk-E6MWYQVZ.js';
|
|
7
|
+
export { ALL_PRESETS, Accordion, Card2 as ActionCard, ActionPalette, ActionTile, ActivationBlock, AgentActivityFeed, AgentActivityRow, AgentChatFeed, AgentThinkingRow, Alert, AlgoGraphCanvas, AlgorithmCanvas, AnimatedCounter, AnimatedGraphic, AnimatedReveal, Aside, AtlasImage, AtlasPanel, AuthLayout, Avatar, Badge, BehaviorView, BiologyCanvas, BloomQuizBlock, BranchingLogicBuilder, Breadcrumb, Button, ButtonGroup, COMPACT_MEDIA_QUERY, CalendarGrid, Canvas, Canvas2D, Card, CardBody, CardContent, CardFooter, CardHeader, CardTitle, Carousel, Center, ChangeList, Chart, ChartLegend, ChatBar, Checkbox, ChemistryCanvas, ChoiceButton, CodeBlock, CodeRunnerPanel, CollapsibleSection, CommandPalette, CommitRow, ConditionalWrapper, ConfettiEffect, ConfirmDialog, ConnectionBlock, Container, ContentRenderer, ControlButton, ControlGrid, CounterTemplate, DEFAULT_LIKERT_OPTION_KEYS, DEFAULT_MATRIX_COLUMN_KEYS, DIAMOND_TOP_Y, DashboardGrid, DashboardLayout, DataGrid, DataList, DateRangePicker, DateRangeSelector, DayCell, DetailPanel, Dialog, DialogueBubble, Divider, DocBreadcrumb, DocPagination, DocSearch, DocSidebar, DocTOC, DockLayout, DocumentDetails, DocumentPanel, DocumentViewer, StateMachineView as DomStateMachineVisualizer, DrawShapeLayer, DrawSprite, DrawSpriteLayer, DrawText, DrawTextLayer, Drawer, DrawerSlot, ELEMENT_SELECTED_EVENT, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmojiPicker, EmptyState, ErrorBoundary, ErrorState, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureGrid, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, FloatingToolbar, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, FxOverlay, GameAudioContext, GameAudioCue, GameAudioProvider, GameAudioToggle, GameHud, GameIcon, GameMenu, GameShell, Gantt, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, GridPicker, Header, HealthBar, Icon, IconButton, Image, ImportPreviewTree, ImportProgress, ImportSourcePicker, InfiniteScrollSentinel, Input, InputGroup, JazariStateMachine, JsonTreeEditor, Label, LawReferenceTooltip, LearningCanvas, LearningScene3D, Lightbox, LikertScale, LineChart, LoadingState, MapView, MarkdownContent, MasterDetailLayout, MathCanvas, MatrixQuestion, MediaGallery, Menu, Meter, Modal, ModalSlot, ModuleCard, Navigation, NumberStepper, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, PageTransition, Pagination, PatternTile, PhysicsCanvas, Popover, PositionedCanvas, ProgressBar, ProgressDots, PullToRefresh, QrScanner, QuizBlock, Radio, RangeSlider, ReflectionBlock, RelationSelect, RepeatableFormSection, ReplyTree, RichTextEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreDisplay, SearchInput, Section, SectionHeader, SegmentRenderer, Select, SequenceBar, SidePanel, Sidebar, SignaturePad, SimpleGrid, Skeleton, SkeletonTree, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, StarRating, StatBadge, StatCard, StatDisplay, StateGraph, StateJsonView, StateMachineView, StatusBar, StatusDot, SubagentTracePanel, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, TableView, Tabs, TagInput, TerrainPalette, TextHighlight, Textarea, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TopNavItem, TraitFrame, TraitSlot, TraitStateViewer, TrendIndicator, TypewriterText, UISlotComponent, UISlotRenderer, UploadDropZone, VersionDiff, ViolationAlert, VoteStack, WizardContainer, WizardNavigation, WizardProgress, activityRowFacts, applyCompletion, applySuggestions, arrowBetween, billboardLabel, boardEntity, bool, calculateAttackTargets, calculateValidMoves, createInitialGameState, createUnitAnimationState, cylinderBetween, dispatchCommandPaletteCommand, get3DClickPayload, getCurrentFrame, getTileDimensions, groupIntoConversations, inferDirection, isoToScreen, makeAsset, makeAssetMap, meshSphere, num, objAvailableActions, objAvailableEvents, objCurrentState, objIcon, objId, objMaxRules, objName, objRules, objStates, parseEditFocus, pendulum, projectileMotion, registerCodeLanguageLoader, renderPatternValue, resolveFrame, resolveSheetDirection, rows, sanitizeRichHtml, screenToIso, springOscillator, str, tickAnimationState, toCodeLanguage, transitionAnimation, unitHealth, unitPosition, unitTeam, useAtlasSliceDataUrl, useCamera, useCompactLayout, useDockLayout, useGameAudio, useGameAudioContext, useImageCache, useUnitSpriteAtlas, vec2 } from '../chunk-E6MWYQVZ.js';
|
|
8
|
+
import { VStack, HStack, Box } from '../chunk-J755QADM.js';
|
|
9
|
+
export { Box, DrawFxLayer, DrawGroup, DrawMesh, DrawShape, DrawSkinnedMesh, HStack, Stack, VStack } from '../chunk-J755QADM.js';
|
|
10
10
|
import { Typography } from '../chunk-4ZGXIW3B.js';
|
|
11
11
|
export { Typography } from '../chunk-4ZGXIW3B.js';
|
|
12
12
|
export { ALMADAR_DND_MIME, parseQueryBinding, useAuthContext, useCanvasGestures, useDragReorder, useDraggable, useDropZone, useInfiniteScroll, useLongPress, useMediaQuery, usePrefersReducedMotion, usePullToRefresh, useQuerySingleton, useSwipeGesture } from '../chunk-I5QOYW2Z.js';
|