Carbon.SlideshowEditor is a Neos package that provides a slideshow value object and a custom Neos UI inspector editor for creating and editing slideshows.
The editor supports mixed slide content:
- Text items
- Image items
- Video items (via
carbon/videoplatformeditor)
- Custom inspector editor for
Carbon\\SlideshowEditor\\Slideshow - Modal-based slideshow editing UI in Neos
- Reorder/move/add/remove slides and slide items
- Value-object based PHP domain model with JSON serialization
- Content Repository normalizer for consistent serialization behavior
- Asset usage extraction support for slideshow media
- Eel helper for convenient Fusion rendering
- Neos UI
~9.1.4 - PHP package dependency:
carbon/videoplatformeditor^1.0
Install the package in your Neos distribution and run dependency installation:
composer require carbon/slideshoweditorThis repository uses Yarn workspaces with three modules:
@carbon/slideshoweditor-core@carbon/slideshoweditor-editor@carbon/slideshoweditor-plugin
Build the Neos UI plugin bundle:
yarn buildWatch mode during development:
yarn workspace @carbon/slideshoweditor-plugin run watchThe bundle output is written to:
Resources/Public/JavaScript/Plugin.jsResources/Public/JavaScript/Plugin.css
TypeScript check:
yarn lintCore module tests:
yarn testThe package registers:
- Neos UI JavaScript and stylesheet resources
- Inspector datatype mapping:
Carbon\\SlideshowEditor\\Slideshow->Carbon.SlideshowEditor/Inspector/Editors/SlideshowEditor
- Content Repository property converter (
SlideshowNormalizer) - Eel helper namespace:
Carbon.SlideShowEditor
The slideshow is represented as nested immutable value objects:
SlideshowSlide[]SlideItemInterface[]TextSlideItemImageSlideItemVideoSlideItem
Serialized slide item shapes use a type discriminator:
text:{ "type": "text", "text": "..." }image:{ "type": "image", "imageId": "..." }video:{ "type": "video", "video": { ... } }
Use Carbon\\SlideshowEditor\\Slideshow as property datatype in your NodeType definition and configure the inspector to use datatype-based editor resolution.
Example property definition:
properties:
slideshow:
type: Carbon\\SlideshowEditor\\Slideshow
ui:
label: Slideshow
inspector:
group: contentThe package exposes helper methods in Fusion via Carbon.SlideShowEditor, including:
hasSlides(slideshow)imageById(imageId)itemType(item)
These helpers simplify rendering slideshow items in Fusion/AFX.
Classes/: PHP value objects, Eel helper, and infrastructure integrationConfiguration/: Neos, UI, and Content Repository settingsModules/core: editor domain logic and testsModules/editor: React-based UI components for dialogs and item editingModules/plugin: Neos UI extensibility manifest + bundlingResources/: translations and generated frontend assetsTests/: PHP unit/functional tests
- The plugin bundle uses
esbuildand Neos UI extensibility aliases. - The project keeps TypeScript domain logic in
Modules/coreand UI composition inModules/editor. - Generated UI assets in
Resources/Public/JavaScriptshould be rebuilt after frontend changes.
GPL-3.0-or-later