Skip to content

Commit e6db202

Browse files
authored
Merge pull request #35 from bnorm/bnorm/teleprompter
Teleprompter
2 parents 77d4033 + 5ded0b7 commit e6db202

File tree

49 files changed

+1094
-3450
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+1094
-3450
lines changed

README.md

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,6 @@ Snapshot documentation is available at [bnorm.github.io/storyboard/docs/api/late
5050
[Various examples](examples) are available to demonstrate how to build Storyboards of
5151
varying levels of complexity and functionality.
5252

53-
### GitHub Pages
54-
55-
Live versions of the example storyboards are available via GitHub Pages.
56-
To see how publishing is achieved, see the [`pages.yml` workflow](.github/workflows/pages.yml).
57-
58-
* [Basic](https://bnorm.github.io/storyboard/examples/basic)
59-
* [Interactive](https://bnorm.github.io/storyboard/examples/interactive)
60-
6153
## Getting Started
6254

6355
Looking for help? Join the discussion in the [KotlinLang Slack](https://kotlinlang.slack.com/archives/C08R5V4EHDH)!

build.gradle.kts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import com.vanniktech.maven.publish.MavenPublishBaseExtension
2-
import com.vanniktech.maven.publish.SonatypeHost
32
import org.jetbrains.dokka.gradle.DokkaExtension
43
import org.jetbrains.dokka.gradle.engine.parameters.VisibilityModifier
54
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
@@ -66,7 +65,6 @@ allprojects {
6665
plugins.withId("com.vanniktech.maven.publish") {
6766
apply(plugin = "org.jetbrains.dokka")
6867
configure<MavenPublishBaseExtension> {
69-
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL, automaticRelease = true)
7068
signAllPublications()
7169
pom {
7270
description = "Compose Multiplatform library for building presentations."

examples/README.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Storyboard Examples
2+
3+
Live versions of the example storyboards are available via GitHub Pages.
4+
To see how publishing is achieved, see the [`pages.yml` workflow](../.github/workflows/pages.yml).
5+
6+
* [Basic](https://bnorm.github.io/storyboard/examples/basic)
7+
* [Interactive](https://bnorm.github.io/storyboard/examples/interactive)
8+
9+
## [Basic](basic)
10+
11+
Shows the basics of constructing a storyboard.
12+
The storyboard attempts to be self-describing, including how navigation and state within a Storyboard work.
13+
14+
## [Interactive](interactive)
15+
16+
Storyboards can be interactive.
17+
They're just Compose UIs at their core!
18+
This storyboard demonstrates a few different ways a presenter could interact with a storyboard.
19+
20+
## [Teleprompter](teleprompter) (desktop exclusive)
21+
22+
Advanced example of creating a secondary desktop display for a storyboard.
23+
This "teleprompter" display can render additional content within the storyboard.
24+
This can help a presenter record important notes about the presentation
25+
or even help them interact with the storyboard itself.

examples/basic/build.gradle.kts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import org.jetbrains.compose.reload.ComposeHotRun
21
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
32

43
plugins {
@@ -45,7 +44,3 @@ compose {
4544
resources.publicResClass = true
4645
desktop.application.mainClass = "Main_desktopKt"
4746
}
48-
49-
tasks.withType<ComposeHotRun>().configureEach {
50-
mainClass.set("Main_desktopKt")
51-
}
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import androidx.compose.material.MaterialTheme
22
import androidx.compose.material.darkColors
33
import androidx.compose.ui.window.application
4-
import dev.bnorm.storyboard.easel.DesktopStoryEasel
4+
import dev.bnorm.storyboard.easel.DesktopEasel
55

66
fun main() {
7-
val storyboard = createStoryboard()
87
application {
98
MaterialTheme(colors = darkColors()) {
10-
DesktopStoryEasel(storyboard)
9+
DesktopEasel { createStoryboard() }
1110
}
1211
}
1312
}

examples/basic/src/wasmJsMain/kotlin/main.web.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import androidx.compose.material.MaterialTheme
22
import androidx.compose.material.darkColors
33
import androidx.compose.ui.ExperimentalComposeUiApi
44
import androidx.compose.ui.window.CanvasBasedWindow
5-
import dev.bnorm.storyboard.easel.WebStoryEasel
5+
import dev.bnorm.storyboard.easel.WebEasel
66
import kotlinx.browser.document
77
import org.w3c.dom.HTMLCanvasElement
88

@@ -13,7 +13,7 @@ fun main() {
1313
element.focus() // Focus is required for keyboard navigation.
1414
CanvasBasedWindow(canvasElementId = element.id, title = storyboard.title) {
1515
MaterialTheme(colors = darkColors()) {
16-
WebStoryEasel(storyboard)
16+
WebEasel { storyboard }
1717
}
1818
}
1919
}

examples/interactive/build.gradle.kts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import org.gradle.kotlin.dsl.withType
2-
import org.jetbrains.compose.reload.ComposeHotRun
31
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
42

53
plugins {
@@ -57,7 +55,3 @@ compose {
5755
resources.publicResClass = true
5856
desktop.application.mainClass = "Main_desktopKt"
5957
}
60-
61-
tasks.withType<ComposeHotRun>().configureEach {
62-
mainClass.set("Main_desktopKt")
63-
}

examples/interactive/src/commonMain/kotlin/AppScene.kt

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,13 @@ import androidx.compose.material.Divider
88
import androidx.compose.material.MaterialTheme
99
import androidx.compose.material.Text
1010
import androidx.compose.material.darkColors
11-
import androidx.compose.runtime.remember
1211
import androidx.compose.ui.Modifier
1312
import androidx.compose.ui.unit.dp
1413
import dev.bnorm.storyboard.StoryboardBuilder
1514
import dev.bnorm.storyboard.easel.Story
1615
import dev.bnorm.storyboard.easel.overlay.OverlayNavigation
17-
import dev.bnorm.storyboard.easel.overlay.StoryOverlay
18-
import dev.bnorm.storyboard.easel.rememberStoryState
16+
import dev.bnorm.storyboard.easel.overlay.StoryOverlayDecorator
17+
import dev.bnorm.storyboard.easel.rememberEasel
1918
import dev.bnorm.storyboard.easel.template.Body
2019
import dev.bnorm.storyboard.easel.template.Header
2120
import dev.bnorm.storyboard.easel.template.RevealEach
@@ -33,20 +32,19 @@ fun StoryboardBuilder.AppScene() {
3332
Modifier.padding(vertical = 16.dp, horizontal = 16.dp),
3433
verticalArrangement = Arrangement.spacedBy(16.dp),
3534
) {
36-
val state = rememberStoryState(remember { createStoryboard() })
35+
val easel = rememberEasel { createStoryboard() }
3736

3837
RevealEach(transition.createChildTransition { it.toState() }) {
3938
item { Text("• Storyboard is ultimately just a Compose application.") }
4039
item { Text("• Anything achievable with Compose, is possible in Storyboard!") }
4140
item { Text("• You could even embed a Storyboard, in a Storyboard!") }
4241
item {
4342
MaterialTheme(colors = darkColors()) {
44-
StoryOverlay(
45-
overlay = { OverlayNavigation(state) },
46-
modifier = Modifier.requiredSize(state.storyboard.format.toDpSize() / 3)
47-
) {
48-
Story(state)
49-
}
43+
Story(
44+
easel,
45+
decorator = StoryOverlayDecorator(overlay = { OverlayNavigation(easel) }),
46+
modifier = Modifier.requiredSize(easel.storyboard.format.toDpSize() / 3)
47+
)
5048
}
5149
}
5250
}

examples/interactive/src/jvmMain/kotlin/main.desktop.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@ import androidx.compose.material.MaterialTheme
22
import androidx.compose.material.lightColors
33
import androidx.compose.ui.graphics.Color
44
import androidx.compose.ui.window.application
5-
import dev.bnorm.storyboard.easel.DesktopStoryEasel
5+
import dev.bnorm.storyboard.easel.DesktopEasel
66

77
fun main() {
8-
val storyboard = createStoryboard()
98
application {
109
MaterialTheme(colors = lightColors(background = Color.Gray)) {
11-
DesktopStoryEasel(storyboard)
10+
DesktopEasel { createStoryboard() }
1211
}
1312
}
1413
}

examples/interactive/src/wasmJsMain/kotlin/main.web.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import androidx.compose.material.lightColors
33
import androidx.compose.ui.ExperimentalComposeUiApi
44
import androidx.compose.ui.graphics.Color
55
import androidx.compose.ui.window.CanvasBasedWindow
6-
import dev.bnorm.storyboard.easel.WebStoryEasel
6+
import dev.bnorm.storyboard.easel.WebEasel
77
import kotlinx.browser.document
88
import org.w3c.dom.HTMLCanvasElement
99

@@ -14,7 +14,7 @@ fun main() {
1414
element.focus() // Focus is required for keyboard navigation.
1515
CanvasBasedWindow(canvasElementId = element.id, title = storyboard.title) {
1616
MaterialTheme(colors = lightColors(background = Color.Gray)) {
17-
WebStoryEasel(storyboard)
17+
WebEasel { storyboard }
1818
}
1919
}
2020
}

0 commit comments

Comments
 (0)