@delmaredigital/payload-puck 0.3.0 → 0.4.0
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 +243 -32
- package/dist/admin/EditWithPuckButton.d.ts +1 -1
- package/dist/admin/EditWithPuckButton.d.ts.map +1 -1
- package/dist/admin/EditWithPuckButton.js +2 -2
- package/dist/admin/EditWithPuckButton.js.map +1 -1
- package/dist/admin/EditWithPuckCell.js +1 -1
- package/dist/admin/EditWithPuckCell.js.map +1 -1
- package/dist/admin/PuckEditorView.js +1 -1
- package/dist/admin/PuckEditorView.js.map +1 -1
- package/dist/admin/generateAdminComponents.d.ts +1 -1
- package/dist/admin/generateAdminComponents.js +1 -1
- package/dist/admin/generateAdminComponents.js.map +1 -1
- package/dist/config/merge.d.ts +3 -3
- package/dist/config/merge.js +3 -3
- package/dist/editor/{PuckEditor.client.d.ts → PuckEditor.d.ts} +47 -9
- package/dist/editor/PuckEditor.d.ts.map +1 -0
- package/dist/editor/PuckEditor.js +177 -0
- package/dist/editor/PuckEditor.js.map +1 -0
- package/dist/editor/{PuckEditorCore.client.d.ts → PuckEditorImpl.client.d.ts} +5 -27
- package/dist/editor/{PuckEditorCore.client.d.ts.map → PuckEditorImpl.client.d.ts.map} +1 -1
- package/dist/editor/{PuckEditorCore.client.js → PuckEditorImpl.client.js} +4 -26
- package/dist/editor/PuckEditorImpl.client.js.map +1 -0
- package/dist/editor/components/HeaderActions.d.ts.map +1 -1
- package/dist/editor/components/HeaderActions.js +2 -1
- package/dist/editor/components/HeaderActions.js.map +1 -1
- package/dist/editor/index.d.ts +30 -19
- package/dist/editor/index.d.ts.map +1 -1
- package/dist/editor/index.js +33 -21
- package/dist/editor/index.js.map +1 -1
- package/dist/editor/plugins/index.d.ts +2 -2
- package/dist/editor/plugins/index.js +2 -2
- package/dist/editor/utils/detectPageTree.d.ts +22 -0
- package/dist/editor/utils/detectPageTree.d.ts.map +1 -0
- package/dist/editor/utils/detectPageTree.js +36 -0
- package/dist/editor/utils/detectPageTree.js.map +1 -0
- package/dist/editor/utils/index.d.ts +3 -0
- package/dist/editor/utils/index.d.ts.map +1 -0
- package/dist/editor/utils/index.js +3 -0
- package/dist/editor/utils/index.js.map +1 -0
- package/dist/editor/utils/injectPageTreeFields.d.ts +10 -0
- package/dist/editor/utils/injectPageTreeFields.d.ts.map +1 -0
- package/dist/editor/utils/injectPageTreeFields.js +35 -0
- package/dist/editor/utils/injectPageTreeFields.js.map +1 -0
- package/dist/exports/client.d.ts +7 -6
- package/dist/exports/client.d.ts.map +1 -1
- package/dist/exports/client.js +9 -8
- package/dist/exports/client.js.map +1 -1
- package/dist/plugin/index.js +1 -1
- package/dist/plugin/index.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/dist/views/PuckEditorView.d.ts.map +1 -1
- package/dist/views/PuckEditorView.js +7 -2
- package/dist/views/PuckEditorView.js.map +1 -1
- package/dist/views/index.d.ts +0 -2
- package/dist/views/index.d.ts.map +1 -1
- package/dist/views/index.js +0 -2
- package/dist/views/index.js.map +1 -1
- package/package.json +9 -3
- package/dist/editor/PuckEditor.client.d.ts.map +0 -1
- package/dist/editor/PuckEditor.client.js +0 -42
- package/dist/editor/PuckEditor.client.js.map +0 -1
- package/dist/editor/PuckEditorCore.client.js.map +0 -1
- package/dist/views/PuckEditorClient.d.ts +0 -73
- package/dist/views/PuckEditorClient.d.ts.map +0 -1
- package/dist/views/PuckEditorClient.js +0 -130
- package/dist/views/PuckEditorClient.js.map +0 -1
package/README.md
CHANGED
|
@@ -12,6 +12,7 @@ A PayloadCMS plugin for integrating [Puck](https://puckeditor.com) visual page b
|
|
|
12
12
|
- [Core Concepts](#core-concepts)
|
|
13
13
|
- [Components](#components)
|
|
14
14
|
- [Custom Fields](#custom-fields)
|
|
15
|
+
- [Building Custom Components](#building-custom-components)
|
|
15
16
|
- [Theming](#theming)
|
|
16
17
|
- [Layouts](#layouts)
|
|
17
18
|
- [Page-Tree Integration](#page-tree-integration)
|
|
@@ -71,7 +72,7 @@ This automatically:
|
|
|
71
72
|
|
|
72
73
|
### Step 2: Provide Puck Configuration
|
|
73
74
|
|
|
74
|
-
Wrap your app with `PuckConfigProvider` to supply the Puck configuration. This
|
|
75
|
+
Wrap your app with `PuckConfigProvider` to supply the Puck configuration. This makes the config available to the editor via React context.
|
|
75
76
|
|
|
76
77
|
```typescript
|
|
77
78
|
// app/(app)/layout.tsx (covers both admin and frontend)
|
|
@@ -91,6 +92,10 @@ export default function RootLayout({ children }: { children: React.ReactNode })
|
|
|
91
92
|
}
|
|
92
93
|
```
|
|
93
94
|
|
|
95
|
+
> **Tip:** `PuckConfigProvider` also accepts `layouts` and `theme` props. See [Layouts](#layouts) and [Theming](#theming) sections.
|
|
96
|
+
|
|
97
|
+
> **Note:** For custom editor UIs (outside Payload admin), you can also pass the config directly to `PuckEditor` instead of using the context provider.
|
|
98
|
+
|
|
94
99
|
### Step 3: Create a Frontend Route
|
|
95
100
|
|
|
96
101
|
The plugin can't auto-create frontend routes (Next.js App Router is file-based), but here's copy-paste ready code:
|
|
@@ -172,6 +177,8 @@ export default async function Page({
|
|
|
172
177
|
|
|
173
178
|
### Tailwind Typography (Required)
|
|
174
179
|
|
|
180
|
+
> Required only if using the RichText component.
|
|
181
|
+
|
|
175
182
|
The RichText component uses `@tailwindcss/typography`:
|
|
176
183
|
|
|
177
184
|
```bash
|
|
@@ -194,6 +201,8 @@ module.exports = {
|
|
|
194
201
|
|
|
195
202
|
### Package Scanning (Required)
|
|
196
203
|
|
|
204
|
+
> Required if your project uses Tailwind CSS. Ensures component classes are included in your build.
|
|
205
|
+
|
|
197
206
|
Tell Tailwind to scan the plugin's components:
|
|
198
207
|
|
|
199
208
|
**Tailwind v4:**
|
|
@@ -213,9 +222,11 @@ module.exports = {
|
|
|
213
222
|
}
|
|
214
223
|
```
|
|
215
224
|
|
|
216
|
-
### Theme CSS Variables
|
|
225
|
+
### Theme CSS Variables (Optional)
|
|
217
226
|
|
|
218
|
-
|
|
227
|
+
> Optional - the plugin includes sensible defaults. Define these only to customize colors in rendered content (links, borders, etc).
|
|
228
|
+
|
|
229
|
+
The plugin uses [shadcn/ui](https://ui.shadcn.com)-style CSS variables. If you don't use shadcn/ui and want to customize colors, define these in your CSS:
|
|
219
230
|
|
|
220
231
|
```css
|
|
221
232
|
:root {
|
|
@@ -369,6 +380,191 @@ import {
|
|
|
369
380
|
|
|
370
381
|
---
|
|
371
382
|
|
|
383
|
+
## Building Custom Components
|
|
384
|
+
|
|
385
|
+
The plugin exports individual component configs and field factories for building custom Puck configurations.
|
|
386
|
+
|
|
387
|
+
### Cherry-Picking Components
|
|
388
|
+
|
|
389
|
+
Import only the components you need:
|
|
390
|
+
|
|
391
|
+
```typescript
|
|
392
|
+
import {
|
|
393
|
+
SectionConfig,
|
|
394
|
+
HeadingConfig,
|
|
395
|
+
TextConfig,
|
|
396
|
+
ImageConfig,
|
|
397
|
+
ButtonConfig,
|
|
398
|
+
} from '@delmaredigital/payload-puck/components'
|
|
399
|
+
|
|
400
|
+
export const puckConfig: Config = {
|
|
401
|
+
components: {
|
|
402
|
+
Section: SectionConfig,
|
|
403
|
+
Heading: HeadingConfig,
|
|
404
|
+
Text: TextConfig,
|
|
405
|
+
Image: ImageConfig,
|
|
406
|
+
Button: ButtonConfig,
|
|
407
|
+
},
|
|
408
|
+
categories: {
|
|
409
|
+
layout: { components: ['Section'] },
|
|
410
|
+
content: { components: ['Heading', 'Text', 'Image', 'Button'] },
|
|
411
|
+
},
|
|
412
|
+
}
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
### Using Field Factories
|
|
416
|
+
|
|
417
|
+
Build custom components with pre-built fields:
|
|
418
|
+
|
|
419
|
+
```typescript
|
|
420
|
+
import type { ComponentConfig } from '@measured/puck'
|
|
421
|
+
import {
|
|
422
|
+
createMediaField,
|
|
423
|
+
createBackgroundField,
|
|
424
|
+
createPaddingField,
|
|
425
|
+
backgroundValueToCSS,
|
|
426
|
+
paddingValueToCSS,
|
|
427
|
+
} from '@delmaredigital/payload-puck/fields'
|
|
428
|
+
|
|
429
|
+
export const HeroConfig: ComponentConfig = {
|
|
430
|
+
label: 'Hero',
|
|
431
|
+
fields: {
|
|
432
|
+
image: createMediaField({ label: 'Background Image' }),
|
|
433
|
+
overlay: createBackgroundField({ label: 'Overlay' }),
|
|
434
|
+
padding: createPaddingField({ label: 'Padding' }),
|
|
435
|
+
},
|
|
436
|
+
defaultProps: {
|
|
437
|
+
image: null,
|
|
438
|
+
overlay: null,
|
|
439
|
+
padding: { top: 80, bottom: 80, left: 24, right: 24, unit: 'px', linked: false },
|
|
440
|
+
},
|
|
441
|
+
render: ({ image, overlay, padding }) => (
|
|
442
|
+
<section
|
|
443
|
+
style={{
|
|
444
|
+
background: backgroundValueToCSS(overlay),
|
|
445
|
+
padding: paddingValueToCSS(padding),
|
|
446
|
+
}}
|
|
447
|
+
>
|
|
448
|
+
{/* Hero content */}
|
|
449
|
+
</section>
|
|
450
|
+
),
|
|
451
|
+
}
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
### Server vs Editor Variants
|
|
455
|
+
|
|
456
|
+
For `PageRenderer` (frontend), components need server-safe configs without React hooks:
|
|
457
|
+
|
|
458
|
+
```typescript
|
|
459
|
+
// Import server variants for PageRenderer
|
|
460
|
+
import {
|
|
461
|
+
SectionServerConfig,
|
|
462
|
+
HeadingServerConfig,
|
|
463
|
+
TextServerConfig,
|
|
464
|
+
} from '@delmaredigital/payload-puck/components'
|
|
465
|
+
|
|
466
|
+
<PageRenderer config={{ components: { Section: SectionServerConfig, ... } }} data={page.puckData} />
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
For custom components, create two files:
|
|
470
|
+
- `MyComponent.tsx` - Full editor version with fields and interactivity
|
|
471
|
+
- `MyComponent.server.tsx` - Server-safe version (no hooks, no 'use client')
|
|
472
|
+
|
|
473
|
+
### Extending Built-in Configs
|
|
474
|
+
|
|
475
|
+
Use `extendConfig()` to add custom components:
|
|
476
|
+
|
|
477
|
+
```typescript
|
|
478
|
+
import { extendConfig, fullConfig } from '@delmaredigital/payload-puck/config/editor'
|
|
479
|
+
import { HeroConfig } from './components/Hero'
|
|
480
|
+
|
|
481
|
+
export const puckConfig = extendConfig({
|
|
482
|
+
base: fullConfig,
|
|
483
|
+
components: {
|
|
484
|
+
Hero: HeroConfig,
|
|
485
|
+
},
|
|
486
|
+
categories: {
|
|
487
|
+
custom: { title: 'Custom', components: ['Hero'] },
|
|
488
|
+
},
|
|
489
|
+
})
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
> **Note:** Use `fullConfig` from `/config/editor` for extending the editor. For server-side rendering, use `baseConfig` from `/config`.
|
|
493
|
+
|
|
494
|
+
### Using Custom Config with Provider
|
|
495
|
+
|
|
496
|
+
After creating your custom config, pass it to `PuckConfigProvider`:
|
|
497
|
+
|
|
498
|
+
```typescript
|
|
499
|
+
// components/admin/PuckProvider.tsx
|
|
500
|
+
'use client'
|
|
501
|
+
import { PuckConfigProvider } from '@delmaredigital/payload-puck/client'
|
|
502
|
+
import { puckConfig } from '@/puck/config.editor'
|
|
503
|
+
import { siteLayouts } from '@/lib/puck-layouts'
|
|
504
|
+
|
|
505
|
+
export default function PuckProvider({ children }: { children: React.ReactNode }) {
|
|
506
|
+
return (
|
|
507
|
+
<PuckConfigProvider config={puckConfig} layouts={siteLayouts}>
|
|
508
|
+
{children}
|
|
509
|
+
</PuckConfigProvider>
|
|
510
|
+
)
|
|
511
|
+
}
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
**For Payload admin**, register the provider in your Payload config:
|
|
515
|
+
|
|
516
|
+
```typescript
|
|
517
|
+
// payload.config.ts
|
|
518
|
+
export default buildConfig({
|
|
519
|
+
admin: {
|
|
520
|
+
components: {
|
|
521
|
+
providers: ['@/components/admin/PuckProvider'],
|
|
522
|
+
},
|
|
523
|
+
},
|
|
524
|
+
// ...
|
|
525
|
+
})
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
This is the recommended pattern for Payload apps. The provider wraps only the admin UI, keeping your frontend layout separate.
|
|
529
|
+
|
|
530
|
+
### Available Field Factories
|
|
531
|
+
|
|
532
|
+
| Factory | Description |
|
|
533
|
+
|---------|-------------|
|
|
534
|
+
| `createMediaField()` | Payload media library picker |
|
|
535
|
+
| `createBackgroundField()` | Solid, gradient, or image backgrounds |
|
|
536
|
+
| `createColorPickerField()` | Color picker with opacity |
|
|
537
|
+
| `createPaddingField()` | Visual padding editor |
|
|
538
|
+
| `createMarginField()` | Visual margin editor |
|
|
539
|
+
| `createBorderField()` | Border styling |
|
|
540
|
+
| `createDimensionsField()` | Width/height constraints |
|
|
541
|
+
| `createAnimationField()` | Entrance animations |
|
|
542
|
+
| `createAlignmentField()` | Text alignment |
|
|
543
|
+
| `createTiptapField()` | Inline rich text editor |
|
|
544
|
+
|
|
545
|
+
### CSS Helper Functions
|
|
546
|
+
|
|
547
|
+
Convert field values to CSS:
|
|
548
|
+
|
|
549
|
+
```typescript
|
|
550
|
+
import {
|
|
551
|
+
backgroundValueToCSS,
|
|
552
|
+
paddingValueToCSS,
|
|
553
|
+
marginValueToCSS,
|
|
554
|
+
borderValueToCSS,
|
|
555
|
+
dimensionsValueToCSS,
|
|
556
|
+
colorValueToCSS,
|
|
557
|
+
} from '@delmaredigital/payload-puck/fields'
|
|
558
|
+
|
|
559
|
+
const style = {
|
|
560
|
+
background: backgroundValueToCSS(props.background),
|
|
561
|
+
padding: paddingValueToCSS(props.padding),
|
|
562
|
+
...dimensionsValueToCSS(props.dimensions),
|
|
563
|
+
}
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
---
|
|
567
|
+
|
|
372
568
|
## Theming
|
|
373
569
|
|
|
374
570
|
Customize button styles, color presets, and focus rings:
|
|
@@ -392,6 +588,18 @@ import { ThemeProvider } from '@delmaredigital/payload-puck/theme'
|
|
|
392
588
|
</ThemeProvider>
|
|
393
589
|
```
|
|
394
590
|
|
|
591
|
+
Access theme values in custom components with `useTheme()`:
|
|
592
|
+
|
|
593
|
+
```typescript
|
|
594
|
+
import { useTheme } from '@delmaredigital/payload-puck/theme'
|
|
595
|
+
|
|
596
|
+
function CustomButton({ variant }) {
|
|
597
|
+
const theme = useTheme()
|
|
598
|
+
const classes = theme.buttonVariants[variant]?.classes
|
|
599
|
+
return <button className={classes}>...</button>
|
|
600
|
+
}
|
|
601
|
+
```
|
|
602
|
+
|
|
395
603
|
---
|
|
396
604
|
|
|
397
605
|
## Layouts
|
|
@@ -457,7 +665,7 @@ The plugin checks if your collection has a `pageSegment` field (page-tree's sign
|
|
|
457
665
|
2. **Page Segment** - Edit the page's URL segment
|
|
458
666
|
3. **Slug Preview** - See the computed slug (folder path + segment)
|
|
459
667
|
|
|
460
|
-
### Configuration
|
|
668
|
+
### Plugin Configuration
|
|
461
669
|
|
|
462
670
|
```typescript
|
|
463
671
|
createPuckPlugin({
|
|
@@ -475,6 +683,27 @@ createPuckPlugin({
|
|
|
475
683
|
})
|
|
476
684
|
```
|
|
477
685
|
|
|
686
|
+
### Custom Editor UI
|
|
687
|
+
|
|
688
|
+
For custom editor implementations outside Payload admin, use the `hasPageTree` prop:
|
|
689
|
+
|
|
690
|
+
```typescript
|
|
691
|
+
import { PuckEditor } from '@delmaredigital/payload-puck/client'
|
|
692
|
+
import { editorConfig } from '@delmaredigital/payload-puck/config/editor'
|
|
693
|
+
|
|
694
|
+
<PuckEditor
|
|
695
|
+
config={editorConfig}
|
|
696
|
+
pageId={page.id}
|
|
697
|
+
initialData={page.puckData}
|
|
698
|
+
pageTitle={page.title}
|
|
699
|
+
pageSlug={page.slug}
|
|
700
|
+
apiEndpoint="/api/puck/pages"
|
|
701
|
+
hasPageTree={true}
|
|
702
|
+
folder={page.folder}
|
|
703
|
+
pageSegment={page.pageSegment}
|
|
704
|
+
/>
|
|
705
|
+
```
|
|
706
|
+
|
|
478
707
|
### Performance
|
|
479
708
|
|
|
480
709
|
Detection is instant - it reads the in-memory collection config, no database queries.
|
|
@@ -585,36 +814,17 @@ createPuckPlugin({
|
|
|
585
814
|
|
|
586
815
|
### Custom API Routes (Advanced)
|
|
587
816
|
|
|
588
|
-
|
|
817
|
+
The built-in endpoints handle most use cases. Only disable them if you need custom authentication or middleware.
|
|
589
818
|
|
|
590
|
-
|
|
591
|
-
// payload.config.ts
|
|
592
|
-
createPuckPlugin({
|
|
593
|
-
enableEndpoints: false, // Disable built-in endpoints
|
|
594
|
-
})
|
|
595
|
-
```
|
|
819
|
+
If needed, three route factories are available:
|
|
596
820
|
|
|
597
|
-
|
|
821
|
+
| Factory | Route Pattern | Methods |
|
|
822
|
+
|---------|---------------|---------|
|
|
823
|
+
| `createPuckApiRoutes` | `/api/puck/[collection]` | GET (list), POST (create) |
|
|
824
|
+
| `createPuckApiRoutesWithId` | `/api/puck/[collection]/[id]` | GET, PATCH, DELETE |
|
|
825
|
+
| `createPuckApiRoutesVersions` | `/api/puck/[collection]/[id]/versions` | GET, POST (restore) |
|
|
598
826
|
|
|
599
|
-
|
|
600
|
-
// app/api/puck/[collection]/route.ts
|
|
601
|
-
import { createPuckApiRoutes } from '@delmaredigital/payload-puck/api'
|
|
602
|
-
import { getPayload } from 'payload'
|
|
603
|
-
import config from '@payload-config'
|
|
604
|
-
import { headers } from 'next/headers'
|
|
605
|
-
|
|
606
|
-
export const { GET, POST } = createPuckApiRoutes({
|
|
607
|
-
payloadConfig: config,
|
|
608
|
-
auth: {
|
|
609
|
-
authenticate: async (request) => {
|
|
610
|
-
const payload = await getPayload({ config })
|
|
611
|
-
const { user } = await payload.auth({ headers: await headers() })
|
|
612
|
-
if (!user) return { authenticated: false }
|
|
613
|
-
return { authenticated: true, user: { id: user.id } }
|
|
614
|
-
},
|
|
615
|
-
},
|
|
616
|
-
})
|
|
617
|
-
```
|
|
827
|
+
See the JSDoc in `@delmaredigital/payload-puck/api` for usage examples.
|
|
618
828
|
|
|
619
829
|
---
|
|
620
830
|
|
|
@@ -626,7 +836,8 @@ export const { GET, POST } = createPuckApiRoutes({
|
|
|
626
836
|
| `@delmaredigital/payload-puck/plugin` | `createPuckPlugin` |
|
|
627
837
|
| `@delmaredigital/payload-puck/config` | `baseConfig`, `createConfig()`, `extendConfig()` |
|
|
628
838
|
| `@delmaredigital/payload-puck/config/editor` | `editorConfig` for editing |
|
|
629
|
-
| `@delmaredigital/payload-puck/client` | `
|
|
839
|
+
| `@delmaredigital/payload-puck/client` | `PuckEditor`, `PuckConfigProvider`, page-tree utilities |
|
|
840
|
+
| `@delmaredigital/payload-puck/editor` | `PuckEditor`, `HeaderActions`, editor hooks |
|
|
630
841
|
| `@delmaredigital/payload-puck/rsc` | `PuckEditorView` for Payload admin views |
|
|
631
842
|
| `@delmaredigital/payload-puck/render` | `PageRenderer`, `HybridPageRenderer` |
|
|
632
843
|
| `@delmaredigital/payload-puck/fields` | Custom Puck fields and CSS helpers |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditWithPuckButton.d.ts","sourceRoot":"","sources":["../../src/admin/EditWithPuckButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAGrD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;IACX;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAwBD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,kBAAkB,EAAE,sBA4DhC,CAAA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,EAAE,EACF,cAAwB,EACxB,iBAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"EditWithPuckButton.d.ts","sourceRoot":"","sources":["../../src/admin/EditWithPuckButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAGrD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;IACX;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAwBD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,kBAAkB,EAAE,sBA4DhC,CAAA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,EAAE,EACF,cAAwB,EACxB,iBAAiB,EACjB,KAAuB,EACvB,QAAgB,GACjB,EAAE,uBAAuB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,2CAkC/D;AAED,eAAe,kBAAkB,CAAA"}
|
|
@@ -37,7 +37,7 @@ export const EditWithPuckButton = (props) => {
|
|
|
37
37
|
const { config } = useConfig();
|
|
38
38
|
// Extract custom props passed via field config
|
|
39
39
|
const customProps = props?.field?.custom;
|
|
40
|
-
const label = customProps?.label || '
|
|
40
|
+
const label = customProps?.label || 'Visual Editor';
|
|
41
41
|
const iconOnly = customProps?.iconOnly || false;
|
|
42
42
|
const collection = customProps?.collectionSlug || collectionSlug || 'pages';
|
|
43
43
|
// Get admin route from config
|
|
@@ -87,7 +87,7 @@ export const EditWithPuckButton = (props) => {
|
|
|
87
87
|
* />
|
|
88
88
|
* ```
|
|
89
89
|
*/
|
|
90
|
-
export function EditWithPuckLink({ id, collectionSlug = 'pages', editorPathPattern, label = '
|
|
90
|
+
export function EditWithPuckLink({ id, collectionSlug = 'pages', editorPathPattern, label = 'Visual Editor', iconOnly = false, }) {
|
|
91
91
|
// Build path - prefer admin view by default
|
|
92
92
|
const path = editorPathPattern
|
|
93
93
|
? editorPathPattern.replace('{id}', id).replace('{collection}', collectionSlug)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditWithPuckButton.js","sourceRoot":"","sources":["../../src/admin/EditWithPuckButton.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAGZ,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAiC3D;;GAEG;AACH,SAAS,QAAQ,CAAC,EAAE,IAAI,GAAG,EAAE,EAAqB;IAChD,OAAO,CACL,eACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,aAEtB,eAAM,CAAC,EAAC,4DAA4D,GAAG,EACvE,eAAM,CAAC,EAAC,qDAAqD,GAAG,IAC5D,CACP,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA2B,CAAC,KAAK,EAAE,EAAE;IAClE,+CAA+C;IAC/C,MAAM,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,eAAe,EAAE,CAAA;IAChD,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAA;IAE9B,+CAA+C;IAC/C,MAAM,WAAW,GAAI,KAAa,EAAE,KAAK,EAAE,MAA6C,CAAA;IACxF,MAAM,KAAK,GAAG,WAAW,EAAE,KAAK,IAAI,
|
|
1
|
+
{"version":3,"file":"EditWithPuckButton.js","sourceRoot":"","sources":["../../src/admin/EditWithPuckButton.tsx"],"names":[],"mappings":"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"}
|
|
@@ -60,7 +60,7 @@ export const EditWithPuckCell = ({ rowData, field, collectionSlug: contextCollec
|
|
|
60
60
|
e.currentTarget.style.backgroundColor = '#1d4ed8';
|
|
61
61
|
}, onMouseLeave: (e) => {
|
|
62
62
|
e.currentTarget.style.backgroundColor = '#2563eb';
|
|
63
|
-
}, title: "
|
|
63
|
+
}, title: "Visual Editor", children: [_jsx(PuckIcon, { size: 14 }), _jsx("span", { children: "Visual Editor" })] }));
|
|
64
64
|
};
|
|
65
65
|
export default EditWithPuckCell;
|
|
66
66
|
//# sourceMappingURL=EditWithPuckCell.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditWithPuckCell.js","sourceRoot":"","sources":["../../src/admin/EditWithPuckCell.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAqBZ;;GAEG;AACH,SAAS,QAAQ,CAAC,EAAE,IAAI,GAAG,EAAE,EAAqB;IAChD,OAAO,CACL,eACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,aAEtB,eAAM,CAAC,EAAC,4DAA4D,GAAG,EACvE,eAAM,CAAC,EAAC,qDAAqD,GAAG,IAC5D,CACP,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAwC,CAAC,EACpE,OAAO,EACP,KAAK,EACL,cAAc,EAAE,qBAAqB,GACtC,EAAE,EAAE;IACH,gCAAgC;IAChC,MAAM,EAAE,GAAG,OAAO,EAAE,EAAwB,CAAA;IAE5C,+BAA+B;IAC/B,MAAM,YAAY,GAAI,KAAa,EAAE,MAA4C,CAAA;IACjF,MAAM,cAAc,GAAG,YAAY,EAAE,cAAc,IAAI,qBAAqB,IAAI,OAAO,CAAA;IAEvF,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,IAAI,CAAA;IACb,CAAC;IAED,mBAAmB;IACnB,MAAM,UAAU,GAAG,YAAY,EAAE,iBAAiB;QAChD,CAAC,CAAC,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,cAAc,CAAC;QAChG,CAAC,CAAC,eAAe,cAAc,IAAI,EAAE,OAAO,CAAA;IAE9C,OAAO,CACL,aACE,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EACnC,KAAK,EAAE;YACL,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,QAAQ;YACxB,OAAO,EAAE,UAAU;YACnB,eAAe,EAAE,SAAS;YAC1B,KAAK,EAAE,MAAM;YACb,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,MAAM;YACtB,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,GAAG;YACf,GAAG,EAAE,KAAK;YACV,UAAU,EAAE,uBAAuB;YACnC,UAAU,EAAE,QAAQ;SACrB,EACD,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;YAClB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAA;QACnD,CAAC,EACD,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;YAClB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAA;QACnD,CAAC,EACD,KAAK,EAAC,
|
|
1
|
+
{"version":3,"file":"EditWithPuckCell.js","sourceRoot":"","sources":["../../src/admin/EditWithPuckCell.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAqBZ;;GAEG;AACH,SAAS,QAAQ,CAAC,EAAE,IAAI,GAAG,EAAE,EAAqB;IAChD,OAAO,CACL,eACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,aAEtB,eAAM,CAAC,EAAC,4DAA4D,GAAG,EACvE,eAAM,CAAC,EAAC,qDAAqD,GAAG,IAC5D,CACP,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAwC,CAAC,EACpE,OAAO,EACP,KAAK,EACL,cAAc,EAAE,qBAAqB,GACtC,EAAE,EAAE;IACH,gCAAgC;IAChC,MAAM,EAAE,GAAG,OAAO,EAAE,EAAwB,CAAA;IAE5C,+BAA+B;IAC/B,MAAM,YAAY,GAAI,KAAa,EAAE,MAA4C,CAAA;IACjF,MAAM,cAAc,GAAG,YAAY,EAAE,cAAc,IAAI,qBAAqB,IAAI,OAAO,CAAA;IAEvF,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,IAAI,CAAA;IACb,CAAC;IAED,mBAAmB;IACnB,MAAM,UAAU,GAAG,YAAY,EAAE,iBAAiB;QAChD,CAAC,CAAC,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,cAAc,CAAC;QAChG,CAAC,CAAC,eAAe,cAAc,IAAI,EAAE,OAAO,CAAA;IAE9C,OAAO,CACL,aACE,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EACnC,KAAK,EAAE;YACL,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,QAAQ;YACxB,OAAO,EAAE,UAAU;YACnB,eAAe,EAAE,SAAS;YAC1B,KAAK,EAAE,MAAM;YACb,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,MAAM;YACtB,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,GAAG;YACf,GAAG,EAAE,KAAK;YACV,UAAU,EAAE,uBAAuB;YACnC,UAAU,EAAE,QAAQ;SACrB,EACD,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;YAClB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAA;QACnD,CAAC,EACD,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;YAClB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAA;QACnD,CAAC,EACD,KAAK,EAAC,eAAe,aAErB,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,GAAI,EACtB,2CAA0B,IACxB,CACL,CAAA;AACH,CAAC,CAAA;AAED,eAAe,gBAAgB,CAAA"}
|
|
@@ -40,7 +40,7 @@ export function PuckEditorView({ config, collectionSlug = 'pages', apiBasePath =
|
|
|
40
40
|
const [PuckEditor, setPuckEditor] = useState(null);
|
|
41
41
|
// Dynamically import PuckEditor to avoid SSR issues
|
|
42
42
|
useEffect(() => {
|
|
43
|
-
import('../editor/PuckEditor
|
|
43
|
+
import('../editor/PuckEditor').then((mod) => {
|
|
44
44
|
setPuckEditor(() => mod.PuckEditor);
|
|
45
45
|
});
|
|
46
46
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PuckEditorView.js","sourceRoot":"","sources":["../../src/admin/PuckEditorView.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AA+D5D;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,MAAM,EACN,cAAc,GAAG,OAAO,EACxB,WAAW,GAAG,WAAW,EACzB,OAAO,EACP,UAAU,EACV,YAAY,EACZ,SAAS,GAAG,YAAY,EACxB,OAAO,EACP,aAAa,EACb,WAAW,GACS;IACpB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,YAAY,GAAG,eAAe,EAAE,CAAA;IAEtC,iDAAiD;IACjD,MAAM,MAAM,GAAI,MAAM,EAAE,EAAa,IAAI,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAEtE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAkB,IAAI,CAAC,CAAA;IACvD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC5C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IACvD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAkC,IAAI,CAAC,CAAA;IAEnF,oDAAoD;IACpD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"PuckEditorView.js","sourceRoot":"","sources":["../../src/admin/PuckEditorView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* ```
|
|
22
22
|
*/
|
|
23
23
|
export function generatePuckEditField(config = {}) {
|
|
24
|
-
const { collectionSlug = 'pages', editorPathPattern = '/pages/{id}/edit', buttonLabel = '
|
|
24
|
+
const { collectionSlug = 'pages', editorPathPattern = '/pages/{id}/edit', buttonLabel = 'Visual Editor', buttonPosition = 'sidebar', } = config;
|
|
25
25
|
return {
|
|
26
26
|
name: 'puckEdit',
|
|
27
27
|
type: 'ui',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateAdminComponents.js","sourceRoot":"","sources":["../../src/admin/generateAdminComponents.ts"],"names":[],"mappings":"AA6BA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAgC,EAAE;IACtE,MAAM,EACJ,cAAc,GAAG,OAAO,EACxB,iBAAiB,GAAG,kBAAkB,EACtC,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"generateAdminComponents.js","sourceRoot":"","sources":["../../src/admin/generateAdminComponents.ts"],"names":[],"mappings":"AA6BA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAgC,EAAE;IACtE,MAAM,EACJ,cAAc,GAAG,OAAO,EACxB,iBAAiB,GAAG,kBAAkB,EACtC,WAAW,GAAG,eAAe,EAC7B,cAAc,GAAG,SAAS,GAC3B,GAAG,MAAM,CAAA;IAEV,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,IAAI;QACV,KAAK,EAAE;YACL,QAAQ,EAAE,cAAc;YACxB,UAAU,EAAE;gBACV,KAAK,EAAE,8DAA8D;gBACrE,IAAI,EAAE,4DAA4D;aACnE;YACD,MAAM,EAAE;gBACN,cAAc;gBACd,iBAAiB;gBACjB,KAAK,EAAE,WAAW;aACnB;SACF;KACF,CAAA;AACH,CAAC"}
|
package/dist/config/merge.d.ts
CHANGED
|
@@ -5,10 +5,10 @@ import type { MergeConfigOptions } from '../types';
|
|
|
5
5
|
*
|
|
6
6
|
* @example
|
|
7
7
|
* ```typescript
|
|
8
|
-
* import {
|
|
8
|
+
* import { extendConfig, fullConfig } from '@delmaredigital/payload-puck/config/editor'
|
|
9
9
|
*
|
|
10
|
-
* const
|
|
11
|
-
* base:
|
|
10
|
+
* const puckConfig = extendConfig({
|
|
11
|
+
* base: fullConfig,
|
|
12
12
|
* components: {
|
|
13
13
|
* CustomHero: myHeroConfig,
|
|
14
14
|
* },
|
package/dist/config/merge.js
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @example
|
|
5
5
|
* ```typescript
|
|
6
|
-
* import {
|
|
6
|
+
* import { extendConfig, fullConfig } from '@delmaredigital/payload-puck/config/editor'
|
|
7
7
|
*
|
|
8
|
-
* const
|
|
9
|
-
* base:
|
|
8
|
+
* const puckConfig = extendConfig({
|
|
9
|
+
* base: fullConfig,
|
|
10
10
|
* components: {
|
|
11
11
|
* CustomHero: myHeroConfig,
|
|
12
12
|
* },
|
|
@@ -13,9 +13,10 @@ export interface PuckEditorProps {
|
|
|
13
13
|
*/
|
|
14
14
|
initialData: Data;
|
|
15
15
|
/**
|
|
16
|
-
* Puck configuration with components and settings
|
|
16
|
+
* Puck configuration with components and settings.
|
|
17
|
+
* If not provided, will attempt to read from PuckConfigContext.
|
|
17
18
|
*/
|
|
18
|
-
config
|
|
19
|
+
config?: PuckConfig;
|
|
19
20
|
/**
|
|
20
21
|
* Page title for display
|
|
21
22
|
*/
|
|
@@ -98,15 +99,36 @@ export interface PuckEditorProps {
|
|
|
98
99
|
* When provided, components will use themed styles
|
|
99
100
|
*/
|
|
100
101
|
theme?: ThemeConfig;
|
|
102
|
+
/**
|
|
103
|
+
* Enable page-tree integration (folder picker, page segment, computed slug).
|
|
104
|
+
* When true, injects folder/pageSegment/slug fields into root config.
|
|
105
|
+
* Requires @delmaredigital/payload-page-tree plugin to be installed.
|
|
106
|
+
* @default false
|
|
107
|
+
*/
|
|
108
|
+
hasPageTree?: boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Initial folder ID for page-tree integration.
|
|
111
|
+
* Only used when hasPageTree is true.
|
|
112
|
+
*/
|
|
113
|
+
folder?: string | null;
|
|
114
|
+
/**
|
|
115
|
+
* Initial page segment for page-tree integration.
|
|
116
|
+
* Only used when hasPageTree is true.
|
|
117
|
+
*/
|
|
118
|
+
pageSegment?: string;
|
|
101
119
|
}
|
|
102
120
|
/**
|
|
103
|
-
* Puck Editor
|
|
121
|
+
* Puck Editor - The primary editor component
|
|
104
122
|
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
123
|
+
* A full-featured visual page builder with:
|
|
124
|
+
* - Save draft and publish functionality
|
|
125
|
+
* - Unsaved changes tracking with beforeunload warning
|
|
126
|
+
* - Interactive/Edit mode toggle
|
|
127
|
+
* - Theme-aware preview backgrounds
|
|
128
|
+
* - Responsive viewport switching
|
|
129
|
+
* - Optional page-tree integration (folder-based URL structure)
|
|
108
130
|
*
|
|
109
|
-
* @example
|
|
131
|
+
* @example Basic usage
|
|
110
132
|
* ```tsx
|
|
111
133
|
* 'use client'
|
|
112
134
|
*
|
|
@@ -121,11 +143,27 @@ export interface PuckEditorProps {
|
|
|
121
143
|
* config={editorConfig}
|
|
122
144
|
* pageTitle={page.title}
|
|
123
145
|
* pageSlug={page.slug}
|
|
146
|
+
* apiEndpoint="/api/puck/pages"
|
|
124
147
|
* backUrl="/admin/pages"
|
|
125
148
|
* />
|
|
126
149
|
* )
|
|
127
150
|
* }
|
|
128
151
|
* ```
|
|
152
|
+
*
|
|
153
|
+
* @example With page-tree integration
|
|
154
|
+
* ```tsx
|
|
155
|
+
* <PuckEditor
|
|
156
|
+
* pageId={page.id}
|
|
157
|
+
* initialData={page.puckData}
|
|
158
|
+
* config={editorConfig}
|
|
159
|
+
* pageTitle={page.title}
|
|
160
|
+
* pageSlug={page.slug}
|
|
161
|
+
* apiEndpoint="/api/puck/pages"
|
|
162
|
+
* hasPageTree={true}
|
|
163
|
+
* folder={page.folder}
|
|
164
|
+
* pageSegment={page.pageSegment}
|
|
165
|
+
* />
|
|
166
|
+
* ```
|
|
129
167
|
*/
|
|
130
|
-
export declare function PuckEditor({ pageId, initialData, config, pageTitle, pageSlug, apiEndpoint, backUrl, previewUrl, enableViewports, plugins, layouts, layoutStyles, layoutKey, headerActionsStart, headerActionsEnd, overrides, onSaveSuccess, onSaveError, onChange, initialStatus, theme, }: PuckEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
131
|
-
//# sourceMappingURL=PuckEditor.
|
|
168
|
+
export declare function PuckEditor({ pageId, initialData, config: configProp, pageTitle, pageSlug, apiEndpoint, backUrl, previewUrl, enableViewports, plugins, layouts: layoutsProp, layoutStyles, layoutKey, headerActionsStart, headerActionsEnd, overrides, onSaveSuccess, onSaveError, onChange, initialStatus, theme: themeProp, hasPageTree, folder, pageSegment, }: PuckEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
169
|
+
//# sourceMappingURL=PuckEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PuckEditor.d.ts","sourceRoot":"","sources":["../../src/editor/PuckEditor.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,IAAI,EAAE,MAAM,IAAI,UAAU,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAClH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAgBlD,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,WAAW,EAAE,IAAI,CAAA;IACjB;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,CAAA;IAChD;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;;;OAIG;IACH,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;IAC9B;;;;OAIG;IACH,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC5B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IAC1C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,kBAAkB,CAAC,EAAE,SAAS,CAAA;IAC9B;;OAEG;IACH,gBAAgB,CAAC,EAAE,SAAS,CAAA;IAC5B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IAClC;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IACpC;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IACpC;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC/B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,WAAW,CAAA;IACrC;;;OAGG;IACH,KAAK,CAAC,EAAE,WAAW,CAAA;IAInB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,WAAW,EACX,MAAM,EAAE,UAAU,EAClB,SAAS,EACT,QAAQ,EACR,WAAW,EACX,OAAO,EACP,UAAU,EACV,eAAe,EACf,OAAO,EACP,OAAO,EAAE,WAAW,EACpB,YAAY,EACZ,SAAS,EACT,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACR,aAAa,EACb,KAAK,EAAE,SAAS,EAEhB,WAAmB,EACnB,MAAM,EACN,WAAW,GACZ,EAAE,eAAe,2CAwKjB"}
|