@almadar/ui 2.15.7 → 2.15.10
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/components/atoms/ContentSection.d.ts +16 -0
- package/dist/components/atoms/SectionHeader.d.ts +14 -0
- package/dist/components/atoms/StatCard.d.ts +13 -0
- package/dist/components/atoms/index.d.ts +3 -0
- package/dist/components/atoms/svg/SvgBranch.d.ts +12 -0
- package/dist/components/atoms/svg/SvgConnection.d.ts +13 -0
- package/dist/components/atoms/svg/SvgFlow.d.ts +10 -0
- package/dist/components/atoms/svg/SvgGrid.d.ts +14 -0
- package/dist/components/atoms/svg/SvgLobe.d.ts +13 -0
- package/dist/components/atoms/svg/SvgMesh.d.ts +12 -0
- package/dist/components/atoms/svg/SvgMorph.d.ts +11 -0
- package/dist/components/atoms/svg/SvgNode.d.ts +12 -0
- package/dist/components/atoms/svg/SvgPulse.d.ts +12 -0
- package/dist/components/atoms/svg/SvgRing.d.ts +13 -0
- package/dist/components/atoms/svg/SvgShield.d.ts +11 -0
- package/dist/components/atoms/svg/SvgStack.d.ts +13 -0
- package/dist/components/atoms/svg/index.d.ts +12 -0
- package/dist/{chunk-K43H3ZDY.js → components/index.cjs} +24780 -16651
- package/dist/components/index.js +37757 -889
- package/dist/components/molecules/AnimatedCounter.d.ts +18 -0
- package/dist/components/molecules/ArticleSection.d.ts +18 -0
- package/dist/components/molecules/CTABanner.d.ts +31 -0
- package/dist/components/molecules/CaseStudyCard.d.ts +24 -0
- package/dist/components/molecules/CodeExample.d.ts +23 -0
- package/dist/components/molecules/CommunityLinks.d.ts +25 -0
- package/dist/components/molecules/DocBreadcrumb.d.ts +20 -0
- package/dist/components/molecules/DocCodeBlock.d.ts +13 -0
- package/dist/components/molecules/DocPagination.d.ts +14 -0
- package/dist/components/molecules/DocSearch.d.ts +15 -0
- package/dist/components/molecules/DocSidebar.d.ts +24 -0
- package/dist/components/molecules/DocTOC.d.ts +24 -0
- package/dist/components/molecules/FeatureCard.d.ts +26 -0
- package/dist/components/molecules/FeatureGrid.d.ts +19 -0
- package/dist/components/molecules/GradientDivider.d.ts +14 -0
- package/dist/components/molecules/HeroSection.d.ts +36 -0
- package/dist/components/molecules/InstallBox.d.ts +16 -0
- package/dist/components/molecules/MarketingFooter.d.ts +27 -0
- package/dist/components/molecules/PricingCard.d.ts +21 -0
- package/dist/components/molecules/PricingGrid.d.ts +13 -0
- package/dist/components/molecules/PullQuote.d.ts +14 -0
- package/dist/components/molecules/ServiceCatalog.d.ts +19 -0
- package/dist/components/molecules/ShowcaseCard.d.ts +20 -0
- package/dist/components/molecules/SocialProof.d.ts +25 -0
- package/dist/components/molecules/SplitSection.d.ts +21 -0
- package/dist/components/molecules/StatsGrid.d.ts +17 -0
- package/dist/components/molecules/StepFlow.d.ts +20 -0
- package/dist/components/molecules/TagCloud.d.ts +18 -0
- package/dist/components/molecules/TeamCard.d.ts +18 -0
- package/dist/components/molecules/index.d.ts +19 -0
- package/dist/components/molecules/svg/AIGenerates.d.ts +7 -0
- package/dist/components/molecules/svg/ClosedCircuit.d.ts +7 -0
- package/dist/components/molecules/svg/CommunityOwnership.d.ts +7 -0
- package/dist/components/molecules/svg/CompileAnywhere.d.ts +7 -0
- package/dist/components/molecules/svg/ComposableModels.d.ts +7 -0
- package/dist/components/molecules/svg/DescribeProveDeploy.d.ts +7 -0
- package/dist/components/molecules/svg/DomainGrid.d.ts +7 -0
- package/dist/components/molecules/svg/EventBus.d.ts +7 -0
- package/dist/components/molecules/svg/OrbitalUnit.d.ts +7 -0
- package/dist/components/molecules/svg/PlanVerifyRemember.d.ts +7 -0
- package/dist/components/molecules/svg/ProveCorrect.d.ts +7 -0
- package/dist/components/molecules/svg/ServiceLayers.d.ts +7 -0
- package/dist/components/molecules/svg/SharedReality.d.ts +7 -0
- package/dist/components/molecules/svg/StandardLibrary.d.ts +7 -0
- package/dist/components/molecules/svg/StateMachine.d.ts +7 -0
- package/dist/components/molecules/svg/WorldModel.d.ts +7 -0
- package/dist/components/molecules/svg/index.d.ts +16 -0
- package/dist/components/organisms/CaseStudyOrganism.d.ts +19 -0
- package/dist/components/organisms/FeatureGridOrganism.d.ts +20 -0
- package/dist/components/organisms/HeroOrganism.d.ts +18 -0
- package/dist/components/organisms/PricingOrganism.d.ts +19 -0
- package/dist/components/organisms/ShowcaseOrganism.d.ts +20 -0
- package/dist/components/organisms/StatsOrganism.d.ts +17 -0
- package/dist/components/organisms/StepFlowOrganism.d.ts +20 -0
- package/dist/components/organisms/TeamOrganism.d.ts +18 -0
- package/dist/components/organisms/UISlotRenderer.d.ts +1 -0
- package/dist/components/organisms/game/three/index.cjs +2525 -0
- package/dist/components/organisms/game/three/index.js +1795 -50
- package/dist/components/organisms/index.d.ts +9 -0
- package/dist/components/organisms/marketing-types.d.ts +87 -0
- package/dist/components/templates/AboutPageTemplate.d.ts +26 -0
- package/dist/components/templates/DashboardLayout.d.ts +2 -1
- package/dist/components/templates/FeatureDetailPageTemplate.d.ts +27 -0
- package/dist/components/templates/LandingPageTemplate.d.ts +31 -0
- package/dist/components/templates/PricingPageTemplate.d.ts +26 -0
- package/dist/components/templates/index.d.ts +4 -0
- package/dist/context/index.cjs +550 -0
- package/dist/context/index.js +420 -6
- package/dist/docs/index.cjs +4015 -0
- package/dist/docs/index.d.cts +412 -0
- package/dist/docs/index.d.ts +29 -0
- package/dist/docs/index.js +3977 -0
- package/dist/hooks/index.cjs +2606 -0
- package/dist/hooks/index.js +2535 -8
- package/dist/illustrations/index.cjs +3004 -0
- package/dist/illustrations/index.d.cts +261 -0
- package/dist/illustrations/index.d.ts +35 -0
- package/dist/illustrations/index.js +2971 -0
- package/dist/{chunk-XL7WB2O5.js → lib/index.cjs} +454 -274
- package/dist/lib/index.js +1407 -3
- package/dist/locales/index.cjs +340 -0
- package/dist/locales/index.js +105 -2
- package/dist/marketing/index.cjs +4683 -0
- package/dist/marketing/index.d.cts +831 -0
- package/dist/marketing/index.d.ts +62 -0
- package/dist/marketing/index.js +4626 -0
- package/dist/providers/index.cjs +4811 -0
- package/dist/providers/index.js +4765 -11
- package/dist/{chunk-K2D5D3WK.js → renderer/index.cjs} +101 -42
- package/dist/renderer/index.js +1036 -2
- package/dist/runtime/index.cjs +4400 -0
- package/dist/runtime/index.js +3615 -19
- package/dist/{chunk-N7MVUW4R.js → stores/index.cjs} +24 -1
- package/dist/stores/index.js +194 -2
- package/dist/tsup.config.d.ts +2 -1
- package/package.json +27 -12
- package/tailwind-preset.cjs +27 -2
- package/themes/index.css +22 -20
- package/dist/chunk-3HJHHULT.js +0 -93
- package/dist/chunk-3JGAROCW.js +0 -149
- package/dist/chunk-4N3BAPDB.js +0 -1667
- package/dist/chunk-CDIOHSKG.js +0 -661
- package/dist/chunk-DKQN5FVU.js +0 -279
- package/dist/chunk-GF6RQBO7.js +0 -375
- package/dist/chunk-PKBMQBKP.js +0 -5
- package/dist/chunk-QIABKRCN.js +0 -107
- package/dist/chunk-SD3KVCY6.js +0 -1465
- package/dist/chunk-YXZM3WCF.js +0 -222
package/dist/chunk-DKQN5FVU.js
DELETED
|
@@ -1,279 +0,0 @@
|
|
|
1
|
-
import { useUISlotManager } from './chunk-3JGAROCW.js';
|
|
2
|
-
import { createContext, useMemo, useState, useEffect, useCallback, useContext } from 'react';
|
|
3
|
-
import { jsx } from 'react/jsx-runtime';
|
|
4
|
-
|
|
5
|
-
var BUILT_IN_THEMES = [
|
|
6
|
-
{
|
|
7
|
-
name: "wireframe",
|
|
8
|
-
displayName: "Wireframe",
|
|
9
|
-
hasLightMode: true,
|
|
10
|
-
hasDarkMode: true
|
|
11
|
-
},
|
|
12
|
-
{
|
|
13
|
-
name: "minimalist",
|
|
14
|
-
displayName: "Minimalist",
|
|
15
|
-
hasLightMode: true,
|
|
16
|
-
hasDarkMode: true
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
name: "almadar",
|
|
20
|
-
displayName: "Almadar",
|
|
21
|
-
hasLightMode: true,
|
|
22
|
-
hasDarkMode: true
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
name: "trait-wars",
|
|
26
|
-
displayName: "Trait Wars",
|
|
27
|
-
hasLightMode: false,
|
|
28
|
-
hasDarkMode: true
|
|
29
|
-
},
|
|
30
|
-
// Extended themes
|
|
31
|
-
{
|
|
32
|
-
name: "ocean",
|
|
33
|
-
displayName: "Ocean",
|
|
34
|
-
hasLightMode: true,
|
|
35
|
-
hasDarkMode: true
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
name: "forest",
|
|
39
|
-
displayName: "Forest",
|
|
40
|
-
hasLightMode: true,
|
|
41
|
-
hasDarkMode: true
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
name: "sunset",
|
|
45
|
-
displayName: "Sunset",
|
|
46
|
-
hasLightMode: true,
|
|
47
|
-
hasDarkMode: true
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
name: "lavender",
|
|
51
|
-
displayName: "Lavender",
|
|
52
|
-
hasLightMode: true,
|
|
53
|
-
hasDarkMode: true
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
name: "rose",
|
|
57
|
-
displayName: "Rose",
|
|
58
|
-
hasLightMode: true,
|
|
59
|
-
hasDarkMode: true
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
name: "slate",
|
|
63
|
-
displayName: "Slate",
|
|
64
|
-
hasLightMode: true,
|
|
65
|
-
hasDarkMode: true
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
name: "ember",
|
|
69
|
-
displayName: "Ember",
|
|
70
|
-
hasLightMode: true,
|
|
71
|
-
hasDarkMode: true
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
name: "midnight",
|
|
75
|
-
displayName: "Midnight",
|
|
76
|
-
hasLightMode: true,
|
|
77
|
-
hasDarkMode: true
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
name: "sand",
|
|
81
|
-
displayName: "Sand",
|
|
82
|
-
hasLightMode: true,
|
|
83
|
-
hasDarkMode: true
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
name: "neon",
|
|
87
|
-
displayName: "Neon",
|
|
88
|
-
hasLightMode: true,
|
|
89
|
-
hasDarkMode: true
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
name: "arctic",
|
|
93
|
-
displayName: "Arctic",
|
|
94
|
-
hasLightMode: true,
|
|
95
|
-
hasDarkMode: true
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
name: "copper",
|
|
99
|
-
displayName: "Copper",
|
|
100
|
-
hasLightMode: true,
|
|
101
|
-
hasDarkMode: true
|
|
102
|
-
}
|
|
103
|
-
];
|
|
104
|
-
var ThemeContext = createContext(void 0);
|
|
105
|
-
var THEME_STORAGE_KEY = "theme";
|
|
106
|
-
var MODE_STORAGE_KEY = "theme-mode";
|
|
107
|
-
function getSystemMode() {
|
|
108
|
-
if (typeof window === "undefined") return "light";
|
|
109
|
-
return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
110
|
-
}
|
|
111
|
-
function resolveMode(mode) {
|
|
112
|
-
if (mode === "system") {
|
|
113
|
-
return getSystemMode();
|
|
114
|
-
}
|
|
115
|
-
return mode;
|
|
116
|
-
}
|
|
117
|
-
var ThemeProvider = ({
|
|
118
|
-
children,
|
|
119
|
-
themes = [],
|
|
120
|
-
defaultTheme = "wireframe",
|
|
121
|
-
defaultMode = "system",
|
|
122
|
-
targetRef
|
|
123
|
-
}) => {
|
|
124
|
-
const availableThemes = useMemo(() => {
|
|
125
|
-
const themeMap = /* @__PURE__ */ new Map();
|
|
126
|
-
BUILT_IN_THEMES.forEach((t) => themeMap.set(t.name, t));
|
|
127
|
-
themes.forEach((t) => themeMap.set(t.name, t));
|
|
128
|
-
return Array.from(themeMap.values());
|
|
129
|
-
}, [themes]);
|
|
130
|
-
const isScoped = !!targetRef;
|
|
131
|
-
const [theme, setThemeState] = useState(() => {
|
|
132
|
-
if (isScoped || typeof window === "undefined") return defaultTheme;
|
|
133
|
-
const stored = localStorage.getItem(THEME_STORAGE_KEY);
|
|
134
|
-
const validThemes = [
|
|
135
|
-
...BUILT_IN_THEMES.map((t) => t.name),
|
|
136
|
-
...themes.map((t) => t.name)
|
|
137
|
-
];
|
|
138
|
-
if (stored && validThemes.includes(stored)) {
|
|
139
|
-
return stored;
|
|
140
|
-
}
|
|
141
|
-
return defaultTheme;
|
|
142
|
-
});
|
|
143
|
-
const [mode, setModeState] = useState(() => {
|
|
144
|
-
if (isScoped || typeof window === "undefined") return defaultMode;
|
|
145
|
-
const stored = localStorage.getItem(MODE_STORAGE_KEY);
|
|
146
|
-
if (stored === "light" || stored === "dark" || stored === "system") {
|
|
147
|
-
return stored;
|
|
148
|
-
}
|
|
149
|
-
return defaultMode;
|
|
150
|
-
});
|
|
151
|
-
const [resolvedMode, setResolvedMode] = useState(
|
|
152
|
-
() => resolveMode(mode)
|
|
153
|
-
);
|
|
154
|
-
const appliedTheme = useMemo(
|
|
155
|
-
() => `${theme}-${resolvedMode}`,
|
|
156
|
-
[theme, resolvedMode]
|
|
157
|
-
);
|
|
158
|
-
useEffect(() => {
|
|
159
|
-
const updateResolved = () => {
|
|
160
|
-
setResolvedMode(resolveMode(mode));
|
|
161
|
-
};
|
|
162
|
-
updateResolved();
|
|
163
|
-
if (mode === "system") {
|
|
164
|
-
const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
|
|
165
|
-
const handleChange = () => updateResolved();
|
|
166
|
-
mediaQuery.addEventListener("change", handleChange);
|
|
167
|
-
return () => mediaQuery.removeEventListener("change", handleChange);
|
|
168
|
-
}
|
|
169
|
-
return void 0;
|
|
170
|
-
}, [mode]);
|
|
171
|
-
useEffect(() => {
|
|
172
|
-
if (isScoped) {
|
|
173
|
-
if (targetRef?.current) {
|
|
174
|
-
targetRef.current.setAttribute("data-theme", appliedTheme);
|
|
175
|
-
targetRef.current.classList.remove("light", "dark");
|
|
176
|
-
targetRef.current.classList.add(resolvedMode);
|
|
177
|
-
}
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
const root = document.documentElement;
|
|
181
|
-
root.setAttribute("data-theme", appliedTheme);
|
|
182
|
-
root.classList.remove("light", "dark");
|
|
183
|
-
root.classList.add(resolvedMode);
|
|
184
|
-
}, [appliedTheme, resolvedMode, targetRef, isScoped]);
|
|
185
|
-
const setTheme = useCallback(
|
|
186
|
-
(newTheme) => {
|
|
187
|
-
const validTheme = availableThemes.find((t) => t.name === newTheme);
|
|
188
|
-
if (validTheme) {
|
|
189
|
-
setThemeState(newTheme);
|
|
190
|
-
if (!isScoped && typeof window !== "undefined") {
|
|
191
|
-
localStorage.setItem(THEME_STORAGE_KEY, newTheme);
|
|
192
|
-
}
|
|
193
|
-
} else {
|
|
194
|
-
console.warn(
|
|
195
|
-
`Theme "${newTheme}" not found. Available: ${availableThemes.map((t) => t.name).join(", ")}`
|
|
196
|
-
);
|
|
197
|
-
}
|
|
198
|
-
},
|
|
199
|
-
[availableThemes]
|
|
200
|
-
);
|
|
201
|
-
const setMode = useCallback((newMode) => {
|
|
202
|
-
setModeState(newMode);
|
|
203
|
-
if (!isScoped && typeof window !== "undefined") {
|
|
204
|
-
localStorage.setItem(MODE_STORAGE_KEY, newMode);
|
|
205
|
-
}
|
|
206
|
-
}, []);
|
|
207
|
-
const toggleMode = useCallback(() => {
|
|
208
|
-
const newMode = resolvedMode === "dark" ? "light" : "dark";
|
|
209
|
-
setMode(newMode);
|
|
210
|
-
}, [resolvedMode, setMode]);
|
|
211
|
-
const contextValue = useMemo(
|
|
212
|
-
() => ({
|
|
213
|
-
theme,
|
|
214
|
-
mode,
|
|
215
|
-
resolvedMode,
|
|
216
|
-
setTheme,
|
|
217
|
-
setMode,
|
|
218
|
-
toggleMode,
|
|
219
|
-
availableThemes,
|
|
220
|
-
appliedTheme
|
|
221
|
-
}),
|
|
222
|
-
[
|
|
223
|
-
theme,
|
|
224
|
-
mode,
|
|
225
|
-
resolvedMode,
|
|
226
|
-
setTheme,
|
|
227
|
-
setMode,
|
|
228
|
-
toggleMode,
|
|
229
|
-
availableThemes,
|
|
230
|
-
appliedTheme
|
|
231
|
-
]
|
|
232
|
-
);
|
|
233
|
-
return /* @__PURE__ */ jsx(ThemeContext.Provider, { value: contextValue, children });
|
|
234
|
-
};
|
|
235
|
-
function useTheme() {
|
|
236
|
-
const context = useContext(ThemeContext);
|
|
237
|
-
if (context === void 0) {
|
|
238
|
-
return {
|
|
239
|
-
theme: "wireframe",
|
|
240
|
-
mode: "light",
|
|
241
|
-
resolvedMode: "light",
|
|
242
|
-
setTheme: () => {
|
|
243
|
-
},
|
|
244
|
-
setMode: () => {
|
|
245
|
-
},
|
|
246
|
-
toggleMode: () => {
|
|
247
|
-
},
|
|
248
|
-
availableThemes: BUILT_IN_THEMES,
|
|
249
|
-
appliedTheme: "wireframe-light"
|
|
250
|
-
};
|
|
251
|
-
}
|
|
252
|
-
return context;
|
|
253
|
-
}
|
|
254
|
-
var ThemeContext_default = ThemeContext;
|
|
255
|
-
var UISlotContext = createContext(null);
|
|
256
|
-
function UISlotProvider({ children }) {
|
|
257
|
-
const slotManager = useUISlotManager();
|
|
258
|
-
const contextValue = useMemo(() => slotManager, [slotManager]);
|
|
259
|
-
return /* @__PURE__ */ jsx(UISlotContext.Provider, { value: contextValue, children });
|
|
260
|
-
}
|
|
261
|
-
function useUISlots() {
|
|
262
|
-
const context = useContext(UISlotContext);
|
|
263
|
-
if (!context) {
|
|
264
|
-
throw new Error(
|
|
265
|
-
"useUISlots must be used within a UISlotProvider. Make sure your component tree is wrapped with <UISlotProvider>."
|
|
266
|
-
);
|
|
267
|
-
}
|
|
268
|
-
return context;
|
|
269
|
-
}
|
|
270
|
-
function useSlotContent(slot) {
|
|
271
|
-
const { getContent } = useUISlots();
|
|
272
|
-
return getContent(slot);
|
|
273
|
-
}
|
|
274
|
-
function useSlotHasContent(slot) {
|
|
275
|
-
const { hasContent } = useUISlots();
|
|
276
|
-
return hasContent(slot);
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
export { BUILT_IN_THEMES, ThemeContext_default, ThemeProvider, UISlotContext, UISlotProvider, useSlotContent, useSlotHasContent, useTheme, useUISlots };
|
package/dist/chunk-GF6RQBO7.js
DELETED
|
@@ -1,375 +0,0 @@
|
|
|
1
|
-
import { SuspenseConfigProvider } from './chunk-K43H3ZDY.js';
|
|
2
|
-
import { ThemeProvider } from './chunk-DKQN5FVU.js';
|
|
3
|
-
import { SelectionProvider, EntityDataProvider } from './chunk-CDIOHSKG.js';
|
|
4
|
-
import { useEventBus, EventBusProvider } from './chunk-YXZM3WCF.js';
|
|
5
|
-
import { recordTransition, registerCheck, bindEventBus, bindTraitStateGetter } from './chunk-XL7WB2O5.js';
|
|
6
|
-
import { useOfflineExecutor } from './chunk-K2D5D3WK.js';
|
|
7
|
-
import { createContext, useState, useCallback, useMemo, useContext, useRef, useEffect } from 'react';
|
|
8
|
-
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
9
|
-
|
|
10
|
-
var FetchedDataContext = createContext(null);
|
|
11
|
-
function FetchedDataProvider({
|
|
12
|
-
initialData,
|
|
13
|
-
children
|
|
14
|
-
}) {
|
|
15
|
-
const [state, setState] = useState(() => ({
|
|
16
|
-
data: initialData || {},
|
|
17
|
-
fetchedAt: {},
|
|
18
|
-
loading: false,
|
|
19
|
-
error: null
|
|
20
|
-
}));
|
|
21
|
-
const getData = useCallback(
|
|
22
|
-
(entityName) => {
|
|
23
|
-
return state.data[entityName] || [];
|
|
24
|
-
},
|
|
25
|
-
[state.data]
|
|
26
|
-
);
|
|
27
|
-
const getById = useCallback(
|
|
28
|
-
(entityName, id) => {
|
|
29
|
-
const records = state.data[entityName];
|
|
30
|
-
return records?.find((r) => r.id === id);
|
|
31
|
-
},
|
|
32
|
-
[state.data]
|
|
33
|
-
);
|
|
34
|
-
const hasData = useCallback(
|
|
35
|
-
(entityName) => {
|
|
36
|
-
return entityName in state.data && state.data[entityName].length > 0;
|
|
37
|
-
},
|
|
38
|
-
[state.data]
|
|
39
|
-
);
|
|
40
|
-
const getFetchedAt = useCallback(
|
|
41
|
-
(entityName) => {
|
|
42
|
-
return state.fetchedAt[entityName];
|
|
43
|
-
},
|
|
44
|
-
[state.fetchedAt]
|
|
45
|
-
);
|
|
46
|
-
const setData = useCallback((data) => {
|
|
47
|
-
const now = Date.now();
|
|
48
|
-
setState((prev) => ({
|
|
49
|
-
...prev,
|
|
50
|
-
data: {
|
|
51
|
-
...prev.data,
|
|
52
|
-
...data
|
|
53
|
-
},
|
|
54
|
-
fetchedAt: {
|
|
55
|
-
...prev.fetchedAt,
|
|
56
|
-
...Object.keys(data).reduce(
|
|
57
|
-
(acc, key) => ({ ...acc, [key]: now }),
|
|
58
|
-
{}
|
|
59
|
-
)
|
|
60
|
-
},
|
|
61
|
-
loading: false,
|
|
62
|
-
error: null
|
|
63
|
-
}));
|
|
64
|
-
}, []);
|
|
65
|
-
const clearData = useCallback(() => {
|
|
66
|
-
setState((prev) => ({
|
|
67
|
-
...prev,
|
|
68
|
-
data: {},
|
|
69
|
-
fetchedAt: {}
|
|
70
|
-
}));
|
|
71
|
-
}, []);
|
|
72
|
-
const clearEntity = useCallback((entityName) => {
|
|
73
|
-
setState((prev) => {
|
|
74
|
-
const newData = { ...prev.data };
|
|
75
|
-
const newFetchedAt = { ...prev.fetchedAt };
|
|
76
|
-
delete newData[entityName];
|
|
77
|
-
delete newFetchedAt[entityName];
|
|
78
|
-
return {
|
|
79
|
-
...prev,
|
|
80
|
-
data: newData,
|
|
81
|
-
fetchedAt: newFetchedAt
|
|
82
|
-
};
|
|
83
|
-
});
|
|
84
|
-
}, []);
|
|
85
|
-
const setLoading = useCallback((loading) => {
|
|
86
|
-
setState((prev) => ({ ...prev, loading }));
|
|
87
|
-
}, []);
|
|
88
|
-
const setError = useCallback((error) => {
|
|
89
|
-
setState((prev) => ({ ...prev, error, loading: false }));
|
|
90
|
-
}, []);
|
|
91
|
-
const contextValue = useMemo(
|
|
92
|
-
() => ({
|
|
93
|
-
getData,
|
|
94
|
-
getById,
|
|
95
|
-
hasData,
|
|
96
|
-
getFetchedAt,
|
|
97
|
-
setData,
|
|
98
|
-
clearData,
|
|
99
|
-
clearEntity,
|
|
100
|
-
loading: state.loading,
|
|
101
|
-
setLoading,
|
|
102
|
-
error: state.error,
|
|
103
|
-
setError
|
|
104
|
-
}),
|
|
105
|
-
[
|
|
106
|
-
getData,
|
|
107
|
-
getById,
|
|
108
|
-
hasData,
|
|
109
|
-
getFetchedAt,
|
|
110
|
-
setData,
|
|
111
|
-
clearData,
|
|
112
|
-
clearEntity,
|
|
113
|
-
state.loading,
|
|
114
|
-
setLoading,
|
|
115
|
-
state.error,
|
|
116
|
-
setError
|
|
117
|
-
]
|
|
118
|
-
);
|
|
119
|
-
return /* @__PURE__ */ jsx(FetchedDataContext.Provider, { value: contextValue, children });
|
|
120
|
-
}
|
|
121
|
-
function useFetchedDataContext() {
|
|
122
|
-
return useContext(FetchedDataContext);
|
|
123
|
-
}
|
|
124
|
-
function useFetchedData() {
|
|
125
|
-
const context = useContext(FetchedDataContext);
|
|
126
|
-
if (!context) {
|
|
127
|
-
return {
|
|
128
|
-
getData: () => [],
|
|
129
|
-
getById: () => void 0,
|
|
130
|
-
hasData: () => false,
|
|
131
|
-
getFetchedAt: () => void 0,
|
|
132
|
-
setData: () => {
|
|
133
|
-
},
|
|
134
|
-
clearData: () => {
|
|
135
|
-
},
|
|
136
|
-
clearEntity: () => {
|
|
137
|
-
},
|
|
138
|
-
loading: false,
|
|
139
|
-
setLoading: () => {
|
|
140
|
-
},
|
|
141
|
-
error: null,
|
|
142
|
-
setError: () => {
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
return context;
|
|
147
|
-
}
|
|
148
|
-
function useFetchedEntity(entityName) {
|
|
149
|
-
const context = useFetchedData();
|
|
150
|
-
return {
|
|
151
|
-
/** All fetched records for this entity */
|
|
152
|
-
records: context.getData(entityName),
|
|
153
|
-
/** Get a record by ID */
|
|
154
|
-
getById: (id) => context.getById(entityName, id),
|
|
155
|
-
/** Whether data has been fetched for this entity */
|
|
156
|
-
hasData: context.hasData(entityName),
|
|
157
|
-
/** When data was last fetched */
|
|
158
|
-
fetchedAt: context.getFetchedAt(entityName),
|
|
159
|
-
/** Whether data is loading */
|
|
160
|
-
loading: context.loading,
|
|
161
|
-
/** Current error */
|
|
162
|
-
error: context.error
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
var DISPATCH_SUFFIX = ":DISPATCH";
|
|
166
|
-
var SUCCESS_SUFFIX = ":SUCCESS";
|
|
167
|
-
var ERROR_SUFFIX = ":ERROR";
|
|
168
|
-
function parseLifecycleEvent(type) {
|
|
169
|
-
if (type.endsWith(DISPATCH_SUFFIX)) {
|
|
170
|
-
const traitName = type.slice(0, -DISPATCH_SUFFIX.length);
|
|
171
|
-
if (traitName) return { kind: "dispatch", traitName };
|
|
172
|
-
} else if (type.endsWith(SUCCESS_SUFFIX)) {
|
|
173
|
-
const rest = type.slice(0, -SUCCESS_SUFFIX.length);
|
|
174
|
-
const colonIdx = rest.indexOf(":");
|
|
175
|
-
if (colonIdx > 0) {
|
|
176
|
-
return {
|
|
177
|
-
kind: "success",
|
|
178
|
-
traitName: rest.slice(0, colonIdx),
|
|
179
|
-
event: rest.slice(colonIdx + 1)
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
} else if (type.endsWith(ERROR_SUFFIX)) {
|
|
183
|
-
const rest = type.slice(0, -ERROR_SUFFIX.length);
|
|
184
|
-
const colonIdx = rest.indexOf(":");
|
|
185
|
-
if (colonIdx > 0) {
|
|
186
|
-
return {
|
|
187
|
-
kind: "error",
|
|
188
|
-
traitName: rest.slice(0, colonIdx),
|
|
189
|
-
event: rest.slice(colonIdx + 1)
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
return null;
|
|
194
|
-
}
|
|
195
|
-
function VerificationProvider({
|
|
196
|
-
children,
|
|
197
|
-
enabled,
|
|
198
|
-
runtimeManager,
|
|
199
|
-
traitStateGetter
|
|
200
|
-
}) {
|
|
201
|
-
const isEnabled = enabled ?? (typeof process !== "undefined" && process.env?.NODE_ENV !== "production");
|
|
202
|
-
const eventBus = useEventBus();
|
|
203
|
-
const pendingRef = useRef(/* @__PURE__ */ new Map());
|
|
204
|
-
useEffect(() => {
|
|
205
|
-
if (!isEnabled) return;
|
|
206
|
-
if (!eventBus.onAny) return;
|
|
207
|
-
const unsub = eventBus.onAny((evt) => {
|
|
208
|
-
const parsed = parseLifecycleEvent(evt.type);
|
|
209
|
-
if (!parsed) return;
|
|
210
|
-
const payload = evt.payload ?? {};
|
|
211
|
-
if (parsed.kind === "dispatch") {
|
|
212
|
-
const key = `${parsed.traitName}:${String(payload["event"] ?? "")}`;
|
|
213
|
-
pendingRef.current.set(key, {
|
|
214
|
-
traitName: parsed.traitName,
|
|
215
|
-
event: String(payload["event"] ?? ""),
|
|
216
|
-
from: payload["currentState"],
|
|
217
|
-
timestamp: evt.timestamp
|
|
218
|
-
});
|
|
219
|
-
} else if (parsed.kind === "success" && parsed.event) {
|
|
220
|
-
const key = `${parsed.traitName}:${parsed.event}`;
|
|
221
|
-
const pending = pendingRef.current.get(key);
|
|
222
|
-
pendingRef.current.delete(key);
|
|
223
|
-
const newState = payload["newState"] ?? payload["state"] ?? "unknown";
|
|
224
|
-
const effects = Array.isArray(payload["clientEffects"]) ? payload["clientEffects"].map((e) => ({
|
|
225
|
-
type: String(e["type"] ?? "unknown"),
|
|
226
|
-
args: Array.isArray(e["args"]) ? e["args"] : [],
|
|
227
|
-
status: "executed"
|
|
228
|
-
})) : [];
|
|
229
|
-
recordTransition({
|
|
230
|
-
traitName: parsed.traitName,
|
|
231
|
-
from: pending?.from ?? "unknown",
|
|
232
|
-
to: newState,
|
|
233
|
-
event: parsed.event,
|
|
234
|
-
effects,
|
|
235
|
-
timestamp: Date.now()
|
|
236
|
-
});
|
|
237
|
-
} else if (parsed.kind === "error" && parsed.event) {
|
|
238
|
-
const key = `${parsed.traitName}:${parsed.event}`;
|
|
239
|
-
const pending = pendingRef.current.get(key);
|
|
240
|
-
pendingRef.current.delete(key);
|
|
241
|
-
const errorMsg = payload["error"] ?? "Unknown error";
|
|
242
|
-
recordTransition({
|
|
243
|
-
traitName: parsed.traitName,
|
|
244
|
-
from: pending?.from ?? "unknown",
|
|
245
|
-
to: pending?.from ?? "unknown",
|
|
246
|
-
// state didn't change on error
|
|
247
|
-
event: parsed.event,
|
|
248
|
-
effects: [{
|
|
249
|
-
type: "server-call",
|
|
250
|
-
args: [],
|
|
251
|
-
status: "failed",
|
|
252
|
-
error: errorMsg
|
|
253
|
-
}],
|
|
254
|
-
timestamp: Date.now()
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
});
|
|
258
|
-
registerCheck(
|
|
259
|
-
"verification-provider",
|
|
260
|
-
"VerificationProvider active (compiled path)",
|
|
261
|
-
"pass"
|
|
262
|
-
);
|
|
263
|
-
return unsub;
|
|
264
|
-
}, [isEnabled, eventBus]);
|
|
265
|
-
useEffect(() => {
|
|
266
|
-
if (!isEnabled) return;
|
|
267
|
-
if (!runtimeManager) return;
|
|
268
|
-
runtimeManager.setObserver({
|
|
269
|
-
onTransition(trace) {
|
|
270
|
-
recordTransition({
|
|
271
|
-
traitName: trace.traitName,
|
|
272
|
-
from: trace.from,
|
|
273
|
-
to: trace.to,
|
|
274
|
-
event: trace.event,
|
|
275
|
-
guardResult: trace.guardResult,
|
|
276
|
-
effects: trace.effects,
|
|
277
|
-
timestamp: Date.now()
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
});
|
|
281
|
-
registerCheck(
|
|
282
|
-
"verification-provider",
|
|
283
|
-
"VerificationProvider active (runtime path)",
|
|
284
|
-
"pass"
|
|
285
|
-
);
|
|
286
|
-
}, [isEnabled, runtimeManager]);
|
|
287
|
-
useEffect(() => {
|
|
288
|
-
if (!isEnabled) return;
|
|
289
|
-
bindEventBus(eventBus);
|
|
290
|
-
}, [isEnabled, eventBus]);
|
|
291
|
-
useEffect(() => {
|
|
292
|
-
if (!isEnabled) return;
|
|
293
|
-
if (traitStateGetter) {
|
|
294
|
-
bindTraitStateGetter(traitStateGetter);
|
|
295
|
-
} else if (runtimeManager?.getState) {
|
|
296
|
-
const mgr = runtimeManager;
|
|
297
|
-
bindTraitStateGetter((traitName) => mgr.getState(traitName));
|
|
298
|
-
}
|
|
299
|
-
}, [isEnabled, traitStateGetter, runtimeManager]);
|
|
300
|
-
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
301
|
-
}
|
|
302
|
-
VerificationProvider.displayName = "VerificationProvider";
|
|
303
|
-
function FetchedDataBridge({ children }) {
|
|
304
|
-
const fetchedData = useFetchedData();
|
|
305
|
-
const adapter = useMemo(() => ({
|
|
306
|
-
getData: (entity) => fetchedData.getData(entity),
|
|
307
|
-
getById: (entity, id) => fetchedData.getById(entity, id),
|
|
308
|
-
isLoading: fetchedData.loading,
|
|
309
|
-
error: fetchedData.error
|
|
310
|
-
}), [fetchedData.getData, fetchedData.getById, fetchedData.loading, fetchedData.error]);
|
|
311
|
-
return /* @__PURE__ */ jsx(EntityDataProvider, { adapter, children });
|
|
312
|
-
}
|
|
313
|
-
function OrbitalProvider({
|
|
314
|
-
children,
|
|
315
|
-
themes,
|
|
316
|
-
defaultTheme = "wireframe",
|
|
317
|
-
defaultMode = "system",
|
|
318
|
-
targetRef,
|
|
319
|
-
skipTheme = false,
|
|
320
|
-
debug = false,
|
|
321
|
-
initialData,
|
|
322
|
-
suspense = false,
|
|
323
|
-
verification
|
|
324
|
-
}) {
|
|
325
|
-
const suspenseConfig = useMemo(
|
|
326
|
-
() => ({ enabled: suspense }),
|
|
327
|
-
[suspense]
|
|
328
|
-
);
|
|
329
|
-
const inner = /* @__PURE__ */ jsx(FetchedDataProvider, { initialData, children: /* @__PURE__ */ jsx(FetchedDataBridge, { children: /* @__PURE__ */ jsx(EventBusProvider, { debug, children: /* @__PURE__ */ jsx(VerificationProvider, { enabled: verification, children: /* @__PURE__ */ jsx(SelectionProvider, { debug, children: /* @__PURE__ */ jsx(SuspenseConfigProvider, { config: suspenseConfig, children }) }) }) }) }) });
|
|
330
|
-
if (skipTheme) {
|
|
331
|
-
return inner;
|
|
332
|
-
}
|
|
333
|
-
return /* @__PURE__ */ jsx(
|
|
334
|
-
ThemeProvider,
|
|
335
|
-
{
|
|
336
|
-
themes,
|
|
337
|
-
defaultTheme,
|
|
338
|
-
defaultMode,
|
|
339
|
-
targetRef,
|
|
340
|
-
children: inner
|
|
341
|
-
}
|
|
342
|
-
);
|
|
343
|
-
}
|
|
344
|
-
OrbitalProvider.displayName = "OrbitalProvider";
|
|
345
|
-
var OfflineModeContext = createContext(null);
|
|
346
|
-
function OfflineModeProvider({
|
|
347
|
-
children,
|
|
348
|
-
...executorOptions
|
|
349
|
-
}) {
|
|
350
|
-
const [forceOffline, setForceOffline] = useState(false);
|
|
351
|
-
const executor = useOfflineExecutor(executorOptions);
|
|
352
|
-
const effectivelyOffline = executor.isOffline || forceOffline;
|
|
353
|
-
const contextValue = useMemo(
|
|
354
|
-
() => ({
|
|
355
|
-
...executor,
|
|
356
|
-
forceOffline,
|
|
357
|
-
setForceOffline,
|
|
358
|
-
effectivelyOffline
|
|
359
|
-
}),
|
|
360
|
-
[executor, forceOffline, effectivelyOffline]
|
|
361
|
-
);
|
|
362
|
-
return /* @__PURE__ */ jsx(OfflineModeContext.Provider, { value: contextValue, children });
|
|
363
|
-
}
|
|
364
|
-
function useOfflineMode() {
|
|
365
|
-
const context = useContext(OfflineModeContext);
|
|
366
|
-
if (!context) {
|
|
367
|
-
throw new Error("useOfflineMode must be used within OfflineModeProvider");
|
|
368
|
-
}
|
|
369
|
-
return context;
|
|
370
|
-
}
|
|
371
|
-
function useOptionalOfflineMode() {
|
|
372
|
-
return useContext(OfflineModeContext);
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
export { FetchedDataContext, FetchedDataProvider, OfflineModeProvider, OrbitalProvider, VerificationProvider, useFetchedData, useFetchedDataContext, useFetchedEntity, useOfflineMode, useOptionalOfflineMode };
|
package/dist/chunk-PKBMQBKP.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
-
|
|
5
|
-
export { __publicField };
|