dynim-react 1.0.68 → 1.0.71
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/dist/DynimProvider.d.ts.map +1 -1
- package/dist/DynimProvider.js +44 -7
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynimProvider.d.ts","sourceRoot":"","sources":["../src/DynimProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAc,
|
|
1
|
+
{"version":3,"file":"DynimProvider.d.ts","sourceRoot":"","sources":["../src/DynimProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAc,EASZ,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAWf,OAAO,KAAK,EAKV,WAAW,EACX,UAAU,EACV,aAAa,EAGd,MAAM,YAAY,CAAC;AA2FpB,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,kCAAkC;IAClC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC;IACzC,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,qBAAqB;IACrB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,0CAA0C;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,qCAAqC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,yBAAyB;IACzB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,oCAAoC;IACpC,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,6CAA6C;IAC7C,cAAc,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5C,mEAAmE;IACnE,iBAAiB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IACpE,kDAAkD;IAClD,WAAW,EAAE,OAAO,CAAC;IACrB,yDAAyD;IACzD,WAAW,EAAE,WAAW,CAAC;IACzB,2CAA2C;IAC3C,cAAc,EAAE,OAAO,CAAC;IACxB,gCAAgC;IAChC,eAAe,EAAE,OAAO,CAAC;CAC1B;AAID,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,MAAW,GACZ,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAuelC;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,iBAAiB,CAM5C"}
|
package/dist/DynimProvider.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
3
|
* DynimProvider - Single provider for all Dynim functionality
|
|
4
4
|
*
|
|
@@ -7,11 +7,48 @@ import { jsxs as _jsxs, Fragment as _Fragment, jsx as _jsx } from "react/jsx-run
|
|
|
7
7
|
* - Visual builder UI (when user has edit permissions)
|
|
8
8
|
* - Shared context for bundles to access React, packages, etc.
|
|
9
9
|
*/
|
|
10
|
-
import React, { createContext, useContext, useEffect, useRef, useCallback, useMemo, useState, } from 'react';
|
|
10
|
+
import React, { createContext, useContext, useEffect, useRef, useCallback, useMemo, useState, Component, } from 'react';
|
|
11
11
|
import ReactDOM from 'react-dom';
|
|
12
12
|
import { createBuilderClient, createBuilder, createCodeClient, createBundleLoader, createCSSLoader, BundleNotFoundError, BundleAuthError, } from 'dynim-core';
|
|
13
13
|
import { createSharedContext, updateSharedContext, isSharedContextReady } from './inference/sharedContext';
|
|
14
14
|
import { generateThemeCSS } from './theme';
|
|
15
|
+
class BundleErrorBoundary extends Component {
|
|
16
|
+
constructor(props) {
|
|
17
|
+
super(props);
|
|
18
|
+
this.state = { hasError: false, error: null };
|
|
19
|
+
this.lastResetKey = props.resetKey;
|
|
20
|
+
}
|
|
21
|
+
static getDerivedStateFromError(error) {
|
|
22
|
+
return { hasError: true, error };
|
|
23
|
+
}
|
|
24
|
+
componentDidCatch(error, errorInfo) {
|
|
25
|
+
console.warn('[DynimProvider] Bundle render error (will retry on next bundle):', error.message);
|
|
26
|
+
this.props.onError?.(error, errorInfo);
|
|
27
|
+
}
|
|
28
|
+
componentDidUpdate(prevProps) {
|
|
29
|
+
// Reset error state when resetKey changes (new bundle ready)
|
|
30
|
+
if (this.props.resetKey !== this.lastResetKey) {
|
|
31
|
+
this.lastResetKey = this.props.resetKey;
|
|
32
|
+
if (this.state.hasError) {
|
|
33
|
+
this.setState({ hasError: false, error: null });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
render() {
|
|
38
|
+
if (this.state.hasError) {
|
|
39
|
+
return this.props.fallback ?? (_jsxs("div", { style: {
|
|
40
|
+
display: 'flex',
|
|
41
|
+
alignItems: 'center',
|
|
42
|
+
justifyContent: 'center',
|
|
43
|
+
minHeight: '200px',
|
|
44
|
+
color: '#6b7280',
|
|
45
|
+
fontSize: '14px',
|
|
46
|
+
gap: '8px',
|
|
47
|
+
}, children: [_jsx("svg", { style: { width: '16px', height: '16px', animation: 'spin 1s linear infinite' }, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M12 2v4m0 12v4m-8-10h4m12 0h4m-5.66-5.66l-2.83 2.83m-5.02 5.02l-2.83 2.83m0-11.32l2.83 2.83m5.02 5.02l2.83 2.83" }) }), _jsx("span", { children: "Updating preview..." }), _jsx("style", { children: `@keyframes spin { to { transform: rotate(360deg); } }` })] }));
|
|
48
|
+
}
|
|
49
|
+
return this.props.children;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
15
52
|
/** Decode JWT payload to extract claims (no verification - just for reading IDs) */
|
|
16
53
|
function decodeJwtPayload(token) {
|
|
17
54
|
try {
|
|
@@ -378,18 +415,18 @@ export function DynimProvider({ children, config = {}, }) {
|
|
|
378
415
|
const saveCode = useCallback(async () => {
|
|
379
416
|
await codeClientRef.current?.saveCode();
|
|
380
417
|
await loadSavedBundle();
|
|
381
|
-
//
|
|
418
|
+
// Invalidate browser cache and reload fresh CSS
|
|
382
419
|
const cssUrl = buildCSSUrl(false);
|
|
383
420
|
if (cssUrl)
|
|
384
|
-
getCSSLoader().
|
|
421
|
+
await getCSSLoader().invalidateAndReload(cssUrl);
|
|
385
422
|
}, [loadSavedBundle, getCSSLoader, buildCSSUrl]);
|
|
386
423
|
const abandonCode = useCallback(async () => {
|
|
387
424
|
await codeClientRef.current?.abandonCode();
|
|
388
425
|
await loadSavedBundle();
|
|
389
|
-
//
|
|
426
|
+
// Invalidate browser cache and reload saved CSS
|
|
390
427
|
const cssUrl = buildCSSUrl(false);
|
|
391
428
|
if (cssUrl)
|
|
392
|
-
getCSSLoader().
|
|
429
|
+
await getCSSLoader().invalidateAndReload(cssUrl);
|
|
393
430
|
}, [loadSavedBundle, getCSSLoader, buildCSSUrl]);
|
|
394
431
|
const getCheckpoints = useCallback(async () => {
|
|
395
432
|
return codeClientRef.current?.getCheckpoints() ?? [];
|
|
@@ -453,7 +490,7 @@ export function DynimProvider({ children, config = {}, }) {
|
|
|
453
490
|
}, children: ["Bundle error: ", bundleError.message] }), children] }));
|
|
454
491
|
}
|
|
455
492
|
if (TenantApp) {
|
|
456
|
-
return _jsx(TenantApp, {});
|
|
493
|
+
return (_jsx(BundleErrorBoundary, { resetKey: codeMessage.bundleSequence ?? 0, onError: (error) => configRef.current.onError?.(error), children: _jsx(TenantApp, {}) }));
|
|
457
494
|
}
|
|
458
495
|
return children;
|
|
459
496
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dynim-react",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.71",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"dev": "tsc --watch"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"dynim-core": "^1.0.
|
|
30
|
+
"dynim-core": "^1.0.45"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
33
|
"react": ">=17.0.0",
|