vime_view_components 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +35 -0
- data/Rakefile +12 -0
- data/lib/vime/component.rb +39 -0
- data/lib/vime/core/embed.rb +27 -0
- data/lib/vime/core/player.rb +53 -0
- data/lib/vime/core/playground.rb +29 -0
- data/lib/vime/providers/audio.rb +25 -0
- data/lib/vime/providers/dailymotion.rb +37 -0
- data/lib/vime/providers/dash.rb +39 -0
- data/lib/vime/providers/file.rb +37 -0
- data/lib/vime/providers/hls.rb +33 -0
- data/lib/vime/providers/video.rb +29 -0
- data/lib/vime/providers/vimeo.rb +31 -0
- data/lib/vime/providers/youtube.rb +27 -0
- data/lib/vime/ui/captions.rb +23 -0
- data/lib/vime/ui/click_to_play.rb +21 -0
- data/lib/vime/ui/controls/caption_control.rb +33 -0
- data/lib/vime/ui/controls/control.rb +35 -0
- data/lib/vime/ui/controls/control_group.rb +23 -0
- data/lib/vime/ui/controls/control_spacer.rb +15 -0
- data/lib/vime/ui/controls/controls.rb +43 -0
- data/lib/vime/ui/controls/default_controls.rb +29 -0
- data/lib/vime/ui/controls/fullscreen_control.rb +33 -0
- data/lib/vime/ui/controls/mute_control.rb +35 -0
- data/lib/vime/ui/controls/pip_control.rb +33 -0
- data/lib/vime/ui/controls/playback_control.rb +33 -0
- data/lib/vime/ui/controls/scrubber_control.rb +27 -0
- data/lib/vime/ui/controls/settings_control.rb +31 -0
- data/lib/vime/ui/controls/volume_control.rb +37 -0
- data/lib/vime/ui/dbl_click_fullscreen.rb +21 -0
- data/lib/vime/ui/default_ui.rb +37 -0
- data/lib/vime/ui/icon.rb +21 -0
- data/lib/vime/ui/icons.rb +21 -0
- data/lib/vime/ui/live_indicator.rb +13 -0
- data/lib/vime/ui/poster.rb +21 -0
- data/lib/vime/ui/scrim.rb +21 -0
- data/lib/vime/ui/settings/default_settings.rb +23 -0
- data/lib/vime/ui/settings/menu.rb +27 -0
- data/lib/vime/ui/settings/menu_item.rb +39 -0
- data/lib/vime/ui/settings/menu_radio.rb +31 -0
- data/lib/vime/ui/settings/menu_radio_group.rb +23 -0
- data/lib/vime/ui/settings/settings.rb +27 -0
- data/lib/vime/ui/settings/submenu.rb +29 -0
- data/lib/vime/ui/skeleton.rb +21 -0
- data/lib/vime/ui/slider.rb +31 -0
- data/lib/vime/ui/spinner.rb +13 -0
- data/lib/vime/ui/time/current_time.rb +23 -0
- data/lib/vime/ui/time/end_time.rb +23 -0
- data/lib/vime/ui/time/time.rb +27 -0
- data/lib/vime/ui/time/time_progress.rb +25 -0
- data/lib/vime/ui/tooltip.rb +27 -0
- data/lib/vime/ui/ui.rb +13 -0
- data/lib/vime_view_components.rb +68 -0
- data/lib/vime_view_components/version.rb +5 -0
- metadata +204 -0
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/providers/youtube
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Providers
|
7
|
+
class Youtube < Component
|
8
|
+
option :cookies, type: Types::Bool, default: -> { false }
|
9
|
+
option :poster, type: Types::String, optional: true
|
10
|
+
option :show_fullscreen_control, type: Types::Bool, default: -> { true }
|
11
|
+
option :video_id, type: Types::String
|
12
|
+
|
13
|
+
def call
|
14
|
+
tag "vime-youtube", process_attrs(dom_attrs)
|
15
|
+
end
|
16
|
+
|
17
|
+
def dom_attrs
|
18
|
+
super.merge({
|
19
|
+
cookies: cookies,
|
20
|
+
poster: poster,
|
21
|
+
show_fullscreen_control: show_fullscreen_control,
|
22
|
+
video_id: video_id,
|
23
|
+
})
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/captions
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
class Captions < Component
|
8
|
+
option :controls_height, type: Types::Integer, default: -> { 0 }
|
9
|
+
option :hidden, type: Types::Bool, default: -> { false }
|
10
|
+
|
11
|
+
def call
|
12
|
+
tag "vime-captions", process_attrs(dom_attrs)
|
13
|
+
end
|
14
|
+
|
15
|
+
def dom_attrs
|
16
|
+
super.merge({
|
17
|
+
controls_height: controls_height,
|
18
|
+
hidden: hidden,
|
19
|
+
})
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/click-to-play
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
class ClickToPlay < Component
|
8
|
+
option :use_on_mobile, type: Types::Bool, default: -> { false }
|
9
|
+
|
10
|
+
def call
|
11
|
+
tag "vime-click-to-play", process_attrs(dom_attrs)
|
12
|
+
end
|
13
|
+
|
14
|
+
def dom_attrs
|
15
|
+
super.merge({
|
16
|
+
use_on_mobile: use_on_mobile,
|
17
|
+
})
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/controls/caption-control
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
module Controls
|
8
|
+
class CaptionControl < Component
|
9
|
+
option :hide_icon, type: Types::String, default: -> { "#vime-captions-off" }
|
10
|
+
option :hide_tooltip, type: Types::Bool, default: -> { false }
|
11
|
+
option :keys, type: Types::String, default: -> { "c" }
|
12
|
+
option :show_icon, type: Types::String, default: -> { "#vime-captions-on" }
|
13
|
+
option :tooltip_direction, type: Types::TooltipDirection, optional: true
|
14
|
+
option :tooltip_position, type: Types::TooltipPosition, default: -> { "top" }
|
15
|
+
|
16
|
+
def call
|
17
|
+
tag "vime-caption-control", process_attrs(dom_attrs)
|
18
|
+
end
|
19
|
+
|
20
|
+
def dom_attrs
|
21
|
+
super.merge({
|
22
|
+
hide_icon: hide_icon,
|
23
|
+
hide_tooltip: hide_tooltip,
|
24
|
+
keys: keys,
|
25
|
+
show_icon: show_icon,
|
26
|
+
tooltip_direction: tooltip_direction,
|
27
|
+
tooltip_position: tooltip_position,
|
28
|
+
})
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/controls/control
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
module Controls
|
8
|
+
class Control < Component
|
9
|
+
option :expanded, type: Types::Bool, optional: true
|
10
|
+
option :hidden, type: Types::Bool, default: -> { false }
|
11
|
+
option :identifier, type: Types::String, optional: true
|
12
|
+
option :keys, type: Types::String, optional: true
|
13
|
+
option :label, type: Types::String
|
14
|
+
option :menu, type: Types::String, optional: true
|
15
|
+
option :pressed, type: Types::Bool, optional: true
|
16
|
+
|
17
|
+
def call
|
18
|
+
content_tag "vime-control", content, process_attrs(dom_attrs)
|
19
|
+
end
|
20
|
+
|
21
|
+
def dom_attrs
|
22
|
+
super.merge({
|
23
|
+
expanded: expanded,
|
24
|
+
hidden: hidden,
|
25
|
+
identifier: identifier,
|
26
|
+
keys: keys,
|
27
|
+
label: label,
|
28
|
+
menu: menu,
|
29
|
+
pressed: pressed,
|
30
|
+
})
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/controls/control-group
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
module Controls
|
8
|
+
class ControlGroup < Component
|
9
|
+
option :space, type: Types::String.enum("both", "bottom", "none", "top"), default: -> { "none" }
|
10
|
+
|
11
|
+
def call
|
12
|
+
content_tag "vime-control-group", content, process_attrs(dom_attrs)
|
13
|
+
end
|
14
|
+
|
15
|
+
def dom_attrs
|
16
|
+
super.merge({
|
17
|
+
space: space,
|
18
|
+
})
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/controls/control-spacer
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
module Controls
|
8
|
+
class ControlSpacer < Component
|
9
|
+
def call
|
10
|
+
tag "vime-control-spacer", process_attrs(dom_attrs)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/controls/controls
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
module Controls
|
8
|
+
class Controls < Component
|
9
|
+
option :active_duration, type: Types::Integer, default: -> { 2750 }
|
10
|
+
option :align, type: Types::String.enum("center", "end", "start"), default: -> { "center" }
|
11
|
+
option :direction, type: Types::String.enum("column", "row"), default: -> { "row" }
|
12
|
+
option :full_height, type: Types::Bool, default: -> { false }
|
13
|
+
option :full_width, type: Types::Bool, default: -> { false }
|
14
|
+
option :hidden, type: Types::Bool, default: -> { false }
|
15
|
+
option :hide_on_mouse_leave, type: Types::Bool, default: -> { false }
|
16
|
+
option :hide_when_paused, type: Types::Bool, default: -> { false }
|
17
|
+
option :justify, type: Types::String.enum("center", "end", "space-around", "space-between", "space-evenly", "start"), default: -> { "start" }
|
18
|
+
option :pin, type: Types::Pin, default: -> { "bottomLeft" }
|
19
|
+
option :wait_for_playback_start, type: Types::Bool, default: -> { false }
|
20
|
+
|
21
|
+
def call
|
22
|
+
content_tag "vime-controls", content, process_attrs(dom_attrs)
|
23
|
+
end
|
24
|
+
|
25
|
+
def dom_attrs
|
26
|
+
super.merge({
|
27
|
+
active_duration: active_duration,
|
28
|
+
align: align,
|
29
|
+
direction: direction,
|
30
|
+
full_height: full_height,
|
31
|
+
full_width: full_width,
|
32
|
+
hidden: hidden,
|
33
|
+
hide_on_mouse_leave: hide_on_mouse_leave,
|
34
|
+
hide_when_paused: hide_when_paused,
|
35
|
+
justify: justify,
|
36
|
+
pin: pin,
|
37
|
+
wait_for_playback_start: wait_for_playback_start
|
38
|
+
})
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/controls/default-controls
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
module Controls
|
8
|
+
class DefaultControls < Component
|
9
|
+
option :active_duration, type: Types::Integer, default: -> { 2750 }
|
10
|
+
option :hide_on_mouse_leave, type: Types::Bool, default: -> { false }
|
11
|
+
option :hide_when_paused, type: Types::Bool, default: -> { false }
|
12
|
+
option :wait_for_playback_start, type: Types::Bool, default: -> { false }
|
13
|
+
|
14
|
+
def call
|
15
|
+
tag "vime-default-controls", process_attrs(dom_attrs)
|
16
|
+
end
|
17
|
+
|
18
|
+
def dom_attrs
|
19
|
+
super.merge({
|
20
|
+
active_duration: active_duration,
|
21
|
+
hide_on_mouse_leave: hide_on_mouse_leave,
|
22
|
+
hide_when_paused: hide_when_paused,
|
23
|
+
wait_for_playback_start: wait_for_playback_start
|
24
|
+
})
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/controls/fullscreen-control
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
module Controls
|
8
|
+
class FullscreenControl < Component
|
9
|
+
option :enter_icon, type: Types::String, default: -> { "#vime-enter-fullscreen" }
|
10
|
+
option :exit_icon, type: Types::String, default: -> { "#vime-exit-fullscreen" }
|
11
|
+
option :hide_tooltip, type: Types::Bool, default: -> { false }
|
12
|
+
option :keys, type: Types::String, optional: true, default: -> { "f" }
|
13
|
+
option :tooltip_direction, type: Types::TooltipDirection, optional: true
|
14
|
+
option :tooltip_position, type: Types::TooltipPosition, default: -> { "top" }
|
15
|
+
|
16
|
+
def call
|
17
|
+
tag "vime-fullscreen-control", process_attrs(dom_attrs)
|
18
|
+
end
|
19
|
+
|
20
|
+
def dom_attrs
|
21
|
+
super.merge({
|
22
|
+
enter_icon: enter_icon,
|
23
|
+
exit_icon: exit_icon,
|
24
|
+
hide_tooltip: hide_tooltip,
|
25
|
+
keys: keys,
|
26
|
+
tooltip_direction: tooltip_direction,
|
27
|
+
tooltip_position: tooltip_position,
|
28
|
+
})
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/controls/mute-control
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
module Controls
|
8
|
+
class MuteControl < Component
|
9
|
+
option :hide_tooltip, type: Types::Bool, default: -> { false }
|
10
|
+
option :high_volume_icon, type: Types::String, default: -> { "#vime-volume-high" }
|
11
|
+
option :keys, type: Types::String.optional, default: -> { "m" }
|
12
|
+
option :low_volume_icon, type: Types::String, default: -> { "#vime-volume-low" }
|
13
|
+
option :muted_icon, type: Types::String, default: -> { "#vime-volume-mute" }
|
14
|
+
option :tooltip_direction, type: Types::TooltipDirection, optional: true
|
15
|
+
option :tooltip_position, type: Types::TooltipPosition, default: -> { "top" }
|
16
|
+
|
17
|
+
def call
|
18
|
+
tag "vime-mute-control", process_attrs(dom_attrs)
|
19
|
+
end
|
20
|
+
|
21
|
+
def dom_attrs
|
22
|
+
super.merge({
|
23
|
+
hide_tooltip: hide_tooltip,
|
24
|
+
high_volume_icon: high_volume_icon,
|
25
|
+
keys: keys,
|
26
|
+
low_volume_icon: low_volume_icon,
|
27
|
+
muted_icon: muted_icon,
|
28
|
+
tooltip_direction: tooltip_direction,
|
29
|
+
tooltip_position: tooltip_position,
|
30
|
+
})
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/controls/pip-control
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
module Controls
|
8
|
+
class PipControl < Component
|
9
|
+
option :enter_icon, type: Types::String, default: -> { "#vime-enter-pip" }
|
10
|
+
option :exit_icon, type: Types::String, default: -> { "#vime-exit-pip" }
|
11
|
+
option :hide_tooltip, type: Types::Bool, default: -> { false }
|
12
|
+
option :keys, type: Types::String, default: -> { "p" }
|
13
|
+
option :tooltip_direction, type: Types::TooltipDirection, optional: true
|
14
|
+
option :tooltip_position, type: Types::TooltipPosition, default: -> { "top" }
|
15
|
+
|
16
|
+
def call
|
17
|
+
tag "vime-pip-control", process_attrs(dom_attrs)
|
18
|
+
end
|
19
|
+
|
20
|
+
def dom_attrs
|
21
|
+
super.merge({
|
22
|
+
enter_icon: enter_icon,
|
23
|
+
exit_icon: exit_icon,
|
24
|
+
hide_tooltip: hide_tooltip,
|
25
|
+
keys: keys,
|
26
|
+
tooltip_direction: tooltip_direction,
|
27
|
+
tooltip_position: tooltip_position,
|
28
|
+
})
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/controls/playback-control
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
module Controls
|
8
|
+
class PlaybackControl < Component
|
9
|
+
option :hide_tooltip, type: Types::Bool, default: -> { false }
|
10
|
+
option :keys, type: Types::String.optional, default: -> { "k" }
|
11
|
+
option :play_icon, type: Types::String, default: -> { "#vime-play" }
|
12
|
+
option :pause_icon, type: Types::String, default: -> { "#vime-pause" }
|
13
|
+
option :tooltip_direction, type: Types::TooltipDirection, optional: true
|
14
|
+
option :tooltip_position, type: Types::TooltipPosition, default: -> { "top" }
|
15
|
+
|
16
|
+
def call
|
17
|
+
tag "vime-playback-control", process_attrs(dom_attrs)
|
18
|
+
end
|
19
|
+
|
20
|
+
def dom_attrs
|
21
|
+
super.merge({
|
22
|
+
hide_tooltip: hide_tooltip,
|
23
|
+
keys: keys,
|
24
|
+
pause_icon: pause_icon,
|
25
|
+
play_icon: play_icon,
|
26
|
+
tooltip_direction: tooltip_direction,
|
27
|
+
tooltip_position: tooltip_position,
|
28
|
+
})
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/controls/scrubber-control
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
module Controls
|
8
|
+
class ScrubberControl < Component
|
9
|
+
option :always_show_hours, type: Types::Bool, default: -> { false }
|
10
|
+
option :hide_tooltip, type: Types::Bool, default: -> { false }
|
11
|
+
option :no_keyboard, type: Types::Bool, default: -> { false }
|
12
|
+
|
13
|
+
def call
|
14
|
+
tag "vime-scrubber-control", process_attrs(dom_attrs)
|
15
|
+
end
|
16
|
+
|
17
|
+
def dom_attrs
|
18
|
+
super.merge({
|
19
|
+
always_show_hours: always_show_hours,
|
20
|
+
hide_tooltip: hide_tooltip,
|
21
|
+
no_keyboard: no_keyboard,
|
22
|
+
})
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @eee https://vimejs.com/components/ui/controls/settings-control
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
module Controls
|
8
|
+
class SettingsControl < Component
|
9
|
+
option :expanded, type: Types::Bool, default: -> { false }
|
10
|
+
option :icon, type: Types::String, default: -> { "#vime-settings" }
|
11
|
+
option :menu, type: Types::String, optional: true
|
12
|
+
option :tooltip_direction, type: Types::TooltipDirection, optional: true
|
13
|
+
option :tooltip_position, type: Types::TooltipPosition, default: -> { "top" }
|
14
|
+
|
15
|
+
def call
|
16
|
+
tag "vime-settings-control", process_attrs(dom_attrs)
|
17
|
+
end
|
18
|
+
|
19
|
+
def dom_attrs
|
20
|
+
super.merge({
|
21
|
+
expanded: expanded,
|
22
|
+
icon: icon,
|
23
|
+
menu: menu,
|
24
|
+
tooltip_direction: tooltip_direction,
|
25
|
+
tooltip_position: tooltip_position,
|
26
|
+
})
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|