PHPackages                             carbon/slideshoweditor - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. carbon/slideshoweditor

ActiveNeos-carbon[Utility &amp; Helpers](/categories/utility)

carbon/slideshoweditor
======================

Neos package that provides a slideshow value object and a custom Neos UI inspector editor for creating and editing slideshows

014↑2685.7%TypeScriptCI passing

Since Jul 1Pushed yesterdayCompare

[ Source](https://github.com/CarbonPackages/Carbon.SlideshowEditor)[ Packagist](https://packagist.org/packages/carbon/slideshoweditor)[ RSS](/packages/carbon-slideshoweditor/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Carbon.SlideshowEditor
======================

[](#carbonslideshoweditor)

`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`)

Features
--------

[](#features)

- 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

Requirements
------------

[](#requirements)

- Neos UI `~9.1.4`
- PHP package dependency: `carbon/videoplatformeditor` `^1.0`

Installation
------------

[](#installation)

Install the package in your Neos distribution and run dependency installation:

```
composer require carbon/slideshoweditor
```

JavaScript Build
----------------

[](#javascript-build)

This repository uses Yarn workspaces with three modules:

- `@carbon/slideshoweditor-core`
- `@carbon/slideshoweditor-editor`
- `@carbon/slideshoweditor-plugin`

Build the Neos UI plugin bundle:

```
yarn build
```

Watch mode during development:

```
yarn workspace @carbon/slideshoweditor-plugin run watch
```

The bundle output is written to:

- `Resources/Public/JavaScript/Plugin.js`
- `Resources/Public/JavaScript/Plugin.css`

Quality Checks
--------------

[](#quality-checks)

TypeScript check:

```
yarn lint
```

Core module tests:

```
yarn test
```

Neos Integration
----------------

[](#neos-integration)

The package registers:

- Neos UI JavaScript and stylesheet resources
- Inspector datatype mapping:
    - `Carbon\\SlideshowEditor\\Slideshow` -&gt; `Carbon.SlideshowEditor/Inspector/Editors/SlideshowEditor`
- Content Repository property converter (`SlideshowNormalizer`)
- Eel helper namespace:
    - `Carbon.SlideShowEditor`

Data Model
----------

[](#data-model)

The slideshow is represented as nested immutable value objects:

- `Slideshow`
    - `Slide[]`
        - `SlideItemInterface[]`
            - `TextSlideItem`
            - `ImageSlideItem`
            - `VideoSlideItem`

Serialized slide item shapes use a `type` discriminator:

- `text`: `{ "type": "text", "text": "..." }`
- `image`: `{ "type": "image", "imageId": "..." }`
- `video`: `{ "type": "video", "video": { ... } }`

Usage in NodeTypes
------------------

[](#usage-in-nodetypes)

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: content
```

Fusion / Eel Rendering Helpers
------------------------------

[](#fusion--eel-rendering-helpers)

The 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.

Repository Structure
--------------------

[](#repository-structure)

- `Classes/`: PHP value objects, Eel helper, and infrastructure integration
- `Configuration/`: Neos, UI, and Content Repository settings
- `Modules/core`: editor domain logic and tests
- `Modules/editor`: React-based UI components for dialogs and item editing
- `Modules/plugin`: Neos UI extensibility manifest + bundling
- `Resources/`: translations and generated frontend assets
- `Tests/`: PHP unit/functional tests

Development Notes
-----------------

[](#development-notes)

- The plugin bundle uses `esbuild` and Neos UI extensibility aliases.
- The project keeps TypeScript domain logic in `Modules/core` and UI composition in `Modules/editor`.
- Generated UI assets in `Resources/Public/JavaScript` should be rebuilt after frontend changes.

License
-------

[](#license)

GPL-3.0-or-later

###  Health Score

23

↑

LowBetter than 26% of packages

Maintenance65

Regular maintenance activity

Popularity8

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 88.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/5fec51ac160a110a31a72a54ac29e276a447d8306205a052d35491ac9cf0589b?d=identicon)[jonnitto](/maintainers/jonnitto)

![](https://avatars.githubusercontent.com/u/85400359?v=4)[Marc Henry Schultz](/maintainers/mhsdesign)[@mhsdesign](https://github.com/mhsdesign)

---

Top Contributors

[![mhsdesign](https://avatars.githubusercontent.com/u/85400359?v=4)](https://github.com/mhsdesign "mhsdesign (23 commits)")[![jonnitto](https://avatars.githubusercontent.com/u/4510166?v=4)](https://github.com/jonnitto "jonnitto (3 commits)")

### Embed Badge

![Health badge](/badges/carbon-slideshoweditor/health.svg)

```
[![Health](https://phpackages.com/badges/carbon-slideshoweditor/health.svg)](https://phpackages.com/packages/carbon-slideshoweditor)
```

###  Alternatives

[kevinlebrun/slug.php

Slug helpers

4952.9k1](/packages/kevinlebrun-slugphp)[dintel/php-github-webhook

Simple class for handling GitHub webhook calls

5216.5k](/packages/dintel-php-github-webhook)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
