@coherent.js/core 1.0.0-beta.2

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 (116) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +130 -0
  3. package/dist/coherent.d.ts +472 -0
  4. package/dist/coherent.d.ts.map +1 -0
  5. package/dist/coherent.js +590 -0
  6. package/dist/coherent.js.map +1 -0
  7. package/dist/components/component-system.d.ts +1138 -0
  8. package/dist/components/component-system.d.ts.map +1 -0
  9. package/dist/components/component-system.js +2220 -0
  10. package/dist/components/component-system.js.map +1 -0
  11. package/dist/components/lifecycle.d.ts +212 -0
  12. package/dist/components/lifecycle.d.ts.map +1 -0
  13. package/dist/components/lifecycle.js +525 -0
  14. package/dist/components/lifecycle.js.map +1 -0
  15. package/dist/core/html-utils.d.ts +14 -0
  16. package/dist/core/html-utils.d.ts.map +1 -0
  17. package/dist/core/html-utils.js +166 -0
  18. package/dist/core/html-utils.js.map +1 -0
  19. package/dist/core/object-factory.d.ts +38 -0
  20. package/dist/core/object-factory.d.ts.map +1 -0
  21. package/dist/core/object-factory.js +63 -0
  22. package/dist/core/object-factory.js.map +1 -0
  23. package/dist/core/object-utils.d.ts +77 -0
  24. package/dist/core/object-utils.d.ts.map +1 -0
  25. package/dist/core/object-utils.js +502 -0
  26. package/dist/core/object-utils.js.map +1 -0
  27. package/dist/dev/dev-tools.d.ts +194 -0
  28. package/dist/dev/dev-tools.d.ts.map +1 -0
  29. package/dist/dev/dev-tools.js +846 -0
  30. package/dist/dev/dev-tools.js.map +1 -0
  31. package/dist/forms/validation.d.ts +271 -0
  32. package/dist/forms/validation.d.ts.map +1 -0
  33. package/dist/forms/validation.js +573 -0
  34. package/dist/forms/validation.js.map +1 -0
  35. package/dist/index.cjs +5281 -0
  36. package/dist/index.cjs.map +7 -0
  37. package/dist/index.js +5204 -0
  38. package/dist/index.js.map +7 -0
  39. package/dist/performance/bundle-optimizer.d.ts +95 -0
  40. package/dist/performance/bundle-optimizer.d.ts.map +1 -0
  41. package/dist/performance/bundle-optimizer.js +192 -0
  42. package/dist/performance/bundle-optimizer.js.map +1 -0
  43. package/dist/performance/cache-manager.d.ts +107 -0
  44. package/dist/performance/cache-manager.d.ts.map +1 -0
  45. package/dist/performance/cache-manager.js +314 -0
  46. package/dist/performance/cache-manager.js.map +1 -0
  47. package/dist/performance/component-cache.d.ts +120 -0
  48. package/dist/performance/component-cache.d.ts.map +1 -0
  49. package/dist/performance/component-cache.js +364 -0
  50. package/dist/performance/component-cache.js.map +1 -0
  51. package/dist/performance/monitor.d.ts +189 -0
  52. package/dist/performance/monitor.d.ts.map +1 -0
  53. package/dist/performance/monitor.js +347 -0
  54. package/dist/performance/monitor.js.map +1 -0
  55. package/dist/rendering/base-renderer.d.ts +140 -0
  56. package/dist/rendering/base-renderer.d.ts.map +1 -0
  57. package/dist/rendering/base-renderer.js +409 -0
  58. package/dist/rendering/base-renderer.js.map +1 -0
  59. package/dist/rendering/css-manager.d.ts +73 -0
  60. package/dist/rendering/css-manager.d.ts.map +1 -0
  61. package/dist/rendering/css-manager.js +176 -0
  62. package/dist/rendering/css-manager.js.map +1 -0
  63. package/dist/rendering/dom-renderer.d.ts +62 -0
  64. package/dist/rendering/dom-renderer.d.ts.map +1 -0
  65. package/dist/rendering/dom-renderer.js +252 -0
  66. package/dist/rendering/dom-renderer.js.map +1 -0
  67. package/dist/rendering/html-renderer.d.ts +67 -0
  68. package/dist/rendering/html-renderer.d.ts.map +1 -0
  69. package/dist/rendering/html-renderer.js +444 -0
  70. package/dist/rendering/html-renderer.js.map +1 -0
  71. package/dist/rendering/renderer-config.d.ts +282 -0
  72. package/dist/rendering/renderer-config.d.ts.map +1 -0
  73. package/dist/rendering/renderer-config.js +144 -0
  74. package/dist/rendering/renderer-config.js.map +1 -0
  75. package/dist/rendering/streaming-renderer.d.ts +117 -0
  76. package/dist/rendering/streaming-renderer.d.ts.map +1 -0
  77. package/dist/rendering/streaming-renderer.js +326 -0
  78. package/dist/rendering/streaming-renderer.js.map +1 -0
  79. package/dist/rendering/vdom-diff.d.ts +47 -0
  80. package/dist/rendering/vdom-diff.d.ts.map +1 -0
  81. package/dist/rendering/vdom-diff.js +416 -0
  82. package/dist/rendering/vdom-diff.js.map +1 -0
  83. package/dist/routing/router.d.ts +241 -0
  84. package/dist/routing/router.d.ts.map +1 -0
  85. package/dist/routing/router.js +648 -0
  86. package/dist/routing/router.js.map +1 -0
  87. package/dist/state/reactive-state.d.ts +166 -0
  88. package/dist/state/reactive-state.d.ts.map +1 -0
  89. package/dist/state/reactive-state.js +546 -0
  90. package/dist/state/reactive-state.js.map +1 -0
  91. package/dist/state/state-manager.d.ts +45 -0
  92. package/dist/state/state-manager.d.ts.map +1 -0
  93. package/dist/state/state-manager.js +151 -0
  94. package/dist/state/state-manager.js.map +1 -0
  95. package/dist/types/constants.d.ts +8 -0
  96. package/dist/types/constants.d.ts.map +1 -0
  97. package/dist/types/constants.js +36 -0
  98. package/dist/types/constants.js.map +1 -0
  99. package/dist/utils/dependency-utils.d.ts +43 -0
  100. package/dist/utils/dependency-utils.d.ts.map +1 -0
  101. package/dist/utils/dependency-utils.js +105 -0
  102. package/dist/utils/dependency-utils.js.map +1 -0
  103. package/dist/utils/error-handler.d.ts +148 -0
  104. package/dist/utils/error-handler.d.ts.map +1 -0
  105. package/dist/utils/error-handler.js +468 -0
  106. package/dist/utils/error-handler.js.map +1 -0
  107. package/dist/utils/normalization.d.ts +3 -0
  108. package/dist/utils/normalization.d.ts.map +1 -0
  109. package/dist/utils/normalization.js +24 -0
  110. package/dist/utils/normalization.js.map +1 -0
  111. package/dist/utils/validation.d.ts +10 -0
  112. package/dist/utils/validation.d.ts.map +1 -0
  113. package/dist/utils/validation.js +32 -0
  114. package/dist/utils/validation.js.map +1 -0
  115. package/package.json +44 -0
  116. package/types/index.d.ts +734 -0
@@ -0,0 +1,648 @@
1
+ /**
2
+ * Advanced Routing System for Coherent.js
3
+ * Supports nested routes, route guards, lazy loading, and transitions
4
+ */
5
+ import { ReactiveState } from '../state/reactive-state.js';
6
+ import { eventSystem } from '../components/lifecycle.js';
7
+ import { globalErrorHandler } from '../utils/error-handler.js';
8
+ /**
9
+ * Route configuration structure
10
+ */
11
+ export class Route {
12
+ constructor(config) {
13
+ this.path = config.path;
14
+ this.name = config.name;
15
+ this.component = config.component;
16
+ this.children = config.children || [];
17
+ this.meta = config.meta || {};
18
+ this.beforeEnter = config.beforeEnter;
19
+ this.beforeLeave = config.beforeLeave;
20
+ this.redirect = config.redirect;
21
+ this.alias = config.alias;
22
+ this.params = {};
23
+ this.query = {};
24
+ this.hash = '';
25
+ // Convert children to Route instances
26
+ this.children = this.children.map(child => new Route(child));
27
+ }
28
+ /**
29
+ * Check if this route matches a path
30
+ */
31
+ matches(path) {
32
+ return this.matchPath(path, this.path);
33
+ }
34
+ /**
35
+ * Match path against route pattern with parameters
36
+ */
37
+ matchPath(path, pattern) {
38
+ // Convert pattern to regex
39
+ const paramNames = [];
40
+ const regexPattern = pattern
41
+ .replace(/\//g, '\\/')
42
+ .replace(/:\w+/g, (match) => {
43
+ paramNames.push(match.slice(1));
44
+ return '([^/]+)';
45
+ })
46
+ .replace(/\*/g, '(.*)');
47
+ const regex = new RegExp(`^${regexPattern}$`);
48
+ const match = path.match(regex);
49
+ if (match) {
50
+ // Extract parameters
51
+ const params = {};
52
+ paramNames.forEach((name, index) => {
53
+ params[name] = match[index + 1];
54
+ });
55
+ return { params, match };
56
+ }
57
+ return null;
58
+ }
59
+ }
60
+ /**
61
+ * Navigation context for route resolution
62
+ */
63
+ class NavigationContext {
64
+ constructor(from, to, router) {
65
+ this.from = from;
66
+ this.to = to;
67
+ this.router = router;
68
+ this.cancelled = false;
69
+ this.redirected = false;
70
+ this.error = null;
71
+ }
72
+ cancel() {
73
+ this.cancelled = true;
74
+ }
75
+ redirect(location) {
76
+ this.redirected = true;
77
+ this.redirectLocation = location;
78
+ }
79
+ setError(error) {
80
+ this.error = error;
81
+ }
82
+ }
83
+ /**
84
+ * Advanced router with nested routing support
85
+ */
86
+ export class Router {
87
+ constructor(options = {}) {
88
+ this.options = {
89
+ mode: options.mode || 'history', // 'history' | 'hash'
90
+ base: options.base || '/',
91
+ fallback: options.fallback !== false,
92
+ scrollBehavior: options.scrollBehavior,
93
+ ...options
94
+ };
95
+ this.routes = [];
96
+ this.currentRoute = null;
97
+ this.history = [];
98
+ this.guards = {
99
+ beforeEach: [],
100
+ beforeResolve: [],
101
+ afterEach: []
102
+ };
103
+ // Reactive state for route data
104
+ this.state = new ReactiveState({
105
+ path: '',
106
+ params: {},
107
+ query: {},
108
+ hash: '',
109
+ meta: {},
110
+ matched: [],
111
+ loading: false
112
+ });
113
+ // Initialize based on mode
114
+ this.init();
115
+ }
116
+ /**
117
+ * Initialize router
118
+ */
119
+ init() {
120
+ if (typeof window !== 'undefined') {
121
+ this.setupBrowser();
122
+ }
123
+ else {
124
+ this.setupServer();
125
+ }
126
+ // Listen to initial route
127
+ this.resolveInitialRoute();
128
+ }
129
+ /**
130
+ * Setup browser environment
131
+ */
132
+ setupBrowser() {
133
+ // Handle back/forward navigation
134
+ window.addEventListener('popstate', (event) => {
135
+ this.handlePopState(event);
136
+ });
137
+ // Handle hash changes in hash mode
138
+ if (this.options.mode === 'hash') {
139
+ window.addEventListener('hashchange', () => {
140
+ this.syncFromLocation();
141
+ });
142
+ }
143
+ }
144
+ /**
145
+ * Setup server environment
146
+ */
147
+ setupServer() {
148
+ // Server-side routing setup
149
+ this.isServer = true;
150
+ }
151
+ /**
152
+ * Add routes to router
153
+ */
154
+ addRoutes(routes) {
155
+ routes.forEach(route => {
156
+ this.routes.push(new Route(route));
157
+ });
158
+ }
159
+ /**
160
+ * Navigate to a route
161
+ */
162
+ async push(location) {
163
+ return this.navigate(location, 'push');
164
+ }
165
+ /**
166
+ * Replace current route
167
+ */
168
+ async replace(location) {
169
+ return this.navigate(location, 'replace');
170
+ }
171
+ /**
172
+ * Go back in history
173
+ */
174
+ back() {
175
+ if (typeof window !== 'undefined' && window.history.length > 1) {
176
+ window.history.back();
177
+ }
178
+ }
179
+ /**
180
+ * Go forward in history
181
+ */
182
+ forward() {
183
+ if (typeof window !== 'undefined') {
184
+ window.history.forward();
185
+ }
186
+ }
187
+ /**
188
+ * Navigate to specific history index
189
+ */
190
+ go(delta) {
191
+ if (typeof window !== 'undefined') {
192
+ window.history.go(delta);
193
+ }
194
+ }
195
+ /**
196
+ * Main navigation method
197
+ */
198
+ async navigate(location, method = 'push') {
199
+ // Normalize location
200
+ const route = this.normalizeLocation(location);
201
+ // Create navigation context
202
+ const context = new NavigationContext(this.currentRoute, route, this);
203
+ try {
204
+ // Set loading state
205
+ this.state.set('loading', true);
206
+ // Run navigation guards
207
+ await this.runGuards(_context);
208
+ if (context.cancelled) {
209
+ return false;
210
+ }
211
+ if (context.redirected) {
212
+ return this.navigate(context.redirectLocation, method);
213
+ }
214
+ if (context.error) {
215
+ throw context.error;
216
+ }
217
+ // Resolve route
218
+ const resolved = await this.resolveRoute(route.path);
219
+ if (!resolved) {
220
+ throw new Error(`Route not found: ${route.path}`);
221
+ }
222
+ // Update browser URL
223
+ if (!this.isServer) {
224
+ this.updateURL(resolved, method);
225
+ }
226
+ // Update current route and state
227
+ this.currentRoute = resolved;
228
+ this.updateState(resolved);
229
+ // Add to history
230
+ this.history.push({
231
+ ...resolved,
232
+ timestamp: Date.now(),
233
+ method
234
+ });
235
+ // Emit navigation events
236
+ eventSystem.emit('route:changed', {
237
+ from: context.from,
238
+ to: resolved,
239
+ method
240
+ });
241
+ return true;
242
+ }
243
+ catch (error) {
244
+ globalErrorHandler.handle(error, {
245
+ type: 'navigation-error',
246
+ context: { location, method, currentRoute: this.currentRoute }
247
+ });
248
+ eventSystem.emit('route:error', { error, context });
249
+ return false;
250
+ }
251
+ finally {
252
+ this.state.set('loading', false);
253
+ }
254
+ }
255
+ /**
256
+ * Normalize location input
257
+ */
258
+ normalizeLocation(location) {
259
+ if (typeof location === 'string') {
260
+ return this.parseURL(location);
261
+ }
262
+ return {
263
+ path: location.path || '/',
264
+ params: location.params || {},
265
+ query: location.query || {},
266
+ hash: location.hash || '',
267
+ name: location.name
268
+ };
269
+ }
270
+ /**
271
+ * Parse URL string into route object
272
+ */
273
+ parseURL(url) {
274
+ const urlObj = new URL(url, 'http://localhost');
275
+ return {
276
+ path: urlObj.pathname,
277
+ params: {},
278
+ query: Object.fromEntries(urlObj.searchParams),
279
+ hash: urlObj.hash.slice(1)
280
+ };
281
+ }
282
+ /**
283
+ * Resolve route by path
284
+ */
285
+ async resolveRoute(path, routes = this.routes, parentRoute = null) {
286
+ for (const route of routes) {
287
+ const match = route.matchPath(path, route.path);
288
+ if (match) {
289
+ const resolved = {
290
+ ...route,
291
+ params: { ...match.params },
292
+ fullPath: path,
293
+ matched: parentRoute ? [...parentRoute.matched, route] : [route]
294
+ };
295
+ // Handle redirects
296
+ if (route.redirect) {
297
+ const redirectPath = typeof route.redirect === 'function'
298
+ ? route.redirect(resolved)
299
+ : route.redirect;
300
+ return this.resolveRoute(redirectPath);
301
+ }
302
+ // Check for child routes
303
+ if (route.children.length > 0) {
304
+ const remainingPath = path.slice(route.path.length).replace(/^\//, '');
305
+ if (remainingPath) {
306
+ const childMatch = await this.resolveRoute(remainingPath, route.children, resolved);
307
+ if (childMatch) {
308
+ return {
309
+ ...childMatch,
310
+ parent: resolved,
311
+ matched: [...resolved.matched, ...childMatch.matched]
312
+ };
313
+ }
314
+ }
315
+ }
316
+ // Load component if lazy
317
+ if (typeof route.component === 'function' && route.component.lazy) {
318
+ route.component = await route.component();
319
+ }
320
+ return resolved;
321
+ }
322
+ }
323
+ return null;
324
+ }
325
+ /**
326
+ * Run navigation guards
327
+ */
328
+ async runGuards(_context) {
329
+ // beforeEach guards
330
+ for (const guard of this.guards.beforeEach) {
331
+ await this.runGuard(guard, _context);
332
+ if (context.cancelled || context.redirected || context.error)
333
+ return;
334
+ }
335
+ // Route-specific beforeEnter guards
336
+ if (context.to.beforeEnter) {
337
+ await this.runGuard(context.to.beforeEnter, _context);
338
+ if (context.cancelled || context.redirected || context.error)
339
+ return;
340
+ }
341
+ // beforeLeave guards on current route
342
+ if (context.from && context.from.beforeLeave) {
343
+ await this.runGuard(context.from.beforeLeave, _context);
344
+ if (context.cancelled || context.redirected || context.error)
345
+ return;
346
+ }
347
+ // beforeResolve guards
348
+ for (const guard of this.guards.beforeResolve) {
349
+ await this.runGuard(guard, _context);
350
+ if (context.cancelled || context.redirected || context.error)
351
+ return;
352
+ }
353
+ }
354
+ /**
355
+ * Run individual guard
356
+ */
357
+ async runGuard(guard, _context) {
358
+ try {
359
+ const result = await guard(context.to, context.from, (location) => {
360
+ if (location === false) {
361
+ context.cancel();
362
+ }
363
+ else if (location && location !== true) {
364
+ context.redirect(location);
365
+ }
366
+ });
367
+ // Handle guard return values
368
+ if (result === false) {
369
+ context.cancel();
370
+ }
371
+ else if (result && typeof result === 'object') {
372
+ context.redirect(result);
373
+ }
374
+ }
375
+ catch (error) {
376
+ context.setError(error);
377
+ }
378
+ }
379
+ /**
380
+ * Update browser URL
381
+ */
382
+ updateURL(route, method = 'push') {
383
+ if (!window || !window.history)
384
+ return;
385
+ const url = this.buildURL(route);
386
+ if (method === 'replace') {
387
+ window.history.replaceState(route, '', url);
388
+ }
389
+ else {
390
+ window.history.pushState(route, '', url);
391
+ }
392
+ }
393
+ /**
394
+ * Build URL from route
395
+ */
396
+ buildURL(route) {
397
+ let url = route.fullPath || route.path;
398
+ // Add query parameters
399
+ const queryString = new URLSearchParams(route.query).toString();
400
+ if (queryString) {
401
+ url += `?${queryString}`;
402
+ }
403
+ // Add hash
404
+ if (route.hash) {
405
+ url += `#${route.hash}`;
406
+ }
407
+ return url;
408
+ }
409
+ /**
410
+ * Update reactive state
411
+ */
412
+ updateState(route) {
413
+ this.state.batch({
414
+ path: route.fullPath || route.path,
415
+ params: route.params || {},
416
+ query: route.query || {},
417
+ hash: route.hash || '',
418
+ meta: route.meta || {},
419
+ matched: route.matched || []
420
+ });
421
+ }
422
+ /**
423
+ * Handle browser popstate event
424
+ */
425
+ handlePopState() {
426
+ this.syncFromLocation();
427
+ }
428
+ /**
429
+ * Sync router state from browser location
430
+ */
431
+ syncFromLocation() {
432
+ if (!window)
433
+ return;
434
+ let path = window.location.pathname;
435
+ if (this.options.mode === 'hash') {
436
+ path = window.location.hash.slice(1) || '/';
437
+ }
438
+ this.navigate(path, 'popstate');
439
+ }
440
+ /**
441
+ * Resolve initial route
442
+ */
443
+ resolveInitialRoute() {
444
+ let initialPath = '/';
445
+ if (!this.isServer && window) {
446
+ initialPath = this.options.mode === 'hash'
447
+ ? window.location.hash.slice(1) || '/'
448
+ : window.location.pathname;
449
+ }
450
+ this.navigate(initialPath, 'initial');
451
+ }
452
+ /**
453
+ * Add navigation guards
454
+ */
455
+ beforeEach(guard) {
456
+ this.guards.beforeEach.push(guard);
457
+ return () => {
458
+ const index = this.guards.beforeEach.indexOf(guard);
459
+ if (index > -1)
460
+ this.guards.beforeEach.splice(index, 1);
461
+ };
462
+ }
463
+ beforeResolve(guard) {
464
+ this.guards.beforeResolve.push(guard);
465
+ return () => {
466
+ const index = this.guards.beforeResolve.indexOf(guard);
467
+ if (index > -1)
468
+ this.guards.beforeResolve.splice(index, 1);
469
+ };
470
+ }
471
+ afterEach(guard) {
472
+ this.guards.afterEach.push(guard);
473
+ return () => {
474
+ const index = this.guards.afterEach.indexOf(guard);
475
+ if (index > -1)
476
+ this.guards.afterEach.splice(index, 1);
477
+ };
478
+ }
479
+ /**
480
+ * Get current route information
481
+ */
482
+ getCurrentRoute() {
483
+ return this.currentRoute;
484
+ }
485
+ /**
486
+ * Check if route is current
487
+ */
488
+ isActive(route, exact = false) {
489
+ if (!this.currentRoute)
490
+ return false;
491
+ if (exact) {
492
+ return this.currentRoute.path === route;
493
+ }
494
+ return this.currentRoute.path.startsWith(route);
495
+ }
496
+ /**
497
+ * Generate URL for route
498
+ */
499
+ resolve(location) {
500
+ const route = this.normalizeLocation(location);
501
+ return this.buildURL(route);
502
+ }
503
+ /**
504
+ * Get router statistics
505
+ */
506
+ getStats() {
507
+ return {
508
+ totalRoutes: this.routes.length,
509
+ currentRoute: this.currentRoute?.path,
510
+ historyLength: this.history.length,
511
+ guards: {
512
+ beforeEach: this.guards.beforeEach.length,
513
+ beforeResolve: this.guards.beforeResolve.length,
514
+ afterEach: this.guards.afterEach.length
515
+ },
516
+ isLoading: this.state.get('loading')
517
+ };
518
+ }
519
+ /**
520
+ * Cleanup router
521
+ */
522
+ destroy() {
523
+ // Remove event listeners
524
+ if (typeof window !== 'undefined') {
525
+ window.removeEventListener('popstate', this.handlePopState);
526
+ if (this.options.mode === 'hash') {
527
+ window.removeEventListener('hashchange', this.syncFromLocation);
528
+ }
529
+ }
530
+ // Cleanup state
531
+ this.state.destroy();
532
+ // Clear arrays
533
+ this.routes = [];
534
+ this.history = [];
535
+ Object.values(this.guards).forEach(guards => guards.length = 0);
536
+ }
537
+ }
538
+ /**
539
+ * Route guard utilities
540
+ */
541
+ export const routeGuards = {
542
+ /**
543
+ * Authentication guard
544
+ */
545
+ requireAuth(authCheck) {
546
+ return (to, from, next) => {
547
+ if (authCheck()) {
548
+ next();
549
+ }
550
+ else {
551
+ next('/login');
552
+ }
553
+ };
554
+ },
555
+ /**
556
+ * Role-based access guard
557
+ */
558
+ requireRole(roleCheck, roles) {
559
+ return (to, from, next) => {
560
+ const userRoles = roleCheck();
561
+ const hasRole = roles.some(role => userRoles.includes(role));
562
+ if (hasRole) {
563
+ next();
564
+ }
565
+ else {
566
+ next('/unauthorized');
567
+ }
568
+ };
569
+ },
570
+ /**
571
+ * Meta-based guard
572
+ */
573
+ requireMeta(metaKey, expectedValue) {
574
+ return (to, from, next) => {
575
+ if (to.meta[metaKey] === expectedValue) {
576
+ next();
577
+ }
578
+ else {
579
+ next(false);
580
+ }
581
+ };
582
+ },
583
+ /**
584
+ * Confirmation guard
585
+ */
586
+ requireConfirmation(message, confirmCallback) {
587
+ return (to, from, next) => {
588
+ if (confirmCallback) {
589
+ confirmCallback(message, (confirmed) => {
590
+ if (confirmed) {
591
+ next();
592
+ }
593
+ else {
594
+ next(false);
595
+ }
596
+ });
597
+ }
598
+ else {
599
+ // Default to allowing navigation if no callback provided
600
+ next();
601
+ }
602
+ };
603
+ }
604
+ };
605
+ /**
606
+ * Create router instance
607
+ */
608
+ export function createRouter(options) {
609
+ return new Router(options);
610
+ }
611
+ /**
612
+ * Route component helpers
613
+ */
614
+ export const routeComponents = {
615
+ /**
616
+ * Router link component
617
+ */
618
+ RouterLink(props = {}) {
619
+ const { to, exact = false, children, ...otherProps } = props;
620
+ return {
621
+ a: {
622
+ ...otherProps,
623
+ href: to,
624
+ className: `router-link ${exact ? 'router-link-exact' : ''}`,
625
+ onclick: (event) => {
626
+ event.preventDefault();
627
+ // This would need access to router instance
628
+ // router.push(to);
629
+ },
630
+ children
631
+ }
632
+ };
633
+ },
634
+ /**
635
+ * Router view component
636
+ */
637
+ RouterView(props = {}) {
638
+ // This would render the current route's component
639
+ return {
640
+ div: {
641
+ className: 'router-view',
642
+ children: props.children || []
643
+ }
644
+ };
645
+ }
646
+ };
647
+ export default Router;
648
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../../src/routing/router.js"],"names":[],"mappings":"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"}