![]() |
VOOZH | about |
dotnet add package Songhay.Modules.Bolero --version 8.1.0
NuGet\Install-Package Songhay.Modules.Bolero -Version 8.1.0
<PackageReference Include="Songhay.Modules.Bolero" Version="8.1.0" />
<PackageVersion Include="Songhay.Modules.Bolero" Version="8.1.0" />Directory.Packages.props
<PackageReference Include="Songhay.Modules.Bolero" />Project file
paket add Songhay.Modules.Bolero --version 8.1.0
#r "nuget: Songhay.Modules.Bolero, 8.1.0"
#:package Songhay.Modules.Bolero@8.1.0
#addin nuget:?package=Songhay.Modules.Bolero&version=8.1.0Install as a Cake Addin
#tool nuget:?package=Songhay.Modules.Bolero&version=8.1.0Install as a Cake Tool
NuGet package 📦: Songhay.Modules.Bolero
These are the main concerns of this work:
ILogger and IJSRuntimeThere are five utilities:
IJSRuntime [src]IRemoteService [src]IServiceProvider [src]wwwroot/appsettings.json conventionsThe Songhay.StudioFloor.Client project showcases Bolero/Blazor in action (see “the ‘studio floor’ for this Solution” below). This project demonstrates how the RestApiMetadata type [src] reads appsettings.json of the form:
{
"RestApiMetadata": {
"PlayerApi": {
"ApiBase": "http://localhost:3001",
"ClaimsSet": {
"endpoint-prefix": "api/player/v1",
"route-for-video-yt-manifest": "video/youtube/{presentationKey}|placeholder",
"route-for-video-yt-index": "video/youtube/playlist/index/{suffix}|placeholder",
"route-for-video-yt-playlist": "video/youtube/playlist/{subFolder}/{blobName}|placeholder",
"route-for-video-yt-playlist-set": "video/youtube/playlists/{suffix}/{id}|placeholder",
"route-for-video-yt-curated-manifest": "video/youtube/videos/{presentationKey}|placeholder"
}
}
}
}
The Elmish model [src] in the ‘studio floor’ sample shows how this JSON is loaded:
restApiMetadataOption =
"PlayerApi"
|> RestApiMetadata.fromConfiguration (getIConfiguration())
|> RestApiMetadata.toRestApiMetadataOption (getILogger().LogException)
Here is my first attempt at building a <acronym title="Domain-Specific Language">DSL</acronym> for HTML, CSS and Bulma CSS on top of Bolero. For example, here is an expression [GitHub], rendering Bulma tabs, overriding the Bolero ElmishComponent<_,_>:
override this.View model dispatch =
concat {
let tabPairs =
[
( text "README", ReadMePage )
( concat { text "Bolero "; code { text "IJsRuntime" } }, BoleroJsRuntimePage )
( text "Bulma Visuals", BulmaVisualsPage )
]
|> List.map (fun (n, page) ->
anchorElement NoCssClasses (HasAttr <| ElmishRoutes.router.HRef page) n, page
)
bulmaTabs
(HasClasses <| CssClasses [
ColorEmpty.BackgroundCssClassLight
CssClass.tabsElementIsToggle
CssClass.elementIsFullWidth
SizeLarge.CssClass
])
(fun page -> model.page = page)
tabPairs
cond model.page <| function
| ReadMePage -> ReadMeElmishComponent.EComp model dispatch
| BoleroJsRuntimePage -> BoleroJsRuntimeElmishComponent.EComp model dispatch
| BulmaVisualsPage -> BulmaVisualsElmishComponent.EComp model dispatch
}
The preference here (at the moment) is to have more types than functions for the <acronym title="Domain-Specific Language">DSL</acronym>. These types are grouped into four models of primitives:
These models support the functions of the Visuals:
The coverage of HTML is quite limited because Bulma itself has its own, excellent HTML <acronym title="Domain-Specific Language">DSL</acronym> on which this work depends heavily. The generic <acronym title="Cascading Style Sheets">CSS</acronym> coverage is starting off with typography. The Bulma-specific coverage is the most extensive but lacking in the following areas:
I look forward to working a bit more on this Bulma coverage, likely starting with Bulma pagination.
In order to toggle the Bulma Navbar burger and its dropdown menu, the following JavaScript is needed:
(() => {
window.addEventListener('DOMContentLoaded', () => {
const burger = document.querySelector('.navbar-burger');
const nav = document.querySelector(`#${burger.dataset.target}`);
const isActiveCssClass = 'is-active';
burger.addEventListener('click', () => {
burger.classList.toggle(isActiveCssClass);
nav.classList.toggle(isActiveCssClass);
});
});
})();
This JavaScript is similar to the code provided in the Bulma documentation.
<div style="text-align:center">
<figure>
<a href="https://www.youtube.com/watch?v=rAwZw6UPRXw">
<img alt="Songhay.Modules.Bolero" src="https://img.youtube.com/vi/rAwZw6UPRXw/maxresdefault.jpg" width="480" />
</a>
<p><small>Songhay.Modules.Bolero</small></p>
</figure>
</div>
The Songhay.StudioFloor.Client project [GitHub] has at least two purposes:
npm pipeline| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 2 NuGet packages that depend on Songhay.Modules.Bolero:
| Package | Downloads |
|---|---|
|
Songhay.Player.YouTube
Bolero Components, Elmish types and JSON handlers for the b-roll player for YouTube 🎥 content |
|
|
Songhay.Player.ProgressiveAudio
Bolero Components, Elmish types and JSON handlers for b-roll player for progressive audio 🎤 content |
This package is not used by any popular GitHub repositories.