@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 +259 -38
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/react/index.cjs +9 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +46 -9
- package/dist/react/index.d.ts +46 -9
- package/dist/react/index.js +9 -1
- package/dist/react/index.js.map +1 -1
- package/dist/server/index.cjs +2 -2
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.d.cts +14 -3
- package/dist/server/index.d.ts +14 -3
- package/dist/server/index.js +2 -2
- package/dist/server/index.js.map +1 -1
- package/dist/types/index.d.cts +3 -3
- package/dist/types/index.d.ts +3 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -29,23 +29,27 @@ export function middleware(request: NextRequest) {
|
|
|
29
29
|
}
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
Add
|
|
32
|
+
Add toolbar and tracking to your layout:
|
|
33
33
|
|
|
34
34
|
```typescript
|
|
35
|
-
import {
|
|
36
|
-
import {
|
|
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
|
|
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
|
-
<
|
|
46
|
-
<
|
|
49
|
+
<PreprToolbarProvider props={toolbarProps}>
|
|
50
|
+
<PreprToolbar />
|
|
47
51
|
{children}
|
|
48
|
-
</
|
|
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
|
+

|
|
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
|
|
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
|
+

|
|
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 {
|
|
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
|
-
|
|
287
|
-
|
|
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
|
|
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
|
-
<
|
|
302
|
-
<PreprPreviewBar />
|
|
422
|
+
<PreviewWrapper>
|
|
303
423
|
{children}
|
|
304
|
-
</
|
|
424
|
+
</PreviewWrapper>
|
|
305
425
|
</body>
|
|
306
426
|
</html>
|
|
307
427
|
)
|
|
308
428
|
}
|
|
309
429
|
```
|
|
310
430
|
|
|
311
|
-
|
|
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
|
-
#### `
|
|
411
|
-
Fetches all necessary props for the
|
|
612
|
+
#### `getToolbarProps()`
|
|
613
|
+
Fetches all necessary props for the toolbar component.
|
|
412
614
|
|
|
413
615
|
```typescript
|
|
414
|
-
import {
|
|
616
|
+
import { getToolbarProps } from '@preprio/prepr-nextjs/server'
|
|
415
617
|
|
|
416
|
-
const props = await
|
|
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
|
-
#### `
|
|
443
|
-
Context provider that wraps your app with
|
|
654
|
+
#### `PreprToolbarProvider`
|
|
655
|
+
Context provider that wraps your app with toolbar functionality.
|
|
444
656
|
|
|
445
657
|
```typescript
|
|
446
|
-
import {
|
|
658
|
+
import { PreprToolbarProvider } from '@preprio/prepr-nextjs/react'
|
|
447
659
|
|
|
448
|
-
<
|
|
660
|
+
<PreprToolbarProvider props={toolbarProps}>
|
|
449
661
|
{children}
|
|
450
|
-
</
|
|
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
|
-
#### `
|
|
454
|
-
|
|
674
|
+
#### `PreprTrackingPixel`
|
|
675
|
+
User tracking component that loads the Prepr tracking script.
|
|
455
676
|
|
|
456
677
|
```typescript
|
|
457
|
-
import {
|
|
678
|
+
import { PreprTrackingPixel } from '@preprio/prepr-nextjs/react'
|
|
458
679
|
|
|
459
|
-
<
|
|
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
|
-
###
|
|
706
|
+
### Toolbar Options
|
|
486
707
|
|
|
487
708
|
```typescript
|
|
488
|
-
<
|
|
489
|
-
props={
|
|
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
|
-
####
|
|
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
|
-
<
|
|
541
|
-
props={
|
|
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
|
-
###
|
|
778
|
+
### Toolbar Features
|
|
558
779
|
|
|
559
|
-
The
|
|
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
|
-
- **
|
|
806
|
+
- **Support**: [Prepr Support](https://prepr.io/support)
|
package/dist/metafile-cjs.json
CHANGED
|
@@ -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}}}
|