@weaverse/react 5.4.2 → 5.5.0-beta.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/index.d.mts CHANGED
@@ -3,6 +3,7 @@ export * from '@weaverse/core';
3
3
  import * as react from 'react';
4
4
  import { ReactElement, ReactNode } from 'react';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
+ import { UIMatch } from 'react-router';
6
7
 
7
8
  declare let WeaverseContext: react.Context<Weaverse>;
8
9
  declare let WeaverseContextProvider: react.Provider<Weaverse>;
@@ -11,6 +12,50 @@ declare let WeaverseItemContext: react.Context<{
11
12
  parentId: string;
12
13
  }>;
13
14
 
15
+ interface RouteKeyedDataContext {
16
+ root?: Record<string, unknown>;
17
+ [routeKey: `routes/${string}`]: Record<string, unknown>;
18
+ }
19
+ type WeaverseDataContext = RouteKeyedDataContext & Record<string, unknown>;
20
+ /**
21
+ * Hook to get flat route-keyed data context from matches
22
+ * Returns: {root: {...}, "routes/xxx": {...}}
23
+ * No more useLoaderData dependency - everything comes from matches
24
+ */
25
+ declare function useWeaverseDataContext(): WeaverseDataContext;
26
+ /**
27
+ * Helper function to create flat route-keyed data context from useMatches() result
28
+ * Returns: {root: {...}, "routes/xxx": {...}}
29
+ */
30
+ declare function createWeaverseDataContext(matches: UIMatch<unknown, unknown>[]): WeaverseDataContext;
31
+
32
+ /**
33
+ * Replaces data connector placeholders in content with actual values from data context
34
+ * Supports {{path}} syntax with dot notation, array indexing, and route prefixes
35
+ *
36
+ * Enhanced syntax:
37
+ * - {{root.siteSettings.title}} - Access root route data
38
+ * - {{layout.navigation.items}} - Access layout route data
39
+ * - {{parent.category.name}} - Access parent route data
40
+ * - {{current.product.title}} - Access current route data
41
+ * - {{user.name}} - Auto-resolved from combined data (backward compatible)
42
+ *
43
+ * @param content - The content string containing {{}} placeholders
44
+ * @param dataContext - The enhanced WeaverseDataContext with route-keyed data
45
+ * @returns The content with placeholders replaced by actual values
46
+ */
47
+ declare function replaceContentDataConnectors(content: string, dataContext: WeaverseDataContext | Record<string, unknown> | null | undefined): string;
48
+ /**
49
+ * Recursively replaces data connector placeholders in any data structure
50
+ * Handles strings, objects, arrays, and nested combinations
51
+ *
52
+ * @param data - The data to process (string, object, array, or primitive)
53
+ * @param dataContext - The data context for replacements
54
+ * @param visited - Set to track visited objects for circular reference protection
55
+ * @returns The data with all string placeholders replaced
56
+ */
57
+ declare function replaceContentDataConnectorsDeep<T>(data: T, dataContext: WeaverseDataContext | Record<string, unknown> | null | undefined, visited?: WeakSet<WeakKey>): T;
58
+
14
59
  declare function useWeaverse<T = Weaverse>(): T;
15
60
  declare let useItemInstance: (id?: string) => WeaverseItemStore | null;
16
61
  declare let useParentInstance: () => WeaverseItemStore | null;
@@ -32,4 +77,4 @@ type ItemComponentProps = {
32
77
  declare const useSafeExternalStore: (subscribe: any, getSnapshot: any, getServerSnapshot?: any) => any;
33
78
  declare let WeaverseRoot: react.MemoExoticComponent<({ context }: WeaverseRootPropsType) => react_jsx_runtime.JSX.Element | null>;
34
79
 
35
- export { type ItemComponentProps, WeaverseContext, WeaverseContextProvider, type WeaverseElementProps, WeaverseItemContext, WeaverseRoot, type WeaverseRootPropsType, useChildInstances, useItemInstance, useParentInstance, useSafeExternalStore, useWeaverse };
80
+ export { type ItemComponentProps, WeaverseContext, WeaverseContextProvider, type WeaverseDataContext, type WeaverseElementProps, WeaverseItemContext, WeaverseRoot, type WeaverseRootPropsType, createWeaverseDataContext, replaceContentDataConnectors, replaceContentDataConnectorsDeep, useChildInstances, useItemInstance, useParentInstance, useSafeExternalStore, useWeaverse, useWeaverseDataContext };
package/dist/index.d.ts CHANGED
@@ -3,6 +3,7 @@ export * from '@weaverse/core';
3
3
  import * as react from 'react';
4
4
  import { ReactElement, ReactNode } from 'react';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
+ import { UIMatch } from 'react-router';
6
7
 
7
8
  declare let WeaverseContext: react.Context<Weaverse>;
8
9
  declare let WeaverseContextProvider: react.Provider<Weaverse>;
@@ -11,6 +12,50 @@ declare let WeaverseItemContext: react.Context<{
11
12
  parentId: string;
12
13
  }>;
13
14
 
15
+ interface RouteKeyedDataContext {
16
+ root?: Record<string, unknown>;
17
+ [routeKey: `routes/${string}`]: Record<string, unknown>;
18
+ }
19
+ type WeaverseDataContext = RouteKeyedDataContext & Record<string, unknown>;
20
+ /**
21
+ * Hook to get flat route-keyed data context from matches
22
+ * Returns: {root: {...}, "routes/xxx": {...}}
23
+ * No more useLoaderData dependency - everything comes from matches
24
+ */
25
+ declare function useWeaverseDataContext(): WeaverseDataContext;
26
+ /**
27
+ * Helper function to create flat route-keyed data context from useMatches() result
28
+ * Returns: {root: {...}, "routes/xxx": {...}}
29
+ */
30
+ declare function createWeaverseDataContext(matches: UIMatch<unknown, unknown>[]): WeaverseDataContext;
31
+
32
+ /**
33
+ * Replaces data connector placeholders in content with actual values from data context
34
+ * Supports {{path}} syntax with dot notation, array indexing, and route prefixes
35
+ *
36
+ * Enhanced syntax:
37
+ * - {{root.siteSettings.title}} - Access root route data
38
+ * - {{layout.navigation.items}} - Access layout route data
39
+ * - {{parent.category.name}} - Access parent route data
40
+ * - {{current.product.title}} - Access current route data
41
+ * - {{user.name}} - Auto-resolved from combined data (backward compatible)
42
+ *
43
+ * @param content - The content string containing {{}} placeholders
44
+ * @param dataContext - The enhanced WeaverseDataContext with route-keyed data
45
+ * @returns The content with placeholders replaced by actual values
46
+ */
47
+ declare function replaceContentDataConnectors(content: string, dataContext: WeaverseDataContext | Record<string, unknown> | null | undefined): string;
48
+ /**
49
+ * Recursively replaces data connector placeholders in any data structure
50
+ * Handles strings, objects, arrays, and nested combinations
51
+ *
52
+ * @param data - The data to process (string, object, array, or primitive)
53
+ * @param dataContext - The data context for replacements
54
+ * @param visited - Set to track visited objects for circular reference protection
55
+ * @returns The data with all string placeholders replaced
56
+ */
57
+ declare function replaceContentDataConnectorsDeep<T>(data: T, dataContext: WeaverseDataContext | Record<string, unknown> | null | undefined, visited?: WeakSet<WeakKey>): T;
58
+
14
59
  declare function useWeaverse<T = Weaverse>(): T;
15
60
  declare let useItemInstance: (id?: string) => WeaverseItemStore | null;
16
61
  declare let useParentInstance: () => WeaverseItemStore | null;
@@ -32,4 +77,4 @@ type ItemComponentProps = {
32
77
  declare const useSafeExternalStore: (subscribe: any, getSnapshot: any, getServerSnapshot?: any) => any;
33
78
  declare let WeaverseRoot: react.MemoExoticComponent<({ context }: WeaverseRootPropsType) => react_jsx_runtime.JSX.Element | null>;
34
79
 
35
- export { type ItemComponentProps, WeaverseContext, WeaverseContextProvider, type WeaverseElementProps, WeaverseItemContext, WeaverseRoot, type WeaverseRootPropsType, useChildInstances, useItemInstance, useParentInstance, useSafeExternalStore, useWeaverse };
80
+ export { type ItemComponentProps, WeaverseContext, WeaverseContextProvider, type WeaverseDataContext, type WeaverseElementProps, WeaverseItemContext, WeaverseRoot, type WeaverseRootPropsType, createWeaverseDataContext, replaceContentDataConnectors, replaceContentDataConnectorsDeep, useChildInstances, useItemInstance, useParentInstance, useSafeExternalStore, useWeaverse, useWeaverseDataContext };