@treenity/react 3.0.2 → 3.0.3

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.
@@ -0,0 +1,15 @@
1
+ import { type ReactNode } from 'react';
2
+ import './load-client';
3
+ import './root.css';
4
+ export interface TreenityProps {
5
+ /** Override initial path */
6
+ path?: string;
7
+ /** Wrap with custom providers */
8
+ children?: ReactNode;
9
+ }
10
+ /**
11
+ * Treenity as a single React component.
12
+ * Includes all providers, auth, SSE, cache.
13
+ */
14
+ export declare function Treenity({ children }: TreenityProps): import("react/jsx-runtime").JSX.Element;
15
+ //# sourceMappingURL=Treenity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Treenity.d.ts","sourceRoot":"","sources":["../src/Treenity.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,eAAe,CAAA;AAEtB,OAAO,YAAY,CAAA;AAMnB,MAAM,WAAW,aAAa;IAC5B,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iCAAiC;IACjC,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAQnD"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
3
+ import { enablePatches } from 'immer';
4
+ import { App } from './App';
5
+ import './load-client';
6
+ import { Toaster } from './components/ui/sonner';
7
+ import './root.css';
8
+ enablePatches();
9
+ const queryClient = new QueryClient();
10
+ /**
11
+ * Treenity as a single React component.
12
+ * Includes all providers, auth, SSE, cache.
13
+ */
14
+ export function Treenity({ children }) {
15
+ return (_jsxs(QueryClientProvider, { client: queryClient, children: [_jsx(App, {}), _jsx(Toaster, {}), children] }));
16
+ }
17
+ //# sourceMappingURL=Treenity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Treenity.js","sourceRoot":"","sources":["../src/Treenity.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAErC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,eAAe,CAAA;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,YAAY,CAAA;AAEnB,aAAa,EAAE,CAAA;AAEf,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;AASrC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAE,QAAQ,EAAiB;IAClD,OAAO,CACL,MAAC,mBAAmB,IAAC,MAAM,EAAE,WAAW,aACtC,KAAC,GAAG,KAAG,EACP,KAAC,OAAO,KAAG,EACV,QAAQ,IACW,CACvB,CAAA;AACH,CAAC"}
package/dist/main.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  import 'reflect-metadata';
2
2
  import './load-client';
3
3
  import './root.css';
4
+ /** Mount Treenity UI into a DOM element */
5
+ export declare function boot(el?: HTMLElement | string): void;
4
6
  //# sourceMappingURL=main.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.tsx"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAM1B,OAAO,eAAe,CAAC;AAEvB,OAAO,YAAY,CAAC"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.tsx"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAM1B,OAAO,eAAe,CAAC;AAEvB,OAAO,YAAY,CAAC;AAUpB,2CAA2C;AAC3C,wBAAgB,IAAI,CAAC,EAAE,GAAE,WAAW,GAAG,MAAgB,QAWtD"}
package/dist/main.js CHANGED
@@ -11,13 +11,16 @@ enablePatches();
11
11
  const queryClient = new QueryClient();
12
12
  // StrictMode off: FlowGram inversify container breaks on double-mount
13
13
  // https://github.com/bytedance/flowgram.ai/issues/402
14
- // TODO: re-enable once FlowGram fixes React 19 StrictMode support
15
- // const Strict = import.meta.env.VITE_STRICT_MODE !== 'false'
16
- // ? StrictMode
17
- // : ({ children }: { children: ReactNode }) => children;
18
14
  const Strict = ({ children }) => children;
19
- const root = document.getElementById('root');
20
- if (!root)
21
- throw new Error('No #root element');
22
- createRoot(root).render(_jsx(Strict, { children: _jsxs(QueryClientProvider, { client: queryClient, children: [_jsx(App, {}), _jsx(Toaster, {})] }) }));
15
+ /** Mount Treenity UI into a DOM element */
16
+ export function boot(el = '#root') {
17
+ const root = typeof el === 'string' ? document.querySelector(el) : el;
18
+ if (!root)
19
+ throw new Error(`Treenity boot: element "${el}" not found`);
20
+ createRoot(root).render(_jsx(Strict, { children: _jsxs(QueryClientProvider, { client: queryClient, children: [_jsx(App, {}), _jsx(Toaster, {})] }) }));
21
+ }
22
+ // Auto-boot when loaded directly (not imported)
23
+ if (typeof document !== 'undefined' && document.getElementById('root')) {
24
+ boot('#root');
25
+ }
23
26
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.tsx"],"names":[],"mappings":";AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,YAAY,CAAC;AAEpB,aAAa,EAAE,CAAC;AAEhB,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,sEAAsE;AACtE,sDAAsD;AACtD,kEAAkE;AAClE,8DAA8D;AAC9D,iBAAiB;AACjB,2DAA2D;AAC3D,MAAM,MAAM,GAAG,CAAC,EAAE,QAAQ,EAA2B,EAAE,EAAE,CAAC,QAAQ,CAAC;AAEnE,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC7C,IAAI,CAAC,IAAI;IAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAC/C,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CACrB,KAAC,MAAM,cACL,MAAC,mBAAmB,IAAC,MAAM,EAAE,WAAW,aACtC,KAAC,GAAG,KAAG,EACP,KAAC,OAAO,KAAG,IACS,GACf,CACV,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.tsx"],"names":[],"mappings":";AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,YAAY,CAAC;AAEpB,aAAa,EAAE,CAAC;AAEhB,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,sEAAsE;AACtE,sDAAsD;AACtD,MAAM,MAAM,GAAG,CAAC,EAAE,QAAQ,EAA2B,EAAE,EAAE,CAAC,QAAQ,CAAC;AAEnE,2CAA2C;AAC3C,MAAM,UAAU,IAAI,CAAC,KAA2B,OAAO;IACrD,MAAM,IAAI,GAAG,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,EAAE,aAAa,CAAC,CAAC;IACvE,UAAU,CAAC,IAAmB,CAAC,CAAC,MAAM,CACpC,KAAC,MAAM,cACL,MAAC,mBAAmB,IAAC,MAAM,EAAE,WAAW,aACtC,KAAC,GAAG,KAAG,EACP,KAAC,OAAO,KAAG,IACS,GACf,CACV,CAAC;AACJ,CAAC;AAED,gDAAgD;AAChD,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;IACvE,IAAI,CAAC,OAAO,CAAC,CAAC;AAChB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@treenity/react",
3
- "version": "3.0.2",
3
+ "version": "3.0.3",
4
4
  "description": "React binding for Treenity — reactive hooks, admin UI, and context-based component rendering.",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -0,0 +1,32 @@
1
+ import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
2
+ import { enablePatches } from 'immer'
3
+ import { type ReactNode } from 'react'
4
+ import { App } from './App'
5
+ import './load-client'
6
+ import { Toaster } from './components/ui/sonner'
7
+ import './root.css'
8
+
9
+ enablePatches()
10
+
11
+ const queryClient = new QueryClient()
12
+
13
+ export interface TreenityProps {
14
+ /** Override initial path */
15
+ path?: string
16
+ /** Wrap with custom providers */
17
+ children?: ReactNode
18
+ }
19
+
20
+ /**
21
+ * Treenity as a single React component.
22
+ * Includes all providers, auth, SSE, cache.
23
+ */
24
+ export function Treenity({ children }: TreenityProps) {
25
+ return (
26
+ <QueryClientProvider client={queryClient}>
27
+ <App />
28
+ <Toaster />
29
+ {children}
30
+ </QueryClientProvider>
31
+ )
32
+ }
package/src/main.tsx CHANGED
@@ -1,7 +1,7 @@
1
1
  import 'reflect-metadata';
2
2
  import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
3
3
  import { enablePatches } from 'immer';
4
- import { StrictMode, type ReactNode } from 'react';
4
+ import { type ReactNode } from 'react';
5
5
  import { createRoot } from 'react-dom/client';
6
6
  import { App } from './App';
7
7
  import './load-client';
@@ -14,19 +14,23 @@ const queryClient = new QueryClient();
14
14
 
15
15
  // StrictMode off: FlowGram inversify container breaks on double-mount
16
16
  // https://github.com/bytedance/flowgram.ai/issues/402
17
- // TODO: re-enable once FlowGram fixes React 19 StrictMode support
18
- // const Strict = import.meta.env.VITE_STRICT_MODE !== 'false'
19
- // ? StrictMode
20
- // : ({ children }: { children: ReactNode }) => children;
21
17
  const Strict = ({ children }: { children: ReactNode }) => children;
22
18
 
23
- const root = document.getElementById('root');
24
- if (!root) throw new Error('No #root element');
25
- createRoot(root).render(
26
- <Strict>
27
- <QueryClientProvider client={queryClient}>
28
- <App />
29
- <Toaster />
30
- </QueryClientProvider>
31
- </Strict>,
32
- );
19
+ /** Mount Treenity UI into a DOM element */
20
+ export function boot(el: HTMLElement | string = '#root') {
21
+ const root = typeof el === 'string' ? document.querySelector(el) : el;
22
+ if (!root) throw new Error(`Treenity boot: element "${el}" not found`);
23
+ createRoot(root as HTMLElement).render(
24
+ <Strict>
25
+ <QueryClientProvider client={queryClient}>
26
+ <App />
27
+ <Toaster />
28
+ </QueryClientProvider>
29
+ </Strict>,
30
+ );
31
+ }
32
+
33
+ // Auto-boot when loaded directly (not imported)
34
+ if (typeof document !== 'undefined' && document.getElementById('root')) {
35
+ boot('#root');
36
+ }