@allternit/ix 0.1.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.
Files changed (170) hide show
  1. package/README.md +320 -0
  2. package/dist/adapters/json-render.d.ts +211 -0
  3. package/dist/adapters/json-render.d.ts.bak +211 -0
  4. package/dist/adapters/json-render.d.ts.map +1 -0
  5. package/dist/adapters/json-render.js +576 -0
  6. package/dist/adapters/json-render.js.bak +576 -0
  7. package/dist/adapters/json-render.js.map +1 -0
  8. package/dist/catalog/registry.d.ts +65 -0
  9. package/dist/catalog/registry.d.ts.bak +65 -0
  10. package/dist/catalog/registry.d.ts.map +1 -0
  11. package/dist/catalog/registry.js +388 -0
  12. package/dist/catalog/registry.js.bak +388 -0
  13. package/dist/catalog/registry.js.map +1 -0
  14. package/dist/collab/capsule-registry.d.ts +114 -0
  15. package/dist/collab/capsule-registry.d.ts.bak +114 -0
  16. package/dist/collab/capsule-registry.d.ts.map +1 -0
  17. package/dist/collab/capsule-registry.js +271 -0
  18. package/dist/collab/capsule-registry.js.bak +271 -0
  19. package/dist/collab/capsule-registry.js.map +1 -0
  20. package/dist/collab/index.d.ts +21 -0
  21. package/dist/collab/index.d.ts.bak +21 -0
  22. package/dist/collab/index.d.ts.map +1 -0
  23. package/dist/collab/index.js +32 -0
  24. package/dist/collab/index.js.bak +32 -0
  25. package/dist/collab/index.js.map +1 -0
  26. package/dist/collab/visual-editor.d.ts +199 -0
  27. package/dist/collab/visual-editor.d.ts.bak +199 -0
  28. package/dist/collab/visual-editor.d.ts.map +1 -0
  29. package/dist/collab/visual-editor.js +259 -0
  30. package/dist/collab/visual-editor.js.bak +259 -0
  31. package/dist/collab/visual-editor.js.map +1 -0
  32. package/dist/collab/yjs-adapter.d.ts +95 -0
  33. package/dist/collab/yjs-adapter.d.ts.bak +95 -0
  34. package/dist/collab/yjs-adapter.d.ts.map +1 -0
  35. package/dist/collab/yjs-adapter.js +282 -0
  36. package/dist/collab/yjs-adapter.js.bak +282 -0
  37. package/dist/collab/yjs-adapter.js.map +1 -0
  38. package/dist/collab/yjs-client.d.ts +101 -0
  39. package/dist/collab/yjs-client.d.ts.bak +101 -0
  40. package/dist/collab/yjs-client.d.ts.map +1 -0
  41. package/dist/collab/yjs-client.js +193 -0
  42. package/dist/collab/yjs-client.js.bak +193 -0
  43. package/dist/collab/yjs-client.js.map +1 -0
  44. package/dist/collab/yjs-protocols.d.ts +128 -0
  45. package/dist/collab/yjs-protocols.d.ts.bak +128 -0
  46. package/dist/collab/yjs-protocols.d.ts.map +1 -0
  47. package/dist/collab/yjs-protocols.js +245 -0
  48. package/dist/collab/yjs-protocols.js.bak +245 -0
  49. package/dist/collab/yjs-protocols.js.map +1 -0
  50. package/dist/collab/yjs-types.d.ts +201 -0
  51. package/dist/collab/yjs-types.d.ts.bak +201 -0
  52. package/dist/collab/yjs-types.d.ts.map +1 -0
  53. package/dist/collab/yjs-types.js +45 -0
  54. package/dist/collab/yjs-types.js.bak +45 -0
  55. package/dist/collab/yjs-types.js.map +1 -0
  56. package/dist/index.d.ts +38 -0
  57. package/dist/index.d.ts.bak +38 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +48 -0
  60. package/dist/index.js.bak +48 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/pipeline/llm-to-ix.d.ts +249 -0
  63. package/dist/pipeline/llm-to-ix.d.ts.bak +249 -0
  64. package/dist/pipeline/llm-to-ix.d.ts.map +1 -0
  65. package/dist/pipeline/llm-to-ix.js +992 -0
  66. package/dist/pipeline/llm-to-ix.js.bak +992 -0
  67. package/dist/pipeline/llm-to-ix.js.map +1 -0
  68. package/dist/react/index.d.ts +18 -0
  69. package/dist/react/index.d.ts.bak +18 -0
  70. package/dist/react/index.d.ts.map +1 -0
  71. package/dist/react/index.js +18 -0
  72. package/dist/react/index.js.bak +18 -0
  73. package/dist/react/index.js.map +1 -0
  74. package/dist/react/renderer.d.ts +47 -0
  75. package/dist/react/renderer.d.ts.bak +47 -0
  76. package/dist/react/renderer.d.ts.map +1 -0
  77. package/dist/react/renderer.js +420 -0
  78. package/dist/react/renderer.js.bak +420 -0
  79. package/dist/react/renderer.js.map +1 -0
  80. package/dist/renderer/renderer.d.ts +55 -0
  81. package/dist/renderer/renderer.d.ts.bak +55 -0
  82. package/dist/renderer/renderer.d.ts.map +1 -0
  83. package/dist/renderer/renderer.js +232 -0
  84. package/dist/renderer/renderer.js.bak +232 -0
  85. package/dist/renderer/renderer.js.map +1 -0
  86. package/dist/runtime/capsule-runtime.d.ts +227 -0
  87. package/dist/runtime/capsule-runtime.d.ts.bak +227 -0
  88. package/dist/runtime/capsule-runtime.d.ts.map +1 -0
  89. package/dist/runtime/capsule-runtime.js +563 -0
  90. package/dist/runtime/capsule-runtime.js.bak +563 -0
  91. package/dist/runtime/capsule-runtime.js.map +1 -0
  92. package/dist/runtime/policy-gates.d.ts +116 -0
  93. package/dist/runtime/policy-gates.d.ts.bak +116 -0
  94. package/dist/runtime/policy-gates.d.ts.map +1 -0
  95. package/dist/runtime/policy-gates.js +317 -0
  96. package/dist/runtime/policy-gates.js.bak +317 -0
  97. package/dist/runtime/policy-gates.js.map +1 -0
  98. package/dist/schema/ui-ir.d.ts +26 -0
  99. package/dist/schema/ui-ir.d.ts.bak +26 -0
  100. package/dist/schema/ui-ir.d.ts.map +1 -0
  101. package/dist/schema/ui-ir.js +51 -0
  102. package/dist/schema/ui-ir.js.bak +51 -0
  103. package/dist/schema/ui-ir.js.map +1 -0
  104. package/dist/sdk/api.d.ts +101 -0
  105. package/dist/sdk/api.d.ts.bak +101 -0
  106. package/dist/sdk/api.d.ts.map +1 -0
  107. package/dist/sdk/api.js +177 -0
  108. package/dist/sdk/api.js.bak +177 -0
  109. package/dist/sdk/api.js.map +1 -0
  110. package/dist/sdk/index.d.ts +9 -0
  111. package/dist/sdk/index.d.ts.bak +9 -0
  112. package/dist/sdk/index.d.ts.map +1 -0
  113. package/dist/sdk/index.js +10 -0
  114. package/dist/sdk/index.js.bak +10 -0
  115. package/dist/sdk/index.js.map +1 -0
  116. package/dist/sdk/react.d.ts +63 -0
  117. package/dist/sdk/react.d.ts.bak +63 -0
  118. package/dist/sdk/react.d.ts.map +1 -0
  119. package/dist/sdk/react.js +161 -0
  120. package/dist/sdk/react.js.bak +161 -0
  121. package/dist/sdk/react.js.map +1 -0
  122. package/dist/state/index.d.ts +8 -0
  123. package/dist/state/index.d.ts.bak +8 -0
  124. package/dist/state/index.d.ts.map +1 -0
  125. package/dist/state/index.js +8 -0
  126. package/dist/state/index.js.bak +8 -0
  127. package/dist/state/index.js.map +1 -0
  128. package/dist/state/patch.d.ts +73 -0
  129. package/dist/state/patch.d.ts.bak +73 -0
  130. package/dist/state/patch.d.ts.map +1 -0
  131. package/dist/state/patch.js +437 -0
  132. package/dist/state/patch.js.bak +437 -0
  133. package/dist/state/patch.js.map +1 -0
  134. package/dist/state/store.d.ts +50 -0
  135. package/dist/state/store.d.ts.bak +50 -0
  136. package/dist/state/store.d.ts.map +1 -0
  137. package/dist/state/store.js +246 -0
  138. package/dist/state/store.js.bak +246 -0
  139. package/dist/state/store.js.map +1 -0
  140. package/dist/svelte/index.d.ts +15 -0
  141. package/dist/svelte/index.d.ts.bak +15 -0
  142. package/dist/svelte/index.d.ts.map +1 -0
  143. package/dist/svelte/index.js +15 -0
  144. package/dist/svelte/index.js.bak +15 -0
  145. package/dist/svelte/index.js.map +1 -0
  146. package/dist/svelte/renderer.d.ts +35 -0
  147. package/dist/svelte/renderer.d.ts.bak +35 -0
  148. package/dist/svelte/renderer.d.ts.map +1 -0
  149. package/dist/svelte/renderer.js +317 -0
  150. package/dist/svelte/renderer.js.bak +317 -0
  151. package/dist/svelte/renderer.js.map +1 -0
  152. package/dist/types/index.d.ts +349 -0
  153. package/dist/types/index.d.ts.bak +349 -0
  154. package/dist/types/index.d.ts.map +1 -0
  155. package/dist/types/index.js +152 -0
  156. package/dist/types/index.js.bak +152 -0
  157. package/dist/types/index.js.map +1 -0
  158. package/dist/vue/index.d.ts +18 -0
  159. package/dist/vue/index.d.ts.bak +18 -0
  160. package/dist/vue/index.d.ts.map +1 -0
  161. package/dist/vue/index.js +18 -0
  162. package/dist/vue/index.js.bak +18 -0
  163. package/dist/vue/index.js.map +1 -0
  164. package/dist/vue/renderer.d.ts +46 -0
  165. package/dist/vue/renderer.d.ts.bak +46 -0
  166. package/dist/vue/renderer.d.ts.map +1 -0
  167. package/dist/vue/renderer.js +302 -0
  168. package/dist/vue/renderer.js.bak +302 -0
  169. package/dist/vue/renderer.js.map +1 -0
  170. package/package.json +72 -0
@@ -0,0 +1,232 @@
1
+ /**
2
+ * UI Renderer
3
+ *
4
+ * Core renderer for A2R-IX UI IR. Platform-agnostic base that delegates
5
+ to platform-specific renderers (React, Vue, etc.).
6
+ */
7
+ /**
8
+ * Create UI renderer
9
+ */
10
+ export function createUIRenderer(config) {
11
+ let currentRoot = null;
12
+ let currentContainer = null;
13
+ let destroyed = false;
14
+ const stateStore = config.stateStore;
15
+ const catalog = config.catalog;
16
+ const platform = config.platform;
17
+ function render(root, container) {
18
+ if (destroyed) {
19
+ throw new Error('Renderer has been destroyed');
20
+ }
21
+ currentRoot = root;
22
+ currentContainer = container;
23
+ // Initialize state
24
+ if (stateStore && root.state?.initial) {
25
+ Object.entries(root.state.initial).forEach(([path, value]) => {
26
+ stateStore.set(path, value);
27
+ });
28
+ }
29
+ // Render component tree
30
+ const elements = root.components.map((comp) => renderComponent(comp));
31
+ const rootElement = platform.createElement('Fragment', {}, elements);
32
+ platform.render(rootElement, container);
33
+ }
34
+ function renderComponent(component, context) {
35
+ try {
36
+ // Validate component against catalog
37
+ if (catalog && !catalog.validate(component.type, component.props)) {
38
+ throw new Error(`Invalid props for component type: ${component.type}`);
39
+ }
40
+ // Build props with context evaluation
41
+ const props = {};
42
+ if (component.props) {
43
+ Object.entries(component.props).forEach(([key, value]) => {
44
+ props[key] = evaluateValue(value, context || {});
45
+ });
46
+ }
47
+ // Add bindings
48
+ if (component.bindings && stateStore) {
49
+ component.bindings.forEach((binding) => {
50
+ const value = stateStore.get(binding.statePath);
51
+ props[binding.prop] = value;
52
+ if (binding.direction === 'two-way') {
53
+ // Add onChange handler
54
+ props[`on${capitalize(binding.prop)}Change`] = (newValue) => {
55
+ stateStore.set(binding.statePath, newValue);
56
+ };
57
+ }
58
+ });
59
+ }
60
+ // Add event handlers
61
+ if (component.events) {
62
+ component.events.forEach((event) => {
63
+ props[event.event] = (...args) => {
64
+ handleEvent(event.action, event.params, args);
65
+ };
66
+ });
67
+ }
68
+ // Render children
69
+ let children = [];
70
+ if (component.children) {
71
+ children = component.children.map(child => renderComponent(child, context));
72
+ }
73
+ // Handle repeat
74
+ if (component.repeat && stateStore) {
75
+ const items = stateStore.get(component.repeat.items) || [];
76
+ children = items.map((item, index) => {
77
+ const itemContext = {
78
+ ...context,
79
+ [component.repeat.as]: item,
80
+ ...(component.repeat.indexAs ? { [component.repeat.indexAs]: index } : {}),
81
+ };
82
+ return renderComponent(component.children?.[0] || { id: generateId(), type: 'Fragment', props: {} }, itemContext);
83
+ });
84
+ }
85
+ // Add key/id
86
+ props.key = component.id;
87
+ // Create element
88
+ return platform.createElement(component.type, props, children);
89
+ }
90
+ catch (error) {
91
+ config.onError?.(error, component.id);
92
+ return platform.createElement('ErrorBoundary', { error }, []);
93
+ }
94
+ }
95
+ function handleEvent(actionId, params, eventArgs) {
96
+ if (!currentRoot)
97
+ return;
98
+ const action = currentRoot.actions.find((a) => a.id === actionId);
99
+ if (!action) {
100
+ config.onError?.(new Error(`Action not found: ${actionId}`));
101
+ return;
102
+ }
103
+ executeAction(action, params, eventArgs);
104
+ }
105
+ function executeAction(action, params, eventArgs) {
106
+ const { handler } = action;
107
+ switch (handler.type) {
108
+ case 'setState': {
109
+ if (stateStore) {
110
+ // Evaluate value expression with params and event
111
+ const context = { params, event: eventArgs[0], ...stateStore.snapshot() };
112
+ const value = evaluateValue(handler.value, context);
113
+ stateStore.set(handler.path, value);
114
+ }
115
+ break;
116
+ }
117
+ case 'emitEvent': {
118
+ const context = { params, event: eventArgs[0], ...stateStore?.snapshot() };
119
+ const payload = evaluateValue(handler.payload, context);
120
+ config.onEvent?.(handler.name, payload);
121
+ break;
122
+ }
123
+ case 'navigate': {
124
+ // Navigation handled by platform
125
+ break;
126
+ }
127
+ case 'validate': {
128
+ // Validation logic
129
+ break;
130
+ }
131
+ case 'custom': {
132
+ config.onEvent?.(action.id, { params, event: eventArgs[0] });
133
+ break;
134
+ }
135
+ }
136
+ }
137
+ function update(patch) {
138
+ if (!stateStore || destroyed)
139
+ return;
140
+ // Apply patch to state
141
+ const snapshot = stateStore.snapshot();
142
+ patch.forEach((op) => {
143
+ if (op.op === 'add' || op.op === 'replace') {
144
+ const path = op.path.slice(1).replace(/\//g, '.');
145
+ stateStore.set(path, op.value);
146
+ }
147
+ else if (op.op === 'remove') {
148
+ const path = op.path.slice(1).replace(/\//g, '.');
149
+ stateStore.set(path, undefined);
150
+ }
151
+ });
152
+ // Re-render if needed
153
+ if (currentRoot && currentContainer) {
154
+ render(currentRoot, currentContainer);
155
+ }
156
+ }
157
+ function dispatch(actionId, params) {
158
+ handleEvent(actionId, params, []);
159
+ }
160
+ function getState(path) {
161
+ if (!stateStore)
162
+ return undefined;
163
+ return path ? stateStore.get(path) : stateStore.snapshot();
164
+ }
165
+ function setState(path, value) {
166
+ stateStore?.set(path, value);
167
+ }
168
+ function subscribe(path, callback) {
169
+ if (!stateStore)
170
+ return () => { };
171
+ return stateStore.subscribe(path, callback);
172
+ }
173
+ function destroy() {
174
+ if (currentContainer) {
175
+ platform.unmount(currentContainer);
176
+ }
177
+ destroyed = true;
178
+ currentRoot = null;
179
+ currentContainer = null;
180
+ }
181
+ return {
182
+ render,
183
+ update,
184
+ dispatch,
185
+ getState,
186
+ setState,
187
+ subscribe,
188
+ destroy,
189
+ };
190
+ }
191
+ /**
192
+ * Evaluate value expression
193
+ */
194
+ function evaluateValue(value, context) {
195
+ if (value === null || typeof value !== 'object') {
196
+ return value;
197
+ }
198
+ if ('$path' in value) {
199
+ const path = value.$path;
200
+ return path.split('.').reduce((acc, key) => {
201
+ if (acc && typeof acc === 'object') {
202
+ return acc[key];
203
+ }
204
+ return undefined;
205
+ }, context);
206
+ }
207
+ if ('$expr' in value) {
208
+ const expr = value.$expr;
209
+ try {
210
+ // Simple expression evaluation
211
+ const fn = new Function('context', `with(context) { return ${expr}; }`);
212
+ return fn(context);
213
+ }
214
+ catch {
215
+ return undefined;
216
+ }
217
+ }
218
+ return value;
219
+ }
220
+ /**
221
+ * Generate unique ID
222
+ */
223
+ function generateId() {
224
+ return `comp_${Math.random().toString(36).substr(2, 9)}`;
225
+ }
226
+ /**
227
+ * Capitalize string
228
+ */
229
+ function capitalize(str) {
230
+ return str.charAt(0).toUpperCase() + str.slice(1);
231
+ }
232
+ //# sourceMappingURL=renderer.js.map
@@ -0,0 +1,232 @@
1
+ /**
2
+ * UI Renderer
3
+ *
4
+ * Core renderer for A2R-IX UI IR. Platform-agnostic base that delegates
5
+ to platform-specific renderers (React, Vue, etc.).
6
+ */
7
+ /**
8
+ * Create UI renderer
9
+ */
10
+ export function createUIRenderer(config) {
11
+ let currentRoot = null;
12
+ let currentContainer = null;
13
+ let destroyed = false;
14
+ const stateStore = config.stateStore;
15
+ const catalog = config.catalog;
16
+ const platform = config.platform;
17
+ function render(root, container) {
18
+ if (destroyed) {
19
+ throw new Error('Renderer has been destroyed');
20
+ }
21
+ currentRoot = root;
22
+ currentContainer = container;
23
+ // Initialize state
24
+ if (stateStore && root.state?.initial) {
25
+ Object.entries(root.state.initial).forEach(([path, value]) => {
26
+ stateStore.set(path, value);
27
+ });
28
+ }
29
+ // Render component tree
30
+ const elements = root.components.map((comp) => renderComponent(comp));
31
+ const rootElement = platform.createElement('Fragment', {}, elements);
32
+ platform.render(rootElement, container);
33
+ }
34
+ function renderComponent(component, context) {
35
+ try {
36
+ // Validate component against catalog
37
+ if (catalog && !catalog.validate(component.type, component.props)) {
38
+ throw new Error(`Invalid props for component type: ${component.type}`);
39
+ }
40
+ // Build props with context evaluation
41
+ const props = {};
42
+ if (component.props) {
43
+ Object.entries(component.props).forEach(([key, value]) => {
44
+ props[key] = evaluateValue(value, context || {});
45
+ });
46
+ }
47
+ // Add bindings
48
+ if (component.bindings && stateStore) {
49
+ component.bindings.forEach((binding) => {
50
+ const value = stateStore.get(binding.statePath);
51
+ props[binding.prop] = value;
52
+ if (binding.direction === 'two-way') {
53
+ // Add onChange handler
54
+ props[`on${capitalize(binding.prop)}Change`] = (newValue) => {
55
+ stateStore.set(binding.statePath, newValue);
56
+ };
57
+ }
58
+ });
59
+ }
60
+ // Add event handlers
61
+ if (component.events) {
62
+ component.events.forEach((event) => {
63
+ props[event.event] = (...args) => {
64
+ handleEvent(event.action, event.params, args);
65
+ };
66
+ });
67
+ }
68
+ // Render children
69
+ let children = [];
70
+ if (component.children) {
71
+ children = component.children.map(child => renderComponent(child, context));
72
+ }
73
+ // Handle repeat
74
+ if (component.repeat && stateStore) {
75
+ const items = stateStore.get(component.repeat.items) || [];
76
+ children = items.map((item, index) => {
77
+ const itemContext = {
78
+ ...context,
79
+ [component.repeat.as]: item,
80
+ ...(component.repeat.indexAs ? { [component.repeat.indexAs]: index } : {}),
81
+ };
82
+ return renderComponent(component.children?.[0] || { id: generateId(), type: 'Fragment', props: {} }, itemContext);
83
+ });
84
+ }
85
+ // Add key/id
86
+ props.key = component.id;
87
+ // Create element
88
+ return platform.createElement(component.type, props, children);
89
+ }
90
+ catch (error) {
91
+ config.onError?.(error, component.id);
92
+ return platform.createElement('ErrorBoundary', { error }, []);
93
+ }
94
+ }
95
+ function handleEvent(actionId, params, eventArgs) {
96
+ if (!currentRoot)
97
+ return;
98
+ const action = currentRoot.actions.find((a) => a.id === actionId);
99
+ if (!action) {
100
+ config.onError?.(new Error(`Action not found: ${actionId}`));
101
+ return;
102
+ }
103
+ executeAction(action, params, eventArgs);
104
+ }
105
+ function executeAction(action, params, eventArgs) {
106
+ const { handler } = action;
107
+ switch (handler.type) {
108
+ case 'setState': {
109
+ if (stateStore) {
110
+ // Evaluate value expression with params and event
111
+ const context = { params, event: eventArgs[0], ...stateStore.snapshot() };
112
+ const value = evaluateValue(handler.value, context);
113
+ stateStore.set(handler.path, value);
114
+ }
115
+ break;
116
+ }
117
+ case 'emitEvent': {
118
+ const context = { params, event: eventArgs[0], ...stateStore?.snapshot() };
119
+ const payload = evaluateValue(handler.payload, context);
120
+ config.onEvent?.(handler.name, payload);
121
+ break;
122
+ }
123
+ case 'navigate': {
124
+ // Navigation handled by platform
125
+ break;
126
+ }
127
+ case 'validate': {
128
+ // Validation logic
129
+ break;
130
+ }
131
+ case 'custom': {
132
+ config.onEvent?.(action.id, { params, event: eventArgs[0] });
133
+ break;
134
+ }
135
+ }
136
+ }
137
+ function update(patch) {
138
+ if (!stateStore || destroyed)
139
+ return;
140
+ // Apply patch to state
141
+ const snapshot = stateStore.snapshot();
142
+ patch.forEach((op) => {
143
+ if (op.op === 'add' || op.op === 'replace') {
144
+ const path = op.path.slice(1).replace(/\//g, '.');
145
+ stateStore.set(path, op.value);
146
+ }
147
+ else if (op.op === 'remove') {
148
+ const path = op.path.slice(1).replace(/\//g, '.');
149
+ stateStore.set(path, undefined);
150
+ }
151
+ });
152
+ // Re-render if needed
153
+ if (currentRoot && currentContainer) {
154
+ render(currentRoot, currentContainer);
155
+ }
156
+ }
157
+ function dispatch(actionId, params) {
158
+ handleEvent(actionId, params, []);
159
+ }
160
+ function getState(path) {
161
+ if (!stateStore)
162
+ return undefined;
163
+ return path ? stateStore.get(path) : stateStore.snapshot();
164
+ }
165
+ function setState(path, value) {
166
+ stateStore?.set(path, value);
167
+ }
168
+ function subscribe(path, callback) {
169
+ if (!stateStore)
170
+ return () => { };
171
+ return stateStore.subscribe(path, callback);
172
+ }
173
+ function destroy() {
174
+ if (currentContainer) {
175
+ platform.unmount(currentContainer);
176
+ }
177
+ destroyed = true;
178
+ currentRoot = null;
179
+ currentContainer = null;
180
+ }
181
+ return {
182
+ render,
183
+ update,
184
+ dispatch,
185
+ getState,
186
+ setState,
187
+ subscribe,
188
+ destroy,
189
+ };
190
+ }
191
+ /**
192
+ * Evaluate value expression
193
+ */
194
+ function evaluateValue(value, context) {
195
+ if (value === null || typeof value !== 'object') {
196
+ return value;
197
+ }
198
+ if ('$path' in value) {
199
+ const path = value.$path;
200
+ return path.split('.').reduce((acc, key) => {
201
+ if (acc && typeof acc === 'object') {
202
+ return acc[key];
203
+ }
204
+ return undefined;
205
+ }, context);
206
+ }
207
+ if ('$expr' in value) {
208
+ const expr = value.$expr;
209
+ try {
210
+ // Simple expression evaluation
211
+ const fn = new Function('context', `with(context) { return ${expr}; }`);
212
+ return fn(context);
213
+ }
214
+ catch {
215
+ return undefined;
216
+ }
217
+ }
218
+ return value;
219
+ }
220
+ /**
221
+ * Generate unique ID
222
+ */
223
+ function generateId() {
224
+ return `comp_${Math.random().toString(36).substr(2, 9)}`;
225
+ }
226
+ /**
227
+ * Capitalize string
228
+ */
229
+ function capitalize(str) {
230
+ return str.charAt(0).toUpperCase() + str.slice(1);
231
+ }
232
+ //# sourceMappingURL=renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/renderer/renderer.ts"],"names":[],"mappings":"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"}