@almadar/ui 6.58.0 → 6.61.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/BehaviorValueFrame-3ORZHPWQ.css +1252 -0
- package/dist/BehaviorValueFrame-QTD7BWOI.js +18 -0
- package/dist/{Canvas3DHost-BTvRPfsr.d.ts → Canvas3DHost-CNjANoaU.d.ts} +1 -1
- package/dist/{GameAudioProvider-kXbonWTv.d.ts → GameAudioProvider-Dv_L-PHt.d.ts} +1 -1
- package/dist/TraitValueFrame-2WMYJOA5.css +1252 -0
- package/dist/TraitValueFrame-WOXNLLMM.js +17 -0
- package/dist/Typography-BY4A2NBY.js +5 -0
- package/dist/{UISlotRenderer-N5DFYE6K.js → UISlotRenderer-EEOXSJCI.js} +10 -8
- package/dist/avl/index.cjs +31960 -27831
- package/dist/avl/index.d.ts +36 -13
- package/dist/avl/index.js +331 -6147
- package/dist/{avl-3d-context-BpBKZIbc.d.ts → avl-3d-context-Dxun3-ri.d.ts} +2 -0
- package/dist/{chunk-I2ZNE5TD.js → chunk-6PV4LASE.js} +9495 -639
- package/dist/{chunk-723MJUU3.js → chunk-6ZCU3BQN.js} +1 -1
- package/dist/{chunk-GZGDBS4S.js → chunk-7NIU5GDC.js} +2 -2
- package/dist/{chunk-YYYHH5BA.js → chunk-CB64IOYD.js} +0 -4
- package/dist/{chunk-MZIDOJMD.js → chunk-EIIQGOZW.js} +2 -1
- package/dist/chunk-F7NZ3KZQ.js +434 -0
- package/dist/{chunk-LZRW6GXG.js → chunk-FYX64CDL.js} +0 -2
- package/dist/{chunk-4ZGXIW3B.js → chunk-KZRAMPM6.js} +1 -1
- package/dist/{chunk-VHTJRS2N.js → chunk-L3MTZ3RH.js} +7 -0
- package/dist/chunk-LUREMDI3.js +49 -0
- package/dist/{chunk-HA7CJWQX.js → chunk-MGN6B6OQ.js} +1477 -1177
- package/dist/{chunk-Q47ZN2DW.js → chunk-N23SVGTH.js} +83 -1
- package/dist/{chunk-KJGVLXEN.js → chunk-N4IJS5DD.js} +50 -116
- package/dist/{chunk-I5QOYW2Z.js → chunk-UTSDPJUP.js} +205 -2
- package/dist/{chunk-V3FGTQUE.js → chunk-ZR45FGW3.js} +7 -1
- package/dist/{cn-DIql5232.d.ts → cn-CDIhHCUC.d.ts} +40 -16
- package/dist/components/index.cjs +14455 -4099
- package/dist/components/index.d.ts +165 -177
- package/dist/components/index.js +14 -15
- package/dist/context/index.cjs +16 -1
- package/dist/context/index.js +4 -2
- package/dist/hooks/index.cjs +79 -6
- package/dist/hooks/index.d.ts +43 -2
- package/dist/hooks/index.js +6 -7
- package/dist/lib/drawable/three/index.cjs +350 -26
- package/dist/lib/drawable/three/index.d.ts +5 -5
- package/dist/lib/drawable/three/index.js +28 -7
- package/dist/lib/index.cjs +90 -4
- package/dist/lib/index.d.ts +3 -3
- package/dist/lib/index.js +74 -6
- package/dist/locales/index.cjs +0 -6
- package/dist/locales/index.js +2 -2
- package/dist/{paintDispatch-BN8Vbzgs.d.ts → paintDispatch-Cp1_S93j.d.ts} +30 -2
- package/dist/providers/index.cjs +13853 -1075
- package/dist/providers/index.d.ts +38 -6
- package/dist/providers/index.js +40 -30
- package/dist/runtime/index.cjs +28369 -18287
- package/dist/runtime/index.d.ts +65 -3
- package/dist/runtime/index.js +13 -379
- package/dist/ssr/index.cjs +508 -133
- package/dist/ssr/index.d.cts +56 -4
- package/dist/ssr/index.d.ts +56 -4
- package/dist/ssr/index.js +446 -71
- package/dist/{verificationRegistry-CK76GUfH.d.ts → verificationRegistry-B5aGl7WF.d.ts} +3 -2
- package/locales/ar.json +0 -2
- package/locales/en.json +0 -2
- package/locales/sl.json +0 -2
- package/package.json +7 -7
- package/tailwind-preset.cjs +78 -8
- package/themes/_contract.md +6 -0
- package/themes/_fonts.css +4 -4
- package/themes/_foundation.css +11 -0
- package/themes/_presets.css +2 -0
- package/themes/almadar-website.css +10 -0
- package/themes/almadar.css +10 -0
- package/themes/atelier.css +10 -0
- package/themes/bauhaus.css +10 -0
- package/themes/bloomberg-dense.css +10 -0
- package/themes/clay.css +10 -0
- package/themes/corporate.css +10 -0
- package/themes/gazette.css +10 -0
- package/themes/glass.css +10 -0
- package/themes/kflow.css +5 -0
- package/themes/kiosk.css +10 -0
- package/themes/linear-clean.css +10 -0
- package/themes/material.css +10 -0
- package/themes/minimalist.css +10 -0
- package/themes/nata.css +304 -0
- package/themes/neon.css +10 -0
- package/themes/notion-editorial.css +10 -0
- package/themes/orb.css +10 -0
- package/themes/prism.css +10 -0
- package/themes/rawi.css +304 -0
- package/themes/retro.css +10 -0
- package/themes/risograph.css +10 -0
- package/themes/scandi.css +10 -0
- package/themes/solarpunk.css +10 -0
- package/themes/terminal.css +138 -128
- package/dist/Typography-LZTP72Y4.js +0 -5
- package/dist/chunk-D2E44ODB.js +0 -350
- package/dist/chunk-HB3D3HUJ.js +0 -2265
- package/dist/chunk-N7JIG57B.js +0 -138
package/dist/components/index.js
CHANGED
|
@@ -1,23 +1,22 @@
|
|
|
1
|
+
export { keyChord, mergeCaptureTables, useAgentChat, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useExtensions, useFileEditor, useFileSystem, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useKeyboardRouter, useNavStack, usePreview, useRenderInterpolation, useTraitListens, useUIEvents, useValidation } from '../chunk-EIIQGOZW.js';
|
|
1
2
|
export { assertUniqueSlotsPerHost } from '../chunk-O2EIWXWE.js';
|
|
2
|
-
|
|
3
|
-
export {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
export {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
import { Typography } from '../chunk-4ZGXIW3B.js';
|
|
11
|
-
export { Typography } from '../chunk-4ZGXIW3B.js';
|
|
12
|
-
export { ALMADAR_DND_MIME, parseQueryBinding, useAuthContext, useCanvasGestures, useDragReorder, useDraggable, useDropZone, useInfiniteScroll, useLongPress, useMediaQuery, usePrefersReducedMotion, usePullToRefresh, useQuerySingleton, useSwipeGesture } from '../chunk-I5QOYW2Z.js';
|
|
3
|
+
import { GridPicker, Icon, Button, FormSection, Select, JsonTreeEditor, ThemedPortal, Switch, Input } from '../chunk-6PV4LASE.js';
|
|
4
|
+
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-6PV4LASE.js';
|
|
5
|
+
import { VStack, HStack, Box } from '../chunk-MGN6B6OQ.js';
|
|
6
|
+
export { Box, DrawFxLayer, DrawGroup, DrawMesh, DrawShape, DrawSkinnedMesh, HStack, Stack, VStack } from '../chunk-MGN6B6OQ.js';
|
|
7
|
+
import { Typography } from '../chunk-KZRAMPM6.js';
|
|
8
|
+
export { Typography } from '../chunk-KZRAMPM6.js';
|
|
9
|
+
export { ALMADAR_DND_MIME, I18nProvider, SharedEntityStoreContext, claimDelivery, createSharedEntityStore, createTranslate, parseQueryBinding, runTickFrame, useAuthContext, useCanvasGestures, useDragReorder, useDraggable, useDropZone, useFormatContext, useInfiniteScroll, useLongPress, useMediaQuery, usePageHead, usePrefersReducedMotion, usePullToRefresh, useQuerySingleton, useRenderI18n, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useSwipeGesture, useTranslate } from '../chunk-UTSDPJUP.js';
|
|
10
|
+
import '../chunk-CB64IOYD.js';
|
|
13
11
|
export { useTapReveal } from '../chunk-XJTHMW4G.js';
|
|
14
12
|
export { useEmitEvent, useEventBus, useEventListener } from '../chunk-CHNC4UYE.js';
|
|
15
|
-
export {
|
|
16
|
-
|
|
13
|
+
export { parseLessonSegments, parseMarkdownWithCodeBlocks } from '../chunk-N4IJS5DD.js';
|
|
14
|
+
export { Presence, usePresence } from '../chunk-N23SVGTH.js';
|
|
17
15
|
import { cn, domPassthrough } from '../chunk-64WACXM7.js';
|
|
18
16
|
export { cn } from '../chunk-64WACXM7.js';
|
|
19
|
-
import '../chunk-
|
|
20
|
-
import '../chunk-
|
|
17
|
+
import '../chunk-6ZCU3BQN.js';
|
|
18
|
+
import '../chunk-FYX64CDL.js';
|
|
19
|
+
export { DEFAULT_SLOTS, useUISlotManager } from '../chunk-L3MTZ3RH.js';
|
|
21
20
|
import { getKnownPatterns, getPatternDefinition } from '../chunk-PQKU62LK.js';
|
|
22
21
|
import '../chunk-PEST66PN.js';
|
|
23
22
|
import '../chunk-QPXIAUJD.js';
|
package/dist/context/index.cjs
CHANGED
|
@@ -395,6 +395,13 @@ function useUISlotManager() {
|
|
|
395
395
|
setSources((prev) => {
|
|
396
396
|
const slotSources = prev[slot];
|
|
397
397
|
if (!slotSources || !(sourceKey in slotSources)) {
|
|
398
|
+
const embedded = traitIndexRef.current.get(sourceTrait);
|
|
399
|
+
if (embedded !== void 0 && embedded.slot === slot) {
|
|
400
|
+
unindexTrait(sourceTrait);
|
|
401
|
+
notifyTraitSubscribers(sourceTrait, null);
|
|
402
|
+
log.info("slot:cleared-embedded", { slot, sourceTrait, lastPatternType: embedded.pattern });
|
|
403
|
+
return prev;
|
|
404
|
+
}
|
|
398
405
|
log.debug("slot:clear-noop", { slot, sourceTrait, reason: !slotSources ? "no-slot" : "no-source" });
|
|
399
406
|
return prev;
|
|
400
407
|
}
|
|
@@ -592,6 +599,7 @@ var BUILT_IN_THEMES = [
|
|
|
592
599
|
{ name: "mid-century", displayName: "Mid-Century Modern", hasLightMode: true, hasDarkMode: true },
|
|
593
600
|
{ name: "minimalist", displayName: "Minimalist", hasLightMode: true, hasDarkMode: true },
|
|
594
601
|
{ name: "mudcloth", displayName: "Mudcloth", hasLightMode: true, hasDarkMode: true },
|
|
602
|
+
{ name: "nata", displayName: "Nata", hasLightMode: true, hasDarkMode: true },
|
|
595
603
|
{ name: "neon", displayName: "Neon", hasLightMode: true, hasDarkMode: true },
|
|
596
604
|
{ name: "neumorphic", displayName: "Neumorphic", hasLightMode: true, hasDarkMode: true },
|
|
597
605
|
{ name: "newsprint", displayName: "Newsprint", hasLightMode: true, hasDarkMode: true },
|
|
@@ -599,6 +607,7 @@ var BUILT_IN_THEMES = [
|
|
|
599
607
|
{ name: "orb", displayName: "Orb", hasLightMode: true, hasDarkMode: true },
|
|
600
608
|
{ name: "pixel", displayName: "Pixel Quest", hasLightMode: true, hasDarkMode: true },
|
|
601
609
|
{ name: "prism", displayName: "Prism", hasLightMode: true, hasDarkMode: true },
|
|
610
|
+
{ name: "rawi", displayName: "Rawi", hasLightMode: true, hasDarkMode: true },
|
|
602
611
|
{ name: "retro", displayName: "Retro", hasLightMode: true, hasDarkMode: true },
|
|
603
612
|
{ name: "risograph", displayName: "Risograph", hasLightMode: true, hasDarkMode: true },
|
|
604
613
|
{ name: "scandi", displayName: "Scandinavian", hasLightMode: true, hasDarkMode: true },
|
|
@@ -930,7 +939,13 @@ var SURFACE_VARS = [
|
|
|
930
939
|
{ cssVar: "--surface-card-image", key: "cardImage" },
|
|
931
940
|
{ cssVar: "--surface-page-image", key: "pageImage" },
|
|
932
941
|
{ cssVar: "--surface-page-image-size", key: "pageImageSize" },
|
|
933
|
-
{ cssVar: "--surface-diagram", key: "diagram" }
|
|
942
|
+
{ cssVar: "--surface-diagram", key: "diagram" },
|
|
943
|
+
{ cssVar: "--surface-edge-mask", key: "edgeMask" },
|
|
944
|
+
{ cssVar: "--surface-edge-height", key: "edgeHeight" },
|
|
945
|
+
{ cssVar: "--surface-texture-mask", key: "textureMask" },
|
|
946
|
+
{ cssVar: "--surface-texture-size", key: "textureSize" },
|
|
947
|
+
{ cssVar: "--surface-accent-image", key: "accentImage" },
|
|
948
|
+
{ cssVar: "--surface-scrim", key: "scrim" }
|
|
934
949
|
];
|
|
935
950
|
var DIAGRAM_VARS = [
|
|
936
951
|
{ cssVar: "--diagram-stroke-thin", key: "strokeThin" },
|
package/dist/context/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export { resolveThemeForRuntime, themeTokensToCssVars } from '../chunk-ZR45FGW3.js';
|
|
2
|
+
import { useUISlotManager } from '../chunk-L3MTZ3RH.js';
|
|
3
3
|
import '../chunk-PEST66PN.js';
|
|
4
4
|
import '../chunk-QPXIAUJD.js';
|
|
5
5
|
import { createContext, useMemo, useContext, useState, useEffect, useCallback } from 'react';
|
|
@@ -70,6 +70,7 @@ var BUILT_IN_THEMES = [
|
|
|
70
70
|
{ name: "mid-century", displayName: "Mid-Century Modern", hasLightMode: true, hasDarkMode: true },
|
|
71
71
|
{ name: "minimalist", displayName: "Minimalist", hasLightMode: true, hasDarkMode: true },
|
|
72
72
|
{ name: "mudcloth", displayName: "Mudcloth", hasLightMode: true, hasDarkMode: true },
|
|
73
|
+
{ name: "nata", displayName: "Nata", hasLightMode: true, hasDarkMode: true },
|
|
73
74
|
{ name: "neon", displayName: "Neon", hasLightMode: true, hasDarkMode: true },
|
|
74
75
|
{ name: "neumorphic", displayName: "Neumorphic", hasLightMode: true, hasDarkMode: true },
|
|
75
76
|
{ name: "newsprint", displayName: "Newsprint", hasLightMode: true, hasDarkMode: true },
|
|
@@ -77,6 +78,7 @@ var BUILT_IN_THEMES = [
|
|
|
77
78
|
{ name: "orb", displayName: "Orb", hasLightMode: true, hasDarkMode: true },
|
|
78
79
|
{ name: "pixel", displayName: "Pixel Quest", hasLightMode: true, hasDarkMode: true },
|
|
79
80
|
{ name: "prism", displayName: "Prism", hasLightMode: true, hasDarkMode: true },
|
|
81
|
+
{ name: "rawi", displayName: "Rawi", hasLightMode: true, hasDarkMode: true },
|
|
80
82
|
{ name: "retro", displayName: "Retro", hasLightMode: true, hasDarkMode: true },
|
|
81
83
|
{ name: "risograph", displayName: "Risograph", hasLightMode: true, hasDarkMode: true },
|
|
82
84
|
{ name: "scandi", displayName: "Scandinavian", hasLightMode: true, hasDarkMode: true },
|
package/dist/hooks/index.cjs
CHANGED
|
@@ -1374,6 +1374,13 @@ function useUISlotManager() {
|
|
|
1374
1374
|
setSources((prev) => {
|
|
1375
1375
|
const slotSources = prev[slot];
|
|
1376
1376
|
if (!slotSources || !(sourceKey in slotSources)) {
|
|
1377
|
+
const embedded = traitIndexRef.current.get(sourceTrait);
|
|
1378
|
+
if (embedded !== void 0 && embedded.slot === slot) {
|
|
1379
|
+
unindexTrait(sourceTrait);
|
|
1380
|
+
notifyTraitSubscribers(sourceTrait, null);
|
|
1381
|
+
log10.info("slot:cleared-embedded", { slot, sourceTrait, lastPatternType: embedded.pattern });
|
|
1382
|
+
return prev;
|
|
1383
|
+
}
|
|
1377
1384
|
log10.debug("slot:clear-noop", { slot, sourceTrait, reason: !slotSources ? "no-slot" : "no-source" });
|
|
1378
1385
|
return prev;
|
|
1379
1386
|
}
|
|
@@ -1529,6 +1536,21 @@ function endPending(key) {
|
|
|
1529
1536
|
}
|
|
1530
1537
|
React.createContext(null);
|
|
1531
1538
|
|
|
1539
|
+
// lib/bus-claim.ts
|
|
1540
|
+
var claims = /* @__PURE__ */ new WeakMap();
|
|
1541
|
+
function claimDelivery(source, trait, event) {
|
|
1542
|
+
if (source === void 0) return true;
|
|
1543
|
+
const key = `${trait}\0${event}`;
|
|
1544
|
+
const seen = claims.get(source);
|
|
1545
|
+
if (seen === void 0) {
|
|
1546
|
+
claims.set(source, /* @__PURE__ */ new Set([key]));
|
|
1547
|
+
return true;
|
|
1548
|
+
}
|
|
1549
|
+
if (seen.has(key)) return false;
|
|
1550
|
+
seen.add(key);
|
|
1551
|
+
return true;
|
|
1552
|
+
}
|
|
1553
|
+
|
|
1532
1554
|
// hooks/useUIEvents.ts
|
|
1533
1555
|
var UI_PREFIX = "UI:";
|
|
1534
1556
|
function useUIEvents(dispatch, traitName, validEvents, eventBusInstance) {
|
|
@@ -1547,6 +1569,7 @@ function useUIEvents(dispatch, traitName, validEvents, eventBusInstance) {
|
|
|
1547
1569
|
if (event.source && event.source.dispatched) {
|
|
1548
1570
|
return;
|
|
1549
1571
|
}
|
|
1572
|
+
if (!claimDelivery(event.source, traitName, smEvent)) return;
|
|
1550
1573
|
const pendingKey = event.source?.pendingKey;
|
|
1551
1574
|
const settled = dispatch(smEvent, event.payload);
|
|
1552
1575
|
if (pendingKey !== void 0 && settled instanceof Promise) {
|
|
@@ -1868,7 +1891,6 @@ var en_default = {
|
|
|
1868
1891
|
"aria.upvote": "Upvote",
|
|
1869
1892
|
"aria.downvote": "Downvote",
|
|
1870
1893
|
"aria.qrScanner": "QR scanner",
|
|
1871
|
-
"aria.mockScanDev": "Mock scan (dev)",
|
|
1872
1894
|
"aria.openMenu": "Open menu",
|
|
1873
1895
|
"aria.closeMenu": "Close menu",
|
|
1874
1896
|
"aria.openSidebar": "Open sidebar",
|
|
@@ -2066,7 +2088,6 @@ var en_default = {
|
|
|
2066
2088
|
"qrScanner.pauseScanning": "Pause scanning",
|
|
2067
2089
|
"qrScanner.switchToFrontCamera": "Switch to front camera",
|
|
2068
2090
|
"qrScanner.switchToRearCamera": "Switch to rear camera",
|
|
2069
|
-
"qrScanner.mockScan": "Mock Scan",
|
|
2070
2091
|
"docSearch.placeholder": "Search documentation...",
|
|
2071
2092
|
"stateMachine.loading": "Loading state machine\u2026",
|
|
2072
2093
|
"stateMachine.noStateMachine": "No state machine to visualize",
|
|
@@ -3129,7 +3150,6 @@ var ar_default = {
|
|
|
3129
3150
|
"aria.upvote": "\u062A\u0635\u0648\u064A\u062A \u0625\u064A\u062C\u0627\u0628\u064A",
|
|
3130
3151
|
"aria.downvote": "\u062A\u0635\u0648\u064A\u062A \u0633\u0644\u0628\u064A",
|
|
3131
3152
|
"aria.qrScanner": "\u0645\u0627\u0633\u062D QR",
|
|
3132
|
-
"aria.mockScanDev": "\u0645\u0633\u062D \u062A\u062C\u0631\u064A\u0628\u064A (\u062A\u0637\u0648\u064A\u0631)",
|
|
3133
3153
|
"aria.openMenu": "\u0641\u062A\u062D \u0627\u0644\u0642\u0627\u0626\u0645\u0629",
|
|
3134
3154
|
"aria.closeMenu": "\u0625\u063A\u0644\u0627\u0642 \u0627\u0644\u0642\u0627\u0626\u0645\u0629",
|
|
3135
3155
|
"aria.openSidebar": "\u0641\u062A\u062D \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
|
|
@@ -3327,7 +3347,6 @@ var ar_default = {
|
|
|
3327
3347
|
"qrScanner.pauseScanning": "\u0625\u064A\u0642\u0627\u0641 \u0627\u0644\u0645\u0633\u062D \u0645\u0624\u0642\u062A\u064B\u0627",
|
|
3328
3348
|
"qrScanner.switchToFrontCamera": "\u0627\u0644\u062A\u0628\u062F\u064A\u0644 \u0625\u0644\u0649 \u0627\u0644\u0643\u0627\u0645\u064A\u0631\u0627 \u0627\u0644\u0623\u0645\u0627\u0645\u064A\u0629",
|
|
3329
3349
|
"qrScanner.switchToRearCamera": "\u0627\u0644\u062A\u0628\u062F\u064A\u0644 \u0625\u0644\u0649 \u0627\u0644\u0643\u0627\u0645\u064A\u0631\u0627 \u0627\u0644\u062E\u0644\u0641\u064A\u0629",
|
|
3330
|
-
"qrScanner.mockScan": "\u0645\u0633\u062D \u062A\u062C\u0631\u064A\u0628\u064A",
|
|
3331
3350
|
"docSearch.placeholder": "\u0627\u0644\u0628\u062D\u062B \u0641\u064A \u0627\u0644\u0648\u062B\u0627\u0626\u0642...",
|
|
3332
3351
|
"stateMachine.loading": "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0622\u0644\u0629 \u0627\u0644\u062D\u0627\u0644\u0629\u2026",
|
|
3333
3352
|
"stateMachine.noStateMachine": "\u0644\u0627 \u062A\u0648\u062C\u062F \u0622\u0644\u0629 \u062D\u0627\u0644\u0629 \u0644\u0639\u0631\u0636\u0647\u0627",
|
|
@@ -4388,7 +4407,6 @@ var sl_default = {
|
|
|
4388
4407
|
"aria.upvote": "Glasuj za",
|
|
4389
4408
|
"aria.downvote": "Glasuj proti",
|
|
4390
4409
|
"aria.qrScanner": "QR skener",
|
|
4391
|
-
"aria.mockScanDev": "Simuliraj skeniranje (dev)",
|
|
4392
4410
|
"aria.openMenu": "Odpri meni",
|
|
4393
4411
|
"aria.closeMenu": "Zapri meni",
|
|
4394
4412
|
"aria.openSidebar": "Odpri stransko vrstico",
|
|
@@ -4586,7 +4604,6 @@ var sl_default = {
|
|
|
4586
4604
|
"qrScanner.pauseScanning": "Za\u010Dasno ustavi skeniranje",
|
|
4587
4605
|
"qrScanner.switchToFrontCamera": "Preklopi na sprednjo kamero",
|
|
4588
4606
|
"qrScanner.switchToRearCamera": "Preklopi na zadnjo kamero",
|
|
4589
|
-
"qrScanner.mockScan": "Preizkusno skeniranje",
|
|
4590
4607
|
"docSearch.placeholder": "Iskanje po dokumentaciji...",
|
|
4591
4608
|
"stateMachine.loading": "Nalaganje stanjskega stroja\u2026",
|
|
4592
4609
|
"stateMachine.noStateMachine": "Ni stanjskega stroja za prikaz",
|
|
@@ -6248,6 +6265,60 @@ function useGitHubBranches(owner, repo, enabled = true) {
|
|
|
6248
6265
|
// 1 minute
|
|
6249
6266
|
});
|
|
6250
6267
|
}
|
|
6268
|
+
var OWNED = "data-orb-head";
|
|
6269
|
+
var shellTitle;
|
|
6270
|
+
function ownedTag(tag, attrs) {
|
|
6271
|
+
const el = document.createElement(tag);
|
|
6272
|
+
for (const [k, v] of Object.entries(attrs)) el.setAttribute(k, v);
|
|
6273
|
+
el.setAttribute(OWNED, "");
|
|
6274
|
+
return el;
|
|
6275
|
+
}
|
|
6276
|
+
function usePageHead(input) {
|
|
6277
|
+
const { messages, locale } = useTranslate();
|
|
6278
|
+
const title = input ? core.resolvePageMeta(input.title, (k) => messages?.[k]) : void 0;
|
|
6279
|
+
const description = input ? core.resolvePageMeta(input.description, (k) => messages?.[k]) : void 0;
|
|
6280
|
+
const isPublic = input?.access !== "authenticated" && input?.indexing !== "noindex";
|
|
6281
|
+
const canonical = input?.origin !== void 0 ? `${input.origin.replace(/\/+$/, "")}${input.path}` : void 0;
|
|
6282
|
+
const siteName = input?.siteName;
|
|
6283
|
+
const active = input !== null;
|
|
6284
|
+
const originBase = input?.origin?.replace(/\/+$/, "");
|
|
6285
|
+
const hreflang = [];
|
|
6286
|
+
if (originBase !== void 0) {
|
|
6287
|
+
for (const alt of input?.alternates ?? []) hreflang.push([alt.locale, `${originBase}${alt.path}`]);
|
|
6288
|
+
const fallback = input?.alternates?.find((alt) => alt.locale === input.defaultLocale);
|
|
6289
|
+
if (fallback !== void 0) hreflang.push(["x-default", `${originBase}${fallback.path}`]);
|
|
6290
|
+
}
|
|
6291
|
+
const hreflangKey = hreflang.map(([lang, href]) => `${lang} ${href}`).join("\n");
|
|
6292
|
+
React.useEffect(() => {
|
|
6293
|
+
if (!active || typeof document === "undefined") return void 0;
|
|
6294
|
+
shellTitle ?? (shellTitle = document.title);
|
|
6295
|
+
document.title = title ?? siteName ?? shellTitle;
|
|
6296
|
+
const tags = [];
|
|
6297
|
+
if (!isPublic) tags.push(ownedTag("meta", { name: "robots", content: "noindex" }));
|
|
6298
|
+
if (isPublic && description !== void 0) {
|
|
6299
|
+
tags.push(ownedTag("meta", { name: "description", content: description }));
|
|
6300
|
+
tags.push(ownedTag("meta", { property: "og:description", content: description }));
|
|
6301
|
+
}
|
|
6302
|
+
if (isPublic && title !== void 0) tags.push(ownedTag("meta", { property: "og:title", content: title }));
|
|
6303
|
+
if (isPublic && canonical !== void 0) {
|
|
6304
|
+
tags.push(ownedTag("link", { rel: "canonical", href: canonical }));
|
|
6305
|
+
tags.push(ownedTag("meta", { property: "og:url", content: canonical }));
|
|
6306
|
+
}
|
|
6307
|
+
if (isPublic && siteName !== void 0) tags.push(ownedTag("meta", { property: "og:site_name", content: siteName }));
|
|
6308
|
+
if (isPublic) tags.push(ownedTag("meta", { property: "og:locale", content: locale }));
|
|
6309
|
+
if (isPublic && hreflangKey !== "") {
|
|
6310
|
+
for (const line of hreflangKey.split("\n")) {
|
|
6311
|
+
const space = line.indexOf(" ");
|
|
6312
|
+
tags.push(ownedTag("link", { rel: "alternate", hreflang: line.slice(0, space), href: line.slice(space + 1) }));
|
|
6313
|
+
}
|
|
6314
|
+
}
|
|
6315
|
+
for (const stale of Array.from(document.head.querySelectorAll(`[${OWNED}]`))) stale.remove();
|
|
6316
|
+
for (const tag of tags) document.head.appendChild(tag);
|
|
6317
|
+
return () => {
|
|
6318
|
+
for (const tag of tags) tag.remove();
|
|
6319
|
+
};
|
|
6320
|
+
}, [active, title, description, isPublic, canonical, siteName, locale, hreflangKey]);
|
|
6321
|
+
}
|
|
6251
6322
|
|
|
6252
6323
|
Object.defineProperty(exports, "useNavStack", {
|
|
6253
6324
|
enumerable: true,
|
|
@@ -6257,6 +6328,7 @@ exports.ALMADAR_DND_MIME = ALMADAR_DND_MIME;
|
|
|
6257
6328
|
exports.DEFAULT_SLOTS = DEFAULT_SLOTS;
|
|
6258
6329
|
exports.I18nProvider = I18nProvider;
|
|
6259
6330
|
exports.SharedEntityStoreContext = SharedEntityStoreContext;
|
|
6331
|
+
exports.claimDelivery = claimDelivery;
|
|
6260
6332
|
exports.createSharedEntityStore = createSharedEntityStore;
|
|
6261
6333
|
exports.createTranslate = createTranslate;
|
|
6262
6334
|
exports.keyChord = keyChord;
|
|
@@ -6288,6 +6360,7 @@ exports.useInfiniteScroll = useInfiniteScroll;
|
|
|
6288
6360
|
exports.useKeyboardRouter = useKeyboardRouter;
|
|
6289
6361
|
exports.useLongPress = useLongPress;
|
|
6290
6362
|
exports.useMediaQuery = useMediaQuery;
|
|
6363
|
+
exports.usePageHead = usePageHead;
|
|
6291
6364
|
exports.usePrefersReducedMotion = usePrefersReducedMotion;
|
|
6292
6365
|
exports.usePreview = usePreview;
|
|
6293
6366
|
exports.usePullToRefresh = usePullToRefresh;
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OrbitalSchema, FieldValue, EventPayload, BusEventSource, BusEventListener, EntityFrameState, EntityFieldWrite } from '@almadar/core';
|
|
1
|
+
import { OrbitalSchema, FieldValue, EventPayload, BusEventSource, BusEventListener, EntityFrameState, EntityFieldWrite, PageMeta, PageAccess, PageIndexing, LocaleAlternate } from '@almadar/core';
|
|
2
2
|
export { BusEvent, BusEventListener, BusEventSource, BusEventListener as EventListener, UISlot, Unsubscribe } from '@almadar/core';
|
|
3
3
|
import { E as EventBusContextType } from '../NavStackContext-04NLdXsY.js';
|
|
4
4
|
export { a as NavStackApi, u as useNavStack } from '../NavStackContext-04NLdXsY.js';
|
|
@@ -569,6 +569,17 @@ interface TraitListenSpec<E extends string> {
|
|
|
569
569
|
}
|
|
570
570
|
declare function useTraitListens<E extends string>(dispatch: (event: E, payload?: EventPayload) => void, listens: readonly TraitListenSpec<E>[], eventBusInstance?: ReturnType<typeof useEventBus>): void;
|
|
571
571
|
|
|
572
|
+
/**
|
|
573
|
+
* At-most-once delivery: one physical emit reaches a trait once per triggered
|
|
574
|
+
* event. Every key one emit fans to (scope-chain bubbling, a listen route)
|
|
575
|
+
* carries the same `source` object, so the first delivery to a (trait, event)
|
|
576
|
+
* claims it and the rest are the same event again. A sourceless emit is never
|
|
577
|
+
* deduplicated. Shared by the runtime ingress (`useBusIngress`), `useUIEvents`
|
|
578
|
+
* and compiled listens.
|
|
579
|
+
*/
|
|
580
|
+
|
|
581
|
+
declare function claimDelivery(source: BusEventSource | undefined, trait: string, event: string): boolean;
|
|
582
|
+
|
|
572
583
|
/** Notification callback fired after a `commit()` for the subscribed entity id. */
|
|
573
584
|
type SharedEntitySubscriber = () => void;
|
|
574
585
|
/**
|
|
@@ -1082,4 +1093,34 @@ declare function useGitHubBranches(owner: string, repo: string, enabled?: boolea
|
|
|
1082
1093
|
branches: string[];
|
|
1083
1094
|
}>, Error>;
|
|
1084
1095
|
|
|
1085
|
-
|
|
1096
|
+
/**
|
|
1097
|
+
* The active page's document head on client navigation — the same declared
|
|
1098
|
+
* contract the build writes into each route document: title, description,
|
|
1099
|
+
* canonical, social tags and the robots directive, with `i18n/t` metadata
|
|
1100
|
+
* resolved from the active locale's catalog. The tags it writes are marked
|
|
1101
|
+
* and replaced on every page change; entering an `authenticated` or
|
|
1102
|
+
* `noindex` page drops the public tags and declares `noindex`.
|
|
1103
|
+
*
|
|
1104
|
+
* @packageDocumentation
|
|
1105
|
+
*/
|
|
1106
|
+
|
|
1107
|
+
interface PageHeadInput {
|
|
1108
|
+
title?: PageMeta;
|
|
1109
|
+
description?: PageMeta;
|
|
1110
|
+
access?: PageAccess;
|
|
1111
|
+
indexing?: PageIndexing;
|
|
1112
|
+
/** The app's `origin:`, for the canonical URL. */
|
|
1113
|
+
origin?: string;
|
|
1114
|
+
/** The app's `siteName:` — the document title of a page that declares none. */
|
|
1115
|
+
siteName?: string;
|
|
1116
|
+
/** The concrete path on screen. */
|
|
1117
|
+
path: string;
|
|
1118
|
+
/** The page's translations (`localeAlternates`), written as hreflang links. */
|
|
1119
|
+
alternates?: readonly LocaleAlternate[];
|
|
1120
|
+
/** The app's first locale, the `x-default` alternate. */
|
|
1121
|
+
defaultLocale?: string;
|
|
1122
|
+
}
|
|
1123
|
+
/** Writes `input`'s head into the document; `null` writes nothing. */
|
|
1124
|
+
declare function usePageHead(input: PageHeadInput | null): void;
|
|
1125
|
+
|
|
1126
|
+
export { ALMADAR_DND_MIME, type AuthContextValue, type AuthUser, type CanvasGestureCallbacks, type CanvasGestureHandlers, type CompileResult, type CompileStage, type DragReorderResult, type DraggablePayload, EventBusContextType, type Extension, type ExtensionManifest, type FileSystemFile, type FileSystemStatus, type GitHubRepo, type GitHubStatus, type I18nContextValue, I18nProvider, type InfiniteScrollOptions, type InfiniteScrollResult, type LongPressHandlers, type LongPressOptions, type OpenFile, type PageHeadInput, type Positioned, type PullToRefreshOptions, type PullToRefreshResult, type QuerySingletonEntity, type QuerySingletonResult, type QuerySingletonState, type QueryState, type RenderI18n, type RenderInterpolationHandle, type RenderInterpolationOptions, type SelectedFile, type SharedEntityStore, SharedEntityStoreContext, type SharedEntitySubscriber, type SharedEntityWriter, type SwipeGestureOptions, type SwipeGestureResult, type SwipeHandlers, type TapRevealOptions, type TapRevealResult, type TraitListenSpec, type TranslateFunction, type UseCanvasGesturesOptions, type UseCompileResult, type UseDraggableOptions, type UseDraggableResult, type UseDropZoneOptions, type UseDropZoneResult, type UseExtensionsOptions, type UseExtensionsResult, type UseFileEditorOptions, type UseFileEditorResult, type UseFileSystemResult, claimDelivery, 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, usePageHead, usePrefersReducedMotion, usePreview, usePullToRefresh, useQuerySingleton, useRenderI18n, useRenderInterpolation, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useSwipeGesture, useTapReveal, useTraitListens, useTranslate, useUIEvents, useValidation };
|
package/dist/hooks/index.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
export { keyChord, mergeCaptureTables, useAgentChat, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useExtensions, useFileEditor, useFileSystem, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useKeyboardRouter, useNavStack, usePreview, useRenderInterpolation, useTraitListens, useUIEvents, useValidation } from '../chunk-
|
|
2
|
-
export { I18nProvider, SharedEntityStoreContext, createSharedEntityStore, createTranslate, runTickFrame, useFormatContext, useRenderI18n, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useTranslate } from '../chunk-
|
|
3
|
-
|
|
4
|
-
import '../chunk-YYYHH5BA.js';
|
|
5
|
-
export { ALMADAR_DND_MIME, parseQueryBinding, useAuthContext, useCanvasGestures, useDragReorder, useDraggable, useDropZone, useInfiniteScroll, useLongPress, useMediaQuery, usePrefersReducedMotion, usePullToRefresh, useQuerySingleton, useSwipeGesture } from '../chunk-I5QOYW2Z.js';
|
|
1
|
+
export { keyChord, mergeCaptureTables, useAgentChat, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useExtensions, useFileEditor, useFileSystem, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useKeyboardRouter, useNavStack, usePreview, useRenderInterpolation, useTraitListens, useUIEvents, useValidation } from '../chunk-EIIQGOZW.js';
|
|
2
|
+
export { ALMADAR_DND_MIME, I18nProvider, SharedEntityStoreContext, claimDelivery, createSharedEntityStore, createTranslate, parseQueryBinding, runTickFrame, useAuthContext, useCanvasGestures, useDragReorder, useDraggable, useDropZone, useFormatContext, useInfiniteScroll, useLongPress, useMediaQuery, usePageHead, usePrefersReducedMotion, usePullToRefresh, useQuerySingleton, useRenderI18n, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useSwipeGesture, useTranslate } from '../chunk-UTSDPJUP.js';
|
|
3
|
+
import '../chunk-CB64IOYD.js';
|
|
6
4
|
export { useTapReveal } from '../chunk-XJTHMW4G.js';
|
|
7
5
|
export { useEmitEvent, useEventBus, useEventListener } from '../chunk-CHNC4UYE.js';
|
|
8
|
-
import '../chunk-
|
|
9
|
-
import '../chunk-
|
|
6
|
+
import '../chunk-6ZCU3BQN.js';
|
|
7
|
+
import '../chunk-FYX64CDL.js';
|
|
8
|
+
export { DEFAULT_SLOTS, useUISlotManager } from '../chunk-L3MTZ3RH.js';
|
|
10
9
|
import '../chunk-PEST66PN.js';
|
|
11
10
|
import '../chunk-QPXIAUJD.js';
|