presently 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. checksums.yaml +7 -0
  2. data/bin/presently +13 -0
  3. data/lib/presently/application.rb +104 -0
  4. data/lib/presently/clock.rb +77 -0
  5. data/lib/presently/display_view.rb +73 -0
  6. data/lib/presently/environment/application.rb +62 -0
  7. data/lib/presently/page.rb +38 -0
  8. data/lib/presently/page.xrb +31 -0
  9. data/lib/presently/presentation.rb +72 -0
  10. data/lib/presently/presentation_controller.rb +181 -0
  11. data/lib/presently/presenter_view.rb +264 -0
  12. data/lib/presently/slide.rb +148 -0
  13. data/lib/presently/slide_view.rb +92 -0
  14. data/lib/presently/state.rb +66 -0
  15. data/lib/presently/version.rb +9 -0
  16. data/lib/presently.rb +9 -0
  17. data/license.md +21 -0
  18. data/public/_components/@socketry/syntax/Syntax/CodeElement.js +337 -0
  19. data/public/_components/@socketry/syntax/Syntax/Errors.js +52 -0
  20. data/public/_components/@socketry/syntax/Syntax/Language/apache.js +49 -0
  21. data/public/_components/@socketry/syntax/Syntax/Language/applescript.js +157 -0
  22. data/public/_components/@socketry/syntax/Syntax/Language/assembly.js +42 -0
  23. data/public/_components/@socketry/syntax/Syntax/Language/bash-script.js +108 -0
  24. data/public/_components/@socketry/syntax/Syntax/Language/bash.js +32 -0
  25. data/public/_components/@socketry/syntax/Syntax/Language/basic.js +232 -0
  26. data/public/_components/@socketry/syntax/Syntax/Language/c++.js +1 -0
  27. data/public/_components/@socketry/syntax/Syntax/Language/c.js +1 -0
  28. data/public/_components/@socketry/syntax/Syntax/Language/clang.js +201 -0
  29. data/public/_components/@socketry/syntax/Syntax/Language/cpp.js +1 -0
  30. data/public/_components/@socketry/syntax/Syntax/Language/csharp.js +166 -0
  31. data/public/_components/@socketry/syntax/Syntax/Language/css.js +244 -0
  32. data/public/_components/@socketry/syntax/Syntax/Language/diff.js +24 -0
  33. data/public/_components/@socketry/syntax/Syntax/Language/go.js +135 -0
  34. data/public/_components/@socketry/syntax/Syntax/Language/haskell.js +110 -0
  35. data/public/_components/@socketry/syntax/Syntax/Language/html.js +69 -0
  36. data/public/_components/@socketry/syntax/Syntax/Language/io.js +68 -0
  37. data/public/_components/@socketry/syntax/Syntax/Language/java.js +134 -0
  38. data/public/_components/@socketry/syntax/Syntax/Language/javascript.js +89 -0
  39. data/public/_components/@socketry/syntax/Syntax/Language/json.js +36 -0
  40. data/public/_components/@socketry/syntax/Syntax/Language/lisp.js +38 -0
  41. data/public/_components/@socketry/syntax/Syntax/Language/lua.js +87 -0
  42. data/public/_components/@socketry/syntax/Syntax/Language/markdown.js +112 -0
  43. data/public/_components/@socketry/syntax/Syntax/Language/nginx.js +37 -0
  44. data/public/_components/@socketry/syntax/Syntax/Language/objective-c.js +1 -0
  45. data/public/_components/@socketry/syntax/Syntax/Language/ocaml.js +225 -0
  46. data/public/_components/@socketry/syntax/Syntax/Language/pascal.js +166 -0
  47. data/public/_components/@socketry/syntax/Syntax/Language/patch.js +2 -0
  48. data/public/_components/@socketry/syntax/Syntax/Language/perl5.js +317 -0
  49. data/public/_components/@socketry/syntax/Syntax/Language/php-script.js +112 -0
  50. data/public/_components/@socketry/syntax/Syntax/Language/php.js +18 -0
  51. data/public/_components/@socketry/syntax/Syntax/Language/plain.js +20 -0
  52. data/public/_components/@socketry/syntax/Syntax/Language/protobuf.js +77 -0
  53. data/public/_components/@socketry/syntax/Syntax/Language/python.js +208 -0
  54. data/public/_components/@socketry/syntax/Syntax/Language/ruby.js +124 -0
  55. data/public/_components/@socketry/syntax/Syntax/Language/scala.js +81 -0
  56. data/public/_components/@socketry/syntax/Syntax/Language/smalltalk.js +30 -0
  57. data/public/_components/@socketry/syntax/Syntax/Language/sql.js +865 -0
  58. data/public/_components/@socketry/syntax/Syntax/Language/super-collider.js +70 -0
  59. data/public/_components/@socketry/syntax/Syntax/Language/swift.js +176 -0
  60. data/public/_components/@socketry/syntax/Syntax/Language/xml.js +76 -0
  61. data/public/_components/@socketry/syntax/Syntax/Language/xrb.js +33 -0
  62. data/public/_components/@socketry/syntax/Syntax/Language/yaml.js +29 -0
  63. data/public/_components/@socketry/syntax/Syntax/Language.js +276 -0
  64. data/public/_components/@socketry/syntax/Syntax/Loader.js +78 -0
  65. data/public/_components/@socketry/syntax/Syntax/Match.js +546 -0
  66. data/public/_components/@socketry/syntax/Syntax/Rule.js +306 -0
  67. data/public/_components/@socketry/syntax/Syntax.js +356 -0
  68. data/public/_components/@socketry/syntax/bin/syntax-ast.js +42 -0
  69. data/public/_components/@socketry/syntax/examples/_template.html +53 -0
  70. data/public/_components/@socketry/syntax/examples/apache.html +72 -0
  71. data/public/_components/@socketry/syntax/examples/applescript.html +72 -0
  72. data/public/_components/@socketry/syntax/examples/assembly.html +74 -0
  73. data/public/_components/@socketry/syntax/examples/bash.html +90 -0
  74. data/public/_components/@socketry/syntax/examples/basic.html +87 -0
  75. data/public/_components/@socketry/syntax/examples/c.html +141 -0
  76. data/public/_components/@socketry/syntax/examples/clang.html +202 -0
  77. data/public/_components/@socketry/syntax/examples/csharp.html +110 -0
  78. data/public/_components/@socketry/syntax/examples/css-colors.html +179 -0
  79. data/public/_components/@socketry/syntax/examples/custom-theme.html +155 -0
  80. data/public/_components/@socketry/syntax/examples/diff.html +142 -0
  81. data/public/_components/@socketry/syntax/examples/examples.css +216 -0
  82. data/public/_components/@socketry/syntax/examples/go.html +413 -0
  83. data/public/_components/@socketry/syntax/examples/haskell.html +373 -0
  84. data/public/_components/@socketry/syntax/examples/html.html +316 -0
  85. data/public/_components/@socketry/syntax/examples/index.html +97 -0
  86. data/public/_components/@socketry/syntax/examples/io.html +552 -0
  87. data/public/_components/@socketry/syntax/examples/java.html +786 -0
  88. data/public/_components/@socketry/syntax/examples/javascript.html +199 -0
  89. data/public/_components/@socketry/syntax/examples/json.html +150 -0
  90. data/public/_components/@socketry/syntax/examples/lisp.html +476 -0
  91. data/public/_components/@socketry/syntax/examples/lua.html +737 -0
  92. data/public/_components/@socketry/syntax/examples/markdown.html +121 -0
  93. data/public/_components/@socketry/syntax/examples/mixed.html +306 -0
  94. data/public/_components/@socketry/syntax/examples/nginx.html +554 -0
  95. data/public/_components/@socketry/syntax/examples/ocaml.html +596 -0
  96. data/public/_components/@socketry/syntax/examples/pascal.html +762 -0
  97. data/public/_components/@socketry/syntax/examples/perl5.html +488 -0
  98. data/public/_components/@socketry/syntax/examples/php-script.html +142 -0
  99. data/public/_components/@socketry/syntax/examples/php.html +95 -0
  100. data/public/_components/@socketry/syntax/examples/plain.html +222 -0
  101. data/public/_components/@socketry/syntax/examples/protobuf.html +405 -0
  102. data/public/_components/@socketry/syntax/examples/python.html +82 -0
  103. data/public/_components/@socketry/syntax/examples/readme.md +79 -0
  104. data/public/_components/@socketry/syntax/examples/ruby.html +58 -0
  105. data/public/_components/@socketry/syntax/examples/scala.html +41 -0
  106. data/public/_components/@socketry/syntax/examples/smalltalk.html +436 -0
  107. data/public/_components/@socketry/syntax/examples/sql.html +373 -0
  108. data/public/_components/@socketry/syntax/examples/super-collider.html +55 -0
  109. data/public/_components/@socketry/syntax/examples/swift.html +176 -0
  110. data/public/_components/@socketry/syntax/examples/wrap-demo.html +103 -0
  111. data/public/_components/@socketry/syntax/examples/xml.html +112 -0
  112. data/public/_components/@socketry/syntax/examples/xrb.html +37 -0
  113. data/public/_components/@socketry/syntax/examples/yaml.html +72 -0
  114. data/public/_components/@socketry/syntax/license.md +21 -0
  115. data/public/_components/@socketry/syntax/package-lock.json +834 -0
  116. data/public/_components/@socketry/syntax/package.json +43 -0
  117. data/public/_components/@socketry/syntax/readme.md +162 -0
  118. data/public/_components/@socketry/syntax/test/Syntax/CodeElement.js +306 -0
  119. data/public/_components/@socketry/syntax/test/Syntax/ErrorHandling.js +85 -0
  120. data/public/_components/@socketry/syntax/test/Syntax/Language/apache.js +153 -0
  121. data/public/_components/@socketry/syntax/test/Syntax/Language/applescript.js +198 -0
  122. data/public/_components/@socketry/syntax/test/Syntax/Language/assembly.js +209 -0
  123. data/public/_components/@socketry/syntax/test/Syntax/Language/bash-script.js +225 -0
  124. data/public/_components/@socketry/syntax/test/Syntax/Language/bash.js +162 -0
  125. data/public/_components/@socketry/syntax/test/Syntax/Language/basic.js +265 -0
  126. data/public/_components/@socketry/syntax/test/Syntax/Language/clang.js +390 -0
  127. data/public/_components/@socketry/syntax/test/Syntax/Language/csharp.js +436 -0
  128. data/public/_components/@socketry/syntax/test/Syntax/Language/css.js +431 -0
  129. data/public/_components/@socketry/syntax/test/Syntax/Language/diff.js +206 -0
  130. data/public/_components/@socketry/syntax/test/Syntax/Language/go.js +386 -0
  131. data/public/_components/@socketry/syntax/test/Syntax/Language/haskell.js +454 -0
  132. data/public/_components/@socketry/syntax/test/Syntax/Language/html.js +111 -0
  133. data/public/_components/@socketry/syntax/test/Syntax/Language/io.js +229 -0
  134. data/public/_components/@socketry/syntax/test/Syntax/Language/java.js +362 -0
  135. data/public/_components/@socketry/syntax/test/Syntax/Language/javascript.js +101 -0
  136. data/public/_components/@socketry/syntax/test/Syntax/Language/json.js +101 -0
  137. data/public/_components/@socketry/syntax/test/Syntax/Language/lisp.js +224 -0
  138. data/public/_components/@socketry/syntax/test/Syntax/Language/lua.js +307 -0
  139. data/public/_components/@socketry/syntax/test/Syntax/Language/markdown.js +163 -0
  140. data/public/_components/@socketry/syntax/test/Syntax/Language/nginx.js +267 -0
  141. data/public/_components/@socketry/syntax/test/Syntax/Language/ocaml.js +299 -0
  142. data/public/_components/@socketry/syntax/test/Syntax/Language/pascal.js +311 -0
  143. data/public/_components/@socketry/syntax/test/Syntax/Language/perl5.js +333 -0
  144. data/public/_components/@socketry/syntax/test/Syntax/Language/php-script.js +197 -0
  145. data/public/_components/@socketry/syntax/test/Syntax/Language/php.js +92 -0
  146. data/public/_components/@socketry/syntax/test/Syntax/Language/plain.js +327 -0
  147. data/public/_components/@socketry/syntax/test/Syntax/Language/protobuf.js +294 -0
  148. data/public/_components/@socketry/syntax/test/Syntax/Language/python.js +213 -0
  149. data/public/_components/@socketry/syntax/test/Syntax/Language/ruby.js +70 -0
  150. data/public/_components/@socketry/syntax/test/Syntax/Language/scala.js +75 -0
  151. data/public/_components/@socketry/syntax/test/Syntax/Language/smalltalk.js +223 -0
  152. data/public/_components/@socketry/syntax/test/Syntax/Language/sql.js +281 -0
  153. data/public/_components/@socketry/syntax/test/Syntax/Language/super-collider.js +66 -0
  154. data/public/_components/@socketry/syntax/test/Syntax/Language/swift.js +71 -0
  155. data/public/_components/@socketry/syntax/test/Syntax/Language/xml.js +170 -0
  156. data/public/_components/@socketry/syntax/test/Syntax/Language/xrb.js +57 -0
  157. data/public/_components/@socketry/syntax/test/Syntax/Language/yaml.js +123 -0
  158. data/public/_components/@socketry/syntax/test/Syntax/Language.js +62 -0
  159. data/public/_components/@socketry/syntax/test/Syntax/Match.js +40 -0
  160. data/public/_components/@socketry/syntax/test/Syntax/Rule.js +251 -0
  161. data/public/_components/@socketry/syntax/test/Syntax.js +38 -0
  162. data/public/_components/@socketry/syntax/test/helpers/ast-matcher.js +90 -0
  163. data/public/_components/@socketry/syntax/themes/base/apache.css +1 -0
  164. data/public/_components/@socketry/syntax/themes/base/applescript.css +1 -0
  165. data/public/_components/@socketry/syntax/themes/base/assembly.css +1 -0
  166. data/public/_components/@socketry/syntax/themes/base/bash.css +1 -0
  167. data/public/_components/@socketry/syntax/themes/base/basic.css +1 -0
  168. data/public/_components/@socketry/syntax/themes/base/c.css +1 -0
  169. data/public/_components/@socketry/syntax/themes/base/clang.css +0 -0
  170. data/public/_components/@socketry/syntax/themes/base/csharp.css +1 -0
  171. data/public/_components/@socketry/syntax/themes/base/css.css +22 -0
  172. data/public/_components/@socketry/syntax/themes/base/diff.css +48 -0
  173. data/public/_components/@socketry/syntax/themes/base/go.css +1 -0
  174. data/public/_components/@socketry/syntax/themes/base/haskell.css +1 -0
  175. data/public/_components/@socketry/syntax/themes/base/html.css +1 -0
  176. data/public/_components/@socketry/syntax/themes/base/io.css +1 -0
  177. data/public/_components/@socketry/syntax/themes/base/java.css +1 -0
  178. data/public/_components/@socketry/syntax/themes/base/javascript.css +1 -0
  179. data/public/_components/@socketry/syntax/themes/base/json.css +41 -0
  180. data/public/_components/@socketry/syntax/themes/base/lisp.css +1 -0
  181. data/public/_components/@socketry/syntax/themes/base/lua.css +1 -0
  182. data/public/_components/@socketry/syntax/themes/base/markdown.css +16 -0
  183. data/public/_components/@socketry/syntax/themes/base/nginx.css +1 -0
  184. data/public/_components/@socketry/syntax/themes/base/ocaml.css +1 -0
  185. data/public/_components/@socketry/syntax/themes/base/pascal.css +1 -0
  186. data/public/_components/@socketry/syntax/themes/base/perl5.css +1 -0
  187. data/public/_components/@socketry/syntax/themes/base/php-script.css +1 -0
  188. data/public/_components/@socketry/syntax/themes/base/php.css +1 -0
  189. data/public/_components/@socketry/syntax/themes/base/plain.css +1 -0
  190. data/public/_components/@socketry/syntax/themes/base/protobuf.css +1 -0
  191. data/public/_components/@socketry/syntax/themes/base/python.css +1 -0
  192. data/public/_components/@socketry/syntax/themes/base/ruby.css +23 -0
  193. data/public/_components/@socketry/syntax/themes/base/scala.css +3 -0
  194. data/public/_components/@socketry/syntax/themes/base/smalltalk.css +1 -0
  195. data/public/_components/@socketry/syntax/themes/base/sql.css +1 -0
  196. data/public/_components/@socketry/syntax/themes/base/super-collider.css +33 -0
  197. data/public/_components/@socketry/syntax/themes/base/swift.css +1 -0
  198. data/public/_components/@socketry/syntax/themes/base/syntax.css +63 -0
  199. data/public/_components/@socketry/syntax/themes/base/xml.css +1 -0
  200. data/public/_components/@socketry/syntax/themes/base/xrb.css +29 -0
  201. data/public/_components/@socketry/syntax/themes/base/yaml.css +1 -0
  202. data/public/_components/@socketry/syntax/themes/theming.md +233 -0
  203. data/public/_components/@socketry/syntax/update-examples.js +135 -0
  204. data/public/_static/index.css +593 -0
  205. data/public/application.js +147 -0
  206. data/readme.md +69 -0
  207. data/releases.md +3 -0
  208. data/templates/code.xrb +12 -0
  209. data/templates/default.xrb +5 -0
  210. data/templates/image.xrb +8 -0
  211. data/templates/section.xrb +5 -0
  212. data/templates/title.xrb +8 -0
  213. data/templates/translation.xrb +8 -0
  214. data/templates/two_column.xrb +8 -0
  215. metadata +280 -0
@@ -0,0 +1,147 @@
1
+ import { Live } from 'live';
2
+ import Syntax from '@socketry/syntax';
3
+
4
+ const live = Live.start();
5
+
6
+ // Highlight code blocks on initial load:
7
+ await Syntax.highlight();
8
+
9
+ // Apply code focus effect to all code viewports.
10
+ function applyCodeFocus() {
11
+ document.querySelectorAll('.code-viewport').forEach(viewport => {
12
+ const focusStart = parseInt(viewport.dataset.focusStart);
13
+ const focusEnd = parseInt(viewport.dataset.focusEnd);
14
+
15
+ const scroll = viewport.querySelector('.code-scroll');
16
+ const dimTop = viewport.querySelector('.code-dim-top');
17
+ const dimBottom = viewport.querySelector('.code-dim-bottom');
18
+ if (!scroll) return;
19
+
20
+ if (!focusStart || !focusEnd) {
21
+ scroll.style.transform = '';
22
+ if (dimTop) dimTop.style.height = '0';
23
+ if (dimBottom) dimBottom.style.height = '0';
24
+ return;
25
+ }
26
+
27
+ requestAnimationFrame(async () => {
28
+ const code = scroll.querySelector('syntax-code');
29
+ if (!code) return;
30
+
31
+ await code.ready;
32
+
33
+ // Get line positions via getBoundingClientRect (screen pixels),
34
+ // and convert to CSS pixels using the scroll container's own rect
35
+ // as the reference frame:
36
+ const firstLineRect = code.getLineBoundingClientRect(focusStart);
37
+ const lastLineRect = code.getLineBoundingClientRect(focusEnd);
38
+ if (!firstLineRect || !lastLineRect) return;
39
+
40
+ const scrollRect = scroll.getBoundingClientRect();
41
+
42
+ // Both rects are in screen pixels. Compute the ratio between
43
+ // the scroll container's screen size and CSS size to convert:
44
+ const scale = scroll.clientHeight / scrollRect.height;
45
+
46
+ const focusTopPx = (firstLineRect.top - scrollRect.top) * scale;
47
+ const focusBottomPx = (lastLineRect.bottom - scrollRect.top) * scale;
48
+ const focusHeight = focusBottomPx - focusTopPx;
49
+ const viewportHeight = viewport.clientHeight;
50
+
51
+ // Center the focus region in the viewport:
52
+ const targetCenter = focusTopPx + focusHeight / 2;
53
+ const viewportCenter = viewportHeight / 2;
54
+ const translateY = Math.min(0, viewportCenter - targetCenter);
55
+
56
+ scroll.style.transform = `translateY(${translateY}px)`;
57
+
58
+ // Position the dim overlays:
59
+ const dimTopHeight = Math.max(0, focusTopPx + translateY);
60
+ const dimBottomHeight = Math.max(0, viewportHeight - (focusBottomPx + translateY));
61
+
62
+ if (dimTop) dimTop.style.height = `${dimTopHeight}px`;
63
+ if (dimBottom) dimBottom.style.height = `${dimBottomHeight}px`;
64
+ });
65
+ });
66
+ }
67
+
68
+ // Detect the transition type from the incoming HTML before morphdom applies it.
69
+ function detectTransition(html) {
70
+ const match = html.match(/data-transition="([^"]+)"/);
71
+ return match ? match[1] : null;
72
+ }
73
+
74
+ // Track the active view transition so we can skip overlapping ones.
75
+ let activeTransition = null;
76
+
77
+ // Wrap Live's update method to support view transitions.
78
+ const originalUpdate = live.update.bind(live);
79
+ live.update = function(id, html, options) {
80
+ // Only apply transitions on the display view, not the presenter:
81
+ const transition = document.querySelector('.display') ? detectTransition(html) : null;
82
+
83
+ if (transition && document.startViewTransition && !activeTransition) {
84
+ document.documentElement.dataset.transition = transition;
85
+
86
+ activeTransition = document.startViewTransition(() => {
87
+ originalUpdate(id, html, options);
88
+ });
89
+
90
+ activeTransition.finished.finally(() => {
91
+ delete document.documentElement.dataset.transition;
92
+ activeTransition = null;
93
+ Syntax.highlight();
94
+ applyCodeFocus();
95
+ });
96
+ } else {
97
+ originalUpdate(id, html, options);
98
+ Syntax.highlight();
99
+ applyCodeFocus();
100
+ }
101
+ };
102
+
103
+ // Re-highlight and apply focus after non-update DOM mutations (e.g. replace):
104
+ const observer = new MutationObserver(() => {
105
+ if (activeTransition) return;
106
+ Syntax.highlight();
107
+ applyCodeFocus();
108
+ });
109
+ observer.observe(document.body, { childList: true, subtree: true });
110
+
111
+ // Initial focus application:
112
+ applyCodeFocus();
113
+
114
+ // Keyboard navigation
115
+ document.addEventListener('keydown', (event) => {
116
+ const liveView = document.querySelector('live-view');
117
+ if (!liveView) return;
118
+
119
+ const id = liveView.id;
120
+ let action = null;
121
+
122
+ switch (event.key) {
123
+ case 'ArrowRight':
124
+ case ' ':
125
+ case 'PageDown':
126
+ action = 'next';
127
+ break;
128
+ case 'ArrowLeft':
129
+ case 'PageUp':
130
+ action = 'previous';
131
+ break;
132
+ case 'f':
133
+ case 'F':
134
+ event.preventDefault();
135
+ if (document.fullscreenElement) {
136
+ document.exitFullscreen();
137
+ } else {
138
+ document.documentElement.requestFullscreen();
139
+ }
140
+ return;
141
+ }
142
+
143
+ if (action) {
144
+ event.preventDefault();
145
+ live.forwardEvent(id, event, { action: action });
146
+ }
147
+ });
data/readme.md ADDED
@@ -0,0 +1,69 @@
1
+ # Presently
2
+
3
+ A web-based presentation tool built with [Lively](https://github.com/socketry/lively). Write your slides in Markdown, present them in the browser, and control everything from a separate presenter display.
4
+
5
+ [![Development Status](https://github.com/socketry/presently/workflows/Test/badge.svg)](https://github.com/socketry/presently/actions?workflow=Test)
6
+
7
+ ## Features
8
+
9
+ - **Markdown slides** with YAML frontmatter for metadata and template selection.
10
+ - **Presenter display** with current slide, next slide preview, notes, and timing.
11
+ - **Real-time sync** between display and presenter via WebSockets.
12
+ - **Code highlighting** with [@socketry/syntax](https://github.com/socketry/syntax-js), including animated focus regions for code walkthroughs.
13
+ - **Multiple templates** — title, section, two-column, code, translation, image, and default.
14
+ - **Timing and pacing** — per-slide duration metadata with elapsed/remaining time and pacing indicators.
15
+ - **Full-screen support** — press `F` on the display view.
16
+ - **Keyboard navigation** — arrow keys, space, Page Up/Down.
17
+
18
+ ## Usage
19
+
20
+ Please see the [project documentation](https://github.com/socketry/presently) for more details.
21
+
22
+ - [Getting Started](https://github.com/socketry/presentlyguides/getting-started/index) - This guide explains how to use `presently` to create and deliver web-based presentations using Markdown slides.
23
+
24
+ ## Releases
25
+
26
+ Please see the [project releases](https://github.com/socketry/presentlyreleases/index) for all releases.
27
+
28
+ ### v0.2.0
29
+
30
+ ## See Also
31
+
32
+ - [lively](https://github.com/socketry/lively) — The real-time application framework that powers Presently.
33
+ - [falcon](https://github.com/socketry/falcon) — The web server used to host presentations.
34
+ - [syntax-js](https://github.com/socketry/syntax-js) — Syntax highlighting for code slides.
35
+ - [markly](https://github.com/socketry/markly) — CommonMark parser used for slide content.
36
+
37
+ ## Contributing
38
+
39
+ We welcome contributions to this project.
40
+
41
+ 1. Fork it.
42
+ 2. Create your feature branch (`git checkout -b my-new-feature`).
43
+ 3. Commit your changes (`git commit -am 'Add some feature'`).
44
+ 4. Push to the branch (`git push origin my-new-feature`).
45
+ 5. Create new Pull Request.
46
+
47
+ ### Running Tests
48
+
49
+ To run the test suite:
50
+
51
+ ``` shell
52
+ bundle exec sus
53
+ ```
54
+
55
+ ### Making Releases
56
+
57
+ To make a new release:
58
+
59
+ ``` shell
60
+ bundle exec bake gem:release:patch # or minor or major
61
+ ```
62
+
63
+ ### Developer Certificate of Origin
64
+
65
+ In order to protect users of this project, we require all contributors to comply with the [Developer Certificate of Origin](https://developercertificate.org/). This ensures that all contributions are properly licensed and attributed.
66
+
67
+ ### Community Guidelines
68
+
69
+ This project is best served by a collaborative and respectful environment. Treat each other professionally, respect differing viewpoints, and engage constructively. Harassment, discrimination, or harmful behavior is not tolerated. Communicate clearly, listen actively, and support one another. If any issues arise, please inform the project maintainers.
data/releases.md ADDED
@@ -0,0 +1,3 @@
1
+ # Releases
2
+
3
+ ## v0.2.0
@@ -0,0 +1,12 @@
1
+ <div class="slide-inner code-template">
2
+ <?r if title = self.slide.title and !title.empty? ?>
3
+ <div class="code-title"><p>#{title}</p></div>
4
+ <?r end ?>
5
+ <div class="code-viewport" data-focus-start="#{self.slide.focus&.first}" data-focus-end="#{self.slide.focus&.last}">
6
+ <div class="code-scroll">
7
+ #{self.section("body")}
8
+ </div>
9
+ <div class="code-dim code-dim-top"></div>
10
+ <div class="code-dim code-dim-bottom"></div>
11
+ </div>
12
+ </div>
@@ -0,0 +1,5 @@
1
+ <div class="slide-inner default-template">
2
+ <div class="slide-body">
3
+ #{self.section("body")}
4
+ </div>
5
+ </div>
@@ -0,0 +1,8 @@
1
+ <div class="slide-inner image-template">
2
+ <div class="slide-image">
3
+ #{self.section("body")}
4
+ </div>
5
+ <?r if caption = self.section("caption") and !caption.empty? ?>
6
+ <div class="slide-caption">#{caption}</div>
7
+ <?r end ?>
8
+ </div>
@@ -0,0 +1,5 @@
1
+ <div class="slide-inner section-template">
2
+ <div class="slide-heading">
3
+ #{self.section("heading")}
4
+ </div>
5
+ </div>
@@ -0,0 +1,8 @@
1
+ <div class="slide-inner title-template">
2
+ <div class="slide-title">
3
+ #{self.section("title")}
4
+ </div>
5
+ <div class="slide-subtitle">
6
+ #{self.section("subtitle")}
7
+ </div>
8
+ </div>
@@ -0,0 +1,8 @@
1
+ <div class="slide-inner translation-template">
2
+ <div class="slide-title">
3
+ #{self.section("title")}
4
+ </div>
5
+ <div class="slide-translation">
6
+ #{self.section("translation")}
7
+ </div>
8
+ </div>
@@ -0,0 +1,8 @@
1
+ <div class="slide-inner two-column-template">
2
+ <div class="column left-column">
3
+ #{self.section("left")}
4
+ </div>
5
+ <div class="column right-column">
6
+ #{self.section("right")}
7
+ </div>
8
+ </div>
metadata ADDED
@@ -0,0 +1,280 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: presently
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Samuel Williams
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: lively
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '0.16'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '0.16'
26
+ - !ruby/object:Gem::Dependency
27
+ name: markly
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '0.15'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.15'
40
+ executables:
41
+ - presently
42
+ extensions: []
43
+ extra_rdoc_files: []
44
+ files:
45
+ - bin/presently
46
+ - lib/presently.rb
47
+ - lib/presently/application.rb
48
+ - lib/presently/clock.rb
49
+ - lib/presently/display_view.rb
50
+ - lib/presently/environment/application.rb
51
+ - lib/presently/page.rb
52
+ - lib/presently/page.xrb
53
+ - lib/presently/presentation.rb
54
+ - lib/presently/presentation_controller.rb
55
+ - lib/presently/presenter_view.rb
56
+ - lib/presently/slide.rb
57
+ - lib/presently/slide_view.rb
58
+ - lib/presently/state.rb
59
+ - lib/presently/version.rb
60
+ - license.md
61
+ - public/_components/@socketry/syntax/Syntax.js
62
+ - public/_components/@socketry/syntax/Syntax/CodeElement.js
63
+ - public/_components/@socketry/syntax/Syntax/Errors.js
64
+ - public/_components/@socketry/syntax/Syntax/Language.js
65
+ - public/_components/@socketry/syntax/Syntax/Language/apache.js
66
+ - public/_components/@socketry/syntax/Syntax/Language/applescript.js
67
+ - public/_components/@socketry/syntax/Syntax/Language/assembly.js
68
+ - public/_components/@socketry/syntax/Syntax/Language/bash-script.js
69
+ - public/_components/@socketry/syntax/Syntax/Language/bash.js
70
+ - public/_components/@socketry/syntax/Syntax/Language/basic.js
71
+ - public/_components/@socketry/syntax/Syntax/Language/c++.js
72
+ - public/_components/@socketry/syntax/Syntax/Language/c.js
73
+ - public/_components/@socketry/syntax/Syntax/Language/clang.js
74
+ - public/_components/@socketry/syntax/Syntax/Language/cpp.js
75
+ - public/_components/@socketry/syntax/Syntax/Language/csharp.js
76
+ - public/_components/@socketry/syntax/Syntax/Language/css.js
77
+ - public/_components/@socketry/syntax/Syntax/Language/diff.js
78
+ - public/_components/@socketry/syntax/Syntax/Language/go.js
79
+ - public/_components/@socketry/syntax/Syntax/Language/haskell.js
80
+ - public/_components/@socketry/syntax/Syntax/Language/html.js
81
+ - public/_components/@socketry/syntax/Syntax/Language/io.js
82
+ - public/_components/@socketry/syntax/Syntax/Language/java.js
83
+ - public/_components/@socketry/syntax/Syntax/Language/javascript.js
84
+ - public/_components/@socketry/syntax/Syntax/Language/json.js
85
+ - public/_components/@socketry/syntax/Syntax/Language/lisp.js
86
+ - public/_components/@socketry/syntax/Syntax/Language/lua.js
87
+ - public/_components/@socketry/syntax/Syntax/Language/markdown.js
88
+ - public/_components/@socketry/syntax/Syntax/Language/nginx.js
89
+ - public/_components/@socketry/syntax/Syntax/Language/objective-c.js
90
+ - public/_components/@socketry/syntax/Syntax/Language/ocaml.js
91
+ - public/_components/@socketry/syntax/Syntax/Language/pascal.js
92
+ - public/_components/@socketry/syntax/Syntax/Language/patch.js
93
+ - public/_components/@socketry/syntax/Syntax/Language/perl5.js
94
+ - public/_components/@socketry/syntax/Syntax/Language/php-script.js
95
+ - public/_components/@socketry/syntax/Syntax/Language/php.js
96
+ - public/_components/@socketry/syntax/Syntax/Language/plain.js
97
+ - public/_components/@socketry/syntax/Syntax/Language/protobuf.js
98
+ - public/_components/@socketry/syntax/Syntax/Language/python.js
99
+ - public/_components/@socketry/syntax/Syntax/Language/ruby.js
100
+ - public/_components/@socketry/syntax/Syntax/Language/scala.js
101
+ - public/_components/@socketry/syntax/Syntax/Language/smalltalk.js
102
+ - public/_components/@socketry/syntax/Syntax/Language/sql.js
103
+ - public/_components/@socketry/syntax/Syntax/Language/super-collider.js
104
+ - public/_components/@socketry/syntax/Syntax/Language/swift.js
105
+ - public/_components/@socketry/syntax/Syntax/Language/xml.js
106
+ - public/_components/@socketry/syntax/Syntax/Language/xrb.js
107
+ - public/_components/@socketry/syntax/Syntax/Language/yaml.js
108
+ - public/_components/@socketry/syntax/Syntax/Loader.js
109
+ - public/_components/@socketry/syntax/Syntax/Match.js
110
+ - public/_components/@socketry/syntax/Syntax/Rule.js
111
+ - public/_components/@socketry/syntax/bin/syntax-ast.js
112
+ - public/_components/@socketry/syntax/examples/_template.html
113
+ - public/_components/@socketry/syntax/examples/apache.html
114
+ - public/_components/@socketry/syntax/examples/applescript.html
115
+ - public/_components/@socketry/syntax/examples/assembly.html
116
+ - public/_components/@socketry/syntax/examples/bash.html
117
+ - public/_components/@socketry/syntax/examples/basic.html
118
+ - public/_components/@socketry/syntax/examples/c.html
119
+ - public/_components/@socketry/syntax/examples/clang.html
120
+ - public/_components/@socketry/syntax/examples/csharp.html
121
+ - public/_components/@socketry/syntax/examples/css-colors.html
122
+ - public/_components/@socketry/syntax/examples/custom-theme.html
123
+ - public/_components/@socketry/syntax/examples/diff.html
124
+ - public/_components/@socketry/syntax/examples/examples.css
125
+ - public/_components/@socketry/syntax/examples/go.html
126
+ - public/_components/@socketry/syntax/examples/haskell.html
127
+ - public/_components/@socketry/syntax/examples/html.html
128
+ - public/_components/@socketry/syntax/examples/index.html
129
+ - public/_components/@socketry/syntax/examples/io.html
130
+ - public/_components/@socketry/syntax/examples/java.html
131
+ - public/_components/@socketry/syntax/examples/javascript.html
132
+ - public/_components/@socketry/syntax/examples/json.html
133
+ - public/_components/@socketry/syntax/examples/lisp.html
134
+ - public/_components/@socketry/syntax/examples/lua.html
135
+ - public/_components/@socketry/syntax/examples/markdown.html
136
+ - public/_components/@socketry/syntax/examples/mixed.html
137
+ - public/_components/@socketry/syntax/examples/nginx.html
138
+ - public/_components/@socketry/syntax/examples/ocaml.html
139
+ - public/_components/@socketry/syntax/examples/pascal.html
140
+ - public/_components/@socketry/syntax/examples/perl5.html
141
+ - public/_components/@socketry/syntax/examples/php-script.html
142
+ - public/_components/@socketry/syntax/examples/php.html
143
+ - public/_components/@socketry/syntax/examples/plain.html
144
+ - public/_components/@socketry/syntax/examples/protobuf.html
145
+ - public/_components/@socketry/syntax/examples/python.html
146
+ - public/_components/@socketry/syntax/examples/readme.md
147
+ - public/_components/@socketry/syntax/examples/ruby.html
148
+ - public/_components/@socketry/syntax/examples/scala.html
149
+ - public/_components/@socketry/syntax/examples/smalltalk.html
150
+ - public/_components/@socketry/syntax/examples/sql.html
151
+ - public/_components/@socketry/syntax/examples/super-collider.html
152
+ - public/_components/@socketry/syntax/examples/swift.html
153
+ - public/_components/@socketry/syntax/examples/wrap-demo.html
154
+ - public/_components/@socketry/syntax/examples/xml.html
155
+ - public/_components/@socketry/syntax/examples/xrb.html
156
+ - public/_components/@socketry/syntax/examples/yaml.html
157
+ - public/_components/@socketry/syntax/license.md
158
+ - public/_components/@socketry/syntax/package-lock.json
159
+ - public/_components/@socketry/syntax/package.json
160
+ - public/_components/@socketry/syntax/readme.md
161
+ - public/_components/@socketry/syntax/test/Syntax.js
162
+ - public/_components/@socketry/syntax/test/Syntax/CodeElement.js
163
+ - public/_components/@socketry/syntax/test/Syntax/ErrorHandling.js
164
+ - public/_components/@socketry/syntax/test/Syntax/Language.js
165
+ - public/_components/@socketry/syntax/test/Syntax/Language/apache.js
166
+ - public/_components/@socketry/syntax/test/Syntax/Language/applescript.js
167
+ - public/_components/@socketry/syntax/test/Syntax/Language/assembly.js
168
+ - public/_components/@socketry/syntax/test/Syntax/Language/bash-script.js
169
+ - public/_components/@socketry/syntax/test/Syntax/Language/bash.js
170
+ - public/_components/@socketry/syntax/test/Syntax/Language/basic.js
171
+ - public/_components/@socketry/syntax/test/Syntax/Language/clang.js
172
+ - public/_components/@socketry/syntax/test/Syntax/Language/csharp.js
173
+ - public/_components/@socketry/syntax/test/Syntax/Language/css.js
174
+ - public/_components/@socketry/syntax/test/Syntax/Language/diff.js
175
+ - public/_components/@socketry/syntax/test/Syntax/Language/go.js
176
+ - public/_components/@socketry/syntax/test/Syntax/Language/haskell.js
177
+ - public/_components/@socketry/syntax/test/Syntax/Language/html.js
178
+ - public/_components/@socketry/syntax/test/Syntax/Language/io.js
179
+ - public/_components/@socketry/syntax/test/Syntax/Language/java.js
180
+ - public/_components/@socketry/syntax/test/Syntax/Language/javascript.js
181
+ - public/_components/@socketry/syntax/test/Syntax/Language/json.js
182
+ - public/_components/@socketry/syntax/test/Syntax/Language/lisp.js
183
+ - public/_components/@socketry/syntax/test/Syntax/Language/lua.js
184
+ - public/_components/@socketry/syntax/test/Syntax/Language/markdown.js
185
+ - public/_components/@socketry/syntax/test/Syntax/Language/nginx.js
186
+ - public/_components/@socketry/syntax/test/Syntax/Language/ocaml.js
187
+ - public/_components/@socketry/syntax/test/Syntax/Language/pascal.js
188
+ - public/_components/@socketry/syntax/test/Syntax/Language/perl5.js
189
+ - public/_components/@socketry/syntax/test/Syntax/Language/php-script.js
190
+ - public/_components/@socketry/syntax/test/Syntax/Language/php.js
191
+ - public/_components/@socketry/syntax/test/Syntax/Language/plain.js
192
+ - public/_components/@socketry/syntax/test/Syntax/Language/protobuf.js
193
+ - public/_components/@socketry/syntax/test/Syntax/Language/python.js
194
+ - public/_components/@socketry/syntax/test/Syntax/Language/ruby.js
195
+ - public/_components/@socketry/syntax/test/Syntax/Language/scala.js
196
+ - public/_components/@socketry/syntax/test/Syntax/Language/smalltalk.js
197
+ - public/_components/@socketry/syntax/test/Syntax/Language/sql.js
198
+ - public/_components/@socketry/syntax/test/Syntax/Language/super-collider.js
199
+ - public/_components/@socketry/syntax/test/Syntax/Language/swift.js
200
+ - public/_components/@socketry/syntax/test/Syntax/Language/xml.js
201
+ - public/_components/@socketry/syntax/test/Syntax/Language/xrb.js
202
+ - public/_components/@socketry/syntax/test/Syntax/Language/yaml.js
203
+ - public/_components/@socketry/syntax/test/Syntax/Match.js
204
+ - public/_components/@socketry/syntax/test/Syntax/Rule.js
205
+ - public/_components/@socketry/syntax/test/helpers/ast-matcher.js
206
+ - public/_components/@socketry/syntax/themes/base/apache.css
207
+ - public/_components/@socketry/syntax/themes/base/applescript.css
208
+ - public/_components/@socketry/syntax/themes/base/assembly.css
209
+ - public/_components/@socketry/syntax/themes/base/bash.css
210
+ - public/_components/@socketry/syntax/themes/base/basic.css
211
+ - public/_components/@socketry/syntax/themes/base/c.css
212
+ - public/_components/@socketry/syntax/themes/base/clang.css
213
+ - public/_components/@socketry/syntax/themes/base/csharp.css
214
+ - public/_components/@socketry/syntax/themes/base/css.css
215
+ - public/_components/@socketry/syntax/themes/base/diff.css
216
+ - public/_components/@socketry/syntax/themes/base/go.css
217
+ - public/_components/@socketry/syntax/themes/base/haskell.css
218
+ - public/_components/@socketry/syntax/themes/base/html.css
219
+ - public/_components/@socketry/syntax/themes/base/io.css
220
+ - public/_components/@socketry/syntax/themes/base/java.css
221
+ - public/_components/@socketry/syntax/themes/base/javascript.css
222
+ - public/_components/@socketry/syntax/themes/base/json.css
223
+ - public/_components/@socketry/syntax/themes/base/lisp.css
224
+ - public/_components/@socketry/syntax/themes/base/lua.css
225
+ - public/_components/@socketry/syntax/themes/base/markdown.css
226
+ - public/_components/@socketry/syntax/themes/base/nginx.css
227
+ - public/_components/@socketry/syntax/themes/base/ocaml.css
228
+ - public/_components/@socketry/syntax/themes/base/pascal.css
229
+ - public/_components/@socketry/syntax/themes/base/perl5.css
230
+ - public/_components/@socketry/syntax/themes/base/php-script.css
231
+ - public/_components/@socketry/syntax/themes/base/php.css
232
+ - public/_components/@socketry/syntax/themes/base/plain.css
233
+ - public/_components/@socketry/syntax/themes/base/protobuf.css
234
+ - public/_components/@socketry/syntax/themes/base/python.css
235
+ - public/_components/@socketry/syntax/themes/base/ruby.css
236
+ - public/_components/@socketry/syntax/themes/base/scala.css
237
+ - public/_components/@socketry/syntax/themes/base/smalltalk.css
238
+ - public/_components/@socketry/syntax/themes/base/sql.css
239
+ - public/_components/@socketry/syntax/themes/base/super-collider.css
240
+ - public/_components/@socketry/syntax/themes/base/swift.css
241
+ - public/_components/@socketry/syntax/themes/base/syntax.css
242
+ - public/_components/@socketry/syntax/themes/base/xml.css
243
+ - public/_components/@socketry/syntax/themes/base/xrb.css
244
+ - public/_components/@socketry/syntax/themes/base/yaml.css
245
+ - public/_components/@socketry/syntax/themes/theming.md
246
+ - public/_components/@socketry/syntax/update-examples.js
247
+ - public/_static/index.css
248
+ - public/application.js
249
+ - readme.md
250
+ - releases.md
251
+ - templates/code.xrb
252
+ - templates/default.xrb
253
+ - templates/image.xrb
254
+ - templates/section.xrb
255
+ - templates/title.xrb
256
+ - templates/translation.xrb
257
+ - templates/two_column.xrb
258
+ homepage: https://github.com/socketry/presently
259
+ licenses:
260
+ - MIT
261
+ metadata:
262
+ source_code_uri: https://github.com/socketry/presently.git
263
+ rdoc_options: []
264
+ require_paths:
265
+ - lib
266
+ required_ruby_version: !ruby/object:Gem::Requirement
267
+ requirements:
268
+ - - ">="
269
+ - !ruby/object:Gem::Version
270
+ version: '3.3'
271
+ required_rubygems_version: !ruby/object:Gem::Requirement
272
+ requirements:
273
+ - - ">="
274
+ - !ruby/object:Gem::Version
275
+ version: '0'
276
+ requirements: []
277
+ rubygems_version: 4.0.6
278
+ specification_version: 4
279
+ summary: A web-based presentation tool built with Lively.
280
+ test_files: []