dynim-react 1.0.35 → 1.0.36

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.
@@ -1 +1 @@
1
- {"version":3,"file":"DynimProvider.d.ts","sourceRoot":"","sources":["../src/DynimProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAc,EAQZ,KAAK,SAAS,EAEf,MAAM,OAAO,CAAC;AAUf,OAAO,KAAK,EAKV,WAAW,EAEZ,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,WAAW;IAC1B,+DAA+D;IAC/D,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,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,CAiYlC;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,iBAAiB,CAM5C"}
1
+ {"version":3,"file":"DynimProvider.d.ts","sourceRoot":"","sources":["../src/DynimProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAc,EAQZ,KAAK,SAAS,EAEf,MAAM,OAAO,CAAC;AAUf,OAAO,KAAK,EAKV,WAAW,EAEZ,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,WAAW;IAC1B,+DAA+D;IAC/D,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,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,CAiWlC;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,iBAAiB,CAM5C"}
@@ -198,74 +198,43 @@ export function DynimProvider({ children, config = {}, }) {
198
198
  useEffect(() => {
199
199
  loadBundleRef.current = loadBundle;
200
200
  }, [loadBundle]);
201
- // Prefetch auth token (only once on mount)
202
- useEffect(() => {
203
- if (configRef.current.getSession) {
204
- getAuthToken();
205
- }
206
- }, [getAuthToken]);
207
- // Fetch theme from API (per project, only once)
208
- useEffect(() => {
201
+ // Theme is fetched lazily when entering builder mode
202
+ // This avoids making HTTP requests on mount that could trigger auth redirects
203
+ const fetchTheme = useCallback(async () => {
209
204
  if (hasAttemptedThemeLoadRef.current)
210
205
  return;
211
206
  if (!configRef.current.getSession)
212
207
  return;
213
208
  hasAttemptedThemeLoadRef.current = true;
214
- const fetchTheme = async () => {
215
- try {
216
- const token = await getAuthToken();
217
- const headers = {};
218
- if (token) {
219
- headers['Authorization'] = `Bearer ${token}`;
220
- }
221
- const response = await fetch('/api/code/theme', {
222
- headers,
223
- credentials: 'include',
224
- });
225
- if (response.ok) {
226
- const data = await response.json();
227
- setTheme(data);
228
- }
209
+ try {
210
+ const token = await getAuthToken();
211
+ const headers = {};
212
+ if (token) {
213
+ headers['Authorization'] = `Bearer ${token}`;
229
214
  }
230
- catch (error) {
231
- // Theme fetch failed - use defaults (non-critical)
232
- console.warn('[DynimProvider] Failed to fetch theme:', error);
215
+ const response = await fetch('/api/code/theme', {
216
+ headers,
217
+ credentials: 'include',
218
+ });
219
+ if (response.ok) {
220
+ const data = await response.json();
221
+ setTheme(data);
233
222
  }
234
- };
235
- fetchTheme();
223
+ }
224
+ catch (error) {
225
+ // Theme fetch failed - use defaults (non-critical)
226
+ console.warn('[DynimProvider] Failed to fetch theme:', error);
227
+ }
236
228
  }, [getAuthToken]);
237
- // Auto-load bundle on mount (only if we can get a valid auth token)
229
+ // Mark initial load complete immediately - no eager HTTP requests
230
+ // Bundle loading happens lazily when user enters builder or when
231
+ // the consuming app explicitly triggers it
238
232
  useEffect(() => {
239
- if (hasAttemptedInitialLoadRef.current)
240
- return;
241
- if (!configRef.current.getSession) {
233
+ if (!hasAttemptedInitialLoadRef.current) {
234
+ hasAttemptedInitialLoadRef.current = true;
242
235
  setIsInitialLoadComplete(true);
243
- return;
244
236
  }
245
- hasAttemptedInitialLoadRef.current = true;
246
- const doInitialLoad = async () => {
247
- // First check if we can get a valid auth token
248
- const token = await getAuthToken();
249
- if (!token) {
250
- // No auth token = user not logged in, skip bundle load
251
- setIsInitialLoadComplete(true);
252
- return;
253
- }
254
- const bundleUrl = '/api/code/bundle';
255
- if (loadBundleRef.current) {
256
- try {
257
- await loadBundleRef.current(bundleUrl);
258
- }
259
- finally {
260
- setIsInitialLoadComplete(true);
261
- }
262
- }
263
- else {
264
- setIsInitialLoadComplete(true);
265
- }
266
- };
267
- doInitialLoad();
268
- }, [getAuthToken]);
237
+ }, []);
269
238
  // Load saved bundle
270
239
  const loadSavedBundle = useCallback(async () => {
271
240
  await loadBundle('/api/code/bundle');
@@ -296,8 +265,10 @@ export function DynimProvider({ children, config = {}, }) {
296
265
  const enterBuilder = useCallback(() => {
297
266
  if (builderRef.current && !builderRef.current.isActive()) {
298
267
  builderRef.current.enter();
268
+ // Fetch theme lazily when entering builder
269
+ fetchTheme();
299
270
  }
300
- }, []);
271
+ }, [fetchTheme]);
301
272
  const exitBuilder = useCallback(() => {
302
273
  if (builderRef.current && builderRef.current.isActive()) {
303
274
  builderRef.current.exit();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dynim-react",
3
- "version": "1.0.35",
3
+ "version": "1.0.36",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",