@geektech/tsone 0.0.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,21 +1,58 @@
1
1
  import {
2
+ A,
3
+ Article,
4
+ Aside,
5
+ Blockquote,
2
6
  Button,
7
+ Code,
3
8
  Component,
4
9
  ComponentRenderStrategy,
5
10
  Div,
6
11
  ElementRenderStrategy,
12
+ Em,
13
+ Footer,
14
+ Form,
15
+ H1,
16
+ H2,
17
+ H3,
18
+ H4,
19
+ H5,
20
+ H6,
21
+ Header,
22
+ Img,
7
23
  Input,
24
+ Label,
25
+ Li,
26
+ Main,
8
27
  ModelBindingController,
28
+ Nav,
29
+ Ol,
30
+ OneApp,
31
+ Option,
9
32
  P,
33
+ Pre,
10
34
  ReactiveSystem,
11
35
  RendererContext,
12
36
  Router,
13
37
  RouterLink,
14
38
  RouterView,
39
+ Section,
40
+ Select,
15
41
  SlotRenderStrategy,
42
+ Small,
16
43
  Span,
44
+ Strong,
45
+ Table,
46
+ Tag,
47
+ Tbody,
48
+ Td,
17
49
  TemplateEngine,
18
50
  TextRenderStrategy,
51
+ Textarea,
52
+ Th,
53
+ Thead,
54
+ Tr,
55
+ Ul,
19
56
  computed,
20
57
  createComponent,
21
58
  createRouter,
@@ -30,302 +67,21 @@ import {
30
67
  isRef,
31
68
  isSlotProvider,
32
69
  modelPath,
70
+ normalizeTransitionGroupProps,
33
71
  reactive,
34
72
  readonly,
35
73
  ref,
74
+ renderHtmlDocument,
36
75
  setModelValue,
37
76
  slot,
38
77
  stop,
39
78
  unref,
40
- useRouter
41
- } from "./index-ycmc7ga1.js";
79
+ useRouter,
80
+ validateTransitionGroupChildren
81
+ } from "./index-1x4ectvr.js";
42
82
  import {
43
83
  renderStyleSheet
44
- } from "./index-vpx80nq5.js";
45
- import"./index-8wjswsye.js";
46
-
47
- // lib/core/app.ts
48
- class OneApp {
49
- options;
50
- container;
51
- rootInstance = null;
52
- mounted = false;
53
- templateEngine = null;
54
- appContext;
55
- providers = new Map;
56
- plugins = [];
57
- unmountedCallback;
58
- router;
59
- constructor(options = {}) {
60
- this.options = options;
61
- this.container = document.body;
62
- this.appContext = {
63
- app: this,
64
- version: "0.0.2",
65
- config: options.config || {}
66
- };
67
- }
68
- handleError(error) {
69
- console.error("应用错误:", error);
70
- this.renderErrorUI(error);
71
- }
72
- renderErrorUI(error) {
73
- this.container.innerHTML = `
74
- <div style="padding: 20px; background-color: #ffebee; color: #c62828; font-family: Arial, sans-serif;">
75
- <h3>应用错误</h3>
76
- <p>${error.message}</p>
77
- <pre style="background-color: #fff; padding: 10px; border-radius: 4px; overflow: auto;">${error.stack}</pre>
78
- </div>
79
- `;
80
- }
81
- use(plugin, ...args) {
82
- if (typeof plugin.install !== "function") {
83
- throw new Error("插件必须提供 install 方法");
84
- }
85
- plugin.install(this, ...args);
86
- this.plugins.push({ plugin, args });
87
- return this;
88
- }
89
- mount() {
90
- if (this.mounted) {
91
- console.warn("应用已经处于运行状态");
92
- return;
93
- }
94
- try {
95
- globalThis.__APP__ = this;
96
- if (this.options.rootElement) {
97
- const rootElement = this.resolveRootElement(this.options.rootElement);
98
- if (rootElement) {
99
- this.container = rootElement;
100
- } else {
101
- throw new Error(`无法找到挂载点: ${this.options.rootElement}`);
102
- }
103
- }
104
- if (this.options.root) {
105
- this.rootInstance = new this.options.root;
106
- if ("setAppContext" in this.rootInstance) {
107
- this.rootInstance.setAppContext(this.appContext);
108
- }
109
- if (this.options.state && "setState" in this.rootInstance) {
110
- this.rootInstance.setState(this.options.state);
111
- }
112
- this.rootInstance.mount(this.container);
113
- this.templateEngine = new TemplateEngine(this.options.state || {});
114
- }
115
- this.mounted = true;
116
- this.onMounted();
117
- } catch (error) {
118
- this.handleError(error);
119
- }
120
- }
121
- unmount() {
122
- if (!this.mounted) {
123
- console.warn("应用未处于运行状态");
124
- return;
125
- }
126
- try {
127
- this.onBeforeUnmount();
128
- if (this.rootInstance) {
129
- if ("unmount" in this.rootInstance) {
130
- this.rootInstance.unmount();
131
- }
132
- this.rootInstance = null;
133
- this.mounted = false;
134
- delete globalThis.__APP__;
135
- }
136
- if (this.templateEngine) {
137
- this.templateEngine.clearBindings();
138
- this.templateEngine = null;
139
- }
140
- this.container.innerHTML = "";
141
- if (this.unmountedCallback) {
142
- this.unmountedCallback();
143
- }
144
- } catch (error) {
145
- console.error("Failed to unmount app:", error);
146
- }
147
- }
148
- isRunning() {
149
- return this.mounted;
150
- }
151
- updateRootComponent(component) {
152
- if (this.mounted) {
153
- this.unmount();
154
- }
155
- this.options.root = component;
156
- this.mount();
157
- }
158
- update(state) {
159
- if (!this.mounted) {
160
- console.warn("Cannot update unmounted app");
161
- return this;
162
- }
163
- try {
164
- if (state && this.options.state) {
165
- this.options.state = { ...this.options.state, ...state };
166
- if (this.rootInstance && "setState" in this.rootInstance) {
167
- this.rootInstance.setState(state);
168
- }
169
- if (this.templateEngine) {
170
- this.templateEngine.state = this.options.state;
171
- }
172
- }
173
- this.onUpdated();
174
- } catch (error) {
175
- console.error("Failed to update app:", error);
176
- }
177
- return this;
178
- }
179
- getContext() {
180
- return this.appContext;
181
- }
182
- provide(key, value) {
183
- this.providers.set(key, value);
184
- return this;
185
- }
186
- inject(key, fallback) {
187
- const result = this.resolveInjection(key);
188
- return result.found ? result.value : fallback;
189
- }
190
- resolveInjection(key) {
191
- if (!this.providers.has(key)) {
192
- return { found: false, value: undefined };
193
- }
194
- return { found: true, value: this.providers.get(key) };
195
- }
196
- getState() {
197
- return this.options.state;
198
- }
199
- setState(newState) {
200
- this.options.state = newState;
201
- if (this.mounted) {
202
- this.update();
203
- }
204
- return this;
205
- }
206
- onUnmounted(callback) {
207
- this.unmountedCallback = callback;
208
- return this;
209
- }
210
- resolveRootElement(selector) {
211
- if (!selector) {
212
- return null;
213
- }
214
- if (typeof selector === "string") {
215
- return document.querySelector(selector);
216
- }
217
- return selector instanceof Element ? selector : null;
218
- }
219
- onMounted() {
220
- this.plugins.forEach(({ plugin: pluginObj }) => {
221
- if (pluginObj && typeof pluginObj.onMounted === "function") {
222
- pluginObj.onMounted(this);
223
- }
224
- });
225
- }
226
- onUpdated() {
227
- this.plugins.forEach(({ plugin: pluginObj }) => {
228
- if (pluginObj && typeof pluginObj.onUpdated === "function") {
229
- pluginObj.onUpdated(this);
230
- }
231
- });
232
- }
233
- onBeforeUnmount() {
234
- this.plugins.forEach(({ plugin: pluginObj }) => {
235
- if (pluginObj && typeof pluginObj.onBeforeUnmount === "function") {
236
- pluginObj.onBeforeUnmount(this);
237
- }
238
- });
239
- }
240
- }
241
- // lib/core/document.ts
242
- var VOID_HEAD_TAGS = new Set(["base", "link", "meta"]);
243
- function renderHtmlDocument(options) {
244
- const lang = options.lang ?? "en";
245
- const charset = options.charset ?? "utf-8";
246
- const viewport = options.viewport ?? "width=device-width, initial-scale=1";
247
- const htmlAttributes = renderAttributes({
248
- lang,
249
- ...options.htmlAttributes ?? {}
250
- });
251
- const bodyAttributes = renderAttributes(options.bodyAttributes);
252
- const bodyHtml = renderDocumentBody(options.body);
253
- return [
254
- "<!doctype html>",
255
- `<html${htmlAttributes}>`,
256
- "<head>",
257
- ` <meta charset="${escapeHtml(charset)}">`,
258
- ` <meta name="viewport" content="${escapeHtml(viewport)}">`,
259
- ` <title>${escapeHtml(options.title)}</title>`,
260
- options.description ? ` <meta name="description" content="${escapeHtml(options.description)}">` : "",
261
- ...(options.head ?? []).map((element) => ` ${renderHeadElement(element)}`),
262
- options.styles && options.styles.length > 0 ? ` <style>${renderStyleSheet(options.styles)}</style>` : "",
263
- "</head>",
264
- `<body${bodyAttributes}>`,
265
- bodyHtml,
266
- ...(options.scripts ?? []).map((script) => ` ${renderScript(script)}`),
267
- "</body>",
268
- "</html>"
269
- ].filter((line) => line !== "").join(`
270
- `);
271
- }
272
- function renderDocumentBody(body) {
273
- if (typeof document === "undefined") {
274
- throw new Error("renderHtmlDocument requires a DOM-like document");
275
- }
276
- const container = document.createElement("div");
277
- const renderer = new RendererContext;
278
- const mountedComponents = new Set;
279
- const renderables = Array.isArray(body) ? body : [body];
280
- const context = {
281
- templateEngine: new TemplateEngine({}),
282
- renderer,
283
- slots: { default: [] },
284
- registerChild: (component) => {
285
- mountedComponents.add(component);
286
- },
287
- unregisterChild: (component) => {
288
- mountedComponents.delete(component);
289
- }
290
- };
291
- renderables.forEach((renderable) => {
292
- container.appendChild(renderer.mount(renderable, context));
293
- });
294
- const html = container.innerHTML;
295
- mountedComponents.forEach((component) => {
296
- component.unmount();
297
- });
298
- return html;
299
- }
300
- function renderHeadElement(element) {
301
- const attributes = renderAttributes(element.attributes);
302
- if (VOID_HEAD_TAGS.has(element.tag) && !element.text) {
303
- return `<${element.tag}${attributes}>`;
304
- }
305
- return `<${element.tag}${attributes}>${escapeHtml(element.text ?? "")}</${element.tag}>`;
306
- }
307
- function renderScript(script) {
308
- const attributes = renderAttributes({
309
- type: script.type,
310
- src: script.src,
311
- async: script.async,
312
- defer: script.defer,
313
- ...script.attributes ?? {}
314
- });
315
- return `<script${attributes}></script>`;
316
- }
317
- function renderAttributes(attributes = {}) {
318
- const rendered = Object.entries(attributes).flatMap(([name, value]) => {
319
- if (value === false || value === null || value === undefined) {
320
- return [];
321
- }
322
- return value === true ? [name] : [`${name}="${escapeHtml(String(value))}"`];
323
- }).join(" ");
324
- return rendered ? ` ${rendered}` : "";
325
- }
326
- function escapeHtml(value) {
327
- return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
328
- }
84
+ } from "./index-ffzday7h.js";
329
85
  // lib/core/form.ts
330
86
  function errorMessage(error) {
331
87
  return error instanceof Error ? error.message : String(error);
@@ -393,63 +149,121 @@ function createForm(model, rules) {
393
149
  }
394
150
  };
395
151
  }
152
+ // lib/core/animation/TransitionGroup.ts
153
+ class TransitionGroup extends Component {
154
+ initState() {
155
+ return {};
156
+ }
157
+ initStyles() {}
158
+ render() {
159
+ const { tag, type, duration } = normalizeTransitionGroupProps(this.props);
160
+ const children = validateTransitionGroupChildren(this.props.children ?? []);
161
+ return {
162
+ tag,
163
+ props: this.props.elementProps,
164
+ listeners: this.props.listeners,
165
+ children,
166
+ transitionGroup: {
167
+ type,
168
+ duration
169
+ }
170
+ };
171
+ }
172
+ }
396
173
  // lib/index.ts
397
174
  function createApp(options = {}) {
398
175
  return new OneApp(options);
399
176
  }
400
- var version = "0.0.2";
177
+ var version = "0.2.1";
401
178
  var name = "@geektech/tsone";
402
179
  export {
403
- version,
404
- validate,
405
- useRouter,
406
- unref,
407
- stop,
408
- slot,
409
- setModelValue,
410
- required,
411
- renderStyleSheet,
412
- renderHtmlDocument,
413
- ref,
414
- readonly,
415
- reactive,
416
- name,
417
- modelPath,
418
- minLength,
419
- isSlotProvider,
420
- isRef,
421
- isReadonly,
422
- isReactive,
423
- isHTMLNode,
424
- isComponentNode,
425
- h,
426
- getModelValue,
427
- effect,
428
- each,
429
- createRouter,
430
- createForm,
431
- createComponent,
432
- createApp,
433
- computed,
434
- TextRenderStrategy,
435
- TemplateEngine,
436
- Span,
437
- SlotRenderStrategy,
438
- RouterView,
439
- RouterLink,
440
- Router,
441
- RendererContext,
442
- ReactiveSystem,
443
- P,
444
- OneApp,
445
- ModelBindingController,
446
- Input,
447
- ElementRenderStrategy,
448
- Div,
449
- ComponentRenderStrategy,
180
+ A,
181
+ Article,
182
+ Aside,
183
+ Blockquote,
184
+ Button,
185
+ Code,
450
186
  Component,
451
- Button
187
+ ComponentRenderStrategy,
188
+ Div,
189
+ ElementRenderStrategy,
190
+ Em,
191
+ Footer,
192
+ Form,
193
+ H1,
194
+ H2,
195
+ H3,
196
+ H4,
197
+ H5,
198
+ H6,
199
+ Header,
200
+ Img,
201
+ Input,
202
+ Label,
203
+ Li,
204
+ Main,
205
+ ModelBindingController,
206
+ Nav,
207
+ Ol,
208
+ OneApp,
209
+ Option,
210
+ P,
211
+ Pre,
212
+ ReactiveSystem,
213
+ RendererContext,
214
+ Router,
215
+ RouterLink,
216
+ RouterView,
217
+ Section,
218
+ Select,
219
+ SlotRenderStrategy,
220
+ Small,
221
+ Span,
222
+ Strong,
223
+ Table,
224
+ Tag,
225
+ Tbody,
226
+ Td,
227
+ TemplateEngine,
228
+ TextRenderStrategy,
229
+ Textarea,
230
+ Th,
231
+ Thead,
232
+ Tr,
233
+ TransitionGroup,
234
+ Ul,
235
+ computed,
236
+ createApp,
237
+ createComponent,
238
+ createForm,
239
+ createRouter,
240
+ each,
241
+ effect,
242
+ getModelValue,
243
+ h,
244
+ isComponentNode,
245
+ isHTMLNode,
246
+ isReactive,
247
+ isReadonly,
248
+ isRef,
249
+ isSlotProvider,
250
+ minLength,
251
+ modelPath,
252
+ name,
253
+ reactive,
254
+ readonly,
255
+ ref,
256
+ renderHtmlDocument,
257
+ renderStyleSheet,
258
+ required,
259
+ setModelValue,
260
+ slot,
261
+ stop,
262
+ unref,
263
+ useRouter,
264
+ validate,
265
+ version
452
266
  };
453
267
 
454
- //# debugId=56537F263323AD5364756E2164756E21
268
+ //# debugId=3AB4C2D17F44BF4B64756E2164756E21
455
269
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1,13 +1,12 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../lib/core/app.ts", "../lib/core/document.ts", "../lib/core/form.ts", "../lib/index.ts"],
3
+ "sources": ["../lib/core/form.ts", "../lib/core/animation/TransitionGroup.ts", "../lib/index.ts"],
4
4
  "sourcesContent": [
5
- "import {\n Component,\n ComponentConstructor,\n InjectionKey,\n InjectionResult,\n} from './component';\nimport type { Router } from '../router';\n\nimport { TemplateEngine } from './template';\n\n// 插件接口定义\nexport interface Plugin {\n install: (app: OneApp, ...args: unknown[]) => void;\n onMounted?: (app: OneApp) => void;\n onUpdated?: (app: OneApp) => void;\n onBeforeUnmount?: (app: OneApp) => void;\n}\n\n// 泛型化AppOptions接口\nexport interface AppOptions<\n TState = Record<string, unknown>,\n TConfig = Record<string, unknown>,\n> {\n /** 根组件构造函数 */\n root?: ComponentConstructor;\n /** 应用挂载点 */\n rootElement?: string | Element;\n /** 全局状态 */\n state?: TState;\n /** 全局配置 */\n config?: TConfig;\n}\n\n// 泛型化AppContext接口\nexport interface AppContext<TConfig = Record<string, unknown>> {\n app: OneApp;\n version: string;\n config: TConfig;\n router?: Router;\n}\n\n// 泛型化OneApp类\nexport class OneApp<\n TState extends object = Record<string, unknown>,\n TConfig extends object = Record<string, unknown>,\n> {\n private container: HTMLElement;\n private rootInstance: Component | null = null;\n private mounted: boolean = false;\n private templateEngine: TemplateEngine | null = null;\n private readonly appContext: AppContext<TConfig>;\n private readonly providers = new Map<string | symbol, unknown>();\n private plugins: Array<{ plugin: Plugin; args: unknown[] }> = [];\n private unmountedCallback?: () => void;\n public router?: Router;\n\n constructor(private options: AppOptions<TState, TConfig> = {}) {\n // 默认使用 body 作为容器\n this.container = document.body;\n\n this.appContext = {\n app: this as unknown as OneApp,\n version: '0.0.2',\n config: options.config || ({} as TConfig),\n };\n }\n\n private handleError(error: Error): void {\n console.error('应用错误:', error);\n // 渲染错误UI\n this.renderErrorUI(error);\n // 不立即卸载应用,而是显示错误信息\n }\n\n /**\n * 渲染错误UI\n */\n private renderErrorUI(error: Error): void {\n this.container.innerHTML = `\n <div style=\"padding: 20px; background-color: #ffebee; color: #c62828; font-family: Arial, sans-serif;\">\n <h3>应用错误</h3>\n <p>${error.message}</p>\n <pre style=\"background-color: #fff; padding: 10px; border-radius: 4px; overflow: auto;\">${error.stack}</pre>\n </div>\n `;\n }\n\n /**\n * 使用插件\n */\n public use(plugin: Plugin, ...args: unknown[]): this {\n if (typeof plugin.install !== 'function') {\n throw new Error('插件必须提供 install 方法');\n }\n plugin.install(this as unknown as OneApp, ...args);\n this.plugins.push({ plugin, args });\n return this;\n }\n\n /**\n * 挂载应用\n */\n public mount(): void {\n if (this.mounted) {\n console.warn('应用已经处于运行状态');\n return;\n }\n\n try {\n // 添加全局应用实例\n (globalThis as { __APP__?: unknown }).__APP__ = this;\n\n // 确定挂载点\n if (this.options.rootElement) {\n const rootElement = this.resolveRootElement(this.options.rootElement);\n if (rootElement) {\n this.container = rootElement as HTMLElement;\n } else {\n throw new Error(`无法找到挂载点: ${this.options.rootElement}`);\n }\n }\n\n // 只有在有根组件时才创建实例\n if (this.options.root) {\n this.rootInstance = new this.options.root();\n\n // 设置应用上下文\n if ('setAppContext' in this.rootInstance) {\n this.rootInstance.setAppContext(this.appContext);\n }\n\n // 如果有全局状态,传递给组件\n if (this.options.state && 'setState' in this.rootInstance) {\n this.rootInstance.setState(this.options.state);\n }\n\n this.rootInstance.mount(this.container);\n\n // 创建模板引擎实例\n this.templateEngine = new TemplateEngine(this.options.state || {});\n }\n\n this.mounted = true;\n\n // 触发生命周期钩子\n this.onMounted();\n } catch (error) {\n this.handleError(error as Error);\n }\n }\n\n /**\n * 卸载应用\n */\n public unmount(): void {\n if (!this.mounted) {\n console.warn('应用未处于运行状态');\n return;\n }\n\n try {\n // 触发卸载前钩子\n this.onBeforeUnmount();\n\n if (this.rootInstance) {\n // 调用组件卸载方法\n if ('unmount' in this.rootInstance) {\n this.rootInstance.unmount();\n }\n\n this.rootInstance = null;\n this.mounted = false;\n delete (globalThis as { __APP__?: unknown }).__APP__;\n }\n\n // 清除模板引擎\n if (this.templateEngine) {\n this.templateEngine.clearBindings();\n this.templateEngine = null;\n }\n\n // 清空容器\n this.container.innerHTML = '';\n\n // 触发卸载后钩子\n if (this.unmountedCallback) {\n this.unmountedCallback();\n }\n } catch (error) {\n console.error('Failed to unmount app:', error);\n }\n }\n\n /**\n * 应用是否正在运行\n */\n public isRunning(): boolean {\n return this.mounted;\n }\n\n /**\n * 更新根组件\n */\n public updateRootComponent(component: ComponentConstructor): void {\n if (this.mounted) {\n this.unmount();\n }\n this.options.root = component;\n this.mount();\n }\n\n /**\n * 更新应用状态\n */\n public update(state?: Partial<TState>): this {\n if (!this.mounted) {\n console.warn('Cannot update unmounted app');\n return this;\n }\n\n try {\n // 更新状态\n if (state && this.options.state) {\n this.options.state = { ...this.options.state, ...state };\n\n // 更新组件状态\n if (this.rootInstance && 'setState' in this.rootInstance) {\n this.rootInstance.setState(state);\n }\n\n // 更新模板引擎状态\n if (this.templateEngine) {\n // 如果存在templateEngine,更新其状态\n this.templateEngine.state = this.options.state;\n }\n }\n\n // 触发更新钩子\n this.onUpdated();\n } catch (error) {\n console.error('Failed to update app:', error);\n }\n\n return this;\n }\n\n /**\n * 获取应用上下文\n */\n public getContext(): AppContext<TConfig> {\n return this.appContext;\n }\n\n public provide<T>(key: InjectionKey<T>, value: T): this {\n this.providers.set(key, value);\n return this;\n }\n\n public inject<T>(key: InjectionKey<T>): T | undefined;\n public inject<T>(key: InjectionKey<T>, fallback: T): T;\n public inject<T>(key: InjectionKey<T>, fallback?: T): T | undefined {\n const result = this.resolveInjection(key);\n return result.found ? result.value : fallback;\n }\n\n public resolveInjection<T>(key: InjectionKey<T>): InjectionResult<T> {\n if (!this.providers.has(key)) {\n return { found: false, value: undefined };\n }\n\n return { found: true, value: this.providers.get(key) as T | undefined };\n }\n\n /**\n * 获取应用状态\n */\n public getState(): TState | undefined {\n return this.options.state;\n }\n\n /**\n * 设置应用状态\n */\n public setState(newState: TState): this {\n this.options.state = newState;\n if (this.mounted) {\n this.update();\n }\n return this;\n }\n\n /**\n * 监听应用卸载\n */\n public onUnmounted(callback: () => void): this {\n this.unmountedCallback = callback;\n return this;\n }\n\n /**\n * 解析根元素\n */\n private resolveRootElement(selector?: string | Element): Element | null {\n if (!selector) {\n return null;\n }\n\n if (typeof selector === 'string') {\n return document.querySelector(selector);\n }\n\n return selector instanceof Element ? selector : null;\n }\n\n // 生命周期钩子\n private onMounted(): void {\n // 触发插件的mounted钩子\n this.plugins.forEach(({ plugin: pluginObj }) => {\n if (pluginObj && typeof pluginObj.onMounted === 'function') {\n pluginObj.onMounted(this as unknown as OneApp);\n }\n });\n }\n\n private onUpdated(): void {\n // 触发插件的updated钩子\n this.plugins.forEach(({ plugin: pluginObj }) => {\n if (pluginObj && typeof pluginObj.onUpdated === 'function') {\n pluginObj.onUpdated(this as unknown as OneApp);\n }\n });\n }\n\n private onBeforeUnmount(): void {\n // 触发插件的beforeUnmount钩子\n this.plugins.forEach(({ plugin: pluginObj }) => {\n if (pluginObj && typeof pluginObj.onBeforeUnmount === 'function') {\n pluginObj.onBeforeUnmount(this as unknown as OneApp);\n }\n });\n }\n}\n\n/**\n * 创建应用实例\n */\nexport function createApp<\n TState extends object = Record<string, unknown>,\n TConfig extends object = Record<string, unknown>,\n>(options: AppOptions<TState, TConfig> = {}): OneApp<TState, TConfig> {\n return new OneApp<TState, TConfig>(options);\n}\n",
6
- "import { RendererContext } from './renderer';\nimport type { ComponentInstance, Renderable } from './renderer/types';\nimport { TemplateEngine } from './template';\nimport { renderStyleSheet, type StyleSheet } from '../style/sheet';\n\nexport {\n renderStyleSheet,\n type StyleAtRule,\n type StyleProperties,\n type StyleRule,\n type StyleSheet,\n type StyleSheetEntry,\n type StyleValue,\n} from '../style/sheet';\n\nexport type HtmlAttributeValue = string | number | boolean | null | undefined;\n\nexport type HtmlAttributes = Record<string, HtmlAttributeValue>;\n\nexport type HtmlDocumentBody = Renderable | Renderable[];\n\nexport interface HtmlHeadElement {\n tag: string;\n attributes?: HtmlAttributes;\n text?: string;\n}\n\nexport interface HtmlScript {\n src: string;\n type?: string;\n async?: boolean;\n defer?: boolean;\n attributes?: HtmlAttributes;\n}\n\nexport interface HtmlDocumentOptions {\n title: string;\n body: HtmlDocumentBody;\n lang?: string;\n charset?: string;\n viewport?: string;\n description?: string;\n htmlAttributes?: HtmlAttributes;\n bodyAttributes?: HtmlAttributes;\n head?: HtmlHeadElement[];\n styles?: StyleSheet;\n scripts?: HtmlScript[];\n}\n\nconst VOID_HEAD_TAGS = new Set(['base', 'link', 'meta']);\n\nexport function renderHtmlDocument(options: HtmlDocumentOptions): string {\n const lang = options.lang ?? 'en';\n const charset = options.charset ?? 'utf-8';\n const viewport = options.viewport ?? 'width=device-width, initial-scale=1';\n const htmlAttributes = renderAttributes({\n lang,\n ...(options.htmlAttributes ?? {}),\n });\n const bodyAttributes = renderAttributes(options.bodyAttributes);\n const bodyHtml = renderDocumentBody(options.body);\n\n return [\n '<!doctype html>',\n `<html${htmlAttributes}>`,\n '<head>',\n ` <meta charset=\"${escapeHtml(charset)}\">`,\n ` <meta name=\"viewport\" content=\"${escapeHtml(viewport)}\">`,\n ` <title>${escapeHtml(options.title)}</title>`,\n options.description\n ? ` <meta name=\"description\" content=\"${escapeHtml(\n options.description\n )}\">`\n : '',\n ...(options.head ?? []).map((element) => ` ${renderHeadElement(element)}`),\n options.styles && options.styles.length > 0\n ? ` <style>${renderStyleSheet(options.styles)}</style>`\n : '',\n '</head>',\n `<body${bodyAttributes}>`,\n bodyHtml,\n ...(options.scripts ?? []).map((script) => ` ${renderScript(script)}`),\n '</body>',\n '</html>',\n ]\n .filter((line) => line !== '')\n .join('\\n');\n}\n\nfunction renderDocumentBody(body: HtmlDocumentBody): string {\n if (typeof document === 'undefined') {\n throw new Error('renderHtmlDocument requires a DOM-like document');\n }\n\n const container = document.createElement('div');\n const renderer = new RendererContext();\n const mountedComponents = new Set<ComponentInstance>();\n const renderables = Array.isArray(body) ? body : [body];\n const context = {\n templateEngine: new TemplateEngine({}),\n renderer,\n slots: { default: [] },\n registerChild: (component: ComponentInstance) => {\n mountedComponents.add(component);\n },\n unregisterChild: (component: ComponentInstance) => {\n mountedComponents.delete(component);\n },\n };\n\n renderables.forEach((renderable) => {\n container.appendChild(renderer.mount(renderable, context));\n });\n\n const html = container.innerHTML;\n mountedComponents.forEach((component) => {\n component.unmount();\n });\n\n return html;\n}\n\nfunction renderHeadElement(element: HtmlHeadElement): string {\n const attributes = renderAttributes(element.attributes);\n if (VOID_HEAD_TAGS.has(element.tag) && !element.text) {\n return `<${element.tag}${attributes}>`;\n }\n\n return `<${element.tag}${attributes}>${escapeHtml(\n element.text ?? ''\n )}</${element.tag}>`;\n}\n\nfunction renderScript(script: HtmlScript): string {\n const attributes = renderAttributes({\n type: script.type,\n src: script.src,\n async: script.async,\n defer: script.defer,\n ...(script.attributes ?? {}),\n });\n\n return `<script${attributes}></script>`;\n}\n\nfunction renderAttributes(attributes: HtmlAttributes = {}): string {\n const rendered = Object.entries(attributes)\n .flatMap(([name, value]) => {\n if (value === false || value === null || value === undefined) {\n return [];\n }\n\n return value === true\n ? [name]\n : [`${name}=\"${escapeHtml(String(value))}\"`];\n })\n .join(' ');\n\n return rendered ? ` ${rendered}` : '';\n}\n\nfunction escapeHtml(value: string): string {\n return value\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;');\n}\n",
7
5
  "import { getModelValue } from './model';\n\nexport type ValidationResult = boolean | string;\n\nexport type ValidationRule<T = unknown> = (\n value: T,\n model: object\n) => ValidationResult;\n\nexport type ValidationRules<TModel extends object> = {\n [TPath in keyof TModel & string]?: readonly ValidationRule[];\n} & Record<string, readonly ValidationRule[] | undefined>;\n\nexport interface FieldValidationResult {\n valid: boolean;\n errors: string[];\n}\n\nexport interface FormValidationResult {\n valid: boolean;\n errors: Record<string, string[]>;\n}\n\nexport interface FormController<TModel extends object> {\n readonly model: TModel;\n readonly errors: Record<string, string[]>;\n validate(): FormValidationResult;\n validateField(path: string): FieldValidationResult;\n resetErrors(): void;\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction runRule(\n rule: ValidationRule,\n value: unknown,\n model: object\n): string | undefined {\n try {\n const result = rule(value, model);\n if (result === true) {\n return undefined;\n }\n return result === false ? 'Validation failed' : result;\n } catch (error) {\n return errorMessage(error);\n }\n}\n\nexport function required(message = 'This field is required'): ValidationRule {\n return (value) => {\n if (value === null || value === undefined) {\n return message;\n }\n if (typeof value === 'string' && value.trim().length === 0) {\n return message;\n }\n if (Array.isArray(value) && value.length === 0) {\n return message;\n }\n return true;\n };\n}\n\nexport function minLength(\n length: number,\n message = `Must be at least ${length} characters`\n): ValidationRule {\n return (value) =>\n typeof value === 'string' && value.length >= length ? true : message;\n}\n\nexport function validate(rule: ValidationRule): ValidationRule {\n return rule;\n}\n\nexport function createForm<TModel extends object>(\n model: TModel,\n rules: ValidationRules<TModel>\n): FormController<TModel> {\n const errors: Record<string, string[]> = {};\n\n const validateField = (path: string): FieldValidationResult => {\n const fieldRules = rules[path] ?? [];\n const value = getModelValue(model as Record<string, unknown>, path);\n const fieldErrors = fieldRules\n .map((rule) => runRule(rule, value, model))\n .filter((message): message is string => message !== undefined);\n\n if (fieldErrors.length === 0) {\n delete errors[path];\n } else {\n errors[path] = fieldErrors;\n }\n\n return { valid: fieldErrors.length === 0, errors: fieldErrors };\n };\n\n return {\n model,\n errors,\n validate(): FormValidationResult {\n const allErrors: Record<string, string[]> = {};\n Object.keys(rules).forEach((path) => {\n const result = validateField(path);\n if (!result.valid) {\n allErrors[path] = result.errors;\n }\n });\n return { valid: Object.keys(allErrors).length === 0, errors: allErrors };\n },\n validateField,\n resetErrors(): void {\n Object.keys(errors).forEach((path) => delete errors[path]);\n },\n };\n}\n",
8
- "import { OneApp, AppOptions } from './core/app';\n\n// 导出核心功能\nexport * from './core';\n\n// 导出路由功能\nexport * from './router';\n\n// 创建应用实例的主函数\nexport function createApp(options: AppOptions = {}): OneApp {\n return new OneApp(options);\n}\n\n// 导出框架名称和版本\nexport const version = '0.0.2';\nexport const name = '@geektech/tsone';\n"
6
+ "import { Component } from '../component';\nimport {\n normalizeTransitionGroupProps,\n validateTransitionGroupChildren,\n type TransitionGroupNode,\n type TransitionGroupProps,\n} from './types';\n\nexport class TransitionGroup extends Component<TransitionGroupProps> {\n protected initState(): object {\n return {};\n }\n\n protected initStyles(): void {}\n\n protected render(): TransitionGroupNode {\n const { tag, type, duration } = normalizeTransitionGroupProps(this.props);\n const children = validateTransitionGroupChildren(this.props.children ?? []);\n\n return {\n tag,\n props: this.props.elementProps,\n listeners: this.props.listeners,\n children,\n transitionGroup: {\n type,\n duration,\n },\n };\n }\n}\n",
7
+ "import { OneApp, AppOptions } from './core/app';\nimport type { ComponentProps } from './core/component';\n\n// 导出核心功能\nexport * from './core';\n\n// 导出路由功能\nexport * from './router';\n\n// 创建应用实例的主函数\nexport function createApp<\n TState extends object = Record<string, unknown>,\n TConfig extends object = Record<string, unknown>,\n TRootProps extends ComponentProps = ComponentProps,\n>(\n options: AppOptions<TState, TConfig, TRootProps> = {}\n): OneApp<TState, TConfig, TRootProps> {\n return new OneApp(options);\n}\n\n// 导出框架名称和版本\nexport const version = '0.2.1';\nexport const name = '@geektech/tsone';\n"
9
8
  ],
10
- "mappings": "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",
11
- "debugId": "56537F263323AD5364756E2164756E21",
9
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,SAAS,YAAY,CAAC,OAAwB;AAAA,EAC5C,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA;AAG9D,SAAS,OAAO,CACd,MACA,OACA,OACoB;AAAA,EACpB,IAAI;AAAA,IACF,MAAM,SAAS,KAAK,OAAO,KAAK;AAAA,IAChC,IAAI,WAAW,MAAM;AAAA,MACnB;AAAA,IACF;AAAA,IACA,OAAO,WAAW,QAAQ,sBAAsB;AAAA,IAChD,OAAO,OAAO;AAAA,IACd,OAAO,aAAa,KAAK;AAAA;AAAA;AAItB,SAAS,QAAQ,CAAC,UAAU,0BAA0C;AAAA,EAC3E,OAAO,CAAC,UAAU;AAAA,IAChB,IAAI,UAAU,QAAQ,UAAU,WAAW;AAAA,MACzC,OAAO;AAAA,IACT;AAAA,IACA,IAAI,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,WAAW,GAAG;AAAA,MAC1D,OAAO;AAAA,IACT;AAAA,IACA,IAAI,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW,GAAG;AAAA,MAC9C,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA;AAAA;AAIJ,SAAS,SAAS,CACvB,QACA,UAAU,oBAAoB,qBACd;AAAA,EAChB,OAAO,CAAC,UACN,OAAO,UAAU,YAAY,MAAM,UAAU,SAAS,OAAO;AAAA;AAG1D,SAAS,QAAQ,CAAC,MAAsC;AAAA,EAC7D,OAAO;AAAA;AAGF,SAAS,UAAiC,CAC/C,OACA,OACwB;AAAA,EACxB,MAAM,SAAmC,CAAC;AAAA,EAE1C,MAAM,gBAAgB,CAAC,SAAwC;AAAA,IAC7D,MAAM,aAAa,MAAM,SAAS,CAAC;AAAA,IACnC,MAAM,QAAQ,cAAc,OAAkC,IAAI;AAAA,IAClE,MAAM,cAAc,WACjB,IAAI,CAAC,SAAS,QAAQ,MAAM,OAAO,KAAK,CAAC,EACzC,OAAO,CAAC,YAA+B,YAAY,SAAS;AAAA,IAE/D,IAAI,YAAY,WAAW,GAAG;AAAA,MAC5B,OAAO,OAAO;AAAA,IAChB,EAAO;AAAA,MACL,OAAO,QAAQ;AAAA;AAAA,IAGjB,OAAO,EAAE,OAAO,YAAY,WAAW,GAAG,QAAQ,YAAY;AAAA;AAAA,EAGhE,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,QAAQ,GAAyB;AAAA,MAC/B,MAAM,YAAsC,CAAC;AAAA,MAC7C,OAAO,KAAK,KAAK,EAAE,QAAQ,CAAC,SAAS;AAAA,QACnC,MAAM,SAAS,cAAc,IAAI;AAAA,QACjC,IAAI,CAAC,OAAO,OAAO;AAAA,UACjB,UAAU,QAAQ,OAAO;AAAA,QAC3B;AAAA,OACD;AAAA,MACD,OAAO,EAAE,OAAO,OAAO,KAAK,SAAS,EAAE,WAAW,GAAG,QAAQ,UAAU;AAAA;AAAA,IAEzE;AAAA,IACA,WAAW,GAAS;AAAA,MAClB,OAAO,KAAK,MAAM,EAAE,QAAQ,CAAC,SAAS,OAAO,OAAO,KAAK;AAAA;AAAA,EAE7D;AAAA;;AC7GK,MAAM,wBAAwB,UAAgC;AAAA,EACzD,SAAS,GAAW;AAAA,IAC5B,OAAO,CAAC;AAAA;AAAA,EAGA,UAAU,GAAS;AAAA,EAEnB,MAAM,GAAwB;AAAA,IACtC,QAAQ,KAAK,MAAM,aAAa,8BAA8B,KAAK,KAAK;AAAA,IACxE,MAAM,WAAW,gCAAgC,KAAK,MAAM,YAAY,CAAC,CAAC;AAAA,IAE1E,OAAO;AAAA,MACL;AAAA,MACA,OAAO,KAAK,MAAM;AAAA,MAClB,WAAW,KAAK,MAAM;AAAA,MACtB;AAAA,MACA,iBAAiB;AAAA,QACf;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA;AAEJ;;ACpBO,SAAS,SAIf,CACC,UAAmD,CAAC,GACf;AAAA,EACrC,OAAO,IAAI,OAAO,OAAO;AAAA;AAIpB,IAAM,UAAU;AAChB,IAAM,OAAO;",
10
+ "debugId": "3AB4C2D17F44BF4B64756E2164756E21",
12
11
  "names": []
13
12
  }
@@ -4,15 +4,15 @@ import {
4
4
  RouterView,
5
5
  createRouter,
6
6
  useRouter
7
- } from "../index-ycmc7ga1.js";
8
- import"../index-8wjswsye.js";
7
+ } from "../index-1x4ectvr.js";
8
+ import"../index-ffzday7h.js";
9
9
  export {
10
- useRouter,
11
- createRouter,
12
- RouterView,
10
+ Router,
13
11
  RouterLink,
14
- Router
12
+ RouterView,
13
+ createRouter,
14
+ useRouter
15
15
  };
16
16
 
17
- //# debugId=82989EE75482A0ED64756E2164756E21
17
+ //# debugId=692EAFC227AA6F3464756E2164756E21
18
18
  //# sourceMappingURL=index.js.map
@@ -4,6 +4,6 @@
4
4
  "sourcesContent": [
5
5
  ],
6
6
  "mappings": "",
7
- "debugId": "82989EE75482A0ED64756E2164756E21",
7
+ "debugId": "692EAFC227AA6F3464756E2164756E21",
8
8
  "names": []
9
9
  }
@@ -1,13 +1,11 @@
1
1
  import {
2
+ StyleManager,
2
3
  renderStyleSheet
3
- } from "../index-vpx80nq5.js";
4
- import {
5
- StyleManager
6
- } from "../index-8wjswsye.js";
4
+ } from "../index-ffzday7h.js";
7
5
  export {
8
- renderStyleSheet,
9
- StyleManager
6
+ StyleManager,
7
+ renderStyleSheet
10
8
  };
11
9
 
12
- //# debugId=F456C9A2F79BB87064756E2164756E21
10
+ //# debugId=AF05CF14C261411864756E2164756E21
13
11
  //# sourceMappingURL=index.js.map
@@ -4,6 +4,6 @@
4
4
  "sourcesContent": [
5
5
  ],
6
6
  "mappings": "",
7
- "debugId": "F456C9A2F79BB87064756E2164756E21",
7
+ "debugId": "AF05CF14C261411864756E2164756E21",
8
8
  "names": []
9
9
  }