apprun 3.35.0 → 3.36.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.
Files changed (75) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +134 -16
  3. package/WHATSNEW.md +28 -12
  4. package/apprun-book.jpg +0 -0
  5. package/apprun.d.ts +9 -6
  6. package/cli/app.js +29 -0
  7. package/cli/index.html +13 -0
  8. package/{apprun-cli.js → cli/index.js} +8 -14
  9. package/dist/apprun-dev-tools.js +1 -2
  10. package/dist/apprun-dev-tools.js.map +1 -1
  11. package/dist/apprun-html.esm.js +7 -7
  12. package/dist/apprun-html.esm.js.map +1 -1
  13. package/dist/apprun-html.js +1 -1
  14. package/dist/apprun-html.js.map +1 -1
  15. package/dist/apprun-play-html.esm.js +7 -7
  16. package/dist/apprun-play-html.esm.js.map +1 -1
  17. package/dist/apprun-play.js +1 -1
  18. package/dist/apprun-play.js.map +1 -1
  19. package/dist/apprun.esm.js +1 -1
  20. package/dist/apprun.esm.js.map +1 -1
  21. package/dist/apprun.js +1 -1
  22. package/dist/apprun.js.map +1 -1
  23. package/esm/app.js +60 -12
  24. package/esm/app.js.map +1 -1
  25. package/esm/apprun-dev-tools.js +1 -7
  26. package/esm/apprun-dev-tools.js.map +1 -1
  27. package/esm/apprun-html.js +8 -4
  28. package/esm/apprun-html.js.map +1 -1
  29. package/esm/apprun.js +81 -17
  30. package/esm/apprun.js.map +1 -1
  31. package/esm/component.js +60 -19
  32. package/esm/component.js.map +1 -1
  33. package/esm/decorator.js +22 -5
  34. package/esm/decorator.js.map +1 -1
  35. package/esm/directive.js +64 -13
  36. package/esm/directive.js.map +1 -1
  37. package/esm/router.js +263 -22
  38. package/esm/router.js.map +1 -1
  39. package/esm/type-utils.js +91 -0
  40. package/esm/type-utils.js.map +1 -0
  41. package/esm/types.js +32 -11
  42. package/esm/types.js.map +1 -1
  43. package/esm/vdom-my-new.js +329 -0
  44. package/esm/vdom-my-new.js.map +1 -0
  45. package/esm/vdom-my-prop-attr.js +227 -0
  46. package/esm/vdom-my-prop-attr.js.map +1 -0
  47. package/esm/vdom-my.js +77 -88
  48. package/esm/vdom-my.js.map +1 -1
  49. package/esm/version.js +15 -0
  50. package/esm/version.js.map +1 -0
  51. package/esm/web-component.js +30 -10
  52. package/esm/web-component.js.map +1 -1
  53. package/index.html +1 -1
  54. package/jest.config.js +3 -8
  55. package/jest.setup.js +29 -3
  56. package/jsx-runtime.js +1 -1
  57. package/jsx-runtime.js.map +1 -1
  58. package/package.json +7 -7
  59. package/src/app.ts +58 -12
  60. package/src/apprun-dev-tools.tsx +1 -7
  61. package/src/apprun-html.ts +8 -4
  62. package/src/apprun.ts +97 -20
  63. package/src/component.ts +62 -20
  64. package/src/decorator.ts +23 -6
  65. package/src/directive.ts +64 -13
  66. package/src/router.ts +282 -20
  67. package/src/type-utils.ts +130 -0
  68. package/src/types.ts +33 -12
  69. package/src/vdom-my-new.ts +311 -0
  70. package/src/vdom-my-prop-attr.ts +241 -0
  71. package/src/vdom-my.ts +82 -71
  72. package/src/version.ts +16 -0
  73. package/src/web-component.ts +31 -11
  74. package/cli/export.js +0 -92
  75. package/cli/import.js +0 -68
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Type Safety Utilities for AppRun
3
+ *
4
+ * This file provides utility functions and types to improve type safety
5
+ * across the AppRun framework, including:
6
+ * 1. Safe type assertions with null checks
7
+ * 2. Global object assignment helpers
8
+ * 3. Event target type guards
9
+ * 4. Function validation utilities
10
+ */
11
+ /**
12
+ * Safely cast event target to specific HTML element type with null check
13
+ */
14
+ export function safeEventTarget(event) {
15
+ return (event === null || event === void 0 ? void 0 : event.target) instanceof HTMLElement ? event.target : null;
16
+ }
17
+ /**
18
+ * Type guard to check if an object is a valid function
19
+ */
20
+ export function isFunction(obj) {
21
+ return typeof obj === 'function';
22
+ }
23
+ /**
24
+ * Type guard to check if an object is a valid HTML element
25
+ */
26
+ export function isHTMLElement(obj) {
27
+ return obj instanceof HTMLElement;
28
+ }
29
+ /**
30
+ * Safely assign properties to global object with type checking
31
+ */
32
+ export function safeGlobalAssign(globalObj, assignments) {
33
+ if (typeof globalObj === 'object' && globalObj !== null) {
34
+ Object.keys(assignments).forEach(key => {
35
+ globalObj[key] = assignments[key];
36
+ });
37
+ }
38
+ }
39
+ /**
40
+ * Safely get property from global object with fallback
41
+ */
42
+ export function safeGlobalGet(globalObj, property, fallback) {
43
+ var _a;
44
+ if (typeof globalObj === 'object' && globalObj !== null) {
45
+ return (_a = globalObj[property]) !== null && _a !== void 0 ? _a : fallback;
46
+ }
47
+ return fallback;
48
+ }
49
+ /**
50
+ * Type-safe wrapper for DOM element queries
51
+ */
52
+ export function safeQuerySelector(selector, context = document) {
53
+ try {
54
+ return context.querySelector(selector);
55
+ }
56
+ catch (error) {
57
+ console.warn(`Invalid selector: ${selector}`, error);
58
+ return null;
59
+ }
60
+ }
61
+ /**
62
+ * Type-safe wrapper for DOM element by ID
63
+ */
64
+ export function safeGetElementById(id) {
65
+ try {
66
+ return document.getElementById(id);
67
+ }
68
+ catch (error) {
69
+ console.warn(`Error getting element by id: ${id}`, error);
70
+ return null;
71
+ }
72
+ }
73
+ /**
74
+ * Validate and safely execute a function with error handling
75
+ */
76
+ export function safeExecute(fn, args, context, errorMessage) {
77
+ if (!isFunction(fn)) {
78
+ if (errorMessage) {
79
+ console.warn(errorMessage, fn);
80
+ }
81
+ return undefined;
82
+ }
83
+ try {
84
+ return context ? fn.apply(context, args) : fn(...args);
85
+ }
86
+ catch (error) {
87
+ console.error(errorMessage || 'Error executing function:', error);
88
+ return undefined;
89
+ }
90
+ }
91
+ //# sourceMappingURL=type-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-utils.js","sourceRoot":"","sources":["../src/type-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,MAAM,UAAU,eAAe,CAAsC,KAAY;IAC/E,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,aAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,MAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAQ;IACjC,OAAO,OAAO,GAAG,KAAK,UAAU,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAQ;IACpC,OAAO,GAAG,YAAY,WAAW,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAc,EACd,WAAc;IAEd,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACrC,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,SAAc,EACd,QAAgB,EAChB,QAAY;;IAEZ,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACxD,OAAO,MAAA,SAAS,CAAC,QAAQ,CAAC,mCAAI,QAAQ,CAAC;IACzC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,UAA8B,QAAQ;IAEtC,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,aAAa,CAAI,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,qBAAqB,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,EAAU;IAEV,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAa,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,EAA0C,EAC1C,IAAO,EACP,OAAa,EACb,YAAqB;IAErB,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;QACpB,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,2BAA2B,EAAE,KAAK,CAAC,CAAC;QAClE,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
package/esm/types.js CHANGED
@@ -4,26 +4,47 @@
4
4
  * This file defines the fundamental types used across AppRun:
5
5
  * 1. Component Types
6
6
  * - View: Function that renders state to VDOM
7
- * - Action: Function that updates state
8
- * - Update: Collection of actions
7
+ * - Action: Function that updates state (sync/async)
8
+ * - Update: Collection of actions (array or object format)
9
+ * - ActionDef: Tuple definition for action arrays
9
10
  *
10
11
  * 2. Virtual DOM Types
11
- * - VNode: Virtual DOM node structure
12
- * - VDOM: Union of possible VDOM types
13
- * - Element: DOM element references
12
+ * - VNode: Virtual DOM node structure with tag/props/children
13
+ * - VDOM: Union of possible VDOM types (false, string, VNode, array)
14
+ * - Element: DOM element references (HTMLElement or string selector)
15
+ * - TemplateResult: Lit-html template support
14
16
  *
15
17
  * 3. Configuration Types
16
- * - EventOptions: Event handler options (once, delay, etc)
17
- * - ActionOptions: Action behavior options (render, history, etc)
18
- * - MountOptions: Component mounting options (global events, routing)
19
- * - AppStartOptions: Application startup configuration
18
+ * - EventOptions: Event handler options (once, delay, transition)
19
+ * - ActionOptions: Action behavior options (render, history, global, callback)
20
+ * - MountOptions: Component mounting options (global events, routing, transitions)
21
+ * - AppStartOptions: Application startup configuration with lifecycle hooks
22
+ *
23
+ * Features:
24
+ * - Strong typing for component lifecycle
25
+ * - Flexible action definition formats
26
+ * - Comprehensive event options
27
+ * - Integration with external libraries (lit-html)
28
+ * - Type-safe component mounting
29
+ * - Lifecycle hook typing
30
+ *
31
+ * Type Safety Improvements (v3.35.1):
32
+ * - Enhanced generic constraints for better type inference
33
+ * - Improved union types for VDOM flexibility
34
+ * - Better callback typing in options
35
+ * - Stricter typing for lifecycle methods
20
36
  *
21
37
  * Usage:
22
38
  * ```ts
23
- * class MyComponent implements Component<State> {
39
+ * class MyComponent extends Component<State, Events> {
24
40
  * view: View<State>;
25
- * update: Update<State>;
41
+ * update: Update<State, Events>;
26
42
  * }
43
+ *
44
+ * // Type-safe action definitions
45
+ * const update: Update<State> = {
46
+ * 'event': (state: State, ...args) => newState
47
+ * };
27
48
  * ```
28
49
  */
29
50
  export {};
package/esm/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG"}
@@ -0,0 +1,329 @@
1
+ import directive from './directive';
2
+ export function Fragment(props, ...children) {
3
+ return collect(children);
4
+ }
5
+ const ATTR_PROPS = '_props';
6
+ function collect(children) {
7
+ const ch = [];
8
+ const push = (c) => {
9
+ if (c !== null && c !== undefined && c !== '' && c !== false) {
10
+ ch.push((typeof c === 'function' || typeof c === 'object') ? c : `${c}`);
11
+ }
12
+ };
13
+ children && children.forEach(c => {
14
+ if (Array.isArray(c)) {
15
+ c.forEach(i => push(i));
16
+ }
17
+ else {
18
+ push(c);
19
+ }
20
+ });
21
+ return ch;
22
+ }
23
+ export function createElement(tag, props, ...children) {
24
+ const ch = collect(children);
25
+ if (typeof tag === 'string')
26
+ return { tag, props, children: ch };
27
+ else if (Array.isArray(tag))
28
+ return tag; // JSX fragments - babel
29
+ else if (tag === undefined && children)
30
+ return ch; // JSX fragments - typescript
31
+ else if (Object.getPrototypeOf(tag).__isAppRunComponent)
32
+ return { tag, props, children: ch }; // createComponent(tag, { ...props, children });
33
+ else if (typeof tag === 'function')
34
+ return tag(props, ch);
35
+ else
36
+ throw new Error(`Unknown tag in vdom ${tag}`);
37
+ }
38
+ ;
39
+ const keyCache = {};
40
+ export const updateElement = (element, nodes, component = {}) => {
41
+ // tslint:disable-next-line
42
+ if (nodes == null || nodes === false)
43
+ return;
44
+ const el = (typeof element === 'string' && element) ?
45
+ document.getElementById(element) || document.querySelector(element) : element;
46
+ nodes = directive(nodes, component);
47
+ render(el, nodes, component);
48
+ };
49
+ function render(element, nodes, parent = {}) {
50
+ // tslint:disable-next-line
51
+ if (nodes == null || nodes === false)
52
+ return;
53
+ nodes = createComponent(nodes, parent);
54
+ if (!element)
55
+ return;
56
+ const isSvg = element.nodeName === "SVG";
57
+ if (Array.isArray(nodes)) {
58
+ updateChildren(element, nodes, isSvg);
59
+ }
60
+ else {
61
+ updateChildren(element, [nodes], isSvg);
62
+ }
63
+ }
64
+ function same(el, node) {
65
+ // if (!el || !node) return false;
66
+ const key1 = el.nodeName;
67
+ const key2 = `${node.tag || ''}`;
68
+ return key1.toUpperCase() === key2.toUpperCase();
69
+ }
70
+ function update(element, node, isSvg) {
71
+ // console.assert(!!element);
72
+ isSvg = isSvg || node.tag === "svg";
73
+ if (!same(element, node)) {
74
+ element.parentNode.replaceChild(create(node, isSvg), element);
75
+ return;
76
+ }
77
+ updateChildren(element, node.children, isSvg);
78
+ updateProps(element, node.props, isSvg);
79
+ }
80
+ function updateChildren(element, children, isSvg) {
81
+ var _a;
82
+ const old_len = ((_a = element.childNodes) === null || _a === void 0 ? void 0 : _a.length) || 0;
83
+ const new_len = (children === null || children === void 0 ? void 0 : children.length) || 0;
84
+ // Handle key-based reordering first if any children have keys
85
+ const hasKeysInNewChildren = children === null || children === void 0 ? void 0 : children.some(child => child && typeof child === 'object' && child.props && child.props.key !== undefined);
86
+ if (hasKeysInNewChildren) {
87
+ // Create a map of existing keyed elements
88
+ const existingKeyedElements = new Map();
89
+ for (let i = 0; i < old_len; i++) {
90
+ const el = element.childNodes[i];
91
+ if (el && el.key) {
92
+ existingKeyedElements.set(el.key, el);
93
+ }
94
+ }
95
+ // Build new DOM structure
96
+ const fragment = document.createDocumentFragment();
97
+ for (let i = 0; i < new_len; i++) {
98
+ const child = children[i];
99
+ if (child == null)
100
+ continue;
101
+ const key = child.props && child.props['key'];
102
+ if (key && existingKeyedElements.has(key)) {
103
+ // Reuse existing element
104
+ const existingEl = existingKeyedElements.get(key);
105
+ update(existingEl, child, isSvg);
106
+ fragment.appendChild(existingEl);
107
+ existingKeyedElements.delete(key); // Mark as used
108
+ }
109
+ else {
110
+ // Create new element
111
+ fragment.appendChild(create(child, isSvg));
112
+ }
113
+ }
114
+ // Clear current children and append new structure
115
+ while (element.firstChild) {
116
+ element.removeChild(element.firstChild);
117
+ }
118
+ element.appendChild(fragment);
119
+ return;
120
+ }
121
+ // Original non-keyed logic
122
+ const len = Math.min(old_len, new_len);
123
+ for (let i = 0; i < len; i++) {
124
+ const child = children[i];
125
+ if (child == null)
126
+ continue;
127
+ const el = element.childNodes[i];
128
+ if (!el)
129
+ continue; // Safety check for undefined childNodes
130
+ if (typeof child === 'string') {
131
+ if (el.nodeType === 3) {
132
+ if (el.nodeValue !== child) {
133
+ el.nodeValue = child;
134
+ }
135
+ }
136
+ else {
137
+ element.replaceChild(createText(child), el);
138
+ }
139
+ }
140
+ else if (child instanceof HTMLElement || child instanceof SVGElement) {
141
+ element.replaceChild(child, el);
142
+ }
143
+ else if (child && typeof child === 'object') {
144
+ update(element.childNodes[i], child, isSvg);
145
+ }
146
+ }
147
+ // Remove extra old nodes
148
+ while (element.childNodes.length > len) {
149
+ element.removeChild(element.lastChild);
150
+ }
151
+ if (new_len > len) {
152
+ const d = document.createDocumentFragment();
153
+ for (let i = len; i < children.length; i++) {
154
+ const child = children[i];
155
+ if (child != null) {
156
+ d.appendChild(create(child, isSvg));
157
+ }
158
+ }
159
+ element.appendChild(d);
160
+ }
161
+ }
162
+ export const safeHTML = (html) => {
163
+ const div = document.createElement('section');
164
+ div.insertAdjacentHTML('afterbegin', html);
165
+ return Array.from(div.children);
166
+ };
167
+ function createText(node) {
168
+ if ((node === null || node === void 0 ? void 0 : node.indexOf('_html:')) === 0) { // ?
169
+ const div = document.createElement('div');
170
+ div.insertAdjacentHTML('afterbegin', node.substring(6));
171
+ return div;
172
+ }
173
+ else {
174
+ return document.createTextNode(node !== null && node !== void 0 ? node : '');
175
+ }
176
+ }
177
+ function create(node, isSvg) {
178
+ // console.assert(node !== null && node !== undefined);
179
+ if ((node instanceof HTMLElement) || (node instanceof SVGElement))
180
+ return node;
181
+ if (typeof node === "string")
182
+ return createText(node);
183
+ // Type guard for VNode objects - handle invalid node types gracefully
184
+ if (!node || typeof node !== 'object' || !node.tag || (typeof node.tag === 'function')) {
185
+ return createText(typeof node === 'object' ? JSON.stringify(node) : String(node !== null && node !== void 0 ? node : ''));
186
+ }
187
+ isSvg = isSvg || node.tag === "svg";
188
+ const element = isSvg
189
+ ? document.createElementNS("http://www.w3.org/2000/svg", node.tag)
190
+ : document.createElement(node.tag);
191
+ updateProps(element, node.props, isSvg);
192
+ if (node.children)
193
+ node.children.forEach(child => element.appendChild(create(child, isSvg)));
194
+ return element;
195
+ }
196
+ function mergeProps(oldProps, newProps) {
197
+ newProps['class'] = newProps['class'] || newProps['className'];
198
+ delete newProps['className'];
199
+ const props = {};
200
+ if (oldProps)
201
+ Object.keys(oldProps).forEach(p => props[p] = null);
202
+ if (newProps)
203
+ Object.keys(newProps).forEach(p => props[p] = newProps[p]);
204
+ return props;
205
+ }
206
+ export function updateProps(element, props, isSvg) {
207
+ // console.assert(!!element);
208
+ const cached = element[ATTR_PROPS] || {};
209
+ props = mergeProps(cached, props || {});
210
+ element[ATTR_PROPS] = props;
211
+ for (const name in props) {
212
+ const value = props[name];
213
+ // if (cached[name] === value) continue;
214
+ // console.log('updateProps', name, value);
215
+ if (name.startsWith('data-')) {
216
+ const dname = name.substring(5);
217
+ const cname = dname.replace(/-(\w)/g, (match) => match[1].toUpperCase());
218
+ if (element.dataset[cname] !== value) {
219
+ if (value || value === "")
220
+ element.dataset[cname] = value;
221
+ else
222
+ delete element.dataset[cname];
223
+ }
224
+ }
225
+ else if (name === 'style') {
226
+ if (element.style.cssText)
227
+ element.style.cssText = '';
228
+ if (typeof value === 'string')
229
+ element.style.cssText = value;
230
+ else {
231
+ for (const s in value) {
232
+ if (element.style[s] !== value[s])
233
+ element.style[s] = value[s];
234
+ }
235
+ }
236
+ }
237
+ else if (name.startsWith('xlink')) {
238
+ const xname = name.replace('xlink', '').toLowerCase();
239
+ if (value == null || value === false) {
240
+ element.removeAttributeNS('http://www.w3.org/1999/xlink', xname);
241
+ }
242
+ else {
243
+ element.setAttributeNS('http://www.w3.org/1999/xlink', xname, value);
244
+ }
245
+ }
246
+ else if (name.startsWith('on')) {
247
+ if (!value || typeof value === 'function') {
248
+ element[name] = value;
249
+ }
250
+ else if (typeof value === 'string') {
251
+ if (value)
252
+ element.setAttribute(name, value);
253
+ else
254
+ element.removeAttribute(name);
255
+ }
256
+ }
257
+ else if (/^id$|^class$|^list$|^readonly$|^contenteditable$|^role|-|^for$/g.test(name) || isSvg) {
258
+ if (element.getAttribute(name) !== value) {
259
+ if (value)
260
+ element.setAttribute(name, value);
261
+ else
262
+ element.removeAttribute(name);
263
+ }
264
+ }
265
+ else if (element[name] !== value) {
266
+ element[name] = value;
267
+ }
268
+ if (name === 'key' && value !== undefined) {
269
+ keyCache[value] = element;
270
+ element.key = value; // Set key property on the DOM element
271
+ }
272
+ }
273
+ if (props && typeof props['ref'] === 'function') {
274
+ window.requestAnimationFrame(() => props['ref'](element));
275
+ }
276
+ }
277
+ function render_component(node, parent, idx) {
278
+ const { tag, props, children } = node;
279
+ let key = `_${idx}`;
280
+ let id = props && props['id'];
281
+ if (!id)
282
+ id = `_${idx}${Date.now()}`;
283
+ else
284
+ key = id;
285
+ let asTag = 'section';
286
+ if (props && props['as']) {
287
+ asTag = props['as'];
288
+ delete props['as'];
289
+ }
290
+ if (!parent.__componentCache)
291
+ parent.__componentCache = {};
292
+ let component = parent.__componentCache[key];
293
+ if (!component || !(component instanceof tag) || !component.element) {
294
+ const element = document.createElement(asTag);
295
+ component = parent.__componentCache[key] = new tag(Object.assign(Object.assign({}, props), { children })).mount(element, { render: true });
296
+ }
297
+ else {
298
+ component.renderState(component.state);
299
+ }
300
+ if (component.mounted) {
301
+ const new_state = component.mounted(props, children, component.state);
302
+ (typeof new_state !== 'undefined') && component.setState(new_state);
303
+ }
304
+ updateProps(component.element, props, false);
305
+ return component.element;
306
+ }
307
+ function createComponent(node, parent, idx = 0) {
308
+ var _a;
309
+ if (typeof node === 'string')
310
+ return node;
311
+ if (Array.isArray(node))
312
+ return node.map(child => createComponent(child, parent, idx++));
313
+ let vdom = node;
314
+ if (node && typeof node.tag === 'function' && Object.getPrototypeOf(node.tag).__isAppRunComponent) {
315
+ vdom = render_component(node, parent, idx);
316
+ }
317
+ if (vdom && Array.isArray(vdom.children)) {
318
+ const new_parent = (_a = vdom.props) === null || _a === void 0 ? void 0 : _a._component;
319
+ if (new_parent) {
320
+ let i = 0;
321
+ vdom.children = vdom.children.map(child => createComponent(child, new_parent, i++));
322
+ }
323
+ else {
324
+ vdom.children = vdom.children.map(child => createComponent(child, parent, idx++));
325
+ }
326
+ }
327
+ return vdom;
328
+ }
329
+ //# sourceMappingURL=vdom-my-new.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vdom-my-new.js","sourceRoot":"","sources":["../src/vdom-my-new.ts"],"names":[],"mappings":"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"}