@preprio/prepr-nextjs 2.0.0-alpha.10 → 2.0.0-alpha.11

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/README.md CHANGED
@@ -29,23 +29,27 @@ export function middleware(request: NextRequest) {
29
29
  }
30
30
  ```
31
31
 
32
- Add preview bar to your layout:
32
+ Add toolbar and tracking to your layout:
33
33
 
34
34
  ```typescript
35
- import { getPreviewBarProps } from '@preprio/prepr-nextjs/server'
36
- import { PreprPreviewBar, PreprPreviewBarProvider } from '@preprio/prepr-nextjs/react'
35
+ import { getToolbarProps, extractAccessToken } from '@preprio/prepr-nextjs/server'
36
+ import { PreprToolbar, PreprToolbarProvider, PreprTrackingPixel } from '@preprio/prepr-nextjs/react'
37
37
  import '@preprio/prepr-nextjs/index.css'
38
38
 
39
39
  export default async function RootLayout({ children }: { children: React.ReactNode }) {
40
- const previewBarProps = await getPreviewBarProps(process.env.PREPR_GRAPHQL_URL!)
40
+ const toolbarProps = await getToolbarProps(process.env.PREPR_GRAPHQL_URL!)
41
+ const accessToken = extractAccessToken(process.env.PREPR_GRAPHQL_URL!)
41
42
 
42
43
  return (
43
44
  <html>
45
+ <head>
46
+ {accessToken && <PreprTrackingPixel accessToken={accessToken!} />}
47
+ </head>
44
48
  <body>
45
- <PreprPreviewBarProvider props={previewBarProps}>
46
- <PreprPreviewBar />
49
+ <PreprToolbarProvider props={toolbarProps}>
50
+ <PreprToolbar />
47
51
  {children}
48
- </PreprPreviewBarProvider>
52
+ </PreprToolbarProvider>
49
53
  </body>
50
54
  </html>
51
55
  )
@@ -68,12 +72,17 @@ Before installing, ensure you have:
68
72
  2. **Get your GraphQL URL**:
69
73
  - Go to Settings → Access tokens
70
74
  - Find your GraphQL Preview access token
75
+
76
+ ![preview API URL](https://assets-site.prepr.io//35k5a4g45wuy-preview-access-token.png)
77
+
71
78
  - Copy the full GraphQL URL (e.g., `https://graphql.prepr.io/e6f7a0521f11e5149ce65b0e9f372ced2dfc923490890e7f225da1db84cxxxxx`)
72
79
  - The URL format is always `https://graphql.prepr.io/{YOUR_ACCESS_TOKEN}`
73
- 3. **Enable edit mode** (for preview bar):
80
+ 3. **Enable edit mode** (for toolbar):
74
81
  - Open your GraphQL Preview access token
75
82
  - Check "Enable edit mode"
76
83
  - Save the token
84
+
85
+ ![Preview access token](https://assets-site.prepr.io/229kaekn7m96//preview-access-token-enable-edit-mode.png)
77
86
 
78
87
  ## 🔧 Installation & Setup
79
88
 
@@ -278,13 +287,54 @@ export function middleware(request: NextRequest) {
278
287
 
279
288
  #### App Router (Next.js 13+)
280
289
 
290
+ The toolbar should only be rendered in preview environments to avoid showing development tools in production. Here are several approaches for conditional rendering:
291
+
292
+ ##### Basic Conditional Rendering
293
+
281
294
  Update your `app/layout.tsx`:
282
295
 
283
296
  ```typescript
284
- import { getPreviewBarProps } from '@preprio/prepr-nextjs/server'
297
+ import { getToolbarProps } from '@preprio/prepr-nextjs/server'
298
+ import {
299
+ PreprToolbar,
300
+ PreprToolbarProvider
301
+ } from '@preprio/prepr-nextjs/react'
302
+ import '@preprio/prepr-nextjs/index.css'
303
+
304
+ export default async function RootLayout({
305
+ children,
306
+ }: {
307
+ children: React.ReactNode
308
+ }) {
309
+ const isPreview = process.env.PREPR_ENV === 'preview'
310
+ const toolbarProps = isPreview ? await getToolbarProps(process.env.PREPR_GRAPHQL_URL!) : null
311
+
312
+ return (
313
+ <html lang="en">
314
+ <body>
315
+ {isPreview && toolbarProps ? (
316
+ <PreprToolbarProvider props={toolbarProps}>
317
+ <PreprToolbar />
318
+ {children}
319
+ </PreprToolbarProvider>
320
+ ) : (
321
+ children
322
+ )}
323
+ </body>
324
+ </html>
325
+ )
326
+ }
327
+ ```
328
+
329
+ ##### Advanced Conditional Rendering with Error Handling
330
+
331
+ For production applications, you may want more robust error handling:
332
+
333
+ ```typescript
334
+ import { getToolbarProps } from '@preprio/prepr-nextjs/server'
285
335
  import {
286
- PreprPreviewBar,
287
- PreprPreviewBarProvider
336
+ PreprToolbar,
337
+ PreprToolbarProvider
288
338
  } from '@preprio/prepr-nextjs/react'
289
339
  import '@preprio/prepr-nextjs/index.css'
290
340
 
@@ -293,22 +343,174 @@ export default async function RootLayout({
293
343
  }: {
294
344
  children: React.ReactNode
295
345
  }) {
296
- const previewBarProps = await getPreviewBarProps(process.env.PREPR_GRAPHQL_URL!)
346
+ const isPreview = process.env.PREPR_ENV === 'preview'
347
+ const graphqlUrl = process.env.PREPR_GRAPHQL_URL
348
+
349
+ // Only fetch toolbar props in preview mode with valid URL
350
+ let toolbarProps = null
351
+ if (isPreview && graphqlUrl) {
352
+ try {
353
+ toolbarProps = await getToolbarProps(graphqlUrl)
354
+ } catch (error) {
355
+ console.error('Failed to load toolbar:', error)
356
+ // Continue without toolbar instead of breaking the app
357
+ }
358
+ }
359
+
360
+ return (
361
+ <html lang="en">
362
+ <body>
363
+ {isPreview && toolbarProps ? (
364
+ <PreprToolbarProvider props={toolbarProps}>
365
+ <PreprToolbar />
366
+ {children}
367
+ </PreprToolbarProvider>
368
+ ) : (
369
+ children
370
+ )}
371
+ </body>
372
+ </html>
373
+ )
374
+ }
375
+ ```
376
+
377
+ ##### Component-Level Conditional Rendering
378
+
379
+ For better separation of concerns, create a dedicated component:
380
+
381
+ ```typescript
382
+ // components/PreviewWrapper.tsx
383
+ import { getToolbarProps } from '@preprio/prepr-nextjs/server'
384
+ import {
385
+ PreprToolbar,
386
+ PreprToolbarProvider
387
+ } from '@preprio/prepr-nextjs/react'
388
+
389
+ interface PreviewWrapperProps {
390
+ children: React.ReactNode
391
+ }
392
+
393
+ export default async function PreviewWrapper({ children }: PreviewWrapperProps) {
394
+ const isPreview = process.env.PREPR_ENV === 'preview'
395
+
396
+ if (!isPreview) {
397
+ return <>{children}</>
398
+ }
399
+
400
+ const toolbarProps = await getToolbarProps(process.env.PREPR_GRAPHQL_URL!)
401
+
402
+ return (
403
+ <PreprToolbarProvider props={toolbarProps}>
404
+ <PreprToolbar />
405
+ {children}
406
+ </PreprToolbarProvider>
407
+ )
408
+ }
409
+
410
+ // app/layout.tsx
411
+ import PreviewWrapper from '@/components/PreviewWrapper'
412
+ import '@preprio/prepr-nextjs/index.css'
297
413
 
414
+ export default function RootLayout({
415
+ children,
416
+ }: {
417
+ children: React.ReactNode
418
+ }) {
298
419
  return (
299
420
  <html lang="en">
300
421
  <body>
301
- <PreprPreviewBarProvider props={previewBarProps}>
302
- <PreprPreviewBar />
422
+ <PreviewWrapper>
303
423
  {children}
304
- </PreprPreviewBarProvider>
424
+ </PreviewWrapper>
305
425
  </body>
306
426
  </html>
307
427
  )
308
428
  }
309
429
  ```
310
430
 
311
- ### 5. API Integration
431
+ #### Why Conditional Rendering Matters
432
+
433
+ 1. **Performance**: Prevents unnecessary API calls in production
434
+ 2. **Security**: Avoids exposing preview functionality to end users
435
+ 3. **Bundle Size**: Excludes toolbar code from production builds
436
+ 4. **User Experience**: Ensures clean production UI without development tools
437
+
438
+ #### Best Practices for Conditional Rendering
439
+
440
+ - **Environment Variables**: Always use environment variables to control preview mode
441
+ - **Error Boundaries**: Wrap preview components in error boundaries to prevent crashes
442
+ - **Fallback UI**: Always provide a fallback when toolbar fails to load
443
+ - **TypeScript Safety**: Use proper type guards when checking conditions
444
+ - **Bundle Optimization**: Consider dynamic imports for preview-only code
445
+
446
+ ```typescript
447
+ // Dynamic import example for advanced optimization
448
+ const ToolbarDynamic = dynamic(
449
+ () => import('@preprio/prepr-nextjs/react').then(mod => mod.PreprToolbar),
450
+ {
451
+ ssr: false,
452
+ loading: () => <div>Loading preview tools...</div>
453
+ }
454
+ )
455
+ ```
456
+
457
+ ### 5. User Tracking Setup
458
+
459
+ The tracking pixel is essential for collecting user interaction data and enabling personalization features. It should be included in all environments (both preview and production).
460
+
461
+ #### Basic Setup
462
+
463
+ Add the tracking pixel to your layout's `<head>` section:
464
+
465
+ ```typescript
466
+ import { extractAccessToken } from '@preprio/prepr-nextjs/server'
467
+ import { PreprTrackingPixel } from '@preprio/prepr-nextjs/react'
468
+
469
+ export default function RootLayout({ children }: { children: React.ReactNode }) {
470
+ const accessToken = extractAccessToken(process.env.PREPR_GRAPHQL_URL!)
471
+
472
+ return (
473
+ <html>
474
+ <head>
475
+ {accessToken && <PreprTrackingPixel accessToken={accessToken!} />}
476
+ </head>
477
+ <body>{children}</body>
478
+ </html>
479
+ )
480
+ }
481
+ ```
482
+
483
+ #### Alternative: Body Placement
484
+
485
+ You can also place the tracking pixel in the body if needed:
486
+
487
+ ```typescript
488
+ export default function RootLayout({ children }: { children: React.ReactNode }) {
489
+ const accessToken = extractAccessToken(process.env.PREPR_GRAPHQL_URL!)
490
+
491
+ return (
492
+ <html>
493
+ <body>
494
+ {accessToken && <PreprTrackingPixel accessToken={accessToken!} />}
495
+ {children}
496
+ </body>
497
+ </html>
498
+ )
499
+ }
500
+ ```
501
+
502
+ #### Manual Token Extraction
503
+
504
+ If you prefer to extract the token manually:
505
+
506
+ ```typescript
507
+ // Extract token from PREPR_GRAPHQL_URL
508
+ const accessToken = process.env.PREPR_GRAPHQL_URL?.split('/').pop() || ''
509
+
510
+ <PreprTrackingPixel accessToken={accessToken} />
511
+ ```
512
+
513
+ ### 6. API Integration
312
514
 
313
515
  Use the `getPreprHeaders()` helper function in your data fetching to enable personalization and A/B testing:
314
516
 
@@ -407,13 +609,13 @@ const variant = await getActiveVariant()
407
609
  // Returns: 'A' | 'B' | null
408
610
  ```
409
611
 
410
- #### `getPreviewBarProps()`
411
- Fetches all necessary props for the preview bar component.
612
+ #### `getToolbarProps()`
613
+ Fetches all necessary props for the toolbar component.
412
614
 
413
615
  ```typescript
414
- import { getPreviewBarProps } from '@preprio/prepr-nextjs/server'
616
+ import { getToolbarProps } from '@preprio/prepr-nextjs/server'
415
617
 
416
- const props = await getPreviewBarProps(process.env.PREPR_GRAPHQL_URL!)
618
+ const props = await getToolbarProps(process.env.PREPR_GRAPHQL_URL!)
417
619
  // Returns: { activeSegment, activeVariant, data }
418
620
  ```
419
621
 
@@ -437,26 +639,45 @@ const isPreview = isPreviewMode()
437
639
  // Returns: boolean
438
640
  ```
439
641
 
642
+ #### `extractAccessToken()`
643
+ Extracts the access token from a Prepr GraphQL URL.
644
+
645
+ ```typescript
646
+ import { extractAccessToken } from '@preprio/prepr-nextjs/server'
647
+
648
+ const token = extractAccessToken('https://graphql.prepr.io/abc123')
649
+ // Returns: 'abc123' or null
650
+ ```
651
+
440
652
  ### React Components
441
653
 
442
- #### `PreprPreviewBarProvider`
443
- Context provider that wraps your app with preview bar functionality.
654
+ #### `PreprToolbarProvider`
655
+ Context provider that wraps your app with toolbar functionality.
444
656
 
445
657
  ```typescript
446
- import { PreprPreviewBarProvider } from '@preprio/prepr-nextjs/react'
658
+ import { PreprToolbarProvider } from '@preprio/prepr-nextjs/react'
447
659
 
448
- <PreprPreviewBarProvider props={previewBarProps}>
660
+ <PreprToolbarProvider props={toolbarProps}>
449
661
  {children}
450
- </PreprPreviewBarProvider>
662
+ </PreprToolbarProvider>
663
+ ```
664
+
665
+ #### `PreprToolbar`
666
+ The main toolbar component.
667
+
668
+ ```typescript
669
+ import { PreprToolbar } from '@preprio/prepr-nextjs/react'
670
+
671
+ <PreprToolbar />
451
672
  ```
452
673
 
453
- #### `PreprPreviewBar`
454
- The main preview bar component.
674
+ #### `PreprTrackingPixel`
675
+ User tracking component that loads the Prepr tracking script.
455
676
 
456
677
  ```typescript
457
- import { PreprPreviewBar } from '@preprio/prepr-nextjs/react'
678
+ import { PreprTrackingPixel } from '@preprio/prepr-nextjs/react'
458
679
 
459
- <PreprPreviewBar />
680
+ <PreprTrackingPixel accessToken="your-access-token" />
460
681
  ```
461
682
 
462
683
  ## 🔧 Configuration Options
@@ -482,11 +703,11 @@ createPreprMiddleware(request, response, {
482
703
  })
483
704
  ```
484
705
 
485
- ### Preview Bar Options
706
+ ### Toolbar Options
486
707
 
487
708
  ```typescript
488
- <PreprPreviewBarProvider
489
- props={previewBarProps}
709
+ <PreprToolbarProvider
710
+ props={toolbarProps}
490
711
  options={{
491
712
  debug: true // Enable debug logging
492
713
  }}
@@ -497,7 +718,7 @@ createPreprMiddleware(request, response, {
497
718
 
498
719
  ### Common Issues
499
720
 
500
- #### Preview Bar Not Showing
721
+ #### Toolbar Not Showing
501
722
  - **Check environment**: Ensure `PREPR_ENV=preview` is set
502
723
  - **Verify GraphQL URL**: Make sure `PREPR_GRAPHQL_URL` is correct and follows the format `https://graphql.prepr.io/YOUR_ACCESS_TOKEN`
503
724
  - **Check token permissions**: Ensure "Enable edit mode" is checked in Prepr
@@ -537,8 +758,8 @@ try {
537
758
  Enable debug logging in development:
538
759
 
539
760
  ```typescript
540
- <PreprPreviewBarProvider
541
- props={previewBarProps}
761
+ <PreprToolbarProvider
762
+ props={toolbarProps}
542
763
  options={{ debug: true }}
543
764
  >
544
765
  ```
@@ -554,9 +775,9 @@ The middleware automatically:
554
775
  4. **Processes A/B tests**: Manages variant assignments
555
776
  5. **Sets headers**: Adds necessary headers for API calls
556
777
 
557
- ### Preview Bar Features
778
+ ### Toolbar Features
558
779
 
559
- The preview bar provides:
780
+ The toolbar provides:
560
781
  - **Segment selection**: Switch between different audience segments
561
782
  - **A/B testing**: Toggle between variants A and B
562
783
  - **Edit mode**: Visual content editing capabilities
@@ -582,4 +803,4 @@ MIT License - see the [LICENSE](./LICENSE) file for details.
582
803
 
583
804
  - **Documentation**: [Prepr Documentation](https://docs.prepr.io)
584
805
  - **Issues**: [GitHub Issues](https://github.com/preprio/prepr-nextjs/issues)
585
- - **Community**: [Prepr Community](https://community.prepr.io)
806
+ - **Support**: [Prepr Support](https://prepr.io/support)
@@ -1 +1 @@
1
- {"inputs":{"src/utils/errors.ts":{"bytes":1985,"imports":[],"format":"esm"},"src/react/contexts/segment-context.tsx":{"bytes":1601,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"../../types","kind":"import-statement","external":true},{"path":"src/utils/errors.ts","kind":"import-statement","original":"../../utils/errors"}],"format":"esm"},"src/react/contexts/variant-context.tsx":{"bytes":1109,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/utils/errors.ts","kind":"import-statement","original":"../../utils/errors"}],"format":"esm"},"src/react/contexts/edit-mode-context.tsx":{"bytes":1523,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/utils/errors.ts","kind":"import-statement","original":"../../utils/errors"}],"format":"esm"},"src/react/contexts/index.ts":{"bytes":267,"imports":[{"path":"src/react/contexts/segment-context.tsx","kind":"import-statement","original":"./segment-context"},{"path":"src/react/contexts/variant-context.tsx","kind":"import-statement","original":"./variant-context"},{"path":"src/react/contexts/edit-mode-context.tsx","kind":"import-statement","original":"./edit-mode-context"}],"format":"esm"},"src/react/components/error-boundary.tsx":{"bytes":1342,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/utils/debug.ts":{"bytes":2587,"imports":[{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/react/prepr-previewbar-provider.tsx":{"bytes":3245,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"../types","kind":"import-statement","external":true},{"path":"src/react/contexts/index.ts","kind":"import-statement","original":"./contexts"},{"path":"src/react/components/error-boundary.tsx","kind":"import-statement","original":"./components/error-boundary"},{"path":"src/utils/debug.ts","kind":"import-statement","original":"../utils/debug"}],"format":"esm"},"src/utils/dom.ts":{"bytes":4121,"imports":[{"path":"src/utils/errors.ts","kind":"import-statement","original":"./errors"}],"format":"esm"},"src/utils/performance.ts":{"bytes":2443,"imports":[],"format":"esm"},"src/react/hooks/use-stega-overlay.tsx":{"bytes":5294,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/utils/dom.ts","kind":"import-statement","original":"../../utils/dom"},{"path":"src/utils/errors.ts","kind":"import-statement","original":"../../utils/errors"},{"path":"src/utils/debug.ts","kind":"import-statement","original":"../../utils/debug"},{"path":"@vercel/stega","kind":"import-statement","external":true}],"format":"esm"},"src/react/hooks/use-stega-proximity.tsx":{"bytes":3242,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/utils/debug.ts","kind":"import-statement","original":"../../utils/debug"},{"path":"src/utils/performance.ts","kind":"import-statement","original":"../../utils/performance"}],"format":"esm"},"src/react/hooks/use-stega-elements.tsx":{"bytes":4787,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/utils/debug.ts","kind":"import-statement","original":"../../utils/debug"}],"format":"esm"},"src/react/hooks/use-stega-scan.tsx":{"bytes":3960,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/utils/dom.ts","kind":"import-statement","original":"../../utils/dom"},{"path":"src/utils/debug.ts","kind":"import-statement","original":"../../utils/debug"},{"path":"src/utils/performance.ts","kind":"import-statement","original":"../../utils/performance"},{"path":"src/react/hooks/use-stega-overlay.tsx","kind":"import-statement","original":"./use-stega-overlay"},{"path":"src/react/hooks/use-stega-proximity.tsx","kind":"import-statement","original":"./use-stega-proximity"},{"path":"src/react/hooks/use-stega-elements.tsx","kind":"import-statement","original":"./use-stega-elements"}],"format":"esm"},"src/utils/index.ts":{"bytes":1080,"imports":[{"path":"clsx","kind":"import-statement","external":true},{"path":"tailwind-merge","kind":"import-statement","external":true},{"path":"../types","kind":"import-statement","external":true},{"path":"src/utils/errors.ts","kind":"import-statement","original":"./errors"},{"path":"src/utils/dom.ts","kind":"import-statement","original":"./dom"},{"path":"src/utils/debug.ts","kind":"import-statement","original":"./debug"},{"path":"src/utils/performance.ts","kind":"import-statement","original":"./performance"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/react/hooks/use-modal.ts":{"bytes":1586,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/react/components/logo.tsx":{"bytes":4307,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/react/components/icons/sort-down.tsx":{"bytes":649,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/react/components/segment-dropdown.tsx":{"bytes":3041,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"../../types","kind":"import-statement","external":true},{"path":"src/react/contexts/index.ts","kind":"import-statement","original":"../contexts"},{"path":"next/navigation","kind":"import-statement","external":true},{"path":"@headlessui/react","kind":"import-statement","external":true},{"path":"src/react/components/icons/sort-down.tsx","kind":"import-statement","original":"./icons/sort-down"},{"path":"src/utils/index.ts","kind":"import-statement","original":"../../utils"}],"format":"esm"},"src/react/components/radio-selector.tsx":{"bytes":1431,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@headlessui/react","kind":"import-statement","external":true},{"path":"src/utils/index.ts","kind":"import-statement","original":"../../utils"}],"format":"esm"},"src/react/components/variant-selector.tsx":{"bytes":1052,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/react/contexts/index.ts","kind":"import-statement","original":"../contexts"},{"path":"next/navigation","kind":"import-statement","external":true},{"path":"src/react/components/radio-selector.tsx","kind":"import-statement","original":"./radio-selector"}],"format":"esm"},"src/react/components/edit-mode-selector.tsx":{"bytes":577,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/react/contexts/index.ts","kind":"import-statement","original":"../contexts"},{"path":"src/react/components/radio-selector.tsx","kind":"import-statement","original":"./radio-selector"}],"format":"esm"},"src/react/components/icons/rotate.tsx":{"bytes":1662,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/react/components/reset-button.tsx":{"bytes":1607,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"next/navigation","kind":"import-statement","external":true},{"path":"src/utils/index.ts","kind":"import-statement","original":"../../utils"},{"path":"src/react/prepr-previewbar-provider.tsx","kind":"import-statement","original":"../prepr-previewbar-provider"},{"path":"src/react/components/icons/rotate.tsx","kind":"import-statement","original":"./icons/rotate"}],"format":"esm"},"src/react/components/preview-bar/preview-bar-content.tsx":{"bytes":3072,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/react/components/logo.tsx","kind":"import-statement","original":"../logo"},{"path":"src/react/components/segment-dropdown.tsx","kind":"import-statement","original":"../segment-dropdown"},{"path":"src/react/components/variant-selector.tsx","kind":"import-statement","original":"../variant-selector"},{"path":"src/react/components/edit-mode-selector.tsx","kind":"import-statement","original":"../edit-mode-selector"},{"path":"src/react/components/reset-button.tsx","kind":"import-statement","original":"../reset-button"}],"format":"esm"},"src/react/components/icon.tsx":{"bytes":815,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/react/components/preview-bar/preview-bar-button.tsx":{"bytes":537,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/utils/index.ts","kind":"import-statement","original":"../../../utils"},{"path":"src/react/components/icon.tsx","kind":"import-statement","original":"../icon"}],"format":"esm"},"src/react/components/preview-bar/preview-bar.tsx":{"bytes":3194,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"react-dom","kind":"import-statement","external":true},{"path":"src/utils/index.ts","kind":"import-statement","original":"../../../utils"},{"path":"src/react/contexts/index.ts","kind":"import-statement","original":"../../contexts"},{"path":"src/react/hooks/use-modal.ts","kind":"import-statement","original":"../../hooks/use-modal"},{"path":"src/react/components/preview-bar/preview-bar-content.tsx","kind":"import-statement","original":"./preview-bar-content"},{"path":"src/react/components/preview-bar/preview-bar-button.tsx","kind":"import-statement","original":"./preview-bar-button"}],"format":"esm"},"src/react/components/preview-bar/index.ts":{"bytes":171,"imports":[{"path":"src/react/components/preview-bar/preview-bar.tsx","kind":"import-statement","original":"./preview-bar"},{"path":"src/react/components/preview-bar/preview-bar-content.tsx","kind":"import-statement","original":"./preview-bar-content"},{"path":"src/react/components/preview-bar/preview-bar-button.tsx","kind":"import-statement","original":"./preview-bar-button"}],"format":"esm"},"src/react/components/preview-bar-wrapper.tsx":{"bytes":1446,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/react/components/preview-bar/index.ts","kind":"import-statement","original":"./preview-bar"},{"path":"next/navigation","kind":"import-statement","external":true}],"format":"esm"},"src/react/components/icons/xmark.tsx":{"bytes":530,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/react/components/status-indicator-pill.tsx":{"bytes":2366,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/react/prepr-previewbar-provider.tsx","kind":"import-statement","original":"../prepr-previewbar-provider"},{"path":"src/react/components/icons/xmark.tsx","kind":"import-statement","original":"./icons/xmark"},{"path":"next/navigation","kind":"import-statement","external":true}],"format":"esm"},"src/react/components/close-edit-mode-pill.tsx":{"bytes":868,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/react/prepr-previewbar-provider.tsx","kind":"import-statement","original":"../prepr-previewbar-provider"},{"path":"src/react/components/icons/xmark.tsx","kind":"import-statement","original":"./icons/xmark"}],"format":"esm"},"src/react/components/preview-bar-indicator-wrapper.tsx":{"bytes":361,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/react/components/status-indicator-pill.tsx","kind":"import-statement","original":"./status-indicator-pill"},{"path":"src/react/components/close-edit-mode-pill.tsx","kind":"import-statement","original":"./close-edit-mode-pill"}],"format":"esm"},"src/react/components/prepr-preview-bar.tsx":{"bytes":489,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/react/contexts/index.ts","kind":"import-statement","original":"../contexts"},{"path":"src/react/hooks/use-stega-scan.tsx","kind":"import-statement","original":"../hooks/use-stega-scan"},{"path":"src/react/components/preview-bar-wrapper.tsx","kind":"import-statement","original":"./preview-bar-wrapper"},{"path":"src/react/components/preview-bar-indicator-wrapper.tsx","kind":"import-statement","original":"./preview-bar-indicator-wrapper"}],"format":"esm"},"src/react/index.tsx":{"bytes":189,"imports":[{"path":"src/react/prepr-previewbar-provider.tsx","kind":"import-statement","original":"./prepr-previewbar-provider"},{"path":"src/react/components/prepr-preview-bar.tsx","kind":"import-statement","original":"./components/prepr-preview-bar"}],"format":"esm"}},"outputs":{"dist/react/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":104753},"dist/react/index.cjs":{"imports":[{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"@vercel/stega","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react-dom","kind":"require-call","external":true},{"path":"clsx","kind":"require-call","external":true},{"path":"tailwind-merge","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"next/navigation","kind":"require-call","external":true},{"path":"@headlessui/react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"next/navigation","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"@headlessui/react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"next/navigation","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"next/navigation","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"next/navigation","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/react/index.tsx","inputs":{"src/react/index.tsx":{"bytesInOutput":120},"src/react/prepr-previewbar-provider.tsx":{"bytesInOutput":1287},"src/react/contexts/segment-context.tsx":{"bytesInOutput":474},"src/utils/errors.ts":{"bytesInOutput":655},"src/react/contexts/index.ts":{"bytesInOutput":0},"src/react/contexts/variant-context.tsx":{"bytesInOutput":339},"src/react/contexts/edit-mode-context.tsx":{"bytesInOutput":534},"src/react/components/error-boundary.tsx":{"bytesInOutput":747},"src/utils/debug.ts":{"bytesInOutput":599},"src/react/components/prepr-preview-bar.tsx":{"bytesInOutput":195},"src/react/hooks/use-stega-scan.tsx":{"bytesInOutput":1518},"src/utils/dom.ts":{"bytesInOutput":1397},"src/utils/performance.ts":{"bytesInOutput":334},"src/react/hooks/use-stega-overlay.tsx":{"bytesInOutput":2375},"src/react/hooks/use-stega-proximity.tsx":{"bytesInOutput":1038},"src/react/hooks/use-stega-elements.tsx":{"bytesInOutput":2328},"src/react/components/preview-bar-wrapper.tsx":{"bytesInOutput":671},"src/react/components/preview-bar/preview-bar.tsx":{"bytesInOutput":1335},"src/utils/index.ts":{"bytesInOutput":106},"src/react/hooks/use-modal.ts":{"bytesInOutput":673},"src/react/components/preview-bar/preview-bar-content.tsx":{"bytesInOutput":2568},"src/react/components/logo.tsx":{"bytesInOutput":4173},"src/react/components/segment-dropdown.tsx":{"bytesInOutput":1848},"src/react/components/icons/sort-down.tsx":{"bytesInOutput":545},"src/react/components/variant-selector.tsx":{"bytesInOutput":538},"src/react/components/radio-selector.tsx":{"bytesInOutput":785},"src/react/components/edit-mode-selector.tsx":{"bytesInOutput":237},"src/react/components/reset-button.tsx":{"bytesInOutput":872},"src/react/components/icons/rotate.tsx":{"bytesInOutput":1607},"src/react/components/preview-bar/preview-bar-button.tsx":{"bytesInOutput":295},"src/react/components/icon.tsx":{"bytesInOutput":696},"src/react/components/preview-bar/index.ts":{"bytesInOutput":0},"src/react/components/preview-bar-indicator-wrapper.tsx":{"bytesInOutput":218},"src/react/components/status-indicator-pill.tsx":{"bytesInOutput":1323},"src/react/components/icons/xmark.tsx":{"bytesInOutput":428},"src/react/components/close-edit-mode-pill.tsx":{"bytesInOutput":636}},"bytes":34545}}}
1
+ {"inputs":{"src/utils/errors.ts":{"bytes":1985,"imports":[],"format":"esm"},"src/react/contexts/segment-context.tsx":{"bytes":1601,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"../../types","kind":"import-statement","external":true},{"path":"src/utils/errors.ts","kind":"import-statement","original":"../../utils/errors"}],"format":"esm"},"src/react/contexts/variant-context.tsx":{"bytes":1109,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/utils/errors.ts","kind":"import-statement","original":"../../utils/errors"}],"format":"esm"},"src/react/contexts/edit-mode-context.tsx":{"bytes":1523,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/utils/errors.ts","kind":"import-statement","original":"../../utils/errors"}],"format":"esm"},"src/react/contexts/index.ts":{"bytes":267,"imports":[{"path":"src/react/contexts/segment-context.tsx","kind":"import-statement","original":"./segment-context"},{"path":"src/react/contexts/variant-context.tsx","kind":"import-statement","original":"./variant-context"},{"path":"src/react/contexts/edit-mode-context.tsx","kind":"import-statement","original":"./edit-mode-context"}],"format":"esm"},"src/react/components/error-boundary.tsx":{"bytes":1342,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/utils/debug.ts":{"bytes":2587,"imports":[{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/react/components/toolbar/toolbar-provider.tsx":{"bytes":3230,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"../../../types","kind":"import-statement","external":true},{"path":"src/react/contexts/index.ts","kind":"import-statement","original":"../../contexts"},{"path":"src/react/components/error-boundary.tsx","kind":"import-statement","original":"../error-boundary"},{"path":"src/utils/debug.ts","kind":"import-statement","original":"../../../utils/debug"}],"format":"esm"},"src/utils/dom.ts":{"bytes":4121,"imports":[{"path":"src/utils/errors.ts","kind":"import-statement","original":"./errors"}],"format":"esm"},"src/utils/performance.ts":{"bytes":2443,"imports":[],"format":"esm"},"src/react/hooks/use-stega-overlay.tsx":{"bytes":5294,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/utils/dom.ts","kind":"import-statement","original":"../../utils/dom"},{"path":"src/utils/errors.ts","kind":"import-statement","original":"../../utils/errors"},{"path":"src/utils/debug.ts","kind":"import-statement","original":"../../utils/debug"},{"path":"@vercel/stega","kind":"import-statement","external":true}],"format":"esm"},"src/react/hooks/use-stega-proximity.tsx":{"bytes":3242,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/utils/debug.ts","kind":"import-statement","original":"../../utils/debug"},{"path":"src/utils/performance.ts","kind":"import-statement","original":"../../utils/performance"}],"format":"esm"},"src/react/hooks/use-stega-elements.tsx":{"bytes":4787,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/utils/debug.ts","kind":"import-statement","original":"../../utils/debug"}],"format":"esm"},"src/react/hooks/use-stega-scan.tsx":{"bytes":3960,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/utils/dom.ts","kind":"import-statement","original":"../../utils/dom"},{"path":"src/utils/debug.ts","kind":"import-statement","original":"../../utils/debug"},{"path":"src/utils/performance.ts","kind":"import-statement","original":"../../utils/performance"},{"path":"src/react/hooks/use-stega-overlay.tsx","kind":"import-statement","original":"./use-stega-overlay"},{"path":"src/react/hooks/use-stega-proximity.tsx","kind":"import-statement","original":"./use-stega-proximity"},{"path":"src/react/hooks/use-stega-elements.tsx","kind":"import-statement","original":"./use-stega-elements"}],"format":"esm"},"src/utils/index.ts":{"bytes":1080,"imports":[{"path":"clsx","kind":"import-statement","external":true},{"path":"tailwind-merge","kind":"import-statement","external":true},{"path":"../types","kind":"import-statement","external":true},{"path":"src/utils/errors.ts","kind":"import-statement","original":"./errors"},{"path":"src/utils/dom.ts","kind":"import-statement","original":"./dom"},{"path":"src/utils/debug.ts","kind":"import-statement","original":"./debug"},{"path":"src/utils/performance.ts","kind":"import-statement","original":"./performance"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/react/hooks/use-modal.ts":{"bytes":1586,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/react/components/icons/xmark.tsx":{"bytes":530,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/react/components/ui/status-indicator-pill.tsx":{"bytes":2360,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/react/components/toolbar/toolbar-provider.tsx","kind":"import-statement","original":"../toolbar/toolbar-provider"},{"path":"src/react/components/icons/xmark.tsx","kind":"import-statement","original":"../icons/xmark"},{"path":"next/navigation","kind":"import-statement","external":true}],"format":"esm"},"src/react/components/ui/close-edit-mode-pill.tsx":{"bytes":862,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/react/components/toolbar/toolbar-provider.tsx","kind":"import-statement","original":"../toolbar/toolbar-provider"},{"path":"src/react/components/icons/xmark.tsx","kind":"import-statement","original":"../icons/xmark"}],"format":"esm"},"src/react/components/icons/rotate.tsx":{"bytes":1662,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/react/components/ui/reset-button.tsx":{"bytes":1604,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"next/navigation","kind":"import-statement","external":true},{"path":"src/utils/index.ts","kind":"import-statement","original":"../../../utils"},{"path":"src/react/components/toolbar/toolbar-provider.tsx","kind":"import-statement","original":"../toolbar/toolbar-provider"},{"path":"src/react/components/icons/rotate.tsx","kind":"import-statement","original":"../icons/rotate"}],"format":"esm"},"src/react/components/ui/icon.tsx":{"bytes":815,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/react/components/ui/logo.tsx":{"bytes":4307,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/react/components/ui/prepr-tracking-pixel.tsx":{"bytes":1957,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"next/script","kind":"import-statement","external":true}],"format":"esm"},"src/react/components/ui/index.ts":{"bytes":358,"imports":[{"path":"src/react/components/ui/status-indicator-pill.tsx","kind":"import-statement","original":"./status-indicator-pill"},{"path":"src/react/components/ui/close-edit-mode-pill.tsx","kind":"import-statement","original":"./close-edit-mode-pill"},{"path":"src/react/components/ui/reset-button.tsx","kind":"import-statement","original":"./reset-button"},{"path":"src/react/components/ui/icon.tsx","kind":"import-statement","original":"./icon"},{"path":"src/react/components/ui/logo.tsx","kind":"import-statement","original":"./logo"},{"path":"src/react/components/ui/prepr-tracking-pixel.tsx","kind":"import-statement","original":"./prepr-tracking-pixel"}],"format":"esm"},"src/react/components/icons/sort-down.tsx":{"bytes":649,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/react/components/selectors/segment-selector.tsx":{"bytes":3051,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"../../../types","kind":"import-statement","external":true},{"path":"src/react/contexts/index.ts","kind":"import-statement","original":"../../contexts"},{"path":"next/navigation","kind":"import-statement","external":true},{"path":"@headlessui/react","kind":"import-statement","external":true},{"path":"src/react/components/icons/sort-down.tsx","kind":"import-statement","original":"../icons/sort-down"},{"path":"src/utils/index.ts","kind":"import-statement","original":"../../../utils"}],"format":"esm"},"src/react/components/selectors/radio-selector.tsx":{"bytes":1434,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@headlessui/react","kind":"import-statement","external":true},{"path":"src/utils/index.ts","kind":"import-statement","original":"../../../utils"}],"format":"esm"},"src/react/components/selectors/variant-selector.tsx":{"bytes":1055,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/react/contexts/index.ts","kind":"import-statement","original":"../../contexts"},{"path":"next/navigation","kind":"import-statement","external":true},{"path":"src/react/components/selectors/radio-selector.tsx","kind":"import-statement","original":"./radio-selector"}],"format":"esm"},"src/react/components/selectors/edit-mode-selector.tsx":{"bytes":580,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/react/contexts/index.ts","kind":"import-statement","original":"../../contexts"},{"path":"src/react/components/selectors/radio-selector.tsx","kind":"import-statement","original":"./radio-selector"}],"format":"esm"},"src/react/components/selectors/index.ts":{"bytes":259,"imports":[{"path":"src/react/components/selectors/segment-selector.tsx","kind":"import-statement","original":"./segment-selector"},{"path":"src/react/components/selectors/variant-selector.tsx","kind":"import-statement","original":"./variant-selector"},{"path":"src/react/components/selectors/edit-mode-selector.tsx","kind":"import-statement","original":"./edit-mode-selector"},{"path":"src/react/components/selectors/radio-selector.tsx","kind":"import-statement","original":"./radio-selector"}],"format":"esm"},"src/react/components/toolbar/toolbar-content.tsx":{"bytes":2988,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/react/components/ui/index.ts","kind":"import-statement","original":"../ui"},{"path":"src/react/components/selectors/index.ts","kind":"import-statement","original":"../selectors"},{"path":"src/react/components/ui/index.ts","kind":"import-statement","original":"../ui"}],"format":"esm"},"src/react/components/toolbar/toolbar-button.tsx":{"bytes":525,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/utils/index.ts","kind":"import-statement","original":"../../../utils"},{"path":"src/react/components/ui/index.ts","kind":"import-statement","original":"../ui"}],"format":"esm"},"src/react/components/toolbar/toolbar.tsx":{"bytes":3153,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"react-dom","kind":"import-statement","external":true},{"path":"src/utils/index.ts","kind":"import-statement","original":"../../../utils"},{"path":"src/react/contexts/index.ts","kind":"import-statement","original":"../../contexts"},{"path":"src/react/hooks/use-modal.ts","kind":"import-statement","original":"../../hooks/use-modal"},{"path":"src/react/components/toolbar/toolbar-content.tsx","kind":"import-statement","original":"./toolbar-content"},{"path":"src/react/components/toolbar/toolbar-button.tsx","kind":"import-statement","original":"./toolbar-button"}],"format":"esm"},"src/react/components/toolbar/toolbar-wrapper.tsx":{"bytes":1429,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"next/navigation","kind":"import-statement","external":true},{"path":"src/react/components/toolbar/toolbar.tsx","kind":"import-statement","original":"./toolbar"}],"format":"esm"},"src/react/components/toolbar/toolbar-indicator-wrapper.tsx":{"bytes":307,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/react/components/ui/index.ts","kind":"import-statement","original":"../ui"}],"format":"esm"},"src/react/components/toolbar/prepr-toolbar.tsx":{"bytes":472,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/react/contexts/index.ts","kind":"import-statement","original":"../../contexts"},{"path":"src/react/hooks/use-stega-scan.tsx","kind":"import-statement","original":"../../hooks/use-stega-scan"},{"path":"src/react/components/toolbar/toolbar-wrapper.tsx","kind":"import-statement","original":"./toolbar-wrapper"},{"path":"src/react/components/toolbar/toolbar-indicator-wrapper.tsx","kind":"import-statement","original":"./toolbar-indicator-wrapper"}],"format":"esm"},"src/react/index.tsx":{"bytes":280,"imports":[{"path":"src/react/components/toolbar/toolbar-provider.tsx","kind":"import-statement","original":"./components/toolbar/toolbar-provider"},{"path":"src/react/components/toolbar/prepr-toolbar.tsx","kind":"import-statement","original":"./components/toolbar/prepr-toolbar"},{"path":"src/react/components/ui/prepr-tracking-pixel.tsx","kind":"import-statement","original":"./components/ui/prepr-tracking-pixel"}],"format":"esm"}},"outputs":{"dist/react/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":107077},"dist/react/index.cjs":{"imports":[{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"@vercel/stega","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"next/navigation","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react-dom","kind":"require-call","external":true},{"path":"clsx","kind":"require-call","external":true},{"path":"tailwind-merge","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"next/navigation","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"next/navigation","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"next/script","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"next/navigation","kind":"require-call","external":true},{"path":"@headlessui/react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"next/navigation","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"@headlessui/react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/react/index.tsx","inputs":{"src/react/index.tsx":{"bytesInOutput":137},"src/react/components/toolbar/toolbar-provider.tsx":{"bytesInOutput":1287},"src/react/contexts/segment-context.tsx":{"bytesInOutput":474},"src/utils/errors.ts":{"bytesInOutput":655},"src/react/contexts/index.ts":{"bytesInOutput":0},"src/react/contexts/variant-context.tsx":{"bytesInOutput":339},"src/react/contexts/edit-mode-context.tsx":{"bytesInOutput":534},"src/react/components/error-boundary.tsx":{"bytesInOutput":747},"src/utils/debug.ts":{"bytesInOutput":599},"src/react/components/toolbar/prepr-toolbar.tsx":{"bytesInOutput":195},"src/react/hooks/use-stega-scan.tsx":{"bytesInOutput":1518},"src/utils/dom.ts":{"bytesInOutput":1397},"src/utils/performance.ts":{"bytesInOutput":334},"src/react/hooks/use-stega-overlay.tsx":{"bytesInOutput":2375},"src/react/hooks/use-stega-proximity.tsx":{"bytesInOutput":1038},"src/react/hooks/use-stega-elements.tsx":{"bytesInOutput":2328},"src/react/components/toolbar/toolbar-wrapper.tsx":{"bytesInOutput":667},"src/react/components/toolbar/toolbar.tsx":{"bytesInOutput":1335},"src/utils/index.ts":{"bytesInOutput":106},"src/react/hooks/use-modal.ts":{"bytesInOutput":673},"src/react/components/toolbar/toolbar-content.tsx":{"bytesInOutput":2568},"src/react/components/ui/status-indicator-pill.tsx":{"bytesInOutput":1323},"src/react/components/icons/xmark.tsx":{"bytesInOutput":428},"src/react/components/ui/index.ts":{"bytesInOutput":0},"src/react/components/ui/close-edit-mode-pill.tsx":{"bytesInOutput":636},"src/react/components/ui/reset-button.tsx":{"bytesInOutput":872},"src/react/components/icons/rotate.tsx":{"bytesInOutput":1607},"src/react/components/ui/icon.tsx":{"bytesInOutput":696},"src/react/components/ui/logo.tsx":{"bytesInOutput":4173},"src/react/components/ui/prepr-tracking-pixel.tsx":{"bytesInOutput":816},"src/react/components/selectors/segment-selector.tsx":{"bytesInOutput":1848},"src/react/components/icons/sort-down.tsx":{"bytesInOutput":545},"src/react/components/selectors/index.ts":{"bytesInOutput":0},"src/react/components/selectors/variant-selector.tsx":{"bytesInOutput":538},"src/react/components/selectors/radio-selector.tsx":{"bytesInOutput":785},"src/react/components/selectors/edit-mode-selector.tsx":{"bytesInOutput":237},"src/react/components/toolbar/toolbar-button.tsx":{"bytesInOutput":295},"src/react/components/toolbar/toolbar-indicator-wrapper.tsx":{"bytesInOutput":218}},"bytes":35384}}}