@almadar/ui 6.6.0 → 6.7.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 +52 -14
- package/dist/avl/index.js +52 -14
- package/dist/components/index.cjs +67 -14
- package/dist/components/index.d.cts +18 -1
- package/dist/components/index.d.ts +18 -1
- package/dist/components/index.js +67 -15
- package/dist/providers/index.cjs +52 -14
- package/dist/providers/index.js +52 -14
- package/dist/runtime/index.cjs +97 -22
- package/dist/runtime/index.d.cts +1 -0
- package/dist/runtime/index.d.ts +1 -0
- package/dist/runtime/index.js +97 -23
- package/dist/slot-host-Czc2JAxo.d.cts +47 -0
- package/dist/slot-host-Czc2JAxo.d.ts +47 -0
- package/package.json +4 -4
package/dist/components/index.js
CHANGED
|
@@ -52614,7 +52614,9 @@ function UISlotComponentInner({
|
|
|
52614
52614
|
className,
|
|
52615
52615
|
children,
|
|
52616
52616
|
pattern,
|
|
52617
|
-
sourceTrait
|
|
52617
|
+
sourceTrait,
|
|
52618
|
+
fallback,
|
|
52619
|
+
mode = "replace"
|
|
52618
52620
|
}) {
|
|
52619
52621
|
const { slots, clear } = useUISlots();
|
|
52620
52622
|
const eventBus = useEventBus();
|
|
@@ -52666,12 +52668,26 @@ function UISlotComponentInner({
|
|
|
52666
52668
|
);
|
|
52667
52669
|
}
|
|
52668
52670
|
if (!content) {
|
|
52671
|
+
if (fallback !== void 0) {
|
|
52672
|
+
return /* @__PURE__ */ jsx(
|
|
52673
|
+
Box,
|
|
52674
|
+
{
|
|
52675
|
+
id: `slot-${slot}`,
|
|
52676
|
+
className: cn("ui-slot", `ui-slot-${slot}`, className),
|
|
52677
|
+
"data-testid": `ui-slot-${slot}`,
|
|
52678
|
+
"data-slot-mode": "fallback",
|
|
52679
|
+
children: fallback
|
|
52680
|
+
}
|
|
52681
|
+
);
|
|
52682
|
+
}
|
|
52669
52683
|
if (!portal) {
|
|
52670
52684
|
return /* @__PURE__ */ jsx(
|
|
52671
52685
|
Box,
|
|
52672
52686
|
{
|
|
52673
52687
|
id: `slot-${slot}`,
|
|
52674
|
-
className: cn("ui-slot", `ui-slot-${slot}`, className)
|
|
52688
|
+
className: cn("ui-slot", `ui-slot-${slot}`, className),
|
|
52689
|
+
"data-testid": `ui-slot-${slot}`,
|
|
52690
|
+
"data-slot-mode": "empty"
|
|
52675
52691
|
}
|
|
52676
52692
|
);
|
|
52677
52693
|
}
|
|
@@ -52688,29 +52704,51 @@ function UISlotComponentInner({
|
|
|
52688
52704
|
clear(slot);
|
|
52689
52705
|
};
|
|
52690
52706
|
if (portal) {
|
|
52691
|
-
|
|
52692
|
-
|
|
52693
|
-
}
|
|
52694
|
-
return /* @__PURE__ */ jsx(
|
|
52695
|
-
SlotPortal,
|
|
52707
|
+
const inlineFallback = mode === "append" && fallback !== void 0 ? /* @__PURE__ */ jsx(
|
|
52708
|
+
Box,
|
|
52696
52709
|
{
|
|
52697
|
-
slot
|
|
52698
|
-
|
|
52699
|
-
|
|
52700
|
-
|
|
52710
|
+
id: `slot-${slot}-fallback`,
|
|
52711
|
+
className: cn("ui-slot", `ui-slot-${slot}-fallback`, className),
|
|
52712
|
+
"data-testid": `ui-slot-${slot}-fallback`,
|
|
52713
|
+
"data-slot-mode": "append",
|
|
52714
|
+
children: fallback
|
|
52701
52715
|
}
|
|
52702
|
-
);
|
|
52716
|
+
) : null;
|
|
52717
|
+
if (contained) {
|
|
52718
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
52719
|
+
inlineFallback,
|
|
52720
|
+
renderContainedPortal(t, slot, content, handleDismiss)
|
|
52721
|
+
] });
|
|
52722
|
+
}
|
|
52723
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
52724
|
+
inlineFallback,
|
|
52725
|
+
/* @__PURE__ */ jsx(
|
|
52726
|
+
SlotPortal,
|
|
52727
|
+
{
|
|
52728
|
+
slot,
|
|
52729
|
+
content,
|
|
52730
|
+
position,
|
|
52731
|
+
onDismiss: handleDismiss
|
|
52732
|
+
}
|
|
52733
|
+
)
|
|
52734
|
+
] });
|
|
52703
52735
|
}
|
|
52704
52736
|
const slotContent = /* @__PURE__ */ jsx(SlotContentRenderer, { content, onDismiss: handleDismiss });
|
|
52705
52737
|
const wrappedContent = suspenseConfig.enabled ? /* @__PURE__ */ jsx(ErrorBoundary, { children: /* @__PURE__ */ jsx(Suspense, { fallback: getSlotFallback(slot, suspenseConfig), children: slotContent }) }) : /* @__PURE__ */ jsx(ErrorBoundary, { children: slotContent });
|
|
52706
|
-
|
|
52738
|
+
const showFallback = mode === "append" && fallback !== void 0;
|
|
52739
|
+
return /* @__PURE__ */ jsxs(
|
|
52707
52740
|
Box,
|
|
52708
52741
|
{
|
|
52709
52742
|
id: `slot-${slot}`,
|
|
52710
52743
|
className: cn("ui-slot", `ui-slot-${slot}`, className),
|
|
52711
52744
|
"data-pattern": content.pattern,
|
|
52712
52745
|
"data-source-trait": content.sourceTrait,
|
|
52713
|
-
|
|
52746
|
+
"data-testid": `ui-slot-${slot}`,
|
|
52747
|
+
"data-slot-mode": showFallback ? "append" : "content",
|
|
52748
|
+
children: [
|
|
52749
|
+
showFallback ? fallback : null,
|
|
52750
|
+
/* @__PURE__ */ jsx(MaybeTraitScope, { sourceTrait: content.sourceTrait, children: wrappedContent })
|
|
52751
|
+
]
|
|
52714
52752
|
}
|
|
52715
52753
|
);
|
|
52716
52754
|
}
|
|
@@ -55918,4 +55956,18 @@ function useGitHubBranches(owner, repo, enabled = true) {
|
|
|
55918
55956
|
});
|
|
55919
55957
|
}
|
|
55920
55958
|
|
|
55921
|
-
|
|
55959
|
+
// types/slot-host.ts
|
|
55960
|
+
function assertUniqueSlotsPerHost(manifest) {
|
|
55961
|
+
const seenBySlot = /* @__PURE__ */ new Map();
|
|
55962
|
+
for (const [regionId, region] of Object.entries(manifest.regions)) {
|
|
55963
|
+
const existingRegionId = seenBySlot.get(region.slot);
|
|
55964
|
+
if (existingRegionId !== void 0) {
|
|
55965
|
+
throw new Error(
|
|
55966
|
+
`assertUniqueSlotsPerHost: regions "${existingRegionId}" and "${regionId}" both bind slot "${region.slot}" \u2014 a slot may be mounted by only one region per host.`
|
|
55967
|
+
);
|
|
55968
|
+
}
|
|
55969
|
+
seenBySlot.set(region.slot, regionId);
|
|
55970
|
+
}
|
|
55971
|
+
}
|
|
55972
|
+
|
|
55973
|
+
export { ALL_PRESETS, ALMADAR_DND_MIME, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, Card2 as ActionCard, ActionPalette, ActionTile, ActivationBlock, Alert, AlgoGraphCanvas, AlgorithmCanvas, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, Aside, AssetPicker, AtlasImage, AtlasPanel, AuthLayout, Avatar, Badge, BehaviorView, BiologyCanvas, BloomQuizBlock, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, BranchingLogicBuilder, Breadcrumb, Button, ButtonGroup, CTABanner, CalendarGrid, Canvas, Canvas2D, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, Center, Chart, ChartLegend, ChatBar, Checkbox, ChemistryCanvas, ChoiceButton, Coachmark, CodeBlock, CodeRunnerPanel, CollapsibleSection, CommandPalette, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, ConnectionBlock, Container, ContentRenderer, ContentSection, ControlButton, ControlGrid, CounterTemplate, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, DEFAULT_SLOTS, DIAMOND_TOP_Y, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, 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, EntityDisplayEvents, ErrorBoundary, ErrorState, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, FloatingToolbar, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, FxOverlay, GameAudioCue, GameAudioToggle, GameHud, GameIcon, GameMenu, GameShell, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, GridPicker, HStack, Header, HealthBar, HeroOrganism, HeroSection, I18nProvider, IDENTITY_BOOK_FIELDS, Icon, IconPicker, ImportPreviewTree, ImportProgress, ImportSourcePicker, InfiniteScrollSentinel, Input, InputGroup, InstallBox, JazariStateMachine, JsonTreeEditor, Label, LandingPageTemplate, LawReferenceTooltip, LearningCanvas, LearningScene3D, Lightbox, LikertScale, LineChart2 as LineChart, List3 as List, LoadingState, MapView, MarkdownContent, MarketingFooter, MarketingStatCard, MasterDetail, MasterDetailLayout, MathCanvas, MatrixQuestion, MediaGallery, Menu, Meter, Modal, ModalSlot, ModuleCard, Navigation, NodeSlotEditor, NotifyListener, NumberStepper, OnboardingSpotlight, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, PageTransition, Pagination, PatternTile, PhysicsCanvas, Popover, PositionedCanvas, Presence, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PropertyInspector, PullQuote, PullToRefresh, QrScanner, QuizBlock, Radio, RangeSlider, ReflectionBlock, RelationSelect, RepeatableFormSection, ReplyTree, RichTextEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreDisplay, SearchInput, Section, SectionHeader, SegmentRenderer, Select, SequenceBar, ServiceCatalog, SharedEntityStoreContext, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, SplitSection, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateGraph, StateJsonView, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StepFlow, StepFlowOrganism, SubagentTracePanel, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, TableView, Tabs, TagCloud, TagInput, TeamCard, TeamOrganism, TerrainPalette, TextHighlight, Textarea, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitFrame, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UploadDropZone, VStack, VersionDiff, ViolationAlert, VoteStack, WizardContainer, WizardNavigation, WizardProgress, arrowBetween, assertUniqueSlotsPerHost, billboardLabel, boardEntity, bool, calculateAttackTargets, calculateValidMoves, cn, createInitialGameState, createSharedEntityStore, createTranslate, createUnitAnimationState, cylinderBetween, dispatchCommandPaletteCommand, get3DClickPayload, getCurrentFrame, getTileDimensions, inferDirection, isoToScreen, makeAsset, makeAssetMap, mapBookData, meshSphere, num, objAvailableActions, objAvailableEvents, objCurrentState, objIcon, objId, objMaxRules, objName, objRules, objStates, parseEditFocus, parseLessonSegments, parseMarkdownWithCodeBlocks, parseQueryBinding, pendulum, projectileMotion, registerCodeLanguageLoader, renderPatternValue, resolveFieldMap, resolveFrame, resolveSheetDirection, rows, runTickFrame, sanitizeRichHtml, screenToIso, springOscillator, str, tickAnimationState, toCodeLanguage, transitionAnimation, unitHealth, unitPosition, unitTeam, useAgentChat, useAnchorRect, useAtlasSliceDataUrl, useAuthContext, useCamera, useCanvasGestures, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useDragReorder, useDraggable, useDropZone, useEmitEvent, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useGameAudio, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useImageCache, useInfiniteScroll, useKeyboardRouter, useLongPress, useMediaQuery, useOrbitalHistory, usePresence, usePreview, usePullToRefresh, useQuerySingleton, useRenderInterpolation, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useSwipeGesture, useTapReveal, useTraitListens, useTranslate117 as useTranslate, useUIEvents, useUISlotManager, useUnitSpriteAtlas, useValidation, vec2 };
|
package/dist/providers/index.cjs
CHANGED
|
@@ -51418,7 +51418,9 @@ function UISlotComponentInner({
|
|
|
51418
51418
|
className,
|
|
51419
51419
|
children,
|
|
51420
51420
|
pattern,
|
|
51421
|
-
sourceTrait
|
|
51421
|
+
sourceTrait,
|
|
51422
|
+
fallback,
|
|
51423
|
+
mode = "replace"
|
|
51422
51424
|
}) {
|
|
51423
51425
|
const { slots, clear } = context.useUISlots();
|
|
51424
51426
|
const eventBus = useEventBus();
|
|
@@ -51470,12 +51472,26 @@ function UISlotComponentInner({
|
|
|
51470
51472
|
);
|
|
51471
51473
|
}
|
|
51472
51474
|
if (!content) {
|
|
51475
|
+
if (fallback !== void 0) {
|
|
51476
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
51477
|
+
Box,
|
|
51478
|
+
{
|
|
51479
|
+
id: `slot-${slot}`,
|
|
51480
|
+
className: cn("ui-slot", `ui-slot-${slot}`, className),
|
|
51481
|
+
"data-testid": `ui-slot-${slot}`,
|
|
51482
|
+
"data-slot-mode": "fallback",
|
|
51483
|
+
children: fallback
|
|
51484
|
+
}
|
|
51485
|
+
);
|
|
51486
|
+
}
|
|
51473
51487
|
if (!portal) {
|
|
51474
51488
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
51475
51489
|
Box,
|
|
51476
51490
|
{
|
|
51477
51491
|
id: `slot-${slot}`,
|
|
51478
|
-
className: cn("ui-slot", `ui-slot-${slot}`, className)
|
|
51492
|
+
className: cn("ui-slot", `ui-slot-${slot}`, className),
|
|
51493
|
+
"data-testid": `ui-slot-${slot}`,
|
|
51494
|
+
"data-slot-mode": "empty"
|
|
51479
51495
|
}
|
|
51480
51496
|
);
|
|
51481
51497
|
}
|
|
@@ -51492,29 +51508,51 @@ function UISlotComponentInner({
|
|
|
51492
51508
|
clear(slot);
|
|
51493
51509
|
};
|
|
51494
51510
|
if (portal) {
|
|
51495
|
-
|
|
51496
|
-
|
|
51497
|
-
}
|
|
51498
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
51499
|
-
SlotPortal,
|
|
51511
|
+
const inlineFallback = mode === "append" && fallback !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
51512
|
+
Box,
|
|
51500
51513
|
{
|
|
51501
|
-
slot
|
|
51502
|
-
|
|
51503
|
-
|
|
51504
|
-
|
|
51514
|
+
id: `slot-${slot}-fallback`,
|
|
51515
|
+
className: cn("ui-slot", `ui-slot-${slot}-fallback`, className),
|
|
51516
|
+
"data-testid": `ui-slot-${slot}-fallback`,
|
|
51517
|
+
"data-slot-mode": "append",
|
|
51518
|
+
children: fallback
|
|
51505
51519
|
}
|
|
51506
|
-
);
|
|
51520
|
+
) : null;
|
|
51521
|
+
if (contained) {
|
|
51522
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
51523
|
+
inlineFallback,
|
|
51524
|
+
renderContainedPortal(t, slot, content, handleDismiss)
|
|
51525
|
+
] });
|
|
51526
|
+
}
|
|
51527
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
51528
|
+
inlineFallback,
|
|
51529
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
51530
|
+
SlotPortal,
|
|
51531
|
+
{
|
|
51532
|
+
slot,
|
|
51533
|
+
content,
|
|
51534
|
+
position,
|
|
51535
|
+
onDismiss: handleDismiss
|
|
51536
|
+
}
|
|
51537
|
+
)
|
|
51538
|
+
] });
|
|
51507
51539
|
}
|
|
51508
51540
|
const slotContent = /* @__PURE__ */ jsxRuntime.jsx(SlotContentRenderer, { content, onDismiss: handleDismiss });
|
|
51509
51541
|
const wrappedContent = suspenseConfig.enabled ? /* @__PURE__ */ jsxRuntime.jsx(ErrorBoundary, { children: /* @__PURE__ */ jsxRuntime.jsx(React89.Suspense, { fallback: getSlotFallback(slot, suspenseConfig), children: slotContent }) }) : /* @__PURE__ */ jsxRuntime.jsx(ErrorBoundary, { children: slotContent });
|
|
51510
|
-
|
|
51542
|
+
const showFallback = mode === "append" && fallback !== void 0;
|
|
51543
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
51511
51544
|
Box,
|
|
51512
51545
|
{
|
|
51513
51546
|
id: `slot-${slot}`,
|
|
51514
51547
|
className: cn("ui-slot", `ui-slot-${slot}`, className),
|
|
51515
51548
|
"data-pattern": content.pattern,
|
|
51516
51549
|
"data-source-trait": content.sourceTrait,
|
|
51517
|
-
|
|
51550
|
+
"data-testid": `ui-slot-${slot}`,
|
|
51551
|
+
"data-slot-mode": showFallback ? "append" : "content",
|
|
51552
|
+
children: [
|
|
51553
|
+
showFallback ? fallback : null,
|
|
51554
|
+
/* @__PURE__ */ jsxRuntime.jsx(MaybeTraitScope, { sourceTrait: content.sourceTrait, children: wrappedContent })
|
|
51555
|
+
]
|
|
51518
51556
|
}
|
|
51519
51557
|
);
|
|
51520
51558
|
}
|
package/dist/providers/index.js
CHANGED
|
@@ -51344,7 +51344,9 @@ function UISlotComponentInner({
|
|
|
51344
51344
|
className,
|
|
51345
51345
|
children,
|
|
51346
51346
|
pattern,
|
|
51347
|
-
sourceTrait
|
|
51347
|
+
sourceTrait,
|
|
51348
|
+
fallback,
|
|
51349
|
+
mode = "replace"
|
|
51348
51350
|
}) {
|
|
51349
51351
|
const { slots, clear } = useUISlots();
|
|
51350
51352
|
const eventBus = useEventBus();
|
|
@@ -51396,12 +51398,26 @@ function UISlotComponentInner({
|
|
|
51396
51398
|
);
|
|
51397
51399
|
}
|
|
51398
51400
|
if (!content) {
|
|
51401
|
+
if (fallback !== void 0) {
|
|
51402
|
+
return /* @__PURE__ */ jsx(
|
|
51403
|
+
Box,
|
|
51404
|
+
{
|
|
51405
|
+
id: `slot-${slot}`,
|
|
51406
|
+
className: cn("ui-slot", `ui-slot-${slot}`, className),
|
|
51407
|
+
"data-testid": `ui-slot-${slot}`,
|
|
51408
|
+
"data-slot-mode": "fallback",
|
|
51409
|
+
children: fallback
|
|
51410
|
+
}
|
|
51411
|
+
);
|
|
51412
|
+
}
|
|
51399
51413
|
if (!portal) {
|
|
51400
51414
|
return /* @__PURE__ */ jsx(
|
|
51401
51415
|
Box,
|
|
51402
51416
|
{
|
|
51403
51417
|
id: `slot-${slot}`,
|
|
51404
|
-
className: cn("ui-slot", `ui-slot-${slot}`, className)
|
|
51418
|
+
className: cn("ui-slot", `ui-slot-${slot}`, className),
|
|
51419
|
+
"data-testid": `ui-slot-${slot}`,
|
|
51420
|
+
"data-slot-mode": "empty"
|
|
51405
51421
|
}
|
|
51406
51422
|
);
|
|
51407
51423
|
}
|
|
@@ -51418,29 +51434,51 @@ function UISlotComponentInner({
|
|
|
51418
51434
|
clear(slot);
|
|
51419
51435
|
};
|
|
51420
51436
|
if (portal) {
|
|
51421
|
-
|
|
51422
|
-
|
|
51423
|
-
}
|
|
51424
|
-
return /* @__PURE__ */ jsx(
|
|
51425
|
-
SlotPortal,
|
|
51437
|
+
const inlineFallback = mode === "append" && fallback !== void 0 ? /* @__PURE__ */ jsx(
|
|
51438
|
+
Box,
|
|
51426
51439
|
{
|
|
51427
|
-
slot
|
|
51428
|
-
|
|
51429
|
-
|
|
51430
|
-
|
|
51440
|
+
id: `slot-${slot}-fallback`,
|
|
51441
|
+
className: cn("ui-slot", `ui-slot-${slot}-fallback`, className),
|
|
51442
|
+
"data-testid": `ui-slot-${slot}-fallback`,
|
|
51443
|
+
"data-slot-mode": "append",
|
|
51444
|
+
children: fallback
|
|
51431
51445
|
}
|
|
51432
|
-
);
|
|
51446
|
+
) : null;
|
|
51447
|
+
if (contained) {
|
|
51448
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
51449
|
+
inlineFallback,
|
|
51450
|
+
renderContainedPortal(t, slot, content, handleDismiss)
|
|
51451
|
+
] });
|
|
51452
|
+
}
|
|
51453
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
51454
|
+
inlineFallback,
|
|
51455
|
+
/* @__PURE__ */ jsx(
|
|
51456
|
+
SlotPortal,
|
|
51457
|
+
{
|
|
51458
|
+
slot,
|
|
51459
|
+
content,
|
|
51460
|
+
position,
|
|
51461
|
+
onDismiss: handleDismiss
|
|
51462
|
+
}
|
|
51463
|
+
)
|
|
51464
|
+
] });
|
|
51433
51465
|
}
|
|
51434
51466
|
const slotContent = /* @__PURE__ */ jsx(SlotContentRenderer, { content, onDismiss: handleDismiss });
|
|
51435
51467
|
const wrappedContent = suspenseConfig.enabled ? /* @__PURE__ */ jsx(ErrorBoundary, { children: /* @__PURE__ */ jsx(Suspense, { fallback: getSlotFallback(slot, suspenseConfig), children: slotContent }) }) : /* @__PURE__ */ jsx(ErrorBoundary, { children: slotContent });
|
|
51436
|
-
|
|
51468
|
+
const showFallback = mode === "append" && fallback !== void 0;
|
|
51469
|
+
return /* @__PURE__ */ jsxs(
|
|
51437
51470
|
Box,
|
|
51438
51471
|
{
|
|
51439
51472
|
id: `slot-${slot}`,
|
|
51440
51473
|
className: cn("ui-slot", `ui-slot-${slot}`, className),
|
|
51441
51474
|
"data-pattern": content.pattern,
|
|
51442
51475
|
"data-source-trait": content.sourceTrait,
|
|
51443
|
-
|
|
51476
|
+
"data-testid": `ui-slot-${slot}`,
|
|
51477
|
+
"data-slot-mode": showFallback ? "append" : "content",
|
|
51478
|
+
children: [
|
|
51479
|
+
showFallback ? fallback : null,
|
|
51480
|
+
/* @__PURE__ */ jsx(MaybeTraitScope, { sourceTrait: content.sourceTrait, children: wrappedContent })
|
|
51481
|
+
]
|
|
51444
51482
|
}
|
|
51445
51483
|
);
|
|
51446
51484
|
}
|
package/dist/runtime/index.cjs
CHANGED
|
@@ -51067,7 +51067,9 @@ function UISlotComponentInner({
|
|
|
51067
51067
|
className,
|
|
51068
51068
|
children,
|
|
51069
51069
|
pattern,
|
|
51070
|
-
sourceTrait
|
|
51070
|
+
sourceTrait,
|
|
51071
|
+
fallback,
|
|
51072
|
+
mode = "replace"
|
|
51071
51073
|
}) {
|
|
51072
51074
|
const { slots, clear } = context.useUISlots();
|
|
51073
51075
|
const eventBus = useEventBus();
|
|
@@ -51119,12 +51121,26 @@ function UISlotComponentInner({
|
|
|
51119
51121
|
);
|
|
51120
51122
|
}
|
|
51121
51123
|
if (!content) {
|
|
51124
|
+
if (fallback !== void 0) {
|
|
51125
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
51126
|
+
Box,
|
|
51127
|
+
{
|
|
51128
|
+
id: `slot-${slot}`,
|
|
51129
|
+
className: cn("ui-slot", `ui-slot-${slot}`, className),
|
|
51130
|
+
"data-testid": `ui-slot-${slot}`,
|
|
51131
|
+
"data-slot-mode": "fallback",
|
|
51132
|
+
children: fallback
|
|
51133
|
+
}
|
|
51134
|
+
);
|
|
51135
|
+
}
|
|
51122
51136
|
if (!portal) {
|
|
51123
51137
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
51124
51138
|
Box,
|
|
51125
51139
|
{
|
|
51126
51140
|
id: `slot-${slot}`,
|
|
51127
|
-
className: cn("ui-slot", `ui-slot-${slot}`, className)
|
|
51141
|
+
className: cn("ui-slot", `ui-slot-${slot}`, className),
|
|
51142
|
+
"data-testid": `ui-slot-${slot}`,
|
|
51143
|
+
"data-slot-mode": "empty"
|
|
51128
51144
|
}
|
|
51129
51145
|
);
|
|
51130
51146
|
}
|
|
@@ -51141,29 +51157,51 @@ function UISlotComponentInner({
|
|
|
51141
51157
|
clear(slot);
|
|
51142
51158
|
};
|
|
51143
51159
|
if (portal) {
|
|
51144
|
-
|
|
51145
|
-
|
|
51146
|
-
}
|
|
51147
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
51148
|
-
SlotPortal,
|
|
51160
|
+
const inlineFallback = mode === "append" && fallback !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
51161
|
+
Box,
|
|
51149
51162
|
{
|
|
51150
|
-
slot
|
|
51151
|
-
|
|
51152
|
-
|
|
51153
|
-
|
|
51163
|
+
id: `slot-${slot}-fallback`,
|
|
51164
|
+
className: cn("ui-slot", `ui-slot-${slot}-fallback`, className),
|
|
51165
|
+
"data-testid": `ui-slot-${slot}-fallback`,
|
|
51166
|
+
"data-slot-mode": "append",
|
|
51167
|
+
children: fallback
|
|
51154
51168
|
}
|
|
51155
|
-
);
|
|
51169
|
+
) : null;
|
|
51170
|
+
if (contained) {
|
|
51171
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
51172
|
+
inlineFallback,
|
|
51173
|
+
renderContainedPortal(t, slot, content, handleDismiss)
|
|
51174
|
+
] });
|
|
51175
|
+
}
|
|
51176
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
51177
|
+
inlineFallback,
|
|
51178
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
51179
|
+
SlotPortal,
|
|
51180
|
+
{
|
|
51181
|
+
slot,
|
|
51182
|
+
content,
|
|
51183
|
+
position,
|
|
51184
|
+
onDismiss: handleDismiss
|
|
51185
|
+
}
|
|
51186
|
+
)
|
|
51187
|
+
] });
|
|
51156
51188
|
}
|
|
51157
51189
|
const slotContent = /* @__PURE__ */ jsxRuntime.jsx(SlotContentRenderer, { content, onDismiss: handleDismiss });
|
|
51158
51190
|
const wrappedContent = suspenseConfig.enabled ? /* @__PURE__ */ jsxRuntime.jsx(ErrorBoundary, { children: /* @__PURE__ */ jsxRuntime.jsx(React87.Suspense, { fallback: getSlotFallback(slot, suspenseConfig), children: slotContent }) }) : /* @__PURE__ */ jsxRuntime.jsx(ErrorBoundary, { children: slotContent });
|
|
51159
|
-
|
|
51191
|
+
const showFallback = mode === "append" && fallback !== void 0;
|
|
51192
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
51160
51193
|
Box,
|
|
51161
51194
|
{
|
|
51162
51195
|
id: `slot-${slot}`,
|
|
51163
51196
|
className: cn("ui-slot", `ui-slot-${slot}`, className),
|
|
51164
51197
|
"data-pattern": content.pattern,
|
|
51165
51198
|
"data-source-trait": content.sourceTrait,
|
|
51166
|
-
|
|
51199
|
+
"data-testid": `ui-slot-${slot}`,
|
|
51200
|
+
"data-slot-mode": showFallback ? "append" : "content",
|
|
51201
|
+
children: [
|
|
51202
|
+
showFallback ? fallback : null,
|
|
51203
|
+
/* @__PURE__ */ jsxRuntime.jsx(MaybeTraitScope, { sourceTrait: content.sourceTrait, children: wrappedContent })
|
|
51204
|
+
]
|
|
51167
51205
|
}
|
|
51168
51206
|
);
|
|
51169
51207
|
}
|
|
@@ -54243,17 +54281,22 @@ function PluginRuntimeMount({
|
|
|
54243
54281
|
() => new Set(plugin.schema.orbitals.map((o) => o.name)),
|
|
54244
54282
|
[plugin.schema]
|
|
54245
54283
|
);
|
|
54284
|
+
const snapshotAllStates = React87.useCallback(() => {
|
|
54285
|
+
const states = [];
|
|
54286
|
+
if (!mockRuntime) return states;
|
|
54287
|
+
for (const orbital of plugin.schema.orbitals) {
|
|
54288
|
+
for (const traitName of traitNamesOf(orbital)) {
|
|
54289
|
+
const raw = mockRuntime.getState(orbital.name, traitName);
|
|
54290
|
+
if (isTraitState(raw)) states.push([orbital.name, traitName, raw]);
|
|
54291
|
+
}
|
|
54292
|
+
}
|
|
54293
|
+
return states;
|
|
54294
|
+
}, [mockRuntime, plugin.schema]);
|
|
54246
54295
|
React87.useEffect(() => {
|
|
54247
54296
|
let cancelled = false;
|
|
54248
54297
|
void registrationReady.then(() => {
|
|
54249
54298
|
if (cancelled || !mockRuntime) return;
|
|
54250
|
-
const states =
|
|
54251
|
-
for (const orbital of plugin.schema.orbitals) {
|
|
54252
|
-
for (const traitName of traitNamesOf(orbital)) {
|
|
54253
|
-
const raw = mockRuntime.getState(orbital.name, traitName);
|
|
54254
|
-
if (isTraitState(raw)) states.push([orbital.name, traitName, raw]);
|
|
54255
|
-
}
|
|
54256
|
-
}
|
|
54299
|
+
const states = snapshotAllStates();
|
|
54257
54300
|
if (states.length > 0) onDispatched(plugin.id, null, states);
|
|
54258
54301
|
}).catch((err) => {
|
|
54259
54302
|
if (!cancelled) onError(plugin.id, err instanceof Error ? err.message : String(err));
|
|
@@ -54261,7 +54304,24 @@ function PluginRuntimeMount({
|
|
|
54261
54304
|
return () => {
|
|
54262
54305
|
cancelled = true;
|
|
54263
54306
|
};
|
|
54264
|
-
}, [registrationReady, mockRuntime, plugin, onDispatched, onError]);
|
|
54307
|
+
}, [registrationReady, mockRuntime, plugin, onDispatched, onError, snapshotAllStates]);
|
|
54308
|
+
React87.useEffect(() => {
|
|
54309
|
+
if (!mockRuntime) return;
|
|
54310
|
+
let timer = null;
|
|
54311
|
+
const scheduleResync = () => {
|
|
54312
|
+
if (timer !== null) return;
|
|
54313
|
+
timer = setTimeout(() => {
|
|
54314
|
+
timer = null;
|
|
54315
|
+
const states = snapshotAllStates();
|
|
54316
|
+
if (states.length > 0) onDispatched(plugin.id, null, states);
|
|
54317
|
+
}, 0);
|
|
54318
|
+
};
|
|
54319
|
+
const unsub = mockRuntime.getEventBus().onAny(scheduleResync);
|
|
54320
|
+
return () => {
|
|
54321
|
+
unsub();
|
|
54322
|
+
if (timer !== null) clearTimeout(timer);
|
|
54323
|
+
};
|
|
54324
|
+
}, [mockRuntime, plugin.id, onDispatched, snapshotAllStates]);
|
|
54265
54325
|
const dispatch = React87.useCallback(
|
|
54266
54326
|
async (row, payload) => {
|
|
54267
54327
|
await registrationReady;
|
|
@@ -54378,6 +54438,20 @@ function OrbitalPluginHost({
|
|
|
54378
54438
|
] });
|
|
54379
54439
|
}
|
|
54380
54440
|
|
|
54441
|
+
// types/slot-host.ts
|
|
54442
|
+
function assertUniqueSlotsPerHost(manifest) {
|
|
54443
|
+
const seenBySlot = /* @__PURE__ */ new Map();
|
|
54444
|
+
for (const [regionId, region] of Object.entries(manifest.regions)) {
|
|
54445
|
+
const existingRegionId = seenBySlot.get(region.slot);
|
|
54446
|
+
if (existingRegionId !== void 0) {
|
|
54447
|
+
throw new Error(
|
|
54448
|
+
`assertUniqueSlotsPerHost: regions "${existingRegionId}" and "${regionId}" both bind slot "${region.slot}" \u2014 a slot may be mounted by only one region per host.`
|
|
54449
|
+
);
|
|
54450
|
+
}
|
|
54451
|
+
seenBySlot.set(region.slot, regionId);
|
|
54452
|
+
}
|
|
54453
|
+
}
|
|
54454
|
+
|
|
54381
54455
|
// runtime/index.ts
|
|
54382
54456
|
init_perf();
|
|
54383
54457
|
|
|
@@ -54456,6 +54530,7 @@ Object.defineProperty(exports, "wrapCallbackForEvent", {
|
|
|
54456
54530
|
exports.BrowserPlayground = BrowserPlayground;
|
|
54457
54531
|
exports.OrbPreview = OrbPreview;
|
|
54458
54532
|
exports.OrbitalPluginHost = OrbitalPluginHost;
|
|
54533
|
+
exports.assertUniqueSlotsPerHost = assertUniqueSlotsPerHost;
|
|
54459
54534
|
exports.clearSchemaCache = clearSchemaCache;
|
|
54460
54535
|
exports.createClientEffectHandlers = createClientEffectHandlers;
|
|
54461
54536
|
exports.useDeclaredCaptureTable = useDeclaredCaptureTable;
|
package/dist/runtime/index.d.cts
CHANGED
|
@@ -9,6 +9,7 @@ import { a as EntityBindingSource, h as ServerBridgeTransport } from '../EntityB
|
|
|
9
9
|
export { b as EntitySchemaContextValue, c as EntitySchemaProvider, d as EntitySchemaProviderProps, e as ServerBridgeContextValue, f as ServerBridgeProvider, i as ServerClientEffect, T as TraitContext, k as TraitContextValue, l as TraitInstance, m as TraitProvider, n as TraitProviderProps, o as useEntitySchema, p as useEntitySchemaOptional, q as useServerBridge, r as useTrait, s as useTraitContext } from '../EntityBindingContext-Bn3ePJQC.cjs';
|
|
10
10
|
export { PERF_NAMESPACE, PerfEntry, PreparedPreviewSchema, adjustSchemaForMockData, buildMockData, clearPerf, perfEnd, perfStart, perfTime, prepareSchemaForPreview, wrapCallbackForEvent } from '@almadar/runtime/ui';
|
|
11
11
|
import React__default, { ReactNode } from 'react';
|
|
12
|
+
export { S as SlotHostManifest, a as SlotHostRegion, b as assertUniqueSlotsPerHost } from '../slot-host-Czc2JAxo.cjs';
|
|
12
13
|
export { p as profilerOnRender, u as usePerfBuffer } from '../perf-DaVdsbU0.cjs';
|
|
13
14
|
import '../event-bus-types-Bl78kokd.cjs';
|
|
14
15
|
import '../useUISlots-GNwGLlW2.cjs';
|
package/dist/runtime/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { a as EntityBindingSource, h as ServerBridgeTransport } from '../EntityB
|
|
|
9
9
|
export { b as EntitySchemaContextValue, c as EntitySchemaProvider, d as EntitySchemaProviderProps, e as ServerBridgeContextValue, f as ServerBridgeProvider, i as ServerClientEffect, T as TraitContext, k as TraitContextValue, l as TraitInstance, m as TraitProvider, n as TraitProviderProps, o as useEntitySchema, p as useEntitySchemaOptional, q as useServerBridge, r as useTrait, s as useTraitContext } from '../EntityBindingContext-Bn3ePJQC.js';
|
|
10
10
|
export { PERF_NAMESPACE, PerfEntry, PreparedPreviewSchema, adjustSchemaForMockData, buildMockData, clearPerf, perfEnd, perfStart, perfTime, prepareSchemaForPreview, wrapCallbackForEvent } from '@almadar/runtime/ui';
|
|
11
11
|
import React__default, { ReactNode } from 'react';
|
|
12
|
+
export { S as SlotHostManifest, a as SlotHostRegion, b as assertUniqueSlotsPerHost } from '../slot-host-Czc2JAxo.js';
|
|
12
13
|
export { p as profilerOnRender, u as usePerfBuffer } from '../perf-DaVdsbU0.js';
|
|
13
14
|
import '../event-bus-types-Bl78kokd.js';
|
|
14
15
|
import '../useUISlots-GNwGLlW2.js';
|