Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
2
2015-12-uni-ffm
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
CmS
2015-12-uni-ffm
Commits
85540509
Commit
85540509
authored
12 years ago
by
akiersky
Browse files
Options
Downloads
Patches
Plain Diff
updated min.js to match
parent
049880db
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
js/reveal.min.js
+1
-44
1 addition, 44 deletions
js/reveal.min.js
with
1 addition
and
44 deletions
js/reveal.min.js
+
1
−
44
View file @
85540509
...
...
@@ -5,47 +5,4 @@
*
* Copyright (C) 2012 Hakim El Hattab, http://hakim.se
*/
var
Reveal
=
(
function
(){
var
j
=
"
#reveal .slides>section
"
,
a
=
"
#reveal .slides>section.present>section
"
,
e
=!!
(
"
ontouchstart
"
in
window
),
k
=
0
,
c
=
0
,
G
=
{
controls
:
false
,
progress
:
false
,
history
:
false
,
loop
:
false
,
mouseWheel
:
true
,
rollingLinks
:
true
,
transition
:
"
default
"
,
theme
:
"
default
"
},
N
=
[],
d
=
{},
H
=
document
.
body
.
style
.
perspectiveProperty
!==
undefined
||
document
.
body
.
style
.
WebkitPerspective
!==
undefined
||
document
.
body
.
style
.
MozPerspective
!==
undefined
||
document
.
body
.
style
.
msPerspective
!==
undefined
||
document
.
body
.
style
.
OPerspective
!==
undefined
,
l
=
document
.
body
.
style
.
transformProperty
!==
undefined
||
document
.
body
.
style
.
WebkitTransform
!==
undefined
||
document
.
body
.
style
.
MozTransform
!==
undefined
||
document
.
body
.
style
.
msTransform
!==
undefined
||
document
.
body
.
style
.
OTransform
!==
undefined
,
v
=
0
,
y
=
0
;
function
h
(
P
){
if
(
!
l
&&!
H
){
document
.
body
.
setAttribute
(
"
class
"
,
"
no-transforms
"
);
return
;}
d
.
wrapper
=
document
.
querySelector
(
"
#reveal
"
);
d
.
progress
=
document
.
querySelector
(
"
#reveal .progress
"
);
d
.
progressbar
=
document
.
querySelector
(
"
#reveal .progress span
"
);
d
.
controls
=
document
.
querySelector
(
"
#reveal .controls
"
);
d
.
controlsLeft
=
document
.
querySelector
(
"
#reveal .controls .left
"
);
d
.
controlsRight
=
document
.
querySelector
(
"
#reveal .controls .right
"
);
d
.
controlsUp
=
document
.
querySelector
(
"
#reveal .controls .up
"
);
d
.
controlsDown
=
document
.
querySelector
(
"
#reveal .controls .down
"
);
document
.
addEventListener
(
"
keydown
"
,
M
,
false
);
document
.
addEventListener
(
"
touchstart
"
,
w
,
false
);
window
.
addEventListener
(
"
hashchange
"
,
t
,
false
);
d
.
controlsLeft
.
addEventListener
(
"
click
"
,
n
(
x
),
false
);
d
.
controlsRight
.
addEventListener
(
"
click
"
,
n
(
i
),
false
);
d
.
controlsUp
.
addEventListener
(
"
click
"
,
n
(
r
),
false
);
d
.
controlsDown
.
addEventListener
(
"
click
"
,
n
(
A
),
false
);
q
(
G
,
P
);
if
(
H
===
false
){
G
.
transition
=
"
linear
"
;}
if
(
G
.
controls
){
d
.
controls
.
style
.
display
=
"
block
"
;}
if
(
G
.
progress
){
d
.
progress
.
style
.
display
=
"
block
"
;}
if
(
G
.
transition
!==
"
default
"
){
d
.
wrapper
.
classList
.
add
(
G
.
transition
);
}
if
(
G
.
theme
!==
"
default
"
){
d
.
wrapper
.
classList
.
add
(
G
.
theme
);}
if
(
G
.
mouseWheel
){
document
.
addEventListener
(
"
DOMMouseScroll
"
,
m
,
false
);
document
.
addEventListener
(
"
mousewheel
"
,
m
,
false
);
}
if
(
G
.
rollingLinks
){
D
();}
C
();
if
(
navigator
.
userAgent
.
match
(
/
(
iphone|ipod|android
)
/i
)){
document
.
documentElement
.
style
.
overflow
=
"
scroll
"
;
document
.
body
.
style
.
height
=
"
120%
"
;
window
.
addEventListener
(
"
load
"
,
K
,
false
);
window
.
addEventListener
(
"
orientationchange
"
,
K
,
false
);}}
function
q
(
Q
,
P
){
for
(
var
R
in
P
){
Q
[
R
]
=
P
[
R
];}}
function
n
(
P
){
return
function
(
Q
){
Q
.
preventDefault
();
P
.
call
();};}
function
K
(){
setTimeout
(
function
(){
window
.
scrollTo
(
0
,
1
);},
0
);}
function
M
(
Q
){
if
(
Q
.
target
.
contentEditable
!=
"
inherit
"
||
Q
.
shiftKey
||
Q
.
altKey
||
Q
.
ctrlKey
||
Q
.
metaKey
){
return
;
}
var
P
=
false
;
switch
(
Q
.
keyCode
){
case
80
:
case
33
:
I
();
P
=
true
;
break
;
case
78
:
case
34
:
u
();
P
=
true
;
break
;
case
72
:
case
37
:
x
();
P
=
true
;
break
;
case
76
:
case
39
:
i
();
P
=
true
;
break
;
case
75
:
case
38
:
r
();
P
=
true
;
break
;
case
74
:
case
40
:
A
();
P
=
true
;
break
;
case
36
:
E
(
0
);
P
=
true
;
break
;
case
35
:
E
(
Number
.
MAX_VALUE
);
P
=
true
;
break
;
case
32
:
J
()?
L
():
u
();
P
=
true
;
break
;
case
13
:
if
(
J
()){
L
();
P
=
true
;}
break
;}
if
(
P
){
Q
.
preventDefault
();}
else
{
if
(
Q
.
keyCode
===
27
&&
H
){
if
(
J
()){
L
();}
else
{
B
();}
Q
.
preventDefault
();}}}
function
w
(
S
){
if
(
S
.
touches
.
length
===
1
){
if
(
S
.
target
.
tagName
.
toLowerCase
()
===
"
a
"
||
S
.
target
.
tagName
.
toLowerCase
()
===
"
img
"
){
return
;
}
S
.
preventDefault
();
var
Q
=
{
x
:
S
.
touches
[
0
].
clientX
,
y
:
S
.
touches
[
0
].
clientY
};
var
P
=
window
.
innerWidth
*
0.3
;
var
R
=
window
.
innerHeight
*
0.3
;
if
(
Q
.
x
<
P
){
x
();}
else
{
if
(
Q
.
x
>
window
.
innerWidth
-
P
){
i
();
}
else
{
if
(
Q
.
y
<
R
){
r
();}
else
{
if
(
Q
.
y
>
window
.
innerHeight
-
R
){
A
();}}}}
b
();}}
function
m
(
P
){
clearTimeout
(
v
);
v
=
setTimeout
(
function
(){
var
Q
=
P
.
detail
||-
P
.
wheelDelta
;
if
(
Q
>
0
){
u
();}
else
{
I
();}},
100
);}
function
t
(
P
){
C
();}
function
D
(){
if
(
H
){
var
Q
=
document
.
querySelectorAll
(
"
#reveal .slides section a:not(.image)
"
);
for
(
var
R
=
0
,
P
=
Q
.
length
;
R
<
P
;
R
++
){
var
S
=
Q
[
R
];
if
(
S
.
textContent
&&!
S
.
querySelector
(
"
img
"
)
&&
(
!
S
.
className
||!
S
.
classList
.
contains
(
S
,
"
roll
"
))){
S
.
classList
.
add
(
"
roll
"
);
S
.
innerHTML
=
'
<span data-title="
'
+
S
.
text
+
'
">
'
+
S
.
innerHTML
+
"
</span>
"
;
}}}}
function
B
(){
d
.
wrapper
.
classList
.
add
(
"
overview
"
);
var
P
=
Array
.
prototype
.
slice
.
call
(
document
.
querySelectorAll
(
j
));
for
(
var
U
=
0
,
S
=
P
.
length
;
U
<
S
;
U
++
){
var
R
=
P
[
U
],
Y
=
"
translateZ(-2500px) translate(
"
+
((
U
-
k
)
*
105
)
+
"
%, 0%)
"
;
R
.
setAttribute
(
"
data-index-h
"
,
U
);
R
.
style
.
display
=
"
block
"
;
R
.
style
.
WebkitTransform
=
Y
;
R
.
style
.
MozTransform
=
Y
;
R
.
style
.
msTransform
=
Y
;
R
.
style
.
OTransform
=
Y
;
R
.
style
.
transform
=
Y
;
if
(
!
R
.
classList
.
contains
(
"
stack
"
)){
R
.
addEventListener
(
"
click
"
,
z
,
true
);}
var
X
=
Array
.
prototype
.
slice
.
call
(
R
.
querySelectorAll
(
"
section
"
));
for
(
var
T
=
0
,
Q
=
X
.
length
;
T
<
Q
;
T
++
){
var
W
=
X
[
T
],
V
=
"
translate(0%,
"
+
((
T
-
c
)
*
105
)
+
"
%)
"
;
W
.
setAttribute
(
"
data-index-h
"
,
U
);
W
.
setAttribute
(
"
data-index-v
"
,
T
);
W
.
style
.
display
=
"
block
"
;
W
.
style
.
WebkitTransform
=
V
;
W
.
style
.
MozTransform
=
V
;
W
.
style
.
msTransform
=
V
;
W
.
style
.
OTransform
=
V
;
W
.
style
.
transform
=
V
;
W
.
addEventListener
(
"
click
"
,
z
,
true
);}}}
function
L
(){
d
.
wrapper
.
classList
.
remove
(
"
overview
"
);
var
S
=
Array
.
prototype
.
slice
.
call
(
document
.
querySelectorAll
(
"
#reveal .slides section
"
));
for
(
var
R
=
0
,
P
=
S
.
length
;
R
<
P
;
R
++
){
var
Q
=
S
[
R
];
Q
.
style
.
WebkitTransform
=
""
;
Q
.
style
.
MozTransform
=
""
;
Q
.
style
.
msTransform
=
""
;
Q
.
style
.
OTransform
=
""
;
Q
.
style
.
transform
=
""
;
Q
.
removeEventListener
(
"
click
"
,
z
);}
b
();}
function
J
(){
return
d
.
wrapper
.
classList
.
contains
(
"
overview
"
);
}
function
z
(
P
){
if
(
J
()){
P
.
preventDefault
();
L
();
k
=
this
.
getAttribute
(
"
data-index-h
"
);
c
=
this
.
getAttribute
(
"
data-index-v
"
);
b
();}}
function
O
(
Q
,
S
){
var
U
=
Array
.
prototype
.
slice
.
call
(
document
.
querySelectorAll
(
Q
)),
V
=
U
.
length
;
if
(
V
){
if
(
G
.
loop
){
S
%=
V
;
if
(
S
<
0
){
S
=
V
+
S
;}}
S
=
Math
.
max
(
Math
.
min
(
S
,
V
-
1
),
0
);
for
(
var
T
=
0
;
T
<
V
;
T
++
){
var
P
=
U
[
T
];
if
(
J
()
===
false
){
var
W
=
Math
.
abs
((
S
-
T
)
%
(
V
-
3
))
||
0
;
P
.
style
.
display
=
W
>
3
?
"
none
"
:
"
block
"
;
}
U
[
T
].
classList
.
remove
(
"
past
"
);
U
[
T
].
classList
.
remove
(
"
present
"
);
U
[
T
].
classList
.
remove
(
"
future
"
);
if
(
T
<
S
){
U
[
T
].
classList
.
add
(
"
past
"
);}
else
{
if
(
T
>
S
){
U
[
T
].
classList
.
add
(
"
future
"
);
}}
if
(
P
.
querySelector
(
"
section
"
)){
U
[
T
].
classList
.
add
(
"
stack
"
);}}
U
[
S
].
classList
.
add
(
"
present
"
);
var
R
=
U
[
S
].
getAttribute
(
"
data-state
"
);
if
(
R
){
N
=
N
.
concat
(
R
.
split
(
"
"
));
}}
else
{
S
=
0
;}
return
S
;}
function
b
(){
var
S
=
N
.
concat
();
N
.
length
=
0
;
k
=
O
(
j
,
k
);
c
=
O
(
a
,
c
);
stateLoop
:
for
(
var
R
=
0
,
P
=
N
.
length
;
R
<
P
;
R
++
){
for
(
var
Q
=
0
;
Q
<
S
.
length
;
Q
++
){
if
(
S
[
Q
]
===
N
[
R
]){
S
.
splice
(
Q
,
1
);
continue
stateLoop
;}}
document
.
documentElement
.
classList
.
add
(
N
[
R
]);
o
(
N
[
R
]);}
while
(
S
.
length
){
document
.
documentElement
.
classList
.
remove
(
S
.
pop
());}
if
(
G
.
progress
){
d
.
progressbar
.
style
.
width
=
(
k
/
(
document
.
querySelectorAll
(
j
).
length
-
1
))
*
window
.
innerWidth
+
"
px
"
;
}
if
(
J
()){
B
();}
p
();
clearTimeout
(
y
);
y
=
setTimeout
(
g
,
1500
);
o
(
"
slidechanged
"
,{
indexh
:
k
,
indexv
:
c
});}
function
p
(){
var
P
=
f
();[
d
.
controlsLeft
,
d
.
controlsRight
,
d
.
controlsUp
,
d
.
controlsDown
].
forEach
(
function
(
Q
){
Q
.
classList
.
remove
(
"
enabled
"
);
});
if
(
P
.
left
){
d
.
controlsLeft
.
classList
.
add
(
"
enabled
"
);}
if
(
P
.
right
){
d
.
controlsRight
.
classList
.
add
(
"
enabled
"
);}
if
(
P
.
up
){
d
.
controlsUp
.
classList
.
add
(
"
enabled
"
);
}
if
(
P
.
down
){
d
.
controlsDown
.
classList
.
add
(
"
enabled
"
);}}
function
f
(){
var
P
=
document
.
querySelectorAll
(
j
);
var
Q
=
document
.
querySelectorAll
(
a
);
return
{
left
:
k
>
0
,
right
:
k
<
P
.
length
-
1
,
up
:
c
>
0
,
down
:
c
<
Q
.
length
-
1
};
}
function
C
(){
var
P
=
window
.
location
.
hash
.
slice
(
2
).
split
(
"
/
"
);
k
=
parseInt
(
P
[
0
])
||
0
;
c
=
parseInt
(
P
[
1
])
||
0
;
E
(
k
,
c
);}
function
g
(){
if
(
G
.
history
){
var
P
=
"
/
"
;
if
(
k
>
0
||
c
>
0
){
P
+=
k
;
}
if
(
c
>
0
){
P
+=
"
/
"
+
c
;}
window
.
location
.
hash
=
P
;}}
function
o
(
Q
,
P
){
var
R
=
document
.
createEvent
(
"
HTMLEvents
"
,
1
,
2
);
R
.
initEvent
(
Q
,
true
,
true
);
q
(
R
,
P
);
d
.
wrapper
.
dispatchEvent
(
R
);
}
function
s
(){
if
(
document
.
querySelector
(
a
+
"
.present
"
)){
var
Q
=
document
.
querySelectorAll
(
a
+
"
.present .fragment:not(.visible)
"
);
if
(
Q
.
length
){
Q
[
0
].
classList
.
add
(
"
visible
"
);
return
true
;}}
else
{
var
P
=
document
.
querySelectorAll
(
j
+
"
.present .fragment:not(.visible)
"
);
if
(
P
.
length
){
P
[
0
].
classList
.
add
(
"
visible
"
);
return
true
;}}
return
false
;
}
function
F
(){
if
(
document
.
querySelector
(
a
+
"
.present
"
)){
var
Q
=
document
.
querySelectorAll
(
a
+
"
.present .fragment.visible
"
);
if
(
Q
.
length
){
Q
[
Q
.
length
-
1
].
classList
.
remove
(
"
visible
"
);
return
true
;}}
else
{
var
P
=
document
.
querySelectorAll
(
j
+
"
.present .fragment.visible
"
);
if
(
P
.
length
){
P
[
P
.
length
-
1
].
classList
.
remove
(
"
visible
"
);
return
true
;}}
return
false
;
}
function
E
(
Q
,
P
){
k
=
Q
===
undefined
?
k
:
Q
;
c
=
P
===
undefined
?
c
:
P
;
b
();}
function
x
(){
if
(
J
()
||
F
()
===
false
){
k
--
;
c
=
0
;
b
();}}
function
i
(){
if
(
J
()
||
s
()
===
false
){
k
++
;
c
=
0
;
b
();}}
function
r
(){
if
(
J
()
||
F
()
===
false
){
c
--
;
b
();}}
function
A
(){
if
(
J
()
||
s
()
===
false
){
c
++
;
b
();}}
function
I
(){
if
(
F
()
===
false
){
if
(
f
().
up
){
r
();}
else
{
var
P
=
document
.
querySelector
(
"
#reveal .slides>section.past:nth-child(
"
+
k
+
"
)
"
);
if
(
P
){
c
=
(
P
.
querySelectorAll
(
"
section
"
).
length
+
1
)
||
0
;
k
--
;
b
();}}}}
function
u
(){
if
(
s
()
===
false
){
f
().
down
?
A
():
i
();}}
return
{
initialize
:
h
,
navigateTo
:
E
,
navigateLeft
:
x
,
navigateRight
:
i
,
navigateUp
:
r
,
navigateDown
:
A
,
addEventListener
:
function
(
Q
,
R
,
P
){(
d
.
wrapper
||
document
.
querySelector
(
"
#reveal
"
)).
addEventListener
(
Q
,
R
,
P
);
},
removeEventListener
:
function
(
Q
,
R
,
P
){(
d
.
wrapper
||
document
.
querySelector
(
"
#reveal
"
)).
removeEventListener
(
Q
,
R
,
P
);}};})();
\ No newline at end of file
var
Reveal
=
(
function
(){
var
HORIZONTAL_SLIDES_SELECTOR
=
'
#reveal .slides>section
'
,
VERTICAL_SLIDES_SELECTOR
=
'
#reveal .slides>section.present>section
'
,
IS_TOUCH_DEVICE
=!!
(
'
ontouchstart
'
in
window
),
indexh
=
0
,
indexv
=
0
,
config
=
{
controls
:
false
,
progress
:
false
,
history
:
false
,
loop
:
false
,
mouseWheel
:
true
,
rollingLinks
:
true
,
transition
:
'
default
'
,
theme
:
'
default
'
,
swipeDist
:
30
},
state
=
[],
dom
=
{},
supports3DTransforms
=
document
.
body
.
style
[
'
perspectiveProperty
'
]
!==
undefined
||
document
.
body
.
style
[
'
WebkitPerspective
'
]
!==
undefined
||
document
.
body
.
style
[
'
MozPerspective
'
]
!==
undefined
||
document
.
body
.
style
[
'
msPerspective
'
]
!==
undefined
||
document
.
body
.
style
[
'
OPerspective
'
]
!==
undefined
,
supports2DTransforms
=
document
.
body
.
style
[
'
transformProperty
'
]
!==
undefined
||
document
.
body
.
style
[
'
WebkitTransform
'
]
!==
undefined
||
document
.
body
.
style
[
'
MozTransform
'
]
!==
undefined
||
document
.
body
.
style
[
'
msTransform
'
]
!==
undefined
||
document
.
body
.
style
[
'
OTransform
'
]
!==
undefined
,
mouseWheelTimeout
=
0
,
writeURLTimeout
=
0
;
function
initialize
(
options
){
if
(
!
supports2DTransforms
&&!
supports3DTransforms
){
document
.
body
.
setAttribute
(
'
class
'
,
'
no-transforms
'
);
return
;}
dom
.
wrapper
=
document
.
querySelector
(
'
#reveal
'
);
dom
.
progress
=
document
.
querySelector
(
'
#reveal .progress
'
);
dom
.
progressbar
=
document
.
querySelector
(
'
#reveal .progress span
'
);
dom
.
controls
=
document
.
querySelector
(
'
#reveal .controls
'
);
dom
.
controlsLeft
=
document
.
querySelector
(
'
#reveal .controls .left
'
);
dom
.
controlsRight
=
document
.
querySelector
(
'
#reveal .controls .right
'
);
dom
.
controlsUp
=
document
.
querySelector
(
'
#reveal .controls .up
'
);
dom
.
controlsDown
=
document
.
querySelector
(
'
#reveal .controls .down
'
);
document
.
addEventListener
(
'
keydown
'
,
onDocumentKeyDown
,
false
);
document
.
addEventListener
(
'
touchstart
'
,
onDocumentTouchStart
,
false
);
document
.
addEventListener
(
'
touchmove
'
,
onDocumentTouchMove
,
false
);
document
.
addEventListener
(
'
touchend
'
,
onDocumentTouchEnd
,
false
);
window
.
addEventListener
(
'
hashchange
'
,
onWindowHashChange
,
false
);
dom
.
controlsLeft
.
addEventListener
(
'
click
'
,
preventAndForward
(
navigateLeft
),
false
);
dom
.
controlsRight
.
addEventListener
(
'
click
'
,
preventAndForward
(
navigateRight
),
false
);
dom
.
controlsUp
.
addEventListener
(
'
click
'
,
preventAndForward
(
navigateUp
),
false
);
dom
.
controlsDown
.
addEventListener
(
'
click
'
,
preventAndForward
(
navigateDown
),
false
);
extend
(
config
,
options
);
if
(
supports3DTransforms
===
false
){
config
.
transition
=
'
linear
'
;}
if
(
config
.
controls
){
dom
.
controls
.
style
.
display
=
'
block
'
;}
if
(
config
.
progress
){
dom
.
progress
.
style
.
display
=
'
block
'
;}
if
(
config
.
transition
!==
'
default
'
){
dom
.
wrapper
.
classList
.
add
(
config
.
transition
);}
if
(
config
.
theme
!==
'
default
'
){
dom
.
wrapper
.
classList
.
add
(
config
.
theme
);}
if
(
config
.
mouseWheel
){
document
.
addEventListener
(
'
DOMMouseScroll
'
,
onDocumentMouseScroll
,
false
);
document
.
addEventListener
(
'
mousewheel
'
,
onDocumentMouseScroll
,
false
);}
if
(
config
.
rollingLinks
){
linkify
();}
readURL
();
if
(
navigator
.
userAgent
.
match
(
/
(
iphone|ipod|android
)
/i
)){
document
.
documentElement
.
style
.
overflow
=
'
scroll
'
;
document
.
body
.
style
.
height
=
'
120%
'
;
window
.
addEventListener
(
'
load
'
,
removeAddressBar
,
false
);
window
.
addEventListener
(
'
orientationchange
'
,
removeAddressBar
,
false
);}}
function
extend
(
a
,
b
){
for
(
var
i
in
b
){
a
[
i
]
=
b
[
i
];}}
function
preventAndForward
(
delegate
){
return
function
(
event
){
event
.
preventDefault
();
delegate
.
call
();}}
function
removeAddressBar
(){
setTimeout
(
function
(){
window
.
scrollTo
(
0
,
1
);},
0
);}
function
onDocumentKeyDown
(
event
){
if
(
event
.
target
.
contentEditable
!=
'
inherit
'
||
event
.
shiftKey
||
event
.
altKey
||
event
.
ctrlKey
||
event
.
metaKey
)
return
;
var
triggered
=
false
;
switch
(
event
.
keyCode
){
case
80
:
case
33
:
navigatePrev
();
triggered
=
true
;
break
;
case
78
:
case
34
:
navigateNext
();
triggered
=
true
;
break
;
case
72
:
case
37
:
navigateLeft
();
triggered
=
true
;
break
;
case
76
:
case
39
:
navigateRight
();
triggered
=
true
;
break
;
case
75
:
case
38
:
navigateUp
();
triggered
=
true
;
break
;
case
74
:
case
40
:
navigateDown
();
triggered
=
true
;
break
;
case
36
:
navigateTo
(
0
);
triggered
=
true
;
break
;
case
35
:
navigateTo
(
Number
.
MAX_VALUE
);
triggered
=
true
;
break
;
case
32
:
overviewIsActive
()?
deactivateOverview
():
navigateNext
();
triggered
=
true
;
break
;
case
13
:
if
(
overviewIsActive
()){
deactivateOverview
();
triggered
=
true
;}
break
;}
if
(
triggered
){
event
.
preventDefault
();}
else
if
(
event
.
keyCode
===
27
&&
supports3DTransforms
){
if
(
overviewIsActive
()){
deactivateOverview
();}
else
{
activateOverview
();}
event
.
preventDefault
();}}
var
touchStart
=
{}
var
gesture
=
false
;
function
onDocumentTouchStart
(
event
){
touchStart
=
{
x
:
event
.
touches
[
0
].
clientX
,
y
:
event
.
touches
[
0
].
clientY
};
if
(
event
.
target
.
tagName
.
toLowerCase
()
===
'
a
'
||
event
.
target
.
tagName
.
toLowerCase
()
===
'
img
'
){}
else
{
event
.
preventDefault
();}}
function
onDocumentTouchMove
(
event
){
event
.
preventDefault
();
if
(
!
gesture
){
var
touch
=
{
x
:
event
.
touches
[
0
].
clientX
,
y
:
event
.
touches
[
0
].
clientY
};
if
((
touch
.
x
-
touchStart
.
x
)
>
config
.
swipeDist
){
gesture
=
true
;
navigateLeft
();}
else
if
((
touch
.
x
-
touchStart
.
x
)
<-
config
.
swipeDist
){
gesture
=
true
;
navigateRight
();}
else
if
((
touch
.
y
-
touchStart
.
y
)
>
config
.
swipeDist
){
gesture
=
true
;
navigateUp
();}
else
if
((
touch
.
y
-
touchStart
.
y
)
<-
config
.
swipeDist
){
gesture
=
true
;
navigateDown
();}}}
function
onDocumentTouchEnd
(
event
){
if
(
!
gesture
){
if
(
event
.
target
.
tagName
.
toLowerCase
()
===
'
a
'
||
event
.
target
.
tagName
.
toLowerCase
()
===
'
img
'
){
return
;}
var
wt
=
window
.
innerWidth
*
0.3
;
var
ht
=
window
.
innerHeight
*
0.3
;
if
(
touchStart
.
x
<
wt
){
navigateLeft
();}
else
if
(
touchStart
.
x
>
window
.
innerWidth
-
wt
){
navigateRight
();}
else
if
(
touchStart
.
y
<
ht
){
navigateUp
();}
else
if
(
touchStart
.
y
>
window
.
innerHeight
-
ht
){
navigateDown
();}}
gesture
=
false
;
event
.
preventDefault
();}
function
onDocumentMouseScroll
(
event
){
clearTimeout
(
mouseWheelTimeout
);
mouseWheelTimeout
=
setTimeout
(
function
(){
var
delta
=
event
.
detail
||-
event
.
wheelDelta
;
if
(
delta
>
0
){
navigateNext
();}
else
{
navigatePrev
();}},
100
);}
function
onWindowHashChange
(
event
){
readURL
();}
function
linkify
(){
if
(
supports3DTransforms
){
var
nodes
=
document
.
querySelectorAll
(
'
#reveal .slides section a:not(.image)
'
);
for
(
var
i
=
0
,
len
=
nodes
.
length
;
i
<
len
;
i
++
){
var
node
=
nodes
[
i
];
if
(
node
.
textContent
&&!
node
.
querySelector
(
'
img
'
)
&&
(
!
node
.
className
||!
node
.
classList
.
contains
(
node
,
'
roll
'
))){
node
.
classList
.
add
(
'
roll
'
);
node
.
innerHTML
=
'
<span data-title="
'
+
node
.
text
+
'
">
'
+
node
.
innerHTML
+
'
</span>
'
;}};}}
function
activateOverview
(){
dom
.
wrapper
.
classList
.
add
(
'
overview
'
);
var
horizontalSlides
=
Array
.
prototype
.
slice
.
call
(
document
.
querySelectorAll
(
HORIZONTAL_SLIDES_SELECTOR
));
for
(
var
i
=
0
,
len1
=
horizontalSlides
.
length
;
i
<
len1
;
i
++
){
var
hslide
=
horizontalSlides
[
i
],
htransform
=
'
translateZ(-2500px) translate(
'
+
((
i
-
indexh
)
*
105
)
+
'
%, 0%)
'
;
hslide
.
setAttribute
(
'
data-index-h
'
,
i
);
hslide
.
style
.
display
=
'
block
'
;
hslide
.
style
.
WebkitTransform
=
htransform
;
hslide
.
style
.
MozTransform
=
htransform
;
hslide
.
style
.
msTransform
=
htransform
;
hslide
.
style
.
OTransform
=
htransform
;
hslide
.
style
.
transform
=
htransform
;
if
(
!
hslide
.
classList
.
contains
(
'
stack
'
)){
hslide
.
addEventListener
(
'
click
'
,
onOverviewSlideClicked
,
true
);}
var
verticalSlides
=
Array
.
prototype
.
slice
.
call
(
hslide
.
querySelectorAll
(
'
section
'
));
for
(
var
j
=
0
,
len2
=
verticalSlides
.
length
;
j
<
len2
;
j
++
){
var
vslide
=
verticalSlides
[
j
],
vtransform
=
'
translate(0%,
'
+
((
j
-
indexv
)
*
105
)
+
'
%)
'
;
vslide
.
setAttribute
(
'
data-index-h
'
,
i
);
vslide
.
setAttribute
(
'
data-index-v
'
,
j
);
vslide
.
style
.
display
=
'
block
'
;
vslide
.
style
.
WebkitTransform
=
vtransform
;
vslide
.
style
.
MozTransform
=
vtransform
;
vslide
.
style
.
msTransform
=
vtransform
;
vslide
.
style
.
OTransform
=
vtransform
;
vslide
.
style
.
transform
=
vtransform
;
vslide
.
addEventListener
(
'
click
'
,
onOverviewSlideClicked
,
true
);}}}
function
deactivateOverview
(){
dom
.
wrapper
.
classList
.
remove
(
'
overview
'
);
var
slides
=
Array
.
prototype
.
slice
.
call
(
document
.
querySelectorAll
(
'
#reveal .slides section
'
));
for
(
var
i
=
0
,
len
=
slides
.
length
;
i
<
len
;
i
++
){
var
element
=
slides
[
i
];
element
.
style
.
WebkitTransform
=
''
;
element
.
style
.
MozTransform
=
''
;
element
.
style
.
msTransform
=
''
;
element
.
style
.
OTransform
=
''
;
element
.
style
.
transform
=
''
;
element
.
removeEventListener
(
'
click
'
,
onOverviewSlideClicked
);}
slide
();}
function
overviewIsActive
(){
return
dom
.
wrapper
.
classList
.
contains
(
'
overview
'
);}
function
onOverviewSlideClicked
(
event
){
if
(
overviewIsActive
()){
event
.
preventDefault
();
deactivateOverview
();
indexh
=
this
.
getAttribute
(
'
data-index-h
'
);
indexv
=
this
.
getAttribute
(
'
data-index-v
'
);
slide
();}}
function
updateSlides
(
selector
,
index
){
var
slides
=
Array
.
prototype
.
slice
.
call
(
document
.
querySelectorAll
(
selector
)),
slidesLength
=
slides
.
length
;
if
(
slidesLength
){
if
(
config
.
loop
){
index
%=
slidesLength
;
if
(
index
<
0
){
index
=
slidesLength
+
index
;}}
index
=
Math
.
max
(
Math
.
min
(
index
,
slidesLength
-
1
),
0
);
for
(
var
i
=
0
;
i
<
slidesLength
;
i
++
){
var
slide
=
slides
[
i
];
if
(
overviewIsActive
()
===
false
){
var
distance
=
Math
.
abs
((
index
-
i
)
%
(
slidesLength
-
3
))
||
0
;
slide
.
style
.
display
=
distance
>
3
?
'
none
'
:
'
block
'
;}
slides
[
i
].
classList
.
remove
(
'
past
'
);
slides
[
i
].
classList
.
remove
(
'
present
'
);
slides
[
i
].
classList
.
remove
(
'
future
'
);
if
(
i
<
index
){
slides
[
i
].
classList
.
add
(
'
past
'
);}
else
if
(
i
>
index
){
slides
[
i
].
classList
.
add
(
'
future
'
);}
if
(
slide
.
querySelector
(
'
section
'
)){
slides
[
i
].
classList
.
add
(
'
stack
'
);}}
slides
[
index
].
classList
.
add
(
'
present
'
);
var
slideState
=
slides
[
index
].
getAttribute
(
'
data-state
'
);
if
(
slideState
){
state
=
state
.
concat
(
slideState
.
split
(
'
'
));}}
else
{
index
=
0
;}
return
index
;}
function
slide
(){
var
stateBefore
=
state
.
concat
();
state
.
length
=
0
;
indexh
=
updateSlides
(
HORIZONTAL_SLIDES_SELECTOR
,
indexh
);
indexv
=
updateSlides
(
VERTICAL_SLIDES_SELECTOR
,
indexv
);
stateLoop
:
for
(
var
i
=
0
,
len
=
state
.
length
;
i
<
len
;
i
++
){
for
(
var
j
=
0
;
j
<
stateBefore
.
length
;
j
++
){
if
(
stateBefore
[
j
]
===
state
[
i
]){
stateBefore
.
splice
(
j
,
1
);
continue
stateLoop
;}}
document
.
documentElement
.
classList
.
add
(
state
[
i
]);
dispatchEvent
(
state
[
i
]);}
while
(
stateBefore
.
length
){
document
.
documentElement
.
classList
.
remove
(
stateBefore
.
pop
());}
if
(
config
.
progress
){
dom
.
progressbar
.
style
.
width
=
(
indexh
/
(
document
.
querySelectorAll
(
HORIZONTAL_SLIDES_SELECTOR
).
length
-
1
))
*
window
.
innerWidth
+
'
px
'
;}
if
(
overviewIsActive
()){
activateOverview
();}
updateControls
();
clearTimeout
(
writeURLTimeout
);
writeURLTimeout
=
setTimeout
(
writeURL
,
1500
);
dispatchEvent
(
'
slidechanged
'
,{
'
indexh
'
:
indexh
,
'
indexv
'
:
indexv
});}
function
updateControls
(){
var
routes
=
availableRoutes
();[
dom
.
controlsLeft
,
dom
.
controlsRight
,
dom
.
controlsUp
,
dom
.
controlsDown
].
forEach
(
function
(
node
){
node
.
classList
.
remove
(
'
enabled
'
);})
if
(
routes
.
left
)
dom
.
controlsLeft
.
classList
.
add
(
'
enabled
'
);
if
(
routes
.
right
)
dom
.
controlsRight
.
classList
.
add
(
'
enabled
'
);
if
(
routes
.
up
)
dom
.
controlsUp
.
classList
.
add
(
'
enabled
'
);
if
(
routes
.
down
)
dom
.
controlsDown
.
classList
.
add
(
'
enabled
'
);}
function
availableRoutes
(){
var
horizontalSlides
=
document
.
querySelectorAll
(
HORIZONTAL_SLIDES_SELECTOR
);
var
verticalSlides
=
document
.
querySelectorAll
(
VERTICAL_SLIDES_SELECTOR
);
return
{
left
:
indexh
>
0
,
right
:
indexh
<
horizontalSlides
.
length
-
1
,
up
:
indexv
>
0
,
down
:
indexv
<
verticalSlides
.
length
-
1
};}
function
readURL
(){
var
bits
=
window
.
location
.
hash
.
slice
(
2
).
split
(
'
/
'
);
indexh
=
parseInt
(
bits
[
0
])
||
0
;
indexv
=
parseInt
(
bits
[
1
])
||
0
;
navigateTo
(
indexh
,
indexv
);}
function
writeURL
(){
if
(
config
.
history
){
var
url
=
'
/
'
;
if
(
indexh
>
0
||
indexv
>
0
)
url
+=
indexh
;
if
(
indexv
>
0
)
url
+=
'
/
'
+
indexv
;
window
.
location
.
hash
=
url
;}}
function
dispatchEvent
(
type
,
properties
){
var
event
=
document
.
createEvent
(
"
HTMLEvents
"
,
1
,
2
);
event
.
initEvent
(
type
,
true
,
true
);
extend
(
event
,
properties
);
dom
.
wrapper
.
dispatchEvent
(
event
);}
function
nextFragment
(){
if
(
document
.
querySelector
(
VERTICAL_SLIDES_SELECTOR
+
'
.present
'
)){
var
verticalFragments
=
document
.
querySelectorAll
(
VERTICAL_SLIDES_SELECTOR
+
'
.present .fragment:not(.visible)
'
);
if
(
verticalFragments
.
length
){
verticalFragments
[
0
].
classList
.
add
(
'
visible
'
);
return
true
;}}
else
{
var
horizontalFragments
=
document
.
querySelectorAll
(
HORIZONTAL_SLIDES_SELECTOR
+
'
.present .fragment:not(.visible)
'
);
if
(
horizontalFragments
.
length
){
horizontalFragments
[
0
].
classList
.
add
(
'
visible
'
);
return
true
;}}
return
false
;}
function
previousFragment
(){
if
(
document
.
querySelector
(
VERTICAL_SLIDES_SELECTOR
+
'
.present
'
)){
var
verticalFragments
=
document
.
querySelectorAll
(
VERTICAL_SLIDES_SELECTOR
+
'
.present .fragment.visible
'
);
if
(
verticalFragments
.
length
){
verticalFragments
[
verticalFragments
.
length
-
1
].
classList
.
remove
(
'
visible
'
);
return
true
;}}
else
{
var
horizontalFragments
=
document
.
querySelectorAll
(
HORIZONTAL_SLIDES_SELECTOR
+
'
.present .fragment.visible
'
);
if
(
horizontalFragments
.
length
){
horizontalFragments
[
horizontalFragments
.
length
-
1
].
classList
.
remove
(
'
visible
'
);
return
true
;}}
return
false
;}
function
navigateTo
(
h
,
v
){
indexh
=
h
===
undefined
?
indexh
:
h
;
indexv
=
v
===
undefined
?
indexv
:
v
;
slide
();}
function
navigateLeft
(){
if
(
overviewIsActive
()
||
previousFragment
()
===
false
){
indexh
--
;
indexv
=
0
;
slide
();}}
function
navigateRight
(){
if
(
overviewIsActive
()
||
nextFragment
()
===
false
){
indexh
++
;
indexv
=
0
;
slide
();}}
function
navigateUp
(){
if
(
overviewIsActive
()
||
previousFragment
()
===
false
){
indexv
--
;
slide
();}}
function
navigateDown
(){
if
(
overviewIsActive
()
||
nextFragment
()
===
false
){
indexv
++
;
slide
();}}
function
navigatePrev
(){
if
(
previousFragment
()
===
false
){
if
(
availableRoutes
().
up
){
navigateUp
();}
else
{
var
previousSlide
=
document
.
querySelector
(
'
#reveal .slides>section.past:nth-child(
'
+
indexh
+
'
)
'
);
if
(
previousSlide
){
indexv
=
(
previousSlide
.
querySelectorAll
(
'
section
'
).
length
+
1
)
||
0
;
indexh
--
;
slide
();}}}}
function
navigateNext
(){
if
(
nextFragment
()
===
false
){
availableRoutes
().
down
?
navigateDown
():
navigateRight
();}}
return
{
initialize
:
initialize
,
navigateTo
:
navigateTo
,
navigateLeft
:
navigateLeft
,
navigateRight
:
navigateRight
,
navigateUp
:
navigateUp
,
navigateDown
:
navigateDown
,
addEventListener
:
function
(
type
,
listener
,
useCapture
){(
dom
.
wrapper
||
document
.
querySelector
(
'
#reveal
'
)).
addEventListener
(
type
,
listener
,
useCapture
);},
removeEventListener
:
function
(
type
,
listener
,
useCapture
){(
dom
.
wrapper
||
document
.
querySelector
(
'
#reveal
'
)).
removeEventListener
(
type
,
listener
,
useCapture
);}};})();
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment