@koordinates/xstate-tree 5.1.0-next.11 → 5.1.0-next.13

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.
@@ -136,7 +136,9 @@ export declare function buildCreateRoute(history: () => XstateTreeHistory, baseP
136
136
  export declare function buildRootComponent<TMachine extends AnyXstateTreeMachine>(options: {
137
137
  machine: TMachine;
138
138
  } & MarkOptionalLikePropertiesOptional<RootOptions<InputFrom<TMachine>>>): {
139
- (): JSX.Element;
139
+ ({ children, }: {
140
+ children?: React_2.ReactNode;
141
+ }): JSX.Element;
140
142
  rootMachine: TMachine;
141
143
  };
142
144
 
@@ -699,6 +701,7 @@ export declare type View<TActionsOutput, TSelectorsOutput, TSlots extends readon
699
701
  slots: Record<GetSlotNames<TSlots>, React_2.ComponentType>;
700
702
  actions: TActionsOutput;
701
703
  selectors: TSelectorsOutput;
704
+ children?: React_2.ReactNode;
702
705
  }>;
703
706
 
704
707
  /**
package/lib/xstateTree.js CHANGED
@@ -69,7 +69,7 @@ interpreter) {
69
69
  return interpreter.sessionId;
70
70
  }
71
71
  const getViewForInterpreter = (0, fast_memoize_1.default)((interpreter) => {
72
- return react_2.default.memo(function InterpreterView() {
72
+ return react_2.default.memo(function InterpreterView({ children, }) {
73
73
  const activeRouteEvents = (0, providers_1.useActiveRouteEvents)();
74
74
  (0, react_2.useEffect)(() => {
75
75
  if (activeRouteEvents) {
@@ -80,7 +80,7 @@ const getViewForInterpreter = (0, fast_memoize_1.default)((interpreter) => {
80
80
  });
81
81
  }
82
82
  }, []);
83
- return react_2.default.createElement(XstateTreeView, { actor: interpreter });
83
+ return react_2.default.createElement(XstateTreeView, { actor: interpreter }, children);
84
84
  });
85
85
  },
86
86
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -105,7 +105,7 @@ function useSlots(interpreter, slots) {
105
105
  return slots.reduce((views, slot) => {
106
106
  return {
107
107
  ...views,
108
- [slot]: () => {
108
+ [slot]: (({ children: reactChildren }) => {
109
109
  // eslint-disable-next-line react-hooks/rules-of-hooks
110
110
  const [__, children] = (0, useService_1.useService)(interpreter);
111
111
  if (slot.toString().endsWith("Multi")) {
@@ -116,26 +116,25 @@ function useSlots(interpreter, slots) {
116
116
  const interpreterForSlot = children[`${slot.toLowerCase()}-slot`];
117
117
  if (interpreterForSlot) {
118
118
  const View = getViewForInterpreter(interpreterForSlot);
119
- return react_2.default.createElement(View, null);
119
+ return react_2.default.createElement(View, null, reactChildren);
120
120
  }
121
121
  else {
122
122
  // Waiting for the interpreter for this slot to be invoked
123
123
  return null;
124
124
  }
125
125
  }
126
- },
126
+ }),
127
127
  };
128
128
  }, {});
129
129
  });
130
130
  }
131
131
  function XstateTreeMultiSlotView({ childInterpreters, }) {
132
- console.log("XstateTreeMultiSlotView", childInterpreters);
133
132
  return (react_2.default.createElement(react_2.default.Fragment, null, childInterpreters.map((i) => (react_2.default.createElement(XstateTreeView, { key: i.id, actor: i })))));
134
133
  }
135
134
  /**
136
135
  * @internal
137
136
  */
138
- function XstateTreeView({ actor }) {
137
+ function XstateTreeView({ actor, children }) {
139
138
  const [current] = (0, useService_1.useService)(actor);
140
139
  const currentRef = (0, react_2.useRef)(current);
141
140
  currentRef.current = current;
@@ -175,7 +174,7 @@ function XstateTreeView({ actor }) {
175
174
  inState: inState,
176
175
  meta: (0, utils_1.mergeMeta)(current.getMeta()),
177
176
  });
178
- return (react_2.default.createElement(View, { selectors: selectorsRef.current, actions: actions, slots: slots }));
177
+ return (react_2.default.createElement(View, { selectors: selectorsRef.current, actions: actions, slots: slots }, children));
179
178
  }
180
179
  exports.XstateTreeView = XstateTreeView;
181
180
  /**
@@ -211,7 +210,7 @@ function buildRootComponent(options) {
211
210
  if (!machine._xstateTree.View) {
212
211
  throw new Error("Root machine has no associated view");
213
212
  }
214
- const RootComponent = function XstateTreeRootComponent() {
213
+ const RootComponent = function XstateTreeRootComponent({ children, }) {
215
214
  const lastSnapshotsRef = (0, react_2.useRef)({});
216
215
  const [_, __, interpreter] = (0, react_1.useActor)(machine, {
217
216
  input,
@@ -221,6 +220,10 @@ function buildRootComponent(options) {
221
220
  console.log(`[xstate-tree] actor spawned: ${event.actorRef.id}`);
222
221
  break;
223
222
  case "@xstate.event":
223
+ // Ignore internal events
224
+ if (event.event.type.includes("xstate.")) {
225
+ return;
226
+ }
224
227
  console.log(`[xstate-tree] event: ${event.sourceRef ? event.sourceRef.id : "UNKNOWN"} -> ${event.event.type} -> ${event.actorRef.id}`, event.event);
225
228
  break;
226
229
  case "@xstate.snapshot":
@@ -363,10 +366,10 @@ function buildRootComponent(options) {
363
366
  }, [activeRoute]);
364
367
  if (routingProviderValue) {
365
368
  return (react_2.default.createElement(routing_1.RoutingContext.Provider, { value: routingProviderValue },
366
- react_2.default.createElement(XstateTreeView, { actor: interpreter })));
369
+ react_2.default.createElement(XstateTreeView, { actor: interpreter }, children)));
367
370
  }
368
371
  else {
369
- return react_2.default.createElement(XstateTreeView, { actor: interpreter });
372
+ return react_2.default.createElement(XstateTreeView, { actor: interpreter }, children);
370
373
  }
371
374
  };
372
375
  RootComponent.rootMachine = machine;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@koordinates/xstate-tree",
3
3
  "main": "lib/index.js",
4
4
  "types": "lib/xstate-tree.d.ts",
5
- "version": "5.1.0-next.11",
5
+ "version": "5.1.0-next.13",
6
6
  "license": "MIT",
7
7
  "description": "Build UIs with Actors using xstate and React",
8
8
  "keywords": [