@coherent.js/core 1.0.0-beta.2 → 1.0.0-beta.3

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 (104) hide show
  1. package/dist/coherent.d.ts +10 -150
  2. package/dist/coherent.d.ts.map +1 -1
  3. package/dist/coherent.js +33 -166
  4. package/dist/coherent.js.map +1 -1
  5. package/dist/components/component-system.js +109 -109
  6. package/dist/core/html-utils.js +5 -5
  7. package/dist/core/object-factory.js +21 -21
  8. package/dist/core/object-utils.js +2 -2
  9. package/dist/database/adapters/mongodb.d.ts +15 -0
  10. package/dist/database/adapters/mongodb.d.ts.map +1 -0
  11. package/dist/database/adapters/mongodb.js +216 -0
  12. package/dist/database/adapters/mongodb.js.map +1 -0
  13. package/dist/database/adapters/mysql.d.ts +12 -0
  14. package/dist/database/adapters/mysql.d.ts.map +1 -0
  15. package/dist/database/adapters/mysql.js +171 -0
  16. package/dist/database/adapters/mysql.js.map +1 -0
  17. package/dist/database/adapters/postgresql.d.ts +12 -0
  18. package/dist/database/adapters/postgresql.d.ts.map +1 -0
  19. package/dist/database/adapters/postgresql.js +177 -0
  20. package/dist/database/adapters/postgresql.js.map +1 -0
  21. package/dist/database/adapters/sqlite.d.ts +15 -0
  22. package/dist/database/adapters/sqlite.d.ts.map +1 -0
  23. package/dist/database/adapters/sqlite.js +241 -0
  24. package/dist/database/adapters/sqlite.js.map +1 -0
  25. package/dist/database/connection-manager.d.ts +135 -0
  26. package/dist/database/connection-manager.d.ts.map +1 -0
  27. package/dist/database/connection-manager.js +362 -0
  28. package/dist/database/connection-manager.js.map +1 -0
  29. package/dist/database/index.d.ts +38 -0
  30. package/dist/database/index.d.ts.map +1 -0
  31. package/dist/database/index.js +60 -0
  32. package/dist/database/index.js.map +1 -0
  33. package/dist/database/middleware.d.ts +122 -0
  34. package/dist/database/middleware.d.ts.map +1 -0
  35. package/dist/database/middleware.js +390 -0
  36. package/dist/database/middleware.js.map +1 -0
  37. package/dist/database/migration.d.ts +62 -0
  38. package/dist/database/migration.d.ts.map +1 -0
  39. package/dist/database/migration.js +423 -0
  40. package/dist/database/migration.js.map +1 -0
  41. package/dist/database/model.d.ts +8 -0
  42. package/dist/database/model.d.ts.map +1 -0
  43. package/dist/database/model.js +167 -0
  44. package/dist/database/model.js.map +1 -0
  45. package/dist/database/query-builder.d.ts +111 -0
  46. package/dist/database/query-builder.d.ts.map +1 -0
  47. package/dist/database/query-builder.js +187 -0
  48. package/dist/database/query-builder.js.map +1 -0
  49. package/dist/database/utils.d.ts +196 -0
  50. package/dist/database/utils.d.ts.map +1 -0
  51. package/dist/database/utils.js +372 -0
  52. package/dist/database/utils.js.map +1 -0
  53. package/dist/dev/dev-tools.d.ts +1 -1
  54. package/dist/dev/dev-tools.js +28 -28
  55. package/dist/performance/bundle-optimizer.js +11 -11
  56. package/dist/performance/cache-manager.js +6 -6
  57. package/dist/performance/monitor.js +10 -10
  58. package/dist/performance/monitor.js.map +1 -1
  59. package/dist/rendering/base-renderer.js +13 -13
  60. package/dist/rendering/dom-renderer.d.ts +0 -23
  61. package/dist/rendering/dom-renderer.d.ts.map +1 -1
  62. package/dist/rendering/dom-renderer.js +9 -77
  63. package/dist/rendering/dom-renderer.js.map +1 -1
  64. package/dist/rendering/html-renderer.d.ts +0 -15
  65. package/dist/rendering/html-renderer.d.ts.map +1 -1
  66. package/dist/rendering/html-renderer.js +4 -85
  67. package/dist/rendering/html-renderer.js.map +1 -1
  68. package/dist/rendering/streaming-renderer.js +12 -12
  69. package/dist/utils/dependency-utils.js +2 -2
  70. package/dist/utils/normalization.js +1 -1
  71. package/dist/utils/validation.js +1 -1
  72. package/package.json +1 -1
  73. package/dist/components/lifecycle.d.ts +0 -212
  74. package/dist/components/lifecycle.d.ts.map +0 -1
  75. package/dist/components/lifecycle.js +0 -525
  76. package/dist/components/lifecycle.js.map +0 -1
  77. package/dist/forms/validation.d.ts +0 -271
  78. package/dist/forms/validation.d.ts.map +0 -1
  79. package/dist/forms/validation.js +0 -573
  80. package/dist/forms/validation.js.map +0 -1
  81. package/dist/performance/component-cache.d.ts +0 -120
  82. package/dist/performance/component-cache.d.ts.map +0 -1
  83. package/dist/performance/component-cache.js +0 -364
  84. package/dist/performance/component-cache.js.map +0 -1
  85. package/dist/rendering/css-manager.d.ts +0 -73
  86. package/dist/rendering/css-manager.d.ts.map +0 -1
  87. package/dist/rendering/css-manager.js +0 -176
  88. package/dist/rendering/css-manager.js.map +0 -1
  89. package/dist/rendering/vdom-diff.d.ts +0 -47
  90. package/dist/rendering/vdom-diff.d.ts.map +0 -1
  91. package/dist/rendering/vdom-diff.js +0 -416
  92. package/dist/rendering/vdom-diff.js.map +0 -1
  93. package/dist/routing/router.d.ts +0 -241
  94. package/dist/routing/router.d.ts.map +0 -1
  95. package/dist/routing/router.js +0 -648
  96. package/dist/routing/router.js.map +0 -1
  97. package/dist/state/reactive-state.d.ts +0 -166
  98. package/dist/state/reactive-state.d.ts.map +0 -1
  99. package/dist/state/reactive-state.js +0 -546
  100. package/dist/state/reactive-state.js.map +0 -1
  101. package/dist/utils/error-handler.d.ts +0 -148
  102. package/dist/utils/error-handler.d.ts.map +0 -1
  103. package/dist/utils/error-handler.js +0 -468
  104. package/dist/utils/error-handler.js.map +0 -1
@@ -1,176 +0,0 @@
1
- /**
2
- * CSS Management System for Coherent.js
3
- * Handles CSS file inclusion, inline styles, and optimization
4
- */
5
- import fs from 'node:fs/promises';
6
- import path from 'node:path';
7
- /**
8
- * CSS Manager Class
9
- * Handles CSS file loading, processing, and injection
10
- */
11
- export class CSSManager {
12
- constructor(options = {}) {
13
- this.options = {
14
- basePath: process.cwd(),
15
- minify: false,
16
- cache: true,
17
- autoprefixer: false,
18
- ...options
19
- };
20
- this.cache = new Map();
21
- this.loadedFiles = new Set();
22
- }
23
- /**
24
- * Load CSS file content
25
- */
26
- async loadCSSFile(filePath) {
27
- const fullPath = path.resolve(this.options.basePath, filePath);
28
- const cacheKey = fullPath;
29
- // Return cached content if available
30
- if (this.options.cache && this.cache.has(cacheKey)) {
31
- return this.cache.get(cacheKey);
32
- }
33
- try {
34
- let content = await fs.readFile(fullPath, 'utf8');
35
- // Basic minification if enabled
36
- if (this.options.minify) {
37
- content = this.minifyCSS(content);
38
- }
39
- // Cache the content
40
- if (this.options.cache) {
41
- this.cache.set(cacheKey, content);
42
- }
43
- this.loadedFiles.add(filePath);
44
- return content;
45
- }
46
- catch (error) {
47
- console.warn(`Failed to load CSS file: ${filePath}`, error.message);
48
- return '';
49
- }
50
- }
51
- /**
52
- * Load multiple CSS files
53
- */
54
- async loadCSSFiles(filePaths) {
55
- if (!Array.isArray(filePaths)) {
56
- filePaths = [filePaths];
57
- }
58
- const cssContents = await Promise.all(filePaths.map(filePath => this.loadCSSFile(filePath)));
59
- return cssContents.join('\n');
60
- }
61
- /**
62
- * Generate CSS link tags for external files
63
- */
64
- generateCSSLinks(filePaths, baseUrl = '/') {
65
- if (!Array.isArray(filePaths)) {
66
- filePaths = [filePaths];
67
- }
68
- return filePaths
69
- .map(filePath => {
70
- const href = filePath.startsWith('http')
71
- ? filePath
72
- : `${baseUrl}${filePath}`.replace(/\/+/g, '/');
73
- return `<link rel="stylesheet" href="${this.escapeHtml(href)}" />`;
74
- })
75
- .join('\n');
76
- }
77
- /**
78
- * Generate inline style tag with CSS content
79
- */
80
- generateInlineStyles(cssContent) {
81
- if (!cssContent)
82
- return '';
83
- return `<style type="text/css">\n${cssContent}\n</style>`;
84
- }
85
- /**
86
- * Basic CSS minification
87
- */
88
- minifyCSS(css) {
89
- return css
90
- .replace(/\/\*[\s\S]*?\*\//g, '') // Remove comments
91
- .replace(/\s+/g, ' ') // Collapse whitespace
92
- .replace(/;\s*}/g, '}') // Remove last semicolon in blocks
93
- .replace(/{\s+/g, '{') // Remove space after opening brace
94
- .replace(/;\s+/g, ';') // Remove space after semicolons
95
- .trim();
96
- }
97
- /**
98
- * Escape HTML entities
99
- */
100
- escapeHtml(text) {
101
- const div = { textContent: text };
102
- return div.innerHTML || text;
103
- }
104
- /**
105
- * Clear cache
106
- */
107
- clearCache() {
108
- this.cache.clear();
109
- this.loadedFiles.clear();
110
- }
111
- /**
112
- * Get loaded file list
113
- */
114
- getLoadedFiles() {
115
- return Array.from(this.loadedFiles);
116
- }
117
- }
118
- /**
119
- * Default CSS Manager instance
120
- */
121
- export const defaultCSSManager = new CSSManager();
122
- /**
123
- * CSS processing utilities
124
- */
125
- export const cssUtils = {
126
- /**
127
- * Process CSS options from render options
128
- */
129
- processCSSOptions(options = {}) {
130
- const { css = {}, cssFiles = [], inlineCSS = '', cssLinks = [], cssBasePath = process.cwd(), cssMinify = false } = options;
131
- return {
132
- files: Array.isArray(cssFiles) ? cssFiles : [cssFiles].filter(Boolean),
133
- inline: inlineCSS || css.inline || '',
134
- links: Array.isArray(cssLinks) ? cssLinks : [cssLinks].filter(Boolean),
135
- basePath: css.basePath || cssBasePath,
136
- minify: css.minify || cssMinify,
137
- loadInline: css.loadInline !== false // default true
138
- };
139
- },
140
- /**
141
- * Generate complete CSS HTML for head section
142
- */
143
- async generateCSSHtml(cssOptions, cssManager = defaultCSSManager) {
144
- const cssHtmlParts = [];
145
- // Process external CSS links
146
- if (cssOptions.links.length > 0) {
147
- cssHtmlParts.push(cssManager.generateCSSLinks(cssOptions.links));
148
- }
149
- // Process CSS files (inline or as links)
150
- if (cssOptions.files.length > 0) {
151
- if (cssOptions.loadInline) {
152
- // Load and inline CSS files
153
- const cssContent = await cssManager.loadCSSFiles(cssOptions.files);
154
- if (cssContent) {
155
- cssHtmlParts.push(cssManager.generateInlineStyles(cssContent));
156
- }
157
- }
158
- else {
159
- // Generate link tags for CSS files
160
- cssHtmlParts.push(cssManager.generateCSSLinks(cssOptions.files));
161
- }
162
- }
163
- // Process inline CSS
164
- if (cssOptions.inline) {
165
- cssHtmlParts.push(cssManager.generateInlineStyles(cssOptions.inline));
166
- }
167
- return cssHtmlParts.join('\n');
168
- }
169
- };
170
- /**
171
- * Create a new CSS Manager instance
172
- */
173
- export function createCSSManager(options = {}) {
174
- return new CSSManager(options);
175
- }
176
- //# sourceMappingURL=css-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"css-manager.js","sourceRoot":"","sources":["../../../../src/rendering/css-manager.js"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- /**
2
- * Virtual DOM node structure
3
- */
4
- export function createVNode(type: any, props?: {}, children?: any[]): {
5
- type: any;
6
- props: {};
7
- children: any[];
8
- key: any;
9
- _coherent: boolean;
10
- };
11
- /**
12
- * Convert Coherent object to virtual DOM node
13
- */
14
- export function objectToVNode(component: any, depth?: number): any;
15
- /**
16
- * Compare two virtual DOM nodes and generate patch operations
17
- */
18
- export function diff(oldVNode: any, newVNode: any, patches?: any[], path?: any[]): any[];
19
- /**
20
- * Apply patches to a DOM element
21
- */
22
- export function patch(element: any, patches: any): any;
23
- export namespace VDOM_OPERATIONS {
24
- let CREATE: string;
25
- let UPDATE: string;
26
- let REMOVE: string;
27
- let REPLACE: string;
28
- let MOVE: string;
29
- }
30
- /**
31
- * Create a virtual DOM differ for component updates
32
- */
33
- export class VDOMDiffer {
34
- cache: Map<any, any>;
35
- /**
36
- * Perform efficient diff and patch
37
- */
38
- update(element: any, oldComponent: any, newComponent: any): number;
39
- /**
40
- * Cache virtual nodes for performance
41
- */
42
- cacheVNode(key: any, vnode: any): void;
43
- getCachedVNode(key: any): any;
44
- clearCache(): void;
45
- }
46
- export default VDOMDiffer;
47
- //# sourceMappingURL=vdom-diff.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vdom-diff.d.ts","sourceRoot":"","sources":["../../../../src/rendering/vdom-diff.js"],"names":[],"mappings":"AAgBA;;GAEG;AACH;;;;;;EAQC;AAED;;GAEG;AACH,mEA6DC;AAED;;GAEG;AACH,yFA0DC;AAqGD;;GAEG;AACH,uDAiBC;;;;;;;;AA2JD;;GAEG;AACH;IAEQ,qBAAsB;IAG1B;;OAEG;IACH,mEAWC;IAED;;OAEG;IACH,uCAEC;IAED,8BAEC;IAED,mBAEC;CACJ"}
@@ -1,416 +0,0 @@
1
- /**
2
- * Virtual DOM Diffing Engine for Coherent.js
3
- * Implements efficient diffing algorithm to minimize DOM updates
4
- */
5
- /**
6
- * Types of virtual DOM operations
7
- */
8
- export const VDOM_OPERATIONS = {
9
- CREATE: 'CREATE',
10
- UPDATE: 'UPDATE',
11
- REMOVE: 'REMOVE',
12
- REPLACE: 'REPLACE',
13
- MOVE: 'MOVE'
14
- };
15
- /**
16
- * Virtual DOM node structure
17
- */
18
- export function createVNode(type, props = {}, children = []) {
19
- return {
20
- type,
21
- props: props || {},
22
- children: Array.isArray(children) ? children : [children].filter(Boolean),
23
- key: props?.key,
24
- _coherent: true
25
- };
26
- }
27
- /**
28
- * Convert Coherent object to virtual DOM node
29
- */
30
- export function objectToVNode(component, depth = 0) {
31
- if (depth > 100) {
32
- console.warn('Maximum depth reached in virtual DOM creation');
33
- return createVNode('span', {}, ['Maximum depth exceeded']);
34
- }
35
- if (component === null || component === undefined) {
36
- return null;
37
- }
38
- if (typeof component === 'string' || typeof component === 'number') {
39
- return String(component);
40
- }
41
- if (typeof component === 'boolean') {
42
- return component ? 'true' : 'false';
43
- }
44
- if (Array.isArray(component)) {
45
- return component.map(child => objectToVNode(child, depth + 1)).filter(Boolean);
46
- }
47
- if (typeof component === 'function') {
48
- try {
49
- const result = component();
50
- return objectToVNode(result, depth + 1);
51
- }
52
- catch (error) {
53
- console.error('Error executing function component:', error);
54
- return createVNode('span', { className: 'error' }, [`Error: ${error.message}`]);
55
- }
56
- }
57
- if (typeof component === 'object' && component !== null) {
58
- const entries = Object.entries(component);
59
- if (entries.length === 1) {
60
- const [tagName, props] = entries[0];
61
- if (typeof props === 'object' && props !== null) {
62
- const { children, text, ...otherProps } = props;
63
- let childNodes = [];
64
- if (text !== undefined) {
65
- childNodes = [String(text)];
66
- }
67
- else if (children) {
68
- if (Array.isArray(children)) {
69
- childNodes = children.map(child => objectToVNode(child, depth + 1)).filter(Boolean);
70
- }
71
- else {
72
- const child = objectToVNode(children, depth + 1);
73
- if (child)
74
- childNodes = [child];
75
- }
76
- }
77
- return createVNode(tagName, otherProps, childNodes);
78
- }
79
- else {
80
- // Simple case: { div: 'text content' }
81
- return createVNode(tagName, {}, [String(_props)]);
82
- }
83
- }
84
- }
85
- return null;
86
- }
87
- /**
88
- * Compare two virtual DOM nodes and generate patch operations
89
- */
90
- export function diff(oldVNode, newVNode, patches = [], path = []) {
91
- // Handle null cases
92
- if (!oldVNode && !newVNode) {
93
- return patches;
94
- }
95
- if (!oldVNode && newVNode) {
96
- patches.push({
97
- type: VDOM_OPERATIONS.CREATE,
98
- path: [...path],
99
- vnode: newVNode
100
- });
101
- return patches;
102
- }
103
- if (oldVNode && !newVNode) {
104
- patches.push({
105
- type: VDOM_OPERATIONS.REMOVE,
106
- path: [...path]
107
- });
108
- return patches;
109
- }
110
- // Handle text nodes
111
- if (typeof oldVNode === 'string' || typeof newVNode === 'string') {
112
- if (oldVNode !== newVNode) {
113
- patches.push({
114
- type: VDOM_OPERATIONS.REPLACE,
115
- path: [...path],
116
- vnode: newVNode
117
- });
118
- }
119
- return patches;
120
- }
121
- // Handle array diffing (fragment children)
122
- if (Array.isArray(oldVNode) || Array.isArray(newVNode)) {
123
- return diffArrays(oldVNode, newVNode, patches, path);
124
- }
125
- // Handle element diffing
126
- if (oldVNode.type !== newVNode.type) {
127
- patches.push({
128
- type: VDOM_OPERATIONS.REPLACE,
129
- path: [...path],
130
- vnode: newVNode
131
- });
132
- return patches;
133
- }
134
- // Diff props
135
- const propPatches = diffProps(oldVNode.props, newVNode.props, path);
136
- patches.push(...propPatches);
137
- // Diff children
138
- diffArrays(oldVNode.children, newVNode.children, patches, [...path, 'children']);
139
- return patches;
140
- }
141
- /**
142
- * Diff arrays of virtual nodes (optimized for keyed elements)
143
- */
144
- function diffArrays(oldChildren = [], newChildren = [], patches = [], path = []) {
145
- const oldArray = Array.isArray(oldChildren) ? oldChildren : [oldChildren].filter(Boolean);
146
- const newArray = Array.isArray(newChildren) ? newChildren : [newChildren].filter(Boolean);
147
- // Simple case: lengths differ significantly, replace all
148
- if (Math.abs(oldArray.length - newArray.length) > Math.max(oldArray.length, newArray.length) * 0.5) {
149
- patches.push({
150
- type: VDOM_OPERATIONS.REPLACE,
151
- path: [...path],
152
- vnode: newArray
153
- });
154
- return patches;
155
- }
156
- // Track keys for efficient reordering
157
- const oldKeyMap = new Map();
158
- const newKeyMap = new Map();
159
- oldArray.forEach((child, index) => {
160
- if (child && child.key !== undefined) {
161
- oldKeyMap.set(child.key, { child, index });
162
- }
163
- });
164
- newArray.forEach((child, index) => {
165
- if (child && child.key !== undefined) {
166
- newKeyMap.set(child.key, { child, index });
167
- }
168
- });
169
- // Process children
170
- const maxLength = Math.max(oldArray.length, newArray.length);
171
- for (let i = 0; i < maxLength; i++) {
172
- const oldChild = oldArray[i];
173
- const newChild = newArray[i];
174
- const childPath = [...path, i];
175
- if (oldChild && newChild && oldChild.key && newChild.key) {
176
- // Handle keyed elements
177
- if (oldChild.key !== newChild.key) {
178
- // Check if this is a move operation
179
- const oldPos = newKeyMap.get(oldChild.key);
180
- if (oldPos && oldPos.index !== i) {
181
- patches.push({
182
- type: VDOM_OPERATIONS.MOVE,
183
- path: childPath,
184
- from: oldPos.index,
185
- to: i
186
- });
187
- }
188
- else {
189
- // Replace with new element
190
- patches.push({
191
- type: VDOM_OPERATIONS.REPLACE,
192
- path: childPath,
193
- vnode: newChild
194
- });
195
- }
196
- }
197
- else {
198
- // Same key, diff the elements
199
- diff(oldChild, newChild, patches, childPath);
200
- }
201
- }
202
- else {
203
- // Handle non-keyed elements
204
- diff(oldChild, newChild, patches, childPath);
205
- }
206
- }
207
- return patches;
208
- }
209
- /**
210
- * Diff element properties
211
- */
212
- function diffProps(oldProps = {}, newProps = {}, path = []) {
213
- const patches = [];
214
- const allKeys = new Set([...Object.keys(oldProps), ...Object.keys(newProps)]);
215
- for (const key of allKeys) {
216
- if (key === 'children')
217
- continue; // Children handled separately
218
- const oldValue = oldProps[key];
219
- const newValue = newProps[key];
220
- if (oldValue !== newValue) {
221
- patches.push({
222
- type: VDOM_OPERATIONS.UPDATE,
223
- path: [...path, 'props', key],
224
- oldValue,
225
- newValue
226
- });
227
- }
228
- }
229
- return patches;
230
- }
231
- /**
232
- * Apply patches to a DOM element
233
- */
234
- export function patch(element, patches) {
235
- if (!element || !patches.length) {
236
- return element;
237
- }
238
- const patchResults = [];
239
- for (const p of patches) {
240
- try {
241
- const result = applyPatch(element, p);
242
- patchResults.push(result);
243
- }
244
- catch (error) {
245
- console.error('Error applying patch:', error, p);
246
- }
247
- }
248
- return element;
249
- }
250
- /**
251
- * Apply a single patch operation
252
- */
253
- function applyPatch(rootElement, patch) {
254
- const target = getElementByPath(rootElement, patch.path);
255
- switch (patch.type) {
256
- case VDOM_OPERATIONS.CREATE:
257
- const newElement = vnodeToDOM(patch.vnode);
258
- if (target && target.parentNode) {
259
- target.parentNode.appendChild(newElement);
260
- }
261
- return newElement;
262
- case VDOM_OPERATIONS.REMOVE:
263
- if (target && target.parentNode) {
264
- target.parentNode.removeChild(target);
265
- }
266
- return null;
267
- case VDOM_OPERATIONS.REPLACE:
268
- const replacement = vnodeToDOM(patch.vnode);
269
- if (target && target.parentNode) {
270
- target.parentNode.replaceChild(replacement, target);
271
- }
272
- return replacement;
273
- case VDOM_OPERATIONS.UPDATE:
274
- if (target && patch.path[patch.path.length - 2] === 'props') {
275
- const propName = patch.path[patch.path.length - 1];
276
- updateDOMProperty(target, propName, patch.oldValue, patch.newValue);
277
- }
278
- return target;
279
- case VDOM_OPERATIONS.MOVE:
280
- if (target && target.parentNode) {
281
- const parent = target.parentNode;
282
- const children = Array.from(parent.children);
283
- const fromElement = children[patch.from];
284
- const toPosition = patch.to;
285
- if (fromElement && toPosition < children.length) {
286
- parent.insertBefore(fromElement, children[toPosition]);
287
- }
288
- }
289
- return target;
290
- default:
291
- console.warn('Unknown patch operation:', patch.type);
292
- return target;
293
- }
294
- }
295
- /**
296
- * Navigate DOM tree by path
297
- */
298
- function getElementByPath(element, path) {
299
- let current = element;
300
- for (const segment of path) {
301
- if (!current)
302
- return null;
303
- if (segment === 'children') {
304
- continue; // Skip children marker
305
- }
306
- if (typeof segment === 'number') {
307
- current = current.children[segment];
308
- }
309
- else if (segment === 'props') {
310
- continue; // Props handled in UPDATE operations
311
- }
312
- }
313
- return current;
314
- }
315
- /**
316
- * Convert virtual node to DOM element
317
- */
318
- function vnodeToDOM(vnode) {
319
- if (typeof vnode === 'string') {
320
- return document.createTextNode(vnode);
321
- }
322
- if (Array.isArray(vnode)) {
323
- const fragment = document.createDocumentFragment();
324
- vnode.forEach(child => {
325
- const childElement = vnodeToDOM(child);
326
- if (childElement) {
327
- fragment.appendChild(childElement);
328
- }
329
- });
330
- return fragment;
331
- }
332
- if (vnode && vnode.type) {
333
- const element = document.createElement(vnode.type);
334
- // Set properties
335
- Object.entries(vnode._props).forEach(([key, value]) => {
336
- updateDOMProperty(element, key, undefined, value);
337
- });
338
- // Append children
339
- vnode.children.forEach(child => {
340
- const childElement = vnodeToDOM(child);
341
- if (childElement) {
342
- element.appendChild(childElement);
343
- }
344
- });
345
- return element;
346
- }
347
- return null;
348
- }
349
- /**
350
- * Update DOM element property
351
- */
352
- function updateDOMProperty(element, name, oldValue, newValue) {
353
- // Handle special properties
354
- if (name === 'className' || name === 'class') {
355
- element.className = newValue || '';
356
- return;
357
- }
358
- if (name.startsWith('on') && typeof newValue === 'function') {
359
- const eventType = name.slice(2).toLowerCase();
360
- // Remove old event listener
361
- if (typeof oldValue === 'function') {
362
- element.removeEventListener(eventType, oldValue);
363
- }
364
- // Add new event listener
365
- element.addEventListener(eventType, newValue);
366
- return;
367
- }
368
- if (newValue === null || newValue === undefined) {
369
- element.removeAttribute(name);
370
- }
371
- else if (typeof newValue === 'boolean') {
372
- if (newValue) {
373
- element.setAttribute(name, '');
374
- }
375
- else {
376
- element.removeAttribute(name);
377
- }
378
- }
379
- else {
380
- element.setAttribute(name, String(newValue));
381
- }
382
- }
383
- /**
384
- * Create a virtual DOM differ for component updates
385
- */
386
- export class VDOMDiffer {
387
- constructor() {
388
- this.cache = new Map();
389
- }
390
- /**
391
- * Perform efficient diff and patch
392
- */
393
- update(element, oldComponent, newComponent) {
394
- const oldVNode = objectToVNode(oldComponent);
395
- const newVNode = objectToVNode(newComponent);
396
- const patches = diff(oldVNode, newVNode);
397
- if (patches.length > 0) {
398
- patch(element, patches);
399
- }
400
- return patches.length;
401
- }
402
- /**
403
- * Cache virtual nodes for performance
404
- */
405
- cacheVNode(key, vnode) {
406
- this.cache.set(key, vnode);
407
- }
408
- getCachedVNode(key) {
409
- return this.cache.get(key);
410
- }
411
- clearCache() {
412
- this.cache.clear();
413
- }
414
- }
415
- export default VDOMDiffer;
416
- //# sourceMappingURL=vdom-diff.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vdom-diff.js","sourceRoot":"","sources":["../../../../src/rendering/vdom-diff.js"],"names":[],"mappings":"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"}