@lukekaalim/act-three 6.2.0 → 7.0.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.
- package/CHANGELOG.md +39 -0
- package/README.md +2 -0
- package/builder.ts +32 -0
- package/mod.ts +1 -1
- package/package.json +5 -5
- package/render.ts +39 -8
- package/space.ts +0 -42
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,44 @@
|
|
|
1
1
|
# @lukekaalim/act-three
|
|
2
2
|
|
|
3
|
+
## 7.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- afd247e: Another major refactor! So everything is broken. Good luck!
|
|
8
|
+
|
|
9
|
+
### Minor Changes
|
|
10
|
+
|
|
11
|
+
- b3f6c49: Added debug capabilities and protocol
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- Updated dependencies [6658c01]
|
|
16
|
+
- Updated dependencies [bd0a076]
|
|
17
|
+
- Updated dependencies [fdf1557]
|
|
18
|
+
- Updated dependencies [7597a8f]
|
|
19
|
+
- Updated dependencies [ccb3900]
|
|
20
|
+
- Updated dependencies [afd247e]
|
|
21
|
+
- Updated dependencies [2984273]
|
|
22
|
+
- Updated dependencies [b3f6c49]
|
|
23
|
+
- Updated dependencies [c5e8775]
|
|
24
|
+
- @lukekaalim/act-backstage@3.0.0
|
|
25
|
+
- @lukekaalim/act-web@4.0.0
|
|
26
|
+
- @lukekaalim/act-recon@3.0.0
|
|
27
|
+
- @lukekaalim/act@4.0.0
|
|
28
|
+
|
|
29
|
+
## 6.3.0-alpha.0
|
|
30
|
+
|
|
31
|
+
### Minor Changes
|
|
32
|
+
|
|
33
|
+
- b3f6c49: Added debug capabilities and protocol
|
|
34
|
+
|
|
35
|
+
### Patch Changes
|
|
36
|
+
|
|
37
|
+
- Updated dependencies [b3f6c49]
|
|
38
|
+
- @lukekaalim/act-backstage@3.0.0-alpha.0
|
|
39
|
+
- @lukekaalim/act-recon@3.0.0-alpha.0
|
|
40
|
+
- @lukekaalim/act-web@3.4.0-alpha.0
|
|
41
|
+
|
|
3
42
|
## 6.2.0
|
|
4
43
|
|
|
5
44
|
### Minor Changes
|
package/README.md
ADDED
package/builder.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { NodeBuilder } from "@lukekaalim/act-backstage";
|
|
2
|
+
import { Object3D } from "three";
|
|
3
|
+
import { getElementHandler } from "./elements";
|
|
4
|
+
import { Component, h, specialNodeTypes } from "@lukekaalim/act";
|
|
5
|
+
|
|
6
|
+
export const ThreeJSRoot: Component = ({ children }) => h(specialNodeTypes.render, { type: 'threejs' }, children);
|
|
7
|
+
|
|
8
|
+
export const createThreeJSBuilder = (rootObject: Object3D | null = null): NodeBuilder<Object3D, 'threejs'> => ({
|
|
9
|
+
roots: new Set(['threejs']),
|
|
10
|
+
|
|
11
|
+
create(element) {
|
|
12
|
+
const handler = getElementHandler(element.type);
|
|
13
|
+
if (handler)
|
|
14
|
+
return handler.create(element.props);
|
|
15
|
+
return null;
|
|
16
|
+
},
|
|
17
|
+
update(el, next, prev) {
|
|
18
|
+
const handler = getElementHandler(next.type);
|
|
19
|
+
if (handler)
|
|
20
|
+
handler.setProps(el, prev && prev.props, next.props);
|
|
21
|
+
},
|
|
22
|
+
linkRoot: rootObject && ((child) => {
|
|
23
|
+
rootObject.add(child);
|
|
24
|
+
}) || undefined,
|
|
25
|
+
link(el, parent) {
|
|
26
|
+
parent && parent.add(el)
|
|
27
|
+
},
|
|
28
|
+
destroy(el) {
|
|
29
|
+
if (el.parent)
|
|
30
|
+
el.removeFromParent()
|
|
31
|
+
},
|
|
32
|
+
})
|
package/mod.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lukekaalim/act-three",
|
|
3
3
|
"main": "mod.ts",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "7.0.0",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@types/three": ">= 0.171.0",
|
|
7
|
-
"@lukekaalim/act-web": "^
|
|
8
|
-
"@lukekaalim/act": "^
|
|
9
|
-
"@lukekaalim/act-recon": "^
|
|
10
|
-
"@lukekaalim/act-backstage": "^
|
|
7
|
+
"@lukekaalim/act-web": "^4.0.0",
|
|
8
|
+
"@lukekaalim/act": "^4.0.0",
|
|
9
|
+
"@lukekaalim/act-recon": "^3.0.0",
|
|
10
|
+
"@lukekaalim/act-backstage": "^3.0.0"
|
|
11
11
|
},
|
|
12
12
|
"peerDependencies": {
|
|
13
13
|
"three": ">= 0.171.0"
|
package/render.ts
CHANGED
|
@@ -1,8 +1,39 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { h, Node } from "@lukekaalim/act";
|
|
2
|
+
import { RenderSpace2 } from "@lukekaalim/act-backstage";
|
|
3
|
+
import { Reconciler2 } from "@lukekaalim/act-recon";
|
|
4
|
+
import { createDOMScheduler, createWebNodeBuilder, HTML } from "@lukekaalim/act-web";
|
|
5
|
+
import { createThreeJSBuilder, ThreeJSRoot } from "./builder";
|
|
6
|
+
import { Object3D } from "three";
|
|
7
|
+
|
|
8
|
+
type Options = {
|
|
9
|
+
web?: {}
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export const render = (node: Node, root: HTMLElement, options: Options = {}) => {
|
|
13
|
+
const scheduler = createDOMScheduler();
|
|
14
|
+
const reconciler = new Reconciler2(scheduler);
|
|
15
|
+
|
|
16
|
+
const webSpace = new RenderSpace2(reconciler.tree, createWebNodeBuilder(root));
|
|
17
|
+
const threeSpace = new RenderSpace2(reconciler.tree, createThreeJSBuilder());
|
|
18
|
+
|
|
19
|
+
reconciler.bus = {
|
|
20
|
+
render(delta) {
|
|
21
|
+
webSpace.create(delta);
|
|
22
|
+
threeSpace.create(delta);
|
|
23
|
+
|
|
24
|
+
webSpace.update(delta);
|
|
25
|
+
threeSpace.update(delta);
|
|
26
|
+
},
|
|
27
|
+
}
|
|
28
|
+
reconciler.mount(h(HTML, {}, node));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export const renderToObject = (node: Node, root: Object3D) => {
|
|
32
|
+
const scheduler = createDOMScheduler();
|
|
33
|
+
const reconciler = new Reconciler2(scheduler);
|
|
34
|
+
const threeSpace = new RenderSpace2(reconciler.tree, createThreeJSBuilder(root));
|
|
35
|
+
|
|
36
|
+
reconciler.bus = threeSpace.bus;
|
|
37
|
+
|
|
38
|
+
reconciler.mount(h(ThreeJSRoot, {}, node));
|
|
39
|
+
}
|
package/space.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { createSimpleRenderSpace, RenderSpace } from "@lukekaalim/act-backstage"
|
|
2
|
-
import { act, recon, three } from "./deps"
|
|
3
|
-
import { setProps } from "./props";
|
|
4
|
-
import { primitiveNodeTypes, renderNodeType } from "@lukekaalim/act";
|
|
5
|
-
import { getElementHandler } from "./elements";
|
|
6
|
-
import { createWebSpace } from "@lukekaalim/act-web";
|
|
7
|
-
import { CommitTree } from "@lukekaalim/act-recon";
|
|
8
|
-
|
|
9
|
-
export const ThreeJS: act.Component = ({ children }) => act.h(renderNodeType, { type: 'threejs' }, children)
|
|
10
|
-
|
|
11
|
-
export const createFinaleSpace = (tree: recon.CommitTree) => {
|
|
12
|
-
return createSimpleRenderSpace(tree, {
|
|
13
|
-
rootTypes: new Set(['threejs']),
|
|
14
|
-
create(element) {
|
|
15
|
-
const handler = getElementHandler(element.type);
|
|
16
|
-
if (handler)
|
|
17
|
-
return handler.create(element.props);
|
|
18
|
-
return null;
|
|
19
|
-
},
|
|
20
|
-
update(el, next, prev) {
|
|
21
|
-
const handler = getElementHandler(next.type);
|
|
22
|
-
if (handler)
|
|
23
|
-
handler.setProps(el, prev && prev.props, next.props);
|
|
24
|
-
},
|
|
25
|
-
link(el, parent) {
|
|
26
|
-
parent && parent.add(el)
|
|
27
|
-
},
|
|
28
|
-
destroy(el) {
|
|
29
|
-
if (el.parent)
|
|
30
|
-
el.removeFromParent()
|
|
31
|
-
},
|
|
32
|
-
})
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export const createThreeWebSpace = (tree: CommitTree, root: HTMLElement) => {
|
|
36
|
-
return RenderSpace.combine([
|
|
37
|
-
createWebSpace(tree, root),
|
|
38
|
-
createFinaleSpace(tree),
|
|
39
|
-
]);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export const finale = createFinaleSpace;
|