@puckeditor/cli 0.24.0-canary.301a0304
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/LICENSE +21 -0
- package/README.md +45 -0
- package/dist/bin.mjs +7304 -0
- package/dist/docs/api-reference/actions.md +63 -0
- package/dist/docs/api-reference/components/action-bar-action.md +35 -0
- package/dist/docs/api-reference/components/action-bar-group.md +24 -0
- package/dist/docs/api-reference/components/action-bar-label.md +25 -0
- package/dist/docs/api-reference/components/action-bar-separator.md +16 -0
- package/dist/docs/api-reference/components/action-bar.md +32 -0
- package/dist/docs/api-reference/components/auto-field.md +63 -0
- package/dist/docs/api-reference/components/drawer-item.md +75 -0
- package/dist/docs/api-reference/components/drawer.md +29 -0
- package/dist/docs/api-reference/components/drop-zone.md +232 -0
- package/dist/docs/api-reference/components/field-label.md +138 -0
- package/dist/docs/api-reference/components/inline-text-field.md +77 -0
- package/dist/docs/api-reference/components/puck-components.md +19 -0
- package/dist/docs/api-reference/components/puck-fields.md +39 -0
- package/dist/docs/api-reference/components/puck-layout.md +27 -0
- package/dist/docs/api-reference/components/puck-outline.md +19 -0
- package/dist/docs/api-reference/components/puck-preview.md +39 -0
- package/dist/docs/api-reference/components/puck.md +561 -0
- package/dist/docs/api-reference/components/render.md +94 -0
- package/dist/docs/api-reference/components/rich-text-menu-control.md +87 -0
- package/dist/docs/api-reference/components/rich-text-menu-group.md +27 -0
- package/dist/docs/api-reference/components/rich-text-menu.md +99 -0
- package/dist/docs/api-reference/components.md +32 -0
- package/dist/docs/api-reference/configuration/component-config.md +569 -0
- package/dist/docs/api-reference/configuration/config.md +108 -0
- package/dist/docs/api-reference/configuration.md +4 -0
- package/dist/docs/api-reference/data-model/app-state.md +168 -0
- package/dist/docs/api-reference/data-model/component-data.md +62 -0
- package/dist/docs/api-reference/data-model/data.md +95 -0
- package/dist/docs/api-reference/data-model/item-selector.md +34 -0
- package/dist/docs/api-reference/data-model/root-data.md +59 -0
- package/dist/docs/api-reference/data-model.md +8 -0
- package/dist/docs/api-reference/dictionary.md +172 -0
- package/dist/docs/api-reference/field-transforms.md +51 -0
- package/dist/docs/api-reference/fields/array.md +211 -0
- package/dist/docs/api-reference/fields/base.md +96 -0
- package/dist/docs/api-reference/fields/custom.md +193 -0
- package/dist/docs/api-reference/fields/external.md +413 -0
- package/dist/docs/api-reference/fields/number.md +132 -0
- package/dist/docs/api-reference/fields/object.md +78 -0
- package/dist/docs/api-reference/fields/radio.md +82 -0
- package/dist/docs/api-reference/fields/richtext.md +422 -0
- package/dist/docs/api-reference/fields/select.md +79 -0
- package/dist/docs/api-reference/fields/slot.md +302 -0
- package/dist/docs/api-reference/fields/text.md +93 -0
- package/dist/docs/api-reference/fields/textarea.md +93 -0
- package/dist/docs/api-reference/fields.md +16 -0
- package/dist/docs/api-reference/functions/migrate.md +204 -0
- package/dist/docs/api-reference/functions/register-overlay-portal.md +45 -0
- package/dist/docs/api-reference/functions/resolve-all-data.md +27 -0
- package/dist/docs/api-reference/functions/set-deep.md +55 -0
- package/dist/docs/api-reference/functions/transform-props.md +51 -0
- package/dist/docs/api-reference/functions/use-get-puck.md +24 -0
- package/dist/docs/api-reference/functions/use-puck.md +43 -0
- package/dist/docs/api-reference/functions/walk-tree.md +88 -0
- package/dist/docs/api-reference/functions.md +8 -0
- package/dist/docs/api-reference/overrides/action-bar.md +35 -0
- package/dist/docs/api-reference/overrides/component-overlay.md +41 -0
- package/dist/docs/api-reference/overrides/drawer-item.md +24 -0
- package/dist/docs/api-reference/overrides/drawer.md +19 -0
- package/dist/docs/api-reference/overrides/field-label.md +18 -0
- package/dist/docs/api-reference/overrides/field-types.md +51 -0
- package/dist/docs/api-reference/overrides/fields.md +19 -0
- package/dist/docs/api-reference/overrides/header-actions.md +24 -0
- package/dist/docs/api-reference/overrides/header.md +29 -0
- package/dist/docs/api-reference/overrides/iframe.md +32 -0
- package/dist/docs/api-reference/overrides/outline.md +19 -0
- package/dist/docs/api-reference/overrides/preview.md +19 -0
- package/dist/docs/api-reference/overrides/puck.md +19 -0
- package/dist/docs/api-reference/overrides.md +28 -0
- package/dist/docs/api-reference/permissions.md +55 -0
- package/dist/docs/api-reference/plugin.md +112 -0
- package/dist/docs/api-reference/plugins/blocks-plugin.md +57 -0
- package/dist/docs/api-reference/plugins/fields-plugin.md +68 -0
- package/dist/docs/api-reference/plugins/legacy-side-bar-plugin.md +54 -0
- package/dist/docs/api-reference/plugins/outline-plugin.md +57 -0
- package/dist/docs/api-reference/puck-api.md +278 -0
- package/dist/docs/api-reference/theming/action-bar.md +32 -0
- package/dist/docs/api-reference/theming/button.md +65 -0
- package/dist/docs/api-reference/theming/canvas.md +20 -0
- package/dist/docs/api-reference/theming/computed-values.md +194 -0
- package/dist/docs/api-reference/theming/drawer.md +34 -0
- package/dist/docs/api-reference/theming/fields.md +70 -0
- package/dist/docs/api-reference/theming/global.md +127 -0
- package/dist/docs/api-reference/theming/header.md +19 -0
- package/dist/docs/api-reference/theming/icon-button.md +28 -0
- package/dist/docs/api-reference/theming/outline.md +35 -0
- package/dist/docs/api-reference/theming/plugin-bar.md +24 -0
- package/dist/docs/api-reference/theming/sidebar.md +19 -0
- package/dist/docs/api-reference/theming/slot.md +27 -0
- package/dist/docs/cli.md +201 -0
- package/dist/docs/extending-puck/composition.md +54 -0
- package/dist/docs/extending-puck/custom-fields.md +133 -0
- package/dist/docs/extending-puck/field-transforms.md +89 -0
- package/dist/docs/extending-puck/internal-puck-api.md +96 -0
- package/dist/docs/extending-puck/plugins.md +159 -0
- package/dist/docs/extending-puck/theming.md +88 -0
- package/dist/docs/extending-puck/ui-overrides.md +134 -0
- package/dist/docs/getting-started.md +68 -0
- package/dist/docs/guides/migrations/dropzones-to-slots.md +138 -0
- package/dist/docs/index.json +466 -0
- package/dist/docs/index.md +37 -0
- package/dist/docs/integrating-puck/categories.md +92 -0
- package/dist/docs/integrating-puck/component-configuration.md +159 -0
- package/dist/docs/integrating-puck/data-migration.md +86 -0
- package/dist/docs/integrating-puck/dynamic-fields.md +86 -0
- package/dist/docs/integrating-puck/dynamic-props.md +137 -0
- package/dist/docs/integrating-puck/external-data-sources.md +149 -0
- package/dist/docs/integrating-puck/feature-toggling.md +121 -0
- package/dist/docs/integrating-puck/localization.md +228 -0
- package/dist/docs/integrating-puck/multi-column-layouts.md +226 -0
- package/dist/docs/integrating-puck/overlay-portals.md +25 -0
- package/dist/docs/integrating-puck/rich-text-editing.md +230 -0
- package/dist/docs/integrating-puck/root-configuration.md +171 -0
- package/dist/docs/integrating-puck/server-components.md +199 -0
- package/dist/docs/integrating-puck/styling.md +117 -0
- package/dist/docs/integrating-puck/viewports.md +75 -0
- package/dist/templates/astro/README.md +52 -0
- package/dist/templates/astro/_gitignore +24 -0
- package/dist/templates/astro/astro.config.mjs +14 -0
- package/dist/templates/astro/database.json +1 -0
- package/dist/templates/astro/package.json +25 -0
- package/dist/templates/astro/public/favicon.svg +9 -0
- package/dist/templates/astro/src/lib/pages.ts +21 -0
- package/dist/templates/astro/src/lib/resolve-puck-path.ts +19 -0
- package/dist/templates/astro/src/pages/[...puckPath].astro +25 -0
- package/dist/templates/astro/src/pages/api/pages.ts +18 -0
- package/dist/templates/astro/src/puck/editor.tsx +32 -0
- package/dist/templates/astro/src/puck/pages.ts +15 -0
- package/dist/templates/astro/src/puck/render.tsx +9 -0
- package/dist/templates/astro/src/puck.config.tsx +23 -0
- package/dist/templates/astro/tsconfig.json +14 -0
- package/dist/templates/astro-ai/README.md +64 -0
- package/dist/templates/astro-ai/_gitignore +24 -0
- package/dist/templates/astro-ai/astro.config.mjs +21 -0
- package/dist/templates/astro-ai/database.json +1 -0
- package/dist/templates/astro-ai/package.json +27 -0
- package/dist/templates/astro-ai/public/favicon.svg +9 -0
- package/dist/templates/astro-ai/src/lib/pages.ts +21 -0
- package/dist/templates/astro-ai/src/lib/resolve-puck-path.ts +19 -0
- package/dist/templates/astro-ai/src/pages/[...puckPath].astro +25 -0
- package/dist/templates/astro-ai/src/pages/api/pages.ts +18 -0
- package/dist/templates/astro-ai/src/pages/api/puck/[...all].ts +36 -0
- package/dist/templates/astro-ai/src/puck/editor.tsx +53 -0
- package/dist/templates/astro-ai/src/puck/pages.ts +15 -0
- package/dist/templates/astro-ai/src/puck/render.tsx +10 -0
- package/dist/templates/astro-ai/src/puck.config.tsx +23 -0
- package/dist/templates/astro-ai/tsconfig.json +14 -0
- package/dist/templates/express/README.md +66 -0
- package/dist/templates/express/_gitignore +16 -0
- package/dist/templates/express/database.json +1 -0
- package/dist/templates/express/package.json +20 -0
- package/dist/templates/express/src/index.ts +15 -0
- package/dist/templates/express/src/puck/pages.ts +39 -0
- package/dist/templates/express/tsconfig.json +12 -0
- package/dist/templates/express-ai/README.md +81 -0
- package/dist/templates/express-ai/_gitignore +16 -0
- package/dist/templates/express-ai/database.json +1 -0
- package/dist/templates/express-ai/package.json +22 -0
- package/dist/templates/express-ai/src/index.ts +17 -0
- package/dist/templates/express-ai/src/puck/cloud.ts +71 -0
- package/dist/templates/express-ai/src/puck/pages.ts +39 -0
- package/dist/templates/express-ai/tsconfig.json +12 -0
- package/dist/templates/hono/README.md +66 -0
- package/dist/templates/hono/_gitignore +32 -0
- package/dist/templates/hono/database.json +1 -0
- package/dist/templates/hono/package.json +20 -0
- package/dist/templates/hono/src/index.ts +21 -0
- package/dist/templates/hono/src/puck/pages.ts +32 -0
- package/dist/templates/hono/tsconfig.json +13 -0
- package/dist/templates/hono-ai/README.md +81 -0
- package/dist/templates/hono-ai/_gitignore +32 -0
- package/dist/templates/hono-ai/database.json +1 -0
- package/dist/templates/hono-ai/package.json +22 -0
- package/dist/templates/hono-ai/src/index.ts +23 -0
- package/dist/templates/hono-ai/src/puck/cloud.ts +30 -0
- package/dist/templates/hono-ai/src/puck/pages.ts +32 -0
- package/dist/templates/hono-ai/tsconfig.json +13 -0
- package/dist/templates/manifest.json +4 -0
- package/dist/templates/next/README.md +112 -0
- package/dist/templates/next/_gitignore +35 -0
- package/dist/templates/next/app/[...puckPath]/client.tsx +9 -0
- package/dist/templates/next/app/[...puckPath]/page.tsx +49 -0
- package/dist/templates/next/app/favicon.ico +0 -0
- package/dist/templates/next/app/layout.tsx +13 -0
- package/dist/templates/next/app/page.tsx +1 -0
- package/dist/templates/next/app/puck/[...puckPath]/client.tsx +20 -0
- package/dist/templates/next/app/puck/[...puckPath]/page.tsx +55 -0
- package/dist/templates/next/app/puck/api/route.ts +25 -0
- package/dist/templates/next/app/puck/page.tsx +3 -0
- package/dist/templates/next/app/styles.css +3 -0
- package/dist/templates/next/database.json +1 -0
- package/dist/templates/next/lib/get-page.ts +11 -0
- package/dist/templates/next/next.config.js +3 -0
- package/dist/templates/next/package.json +25 -0
- package/dist/templates/next/proxy.ts +27 -0
- package/dist/templates/next/puck.config.tsx +25 -0
- package/dist/templates/next/tsconfig/base.json +20 -0
- package/dist/templates/next/tsconfig/nextjs.json +21 -0
- package/dist/templates/next/tsconfig.json +8 -0
- package/dist/templates/next-ai/README.md +169 -0
- package/dist/templates/next-ai/_gitignore +35 -0
- package/dist/templates/next-ai/app/[...puckPath]/client.tsx +12 -0
- package/dist/templates/next-ai/app/[...puckPath]/page.tsx +49 -0
- package/dist/templates/next-ai/app/api/pages/route.ts +26 -0
- package/dist/templates/next-ai/app/api/puck/[...all]/route.ts +31 -0
- package/dist/templates/next-ai/app/layout.tsx +13 -0
- package/dist/templates/next-ai/app/page.tsx +1 -0
- package/dist/templates/next-ai/app/puck/[...puckPath]/client.tsx +38 -0
- package/dist/templates/next-ai/app/puck/[...puckPath]/page.tsx +57 -0
- package/dist/templates/next-ai/app/puck/page.tsx +3 -0
- package/dist/templates/next-ai/app/styles.css +3 -0
- package/dist/templates/next-ai/database.json +1 -0
- package/dist/templates/next-ai/lib/get-page.ts +11 -0
- package/dist/templates/next-ai/next.config.js +3 -0
- package/dist/templates/next-ai/package.json +27 -0
- package/dist/templates/next-ai/proxy.ts +27 -0
- package/dist/templates/next-ai/public/favicon.ico +0 -0
- package/dist/templates/next-ai/puck.config.tsx +25 -0
- package/dist/templates/next-ai/tsconfig/base.json +20 -0
- package/dist/templates/next-ai/tsconfig/nextjs.json +21 -0
- package/dist/templates/next-ai/tsconfig.json +8 -0
- package/dist/templates/react-router/README.md +113 -0
- package/dist/templates/react-router/_gitignore +6 -0
- package/dist/templates/react-router/app/components/puck-render.tsx +8 -0
- package/dist/templates/react-router/app/lib/pages.server.ts +29 -0
- package/dist/templates/react-router/app/lib/resolve-puck-path.server.ts +19 -0
- package/dist/templates/react-router/app/root.tsx +65 -0
- package/dist/templates/react-router/app/routes/_index.tsx +31 -0
- package/dist/templates/react-router/app/routes/puck-splat.tsx +95 -0
- package/dist/templates/react-router/app/routes.ts +7 -0
- package/dist/templates/react-router/database.json +1 -0
- package/dist/templates/react-router/package.json +33 -0
- package/dist/templates/react-router/public/favicon.ico +0 -0
- package/dist/templates/react-router/puck.config.tsx +23 -0
- package/dist/templates/react-router/react-router.config.ts +7 -0
- package/dist/templates/react-router/tsconfig.json +29 -0
- package/dist/templates/react-router/vite.config.ts +10 -0
- package/dist/templates/react-router-ai/README.md +172 -0
- package/dist/templates/react-router-ai/_gitignore +6 -0
- package/dist/templates/react-router-ai/app/components/puck-render.tsx +11 -0
- package/dist/templates/react-router-ai/app/lib/pages.server.ts +29 -0
- package/dist/templates/react-router-ai/app/lib/resolve-puck-path.server.ts +19 -0
- package/dist/templates/react-router-ai/app/root.tsx +65 -0
- package/dist/templates/react-router-ai/app/routes/_index.tsx +31 -0
- package/dist/templates/react-router-ai/app/routes/api.puck.ts +34 -0
- package/dist/templates/react-router-ai/app/routes/puck-splat.tsx +119 -0
- package/dist/templates/react-router-ai/app/routes.ts +8 -0
- package/dist/templates/react-router-ai/database.json +1 -0
- package/dist/templates/react-router-ai/package.json +35 -0
- package/dist/templates/react-router-ai/public/favicon.ico +0 -0
- package/dist/templates/react-router-ai/puck.config.tsx +25 -0
- package/dist/templates/react-router-ai/react-router.config.ts +7 -0
- package/dist/templates/react-router-ai/tsconfig.json +29 -0
- package/dist/templates/react-router-ai/vite.config.ts +10 -0
- package/dist/templates/tanstack-start/README.md +113 -0
- package/dist/templates/tanstack-start/_gitignore +12 -0
- package/dist/templates/tanstack-start/database.json +1 -0
- package/dist/templates/tanstack-start/package.json +26 -0
- package/dist/templates/tanstack-start/puck.config.tsx +23 -0
- package/dist/templates/tanstack-start/src/components/puck-render.tsx +8 -0
- package/dist/templates/tanstack-start/src/lib/pages.server.ts +26 -0
- package/dist/templates/tanstack-start/src/lib/pages.ts +39 -0
- package/dist/templates/tanstack-start/src/lib/resolve-puck-path.ts +19 -0
- package/dist/templates/tanstack-start/src/routeTree.gen.ts +86 -0
- package/dist/templates/tanstack-start/src/router.tsx +19 -0
- package/dist/templates/tanstack-start/src/routes/$.tsx +41 -0
- package/dist/templates/tanstack-start/src/routes/__root.tsx +42 -0
- package/dist/templates/tanstack-start/src/routes/index.tsx +18 -0
- package/dist/templates/tanstack-start/src/styles.css +13 -0
- package/dist/templates/tanstack-start/tsconfig.json +24 -0
- package/dist/templates/tanstack-start/vite.config.ts +15 -0
- package/dist/templates/tanstack-start-ai/README.md +171 -0
- package/dist/templates/tanstack-start-ai/_gitignore +12 -0
- package/dist/templates/tanstack-start-ai/database.json +1 -0
- package/dist/templates/tanstack-start-ai/package.json +28 -0
- package/dist/templates/tanstack-start-ai/puck.config.tsx +23 -0
- package/dist/templates/tanstack-start-ai/src/components/puck-render.tsx +11 -0
- package/dist/templates/tanstack-start-ai/src/lib/pages.server.ts +26 -0
- package/dist/templates/tanstack-start-ai/src/lib/pages.ts +39 -0
- package/dist/templates/tanstack-start-ai/src/lib/resolve-puck-path.ts +19 -0
- package/dist/templates/tanstack-start-ai/src/routeTree.gen.ts +104 -0
- package/dist/templates/tanstack-start-ai/src/router.tsx +19 -0
- package/dist/templates/tanstack-start-ai/src/routes/$.tsx +73 -0
- package/dist/templates/tanstack-start-ai/src/routes/__root.tsx +42 -0
- package/dist/templates/tanstack-start-ai/src/routes/api/puck/$.ts +39 -0
- package/dist/templates/tanstack-start-ai/src/routes/index.tsx +18 -0
- package/dist/templates/tanstack-start-ai/src/styles.css +13 -0
- package/dist/templates/tanstack-start-ai/tsconfig.json +24 -0
- package/dist/templates/tanstack-start-ai/vite.config.ts +15 -0
- package/dist/templates/vinext/README.md +112 -0
- package/dist/templates/vinext/_gitignore +33 -0
- package/dist/templates/vinext/app/[...puckPath]/client.tsx +9 -0
- package/dist/templates/vinext/app/[...puckPath]/page.tsx +49 -0
- package/dist/templates/vinext/app/favicon.ico +0 -0
- package/dist/templates/vinext/app/layout.tsx +13 -0
- package/dist/templates/vinext/app/page.tsx +1 -0
- package/dist/templates/vinext/app/puck/[...puckPath]/client.tsx +20 -0
- package/dist/templates/vinext/app/puck/[...puckPath]/page.tsx +55 -0
- package/dist/templates/vinext/app/puck/api/route.ts +25 -0
- package/dist/templates/vinext/app/puck/page.tsx +3 -0
- package/dist/templates/vinext/app/styles.css +3 -0
- package/dist/templates/vinext/database.json +1 -0
- package/dist/templates/vinext/lib/get-page.ts +11 -0
- package/dist/templates/vinext/package.json +30 -0
- package/dist/templates/vinext/proxy.ts +27 -0
- package/dist/templates/vinext/puck.config.tsx +25 -0
- package/dist/templates/vinext/tsconfig.json +30 -0
- package/dist/templates/vinext/vite.config.ts +6 -0
- package/dist/templates/vinext-ai/README.md +169 -0
- package/dist/templates/vinext-ai/_gitignore +33 -0
- package/dist/templates/vinext-ai/app/[...puckPath]/client.tsx +12 -0
- package/dist/templates/vinext-ai/app/[...puckPath]/page.tsx +49 -0
- package/dist/templates/vinext-ai/app/api/pages/route.ts +26 -0
- package/dist/templates/vinext-ai/app/api/puck/[...all]/route.ts +31 -0
- package/dist/templates/vinext-ai/app/layout.tsx +13 -0
- package/dist/templates/vinext-ai/app/page.tsx +1 -0
- package/dist/templates/vinext-ai/app/puck/[...puckPath]/client.tsx +38 -0
- package/dist/templates/vinext-ai/app/puck/[...puckPath]/page.tsx +57 -0
- package/dist/templates/vinext-ai/app/puck/page.tsx +3 -0
- package/dist/templates/vinext-ai/app/styles.css +3 -0
- package/dist/templates/vinext-ai/database.json +1 -0
- package/dist/templates/vinext-ai/lib/get-page.ts +11 -0
- package/dist/templates/vinext-ai/package.json +32 -0
- package/dist/templates/vinext-ai/proxy.ts +27 -0
- package/dist/templates/vinext-ai/public/favicon.ico +0 -0
- package/dist/templates/vinext-ai/puck.config.tsx +25 -0
- package/dist/templates/vinext-ai/tsconfig.json +30 -0
- package/dist/templates/vinext-ai/vite.config.ts +9 -0
- package/dist/templates/vite/README.md +56 -0
- package/dist/templates/vite/_gitignore +24 -0
- package/dist/templates/vite/database.json +1 -0
- package/dist/templates/vite/index.html +12 -0
- package/dist/templates/vite/package.json +29 -0
- package/dist/templates/vite/server/index.ts +13 -0
- package/dist/templates/vite/server/prod.ts +18 -0
- package/dist/templates/vite/server/puck/pages.ts +32 -0
- package/dist/templates/vite/src/App.tsx +11 -0
- package/dist/templates/vite/src/main.tsx +12 -0
- package/dist/templates/vite/src/puck/editor.tsx +28 -0
- package/dist/templates/vite/src/puck/page.tsx +27 -0
- package/dist/templates/vite/src/puck/pages.ts +15 -0
- package/dist/templates/vite/src/puck/root.tsx +27 -0
- package/dist/templates/vite/src/puck.config.tsx +23 -0
- package/dist/templates/vite/tsconfig.app.json +26 -0
- package/dist/templates/vite/tsconfig.json +7 -0
- package/dist/templates/vite/tsconfig.node.json +23 -0
- package/dist/templates/vite/vite.config.ts +14 -0
- package/dist/templates/vite-ai/README.md +67 -0
- package/dist/templates/vite-ai/_gitignore +24 -0
- package/dist/templates/vite-ai/database.json +1 -0
- package/dist/templates/vite-ai/index.html +12 -0
- package/dist/templates/vite-ai/package.json +31 -0
- package/dist/templates/vite-ai/server/index.ts +15 -0
- package/dist/templates/vite-ai/server/prod.ts +18 -0
- package/dist/templates/vite-ai/server/puck/cloud.ts +30 -0
- package/dist/templates/vite-ai/server/puck/pages.ts +32 -0
- package/dist/templates/vite-ai/src/App.tsx +11 -0
- package/dist/templates/vite-ai/src/main.tsx +12 -0
- package/dist/templates/vite-ai/src/puck/editor.tsx +49 -0
- package/dist/templates/vite-ai/src/puck/page.tsx +28 -0
- package/dist/templates/vite-ai/src/puck/pages.ts +15 -0
- package/dist/templates/vite-ai/src/puck/root.tsx +27 -0
- package/dist/templates/vite-ai/src/puck.config.tsx +23 -0
- package/dist/templates/vite-ai/tsconfig.app.json +26 -0
- package/dist/templates/vite-ai/tsconfig.json +7 -0
- package/dist/templates/vite-ai/tsconfig.node.json +23 -0
- package/dist/templates/vite-ai/vite.config.ts +14 -0
- package/package.json +51 -0
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
# Slot
|
|
2
|
+
|
|
3
|
+
Define a drag-and-drop area containing nested components. Extends [Base](/docs/api-reference/fields/base).
|
|
4
|
+
|
|
5
|
+
- This field produces an array of [ComponentData](/docs/api-reference/data-model/component-data)
|
|
6
|
+
- The array is transformed to a [render function](#render-function) before being provided to `render()`
|
|
7
|
+
|
|
8
|
+
This field does render any UI in the form section.
|
|
9
|
+
|
|
10
|
+
```tsx
|
|
11
|
+
const config = {
|
|
12
|
+
components: {
|
|
13
|
+
Example: {
|
|
14
|
+
fields: {
|
|
15
|
+
content: {
|
|
16
|
+
type: "slot",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
render: ({ content: Content }) => {
|
|
20
|
+
return <Content />;
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
Card: {
|
|
24
|
+
render: () => <div>Hello, world</div>,
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## TypeScript
|
|
31
|
+
|
|
32
|
+
When using TypeScript, make sure to use the `Slot` type so the render prop is correctly transformed.
|
|
33
|
+
|
|
34
|
+
```tsx
|
|
35
|
+
import { Slot } from "@puckeditor/core";
|
|
36
|
+
|
|
37
|
+
type Props = {
|
|
38
|
+
Example: {
|
|
39
|
+
content: Slot; // Converted from the ComponentData[] type into a render function
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Params
|
|
45
|
+
|
|
46
|
+
| Param | Example | Type | Status |
|
|
47
|
+
| ----------------------- | ---------------------------- | ------ | -------- |
|
|
48
|
+
| [`type`](#type) | `type: "slot"` | "slot" | Required |
|
|
49
|
+
| [`allow`](#allow) | `allow: ["HeadingBlock"]` | Array | - |
|
|
50
|
+
| [`disallow`](#disallow) | `disallow: ["HeadingBlock"]` | Array | - |
|
|
51
|
+
|
|
52
|
+
## Required params
|
|
53
|
+
|
|
54
|
+
### `type`
|
|
55
|
+
|
|
56
|
+
The type of the field. Must be `"slot"` for Slot fields.
|
|
57
|
+
|
|
58
|
+
```tsx
|
|
59
|
+
const config = {
|
|
60
|
+
components: {
|
|
61
|
+
Example: {
|
|
62
|
+
fields: {
|
|
63
|
+
content: {
|
|
64
|
+
type: "slot",
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
// ...
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Optional params
|
|
74
|
+
|
|
75
|
+
### `allow`
|
|
76
|
+
|
|
77
|
+
Only allow specific components to be dragged into the slot. Will be overwritten by the [`allow` prop](#allow-1) provided to the render function.
|
|
78
|
+
|
|
79
|
+
```tsx
|
|
80
|
+
const config = {
|
|
81
|
+
components: {
|
|
82
|
+
Example: {
|
|
83
|
+
fields: {
|
|
84
|
+
content: {
|
|
85
|
+
type: "slot",
|
|
86
|
+
allow: ["HeadingBlock"],
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
// ...
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### `disallow`
|
|
96
|
+
|
|
97
|
+
Allow all but specific components to be dragged into the slot. Any items in `allow` will override `disallow`. Will be overwritten by the [`disallow` prop](#disallow-1) provided to the render function.
|
|
98
|
+
|
|
99
|
+
```tsx
|
|
100
|
+
const config = {
|
|
101
|
+
components: {
|
|
102
|
+
Example: {
|
|
103
|
+
fields: {
|
|
104
|
+
content: {
|
|
105
|
+
type: "slot",
|
|
106
|
+
disallow: ["HeadingBlock"],
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
// ...
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Render function
|
|
116
|
+
|
|
117
|
+
Slot data is provided to `render()` as a render function (or component). Provide props to this function to customize the behavior of the slot at render-time.
|
|
118
|
+
|
|
119
|
+
| Param | Example | Type | Status |
|
|
120
|
+
| ----------------------------------- | ---------------------------- | ------------------------------------ | ------ |
|
|
121
|
+
| [`allow`](#allow-1) | `allow: ["HeadingBlock"]` | Array | - |
|
|
122
|
+
| [`as`](#as) | `as: "span"` | ElementType | - |
|
|
123
|
+
| [`className`](#classname) | `className: "MyClass"` | String | - |
|
|
124
|
+
| [`collisionAxis`](#collisionaxis) | `collisionAxis: "x"` | String | - |
|
|
125
|
+
| [`disallow`](#disallow-1) | `disallow: ["HeadingBlock"]` | Array | - |
|
|
126
|
+
| [`minEmptyHeight`](#minemptyheight) | `minEmptyHeight: "256px"` | CSSProperties["minHeight"] \| number | - |
|
|
127
|
+
| [`ref`](#ref) | `ref: ref` | Ref | - |
|
|
128
|
+
| [`style`](#style) | `style: {display: "flex"}` | CSSProperties | - |
|
|
129
|
+
|
|
130
|
+
### `allow`
|
|
131
|
+
|
|
132
|
+
Only allow specific components to be dragged into the slot. Overrides the [`allow` parameter](#allow) provided to the field.
|
|
133
|
+
|
|
134
|
+
> **Note:** Drag-and-drop in the outline does not respect this prop. Prefer the [`allow`
|
|
135
|
+
> field parameter](#allow), which is enforced everywhere.
|
|
136
|
+
|
|
137
|
+
```tsx
|
|
138
|
+
const config = {
|
|
139
|
+
components: {
|
|
140
|
+
Example: {
|
|
141
|
+
render: ({ content: Content }) => {
|
|
142
|
+
return <Content allow={["HeadingBlock"]} />;
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### `as`
|
|
150
|
+
|
|
151
|
+
Render a custom element or component for the slot.
|
|
152
|
+
|
|
153
|
+
```tsx
|
|
154
|
+
const config = {
|
|
155
|
+
components: {
|
|
156
|
+
Example: {
|
|
157
|
+
render: ({ content: Content }) => {
|
|
158
|
+
return <Content as="table" />;
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Any additional props are forwarded to the element or component provided via `as`.
|
|
166
|
+
|
|
167
|
+
```tsx
|
|
168
|
+
const config = {
|
|
169
|
+
components: {
|
|
170
|
+
Example: {
|
|
171
|
+
render: ({ content: Content }) => {
|
|
172
|
+
return <Content as="details" open />;
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
The following props are **not** forwarded to the `as` element, because Puck either consumes them internally or they are incompatible with slots:
|
|
180
|
+
|
|
181
|
+
| Prop | Reason |
|
|
182
|
+
| ------------------------- | ----------------------------------- |
|
|
183
|
+
| `zone` | Identifies the drop zone internally |
|
|
184
|
+
| `content` | Injected by Puck internally |
|
|
185
|
+
| `config` | Injected by Puck internally |
|
|
186
|
+
| `metadata` | Injected by Puck internally |
|
|
187
|
+
| `dangerouslySetInnerHTML` | Isn't compatible with Puck slots |
|
|
188
|
+
| `children` | Isn't compatible with Puck slots |
|
|
189
|
+
|
|
190
|
+
### `className`
|
|
191
|
+
|
|
192
|
+
Provide a className to the rendered element. The default styles will still be applied.
|
|
193
|
+
|
|
194
|
+
```tsx
|
|
195
|
+
const config = {
|
|
196
|
+
components: {
|
|
197
|
+
Example: {
|
|
198
|
+
render: ({ content: Content }) => {
|
|
199
|
+
return <Content className="MyComponent" />;
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
};
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### `collisionAxis`
|
|
207
|
+
|
|
208
|
+
Configure which axis Puck will use for overlap collision detection.
|
|
209
|
+
|
|
210
|
+
Options:
|
|
211
|
+
|
|
212
|
+
- `x` - detect collisions based their x-axis overlap
|
|
213
|
+
- `y` - detect collisions based their y-axis overlap
|
|
214
|
+
- `dynamic` - automatically choose an axis based on the direction of travel
|
|
215
|
+
|
|
216
|
+
The defaults are set based on the CSS layout of the parent:
|
|
217
|
+
|
|
218
|
+
- grid: `dynamic`
|
|
219
|
+
- flex (row): `x`
|
|
220
|
+
- inline/inline-block: `x`
|
|
221
|
+
- Everything else: `y`
|
|
222
|
+
|
|
223
|
+
```tsx
|
|
224
|
+
const config = {
|
|
225
|
+
components: {
|
|
226
|
+
Example: {
|
|
227
|
+
render: ({ content: Content }) => {
|
|
228
|
+
return <Content collisionAxis="dynamic" />;
|
|
229
|
+
},
|
|
230
|
+
},
|
|
231
|
+
},
|
|
232
|
+
};
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### `disallow`
|
|
236
|
+
|
|
237
|
+
Allow all but specific components to be dragged into the slot. Any items in `allow` will override `disallow`.
|
|
238
|
+
|
|
239
|
+
> **Note:** Drag-and-drop in the outline does not respect this prop. Prefer the
|
|
240
|
+
> [`disallow` field parameter](#disallow), which is enforced everywhere.
|
|
241
|
+
|
|
242
|
+
```tsx
|
|
243
|
+
const config = {
|
|
244
|
+
components: {
|
|
245
|
+
Example: {
|
|
246
|
+
render: ({ content }) => {
|
|
247
|
+
return <Content disallow={["HeadingBlock"]} />;
|
|
248
|
+
},
|
|
249
|
+
},
|
|
250
|
+
},
|
|
251
|
+
};
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### `minEmptyHeight`
|
|
255
|
+
|
|
256
|
+
The minimum height of the slot when empty. Defaults to `128px`.
|
|
257
|
+
|
|
258
|
+
```tsx
|
|
259
|
+
const config = {
|
|
260
|
+
components: {
|
|
261
|
+
Example: {
|
|
262
|
+
render: () => {
|
|
263
|
+
return <Content minEmptyHeight="256px" />;
|
|
264
|
+
},
|
|
265
|
+
},
|
|
266
|
+
},
|
|
267
|
+
};
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### `ref`
|
|
271
|
+
|
|
272
|
+
A [React ref](https://react.dev/learn/manipulating-the-dom-with-refs), assigned to the root node of the slot.
|
|
273
|
+
|
|
274
|
+
```tsx
|
|
275
|
+
const config = {
|
|
276
|
+
components: {
|
|
277
|
+
Example: {
|
|
278
|
+
render: ({ content: Content }) => {
|
|
279
|
+
const ref = useRef();
|
|
280
|
+
|
|
281
|
+
return <Content ref={ref} />;
|
|
282
|
+
},
|
|
283
|
+
},
|
|
284
|
+
},
|
|
285
|
+
};
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### `style`
|
|
289
|
+
|
|
290
|
+
Provide a style attribute to the slot. The default styles will still be applied.
|
|
291
|
+
|
|
292
|
+
```tsx
|
|
293
|
+
const config = {
|
|
294
|
+
components: {
|
|
295
|
+
Example: {
|
|
296
|
+
render: ({ content: Content }) => {
|
|
297
|
+
return <Content style={{ display: "flex" }} />;
|
|
298
|
+
},
|
|
299
|
+
},
|
|
300
|
+
},
|
|
301
|
+
};
|
|
302
|
+
```
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Text
|
|
2
|
+
|
|
3
|
+
Render a `text` input. Extends [Base](/docs/api-reference/fields/base).
|
|
4
|
+
|
|
5
|
+
```tsx
|
|
6
|
+
const config = {
|
|
7
|
+
components: {
|
|
8
|
+
Example: {
|
|
9
|
+
fields: {
|
|
10
|
+
title: {
|
|
11
|
+
type: "text",
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
render: ({ title }) => {
|
|
15
|
+
return <p>{title}</p>;
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Params
|
|
23
|
+
|
|
24
|
+
| Param | Example | Type | Status |
|
|
25
|
+
| ------------------------------------- | ------------------------------- | ------- | -------- |
|
|
26
|
+
| [`type`](#type) | `type: "text"` | "text" | Required |
|
|
27
|
+
| [`contentEditable`](#contentEditable) | `contentEditable: true` | Boolean | - |
|
|
28
|
+
| [`placeholder`](#placeholder) | `placeholder: "Lorem ipsum..."` | String | - |
|
|
29
|
+
|
|
30
|
+
## Required params
|
|
31
|
+
|
|
32
|
+
### `type`
|
|
33
|
+
|
|
34
|
+
The type of the field. Must be `"text"` for Text fields.
|
|
35
|
+
|
|
36
|
+
```tsx
|
|
37
|
+
const config = {
|
|
38
|
+
components: {
|
|
39
|
+
Example: {
|
|
40
|
+
fields: {
|
|
41
|
+
items: {
|
|
42
|
+
type: "text",
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
// ...
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Optional params
|
|
52
|
+
|
|
53
|
+
### contentEditable
|
|
54
|
+
|
|
55
|
+
Enable inline text editing for this field. Defaults to `false`.
|
|
56
|
+
|
|
57
|
+
> **Warning:** When setting `contentEditable`, your [String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) prop will be converted to an [Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) when rendered inside [`<Puck>`](/docs/api-reference/components/puck) (but not [`<Render>`](/docs/api-reference/components/render)). When using TypeScript, change your `string` to `string | ReactNode`.
|
|
58
|
+
|
|
59
|
+
```tsx
|
|
60
|
+
const config = {
|
|
61
|
+
components: {
|
|
62
|
+
Example: {
|
|
63
|
+
fields: {
|
|
64
|
+
title: {
|
|
65
|
+
type: "text",
|
|
66
|
+
contentEditable: true,
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
// ...
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Placeholder
|
|
76
|
+
|
|
77
|
+
The placeholder text to display when the field is empty.
|
|
78
|
+
|
|
79
|
+
```tsx
|
|
80
|
+
const config = {
|
|
81
|
+
components: {
|
|
82
|
+
Example: {
|
|
83
|
+
fields: {
|
|
84
|
+
title: {
|
|
85
|
+
type: "text",
|
|
86
|
+
placeholder: "Lorem ipsum...",
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
// ...
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
```
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Textarea
|
|
2
|
+
|
|
3
|
+
Render a `textarea` input. Extends [Base](/docs/api-reference/fields/base).
|
|
4
|
+
|
|
5
|
+
```tsx
|
|
6
|
+
const config = {
|
|
7
|
+
components: {
|
|
8
|
+
Example: {
|
|
9
|
+
fields: {
|
|
10
|
+
description: {
|
|
11
|
+
type: "textarea",
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
render: ({ description }) => {
|
|
15
|
+
return <p>{description}</p>;
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Params
|
|
23
|
+
|
|
24
|
+
| Param | Example | Type | Status |
|
|
25
|
+
| ------------------------------------- | ------------------------------- | ---------- | -------- |
|
|
26
|
+
| [`type`](#type) | `type: "textarea"` | "textarea" | Required |
|
|
27
|
+
| [`contentEditable`](#contentEditable) | `contentEditable: true` | Boolean | - |
|
|
28
|
+
| [`placeholder`](#placeholder) | `placeholder: "Lorem ipsum..."` | String | - |
|
|
29
|
+
|
|
30
|
+
## Required params
|
|
31
|
+
|
|
32
|
+
### `type`
|
|
33
|
+
|
|
34
|
+
The type of the field. Must be `"textarea"` for Textarea fields.
|
|
35
|
+
|
|
36
|
+
```tsx
|
|
37
|
+
const config = {
|
|
38
|
+
components: {
|
|
39
|
+
Example: {
|
|
40
|
+
fields: {
|
|
41
|
+
description: {
|
|
42
|
+
type: "textarea",
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
// ...
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Optional params
|
|
52
|
+
|
|
53
|
+
### contentEditable
|
|
54
|
+
|
|
55
|
+
Enable inline text editing for this field. Defaults to `false`.
|
|
56
|
+
|
|
57
|
+
> **Warning:** When setting `contentEditable`, your [String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) prop will be converted to an [Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) when rendered inside [`<Puck>`](/docs/api-reference/components/puck) (but not [`<Render>`](/docs/api-reference/components/render)). When using TypeScript, change your `string` to `string | ReactNode`.
|
|
58
|
+
|
|
59
|
+
```tsx
|
|
60
|
+
const config = {
|
|
61
|
+
components: {
|
|
62
|
+
Example: {
|
|
63
|
+
fields: {
|
|
64
|
+
description: {
|
|
65
|
+
type: "textarea",
|
|
66
|
+
contentEditable: true,
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
// ...
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Placeholder
|
|
76
|
+
|
|
77
|
+
The placeholder text to display when the field is empty.
|
|
78
|
+
|
|
79
|
+
```tsx
|
|
80
|
+
const config = {
|
|
81
|
+
components: {
|
|
82
|
+
Example: {
|
|
83
|
+
fields: {
|
|
84
|
+
description: {
|
|
85
|
+
type: "textarea",
|
|
86
|
+
placeholder: "Lorem ipsum...",
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
// ...
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
```
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Fields
|
|
2
|
+
|
|
3
|
+
A field represents a user input shown in the Puck interface.
|
|
4
|
+
|
|
5
|
+
- [Base](/docs/api-reference/fields/base) - The base type shared by all fields.
|
|
6
|
+
- [Array](/docs/api-reference/fields/array) - Render a list of items with a subset of fields.
|
|
7
|
+
- [Custom](/docs/api-reference/fields/custom) - Implement a field with a custom UI.
|
|
8
|
+
- [External](/docs/api-reference/fields/external) - Select data from a list, typically populated via a third-party API.
|
|
9
|
+
- [Number](/docs/api-reference/fields/number) - Render a `number` input.
|
|
10
|
+
- [Object](/docs/api-reference/fields/object) - Render a subset of fields.
|
|
11
|
+
- [Radio](/docs/api-reference/fields/radio) - Render a `radio` input with a list of options.
|
|
12
|
+
- [RichText](/docs/api-reference/fields/richtext) - Render a rich text editor.
|
|
13
|
+
- [Select](/docs/api-reference/fields/select) - Render a `select` input with a list of options.
|
|
14
|
+
- [Slot](/docs/api-reference/fields/slot) - Define an area containing nested components.
|
|
15
|
+
- [Text](/docs/api-reference/fields/text) - Render a `text` input.
|
|
16
|
+
- [Textarea](/docs/api-reference/fields/textarea) - Render a `textarea` input.
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
# migrate
|
|
2
|
+
|
|
3
|
+
Migrate the [Data payload](/docs/api-reference/data-model/data) to the latest shape, automatically transforming deprecated data.
|
|
4
|
+
|
|
5
|
+
```tsx
|
|
6
|
+
import { migrate } from "@puckeditor/core";
|
|
7
|
+
|
|
8
|
+
migrate(legacyData);
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Migrations
|
|
12
|
+
|
|
13
|
+
### Root data to props
|
|
14
|
+
|
|
15
|
+
Migrates any props stored on root data to the `props` object.
|
|
16
|
+
|
|
17
|
+
**Before**
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"root": {
|
|
22
|
+
"title": "Hello, world"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**After**
|
|
28
|
+
|
|
29
|
+
```json
|
|
30
|
+
{
|
|
31
|
+
"root": {
|
|
32
|
+
"props": { "title": "Hello, world" }
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### DropZones to slots
|
|
38
|
+
|
|
39
|
+
Migrates all [DropZone](/docs/api-reference/components/drop-zone) data from [`zones`](/docs/api-reference/data-model/data#zones) to inline [slots](/docs/api-reference/fields/slot). Requires slots to be provided via the [`config`](#config) arg, where the field name for the slot matches the `zone` prop of the DropZone. See the [DropZone to slots migration guide](/docs/guides/migrations/dropzones-to-slots) for more information.
|
|
40
|
+
|
|
41
|
+
**Before**
|
|
42
|
+
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"content": [
|
|
46
|
+
{
|
|
47
|
+
"type": "Grid",
|
|
48
|
+
"props": {
|
|
49
|
+
"id": "Grid-12345"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"zones": {
|
|
54
|
+
"Grid-12345:items": [
|
|
55
|
+
{
|
|
56
|
+
"type": "HeadingBlock",
|
|
57
|
+
"props": {
|
|
58
|
+
"id": "Heading-12345",
|
|
59
|
+
"title": "Hello, world"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
]
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**After**
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"content": [
|
|
72
|
+
{
|
|
73
|
+
"type": "Grid",
|
|
74
|
+
"props": {
|
|
75
|
+
"id": "Grid-12345",
|
|
76
|
+
"items": [
|
|
77
|
+
{
|
|
78
|
+
"type": "HeadingBlock",
|
|
79
|
+
"props": {
|
|
80
|
+
"id": "Heading-12345",
|
|
81
|
+
"title": "Hello, world"
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
]
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Args
|
|
92
|
+
|
|
93
|
+
| Param | Example | Type | Status |
|
|
94
|
+
| --------------------------------------- | --------------------------------------------- | -------------------------------------------------- | -------- |
|
|
95
|
+
| [`data`](#data) | `{ content: [{type: "Heading", props: {} }]}` | [Data](/docs/api-reference/data-model/data) | Required |
|
|
96
|
+
| [`config`](#config) | `{ components: {} }` | [Config](/docs/api-reference/configuration/config) | - |
|
|
97
|
+
| [`migrationOptions`](#migrationoptions) | `{ migrateDynamicZonesForComponent: {} }` | [MigrationOptions](#migrationoptions-type) | - |
|
|
98
|
+
|
|
99
|
+
### `data`
|
|
100
|
+
|
|
101
|
+
The legacy data you want to transform.
|
|
102
|
+
|
|
103
|
+
### `config`
|
|
104
|
+
|
|
105
|
+
A [config](/docs/api-reference/configuration/config) object. Required if migrating data with [slots](/docs/api-reference/fields/slot).
|
|
106
|
+
|
|
107
|
+
### `migrationOptions`
|
|
108
|
+
|
|
109
|
+
Options to customize how data is migrated.
|
|
110
|
+
|
|
111
|
+
#### `migrateDynamicZonesForComponent`
|
|
112
|
+
|
|
113
|
+
An object mapping component names to custom dropzone migration functions. The function will be called for any component with DropZones that don't have a slot field definition with a matching name in the config.
|
|
114
|
+
|
|
115
|
+
Each migration function receives:
|
|
116
|
+
|
|
117
|
+
- `props`: The current component props
|
|
118
|
+
- `zones`: A record of zone names to their content
|
|
119
|
+
|
|
120
|
+
The function should return the updated component props with the migrated zone data.
|
|
121
|
+
|
|
122
|
+
```tsx
|
|
123
|
+
migrate(legacyData, config, {
|
|
124
|
+
migrateDynamicZonesForComponent: {
|
|
125
|
+
Columns: (props, zones) => {
|
|
126
|
+
return {
|
|
127
|
+
...props,
|
|
128
|
+
columns: Object.values(zones).map((zone) => ({
|
|
129
|
+
column: zone,
|
|
130
|
+
})),
|
|
131
|
+
};
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
**Before**
|
|
138
|
+
|
|
139
|
+
```json
|
|
140
|
+
{
|
|
141
|
+
"root": {
|
|
142
|
+
"props": {
|
|
143
|
+
"title": "Legacy Zones Migration"
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
"content": [
|
|
147
|
+
{
|
|
148
|
+
"type": "Columns",
|
|
149
|
+
"props": {
|
|
150
|
+
"columns": [{}],
|
|
151
|
+
"id": "Columns-eb9dfe22-4408-44e6-b8e5-fbaedbbdb3be"
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
],
|
|
155
|
+
"zones": {
|
|
156
|
+
"Columns-eb9dfe22-4408-44e6-b8e5-fbaedbbdb3be:column-0": [
|
|
157
|
+
{
|
|
158
|
+
"type": "Text",
|
|
159
|
+
"props": {
|
|
160
|
+
"text": "Drop zone 1",
|
|
161
|
+
"id": "Text-c2b5c0a5-d76b-4120-8bb3-99934e119967"
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
**After**
|
|
170
|
+
|
|
171
|
+
```json
|
|
172
|
+
{
|
|
173
|
+
"root": {
|
|
174
|
+
"props": {
|
|
175
|
+
"title": "Legacy Zones Migration"
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
"content": [
|
|
179
|
+
{
|
|
180
|
+
"type": "Columns",
|
|
181
|
+
"props": {
|
|
182
|
+
"columns": [
|
|
183
|
+
{
|
|
184
|
+
"column": [
|
|
185
|
+
{
|
|
186
|
+
"type": "Text",
|
|
187
|
+
"props": {
|
|
188
|
+
"text": "Drop zone 1",
|
|
189
|
+
"id": "Text-c2b5c0a5-d76b-4120-8bb3-99934e119967"
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
]
|
|
193
|
+
}
|
|
194
|
+
],
|
|
195
|
+
"id": "Columns-eb9dfe22-4408-44e6-b8e5-fbaedbbdb3be"
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
]
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## Returns
|
|
203
|
+
|
|
204
|
+
The updated [Data](/docs/api-reference/data-model/data) object.
|