@sigx/vite 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 (74) hide show
  1. package/README.md +40 -0
  2. package/dist/cli.d.ts +12 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +372 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/core/src/Component.d.ts +131 -0
  7. package/dist/core/src/Component.d.ts.map +1 -0
  8. package/dist/core/src/Component.js +272 -0
  9. package/dist/core/src/Component.js.map +1 -0
  10. package/dist/core/src/Signals.d.ts +34 -0
  11. package/dist/core/src/Signals.d.ts.map +1 -0
  12. package/dist/core/src/Signals.js +222 -0
  13. package/dist/core/src/Signals.js.map +1 -0
  14. package/dist/core/src/Templating.d.ts +11 -0
  15. package/dist/core/src/Templating.d.ts.map +1 -0
  16. package/dist/core/src/Templating.js +81 -0
  17. package/dist/core/src/Templating.js.map +1 -0
  18. package/dist/core/src/factory/index.d.ts +20 -0
  19. package/dist/core/src/factory/index.d.ts.map +1 -0
  20. package/dist/core/src/factory/index.js +50 -0
  21. package/dist/core/src/factory/index.js.map +1 -0
  22. package/dist/core/src/index.d.ts +8 -0
  23. package/dist/core/src/index.d.ts.map +1 -0
  24. package/dist/core/src/index.js +9 -0
  25. package/dist/core/src/index.js.map +1 -0
  26. package/dist/core/src/jsx-runtime.d.ts +43 -0
  27. package/dist/core/src/jsx-runtime.d.ts.map +1 -0
  28. package/dist/core/src/jsx-runtime.js +469 -0
  29. package/dist/core/src/jsx-runtime.js.map +1 -0
  30. package/dist/core/src/messaging/index.d.ts +9 -0
  31. package/dist/core/src/messaging/index.d.ts.map +1 -0
  32. package/dist/core/src/messaging/index.js +37 -0
  33. package/dist/core/src/messaging/index.js.map +1 -0
  34. package/dist/core/src/models/index.d.ts +18 -0
  35. package/dist/core/src/models/index.d.ts.map +1 -0
  36. package/dist/core/src/models/index.js +12 -0
  37. package/dist/core/src/models/index.js.map +1 -0
  38. package/dist/core/src/sheet.d.ts +51 -0
  39. package/dist/core/src/sheet.d.ts.map +1 -0
  40. package/dist/core/src/sheet.js +151 -0
  41. package/dist/core/src/sheet.js.map +1 -0
  42. package/dist/core/src/stores/DefineInjectable.d.ts +5 -0
  43. package/dist/core/src/stores/DefineInjectable.d.ts.map +1 -0
  44. package/dist/core/src/stores/DefineInjectable.js +56 -0
  45. package/dist/core/src/stores/DefineInjectable.js.map +1 -0
  46. package/dist/core/src/stores/Store.d.ts +70 -0
  47. package/dist/core/src/stores/Store.d.ts.map +1 -0
  48. package/dist/core/src/stores/Store.js +180 -0
  49. package/dist/core/src/stores/Store.js.map +1 -0
  50. package/dist/core/src/styled.d.ts +15 -0
  51. package/dist/core/src/styled.d.ts.map +1 -0
  52. package/dist/core/src/styled.js +62 -0
  53. package/dist/core/src/styled.js.map +1 -0
  54. package/dist/core/src/utils/index.d.ts +5 -0
  55. package/dist/core/src/utils/index.d.ts.map +1 -0
  56. package/dist/core/src/utils/index.js +12 -0
  57. package/dist/core/src/utils/index.js.map +1 -0
  58. package/dist/hmr-plugin/src/index.d.ts +2 -0
  59. package/dist/hmr-plugin/src/index.d.ts.map +1 -0
  60. package/dist/hmr-plugin/src/index.js +59 -0
  61. package/dist/hmr-plugin/src/index.js.map +1 -0
  62. package/dist/hmr.d.ts +10 -0
  63. package/dist/hmr.d.ts.map +1 -0
  64. package/dist/hmr.js +99 -0
  65. package/dist/hmr.js.map +1 -0
  66. package/dist/index.d.ts +12 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +52 -0
  69. package/dist/index.js.map +1 -0
  70. package/dist/vite/src/index.d.ts +2 -0
  71. package/dist/vite/src/index.d.ts.map +1 -0
  72. package/dist/vite/src/index.js +59 -0
  73. package/dist/vite/src/index.js.map +1 -0
  74. package/package.json +53 -0
package/README.md ADDED
@@ -0,0 +1,40 @@
1
+ # @sigx/vite
2
+
3
+ Hot Module Replacement plugin for SignalX Framework development.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install -D @sigx/vite
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ Simply import at the top of your component files during development:
14
+
15
+ ```typescript
16
+ import '@sigx/vite';
17
+ import { defineComponent } from 'sigx';
18
+
19
+ defineComponent('my-component', ({ html, signal }) => {
20
+ // Your component code
21
+ });
22
+ ```
23
+
24
+ The plugin automatically:
25
+ - Detects when component code changes
26
+ - Preserves component state during updates
27
+ - Re-renders affected components
28
+ - Only activates in development (tree-shaken in production)
29
+
30
+ ## How It Works
31
+
32
+ The plugin uses sigx's plugin system to:
33
+ 1. Track component instances
34
+ 2. Intercept component redefinitions
35
+ 3. Trigger hot reloads without full page refresh
36
+
37
+ ## Requirements
38
+
39
+ - Vite or another dev server with HMR support
40
+ - `sigx` as a peer dependency
package/dist/cli.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI to generate sigx component type definitions.
4
+ * Run after `npm install` or manually to get intellisense without starting Vite.
5
+ *
6
+ * Usage:
7
+ * npx sigx-types
8
+ * npx sigx-types --watch
9
+ * npx sigx-types --help
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG"}
package/dist/cli.js ADDED
@@ -0,0 +1,372 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI to generate sigx component type definitions.
4
+ * Run after `npm install` or manually to get intellisense without starting Vite.
5
+ *
6
+ * Usage:
7
+ * npx sigx-types
8
+ * npx sigx-types --watch
9
+ * npx sigx-types --help
10
+ */
11
+ import * as fs from 'fs';
12
+ import * as path from 'path';
13
+ // Handles multi-line type parameters with [\s\S]*? (non-greedy any char including newlines)
14
+ const DEFINE_COMPONENT_REGEX = /(?:export\s+)?(?:const|let|var)\s+(\w+)\s*=\s*defineComponent\s*(?:<[\s\S]*?>)?\s*\(\s*["'`]([^"'`]+)["'`]/g;
15
+ const DEFAULT_EXPORT_REGEX = /export\s+default\s+defineComponent\s*(?:<[\s\S]*?>)?\s*\(\s*["'`]([^"'`]+)["'`]/g;
16
+ function extractComponents(code, filePath) {
17
+ const components = [];
18
+ DEFINE_COMPONENT_REGEX.lastIndex = 0;
19
+ DEFAULT_EXPORT_REGEX.lastIndex = 0;
20
+ let match;
21
+ while ((match = DEFINE_COMPONENT_REGEX.exec(code)) !== null) {
22
+ components.push({
23
+ exportName: match[1],
24
+ tagName: match[2],
25
+ filePath
26
+ });
27
+ }
28
+ while ((match = DEFAULT_EXPORT_REGEX.exec(code)) !== null) {
29
+ const tagName = match[1];
30
+ const exportName = tagName
31
+ .split('-')
32
+ .map(part => part.charAt(0).toUpperCase() + part.slice(1))
33
+ .join('');
34
+ components.push({
35
+ exportName,
36
+ tagName,
37
+ filePath
38
+ });
39
+ }
40
+ return components;
41
+ }
42
+ // ============================================================================
43
+ // Type Definition Generator
44
+ // ============================================================================
45
+ function generateDts(components, rootDir) {
46
+ if (components.length === 0) {
47
+ return `// Auto-generated by @sigx/vite - no components found
48
+ export {};
49
+ `;
50
+ }
51
+ // Deduplicate by tagName
52
+ const uniqueComponents = new Map();
53
+ for (const comp of components) {
54
+ if (!uniqueComponents.has(comp.tagName)) {
55
+ uniqueComponents.set(comp.tagName, comp);
56
+ }
57
+ }
58
+ const dedupedComponents = Array.from(uniqueComponents.values());
59
+ // Group by file
60
+ const fileGroups = new Map();
61
+ for (const comp of dedupedComponents) {
62
+ const existing = fileGroups.get(comp.filePath) || [];
63
+ existing.push(comp);
64
+ fileGroups.set(comp.filePath, existing);
65
+ }
66
+ // Generate imports
67
+ const imports = [];
68
+ for (const [filePath, comps] of fileGroups) {
69
+ let relativePath = path.relative(rootDir, filePath).replace(/\\/g, '/');
70
+ relativePath = relativePath.replace(/\.(tsx?|jsx?)$/, '');
71
+ // Go up from node_modules/.sigx/ to project root (2 levels)
72
+ relativePath = '../../' + relativePath;
73
+ const exportNames = comps.map(c => c.exportName).join(', ');
74
+ imports.push(`import type { ${exportNames} } from '${relativePath}';`);
75
+ }
76
+ // Generate registry entries
77
+ const registryEntries = dedupedComponents
78
+ .map(c => ` '${c.tagName}': typeof ${c.exportName};`)
79
+ .join('\n');
80
+ return `// Auto-generated by @sigx/vite - DO NOT EDIT
81
+ // This file provides type definitions for custom elements defined with defineComponent
82
+ // Regenerate with: npx sigx-types
83
+
84
+ ${imports.join('\n')}
85
+
86
+ declare module '@sigx/runtime-core' {
87
+ interface CustomElementRegistry {
88
+ ${registryEntries}
89
+ }
90
+ }
91
+
92
+ export {};
93
+ `;
94
+ }
95
+ /**
96
+ * Generate a components.ts file with global declarations like ui.button.primary
97
+ */
98
+ function generateComponentsTs(components, rootDir) {
99
+ if (components.length === 0) {
100
+ return `// Auto-generated by @sigx/vite - no components found
101
+ export {};
102
+ `;
103
+ }
104
+ // Deduplicate by tagName
105
+ const uniqueComponents = new Map();
106
+ for (const comp of components) {
107
+ if (!uniqueComponents.has(comp.tagName)) {
108
+ uniqueComponents.set(comp.tagName, comp);
109
+ }
110
+ }
111
+ const dedupedComponents = Array.from(uniqueComponents.values());
112
+ const rootNodes = new Map();
113
+ for (const comp of dedupedComponents) {
114
+ const parts = comp.tagName.split('-');
115
+ if (parts.length >= 2) {
116
+ const prefix = parts[0];
117
+ const pathParts = parts.slice(1);
118
+ if (!rootNodes.has(prefix)) {
119
+ rootNodes.set(prefix, { children: new Map() });
120
+ }
121
+ let current = rootNodes.get(prefix);
122
+ for (let i = 0; i < pathParts.length; i++) {
123
+ const part = pathParts[i];
124
+ if (!current.children.has(part)) {
125
+ current.children.set(part, { children: new Map() });
126
+ }
127
+ current = current.children.get(part);
128
+ if (i === pathParts.length - 1) {
129
+ current.comp = comp;
130
+ }
131
+ }
132
+ }
133
+ }
134
+ // Generate imports (group by file)
135
+ const fileGroups = new Map();
136
+ for (const comp of dedupedComponents) {
137
+ const existing = fileGroups.get(comp.filePath) || [];
138
+ existing.push(comp);
139
+ fileGroups.set(comp.filePath, existing);
140
+ }
141
+ const imports = [];
142
+ for (const [filePath, comps] of fileGroups) {
143
+ let relativePath = path.relative(rootDir, filePath).replace(/\\/g, '/');
144
+ relativePath = relativePath.replace(/\.(tsx?|jsx?)$/, '');
145
+ relativePath = '../../' + relativePath;
146
+ const exportNames = comps.map(c => c.exportName).join(', ');
147
+ imports.push(`import { ${exportNames} } from '${relativePath}';`);
148
+ }
149
+ // Helper to generate nested object literal
150
+ function generateNestedObject(node, indent) {
151
+ if (node.comp && node.children.size > 0) {
152
+ const childProps = Array.from(node.children.entries())
153
+ .map(([key, child]) => {
154
+ if (child.comp && child.children.size === 0) {
155
+ return `${key}: ${child.comp.exportName}`;
156
+ }
157
+ else {
158
+ return `${key}: ${generateNestedObject(child, indent + ' ')}`;
159
+ }
160
+ })
161
+ .join(', ');
162
+ return `Object.assign(${node.comp.exportName}, { ${childProps} })`;
163
+ }
164
+ else if (node.comp) {
165
+ return node.comp.exportName;
166
+ }
167
+ else {
168
+ const props = Array.from(node.children.entries())
169
+ .map(([key, child]) => {
170
+ const value = generateNestedObject(child, indent + ' ');
171
+ return `${indent} ${key}: ${value}`;
172
+ })
173
+ .join(',\n');
174
+ return `{\n${props}\n${indent}}`;
175
+ }
176
+ }
177
+ // Helper to generate nested type declaration
178
+ function generateNestedType(node, indent) {
179
+ if (node.comp && node.children.size > 0) {
180
+ const childTypes = Array.from(node.children.entries())
181
+ .map(([key, child]) => {
182
+ const childType = generateNestedType(child, indent + ' ');
183
+ return `readonly ${key}: ${childType}`;
184
+ })
185
+ .join('; ');
186
+ return `typeof ${node.comp.exportName} & { ${childTypes} }`;
187
+ }
188
+ else if (node.comp) {
189
+ return `typeof ${node.comp.exportName}`;
190
+ }
191
+ else {
192
+ const props = Array.from(node.children.entries())
193
+ .map(([key, child]) => {
194
+ const childType = generateNestedType(child, indent + ' ');
195
+ return `${indent} readonly ${key}: ${childType}`;
196
+ })
197
+ .join(';\n');
198
+ return `{\n${props}\n${indent}}`;
199
+ }
200
+ }
201
+ const objectDeclarations = [];
202
+ const globalDeclarations = [];
203
+ const prefixes = [];
204
+ for (const [prefix, node] of rootNodes) {
205
+ prefixes.push(prefix);
206
+ const objValue = generateNestedObject(node, '');
207
+ objectDeclarations.push(`const _${prefix} = ${objValue} as const;`);
208
+ const typeValue = generateNestedType(node, ' ');
209
+ globalDeclarations.push(` const ${prefix}: ${typeValue};`);
210
+ }
211
+ return `// Auto-generated by @sigx/vite - DO NOT EDIT
212
+ // This file provides global component objects for intellisense without imports
213
+ // Usage: <ui.button variant="primary" /> or <ui.button.primary />
214
+
215
+ ${imports.join('\n')}
216
+
217
+ // Create the actual runtime objects
218
+ ${objectDeclarations.join('\n\n')}
219
+
220
+ // Declare globals
221
+ declare global {
222
+ ${globalDeclarations.join('\n')}
223
+ }
224
+
225
+ // Assign to globalThis for runtime
226
+ ${prefixes.map(prefix => `(globalThis as any).${prefix} = _${prefix};`).join('\n')}
227
+
228
+ export { ${prefixes.map(p => `_${p} as ${p}`).join(', ')} };
229
+ `;
230
+ }
231
+ function matchGlob(filePath, pattern) {
232
+ const regexPattern = pattern
233
+ .replace(/\./g, '\\.')
234
+ .replace(/\*\*/g, '<<<GLOBSTAR>>>')
235
+ .replace(/\*/g, '[^/]*')
236
+ .replace(/<<<GLOBSTAR>>>/g, '.*');
237
+ const regex = new RegExp(`(^|/)${regexPattern}$`);
238
+ return regex.test(filePath);
239
+ }
240
+ function shouldProcess(filePath, options) {
241
+ const normalizedPath = filePath.replace(/\\/g, '/');
242
+ for (const pattern of options.exclude) {
243
+ if (matchGlob(normalizedPath, pattern)) {
244
+ return false;
245
+ }
246
+ }
247
+ for (const pattern of options.include) {
248
+ if (matchGlob(normalizedPath, pattern)) {
249
+ return true;
250
+ }
251
+ }
252
+ return false;
253
+ }
254
+ function scanDirectory(dir, options, components) {
255
+ if (!fs.existsSync(dir))
256
+ return;
257
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
258
+ for (const entry of entries) {
259
+ const fullPath = path.join(dir, entry.name);
260
+ if (entry.isDirectory()) {
261
+ if (entry.name === 'node_modules' || entry.name.startsWith('.')) {
262
+ continue;
263
+ }
264
+ scanDirectory(fullPath, options, components);
265
+ }
266
+ else if (entry.isFile() && /\.(tsx?|jsx?)$/.test(entry.name)) {
267
+ if (shouldProcess(fullPath, options)) {
268
+ try {
269
+ const code = fs.readFileSync(fullPath, 'utf-8');
270
+ const fileComponents = extractComponents(code, fullPath);
271
+ components.push(...fileComponents);
272
+ }
273
+ catch {
274
+ // Ignore read errors
275
+ }
276
+ }
277
+ }
278
+ }
279
+ }
280
+ // ============================================================================
281
+ // CLI
282
+ // ============================================================================
283
+ function printHelp() {
284
+ console.log(`
285
+ sigx-types - Generate TypeScript definitions for sigx custom elements
286
+
287
+ Usage:
288
+ npx sigx-types [options]
289
+
290
+ Options:
291
+ --help, -h Show this help message
292
+ --watch, -w Watch for file changes and regenerate
293
+ --out, -o Output directory (default: node_modules/.sigx)
294
+ --include Glob patterns to include (comma-separated)
295
+ --exclude Glob patterns to exclude (comma-separated)
296
+
297
+ Examples:
298
+ npx sigx-types
299
+ npx sigx-types --watch
300
+ npx sigx-types --out .sigx-types
301
+ npx sigx-types --include "src/**/*.tsx,components/**/*.tsx"
302
+ `);
303
+ }
304
+ function main() {
305
+ const args = process.argv.slice(2);
306
+ if (args.includes('--help') || args.includes('-h')) {
307
+ printHelp();
308
+ process.exit(0);
309
+ }
310
+ const watch = args.includes('--watch') || args.includes('-w');
311
+ // Parse --out
312
+ let outDir = 'node_modules/.sigx';
313
+ const outIndex = args.findIndex(a => a === '--out' || a === '-o');
314
+ if (outIndex !== -1 && args[outIndex + 1]) {
315
+ outDir = args[outIndex + 1];
316
+ }
317
+ // Parse --include
318
+ let include = ['**/*.tsx', '**/*.ts', '**/*.jsx'];
319
+ const includeIndex = args.findIndex(a => a === '--include');
320
+ if (includeIndex !== -1 && args[includeIndex + 1]) {
321
+ include = args[includeIndex + 1].split(',').map(s => s.trim());
322
+ }
323
+ // Parse --exclude
324
+ let exclude = ['node_modules/**', 'dist/**', '**/*.d.ts'];
325
+ const excludeIndex = args.findIndex(a => a === '--exclude');
326
+ if (excludeIndex !== -1 && args[excludeIndex + 1]) {
327
+ exclude = args[excludeIndex + 1].split(',').map(s => s.trim());
328
+ }
329
+ const rootDir = process.cwd();
330
+ const options = { include, exclude };
331
+ function generate() {
332
+ const components = [];
333
+ scanDirectory(rootDir, options, components);
334
+ const dtsDir = path.resolve(rootDir, outDir);
335
+ if (!fs.existsSync(dtsDir)) {
336
+ fs.mkdirSync(dtsDir, { recursive: true });
337
+ }
338
+ // Write components.d.ts (type augmentation)
339
+ const dtsContent = generateDts(components, rootDir);
340
+ const dtsPath = path.join(dtsDir, 'components.d.ts');
341
+ fs.writeFileSync(dtsPath, dtsContent, 'utf-8');
342
+ // Write components.ts (grouped exports like ui.button)
343
+ const tsContent = generateComponentsTs(components, rootDir);
344
+ const tsPath = path.join(dtsDir, 'components.ts');
345
+ fs.writeFileSync(tsPath, tsContent, 'utf-8');
346
+ console.log(`[sigx] Generated types for ${components.length} components → ${outDir}/`);
347
+ }
348
+ // Initial generation
349
+ generate();
350
+ if (watch) {
351
+ console.log('[sigx] Watching for changes...');
352
+ // Simple polling watcher (cross-platform)
353
+ const watchDirs = ['src', 'components', 'pages'].filter(d => fs.existsSync(path.join(rootDir, d)));
354
+ if (watchDirs.length === 0) {
355
+ console.log('[sigx] No src/components/pages directories found to watch');
356
+ return;
357
+ }
358
+ for (const dir of watchDirs) {
359
+ fs.watch(path.join(rootDir, dir), { recursive: true }, (eventType, filename) => {
360
+ if (filename && /\.(tsx?|jsx?)$/.test(filename)) {
361
+ console.log(`[sigx] Change detected: ${filename}`);
362
+ generate();
363
+ }
364
+ });
365
+ }
366
+ // Keep process alive
367
+ process.stdin.resume();
368
+ console.log('[sigx] Press Ctrl+C to stop');
369
+ }
370
+ }
371
+ main();
372
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ import { JSXElement } from "./jsx-runtime.js";
2
+ import { signal, Signal, reactive } from "./Signals.js";
3
+ /**
4
+ * Define a single prop with type, required/optional status
5
+ * Use intersection to compose multiple props together
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * type MyProps = DefineProp<"name", string, true> &
10
+ * DefineProp<"age", number, false> &
11
+ * DefineProp<"email", string, false>;
12
+ * ```
13
+ */
14
+ export type DefineProp<TName extends string, TType, Required extends boolean = false> = Required extends false ? {
15
+ [K in TName]?: TType;
16
+ } : {
17
+ [K in TName]: TType;
18
+ };
19
+ export type EventDefinition<T> = {
20
+ __eventDetail: T;
21
+ };
22
+ /**
23
+ * Define a single custom event with its detail type
24
+ * Use intersection to compose multiple events together
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * type MyEvents = DefineEvent<"change", string> &
29
+ * DefineEvent<"submit", { value: string; timestamp: number }> &
30
+ * DefineEvent<"cancel", void>;
31
+ * ```
32
+ */
33
+ export type DefineEvent<TName extends string, TDetail = void> = {
34
+ [K in TName]?: EventDefinition<TDetail>;
35
+ };
36
+ /**
37
+ * Extract event names from an event definition
38
+ */
39
+ type EventNames<TEvents> = {
40
+ [K in keyof TEvents]: TEvents[K] extends EventDefinition<any> | undefined ? K : never;
41
+ }[keyof TEvents] & string;
42
+ /**
43
+ * Extract event detail type for a specific event name
44
+ */
45
+ type EventDetail<TEvents, TName extends EventNames<TEvents>> = TEvents extends {
46
+ [K in TName]?: EventDefinition<infer TDetail>;
47
+ } ? TDetail : never;
48
+ /**
49
+ * Typed emit function for dispatching custom events
50
+ */
51
+ export type EmitFn<TEvents extends Record<string, any>> = <TName extends EventNames<TEvents>>(eventName: TName, ...args: EventDetail<TEvents, TName> extends void ? [] : [detail: EventDetail<TEvents, TName>]) => void;
52
+ /**
53
+ * Capitalize the first letter of a string
54
+ */
55
+ type Capitalize<S extends string> = S extends `${infer First}${infer Rest}` ? `${Uppercase<First>}${Rest}` : S;
56
+ /**
57
+ * Convert events to event handler props (on{EventName})
58
+ * EventName is capitalized: "change" -> "onChange", "countChanged" -> "onCountChanged"
59
+ */
60
+ type EventHandlers<TEvents extends Record<string, any>> = {
61
+ [K in keyof TEvents as TEvents[K] extends EventDefinition<any> | undefined ? `on${Capitalize<string & K>}` : never]?: (detail: TEvents[K] extends EventDefinition<infer D> | undefined ? D : never) => void;
62
+ };
63
+ export interface MountContext<TEl extends HTMLElement = HTMLElement> {
64
+ el: TEl;
65
+ shadow: ShadowRoot | null;
66
+ }
67
+ export interface sigxComponent extends HTMLElement {
68
+ __issigx: true;
69
+ __provides?: Map<any, any>;
70
+ __parentComponent?: sigxComponent | null;
71
+ }
72
+ export interface ComponentSetupContext<TEl extends HTMLElement = HTMLElement, TProps extends Record<string, any> = {}, TEvents extends Record<string, any> = {}> {
73
+ el: TEl;
74
+ shadow: ShadowRoot | null;
75
+ signal: typeof signal;
76
+ reactive: typeof reactive;
77
+ props: TProps;
78
+ emit: EmitFn<TEvents>;
79
+ parent: sigxComponent | null;
80
+ onMount(fn: (ctx: MountContext<TEl>) => void): void;
81
+ onCleanup(fn: (ctx: MountContext<TEl>) => void): void;
82
+ }
83
+ export declare function getCurrentInstance(): ComponentSetupContext<any, any, any> | null;
84
+ /**
85
+ * Adopt stylesheets for the current component.
86
+ * Works for both Shadow DOM and Light DOM components.
87
+ *
88
+ * @param sheets One or more CSSStyleSheet objects created via `css` tag
89
+ */
90
+ export declare function adoptStyles(...sheets: CSSStyleSheet[]): void;
91
+ export declare function onMount(fn: (ctx: MountContext) => void): void;
92
+ export declare function onCleanup(fn: (ctx: MountContext) => void): void;
93
+ export type ViewFn = () => JSXElement;
94
+ export type ComponentPlugin = {
95
+ onDefine?: (tagName: string, setup: (ctx: ComponentSetupContext) => ViewFn) => boolean;
96
+ onConnect?: (tagName: string, instance: HTMLElement) => void;
97
+ onDisconnect?: (tagName: string, instance: HTMLElement) => void;
98
+ onInit?: (tagName: string, instance: HTMLElement, init: () => void) => void;
99
+ };
100
+ export declare function registerComponentPlugin(plugin: ComponentPlugin): void;
101
+ export interface ComponentOptions {
102
+ shadow?: boolean;
103
+ }
104
+ /**
105
+ * Define a component with automatic type registration.
106
+ * Returns a JSX factory function that can be used directly in JSX.
107
+ *
108
+ * @example
109
+ * ```typescript
110
+ * // Mix props and events in any order with intersection
111
+ * export const MyComponent = defineComponent<
112
+ * DefineProp<"name", string, true> & DefineEvent<"change", string>
113
+ * >("my-component", ({ props, emit }) => { ... });
114
+ *
115
+ * // Or reverse order
116
+ * export const MyComponent = defineComponent<
117
+ * DefineEvent<"change", string> & DefineProp<"name", string, true>
118
+ * >("my-component", ({ props, emit }) => { ... });
119
+ * ```
120
+ */
121
+ export declare function defineComponent<TCombined extends Record<string, any> = {}>(tagName: string, setup: (ctx: ComponentSetupContext<HTMLElement, TCombined, TCombined>) => ViewFn, options?: ComponentOptions): ((props: Omit<TCombined, EventNames<TCombined>> & EventHandlers<TCombined> & {
122
+ key?: string | number;
123
+ ref?: any;
124
+ children?: any;
125
+ }) => JSXElement) & {
126
+ __tag: string;
127
+ __props: TCombined;
128
+ __events: TCombined;
129
+ };
130
+ export type { Signal };
131
+ //# sourceMappingURL=Component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Component.d.ts","sourceRoot":"","sources":["../../../../core/src/Component.ts"],"names":[],"mappings":"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"}