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.
- package/CHANGELOG.md +28 -0
- package/README.md +134 -16
- package/WHATSNEW.md +28 -12
- package/apprun-book.jpg +0 -0
- package/apprun.d.ts +9 -6
- package/cli/app.js +29 -0
- package/cli/index.html +13 -0
- package/{apprun-cli.js → cli/index.js} +8 -14
- package/dist/apprun-dev-tools.js +1 -2
- package/dist/apprun-dev-tools.js.map +1 -1
- package/dist/apprun-html.esm.js +7 -7
- package/dist/apprun-html.esm.js.map +1 -1
- package/dist/apprun-html.js +1 -1
- package/dist/apprun-html.js.map +1 -1
- package/dist/apprun-play-html.esm.js +7 -7
- package/dist/apprun-play-html.esm.js.map +1 -1
- package/dist/apprun-play.js +1 -1
- package/dist/apprun-play.js.map +1 -1
- package/dist/apprun.esm.js +1 -1
- package/dist/apprun.esm.js.map +1 -1
- package/dist/apprun.js +1 -1
- package/dist/apprun.js.map +1 -1
- package/esm/app.js +60 -12
- package/esm/app.js.map +1 -1
- package/esm/apprun-dev-tools.js +1 -7
- package/esm/apprun-dev-tools.js.map +1 -1
- package/esm/apprun-html.js +8 -4
- package/esm/apprun-html.js.map +1 -1
- package/esm/apprun.js +81 -17
- package/esm/apprun.js.map +1 -1
- package/esm/component.js +60 -19
- package/esm/component.js.map +1 -1
- package/esm/decorator.js +22 -5
- package/esm/decorator.js.map +1 -1
- package/esm/directive.js +64 -13
- package/esm/directive.js.map +1 -1
- package/esm/router.js +263 -22
- package/esm/router.js.map +1 -1
- package/esm/type-utils.js +91 -0
- package/esm/type-utils.js.map +1 -0
- package/esm/types.js +32 -11
- package/esm/types.js.map +1 -1
- package/esm/vdom-my-new.js +329 -0
- package/esm/vdom-my-new.js.map +1 -0
- package/esm/vdom-my-prop-attr.js +227 -0
- package/esm/vdom-my-prop-attr.js.map +1 -0
- package/esm/vdom-my.js +77 -88
- package/esm/vdom-my.js.map +1 -1
- package/esm/version.js +15 -0
- package/esm/version.js.map +1 -0
- package/esm/web-component.js +30 -10
- package/esm/web-component.js.map +1 -1
- package/index.html +1 -1
- package/jest.config.js +3 -8
- package/jest.setup.js +29 -3
- package/jsx-runtime.js +1 -1
- package/jsx-runtime.js.map +1 -1
- package/package.json +7 -7
- package/src/app.ts +58 -12
- package/src/apprun-dev-tools.tsx +1 -7
- package/src/apprun-html.ts +8 -4
- package/src/apprun.ts +97 -20
- package/src/component.ts +62 -20
- package/src/decorator.ts +23 -6
- package/src/directive.ts +64 -13
- package/src/router.ts +282 -20
- package/src/type-utils.ts +130 -0
- package/src/types.ts +33 -12
- package/src/vdom-my-new.ts +311 -0
- package/src/vdom-my-prop-attr.ts +241 -0
- package/src/vdom-my.ts +82 -71
- package/src/version.ts +16 -0
- package/src/web-component.ts +31 -11
- package/cli/export.js +0 -92
- 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,
|
|
17
|
-
* - ActionOptions: Action behavior options (render, history,
|
|
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
|
|
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
|
|
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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"}
|