stagnate 1.0.7 → 1.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.
@@ -1,3 +1,4 @@
1
+ import { Component } from "./Component";
1
2
  function _collect(data, accumulator) {
2
3
  for (let i = 0; i < data.length; i += 1) {
3
4
  const value = data[i];
@@ -20,7 +21,7 @@ function collect(data) {
20
21
  export function jsx(type, props) {
21
22
  if (type == "text") {
22
23
  const children = collect(props.children);
23
- const element = document.createTextNode(children.length ? children.join() : (props.value || ""));
24
+ const element = document.createTextNode(children.length ? children.join("") : (props.value || ""));
24
25
  if (props.ref) {
25
26
  props.ref(element);
26
27
  }
@@ -38,27 +39,31 @@ export function jsx(type, props) {
38
39
  element = document.createElement(type);
39
40
  }
40
41
  for (const key in props) {
41
- if (key == "children") {
42
+ let value = props[key];
43
+ if (key == "children" || value === undefined) {
42
44
  continue;
43
45
  }
44
46
  else if (key.startsWith("on")) {
45
- element.addEventListener(key.slice(2).toLowerCase(), props[key]);
47
+ element.addEventListener(key.slice(2).toLowerCase(), value);
46
48
  }
47
49
  else if (key == "innerHTML") {
48
- element.innerHTML = props.innerHTML;
50
+ element.innerHTML = value;
49
51
  }
50
52
  else if (key == "ref") {
51
- props.ref(element);
53
+ value(element);
52
54
  }
53
55
  else if (key == "class") {
54
- const value = props.class;
55
- element.setAttribute("class", typeof value == "string" ? value : collect(value).join(" "));
56
+ if (Array.isArray(value)) {
57
+ value = collect(value).join(" ");
58
+ }
59
+ if (value) {
60
+ element.setAttribute("class", value);
61
+ }
56
62
  }
57
63
  else if (key == "style") {
58
- Object.assign(element.style, props.style);
64
+ Object.assign(element.style, value);
59
65
  }
60
66
  else {
61
- const value = props[key];
62
67
  const attribute = isSvg ? key : key.toLowerCase();
63
68
  if (value === true) {
64
69
  element.setAttribute(attribute, "");
@@ -69,7 +74,7 @@ export function jsx(type, props) {
69
74
  else if (typeof value == "string") {
70
75
  element.setAttribute(attribute, value);
71
76
  }
72
- else if (value !== undefined) {
77
+ else {
73
78
  element.setAttribute(attribute, value.toString());
74
79
  }
75
80
  }
@@ -77,9 +82,9 @@ export function jsx(type, props) {
77
82
  children.forEach(x => element.appendChild(x instanceof Node ? x : document.createTextNode(x.toString())));
78
83
  return element;
79
84
  }
80
- else if ("prototype" in type && type.prototype._jsx) {
85
+ else if (type.prototype instanceof Component) {
81
86
  const component = new type(props);
82
- const element = component._jsx();
87
+ const element = component.build();
83
88
  if (props.ref) {
84
89
  props.ref(component);
85
90
  }
@@ -97,6 +102,7 @@ export function createElement(type, props, ...children) {
97
102
  props.children = children;
98
103
  return jsx(type, props);
99
104
  }
105
+ /** JSX fragment component, <> can be used as an alias */
100
106
  export function Fragment(props) {
101
107
  return props.children;
102
108
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsx-runtime.js","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,30 +1,18 @@
1
1
  {
2
2
  "name": "stagnate",
3
- "version": "1.0.7",
3
+ "version": "1.1.0",
4
4
  "description": "non-reactive react",
5
- "main": "lib/index.js",
6
- "files": [
7
- "lib/*"
8
- ],
9
- "directories": {
10
- "lib": "lib"
11
- },
12
- "exports": {
13
- ".": "./lib/index.js",
14
- "./jsx-runtime": "./lib/jsx-runtime.js"
15
- },
16
- "typesVersions": {
17
- "*": {
18
- "*": ["./lib/*", "./lib/index.d.js"]
19
- }
20
- },
5
+ "main": "index.js",
21
6
  "repository": {
22
7
  "type": "git",
23
8
  "url": "git+https://github.com/md5crypt/stagnate.git"
24
9
  },
25
10
  "scripts": {
26
11
  "build": "tsc",
27
- "start": "tsc --watch"
12
+ "start": "tsc --watch",
13
+ "link": "node publish.js symlink",
14
+ "prepublishOnly": "node publish.js verify && tsc --outDir .",
15
+ "pub": "node publish.js pre-publish && cd dist-package && npm publish && cd .. && node publish.js post-publish"
28
16
  },
29
17
  "author": "Marek Korzeniowski",
30
18
  "license": "MIT",
@@ -39,10 +27,9 @@
39
27
  ],
40
28
  "sideEffects": false,
41
29
  "devDependencies": {
42
- "@types/node": "^18.7.15",
43
30
  "@typescript-eslint/eslint-plugin": "^5.36.2",
44
31
  "@typescript-eslint/parser": "^5.36.2",
45
32
  "eslint": "^8.23.0",
46
- "typescript": "^4.8.2"
33
+ "typescript": "^5.9.2"
47
34
  }
48
35
  }