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,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/controls/volume-control
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
module Controls
|
8
|
+
class VolumeControl < Component
|
9
|
+
option :hide_tooltip, type: Types::Bool, default: -> { false }
|
10
|
+
option :high_volume_icon, type: Types::String, default: -> { "#vime-volume-high" }
|
11
|
+
option :low_volume_icon, type: Types::String, default: -> { "#vime-volume-low" }
|
12
|
+
option :mute_keys, type: Types::String, default: -> { "m" }
|
13
|
+
option :muted_icon, type: Types::String, default: -> { "#vime-volume-mute" }
|
14
|
+
option :no_keyboard, type: Types::Bool, default: -> { false }
|
15
|
+
option :tooltip_direction, type: Types::TooltipDirection, optional: true
|
16
|
+
option :tooltip_position, type: Types::TooltipPosition, default: -> { "top" }
|
17
|
+
|
18
|
+
def call
|
19
|
+
tag "vime-volume-control", process_attrs(dom_attrs)
|
20
|
+
end
|
21
|
+
|
22
|
+
def dom_attrs
|
23
|
+
super.merge({
|
24
|
+
hide_tooltip: hide_tooltip,
|
25
|
+
high_volume_icon: high_volume_icon,
|
26
|
+
low_volume_icon: low_volume_icon,
|
27
|
+
mute_keys: mute_keys,
|
28
|
+
muted_icon: muted_icon,
|
29
|
+
no_keyboard: no_keyboard,
|
30
|
+
tooltip_direction: tooltip_direction,
|
31
|
+
tooltip_position: tooltip_position,
|
32
|
+
})
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/dbl-click-fullscreen
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
class DblClickFullscreen < Component
|
8
|
+
option :use_on_mobile, type: Types::Bool, default: -> { false }
|
9
|
+
|
10
|
+
def call
|
11
|
+
tag "vime-dbl-click-fullscreen", 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,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/default-ui
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
class DefaultUi < Component
|
8
|
+
option :no_captions, type: Types::Bool, default: -> { false }
|
9
|
+
option :no_click_to_play, type: Types::Bool, default: -> { false }
|
10
|
+
option :no_controls, type: Types::Bool, default: -> { false }
|
11
|
+
option :no_dbl_click_fullscreen, type: Types::Bool, default: -> { false }
|
12
|
+
option :no_icons, type: Types::Bool, default: -> { false }
|
13
|
+
option :no_poster, type: Types::Bool, default: -> { false }
|
14
|
+
option :no_settings, type: Types::Bool, default: -> { false }
|
15
|
+
option :no_skeleton, type: Types::Bool, default: -> { false }
|
16
|
+
option :no_spinner, type: Types::Bool, default: -> { false }
|
17
|
+
|
18
|
+
def call
|
19
|
+
content_tag "vime-default-ui", content, process_attrs(dom_attrs)
|
20
|
+
end
|
21
|
+
|
22
|
+
def dom_attrs
|
23
|
+
super.merge({
|
24
|
+
no_captions: no_captions,
|
25
|
+
no_click_to_play: no_click_to_play,
|
26
|
+
no_controls: no_controls,
|
27
|
+
no_dbl_click_fullscreen: no_dbl_click_fullscreen,
|
28
|
+
no_icons: no_icons,
|
29
|
+
no_poster: no_poster,
|
30
|
+
no_settings: no_settings,
|
31
|
+
no_skeleton: no_skeleton,
|
32
|
+
no_spinner: no_spinner,
|
33
|
+
})
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/lib/vime/ui/icon.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/icon
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
class Icon < Component
|
8
|
+
option :href, type: Types::String, optional: true
|
9
|
+
|
10
|
+
def call
|
11
|
+
content_tag "vime-icon", content, process_attrs(dom_attrs)
|
12
|
+
end
|
13
|
+
|
14
|
+
def dom_attrs
|
15
|
+
super.merge({
|
16
|
+
href: href,
|
17
|
+
})
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/icons
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
class Icons < Component
|
8
|
+
option :href, type: Types::String, optional: true
|
9
|
+
|
10
|
+
def call
|
11
|
+
tag "vime-icons", process_attrs(dom_attrs)
|
12
|
+
end
|
13
|
+
|
14
|
+
def dom_attrs
|
15
|
+
super.merge({
|
16
|
+
href: href,
|
17
|
+
})
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/poster
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
class Poster < Component
|
8
|
+
option :fit, type: Types::String.enum("contain", "cover", "fill", "none", "scale-down"), default: -> { "cover" }
|
9
|
+
|
10
|
+
def call
|
11
|
+
tag "vime-poster", process_attrs(dom_attrs)
|
12
|
+
end
|
13
|
+
|
14
|
+
def dom_attrs
|
15
|
+
super.merge({
|
16
|
+
fit: fit
|
17
|
+
})
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/scrim
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
class Scrim < Component
|
8
|
+
option :gradient, type: Types::String.enum("down", "up").optional, optional: true
|
9
|
+
|
10
|
+
def call
|
11
|
+
content_tag "vime-scrim", content, process_attrs(dom_attrs)
|
12
|
+
end
|
13
|
+
|
14
|
+
def dom_attrs
|
15
|
+
super.merge({
|
16
|
+
gradient: gradient,
|
17
|
+
})
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/settings/default-settings
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
module Settings
|
8
|
+
class DefaultSettings < Component
|
9
|
+
option :pin, type: Types::Pin, default: -> { "bottomRight" }
|
10
|
+
|
11
|
+
def call
|
12
|
+
tag "vime-default-settings", process_attrs(dom_attrs)
|
13
|
+
end
|
14
|
+
|
15
|
+
def dom_attrs
|
16
|
+
super.merge({
|
17
|
+
pin: pin,
|
18
|
+
})
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/settings/menu
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
module Settings
|
8
|
+
class Menu < Component
|
9
|
+
option :active, type: Types::Bool, default: -> { false }
|
10
|
+
option :controller, type: Types::String
|
11
|
+
option :identifier, type: Types::String
|
12
|
+
|
13
|
+
def call
|
14
|
+
content_tag "vime-menu", content, process_attrs(dom_attrs)
|
15
|
+
end
|
16
|
+
|
17
|
+
def dom_attrs
|
18
|
+
super.merge({
|
19
|
+
active: active,
|
20
|
+
controller: controller,
|
21
|
+
identifier: identifier,
|
22
|
+
})
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/settings/menu-item
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
module Settings
|
8
|
+
class MenuItem < Component
|
9
|
+
option :badge, type: Types::String, optional: true
|
10
|
+
option :checked, type: Types::Bool, optional: true
|
11
|
+
option :checked_icon, type: Types::String, default: -> { "#vime-checkmark" }
|
12
|
+
option :expanded, type: Types::Bool, optional: true
|
13
|
+
option :hidden, type: Types::Bool, default: -> { false }
|
14
|
+
option :hint, type: Types::String, optional: true
|
15
|
+
option :identifier, type: Types::String, optional: true
|
16
|
+
option :label, type: Types::String
|
17
|
+
option :menu, type: Types::String, optional: true
|
18
|
+
|
19
|
+
def call
|
20
|
+
tag "vime-menu-item", process_attrs(dom_attrs)
|
21
|
+
end
|
22
|
+
|
23
|
+
def dom_attrs
|
24
|
+
super.merge({
|
25
|
+
badge: badge,
|
26
|
+
checked: checked,
|
27
|
+
checked_icon: checked_icon,
|
28
|
+
expanded: expanded,
|
29
|
+
hidden: hidden,
|
30
|
+
hint: hint,
|
31
|
+
identifier: identifier,
|
32
|
+
label: label,
|
33
|
+
menu: menu,
|
34
|
+
})
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/settings/menu-radio
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
module Settings
|
8
|
+
class MenuRadio < Component
|
9
|
+
option :badge, type: Types::String, optional: true
|
10
|
+
option :checked, type: Types::Bool, default: -> { false }
|
11
|
+
option :checked_icon, type: Types::String, default: -> { "#vime-checkmark" }
|
12
|
+
option :label, type: Types::String
|
13
|
+
option :value, type: Types::String
|
14
|
+
|
15
|
+
def call
|
16
|
+
tag "vime-menu-radio", process_attrs(dom_attrs)
|
17
|
+
end
|
18
|
+
|
19
|
+
def dom_attrs
|
20
|
+
super.merge({
|
21
|
+
badge: badge,
|
22
|
+
checked: checked,
|
23
|
+
checked_icon: checked_icon,
|
24
|
+
label: label,
|
25
|
+
value: value,
|
26
|
+
})
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/settings/menu-radio-group
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
module Settings
|
8
|
+
class MenuRadioGroup < Component
|
9
|
+
option :value, type: Types::String, optional: true
|
10
|
+
|
11
|
+
def call
|
12
|
+
content_tag "vime-menu-radio-group", content, process_attrs(dom_attrs)
|
13
|
+
end
|
14
|
+
|
15
|
+
def dom_attrs
|
16
|
+
super.merge({
|
17
|
+
value: value,
|
18
|
+
})
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/settings/settings
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
module Settings
|
8
|
+
class Settings < Component
|
9
|
+
option :active, type: Types::Bool, default: -> { false }
|
10
|
+
option :controls_height, type: Types::Integer, default: -> { 0 }
|
11
|
+
option :pin, type: Types::Pin, default: -> { "bottomRight" }
|
12
|
+
|
13
|
+
def call
|
14
|
+
content_tag "vime-settings", content, process_attrs(dom_attrs)
|
15
|
+
end
|
16
|
+
|
17
|
+
def dom_attrs
|
18
|
+
super.merge({
|
19
|
+
active: active,
|
20
|
+
controls_height: controls_height,
|
21
|
+
pin: pin,
|
22
|
+
})
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/settings/submenu
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
module Settings
|
8
|
+
class Submenu < Component
|
9
|
+
option :active, type: Types::Bool, default: -> { false }
|
10
|
+
option :hidden, type: Types::Bool, default: -> { false }
|
11
|
+
option :hint, type: Types::String, optional: true
|
12
|
+
option :label, type: Types::String
|
13
|
+
|
14
|
+
def call
|
15
|
+
content_tag "vime-submenu", content, process_attrs(dom_attrs)
|
16
|
+
end
|
17
|
+
|
18
|
+
def dom_attrs
|
19
|
+
super.merge({
|
20
|
+
active: active,
|
21
|
+
hidden: hidden,
|
22
|
+
hint: hint,
|
23
|
+
label: label,
|
24
|
+
})
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/skeleton
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
class Skeleton < Component
|
8
|
+
option :effect, type: Types::String.enum("none", "sheen"), default: -> { "sheen" }
|
9
|
+
|
10
|
+
def call
|
11
|
+
tag "vime-skeleton", process_attrs(dom_attrs)
|
12
|
+
end
|
13
|
+
|
14
|
+
def dom_attrs
|
15
|
+
super.merge({
|
16
|
+
effect: effect
|
17
|
+
})
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @see https://vimejs.com/components/ui/slider
|
4
|
+
|
5
|
+
module Vime
|
6
|
+
module Ui
|
7
|
+
class Slider < Component
|
8
|
+
option :label, type: Types::String, optional: true
|
9
|
+
option :max, type: Types::Integer, default: -> { 10 }
|
10
|
+
option :min, type: Types::Integer, default: -> { 0 }
|
11
|
+
option :step, type: Types::Integer, default: -> { 1 }
|
12
|
+
option :value, type: Types::Integer, default: -> { 5 }
|
13
|
+
option :value_text, type: Types::String, optional: true
|
14
|
+
|
15
|
+
def call
|
16
|
+
tag "vime-slider", process_attrs(dom_attrs)
|
17
|
+
end
|
18
|
+
|
19
|
+
def dom_attrs
|
20
|
+
super.merge({
|
21
|
+
label: label,
|
22
|
+
max: max,
|
23
|
+
min: min,
|
24
|
+
step: step,
|
25
|
+
value: value,
|
26
|
+
value_text: value_text,
|
27
|
+
})
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|