diff options
Diffstat (limited to 'services/nuldoc/lib')
| -rw-r--r-- | services/nuldoc/lib/nuldoc/dom/html_builder.rb | 3 | ||||
| -rw-r--r-- | services/nuldoc/lib/nuldoc/pages/slide_page.rb | 27 | ||||
| -rw-r--r-- | services/nuldoc/lib/nuldoc/renderers/html.rb | 2 |
3 files changed, 30 insertions, 2 deletions
diff --git a/services/nuldoc/lib/nuldoc/dom/html_builder.rb b/services/nuldoc/lib/nuldoc/dom/html_builder.rb index 2a506640..044b52cf 100644 --- a/services/nuldoc/lib/nuldoc/dom/html_builder.rb +++ b/services/nuldoc/lib/nuldoc/dom/html_builder.rb @@ -23,17 +23,20 @@ module Nuldoc def hr(**attrs) = elem('hr', **attrs) def html(**attrs, &) = elem('html', **attrs, &) def img(**attrs) = elem('img', **attrs) + def input(**attrs) = elem('input', **attrs) def li(**attrs, &) = elem('li', **attrs, &) def link(**attrs) = elem('link', **attrs) def main(**attrs, &) = elem('main', **attrs, &) def meta(**attrs) = elem('meta', **attrs) def nav(**attrs, &) = elem('nav', **attrs, &) + def noscript(**attrs, &) = elem('noscript', **attrs, &) def ol(**attrs, &) = elem('ol', **attrs, &) def p(**attrs, &) = elem('p', **attrs, &) def script(**attrs, &) = elem('script', **attrs, &) def section(**attrs, &) = elem('section', **attrs, &) def span(**attrs, &) = elem('span', **attrs, &) def strong(**attrs, &) = elem('strong', **attrs, &) + def style(**attrs, &) = elem('style', **attrs, &) def table(**attrs, &) = elem('table', **attrs, &) def tbody(**attrs, &) = elem('tbody', **attrs, &) def thead(**attrs, &) = elem('thead', **attrs, &) diff --git a/services/nuldoc/lib/nuldoc/pages/slide_page.rb b/services/nuldoc/lib/nuldoc/pages/slide_page.rb index f58be386..3645008d 100644 --- a/services/nuldoc/lib/nuldoc/pages/slide_page.rb +++ b/services/nuldoc/lib/nuldoc/pages/slide_page.rb @@ -47,8 +47,21 @@ module Nuldoc end end end - div class: 'slide-container' do - canvas id: 'slide', 'data-slide-link': slide.slide_link + div class: 'slide-container', id: 'slide-container', + 'data-slide-link': slide.slide_link do + div class: 'slide-stage', id: 'slide-stage' do + canvas id: 'slide' + div class: 'textLayer', id: 'text-layer' + div class: 'annotationLayer', id: 'annotation-layer' + end + div class: 'slide-status', id: 'slide-status', + role: 'status', 'aria-live': 'polite', hidden: 'hidden' + end + noscript do + style { raw '.slide-container,.controllers-buttons{display:none}' } + p class: 'slide-noscript' do + a(href: slide.slide_link) { text 'PDF をダウンロード' } + end end div class: 'controllers' do div class: 'controllers-buttons' do @@ -59,6 +72,13 @@ module Nuldoc elem 'path', d: 'M15 18l-6-6 6-6' end end + div class: 'page-indicator' do + input id: 'page-input', class: 'page-input', type: 'number', + min: '1', step: '1', value: '1', inputmode: 'numeric', + 'aria-label': 'ページ番号' + span(class: 'page-separator') { text '/' } + span(class: 'page-count', id: 'page-count') { text '–' } + end button id: 'next', type: 'button', 'aria-label': '次のページ (→/l)', title: '次のページ (→/l)' do elem 'svg', width: '20', height: '20', viewBox: '0 0 24 24', fill: 'none', @@ -67,6 +87,9 @@ module Nuldoc end end end + a(class: 'slide-download', href: slide.slide_link, download: '') do + text 'PDF をダウンロード' + end end render Components::StaticScript, site: 'slides', diff --git a/services/nuldoc/lib/nuldoc/renderers/html.rb b/services/nuldoc/lib/nuldoc/renderers/html.rb index d71692e5..a03e99a2 100644 --- a/services/nuldoc/lib/nuldoc/renderers/html.rb +++ b/services/nuldoc/lib/nuldoc/renderers/html.rb @@ -28,6 +28,7 @@ module Nuldoc 'li' => { type: :block }, 'link' => { type: :block, self_closing: true }, 'img' => { type: :inline, self_closing: true }, + 'input' => { type: :inline, self_closing: true }, 'ins' => { type: :inline }, 'main' => { type: :block }, 'mark' => { type: :inline }, @@ -41,6 +42,7 @@ module Nuldoc 'section' => { type: :block }, 'span' => { type: :inline }, 'strong' => { type: :inline }, + 'style' => { type: :block }, 'sub' => { type: :inline }, 'sup' => { type: :inline }, 'table' => { type: :block }, |
