This is a plugin that only has a peer dependency to riot
. What piral-riot
brings to the table is a set of Pilet API extensions that can be used with piral
or piral-core
.
The set includes a Riot.js converter for any component registration, as well as a fromRiot
shortcut and a RiotExtension
component.
By default, these API extensions are not integrated in piral
, so you'd need to add them to your Piral instance.
The following functions are brought to the Pilet API.
Transforms a standard Riot.js component into a component that can be used in Piral, essentially wrapping it with a reference to the corresponding converter.
The extension slot component to be used in Riot.js component.
::: summary: For pilet authors
You can use the fromRiot
function from the Pilet API to convert your Riot.js components to components usable by your Piral instance.
Example use:
import { PiletApi } from '<name-of-piral-instance>';
import { createRiotPage } from './page';
export function setup(piral: PiletApi) {
const RiotPage = createRiotPage(piral.RiotExtension);
piral.registerPage('/sample', piral.fromRiot(RiotPage));
}
Within Riot components the Piral Riot extension component can be used by referring to RiotExtension
, e.g.,
<riot-extension name="name-of-extension"></riot-extension>
Alternatively, if piral-riot
has not been added to the Piral instance you can install and use the package also from a pilet directly.
import { PiletApi } from '<name-of-piral-instance>';
import { fromRiot, createRiotExtension } from 'piral-riot/convert';
import { createRiotPage } from './page';
export function setup(piral: PiletApi) {
const Extension = createRiotExtension(piral);
const RiotPage = createRiotPage(Extension);
piral.registerPage('/sample', fromRiot(RiotPage));
}
:::
::: summary: For Piral instance developers
Using Riot.js with Piral is as simple as installing piral-riot
and riot@^4
.
import { createRiotApi } from 'piral-riot';
The integration looks like:
const instance = createInstance({
// important part
plugins: [createRiotApi()],
// ...
});
The riot
package should be shared with the pilets via the package.json:
{
"importmap": {
"imports": {
"riot": ""
}
}
}
:::
Piral is released using the MIT license. For more information see the license file.