pageflow-vr 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/.eslintrc +38 -0
  3. data/.gitignore +10 -0
  4. data/.rspec +2 -0
  5. data/.travis.yml +5 -0
  6. data/CHANGELOG.md +7 -0
  7. data/CODE_OF_CONDUCT.md +49 -0
  8. data/Gemfile +4 -0
  9. data/README.md +60 -0
  10. data/Rakefile +9 -0
  11. data/app/assets/images/pageflow/vr/themes/default/pictograms/sprite.png +0 -0
  12. data/app/assets/images/pageflow/vr/themes/default/pictograms/wide.png +0 -0
  13. data/app/assets/images/pageflow/vr_pictogram_small.png +0 -0
  14. data/app/assets/javascripts/pageflow/vr/browser/vr_view_cardboard_support.js +3 -0
  15. data/app/assets/javascripts/pageflow/vr/browser/vr_view_support.js +4 -0
  16. data/app/assets/javascripts/pageflow/vr/components/icons/cardboard.jsx +10 -0
  17. data/app/assets/javascripts/pageflow/vr/components/icons/play.jsx +11 -0
  18. data/app/assets/javascripts/pageflow/vr/components/no_vr_view.jsx +34 -0
  19. data/app/assets/javascripts/pageflow/vr/components/page.jsx +201 -0
  20. data/app/assets/javascripts/pageflow/vr/components/vr_view.jsx +160 -0
  21. data/app/assets/javascripts/pageflow/vr/components.js +7 -0
  22. data/app/assets/javascripts/pageflow/vr/editor/views/configuration_editor_view.js +65 -0
  23. data/app/assets/javascripts/pageflow/vr/editor/views/fallback_preview_mode_view.js +9 -0
  24. data/app/assets/javascripts/pageflow/vr/editor.js +73 -0
  25. data/app/assets/javascripts/pageflow/vr/page_type.js +2 -0
  26. data/app/assets/javascripts/pageflow/vr/player/media_events.js +36 -0
  27. data/app/assets/javascripts/pageflow/vr/player.js +93 -0
  28. data/app/assets/javascripts/pageflow/vr.js +7 -0
  29. data/app/assets/stylesheets/pageflow/vr/themes/default.scss +85 -0
  30. data/app/controllers/pageflow/vr/static_files_controller.rb +13 -0
  31. data/app/views/pageflow/vr/static_files/vrview.css +55 -0
  32. data/app/views/pageflow/vr/static_files/vrview.html +22 -0
  33. data/app/views/pageflow/vr/static_files/vrview.js +44415 -0
  34. data/bin/console +14 -0
  35. data/bin/setup +8 -0
  36. data/config/locales/de.yml +94 -0
  37. data/config/locales/en.yml +94 -0
  38. data/config/routes.rb +3 -0
  39. data/lib/pageflow/vr/engine.rb +14 -0
  40. data/lib/pageflow/vr/plugin.rb +10 -0
  41. data/lib/pageflow/vr/projection_auto_detection.rb +42 -0
  42. data/lib/pageflow/vr/version.rb +5 -0
  43. data/lib/pageflow-vr.rb +31 -0
  44. data/pageflow-vr.gemspec +27 -0
  45. metadata +171 -0
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "pageflow/vr"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,94 @@
1
+ de:
2
+ pageflow:
3
+ editor:
4
+ files:
5
+ attributes:
6
+ image_files:
7
+ projection:
8
+ cell_text:
9
+ blank: "(Kein)"
10
+ equirectangular_mono: Equirectangular (Mono)
11
+ equirectangular_stereo: Equirectangular (Stereo)
12
+ column_header: Projektion
13
+ inline_help: Lege fest, ob es sich um ein mono- oder stereoskopisches 360°-Bild handelt. Diese können als Posterbild für 360°-Videos verwendet werden.
14
+ label: 360° Projektion
15
+ values:
16
+ equirectangular_mono: Equirectangular (Mono)
17
+ equirectangular_stereo: Equirectangular (Stereo)
18
+ video_files:
19
+ projection:
20
+ cell_text:
21
+ auto_detect: "(Automatisch erkennen)"
22
+ blank: "(Kein)"
23
+ equirectangular_mono: Equirectangular (Mono)
24
+ equirectangular_stereo: Equirectangular (Stereo)
25
+ column_header: Projektion
26
+ inline_help: Lege fest, ob es sich um ein mono- oder stereoskopisches 360°-Video handelt. Dieses kann mit dem Seitentyp '360° Video' zu einer interaktiven Szene gemacht werden. Vor dem Upload steht außerdem die Option 'Automatisch erkennen' zur Auswahl. Diese setzt den Wert für quadratische Videos auf 'Equirectangular (Stereo)', für Videos mit Seitenverhältnis 2:1 auf 'Equirectangular (Mono)'.
27
+ inline_help_disabled: Legt fest, ob es sich um ein mono- oder stereoskopisches 360°-Video handelt. Sobald das Video verarbeitet wurde und die automatische Erkennung abgeschlossen ist, kann die Einstellung wieder bearbeitet werden.
28
+ label: 360° Projektion
29
+ values:
30
+ auto_detect: "(Automatisch erkennen)"
31
+ equirectangular_mono: Equirectangular (Mono)
32
+ equirectangular_stereo: Equirectangular (Stereo)
33
+ filters:
34
+ image_files:
35
+ with_projection:
36
+ blank_slate: Gebe in den Datei-Einstellungen eines Bildes eine Projektion an, um es als 360° Bild zu markieren.
37
+ name: 360° Bilder
38
+ video_files:
39
+ with_projection:
40
+ blank_slate: Gebe in den Datei-Einstellungen eines Videos eine Projektion an, um es als 360° Video zu markieren.
41
+ name: 360° Videos
42
+ ui:
43
+ configuration_editor:
44
+ tabs:
45
+ vr_fallback: Fallback
46
+ vr:
47
+ help_entries:
48
+ page_type:
49
+ menu_item: 360° Video
50
+ text: "# 360° Video\n_Zeigt ein interaktives Video an, in dem sich der Benutzer umsehen kann._\n\nDas Video muss im Format \"equirectangular-panoramic\" erstellt worden sein (siehe auch [Plattkarte auf Wikipedia](https://de.wikipedia.org/wiki/Plattkarte)). Es können sowohl mono- als auch stereoskopische Videos verwendet werden:\n\n* Mono-Videos müssen das Seitenverhältnis 2:1 besitzen (z.B. 4096 x 2048).\n* Stereo-Videos müssen das Seitenverhältnis 1:1 besitzen (z.B. 4096 x 4096) wobei sich die zwei Bildbereiche dann übereinander befinden.\n\nDie zum Video passende Projektion kann beim Upload des Videos in den Datei-Einstellungen ausgewählt werden. Standardmäßig wird für Video mit den oben genannten Seitenverhältnissen automatisch die entsprechende Projektion festgelegt.\n\nIn den Einstellungen der Seite kannst Du das zu verwendende Video dann auf dem Tab \"Dateien\" festlegen. Bei der Auswahl des Videos werden nur Dateien anzeigt, die beim Upload durch Auswahl einer Projektion als 360°-Videos markiert wurden. Solltest Du beim Upload vergessen haben, eine Projektion festzulegen, kannst Du dies jederzeit in den Einstellungen der Datei nachholen. Klicke dazu im Hauptmenü auf \"Dateien verwalten\", suche das 360°-Video in der Liste heraus und klicke auf den Button mit dem Zahnrad-Symbol.\n\nDer initiale Blickwinkel kann ebenfalls auf dem Tab \"Dateien\" in den Einstellungen der Seite gewählt werden. Über die \"Autoplay\" Option steuerst Du, ob das Video direkt beim Erreichen der Seite starten soll oder erst wenn der User den Play-Button aktiviert. Beachte, dass ein automatisches Abspielen auf mobilen Geräten z.T. aus technischen Gründen nicht möglich ist.\n\nFolgende Browser unterstützen die Wiedergabe von 360°-Videos:\n\n* Aktuelle Versionen von Chrome und Firefox auf OSX, Linux und Windows.\n* Aktuelle Versionen von Safari auf OSX.\n* Aktuelle Versionen von Chrome auf Android.\n* Aktuelle Versionen von Internet Explorer 11 und Edge auf Windows.\n\nFür nicht unterstützte Plattformen kannst Du einen Link zu einem YouTube-Video hinterlegen. Auf iOS-Geräten kann das 360°-Video dann in der YouTube-App angesehen werden. Alle Optionen zur Darstellung der Seite, die angezeigt wird, falls keine 360°-Videos unterstützt werden, findest Du auf dem Tab \"Fallback\". Es kann auch ein Text festgelegt werden, um dem Benutzer zu erklären, dass sein Browser das Video nicht anzeigen kann.\n\nÜber die Option \"Fallback Vorschau ansehen\" kannst Du vorübergehend eine Vorschau der Seite ansehen, wie sie Benutzer mit nicht unterstützen Browsern angezeigt wird. "
51
+ page_attributes:
52
+ autoplay:
53
+ inline_help: Video im Hintergrund starten sobald die Seite erreicht wird. Auf mobilen Geräten ist dies aus technischen Gründen nicht möglich. Das Video startet, wenn der Benutzer auf den Play-Button klickt.
54
+ label: Autoplay
55
+ fallback_background_image_id:
56
+ inline_help: Bild, das angezeigt wird, wenn der Browser keine 360°-Videos unterstützt.
57
+ label: Fallback Bild
58
+ fallback_background_type:
59
+ inline_help: Legt fest, ob ein Bild oder ein Video angezeigt wird, wenn der Browser keine 360°-Videos unterstützt.
60
+ label: Fallback Typ
61
+ values:
62
+ image: Hintergrund-Bild
63
+ video: Hintergrund-Video
64
+ fallback_poster_image_id:
65
+ inline_help: Poster für Video, das angezeigt wird, wenn der Browser keine 360°-Videos unterstützt.
66
+ label: Fallback Video Poster
67
+ fallback_text:
68
+ inline_help: Text, der angezeigt wird, um zu erklären, dass der Browser keine 360°-Videos unterstützt. Leer lassen, um Standard-Text zu verwenden.
69
+ label: Fallback Erklärtext
70
+ fallback_video_file_id:
71
+ inline_help: Video, das angezeigt wird, wenn der Browser keine 360°-Videos unterstützt.
72
+ label: Fallback Video
73
+ fallback_you_tube_url:
74
+ inline_help: YouTube Video, das verlinkt wird, wenn der Browser keine 360°-Videos unterstützt.
75
+ label: Fallback YouTube URL
76
+ is_stereo:
77
+ inline_help: Gibt an, ob das Video im "Stacked Stereo" Format ist.
78
+ label: Stereo
79
+ poster_id:
80
+ inline_help: Wird angezeigt während das 360°-Video lädt. Wenn kein Poster ausgewählt ist, wird das erste Frame des Videos verwendet. Auf das Posterbild wird die gleiche Projektion angewendet, wie auf das Video.
81
+ label: 360°-Posterbild
82
+ preview_vr_fallback:
83
+ inline_help: Aktivieren Sie diese Option, um die Seite so zu sehen, wie sie angezeigt wird, wenn der Browser keine 360°-Videos unterstützt.
84
+ label: Fallback Vorschau ansehen
85
+ start_yaw:
86
+ inline_help: Bestimmt den initialen Blickwinkel im Video.
87
+ label: Start-Winkel
88
+ video_id:
89
+ inline_help: Video in dem der Benutzer sich umsehen kann.
90
+ label: 360°-Video
91
+ page_type_category_name: Interaktiv
92
+ page_type_description: Interaktive 360° Videos
93
+ page_type_feature_name: 360° Video Seitentyp
94
+ page_type_name: 360° Video
@@ -0,0 +1,94 @@
1
+ en:
2
+ pageflow:
3
+ editor:
4
+ files:
5
+ attributes:
6
+ image_files:
7
+ projection:
8
+ cell_text:
9
+ blank: "(none)"
10
+ equirectangular_mono: Equirectangular (mono)
11
+ equirectangular_stereo: Equirectangular (stereo)
12
+ column_header: Projection
13
+ inline_help: Determine, wether this video is a mono- or stereoscopic 360° image. It can be chosen as poster image for 360° videos.
14
+ label: 360° projection
15
+ values:
16
+ equirectangular_mono: Equirectangular (mono)
17
+ equirectangular_stereo: Equirectangular (stereo)
18
+ video_files:
19
+ projection:
20
+ cell_text:
21
+ auto_detect: "(Auto detect)"
22
+ blank: "(none)"
23
+ equirectangular_mono: Equirectangular (mono)
24
+ equirectangular_stereo: Equirectangular (stereo)
25
+ column_header: Projection
26
+ inline_help: Determine, wether this video is a mono- or stereoscopic 360° video. With the page type 360° video, interactive scenes can be built with it. Before uploading an option "Auto detect" can be chosen as well. This sets the value of square videos to "Equirectangular (stereo)", and videos with an aspect ratio of 2:1 to "Equirectangular (mono)".
27
+ inline_help_disabled: Determine, wether this video is a mono- or stereoscopic 360° video. As soon as the video is processed and auto detect is completed, this setting can be edited again.
28
+ label: 360° projection
29
+ values:
30
+ auto_detect: "(Auto detect)"
31
+ equirectangular_mono: Equirectangular (mono)
32
+ equirectangular_stereo: Equirectangular (stereo)
33
+ filters:
34
+ image_files:
35
+ with_projection:
36
+ blank_slate: Choose a projection in the file settings, to mark it as a 360° image.
37
+ name: 360° images
38
+ video_files:
39
+ with_projection:
40
+ blank_slate: Choose a projection in the file settings, to mark it as a 360° video.
41
+ name: 360° videos
42
+ ui:
43
+ configuration_editor:
44
+ tabs:
45
+ vr_fallback: Fallback
46
+ vr:
47
+ help_entries:
48
+ page_type:
49
+ menu_item: 360° video
50
+ text: "# 360° Video\n_Plays an interactive video, in which a user can look around._\n\nThe video must be created in “equirectangular-panoramic” format (see also [Wikpedia entry](https://en.wikipedia.org/wiki/Equirectangular_projection)) \nYou can use monoscopic and stereoscopic videos:\n\n* Mono-videos must have an aspect ratio of 2:1 (e.g. 4096 x 2048).\n* Stereo-videos must have an aspect ratio of 1:1 (e.g. 4096 x 4096) where the two image areas are stacked above each other.\n\nThe suitable projection for the video can be chosen while uploading in the file settings. For videos, with the above aspect ratio the right projection is selected automatically.\nYou can then determine a specific video within the page settings by clicking the tab „Files“. \n\nWhen choosing the file only such files are being displayed that were marked as 360° video while uploading. If you forgot to determine a projection in the upload process, you can subsequently change that within the settings at any time. Simply click on „manage files“, search the list for that 360° video and click onto the gear icon.\n\nThe initial view angle can also be determined via the „files“ section in the page settings. By choosing the „autoplay“ option you can specify if a video starts immediately when the page is entered or if users shall start the video with a play button. \n\nNote, that (partly) for technical reason an autoplay is not possible on mobile devices. The following browsers support playback of 360° videos:\n\n* Latest versions of Chrome and Firefox on OSX, Linux and Windows.\n* Latest versions of Safari on OSX.\n* Latest versions of Chrome on Android.\n* Latest versions of Internet Explorer 11 and Edge on Windows.\n\nFor not supported platforms, you can link to a Youtube version. The 360° video will then be displayed for iOS devices directly within the Youtube app. All general options for the appearance of a 360° video page, if 360° video playback is not supported, can be edited via the tab „Fallback“. Here you can also determine a text, to explain that a user’s browser cannot play the video.\nBy clicking the option „Fallback preview“, you can see in a preview how the page looks like for users if a browser doesn’t support 360° videos.\n\n "
51
+ page_attributes:
52
+ autoplay:
53
+ inline_help: Auto start video in the background, when this page is reached. Due to technical reasons, this option is not working on mobile devices. The video will start, when users click on the play button.
54
+ label: Autoplay
55
+ fallback_background_image_id:
56
+ inline_help: Image, that will be shown, if the browser does not support 360° videos.
57
+ label: Fallback image
58
+ fallback_background_type:
59
+ inline_help: Determines, wether an image or video will be shown, if browser does not support 360° videos.
60
+ label: Fallback type
61
+ values:
62
+ image: Background image
63
+ video: Background video
64
+ fallback_poster_image_id:
65
+ inline_help: Poster image for video, which is displayed, when a users browser does not support 360° videos.
66
+ label: Fallback video poster
67
+ fallback_text:
68
+ inline_help: Determine a text, to explain that a users browser cannot play the video. Leave empty to display the standard text.
69
+ label: Fallback explanation text
70
+ fallback_video_file_id:
71
+ inline_help: Video, that is displayed, when a users browser does not support 360° videos.
72
+ label: Fallback video
73
+ fallback_you_tube_url:
74
+ inline_help: YouTube video, that is linked, when a users browser does not support 360° videos.
75
+ label: Fallback YouTube URL
76
+ is_stereo:
77
+ inline_help: Indicates, if the video is in the "Stacked stereo" format.
78
+ label: Stereo
79
+ poster_id:
80
+ inline_help: Will be shown while the 360° video loads. If no poster image is chosen, the first video frame will be used. For the poster image, the same projection will be applied, as for the video.
81
+ label: 360° poster image
82
+ preview_vr_fallback:
83
+ inline_help: Activate this option, to view the page as it is displayed, when a users browser does not support 360° videos.
84
+ label: Show fallback preview
85
+ start_yaw:
86
+ inline_help: Determines the initial viewpoint within the video.
87
+ label: Start angle
88
+ video_id:
89
+ inline_help: Video in which a user can look around
90
+ label: 360° video
91
+ page_type_category_name: Interactive
92
+ page_type_description: Interactive 360° videos
93
+ page_type_feature_name: 360° Page type
94
+ page_type_name: 360° video
data/config/routes.rb ADDED
@@ -0,0 +1,3 @@
1
+ Pageflow::Vr::Engine.routes.draw do
2
+ get 'vrview', to: 'static_files#vrview'
3
+ end
@@ -0,0 +1,14 @@
1
+ module Pageflow
2
+ module Vr
3
+ class Engine < Rails::Engine
4
+ isolate_namespace Pageflow::Vr
5
+
6
+ config.autoload_paths << File.join(config.root, 'lib')
7
+ config.i18n.load_path += Dir[config.root.join('config', 'locales', '**', '*.yml').to_s]
8
+
9
+ initializer "pageflow-vr.add_watchable_files", group: :all do |app|
10
+ app.config.watchable_files.concat Dir["#{config.root}/app/assets/javascripts/**/*.jsx*"]
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,10 @@
1
+ module Pageflow
2
+ module Vr
3
+ class Plugin < Pageflow::Plugin
4
+ def configure(config)
5
+ config.features.register(PageTypeFeature.new(Vr.page_type))
6
+ config.hooks.on(:file_encoded, ProjectionAutoDetection.new)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,42 @@
1
+ module Pageflow
2
+ module Vr
3
+ class ProjectionAutoDetection
4
+ def call(options)
5
+ file = options[:file]
6
+ return unless file.is_a?(VideoFile)
7
+ usage = file.usages.first
8
+
9
+ if dimension_present?(file) && auto_detection_enabled?(usage)
10
+ update(usage, file)
11
+ end
12
+ end
13
+
14
+ private
15
+
16
+ def dimension_present?(video_file)
17
+ video_file.width.present? && video_file.height.present?
18
+ end
19
+
20
+ def auto_detection_enabled?(file_usage)
21
+ file_usage.configuration['projection'] == 'auto_detect'
22
+ end
23
+
24
+ def update(usage, video_file)
25
+ usage.configuration =
26
+ usage.configuration.merge(projection: detect_projection(video_file))
27
+
28
+ usage.save!
29
+ end
30
+
31
+ def detect_projection(video_file)
32
+ if video_file.width == video_file.height
33
+ 'equirectangular_stereo'
34
+ elsif video_file.width == video_file.height * 2
35
+ 'equirectangular_mono'
36
+ else
37
+ ''
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,5 @@
1
+ module Pageflow
2
+ module Vr
3
+ VERSION = '1.0.0'
4
+ end
5
+ end
@@ -0,0 +1,31 @@
1
+ require 'pageflow/vr/engine'
2
+
3
+ module Pageflow
4
+ module Vr
5
+ PAGE_TYPE_THUMBNAIL_CANDIDATES = [
6
+ {
7
+ attribute: 'thumbnail_image_id',
8
+ file_collection: 'image_files'
9
+ },
10
+ {
11
+ attribute: 'video_id',
12
+ file_collection: 'video_files'
13
+ }
14
+ ]
15
+
16
+ def self.plugin
17
+ Vr::Plugin.new
18
+ end
19
+
20
+ def self.page_type
21
+ Pageflow::React.create_page_type('vr',
22
+ thumbnail_candidates: PAGE_TYPE_THUMBNAIL_CANDIDATES)
23
+ end
24
+
25
+ def self.routes(router)
26
+ router.instance_eval do
27
+ mount Pageflow::Vr::Engine, at: '/pageflow_vr'
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'pageflow/vr/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'pageflow-vr'
8
+ spec.version = Pageflow::Vr::VERSION
9
+ spec.authors = ['Codevise Solutions']
10
+ spec.email = ['info@codevise.de']
11
+ spec.summary = 'Page type for 360° videos based on Google Vrview.'
12
+ spec.homepage = 'https://github.com/codevise/pageflow-vr'
13
+ spec.license = 'MIT'
14
+
15
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
16
+ spec.require_paths = ['lib']
17
+
18
+ spec.required_ruby_version = '~> 2.1'
19
+
20
+ spec.add_dependency 'pageflow', '~> 12.x'
21
+ spec.add_dependency 'pageflow-public-i18n', '~> 1.10'
22
+
23
+ spec.add_development_dependency 'bundler', '~> 1.12'
24
+ spec.add_development_dependency 'rake', '~> 12.0'
25
+ spec.add_development_dependency 'rspec', '~> 3.0'
26
+ spec.add_development_dependency 'semmy', '~> 1.0'
27
+ end
metadata ADDED
@@ -0,0 +1,171 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pageflow-vr
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Codevise Solutions
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-08-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pageflow
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 12.x
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 12.x
27
+ - !ruby/object:Gem::Dependency
28
+ name: pageflow-public-i18n
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.10'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.10'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.12'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.12'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '12.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '12.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: semmy
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.0'
97
+ description:
98
+ email:
99
+ - info@codevise.de
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - ".eslintrc"
105
+ - ".gitignore"
106
+ - ".rspec"
107
+ - ".travis.yml"
108
+ - CHANGELOG.md
109
+ - CODE_OF_CONDUCT.md
110
+ - Gemfile
111
+ - README.md
112
+ - Rakefile
113
+ - app/assets/images/pageflow/vr/themes/default/pictograms/sprite.png
114
+ - app/assets/images/pageflow/vr/themes/default/pictograms/wide.png
115
+ - app/assets/images/pageflow/vr_pictogram_small.png
116
+ - app/assets/javascripts/pageflow/vr.js
117
+ - app/assets/javascripts/pageflow/vr/browser/vr_view_cardboard_support.js
118
+ - app/assets/javascripts/pageflow/vr/browser/vr_view_support.js
119
+ - app/assets/javascripts/pageflow/vr/components.js
120
+ - app/assets/javascripts/pageflow/vr/components/icons/cardboard.jsx
121
+ - app/assets/javascripts/pageflow/vr/components/icons/play.jsx
122
+ - app/assets/javascripts/pageflow/vr/components/no_vr_view.jsx
123
+ - app/assets/javascripts/pageflow/vr/components/page.jsx
124
+ - app/assets/javascripts/pageflow/vr/components/vr_view.jsx
125
+ - app/assets/javascripts/pageflow/vr/editor.js
126
+ - app/assets/javascripts/pageflow/vr/editor/views/configuration_editor_view.js
127
+ - app/assets/javascripts/pageflow/vr/editor/views/fallback_preview_mode_view.js
128
+ - app/assets/javascripts/pageflow/vr/page_type.js
129
+ - app/assets/javascripts/pageflow/vr/player.js
130
+ - app/assets/javascripts/pageflow/vr/player/media_events.js
131
+ - app/assets/stylesheets/pageflow/vr/themes/default.scss
132
+ - app/controllers/pageflow/vr/static_files_controller.rb
133
+ - app/views/pageflow/vr/static_files/vrview.css
134
+ - app/views/pageflow/vr/static_files/vrview.html
135
+ - app/views/pageflow/vr/static_files/vrview.js
136
+ - bin/console
137
+ - bin/setup
138
+ - config/locales/de.yml
139
+ - config/locales/en.yml
140
+ - config/routes.rb
141
+ - lib/pageflow-vr.rb
142
+ - lib/pageflow/vr/engine.rb
143
+ - lib/pageflow/vr/plugin.rb
144
+ - lib/pageflow/vr/projection_auto_detection.rb
145
+ - lib/pageflow/vr/version.rb
146
+ - pageflow-vr.gemspec
147
+ homepage: https://github.com/codevise/pageflow-vr
148
+ licenses:
149
+ - MIT
150
+ metadata: {}
151
+ post_install_message:
152
+ rdoc_options: []
153
+ require_paths:
154
+ - lib
155
+ required_ruby_version: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '2.1'
160
+ required_rubygems_version: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ requirements: []
166
+ rubyforge_project:
167
+ rubygems_version: 2.6.8
168
+ signing_key:
169
+ specification_version: 4
170
+ summary: Page type for 360° videos based on Google Vrview.
171
+ test_files: []