@lukekaalim/act-three 6.3.0-alpha.0 → 7.0.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 CHANGED
@@ -1,5 +1,42 @@
1
1
  # @lukekaalim/act-three
2
2
 
3
+ ## 7.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [bcbd299]
8
+ - Updated dependencies [beec21c]
9
+ - @lukekaalim/act-web@5.0.0
10
+ - @lukekaalim/act-backstage@3.1.0
11
+ - @lukekaalim/act-recon@3.1.0
12
+ - @lukekaalim/act@4.1.0
13
+
14
+ ## 7.0.0
15
+
16
+ ### Major Changes
17
+
18
+ - afd247e: Another major refactor! So everything is broken. Good luck!
19
+
20
+ ### Minor Changes
21
+
22
+ - b3f6c49: Added debug capabilities and protocol
23
+
24
+ ### Patch Changes
25
+
26
+ - Updated dependencies [6658c01]
27
+ - Updated dependencies [bd0a076]
28
+ - Updated dependencies [fdf1557]
29
+ - Updated dependencies [7597a8f]
30
+ - Updated dependencies [ccb3900]
31
+ - Updated dependencies [afd247e]
32
+ - Updated dependencies [2984273]
33
+ - Updated dependencies [b3f6c49]
34
+ - Updated dependencies [c5e8775]
35
+ - @lukekaalim/act-backstage@3.0.0
36
+ - @lukekaalim/act-web@4.0.0
37
+ - @lukekaalim/act-recon@3.0.0
38
+ - @lukekaalim/act@4.0.0
39
+
3
40
  ## 6.3.0-alpha.0
4
41
 
5
42
  ### Minor Changes
package/README.md ADDED
@@ -0,0 +1,2 @@
1
+ # @lukekaalim/act-three
2
+
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
@@ -1,5 +1,5 @@
1
1
  export { three } from './deps.ts';
2
- export * from './space.ts';
3
2
  export * from './render.ts';
4
3
  export * from './props.ts';
5
4
  export * from './elements.ts';
5
+ export * from './builder.ts';
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@lukekaalim/act-three",
3
3
  "main": "mod.ts",
4
- "version": "6.3.0-alpha.0",
4
+ "version": "7.0.1",
5
5
  "dependencies": {
6
6
  "@types/three": ">= 0.171.0",
7
- "@lukekaalim/act-web": "^3.4.0-alpha.0",
8
- "@lukekaalim/act": "^3.1.0",
9
- "@lukekaalim/act-recon": "^3.0.0-alpha.0",
10
- "@lukekaalim/act-backstage": "^3.0.0-alpha.0"
7
+ "@lukekaalim/act-web": "^5.0.0",
8
+ "@lukekaalim/act": "^4.1.0",
9
+ "@lukekaalim/act-recon": "^3.1.0",
10
+ "@lukekaalim/act-backstage": "^3.1.0"
11
11
  },
12
12
  "peerDependencies": {
13
13
  "three": ">= 0.171.0"
package/render.ts CHANGED
@@ -1,8 +1,39 @@
1
- import { createRenderFunction } from "@lukekaalim/act-backstage";
2
- import { createDOMScheduler } from '@lukekaalim/act-web';
3
- import { createThreeWebSpace } from "./space";
4
-
5
- export const render = createRenderFunction<HTMLElement>(
6
- createDOMScheduler(),
7
- createThreeWebSpace
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;