12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- /*
- * <<
- * Davinci
- * ==
- * Copyright (C) 2016 - 2017 EDP
- * ==
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * >>
- */
- import React, { useEffect, useState, useCallback } from 'react'
- import { useSelector } from 'react-redux'
- import { makeSelectCurrentProject } from 'containers/Projects/selectors'
- import { makeSelectCurrentDisplay } from 'containers/Viz/selectors'
- import Reveal from 'reveal.js'
- import 'reveal.js/dist/reveal.css'
- import RevealZoom from 'reveal.js/plugin/zoom/plugin'
- import Display from './Display'
- import { DefaultDisplayParams } from '../components/Setting/constants'
- import { useStatistic } from './hooks'
- const DisplayReveal: React.FC = () => {
- const [currentSlideIndex, setCurrentSlideIndex] = useState(0)
- const currentProject = useSelector(makeSelectCurrentProject())
- const currentDisplay = useSelector(makeSelectCurrentDisplay())
- useStatistic(currentProject, currentDisplay)
- const { autoPlay, autoSlide, transitionStyle, transitionSpeed } =
- currentDisplay.config.displayParams || DefaultDisplayParams
- useEffect(() => {
- Reveal.initialize({
- hash: false,
- history: false,
- controls: true,
- controlsLayout: 'edges',
- controlsTutorial: false,
- progress: false,
- loop: true,
- width: '100%',
- height: '100%',
- margin: 0,
- minScale: 1,
- maxScale: 1,
- autoSlide: autoPlay !== false ? autoSlide * 1000 : 0,
- transition: transitionStyle,
- transitionSpeed,
- viewDistance: 100,
- plugins: [RevealZoom]
- })
- }, [])
- const slideChanged = useCallback((e) => {
- const { indexh: slideIdx } = e
- setCurrentSlideIndex(slideIdx)
- }, [])
- useEffect(() => {
- Reveal.addEventListener('slidechanged', slideChanged)
- return () => {
- Reveal.removeEventListener('slidechanged', slideChanged)
- }
- }, [])
- return (
- <div className="reveal">
- <div className="slides">
- <Display slideIndex={currentSlideIndex} />
- </div>
- </div>
- )
- }
- export default DisplayReveal
|