@almadar/shell-web 0.0.0-stage → 1.0.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/bundling.d.mts +18 -0
- package/bundling.mjs +28 -0
- package/dist/ArbitraryClassCompiler-CO_iASBn.d.ts +195 -0
- package/dist/AvlGlyph-EPJKFEO3.js +6 -0
- package/dist/AvlStateMachine-RKZIKNGC.js +9 -0
- package/dist/AvlTransitionDetail-63SD6GZF.js +11 -0
- package/dist/AvlTransitionExplainer-ZBTLOM3T.js +12 -0
- package/dist/BehaviorView-YS5G4GNB.js +11 -0
- package/dist/Canvas3DHost-BkZQB5l2.d.ts +552 -0
- package/dist/EventBusProvider-BFFHfN4O.d.ts +296 -0
- package/dist/FileTree-BCFnBEuQ.d.ts +254 -0
- package/dist/FlowCanvas-3JRMNJLV.css +1756 -0
- package/dist/FlowCanvas-AUMTWMNG.js +26 -0
- package/dist/GameAudioProvider-ceM_n0ey.d.ts +90 -0
- package/dist/KaTeX_AMS-Regular-CYEKBG2K.woff +0 -0
- package/dist/KaTeX_AMS-Regular-JKX5W2C4.ttf +0 -0
- package/dist/KaTeX_AMS-Regular-U6PRYMIZ.woff2 +0 -0
- package/dist/KaTeX_Caligraphic-Bold-5QL5CMTE.woff2 +0 -0
- package/dist/KaTeX_Caligraphic-Bold-WZ3QSGD3.woff +0 -0
- package/dist/KaTeX_Caligraphic-Bold-ZTS3R3HK.ttf +0 -0
- package/dist/KaTeX_Caligraphic-Regular-3LKEU76G.woff +0 -0
- package/dist/KaTeX_Caligraphic-Regular-A7XRTZ5Q.ttf +0 -0
- package/dist/KaTeX_Caligraphic-Regular-KX5MEWCF.woff2 +0 -0
- package/dist/KaTeX_Fraktur-Bold-2QVFK6NQ.woff2 +0 -0
- package/dist/KaTeX_Fraktur-Bold-T4SWXBMT.woff +0 -0
- package/dist/KaTeX_Fraktur-Bold-WGHVTYOR.ttf +0 -0
- package/dist/KaTeX_Fraktur-Regular-2PEIFJSJ.woff2 +0 -0
- package/dist/KaTeX_Fraktur-Regular-5U4OPH2X.ttf +0 -0
- package/dist/KaTeX_Fraktur-Regular-PQMHCIK6.woff +0 -0
- package/dist/KaTeX_Main-Bold-2GA4IZIN.woff +0 -0
- package/dist/KaTeX_Main-Bold-W5FBVCZM.ttf +0 -0
- package/dist/KaTeX_Main-Bold-YP5VVQRP.woff2 +0 -0
- package/dist/KaTeX_Main-BoldItalic-4P4C7HJH.woff +0 -0
- package/dist/KaTeX_Main-BoldItalic-N4V3DX7S.woff2 +0 -0
- package/dist/KaTeX_Main-BoldItalic-ODMLBJJQ.ttf +0 -0
- package/dist/KaTeX_Main-Italic-I43T2HSR.ttf +0 -0
- package/dist/KaTeX_Main-Italic-RELBIK7M.woff2 +0 -0
- package/dist/KaTeX_Main-Italic-SASNQFN2.woff +0 -0
- package/dist/KaTeX_Main-Regular-ARRPAO67.woff2 +0 -0
- package/dist/KaTeX_Main-Regular-P5I74A2A.woff +0 -0
- package/dist/KaTeX_Main-Regular-W74P5G27.ttf +0 -0
- package/dist/KaTeX_Math-BoldItalic-6EBV3DK5.woff +0 -0
- package/dist/KaTeX_Math-BoldItalic-K4WTGH3J.woff2 +0 -0
- package/dist/KaTeX_Math-BoldItalic-VB447A4D.ttf +0 -0
- package/dist/KaTeX_Math-Italic-6KGCHLFN.woff2 +0 -0
- package/dist/KaTeX_Math-Italic-KKK3USB2.woff +0 -0
- package/dist/KaTeX_Math-Italic-SON4MRCA.ttf +0 -0
- package/dist/KaTeX_SansSerif-Bold-RRNVJFFW.woff2 +0 -0
- package/dist/KaTeX_SansSerif-Bold-STQ6RXC7.ttf +0 -0
- package/dist/KaTeX_SansSerif-Bold-X5M5EMOD.woff +0 -0
- package/dist/KaTeX_SansSerif-Italic-HMPFTM52.woff2 +0 -0
- package/dist/KaTeX_SansSerif-Italic-PSN4QKYX.woff +0 -0
- package/dist/KaTeX_SansSerif-Italic-WTBAZBGY.ttf +0 -0
- package/dist/KaTeX_SansSerif-Regular-2TL3USAE.ttf +0 -0
- package/dist/KaTeX_SansSerif-Regular-OQCII6EP.woff +0 -0
- package/dist/KaTeX_SansSerif-Regular-XIQ62X4E.woff2 +0 -0
- package/dist/KaTeX_Script-Regular-72OLXYNA.ttf +0 -0
- package/dist/KaTeX_Script-Regular-A5IFOEBS.woff +0 -0
- package/dist/KaTeX_Script-Regular-APUWIHLP.woff2 +0 -0
- package/dist/KaTeX_Size1-Regular-4HRHTS65.woff +0 -0
- package/dist/KaTeX_Size1-Regular-5LRUTBFT.woff2 +0 -0
- package/dist/KaTeX_Size1-Regular-7K6AASVL.ttf +0 -0
- package/dist/KaTeX_Size2-Regular-222HN3GT.ttf +0 -0
- package/dist/KaTeX_Size2-Regular-K5ZHAIS6.woff +0 -0
- package/dist/KaTeX_Size2-Regular-LELKET5D.woff2 +0 -0
- package/dist/KaTeX_Size3-Regular-TLFPAHDE.woff +0 -0
- package/dist/KaTeX_Size3-Regular-UFCO6WCA.ttf +0 -0
- package/dist/KaTeX_Size3-Regular-WQRQ47UD.woff2 +0 -0
- package/dist/KaTeX_Size4-Regular-7PGNVPQK.ttf +0 -0
- package/dist/KaTeX_Size4-Regular-CDMV7U5C.woff2 +0 -0
- package/dist/KaTeX_Size4-Regular-PKMWZHNC.woff +0 -0
- package/dist/KaTeX_Typewriter-Regular-3F5K6SQ6.ttf +0 -0
- package/dist/KaTeX_Typewriter-Regular-MJMFSK64.woff +0 -0
- package/dist/KaTeX_Typewriter-Regular-VBYJ4NRC.woff2 +0 -0
- package/dist/KernelEngineContext-CcxGYtlr.d.ts +33 -0
- package/dist/LayersPanel-M2LHWUFF.js +6 -0
- package/dist/ModuleCard-QHDGK5XK.js +7 -0
- package/dist/OrbInspector-MHLJ6OEE.css +1756 -0
- package/dist/OrbInspector-QCPEPUPH.js +26 -0
- package/dist/Select-B-iDdnvE.d.ts +185 -0
- package/dist/ServerBridge-Bqsj-lOU.d.ts +124 -0
- package/dist/ThemeContext-DJmO59xd.d.ts +147 -0
- package/dist/UISlotContext-Dl_ewwCI.d.ts +79 -0
- package/dist/UISlotRenderer-C7WWOK43.js +26 -0
- package/dist/UISlotRenderer-KVFO6J7R.css +1756 -0
- package/dist/auth/browser/index.d.ts +2 -0
- package/dist/auth/browser/index.js +2 -0
- package/dist/auth/react/index.d.ts +56 -0
- package/dist/auth/react/index.js +157 -0
- package/dist/avl/index.css +1756 -0
- package/dist/avl/index.d.ts +2248 -0
- package/dist/avl/index.js +2693 -0
- package/dist/avl-3d-context-BycmO6tG.d.ts +201 -0
- package/dist/avl-schema-parser-CtJxJ9KU.d.ts +132 -0
- package/dist/avl-zoom-state-CKMVuBFg.d.ts +17 -0
- package/dist/chunk-3BBUBJFF.js +339 -0
- package/dist/chunk-3S54FWRC.js +131 -0
- package/dist/chunk-3VZ36ZKO.js +775 -0
- package/dist/chunk-4T3P43NS.js +1133 -0
- package/dist/chunk-4YXBKHHM.js +11488 -0
- package/dist/chunk-57DC34LY.js +525 -0
- package/dist/chunk-5QTYQTPS.js +15 -0
- package/dist/chunk-A2LR6VQQ.js +349 -0
- package/dist/chunk-AB3X7QTE.js +505 -0
- package/dist/chunk-AE7VCQB6.js +561 -0
- package/dist/chunk-AGXD77SL.js +98 -0
- package/dist/chunk-AU7O65OX.js +66 -0
- package/dist/chunk-CPLN6NBQ.js +701 -0
- package/dist/chunk-DZBQA2OW.js +176 -0
- package/dist/chunk-E6KA4J6N.js +227 -0
- package/dist/chunk-EOWMARUB.js +16 -0
- package/dist/chunk-G7DCAZ22.js +19 -0
- package/dist/chunk-GFXCPUMX.js +1334 -0
- package/dist/chunk-HH5KSMH5.js +311 -0
- package/dist/chunk-ILQXJ2AR.js +280 -0
- package/dist/chunk-ILZ7ORX7.js +432 -0
- package/dist/chunk-K4MOPSEL.js +674 -0
- package/dist/chunk-LHP2TK7O.js +47587 -0
- package/dist/chunk-P4ZFUQFF.js +93 -0
- package/dist/chunk-PCR37T3U.js +296 -0
- package/dist/chunk-PRXQGGCO.js +580 -0
- package/dist/chunk-REXYVBUO.js +191 -0
- package/dist/chunk-ROICKAU7.js +24 -0
- package/dist/chunk-SP5CDJ6K.js +338 -0
- package/dist/chunk-TUPZWTRE.js +1051 -0
- package/dist/chunk-TXAUOLWZ.js +490 -0
- package/dist/chunk-TZZBINQY.js +82 -0
- package/dist/chunk-UTDC2NEA.js +14 -0
- package/dist/chunk-UU57VNS2.js +1053 -0
- package/dist/chunk-UXLE3IPR.js +421 -0
- package/dist/chunk-VO2TTLS5.js +94 -0
- package/dist/chunk-X3DMMX27.js +11 -0
- package/dist/chunk-YHMRX6YA.js +455 -0
- package/dist/components/index.css +1756 -0
- package/dist/components/index.d.ts +11299 -0
- package/dist/components/index.js +1110 -0
- package/dist/context/index.d.ts +8 -0
- package/dist/context/index.js +8 -0
- package/dist/core.d.ts +2599 -0
- package/dist/core.js +3 -0
- package/dist/design-classes/index.cjs +431 -0
- package/dist/design-classes/index.d.cts +165 -0
- package/dist/design-classes/index.d.ts +165 -0
- package/dist/design-classes/index.js +399 -0
- package/dist/emojiItems-QGSNAABW.js +20 -0
- package/dist/fx-CmQjnHmT.d.ts +371 -0
- package/dist/hooks/index.d.ts +971 -0
- package/dist/hooks/index.js +8 -0
- package/dist/index.d.ts +408 -0
- package/dist/index.js +178 -0
- package/dist/katexPlugin-FA7NX4PE.css +1161 -0
- package/dist/katexPlugin-NCDKOOQY.js +2 -0
- package/dist/kernel-client-TZKGHJRY.js +516 -0
- package/dist/kernel-wire-wNdAPfhJ.d.ts +88 -0
- package/dist/lib/index.d.ts +602 -0
- package/dist/lib/index.js +1289 -0
- package/dist/paintDispatch-CuJLsr9Y.d.ts +688 -0
- package/dist/parseLessonSegments-GpCeMrb2.d.ts +334 -0
- package/dist/perf-CKiBKbkw.d.ts +22 -0
- package/dist/perf-Dr28-AgT.d.ts +57 -0
- package/dist/prism-X5YWKXO5.js +136 -0
- package/dist/providers/index.css +1756 -0
- package/dist/providers/index.d.ts +355 -0
- package/dist/providers/index.js +29 -0
- package/dist/renderer/index.d.ts +465 -0
- package/dist/renderer/index.js +4 -0
- package/dist/runtime/index.css +1756 -0
- package/dist/runtime/index.d.ts +239 -0
- package/dist/runtime/index.js +28 -0
- package/dist/slot-host-CPzrxLo9.d.ts +48 -0
- package/dist/ssr/index.cjs +9739 -0
- package/dist/ssr/index.d.cts +464 -0
- package/dist/ssr/index.d.ts +464 -0
- package/dist/ssr/index.js +9703 -0
- package/dist/storage/browser/index.d.ts +1 -0
- package/dist/storage/browser/index.js +2 -0
- package/dist/test-support.d.ts +42 -0
- package/dist/test-support.js +181 -0
- package/dist/themeTokens-CRd8AEDF.d.ts +125 -0
- package/dist/three/index.css +503 -0
- package/dist/three/index.d.ts +1185 -0
- package/dist/three/index.js +3908 -0
- package/dist/useUISlots-CiobNFGb.d.ts +211 -0
- package/dist/verification-C5pTeMJv.d.ts +66 -0
- package/dist/verificationRegistry-CVrcxG1s.d.ts +122 -0
- package/dist/wrapCallbackForEvent-B9QLbhxX.d.ts +19 -0
- package/index.css +199 -0
- package/package.json +273 -3
- package/src/core/lib/band-shapes.json +7 -0
- package/src/core/locales/ar.json +1276 -0
- package/src/core/locales/en.json +1276 -0
- package/src/core/locales/index.ts +54 -0
- package/src/core/locales/sl.json +1276 -0
- package/src/core/tokens/native-tokens.json +369 -0
- package/tailwind-compile.cjs +29 -0
- package/tailwind-preset.cjs +1020 -0
- package/themes/_base.css +451 -0
- package/themes/_contract.md +307 -0
- package/themes/_fonts-kenney.css +11 -0
- package/themes/_fonts.css +12 -0
- package/themes/_foundation.css +105 -0
- package/themes/_head.css +22 -0
- package/themes/_presets.css +67 -0
- package/themes/almadar-heritage.css +455 -0
- package/themes/almadar-website.css +269 -0
- package/themes/almadar.css +269 -0
- package/themes/aqua.css +455 -0
- package/themes/arabesque.css +459 -0
- package/themes/art-deco.css +457 -0
- package/themes/art-nouveau.css +459 -0
- package/themes/atelier.css +463 -0
- package/themes/bauhaus.css +461 -0
- package/themes/bloomberg-dense.css +463 -0
- package/themes/blueprint.css +457 -0
- package/themes/clay.css +449 -0
- package/themes/comic.css +453 -0
- package/themes/constructivist.css +457 -0
- package/themes/corporate.css +449 -0
- package/themes/cyberpunk.css +453 -0
- package/themes/frutiger-aero.css +458 -0
- package/themes/game-adventure.css +201 -0
- package/themes/game-rpg.css +203 -0
- package/themes/game-sci-fi.css +201 -0
- package/themes/game-ui-pack.css +200 -0
- package/themes/gazette.css +449 -0
- package/themes/glass.css +457 -0
- package/themes/gothic.css +453 -0
- package/themes/index.css +21 -0
- package/themes/ink-wash.css +459 -0
- package/themes/kawaii.css +459 -0
- package/themes/kflow.css +310 -0
- package/themes/kiosk.css +449 -0
- package/themes/linear-clean.css +463 -0
- package/themes/luxury.css +451 -0
- package/themes/mac-classic.css +455 -0
- package/themes/material.css +463 -0
- package/themes/memphis.css +453 -0
- package/themes/mid-century.css +455 -0
- package/themes/minimalist.css +449 -0
- package/themes/mudcloth.css +459 -0
- package/themes/nata.css +310 -0
- package/themes/neon.css +453 -0
- package/themes/neumorphic.css +451 -0
- package/themes/newsprint.css +455 -0
- package/themes/notion-editorial.css +463 -0
- package/themes/orb.css +465 -0
- package/themes/pixel.css +449 -0
- package/themes/prism.css +309 -0
- package/themes/rawi.css +310 -0
- package/themes/retro.css +452 -0
- package/themes/risograph.css +463 -0
- package/themes/scandi.css +469 -0
- package/themes/sketch.css +455 -0
- package/themes/solarpunk.css +469 -0
- package/themes/steampunk.css +451 -0
- package/themes/swiss.css +455 -0
- package/themes/terminal.css +466 -0
- package/themes/trait-wars.css +487 -0
- package/themes/ukiyo-e.css +459 -0
- package/themes/vaporwave.css +455 -0
- package/themes/victorian.css +453 -0
- package/themes/wabi-sabi.css +459 -0
- package/themes/win95.css +455 -0
- package/themes/wireframe.css +439 -0
- package/themes/zine.css +455 -0
- package/README.md +0 -3
|
@@ -0,0 +1,465 @@
|
|
|
1
|
+
import { PatternConfig, FieldValue, EntityRow, UISlot } from '@almadar/core';
|
|
2
|
+
export { PatternConfig, UISlot } from '@almadar/core';
|
|
3
|
+
import { PatternPropDef } from '@almadar/core/patterns';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Shared Renderer Types
|
|
8
|
+
*
|
|
9
|
+
* Type definitions used by both Builder and compiled shells for
|
|
10
|
+
* the dual execution model. These types define the contract between
|
|
11
|
+
* server and client for effect execution.
|
|
12
|
+
*
|
|
13
|
+
* @packageDocumentation
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
type ClientEffect = ['render-ui', string, PatternConfig | null] | ['navigate', string, Record<string, FieldValue>?] | ['emit', string, FieldValue?];
|
|
17
|
+
/**
|
|
18
|
+
* Resolved pattern with component information from component-mapping.json
|
|
19
|
+
*/
|
|
20
|
+
interface MappedPattern {
|
|
21
|
+
/** Component name (e.g., 'DataTable') */
|
|
22
|
+
component: string;
|
|
23
|
+
/** Import path for the component */
|
|
24
|
+
importPath: string;
|
|
25
|
+
/** Pattern category (e.g., 'display', 'form') */
|
|
26
|
+
category: string;
|
|
27
|
+
/** Validated and normalized props */
|
|
28
|
+
validatedProps: Record<string, FieldValue>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Response from server after processing an event.
|
|
32
|
+
* This is the unified response format for both Builder and compiled shells.
|
|
33
|
+
*/
|
|
34
|
+
interface EventResponse {
|
|
35
|
+
/** Whether the event was processed successfully */
|
|
36
|
+
success: boolean;
|
|
37
|
+
/** New state after transition (if transition occurred) */
|
|
38
|
+
newState?: string;
|
|
39
|
+
/** Data fetched by server effects (e.g., { Task: [...] }) */
|
|
40
|
+
data?: Record<string, EntityRow[]>;
|
|
41
|
+
/** Results of individual effect executions (for debugging) */
|
|
42
|
+
effectResults?: Array<{
|
|
43
|
+
effect: string;
|
|
44
|
+
success: boolean;
|
|
45
|
+
data?: FieldValue;
|
|
46
|
+
error?: string;
|
|
47
|
+
}>;
|
|
48
|
+
/** Error message if success is false */
|
|
49
|
+
error?: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Configuration for the client effect executor.
|
|
53
|
+
* Provides implementations for each effect type.
|
|
54
|
+
*/
|
|
55
|
+
interface ClientEffectExecutorConfig {
|
|
56
|
+
/**
|
|
57
|
+
* Render a pattern to a slot.
|
|
58
|
+
* Called for 'render-ui' effects.
|
|
59
|
+
*/
|
|
60
|
+
renderToSlot: (slot: string, pattern: PatternConfig | null) => void;
|
|
61
|
+
/**
|
|
62
|
+
* Navigate to a route.
|
|
63
|
+
* Called for 'navigate' effects.
|
|
64
|
+
*/
|
|
65
|
+
navigate: (path: string, params?: Record<string, FieldValue>) => void;
|
|
66
|
+
/**
|
|
67
|
+
* Emit an event to the event bus.
|
|
68
|
+
* Called for 'emit' effects.
|
|
69
|
+
*/
|
|
70
|
+
eventBus: {
|
|
71
|
+
emit: (event: string, payload?: FieldValue) => void;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Optional: Data from server response for render-ui.
|
|
75
|
+
* Components can use this to access fetched entity data.
|
|
76
|
+
*/
|
|
77
|
+
data?: Record<string, EntityRow[]>;
|
|
78
|
+
/**
|
|
79
|
+
* Optional: Callback when all effects have been executed.
|
|
80
|
+
*/
|
|
81
|
+
onComplete?: () => void;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Slot type classification
|
|
85
|
+
*/
|
|
86
|
+
type SlotType = 'inline' | 'portal';
|
|
87
|
+
/**
|
|
88
|
+
* Definition of a slot including its rendering behavior
|
|
89
|
+
*/
|
|
90
|
+
interface SlotDefinition {
|
|
91
|
+
/** Slot name */
|
|
92
|
+
name: UISlot;
|
|
93
|
+
/** Whether to render inline or via portal */
|
|
94
|
+
type: SlotType;
|
|
95
|
+
/** For portal slots: where to render (default: document.body) */
|
|
96
|
+
portalTarget?: string;
|
|
97
|
+
/** Z-index for portal slots */
|
|
98
|
+
zIndex?: number;
|
|
99
|
+
/**
|
|
100
|
+
* A notification surface (toast): an embedded trait's render here shows in
|
|
101
|
+
* the slot itself, never as its host frame's content. Every other slot's
|
|
102
|
+
* render of an embedded trait IS its frame content.
|
|
103
|
+
*/
|
|
104
|
+
notification?: boolean;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Context for resolving entity data.
|
|
108
|
+
* Supports multiple data sources with priority.
|
|
109
|
+
*/
|
|
110
|
+
interface DataContext {
|
|
111
|
+
/** Server-provided data (highest priority) */
|
|
112
|
+
fetchedData?: Record<string, EntityRow[]>;
|
|
113
|
+
/** In-memory mock data (for Builder preview) */
|
|
114
|
+
entityStore?: {
|
|
115
|
+
getRecords: (entityName: string) => EntityRow[];
|
|
116
|
+
};
|
|
117
|
+
/** Query singleton for filtering */
|
|
118
|
+
querySingleton?: {
|
|
119
|
+
getFilters: (queryRef: string) => Record<string, FieldValue>;
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Result of data resolution
|
|
124
|
+
*/
|
|
125
|
+
interface DataResolution {
|
|
126
|
+
/** Resolved data array */
|
|
127
|
+
data: EntityRow[];
|
|
128
|
+
/** Whether data is still loading */
|
|
129
|
+
loading: boolean;
|
|
130
|
+
/** Error if resolution failed */
|
|
131
|
+
error?: Error;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Pattern Resolver
|
|
136
|
+
*
|
|
137
|
+
* Resolves pattern configurations to component information.
|
|
138
|
+
* Uses the central pattern registry and component mapping from orbital-shared/patterns/.
|
|
139
|
+
*
|
|
140
|
+
* This is the shared logic used by both Builder's PatternRenderer and
|
|
141
|
+
* the compiled shell's UISlotRenderer.
|
|
142
|
+
*
|
|
143
|
+
* @packageDocumentation
|
|
144
|
+
*/
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Component mapping entry from component-mapping.json
|
|
148
|
+
*/
|
|
149
|
+
interface ComponentMappingEntry {
|
|
150
|
+
component: string;
|
|
151
|
+
importPath: string;
|
|
152
|
+
category: string;
|
|
153
|
+
deprecated?: boolean;
|
|
154
|
+
replacedBy?: string;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Pattern definition from registry.json
|
|
158
|
+
*/
|
|
159
|
+
interface PatternDefinition {
|
|
160
|
+
type: string;
|
|
161
|
+
category: string;
|
|
162
|
+
description: string;
|
|
163
|
+
propsSchema?: Record<string, PatternPropDef>;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Initialize the pattern resolver with mappings.
|
|
167
|
+
* Called at app startup with data from JSON files.
|
|
168
|
+
*/
|
|
169
|
+
declare function initializePatternResolver(config: {
|
|
170
|
+
componentMapping: Record<string, ComponentMappingEntry>;
|
|
171
|
+
patternRegistry: Record<string, PatternDefinition>;
|
|
172
|
+
}): void;
|
|
173
|
+
/**
|
|
174
|
+
* Set component mapping (alternative to full initialization).
|
|
175
|
+
*/
|
|
176
|
+
declare function setComponentMapping(mapping: Record<string, ComponentMappingEntry>): void;
|
|
177
|
+
/**
|
|
178
|
+
* Set pattern registry (alternative to full initialization).
|
|
179
|
+
*/
|
|
180
|
+
declare function setPatternRegistry(registry: Record<string, PatternDefinition>): void;
|
|
181
|
+
/**
|
|
182
|
+
* Resolve a pattern configuration to component information.
|
|
183
|
+
*
|
|
184
|
+
* @param config - Pattern configuration from render-ui effect
|
|
185
|
+
* @returns Resolved pattern with component name, import path, and validated props
|
|
186
|
+
* @throws Error if pattern type is unknown
|
|
187
|
+
*
|
|
188
|
+
* @example
|
|
189
|
+
* ```typescript
|
|
190
|
+
* const resolved = resolvePattern({
|
|
191
|
+
* type: 'entity-table',
|
|
192
|
+
* entity: 'Task',
|
|
193
|
+
* columns: ['title', 'status']
|
|
194
|
+
* });
|
|
195
|
+
* // resolved.component === 'DataTable'
|
|
196
|
+
* // resolved.importPath === '@/components/organisms/DataTable'
|
|
197
|
+
* ```
|
|
198
|
+
*/
|
|
199
|
+
declare function resolvePattern(config: PatternConfig): MappedPattern;
|
|
200
|
+
/**
|
|
201
|
+
* Check if a pattern type is known.
|
|
202
|
+
*/
|
|
203
|
+
declare function isKnownPattern(type: string): boolean;
|
|
204
|
+
/**
|
|
205
|
+
* Get all known pattern types.
|
|
206
|
+
*/
|
|
207
|
+
declare function getKnownPatterns(): string[];
|
|
208
|
+
/**
|
|
209
|
+
* Get patterns by category.
|
|
210
|
+
*/
|
|
211
|
+
declare function getPatternsByCategory(category: string): string[];
|
|
212
|
+
/**
|
|
213
|
+
* Get the component mapping for a pattern type.
|
|
214
|
+
*/
|
|
215
|
+
declare function getPatternMapping(type: string): ComponentMappingEntry | undefined;
|
|
216
|
+
/**
|
|
217
|
+
* Get the pattern definition from the registry.
|
|
218
|
+
*/
|
|
219
|
+
declare function getPatternDefinition(type: string): PatternDefinition | undefined;
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* Client Effect Executor
|
|
223
|
+
*
|
|
224
|
+
* Executes client effects returned from the server.
|
|
225
|
+
* This is the core of the dual execution model - the server processes
|
|
226
|
+
* events and returns client effects, which this module executes.
|
|
227
|
+
*
|
|
228
|
+
* Used by both Builder preview and compiled shells.
|
|
229
|
+
*
|
|
230
|
+
* @packageDocumentation
|
|
231
|
+
*/
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Execute an array of client effects.
|
|
235
|
+
*
|
|
236
|
+
* Effects are executed sequentially in order.
|
|
237
|
+
* Errors in one effect don't prevent subsequent effects from executing.
|
|
238
|
+
*
|
|
239
|
+
* @param effects - Array of client effects to execute
|
|
240
|
+
* @param config - Configuration providing implementations for each effect type
|
|
241
|
+
*
|
|
242
|
+
* @example
|
|
243
|
+
* ```typescript
|
|
244
|
+
* executeClientEffects(
|
|
245
|
+
* [
|
|
246
|
+
* ['render-ui', 'main', { type: 'entity-table', entity: 'Task' }],
|
|
247
|
+
* ['emit', 'TASKS_LOADED']
|
|
248
|
+
* ],
|
|
249
|
+
* {
|
|
250
|
+
* renderToSlot: (slot, pattern) => slotManager.render(slot, pattern),
|
|
251
|
+
* navigate: (path) => router.push(path),
|
|
252
|
+
* eventBus: { emit: (event, payload) => bus.emit(event, payload) }
|
|
253
|
+
* }
|
|
254
|
+
* );
|
|
255
|
+
* ```
|
|
256
|
+
*/
|
|
257
|
+
declare function executeClientEffects(effects: ClientEffect[], config: ClientEffectExecutorConfig): void;
|
|
258
|
+
/**
|
|
259
|
+
* Parse a raw effect array into a typed ClientEffect.
|
|
260
|
+
* Handles unknown effect formats gracefully.
|
|
261
|
+
*/
|
|
262
|
+
declare function parseClientEffect(raw: FieldValue[]): ClientEffect | null;
|
|
263
|
+
/**
|
|
264
|
+
* Parse an array of raw effects into typed ClientEffects.
|
|
265
|
+
* Filters out invalid effects.
|
|
266
|
+
*/
|
|
267
|
+
declare function parseClientEffects(raw: FieldValue[] | undefined): ClientEffect[];
|
|
268
|
+
/**
|
|
269
|
+
* Get all render-ui effects.
|
|
270
|
+
*/
|
|
271
|
+
declare function getRenderUIEffects(effects: ClientEffect[]): Array<['render-ui', string, PatternConfig | null]>;
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Options for the useClientEffects hook
|
|
275
|
+
*/
|
|
276
|
+
interface UseClientEffectsOptions extends ClientEffectExecutorConfig {
|
|
277
|
+
/**
|
|
278
|
+
* Whether to execute effects. Defaults to true.
|
|
279
|
+
* Set to false to temporarily disable effect execution.
|
|
280
|
+
*/
|
|
281
|
+
enabled?: boolean;
|
|
282
|
+
/**
|
|
283
|
+
* Debug mode - logs effect execution details.
|
|
284
|
+
*/
|
|
285
|
+
debug?: boolean;
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Result of useClientEffects hook
|
|
289
|
+
*/
|
|
290
|
+
interface UseClientEffectsResult {
|
|
291
|
+
/**
|
|
292
|
+
* Number of effects executed in the last batch.
|
|
293
|
+
*/
|
|
294
|
+
executedCount: number;
|
|
295
|
+
/**
|
|
296
|
+
* Whether effects are currently being executed.
|
|
297
|
+
*/
|
|
298
|
+
executing: boolean;
|
|
299
|
+
/**
|
|
300
|
+
* Manually trigger effect execution.
|
|
301
|
+
* Useful for imperative control.
|
|
302
|
+
*/
|
|
303
|
+
execute: (effects: ClientEffect[]) => void;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Execute client effects from server response.
|
|
307
|
+
*
|
|
308
|
+
* This hook automatically executes effects when they change,
|
|
309
|
+
* tracking which effects have been executed to prevent duplicates.
|
|
310
|
+
*
|
|
311
|
+
* @param effects - Array of client effects to execute (from server response)
|
|
312
|
+
* @param options - Configuration including effect implementations
|
|
313
|
+
* @returns Hook result with execution state and manual trigger
|
|
314
|
+
*
|
|
315
|
+
* @example
|
|
316
|
+
* ```typescript
|
|
317
|
+
* function useMyTrait() {
|
|
318
|
+
* const [state, setState] = useState({ pendingEffects: [] });
|
|
319
|
+
* const effectConfig = useClientEffectConfig();
|
|
320
|
+
*
|
|
321
|
+
* useClientEffects(state.pendingEffects, {
|
|
322
|
+
* ...effectConfig,
|
|
323
|
+
* onComplete: () => setState(s => ({ ...s, pendingEffects: [] }))
|
|
324
|
+
* });
|
|
325
|
+
*
|
|
326
|
+
* // ...
|
|
327
|
+
* }
|
|
328
|
+
* ```
|
|
329
|
+
*/
|
|
330
|
+
declare function useClientEffects(effects: ClientEffect[] | undefined, options: UseClientEffectsOptions): UseClientEffectsResult;
|
|
331
|
+
declare const ClientEffectConfigContext: React.Context<ClientEffectExecutorConfig | null>;
|
|
332
|
+
/**
|
|
333
|
+
* Provider for client effect configuration.
|
|
334
|
+
*/
|
|
335
|
+
declare const ClientEffectConfigProvider: React.Provider<ClientEffectExecutorConfig | null>;
|
|
336
|
+
/**
|
|
337
|
+
* Hook to get the client effect configuration from context.
|
|
338
|
+
*
|
|
339
|
+
* @throws Error if used outside of ClientEffectConfigProvider
|
|
340
|
+
*
|
|
341
|
+
* @example
|
|
342
|
+
* ```typescript
|
|
343
|
+
* function MyTraitHook() {
|
|
344
|
+
* const effectConfig = useClientEffectConfig();
|
|
345
|
+
*
|
|
346
|
+
* useClientEffects(pendingEffects, {
|
|
347
|
+
* ...effectConfig,
|
|
348
|
+
* onComplete: () => clearPendingEffects()
|
|
349
|
+
* });
|
|
350
|
+
* }
|
|
351
|
+
* ```
|
|
352
|
+
*/
|
|
353
|
+
declare function useClientEffectConfig(): ClientEffectExecutorConfig;
|
|
354
|
+
/**
|
|
355
|
+
* Hook to get client effect configuration, returning null if not available.
|
|
356
|
+
* Use this for optional integration where effects may not be configured.
|
|
357
|
+
*/
|
|
358
|
+
declare function useClientEffectConfigOptional(): ClientEffectExecutorConfig | null;
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* Data Resolver
|
|
362
|
+
*
|
|
363
|
+
* Resolves entity data for pattern rendering.
|
|
364
|
+
* Supports multiple data sources with priority:
|
|
365
|
+
* 1. Server-provided data (from EventResponse.data)
|
|
366
|
+
* 2. Entity store (Builder in-memory mock data)
|
|
367
|
+
* 3. Empty array (fallback)
|
|
368
|
+
*
|
|
369
|
+
* Used by both Builder's PatternRenderer and compiled shell's UISlotRenderer.
|
|
370
|
+
*
|
|
371
|
+
* @packageDocumentation
|
|
372
|
+
*/
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* Resolve entity data from available sources.
|
|
376
|
+
*
|
|
377
|
+
* Priority:
|
|
378
|
+
* 1. fetchedData (from server response) - highest priority
|
|
379
|
+
* 2. entityStore (Builder mock data)
|
|
380
|
+
* 3. Empty array (fallback)
|
|
381
|
+
*
|
|
382
|
+
* @param entityName - Name of the entity to resolve data for
|
|
383
|
+
* @param context - Data context with available sources
|
|
384
|
+
* @returns Resolved data with loading state
|
|
385
|
+
*
|
|
386
|
+
* @example
|
|
387
|
+
* ```typescript
|
|
388
|
+
* const { data, loading } = resolveEntityData('Task', {
|
|
389
|
+
* fetchedData: response.data,
|
|
390
|
+
* entityStore: mockStore
|
|
391
|
+
* });
|
|
392
|
+
* ```
|
|
393
|
+
*/
|
|
394
|
+
declare function resolveEntityData(entityName: string, context: DataContext): DataResolution;
|
|
395
|
+
/**
|
|
396
|
+
* Resolve entity data with query filtering.
|
|
397
|
+
*
|
|
398
|
+
* Applies query singleton filters if available.
|
|
399
|
+
*
|
|
400
|
+
* @param entityName - Name of the entity
|
|
401
|
+
* @param queryRef - Optional query reference for filtering
|
|
402
|
+
* @param context - Data context
|
|
403
|
+
* @returns Filtered resolved data
|
|
404
|
+
*/
|
|
405
|
+
declare function resolveEntityDataWithQuery(entityName: string, queryRef: string | undefined, context: DataContext): DataResolution;
|
|
406
|
+
/**
|
|
407
|
+
* Get a single entity record by ID.
|
|
408
|
+
*/
|
|
409
|
+
declare function resolveEntityById(entityName: string, id: string | number, context: DataContext): EntityRow | null;
|
|
410
|
+
/**
|
|
411
|
+
* Check if any entities exist for a given entity name.
|
|
412
|
+
*/
|
|
413
|
+
declare function hasEntities(entityName: string, context: DataContext): boolean;
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* Slot Definitions
|
|
417
|
+
*
|
|
418
|
+
* Defines the available UI slots and their rendering behavior.
|
|
419
|
+
* Slots are either inline (rendered in the component tree) or
|
|
420
|
+
* portal (rendered to document.body via React Portal).
|
|
421
|
+
*
|
|
422
|
+
* @packageDocumentation
|
|
423
|
+
*/
|
|
424
|
+
|
|
425
|
+
/**
|
|
426
|
+
* Definitions for all available UI slots.
|
|
427
|
+
*
|
|
428
|
+
* Inline slots render within the component hierarchy.
|
|
429
|
+
* Portal slots render to document.body, breaking out of overflow containers.
|
|
430
|
+
*/
|
|
431
|
+
declare const SLOT_DEFINITIONS: Partial<Record<UISlot, SlotDefinition>> & Record<'main' | 'sidebar' | 'dock' | 'modal' | 'drawer' | 'overlay' | 'center' | 'toast' | 'hud-top' | 'hud-bottom' | 'floating', SlotDefinition>;
|
|
432
|
+
/**
|
|
433
|
+
* Get the slot definition for a slot name.
|
|
434
|
+
*/
|
|
435
|
+
declare function getSlotDefinition(slot: UISlot): SlotDefinition | undefined;
|
|
436
|
+
/**
|
|
437
|
+
* Check if a slot is a portal slot.
|
|
438
|
+
*/
|
|
439
|
+
declare function isPortalSlot(slot: string): boolean;
|
|
440
|
+
/**
|
|
441
|
+
* Get all inline slots.
|
|
442
|
+
*/
|
|
443
|
+
declare function getInlineSlots(): UISlot[];
|
|
444
|
+
/**
|
|
445
|
+
* All valid slot names.
|
|
446
|
+
*/
|
|
447
|
+
declare const ALL_SLOTS: UISlot[];
|
|
448
|
+
|
|
449
|
+
/**
|
|
450
|
+
* Pattern Resolver Initialization
|
|
451
|
+
*
|
|
452
|
+
* Loads pattern registry and component mapping from @almadar/core/patterns
|
|
453
|
+
* and initializes the pattern resolver at app startup.
|
|
454
|
+
*
|
|
455
|
+
* @packageDocumentation
|
|
456
|
+
*/
|
|
457
|
+
/**
|
|
458
|
+
* Initialize the pattern resolver with shared pattern data.
|
|
459
|
+
* Must be called once at app startup before any pattern rendering.
|
|
460
|
+
* @returns The number of patterns initialized
|
|
461
|
+
*/
|
|
462
|
+
declare function initializePatterns(): number;
|
|
463
|
+
|
|
464
|
+
export { ALL_SLOTS, ClientEffectConfigContext, ClientEffectConfigProvider, SLOT_DEFINITIONS, executeClientEffects, getInlineSlots, getKnownPatterns, getPatternDefinition, getPatternMapping, getPatternsByCategory, getRenderUIEffects, getSlotDefinition, hasEntities, initializePatternResolver, initializePatterns, isKnownPattern, isPortalSlot, parseClientEffect, parseClientEffects, resolveEntityById, resolveEntityData, resolveEntityDataWithQuery, resolvePattern, setComponentMapping, setPatternRegistry, useClientEffectConfig, useClientEffectConfigOptional, useClientEffects };
|
|
465
|
+
export type { ClientEffect, ClientEffectExecutorConfig, DataContext, DataResolution, EventResponse, MappedPattern, SlotDefinition, SlotType, UseClientEffectsOptions, UseClientEffectsResult };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
export { ClientEffectConfigContext, ClientEffectConfigProvider, executeClientEffects, getKnownPatterns, getPatternDefinition, getPatternMapping, getPatternsByCategory, getRenderUIEffects, hasEntities, initializePatternResolver, initializePatterns, isKnownPattern, parseClientEffect, parseClientEffects, resolveEntityById, resolveEntityData, resolveEntityDataWithQuery, resolvePattern, setComponentMapping, setPatternRegistry, useClientEffectConfig, useClientEffectConfigOptional, useClientEffects } from '../chunk-A2LR6VQQ.js';
|
|
3
|
+
export { ALL_SLOTS, SLOT_DEFINITIONS, getInlineSlots, getSlotDefinition, isPortalSlot } from '../chunk-P4ZFUQFF.js';
|
|
4
|
+
import '../chunk-G7DCAZ22.js';
|