Skip to content
GitLab
Explore
Projects
Groups
Snippets
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Bootstrap
bootstrap
Commits
7d1365ce
Commit
7d1365ce
authored
11 years ago
by
Mark Otto
Committed by
XhmikosR
10 years ago
Browse files
Options
Download
Email Patches
Plain Diff
Refactor and restyle.
parent
250e021f
5 merge requests
!28721
Hot test
,
!16605
Test pull please ignore
,
!22103
test
,
!25326
Adjust examples
,
!12690
Add ZeroClipboard to docs
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
Gruntfile.js
+1
-1
Gruntfile.js
docs/assets/css/_src/docs.css
+18
-20
docs/assets/css/_src/docs.css
docs/assets/js/_src/application.js
+40
-35
docs/assets/js/_src/application.js
docs/assets/js/_vendor/zero-clipboard.js
+0
-1010
docs/assets/js/_vendor/zero-clipboard.js
docs/assets/js/_vendor/zero-clipboard.min.js
+9
-0
docs/assets/js/_vendor/zero-clipboard.min.js
with
68 additions
and
1066 deletions
+68
-1066
Gruntfile.js
+
1
-
1
View file @
7d1365ce
...
@@ -137,7 +137,7 @@ module.exports = function (grunt) {
...
@@ -137,7 +137,7 @@ module.exports = function (grunt) {
},
},
src
:
[
src
:
[
'
docs/assets/js/_vendor/holder.js
'
,
'
docs/assets/js/_vendor/holder.js
'
,
'
docs/assets/js/_vendor/zero-clipboard.js
'
,
'
docs/assets/js/_vendor/zero-clipboard.
min.
js
'
,
'
docs/assets/js/_src/application.js
'
'
docs/assets/js/_src/application.js
'
],
],
dest
:
'
docs/assets/js/docs.min.js
'
dest
:
'
docs/assets/js/docs.min.js
'
...
...
This diff is collapsed.
Click to expand it.
docs/assets/css/_src/docs.css
+
18
-
20
View file @
7d1365ce
...
@@ -1133,13 +1133,9 @@ h1[id] {
...
@@ -1133,13 +1133,9 @@ h1[id] {
font-size
:
inherit
;
font-size
:
inherit
;
color
:
#333
;
/* Effectively the base text color */
color
:
#333
;
/* Effectively the base text color */
}
}
.highlight
pre
.lineno
{
.highlight
pre
code
:first-child
{
display
:
inline-block
;
display
:
inline-block
;
width
:
22px
;
padding-right
:
45px
;
padding-right
:
5px
;
margin-right
:
10px
;
color
:
#bebec5
;
text-align
:
right
;
}
}
...
@@ -1467,35 +1463,37 @@ h1[id] {
...
@@ -1467,35 +1463,37 @@ h1[id] {
box-shadow
:
0
0
8px
rgba
(
82
,
168
,
236
,
.6
);
box-shadow
:
0
0
8px
rgba
(
82
,
168
,
236
,
.6
);
}
}
/*
/*
* ZeroClipboard styles
* ZeroClipboard styles
*/
*/
.zero-clipboard
{
.zero-clipboard
{
position
:
relative
;
position
:
relative
;
display
:
none
;
}
}
.btn-clipboard
{
.btn-clipboard
{
position
:
absolute
;
position
:
absolute
;
top
:
0
;
right
:
0
;
right
:
0
;
z-index
:
10
;
z-index
:
10
;
padding
:
5px
10px
;
display
:
block
;
padding
:
5px
8px
;
font-size
:
12px
;
color
:
#777
;
cursor
:
pointer
;
cursor
:
pointer
;
border-color
:
#e1e1e8
;
background-color
:
#fff
;
border-bottom
:
1px
solid
transparent
;
border
:
1px
solid
#e1e1e8
;
border-left
:
1px
solid
transparent
;
border-radius
:
0
4px
0
4px
;
border-radius
:
0
4px
0
0
;
}
}
.btn-clipboard-hover
{
.btn-clipboard-hover
{
background-color
:
#e1e1e8
;
color
:
#fff
;
background-color
:
#563d7c
;
border-color
:
#563d7c
;
}
}
@media
(
max-width
:
768px
)
{
@media
(
min-width
:
768px
)
{
.btn-clipboard.with-example
{
.zero-clipboard
{
top
:
10px
;
display
:
block
;
border
:
1px
solid
#e1e1e8
;
border-radius
:
0
;
}
}
}
}
This diff is collapsed.
Click to expand it.
docs/assets/js/_src/application.js
+
40
-
35
View file @
7d1365ce
...
@@ -15,35 +15,25 @@
...
@@ -15,35 +15,25 @@
$
(
function
()
{
$
(
function
()
{
// Insert copy to clipboard button before .highlight or .bs-example
// Scrollspy
$
(
'
.highlight
'
).
each
(
function
()
{
var
highlight
=
$
(
this
)
var
previous
=
highlight
.
prev
()
var
btnHtml
=
'
<div class="zero-clipboard"><span class="glyphicon glyphicon-list-alt btn-clipboard"></span></div>
'
if
(
previous
.
hasClass
(
'
bs-example
'
))
{
previous
.
before
(
btnHtml
.
replace
(
/btn-clipboard/
,
'
btn-clipboard with-example
'
))
}
else
{
highlight
.
before
(
btnHtml
)
}
})
var
$window
=
$
(
window
)
var
$window
=
$
(
window
)
var
$body
=
$
(
document
.
body
)
var
$body
=
$
(
document
.
body
)
$body
.
scrollspy
({
$body
.
scrollspy
({
target
:
'
.bs-docs-sidebar
'
target
:
'
.bs-docs-sidebar
'
})
})
$window
.
on
(
'
load
'
,
function
()
{
$window
.
on
(
'
load
'
,
function
()
{
$body
.
scrollspy
(
'
refresh
'
)
$body
.
scrollspy
(
'
refresh
'
)
})
})
// Kill links
$
(
'
.bs-docs-container [href=#]
'
).
click
(
function
(
e
)
{
$
(
'
.bs-docs-container [href=#]
'
).
click
(
function
(
e
)
{
e
.
preventDefault
()
e
.
preventDefault
()
})
})
// back to top
// Sidenav affixing
setTimeout
(
function
()
{
setTimeout
(
function
()
{
var
$sideBar
=
$
(
'
.bs-docs-sidebar
'
)
var
$sideBar
=
$
(
'
.bs-docs-sidebar
'
)
...
@@ -84,7 +74,7 @@
...
@@ -84,7 +74,7 @@
})
})
})();
})();
//
t
ooltip demo
//
T
ooltip
and popover
demo
s
$
(
'
.tooltip-demo
'
).
tooltip
({
$
(
'
.tooltip-demo
'
).
tooltip
({
selector
:
'
[data-toggle="tooltip"]
'
,
selector
:
'
[data-toggle="tooltip"]
'
,
container
:
'
body
'
container
:
'
body
'
...
@@ -98,53 +88,68 @@
...
@@ -98,53 +88,68 @@
container
:
'
.bs-docs-navbar .nav
'
container
:
'
.bs-docs-navbar .nav
'
})
})
// popover demo
//
Default
popover demo
$
(
'
.bs-docs-popover
'
).
popover
()
$
(
'
.bs-docs-popover
'
).
popover
()
// Popover dismiss on next click
// Button state demo
$
(
'
.bs-docs-popover-dismiss
'
).
popover
({
$
(
'
#loading-example-btn
'
).
click
(
function
()
{
trigger
:
'
focus
'
var
btn
=
$
(
this
)
btn
.
button
(
'
loading
'
)
setTimeout
(
function
()
{
btn
.
button
(
'
reset
'
)
},
3000
)
})
})
// button state demo
$
(
'
#loading-example-btn
'
)
// Config ZeroClipboard
.
click
(
function
()
{
ZeroClipboard
.
config
({
var
btn
=
$
(
this
)
moviePath
:
'
/assets/flash/zero-clipboard.swf
'
,
btn
.
button
(
'
loading
'
)
hoverClass
:
'
btn-clipboard-hover
'
setTimeout
(
function
()
{
})
btn
.
button
(
'
reset
'
)
},
3000
)
// Insert copy to clipboard button before .highlight or .bs-example
})
$
(
'
.highlight
'
).
each
(
function
()
{
var
highlight
=
$
(
this
)
var
previous
=
highlight
.
prev
()
var
btnHtml
=
'
<div class="zero-clipboard"><span class="btn-clipboard">Copy</span></div>
'
if
(
previous
.
hasClass
(
'
bs-example
'
))
{
previous
.
before
(
btnHtml
.
replace
(
/btn-clipboard/
,
'
btn-clipboard with-example
'
))
}
else
{
highlight
.
before
(
btnHtml
)
}
})
var
zeroClipboard
=
new
ZeroClipboard
(
$
(
'
.btn-clipboard
'
))
var
htmlBridge
=
$
(
'
#global-zeroclipboard-html-bridge
'
)
// Handlers for ZeroClipboard
// Handlers for ZeroClipboard
zeroClipboard
.
on
(
'
load
'
,
function
(
client
)
{
zeroClipboard
.
on
(
'
load
'
,
function
(
client
)
{
htmlBridge
htmlBridge
.
data
(
'
placement
'
,
'
left
'
)
.
data
(
'
placement
'
,
'
top
'
)
.
attr
(
'
title
'
,
'
c
opy to clipboard
'
)
.
attr
(
'
title
'
,
'
C
opy to clipboard
'
)
.
tooltip
()
.
tooltip
()
})
})
// Copy to clipboard
// Copy to clipboard
zeroClipboard
.
on
(
'
dataRequested
'
,
function
(
client
)
{
zeroClipboard
.
on
(
'
dataRequested
'
,
function
(
client
)
{
var
highlight
=
$
(
this
).
parent
().
nextAll
(
'
.highlight
'
).
first
()
var
highlight
=
$
(
this
).
parent
().
nextAll
(
'
.highlight
'
).
first
()
client
.
setText
(
highlight
.
text
())
client
.
setText
(
highlight
.
text
())
})
})
// Notify copy success and reset tooltip title
// Notify copy success and reset tooltip title
zeroClipboard
.
on
(
'
complete
'
,
function
(
client
)
{
zeroClipboard
.
on
(
'
complete
'
,
function
(
client
)
{
htmlBridge
htmlBridge
.
attr
(
'
title
'
,
'
c
opied!
'
)
.
attr
(
'
title
'
,
'
C
opied!
'
)
.
tooltip
(
'
fixTitle
'
)
.
tooltip
(
'
fixTitle
'
)
.
tooltip
(
'
show
'
)
.
tooltip
(
'
show
'
)
.
attr
(
'
title
'
,
'
c
opy
to clipboard
'
)
.
attr
(
'
title
'
,
'
C
opy
'
)
.
tooltip
(
'
fixTitle
'
)
.
tooltip
(
'
fixTitle
'
)
})
})
// Notify copy failure
// Notify copy failure
zeroClipboard
.
on
(
'
noflash wrongflash
'
,
function
(
client
)
{
zeroClipboard
.
on
(
'
noflash wrongflash
'
,
function
(
client
)
{
htmlBridge
htmlBridge
.
attr
(
'
title
'
,
'
f
lash
not support
ed
!
'
)
.
attr
(
'
title
'
,
'
F
lash
requir
ed
'
)
.
tooltip
(
'
fixTitle
'
)
.
tooltip
(
'
fixTitle
'
)
.
tooltip
(
'
show
'
)
.
tooltip
(
'
show
'
)
})
})
...
...
This diff is collapsed.
Click to expand it.
docs/assets/js/_vendor/zero-clipboard.js
deleted
100644 → 0
+
0
-
1010
View file @
250e021f
/*!
* ZeroClipboard
* The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.
* Copyright (c) 2014 Jon Rohan, James M. Greene
* Licensed MIT
* http://zeroclipboard.org/
* v1.3.2
*/
(
function
()
{
"
use strict
"
;
var
currentElement
;
var
flashState
=
{
bridge
:
null
,
version
:
"
0.0.0
"
,
disabled
:
null
,
outdated
:
null
,
ready
:
null
};
var
_clipData
=
{};
var
clientIdCounter
=
0
;
var
_clientMeta
=
{};
var
elementIdCounter
=
0
;
var
_elementMeta
=
{};
var
_amdModuleId
=
null
;
var
_cjsModuleId
=
null
;
var
_swfPath
=
function
()
{
var
i
,
jsDir
,
tmpJsPath
,
jsPath
,
swfPath
=
"
ZeroClipboard.swf
"
;
if
(
document
.
currentScript
&&
(
jsPath
=
document
.
currentScript
.
src
))
{}
else
{
var
scripts
=
document
.
getElementsByTagName
(
"
script
"
);
if
(
"
readyState
"
in
scripts
[
0
])
{
for
(
i
=
scripts
.
length
;
i
--
;
)
{
if
(
scripts
[
i
].
readyState
===
"
interactive
"
&&
(
jsPath
=
scripts
[
i
].
src
))
{
break
;
}
}
}
else
if
(
document
.
readyState
===
"
loading
"
)
{
jsPath
=
scripts
[
scripts
.
length
-
1
].
src
;
}
else
{
for
(
i
=
scripts
.
length
;
i
--
;
)
{
tmpJsPath
=
scripts
[
i
].
src
;
if
(
!
tmpJsPath
)
{
jsDir
=
null
;
break
;
}
tmpJsPath
=
tmpJsPath
.
split
(
"
#
"
)[
0
].
split
(
"
?
"
)[
0
];
tmpJsPath
=
tmpJsPath
.
slice
(
0
,
tmpJsPath
.
lastIndexOf
(
"
/
"
)
+
1
);
if
(
jsDir
==
null
)
{
jsDir
=
tmpJsPath
;
}
else
if
(
jsDir
!==
tmpJsPath
)
{
jsDir
=
null
;
break
;
}
}
if
(
jsDir
!==
null
)
{
jsPath
=
jsDir
;
}
}
}
if
(
jsPath
)
{
jsPath
=
jsPath
.
split
(
"
#
"
)[
0
].
split
(
"
?
"
)[
0
];
swfPath
=
jsPath
.
slice
(
0
,
jsPath
.
lastIndexOf
(
"
/
"
)
+
1
)
+
swfPath
;
}
return
swfPath
;
}();
var
_camelizeCssPropName
=
function
()
{
var
matcherRegex
=
/
\-([
a-z
])
/g
,
replacerFn
=
function
(
match
,
group
)
{
return
group
.
toUpperCase
();
};
return
function
(
prop
)
{
return
prop
.
replace
(
matcherRegex
,
replacerFn
);
};
}();
var
_getStyle
=
function
(
el
,
prop
)
{
var
value
,
camelProp
,
tagName
,
possiblePointers
,
i
,
len
;
if
(
window
.
getComputedStyle
)
{
value
=
window
.
getComputedStyle
(
el
,
null
).
getPropertyValue
(
prop
);
}
else
{
camelProp
=
_camelizeCssPropName
(
prop
);
if
(
el
.
currentStyle
)
{
value
=
el
.
currentStyle
[
camelProp
];
}
else
{
value
=
el
.
style
[
camelProp
];
}
}
if
(
prop
===
"
cursor
"
)
{
if
(
!
value
||
value
===
"
auto
"
)
{
tagName
=
el
.
tagName
.
toLowerCase
();
if
(
tagName
===
"
a
"
)
{
return
"
pointer
"
;
}
}
}
return
value
;
};
var
_elementMouseOver
=
function
(
event
)
{
if
(
!
event
)
{
event
=
window
.
event
;
}
var
target
;
if
(
this
!==
window
)
{
target
=
this
;
}
else
if
(
event
.
target
)
{
target
=
event
.
target
;
}
else
if
(
event
.
srcElement
)
{
target
=
event
.
srcElement
;
}
ZeroClipboard
.
activate
(
target
);
};
var
_addEventHandler
=
function
(
element
,
method
,
func
)
{
if
(
!
element
||
element
.
nodeType
!==
1
)
{
return
;
}
if
(
element
.
addEventListener
)
{
element
.
addEventListener
(
method
,
func
,
false
);
}
else
if
(
element
.
attachEvent
)
{
element
.
attachEvent
(
"
on
"
+
method
,
func
);
}
};
var
_removeEventHandler
=
function
(
element
,
method
,
func
)
{
if
(
!
element
||
element
.
nodeType
!==
1
)
{
return
;
}
if
(
element
.
removeEventListener
)
{
element
.
removeEventListener
(
method
,
func
,
false
);
}
else
if
(
element
.
detachEvent
)
{
element
.
detachEvent
(
"
on
"
+
method
,
func
);
}
};
var
_addClass
=
function
(
element
,
value
)
{
if
(
!
element
||
element
.
nodeType
!==
1
)
{
return
element
;
}
if
(
element
.
classList
)
{
if
(
!
element
.
classList
.
contains
(
value
))
{
element
.
classList
.
add
(
value
);
}
return
element
;
}
if
(
value
&&
typeof
value
===
"
string
"
)
{
var
classNames
=
(
value
||
""
).
split
(
/
\s
+/
);
if
(
element
.
nodeType
===
1
)
{
if
(
!
element
.
className
)
{
element
.
className
=
value
;
}
else
{
var
className
=
"
"
+
element
.
className
+
"
"
,
setClass
=
element
.
className
;
for
(
var
c
=
0
,
cl
=
classNames
.
length
;
c
<
cl
;
c
++
)
{
if
(
className
.
indexOf
(
"
"
+
classNames
[
c
]
+
"
"
)
<
0
)
{
setClass
+=
"
"
+
classNames
[
c
];
}
}
element
.
className
=
setClass
.
replace
(
/^
\s
+|
\s
+$/g
,
""
);
}
}
}
return
element
;
};
var
_removeClass
=
function
(
element
,
value
)
{
if
(
!
element
||
element
.
nodeType
!==
1
)
{
return
element
;
}
if
(
element
.
classList
)
{
if
(
element
.
classList
.
contains
(
value
))
{
element
.
classList
.
remove
(
value
);
}
return
element
;
}
if
(
value
&&
typeof
value
===
"
string
"
||
value
===
undefined
)
{
var
classNames
=
(
value
||
""
).
split
(
/
\s
+/
);
if
(
element
.
nodeType
===
1
&&
element
.
className
)
{
if
(
value
)
{
var
className
=
(
"
"
+
element
.
className
+
"
"
).
replace
(
/
[\n\t]
/g
,
"
"
);
for
(
var
c
=
0
,
cl
=
classNames
.
length
;
c
<
cl
;
c
++
)
{
className
=
className
.
replace
(
"
"
+
classNames
[
c
]
+
"
"
,
"
"
);
}
element
.
className
=
className
.
replace
(
/^
\s
+|
\s
+$/g
,
""
);
}
else
{
element
.
className
=
""
;
}
}
}
return
element
;
};
var
_getZoomFactor
=
function
()
{
var
rect
,
physicalWidth
,
logicalWidth
,
zoomFactor
=
1
;
if
(
typeof
document
.
body
.
getBoundingClientRect
===
"
function
"
)
{
rect
=
document
.
body
.
getBoundingClientRect
();
physicalWidth
=
rect
.
right
-
rect
.
left
;
logicalWidth
=
document
.
body
.
offsetWidth
;
zoomFactor
=
Math
.
round
(
physicalWidth
/
logicalWidth
*
100
)
/
100
;
}
return
zoomFactor
;
};
var
_getDOMObjectPosition
=
function
(
obj
,
defaultZIndex
)
{
var
info
=
{
left
:
0
,
top
:
0
,
width
:
0
,
height
:
0
,
zIndex
:
_getSafeZIndex
(
defaultZIndex
)
-
1
};
if
(
obj
.
getBoundingClientRect
)
{
var
rect
=
obj
.
getBoundingClientRect
();
var
pageXOffset
,
pageYOffset
,
zoomFactor
;
if
(
"
pageXOffset
"
in
window
&&
"
pageYOffset
"
in
window
)
{
pageXOffset
=
window
.
pageXOffset
;
pageYOffset
=
window
.
pageYOffset
;
}
else
{
zoomFactor
=
_getZoomFactor
();
pageXOffset
=
Math
.
round
(
document
.
documentElement
.
scrollLeft
/
zoomFactor
);
pageYOffset
=
Math
.
round
(
document
.
documentElement
.
scrollTop
/
zoomFactor
);
}
var
leftBorderWidth
=
document
.
documentElement
.
clientLeft
||
0
;
var
topBorderWidth
=
document
.
documentElement
.
clientTop
||
0
;
info
.
left
=
rect
.
left
+
pageXOffset
-
leftBorderWidth
;
info
.
top
=
rect
.
top
+
pageYOffset
-
topBorderWidth
;
info
.
width
=
"
width
"
in
rect
?
rect
.
width
:
rect
.
right
-
rect
.
left
;
info
.
height
=
"
height
"
in
rect
?
rect
.
height
:
rect
.
bottom
-
rect
.
top
;
}
return
info
;
};
var
_cacheBust
=
function
(
path
,
options
)
{
var
cacheBust
=
options
==
null
||
options
&&
options
.
cacheBust
===
true
&&
options
.
useNoCache
===
true
;
if
(
cacheBust
)
{
return
(
path
.
indexOf
(
"
?
"
)
===
-
1
?
"
?
"
:
"
&
"
)
+
"
noCache=
"
+
new
Date
().
getTime
();
}
else
{
return
""
;
}
};
var
_vars
=
function
(
options
)
{
var
i
,
len
,
domain
,
str
=
[],
domains
=
[],
trustedOriginsExpanded
=
[];
if
(
options
.
trustedOrigins
)
{
if
(
typeof
options
.
trustedOrigins
===
"
string
"
)
{
domains
.
push
(
options
.
trustedOrigins
);
}
else
if
(
typeof
options
.
trustedOrigins
===
"
object
"
&&
"
length
"
in
options
.
trustedOrigins
)
{
domains
=
domains
.
concat
(
options
.
trustedOrigins
);
}
}
if
(
options
.
trustedDomains
)
{
if
(
typeof
options
.
trustedDomains
===
"
string
"
)
{
domains
.
push
(
options
.
trustedDomains
);
}
else
if
(
typeof
options
.
trustedDomains
===
"
object
"
&&
"
length
"
in
options
.
trustedDomains
)
{
domains
=
domains
.
concat
(
options
.
trustedDomains
);
}
}
if
(
domains
.
length
)
{
for
(
i
=
0
,
len
=
domains
.
length
;
i
<
len
;
i
++
)
{
if
(
domains
.
hasOwnProperty
(
i
)
&&
domains
[
i
]
&&
typeof
domains
[
i
]
===
"
string
"
)
{
domain
=
_extractDomain
(
domains
[
i
]);
if
(
!
domain
)
{
continue
;
}
if
(
domain
===
"
*
"
)
{
trustedOriginsExpanded
=
[
domain
];
break
;
}
trustedOriginsExpanded
.
push
.
apply
(
trustedOriginsExpanded
,
[
domain
,
"
//
"
+
domain
,
window
.
location
.
protocol
+
"
//
"
+
domain
]);
}
}
}
if
(
trustedOriginsExpanded
.
length
)
{
str
.
push
(
"
trustedOrigins=
"
+
encodeURIComponent
(
trustedOriginsExpanded
.
join
(
"
,
"
)));
}
if
(
typeof
options
.
jsModuleId
===
"
string
"
&&
options
.
jsModuleId
)
{
str
.
push
(
"
jsModuleId=
"
+
encodeURIComponent
(
options
.
jsModuleId
));
}
return
str
.
join
(
"
&
"
);
};
var
_inArray
=
function
(
elem
,
array
,
fromIndex
)
{
if
(
typeof
array
.
indexOf
===
"
function
"
)
{
return
array
.
indexOf
(
elem
,
fromIndex
);
}
var
i
,
len
=
array
.
length
;
if
(
typeof
fromIndex
===
"
undefined
"
)
{
fromIndex
=
0
;
}
else
if
(
fromIndex
<
0
)
{
fromIndex
=
len
+
fromIndex
;
}
for
(
i
=
fromIndex
;
i
<
len
;
i
++
)
{
if
(
array
.
hasOwnProperty
(
i
)
&&
array
[
i
]
===
elem
)
{
return
i
;
}
}
return
-
1
;
};
var
_prepClip
=
function
(
elements
)
{
if
(
typeof
elements
===
"
string
"
)
throw
new
TypeError
(
"
ZeroClipboard doesn't accept query strings.
"
);
if
(
!
elements
.
length
)
return
[
elements
];
return
elements
;
};
var
_dispatchCallback
=
function
(
func
,
context
,
args
,
async
)
{
if
(
async
)
{
window
.
setTimeout
(
function
()
{
func
.
apply
(
context
,
args
);
},
0
);
}
else
{
func
.
apply
(
context
,
args
);
}
};
var
_getSafeZIndex
=
function
(
val
)
{
var
zIndex
,
tmp
;
if
(
val
)
{
if
(
typeof
val
===
"
number
"
&&
val
>
0
)
{
zIndex
=
val
;
}
else
if
(
typeof
val
===
"
string
"
&&
(
tmp
=
parseInt
(
val
,
10
))
&&
!
isNaN
(
tmp
)
&&
tmp
>
0
)
{
zIndex
=
tmp
;
}
}
if
(
!
zIndex
)
{
if
(
typeof
_globalConfig
.
zIndex
===
"
number
"
&&
_globalConfig
.
zIndex
>
0
)
{
zIndex
=
_globalConfig
.
zIndex
;
}
else
if
(
typeof
_globalConfig
.
zIndex
===
"
string
"
&&
(
tmp
=
parseInt
(
_globalConfig
.
zIndex
,
10
))
&&
!
isNaN
(
tmp
)
&&
tmp
>
0
)
{
zIndex
=
tmp
;
}
}
return
zIndex
||
0
;
};
var
_deprecationWarning
=
function
(
deprecatedApiName
,
debugEnabled
)
{
if
(
deprecatedApiName
&&
debugEnabled
!==
false
&&
typeof
console
!==
"
undefined
"
&&
console
&&
(
console
.
warn
||
console
.
log
))
{
var
deprecationWarning
=
"
`
"
+
deprecatedApiName
+
"
` is deprecated. See docs for more info:
\n
"
+
"
https://github.com/zeroclipboard/zeroclipboard/blob/master/docs/instructions.md#deprecations
"
;
if
(
console
.
warn
)
{
console
.
warn
(
deprecationWarning
);
}
else
{
console
.
log
(
deprecationWarning
);
}
}
};
var
_extend
=
function
()
{
var
i
,
len
,
arg
,
prop
,
src
,
copy
,
target
=
arguments
[
0
]
||
{};
for
(
i
=
1
,
len
=
arguments
.
length
;
i
<
len
;
i
++
)
{
if
((
arg
=
arguments
[
i
])
!=
null
)
{
for
(
prop
in
arg
)
{
if
(
arg
.
hasOwnProperty
(
prop
))
{
src
=
target
[
prop
];
copy
=
arg
[
prop
];
if
(
target
===
copy
)
{
continue
;
}
if
(
copy
!==
undefined
)
{
target
[
prop
]
=
copy
;
}
}
}
}
}
return
target
;
};
var
_extractDomain
=
function
(
originOrUrl
)
{
if
(
originOrUrl
==
null
||
originOrUrl
===
""
)
{
return
null
;
}
originOrUrl
=
originOrUrl
.
replace
(
/^
\s
+|
\s
+$/g
,
""
);
if
(
originOrUrl
===
""
)
{
return
null
;
}
var
protocolIndex
=
originOrUrl
.
indexOf
(
"
//
"
);
originOrUrl
=
protocolIndex
===
-
1
?
originOrUrl
:
originOrUrl
.
slice
(
protocolIndex
+
2
);
var
pathIndex
=
originOrUrl
.
indexOf
(
"
/
"
);
originOrUrl
=
pathIndex
===
-
1
?
originOrUrl
:
protocolIndex
===
-
1
||
pathIndex
===
0
?
null
:
originOrUrl
.
slice
(
0
,
pathIndex
);
if
(
originOrUrl
&&
originOrUrl
.
slice
(
-
4
).
toLowerCase
()
===
"
.swf
"
)
{
return
null
;
}
return
originOrUrl
||
null
;
};
var
_determineScriptAccess
=
function
()
{
var
_extractAllDomains
=
function
(
origins
,
resultsArray
)
{
var
i
,
len
,
tmp
;
if
(
origins
!=
null
&&
resultsArray
[
0
]
!==
"
*
"
)
{
if
(
typeof
origins
===
"
string
"
)
{
origins
=
[
origins
];
}
if
(
typeof
origins
===
"
object
"
&&
"
length
"
in
origins
)
{
for
(
i
=
0
,
len
=
origins
.
length
;
i
<
len
;
i
++
)
{
if
(
origins
.
hasOwnProperty
(
i
))
{
tmp
=
_extractDomain
(
origins
[
i
]);
if
(
tmp
)
{
if
(
tmp
===
"
*
"
)
{
resultsArray
.
length
=
0
;
resultsArray
.
push
(
"
*
"
);
break
;
}
if
(
_inArray
(
tmp
,
resultsArray
)
===
-
1
)
{
resultsArray
.
push
(
tmp
);
}
}
}
}
}
}
};
var
_accessLevelLookup
=
{
always
:
"
always
"
,
samedomain
:
"
sameDomain
"
,
never
:
"
never
"
};
return
function
(
currentDomain
,
configOptions
)
{
var
asaLower
,
allowScriptAccess
=
configOptions
.
allowScriptAccess
;
if
(
typeof
allowScriptAccess
===
"
string
"
&&
(
asaLower
=
allowScriptAccess
.
toLowerCase
())
&&
/^always|samedomain|never$/
.
test
(
asaLower
))
{
return
_accessLevelLookup
[
asaLower
];
}
var
swfDomain
=
_extractDomain
(
configOptions
.
moviePath
);
if
(
swfDomain
===
null
)
{
swfDomain
=
currentDomain
;
}
var
trustedDomains
=
[];
_extractAllDomains
(
configOptions
.
trustedOrigins
,
trustedDomains
);
_extractAllDomains
(
configOptions
.
trustedDomains
,
trustedDomains
);
var
len
=
trustedDomains
.
length
;
if
(
len
>
0
)
{
if
(
len
===
1
&&
trustedDomains
[
0
]
===
"
*
"
)
{
return
"
always
"
;
}
if
(
_inArray
(
currentDomain
,
trustedDomains
)
!==
-
1
)
{
if
(
len
===
1
&&
currentDomain
===
swfDomain
)
{
return
"
sameDomain
"
;
}
return
"
always
"
;
}
}
return
"
never
"
;
};
}();
var
_objectKeys
=
function
(
obj
)
{
if
(
obj
==
null
)
{
return
[];
}
if
(
Object
.
keys
)
{
return
Object
.
keys
(
obj
);
}
var
keys
=
[];
for
(
var
prop
in
obj
)
{
if
(
obj
.
hasOwnProperty
(
prop
))
{
keys
.
push
(
prop
);
}
}
return
keys
;
};
var
_deleteOwnProperties
=
function
(
obj
)
{
if
(
obj
)
{
for
(
var
prop
in
obj
)
{
if
(
obj
.
hasOwnProperty
(
prop
))
{
delete
obj
[
prop
];
}
}
}
return
obj
;
};
var
_detectFlashSupport
=
function
()
{
var
hasFlash
=
false
;
if
(
typeof
flashState
.
disabled
===
"
boolean
"
)
{
hasFlash
=
flashState
.
disabled
===
false
;
}
else
{
if
(
typeof
ActiveXObject
===
"
function
"
)
{
try
{
if
(
new
ActiveXObject
(
"
ShockwaveFlash.ShockwaveFlash
"
))
{
hasFlash
=
true
;
}
}
catch
(
error
)
{}
}
if
(
!
hasFlash
&&
navigator
.
mimeTypes
[
"
application/x-shockwave-flash
"
])
{
hasFlash
=
true
;
}
}
return
hasFlash
;
};
function
_parseFlashVersion
(
flashVersion
)
{
return
flashVersion
.
replace
(
/,/g
,
"
.
"
).
replace
(
/
[^
0-9
\.]
/g
,
""
);
}
function
_isFlashVersionSupported
(
flashVersion
)
{
return
parseFloat
(
_parseFlashVersion
(
flashVersion
))
>=
10
;
}
var
ZeroClipboard
=
function
(
elements
,
options
)
{
if
(
!
(
this
instanceof
ZeroClipboard
))
{
return
new
ZeroClipboard
(
elements
,
options
);
}
this
.
id
=
""
+
clientIdCounter
++
;
_clientMeta
[
this
.
id
]
=
{
instance
:
this
,
elements
:
[],
handlers
:
{}
};
if
(
elements
)
{
this
.
clip
(
elements
);
}
if
(
typeof
options
!==
"
undefined
"
)
{
_deprecationWarning
(
"
new ZeroClipboard(elements, options)
"
,
_globalConfig
.
debug
);
ZeroClipboard
.
config
(
options
);
}
this
.
options
=
ZeroClipboard
.
config
();
if
(
typeof
flashState
.
disabled
!==
"
boolean
"
)
{
flashState
.
disabled
=
!
_detectFlashSupport
();
}
if
(
flashState
.
disabled
===
false
&&
flashState
.
outdated
!==
true
)
{
if
(
flashState
.
bridge
===
null
)
{
flashState
.
outdated
=
false
;
flashState
.
ready
=
false
;
_bridge
();
}
}
};
ZeroClipboard
.
prototype
.
setText
=
function
(
newText
)
{
if
(
newText
&&
newText
!==
""
)
{
_clipData
[
"
text/plain
"
]
=
newText
;
if
(
flashState
.
ready
===
true
&&
flashState
.
bridge
)
{
flashState
.
bridge
.
setText
(
newText
);
}
else
{}
}
return
this
;
};
ZeroClipboard
.
prototype
.
setSize
=
function
(
width
,
height
)
{
if
(
flashState
.
ready
===
true
&&
flashState
.
bridge
)
{
flashState
.
bridge
.
setSize
(
width
,
height
);
}
else
{}
return
this
;
};
var
_setHandCursor
=
function
(
enabled
)
{
if
(
flashState
.
ready
===
true
&&
flashState
.
bridge
)
{
flashState
.
bridge
.
setHandCursor
(
enabled
);
}
else
{}
};
ZeroClipboard
.
prototype
.
destroy
=
function
()
{
this
.
unclip
();
this
.
off
();
delete
_clientMeta
[
this
.
id
];
};
var
_getAllClients
=
function
()
{
var
i
,
len
,
client
,
clients
=
[],
clientIds
=
_objectKeys
(
_clientMeta
);
for
(
i
=
0
,
len
=
clientIds
.
length
;
i
<
len
;
i
++
)
{
client
=
_clientMeta
[
clientIds
[
i
]].
instance
;
if
(
client
&&
client
instanceof
ZeroClipboard
)
{
clients
.
push
(
client
);
}
}
return
clients
;
};
ZeroClipboard
.
version
=
"
1.3.2
"
;
var
_globalConfig
=
{
swfPath
:
_swfPath
,
trustedDomains
:
window
.
location
.
host
?
[
window
.
location
.
host
]
:
[],
cacheBust
:
true
,
forceHandCursor
:
false
,
zIndex
:
999999999
,
debug
:
true
,
title
:
null
,
autoActivate
:
true
};
ZeroClipboard
.
config
=
function
(
options
)
{
if
(
typeof
options
===
"
object
"
&&
options
!==
null
)
{
_extend
(
_globalConfig
,
options
);
}
if
(
typeof
options
===
"
string
"
&&
options
)
{
if
(
_globalConfig
.
hasOwnProperty
(
options
))
{
return
_globalConfig
[
options
];
}
return
;
}
var
copy
=
{};
for
(
var
prop
in
_globalConfig
)
{
if
(
_globalConfig
.
hasOwnProperty
(
prop
))
{
if
(
typeof
_globalConfig
[
prop
]
===
"
object
"
&&
_globalConfig
[
prop
]
!==
null
)
{
if
(
"
length
"
in
_globalConfig
[
prop
])
{
copy
[
prop
]
=
_globalConfig
[
prop
].
slice
(
0
);
}
else
{
copy
[
prop
]
=
_extend
({},
_globalConfig
[
prop
]);
}
}
else
{
copy
[
prop
]
=
_globalConfig
[
prop
];
}
}
}
return
copy
;
};
ZeroClipboard
.
destroy
=
function
()
{
ZeroClipboard
.
deactivate
();
for
(
var
clientId
in
_clientMeta
)
{
if
(
_clientMeta
.
hasOwnProperty
(
clientId
)
&&
_clientMeta
[
clientId
])
{
var
client
=
_clientMeta
[
clientId
].
instance
;
if
(
client
&&
typeof
client
.
destroy
===
"
function
"
)
{
client
.
destroy
();
}
}
}
var
htmlBridge
=
_getHtmlBridge
(
flashState
.
bridge
);
if
(
htmlBridge
&&
htmlBridge
.
parentNode
)
{
htmlBridge
.
parentNode
.
removeChild
(
htmlBridge
);
flashState
.
ready
=
null
;
flashState
.
bridge
=
null
;
}
};
ZeroClipboard
.
activate
=
function
(
element
)
{
if
(
currentElement
)
{
_removeClass
(
currentElement
,
_globalConfig
.
hoverClass
);
_removeClass
(
currentElement
,
_globalConfig
.
activeClass
);
}
currentElement
=
element
;
_addClass
(
element
,
_globalConfig
.
hoverClass
);
_reposition
();
var
newTitle
=
_globalConfig
.
title
||
element
.
getAttribute
(
"
title
"
);
if
(
newTitle
)
{
var
htmlBridge
=
_getHtmlBridge
(
flashState
.
bridge
);
if
(
htmlBridge
)
{
htmlBridge
.
setAttribute
(
"
title
"
,
newTitle
);
}
}
var
useHandCursor
=
_globalConfig
.
forceHandCursor
===
true
||
_getStyle
(
element
,
"
cursor
"
)
===
"
pointer
"
;
_setHandCursor
(
useHandCursor
);
};
ZeroClipboard
.
deactivate
=
function
()
{
var
htmlBridge
=
_getHtmlBridge
(
flashState
.
bridge
);
if
(
htmlBridge
)
{
htmlBridge
.
style
.
left
=
"
0px
"
;
htmlBridge
.
style
.
top
=
"
-9999px
"
;
htmlBridge
.
removeAttribute
(
"
title
"
);
}
if
(
currentElement
)
{
_removeClass
(
currentElement
,
_globalConfig
.
hoverClass
);
_removeClass
(
currentElement
,
_globalConfig
.
activeClass
);
currentElement
=
null
;
}
};
var
_bridge
=
function
()
{
var
flashBridge
,
len
;
var
container
=
document
.
getElementById
(
"
global-zeroclipboard-html-bridge
"
);
if
(
!
container
)
{
var
opts
=
ZeroClipboard
.
config
();
opts
.
jsModuleId
=
typeof
_amdModuleId
===
"
string
"
&&
_amdModuleId
||
typeof
_cjsModuleId
===
"
string
"
&&
_cjsModuleId
||
null
;
var
allowScriptAccess
=
_determineScriptAccess
(
window
.
location
.
host
,
_globalConfig
);
var
flashvars
=
_vars
(
opts
);
var
swfUrl
=
_globalConfig
.
moviePath
+
_cacheBust
(
_globalConfig
.
moviePath
,
_globalConfig
);
var
html
=
'
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="global-zeroclipboard-flash-bridge" width="100%" height="100%"> <param name="movie" value="
'
+
swfUrl
+
'
"/> <param name="allowScriptAccess" value="
'
+
allowScriptAccess
+
'
"/> <param name="scale" value="exactfit"/> <param name="loop" value="false"/> <param name="menu" value="false"/> <param name="quality" value="best" /> <param name="bgcolor" value="#ffffff"/> <param name="wmode" value="transparent"/> <param name="flashvars" value="
'
+
flashvars
+
'
"/> <embed src="
'
+
swfUrl
+
'
" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="100%" height="100%" name="global-zeroclipboard-flash-bridge" allowScriptAccess="
'
+
allowScriptAccess
+
'
" allowFullScreen="false" type="application/x-shockwave-flash" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="
'
+
flashvars
+
'
" scale="exactfit"> </embed> </object>
'
;
container
=
document
.
createElement
(
"
div
"
);
container
.
id
=
"
global-zeroclipboard-html-bridge
"
;
container
.
setAttribute
(
"
class
"
,
"
global-zeroclipboard-container
"
);
container
.
style
.
position
=
"
absolute
"
;
container
.
style
.
left
=
"
0px
"
;
container
.
style
.
top
=
"
-9999px
"
;
container
.
style
.
width
=
"
15px
"
;
container
.
style
.
height
=
"
15px
"
;
container
.
style
.
zIndex
=
""
+
_getSafeZIndex
(
_globalConfig
.
zIndex
);
document
.
body
.
appendChild
(
container
);
container
.
innerHTML
=
html
;
}
flashBridge
=
document
[
"
global-zeroclipboard-flash-bridge
"
];
if
(
flashBridge
&&
(
len
=
flashBridge
.
length
))
{
flashBridge
=
flashBridge
[
len
-
1
];
}
flashState
.
bridge
=
flashBridge
||
container
.
children
[
0
].
lastElementChild
;
};
var
_getHtmlBridge
=
function
(
flashBridge
)
{
var
isFlashElement
=
/^OBJECT|EMBED$/
;
var
htmlBridge
=
flashBridge
&&
flashBridge
.
parentNode
;
while
(
htmlBridge
&&
isFlashElement
.
test
(
htmlBridge
.
nodeName
)
&&
htmlBridge
.
parentNode
)
{
htmlBridge
=
htmlBridge
.
parentNode
;
}
return
htmlBridge
||
null
;
};
var
_reposition
=
function
()
{
if
(
currentElement
)
{
var
pos
=
_getDOMObjectPosition
(
currentElement
,
_globalConfig
.
zIndex
);
var
htmlBridge
=
_getHtmlBridge
(
flashState
.
bridge
);
if
(
htmlBridge
)
{
htmlBridge
.
style
.
top
=
pos
.
top
+
"
px
"
;
htmlBridge
.
style
.
left
=
pos
.
left
+
"
px
"
;
htmlBridge
.
style
.
width
=
pos
.
width
+
"
px
"
;
htmlBridge
.
style
.
height
=
pos
.
height
+
"
px
"
;
htmlBridge
.
style
.
zIndex
=
pos
.
zIndex
+
1
;
}
if
(
flashState
.
ready
===
true
&&
flashState
.
bridge
)
{
flashState
.
bridge
.
setSize
(
pos
.
width
,
pos
.
height
);
}
}
return
this
;
};
ZeroClipboard
.
prototype
.
on
=
function
(
eventName
,
func
)
{
var
i
,
len
,
events
,
added
=
{},
handlers
=
_clientMeta
[
this
.
id
]
&&
_clientMeta
[
this
.
id
].
handlers
;
if
(
typeof
eventName
===
"
string
"
&&
eventName
)
{
events
=
eventName
.
toLowerCase
().
split
(
/
\s
+/
);
}
else
if
(
typeof
eventName
===
"
object
"
&&
eventName
&&
typeof
func
===
"
undefined
"
)
{
for
(
i
in
eventName
)
{
if
(
eventName
.
hasOwnProperty
(
i
)
&&
typeof
i
===
"
string
"
&&
i
&&
typeof
eventName
[
i
]
===
"
function
"
)
{
this
.
on
(
i
,
eventName
[
i
]);
}
}
}
if
(
events
&&
events
.
length
)
{
for
(
i
=
0
,
len
=
events
.
length
;
i
<
len
;
i
++
)
{
eventName
=
events
[
i
].
replace
(
/^on/
,
""
);
added
[
eventName
]
=
true
;
if
(
!
handlers
[
eventName
])
{
handlers
[
eventName
]
=
[];
}
handlers
[
eventName
].
push
(
func
);
}
if
(
added
.
noflash
&&
flashState
.
disabled
)
{
_receiveEvent
.
call
(
this
,
"
noflash
"
,
{});
}
if
(
added
.
wrongflash
&&
flashState
.
outdated
)
{
_receiveEvent
.
call
(
this
,
"
wrongflash
"
,
{
flashVersion
:
flashState
.
version
});
}
if
(
added
.
load
&&
flashState
.
ready
)
{
_receiveEvent
.
call
(
this
,
"
load
"
,
{
flashVersion
:
flashState
.
version
});
}
}
return
this
;
};
ZeroClipboard
.
prototype
.
off
=
function
(
eventName
,
func
)
{
var
i
,
len
,
foundIndex
,
events
,
perEventHandlers
,
handlers
=
_clientMeta
[
this
.
id
]
&&
_clientMeta
[
this
.
id
].
handlers
;
if
(
arguments
.
length
===
0
)
{
events
=
_objectKeys
(
handlers
);
}
else
if
(
typeof
eventName
===
"
string
"
&&
eventName
)
{
events
=
eventName
.
split
(
/
\s
+/
);
}
else
if
(
typeof
eventName
===
"
object
"
&&
eventName
&&
typeof
func
===
"
undefined
"
)
{
for
(
i
in
eventName
)
{
if
(
eventName
.
hasOwnProperty
(
i
)
&&
typeof
i
===
"
string
"
&&
i
&&
typeof
eventName
[
i
]
===
"
function
"
)
{
this
.
off
(
i
,
eventName
[
i
]);
}
}
}
if
(
events
&&
events
.
length
)
{
for
(
i
=
0
,
len
=
events
.
length
;
i
<
len
;
i
++
)
{
eventName
=
events
[
i
].
toLowerCase
().
replace
(
/^on/
,
""
);
perEventHandlers
=
handlers
[
eventName
];
if
(
perEventHandlers
&&
perEventHandlers
.
length
)
{
if
(
func
)
{
foundIndex
=
_inArray
(
func
,
perEventHandlers
);
while
(
foundIndex
!==
-
1
)
{
perEventHandlers
.
splice
(
foundIndex
,
1
);
foundIndex
=
_inArray
(
func
,
perEventHandlers
,
foundIndex
);
}
}
else
{
handlers
[
eventName
].
length
=
0
;
}
}
}
}
return
this
;
};
ZeroClipboard
.
prototype
.
handlers
=
function
(
eventName
)
{
var
prop
,
copy
=
null
,
handlers
=
_clientMeta
[
this
.
id
]
&&
_clientMeta
[
this
.
id
].
handlers
;
if
(
handlers
)
{
if
(
typeof
eventName
===
"
string
"
&&
eventName
)
{
return
handlers
[
eventName
]
?
handlers
[
eventName
].
slice
(
0
)
:
null
;
}
copy
=
{};
for
(
prop
in
handlers
)
{
if
(
handlers
.
hasOwnProperty
(
prop
)
&&
handlers
[
prop
])
{
copy
[
prop
]
=
handlers
[
prop
].
slice
(
0
);
}
}
}
return
copy
;
};
var
_dispatchClientCallbacks
=
function
(
eventName
,
context
,
args
,
async
)
{
var
handlers
=
_clientMeta
[
this
.
id
]
&&
_clientMeta
[
this
.
id
].
handlers
[
eventName
];
if
(
handlers
&&
handlers
.
length
)
{
var
i
,
len
,
func
,
originalContext
=
context
||
this
;
for
(
i
=
0
,
len
=
handlers
.
length
;
i
<
len
;
i
++
)
{
func
=
handlers
[
i
];
context
=
originalContext
;
if
(
typeof
func
===
"
string
"
&&
typeof
window
[
func
]
===
"
function
"
)
{
func
=
window
[
func
];
}
if
(
typeof
func
===
"
object
"
&&
func
&&
typeof
func
.
handleEvent
===
"
function
"
)
{
context
=
func
;
func
=
func
.
handleEvent
;
}
if
(
typeof
func
===
"
function
"
)
{
_dispatchCallback
(
func
,
context
,
args
,
async
);
}
}
}
return
this
;
};
ZeroClipboard
.
prototype
.
clip
=
function
(
elements
)
{
elements
=
_prepClip
(
elements
);
for
(
var
i
=
0
;
i
<
elements
.
length
;
i
++
)
{
if
(
elements
.
hasOwnProperty
(
i
)
&&
elements
[
i
]
&&
elements
[
i
].
nodeType
===
1
)
{
if
(
!
elements
[
i
].
zcClippingId
)
{
elements
[
i
].
zcClippingId
=
"
zcClippingId_
"
+
elementIdCounter
++
;
_elementMeta
[
elements
[
i
].
zcClippingId
]
=
[
this
.
id
];
if
(
_globalConfig
.
autoActivate
===
true
)
{
_addEventHandler
(
elements
[
i
],
"
mouseover
"
,
_elementMouseOver
);
}
}
else
if
(
_inArray
(
this
.
id
,
_elementMeta
[
elements
[
i
].
zcClippingId
])
===
-
1
)
{
_elementMeta
[
elements
[
i
].
zcClippingId
].
push
(
this
.
id
);
}
var
clippedElements
=
_clientMeta
[
this
.
id
].
elements
;
if
(
_inArray
(
elements
[
i
],
clippedElements
)
===
-
1
)
{
clippedElements
.
push
(
elements
[
i
]);
}
}
}
return
this
;
};
ZeroClipboard
.
prototype
.
unclip
=
function
(
elements
)
{
var
meta
=
_clientMeta
[
this
.
id
];
if
(
meta
)
{
var
clippedElements
=
meta
.
elements
;
var
arrayIndex
;
if
(
typeof
elements
===
"
undefined
"
)
{
elements
=
clippedElements
.
slice
(
0
);
}
else
{
elements
=
_prepClip
(
elements
);
}
for
(
var
i
=
elements
.
length
;
i
--
;
)
{
if
(
elements
.
hasOwnProperty
(
i
)
&&
elements
[
i
]
&&
elements
[
i
].
nodeType
===
1
)
{
arrayIndex
=
0
;
while
((
arrayIndex
=
_inArray
(
elements
[
i
],
clippedElements
,
arrayIndex
))
!==
-
1
)
{
clippedElements
.
splice
(
arrayIndex
,
1
);
}
var
clientIds
=
_elementMeta
[
elements
[
i
].
zcClippingId
];
if
(
clientIds
)
{
arrayIndex
=
0
;
while
((
arrayIndex
=
_inArray
(
this
.
id
,
clientIds
,
arrayIndex
))
!==
-
1
)
{
clientIds
.
splice
(
arrayIndex
,
1
);
}
if
(
clientIds
.
length
===
0
)
{
if
(
_globalConfig
.
autoActivate
===
true
)
{
_removeEventHandler
(
elements
[
i
],
"
mouseover
"
,
_elementMouseOver
);
}
delete
elements
[
i
].
zcClippingId
;
}
}
}
}
}
return
this
;
};
ZeroClipboard
.
prototype
.
elements
=
function
()
{
var
meta
=
_clientMeta
[
this
.
id
];
return
meta
&&
meta
.
elements
?
meta
.
elements
.
slice
(
0
)
:
[];
};
var
_getAllClientsClippedToElement
=
function
(
element
)
{
var
elementMetaId
,
clientIds
,
i
,
len
,
client
,
clients
=
[];
if
(
element
&&
element
.
nodeType
===
1
&&
(
elementMetaId
=
element
.
zcClippingId
)
&&
_elementMeta
.
hasOwnProperty
(
elementMetaId
))
{
clientIds
=
_elementMeta
[
elementMetaId
];
if
(
clientIds
&&
clientIds
.
length
)
{
for
(
i
=
0
,
len
=
clientIds
.
length
;
i
<
len
;
i
++
)
{
client
=
_clientMeta
[
clientIds
[
i
]].
instance
;
if
(
client
&&
client
instanceof
ZeroClipboard
)
{
clients
.
push
(
client
);
}
}
}
}
return
clients
;
};
_globalConfig
.
hoverClass
=
"
zeroclipboard-is-hover
"
;
_globalConfig
.
activeClass
=
"
zeroclipboard-is-active
"
;
_globalConfig
.
trustedOrigins
=
null
;
_globalConfig
.
allowScriptAccess
=
null
;
_globalConfig
.
useNoCache
=
true
;
_globalConfig
.
moviePath
=
"
ZeroClipboard.swf
"
;
ZeroClipboard
.
detectFlashSupport
=
function
()
{
_deprecationWarning
(
"
ZeroClipboard.detectFlashSupport
"
,
_globalConfig
.
debug
);
return
_detectFlashSupport
();
};
ZeroClipboard
.
dispatch
=
function
(
eventName
,
args
)
{
if
(
typeof
eventName
===
"
string
"
&&
eventName
)
{
var
cleanEventName
=
eventName
.
toLowerCase
().
replace
(
/^on/
,
""
);
if
(
cleanEventName
)
{
var
clients
=
currentElement
?
_getAllClientsClippedToElement
(
currentElement
)
:
_getAllClients
();
for
(
var
i
=
0
,
len
=
clients
.
length
;
i
<
len
;
i
++
)
{
_receiveEvent
.
call
(
clients
[
i
],
cleanEventName
,
args
);
}
}
}
};
ZeroClipboard
.
prototype
.
setHandCursor
=
function
(
enabled
)
{
_deprecationWarning
(
"
ZeroClipboard.prototype.setHandCursor
"
,
_globalConfig
.
debug
);
enabled
=
typeof
enabled
===
"
boolean
"
?
enabled
:
!!
enabled
;
_setHandCursor
(
enabled
);
_globalConfig
.
forceHandCursor
=
enabled
;
return
this
;
};
ZeroClipboard
.
prototype
.
reposition
=
function
()
{
_deprecationWarning
(
"
ZeroClipboard.prototype.reposition
"
,
_globalConfig
.
debug
);
return
_reposition
();
};
ZeroClipboard
.
prototype
.
receiveEvent
=
function
(
eventName
,
args
)
{
_deprecationWarning
(
"
ZeroClipboard.prototype.receiveEvent
"
,
_globalConfig
.
debug
);
if
(
typeof
eventName
===
"
string
"
&&
eventName
)
{
var
cleanEventName
=
eventName
.
toLowerCase
().
replace
(
/^on/
,
""
);
if
(
cleanEventName
)
{
_receiveEvent
.
call
(
this
,
cleanEventName
,
args
);
}
}
};
ZeroClipboard
.
prototype
.
setCurrent
=
function
(
element
)
{
_deprecationWarning
(
"
ZeroClipboard.prototype.setCurrent
"
,
_globalConfig
.
debug
);
ZeroClipboard
.
activate
(
element
);
return
this
;
};
ZeroClipboard
.
prototype
.
resetBridge
=
function
()
{
_deprecationWarning
(
"
ZeroClipboard.prototype.resetBridge
"
,
_globalConfig
.
debug
);
ZeroClipboard
.
deactivate
();
return
this
;
};
ZeroClipboard
.
prototype
.
setTitle
=
function
(
newTitle
)
{
_deprecationWarning
(
"
ZeroClipboard.prototype.setTitle
"
,
_globalConfig
.
debug
);
newTitle
=
newTitle
||
_globalConfig
.
title
||
currentElement
&&
currentElement
.
getAttribute
(
"
title
"
);
if
(
newTitle
)
{
var
htmlBridge
=
_getHtmlBridge
(
flashState
.
bridge
);
if
(
htmlBridge
)
{
htmlBridge
.
setAttribute
(
"
title
"
,
newTitle
);
}
}
return
this
;
};
ZeroClipboard
.
setDefaults
=
function
(
options
)
{
_deprecationWarning
(
"
ZeroClipboard.setDefaults
"
,
_globalConfig
.
debug
);
ZeroClipboard
.
config
(
options
);
};
ZeroClipboard
.
prototype
.
addEventListener
=
function
(
eventName
,
func
)
{
_deprecationWarning
(
"
ZeroClipboard.prototype.addEventListener
"
,
_globalConfig
.
debug
);
return
this
.
on
(
eventName
,
func
);
};
ZeroClipboard
.
prototype
.
removeEventListener
=
function
(
eventName
,
func
)
{
_deprecationWarning
(
"
ZeroClipboard.prototype.removeEventListener
"
,
_globalConfig
.
debug
);
return
this
.
off
(
eventName
,
func
);
};
ZeroClipboard
.
prototype
.
ready
=
function
()
{
_deprecationWarning
(
"
ZeroClipboard.prototype.ready
"
,
_globalConfig
.
debug
);
return
flashState
.
ready
===
true
;
};
var
_receiveEvent
=
function
(
eventName
,
args
)
{
eventName
=
eventName
.
toLowerCase
().
replace
(
/^on/
,
""
);
var
cleanVersion
=
args
&&
args
.
flashVersion
&&
_parseFlashVersion
(
args
.
flashVersion
)
||
null
;
var
element
=
currentElement
;
var
performCallbackAsync
=
true
;
switch
(
eventName
)
{
case
"
load
"
:
if
(
cleanVersion
)
{
if
(
!
_isFlashVersionSupported
(
cleanVersion
))
{
_receiveEvent
.
call
(
this
,
"
onWrongFlash
"
,
{
flashVersion
:
cleanVersion
});
return
;
}
flashState
.
outdated
=
false
;
flashState
.
ready
=
true
;
flashState
.
version
=
cleanVersion
;
}
break
;
case
"
wrongflash
"
:
if
(
cleanVersion
&&
!
_isFlashVersionSupported
(
cleanVersion
))
{
flashState
.
outdated
=
true
;
flashState
.
ready
=
false
;
flashState
.
version
=
cleanVersion
;
}
break
;
case
"
mouseover
"
:
_addClass
(
element
,
_globalConfig
.
hoverClass
);
break
;
case
"
mouseout
"
:
if
(
_globalConfig
.
autoActivate
===
true
)
{
ZeroClipboard
.
deactivate
();
}
break
;
case
"
mousedown
"
:
_addClass
(
element
,
_globalConfig
.
activeClass
);
break
;
case
"
mouseup
"
:
_removeClass
(
element
,
_globalConfig
.
activeClass
);
break
;
case
"
datarequested
"
:
var
targetId
=
element
.
getAttribute
(
"
data-clipboard-target
"
),
targetEl
=
!
targetId
?
null
:
document
.
getElementById
(
targetId
);
if
(
targetEl
)
{
var
textContent
=
targetEl
.
value
||
targetEl
.
textContent
||
targetEl
.
innerText
;
if
(
textContent
)
{
this
.
setText
(
textContent
);
}
}
else
{
var
defaultText
=
element
.
getAttribute
(
"
data-clipboard-text
"
);
if
(
defaultText
)
{
this
.
setText
(
defaultText
);
}
}
performCallbackAsync
=
false
;
break
;
case
"
complete
"
:
_deleteOwnProperties
(
_clipData
);
break
;
}
var
context
=
element
;
var
eventArgs
=
[
this
,
args
];
return
_dispatchClientCallbacks
.
call
(
this
,
eventName
,
context
,
eventArgs
,
performCallbackAsync
);
};
if
(
typeof
define
===
"
function
"
&&
define
.
amd
)
{
define
([
"
require
"
,
"
exports
"
,
"
module
"
],
function
(
require
,
exports
,
module
)
{
_amdModuleId
=
module
&&
module
.
id
||
null
;
return
ZeroClipboard
;
});
}
else
if
(
typeof
module
===
"
object
"
&&
module
&&
typeof
module
.
exports
===
"
object
"
&&
module
.
exports
)
{
_cjsModuleId
=
module
.
id
||
null
;
module
.
exports
=
ZeroClipboard
;
}
else
{
window
.
ZeroClipboard
=
ZeroClipboard
;
}
})();
\ No newline at end of file
This diff is collapsed.
Click to expand it.
docs/assets/js/_vendor/zero-clipboard.min.js
0 → 100644
+
9
-
0
View file @
7d1365ce
/*!
* ZeroClipboard
* The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.
* Copyright (c) 2014 Jon Rohan, James M. Greene
* Licensed MIT
* http://zeroclipboard.org/
* v1.3.2
*/
!
function
(){
"
use strict
"
;
function
a
(
a
){
return
a
.
replace
(
/,/g
,
"
.
"
).
replace
(
/
[^
0-9
\.]
/g
,
""
)}
function
b
(
b
){
return
parseFloat
(
a
(
b
))
>=
10
}
var
c
,
d
=
{
bridge
:
null
,
version
:
"
0.0.0
"
,
disabled
:
null
,
outdated
:
null
,
ready
:
null
},
e
=
{},
f
=
0
,
g
=
{},
h
=
0
,
i
=
{},
j
=
null
,
k
=
null
,
l
=
function
(){
var
a
,
b
,
c
,
d
,
e
=
"
ZeroClipboard.swf
"
;
if
(
document
.
currentScript
&&
(
d
=
document
.
currentScript
.
src
));
else
{
var
f
=
document
.
getElementsByTagName
(
"
script
"
);
if
(
"
readyState
"
in
f
[
0
])
for
(
a
=
f
.
length
;
a
--&&
(
"
interactive
"
!==
f
[
a
].
readyState
||!
(
d
=
f
[
a
].
src
)););
else
if
(
"
loading
"
===
document
.
readyState
)
d
=
f
[
f
.
length
-
1
].
src
;
else
{
for
(
a
=
f
.
length
;
a
--
;){
if
(
c
=
f
[
a
].
src
,
!
c
){
b
=
null
;
break
}
if
(
c
=
c
.
split
(
"
#
"
)[
0
].
split
(
"
?
"
)[
0
],
c
=
c
.
slice
(
0
,
c
.
lastIndexOf
(
"
/
"
)
+
1
),
null
==
b
)
b
=
c
;
else
if
(
b
!==
c
){
b
=
null
;
break
}}
null
!==
b
&&
(
d
=
b
)}}
return
d
&&
(
d
=
d
.
split
(
"
#
"
)[
0
].
split
(
"
?
"
)[
0
],
e
=
d
.
slice
(
0
,
d
.
lastIndexOf
(
"
/
"
)
+
1
)
+
e
),
e
}(),
m
=
function
(){
var
a
=
/
\-([
a-z
])
/g
,
b
=
function
(
a
,
b
){
return
b
.
toUpperCase
()};
return
function
(
c
){
return
c
.
replace
(
a
,
b
)}}(),
n
=
function
(
a
,
b
){
var
c
,
d
,
e
;
return
window
.
getComputedStyle
?
c
=
window
.
getComputedStyle
(
a
,
null
).
getPropertyValue
(
b
):(
d
=
m
(
b
),
c
=
a
.
currentStyle
?
a
.
currentStyle
[
d
]:
a
.
style
[
d
]),
"
cursor
"
!==
b
||
c
&&
"
auto
"
!==
c
||
(
e
=
a
.
tagName
.
toLowerCase
(),
"
a
"
!==
e
)?
c
:
"
pointer
"
},
o
=
function
(
a
){
a
||
(
a
=
window
.
event
);
var
b
;
this
!==
window
?
b
=
this
:
a
.
target
?
b
=
a
.
target
:
a
.
srcElement
&&
(
b
=
a
.
srcElement
),
I
.
activate
(
b
)},
p
=
function
(
a
,
b
,
c
){
a
&&
1
===
a
.
nodeType
&&
(
a
.
addEventListener
?
a
.
addEventListener
(
b
,
c
,
!
1
):
a
.
attachEvent
&&
a
.
attachEvent
(
"
on
"
+
b
,
c
))},
q
=
function
(
a
,
b
,
c
){
a
&&
1
===
a
.
nodeType
&&
(
a
.
removeEventListener
?
a
.
removeEventListener
(
b
,
c
,
!
1
):
a
.
detachEvent
&&
a
.
detachEvent
(
"
on
"
+
b
,
c
))},
r
=
function
(
a
,
b
){
if
(
!
a
||
1
!==
a
.
nodeType
)
return
a
;
if
(
a
.
classList
)
return
a
.
classList
.
contains
(
b
)
||
a
.
classList
.
add
(
b
),
a
;
if
(
b
&&
"
string
"
==
typeof
b
){
var
c
=
(
b
||
""
).
split
(
/
\s
+/
);
if
(
1
===
a
.
nodeType
)
if
(
a
.
className
){
for
(
var
d
=
"
"
+
a
.
className
+
"
"
,
e
=
a
.
className
,
f
=
0
,
g
=
c
.
length
;
g
>
f
;
f
++
)
d
.
indexOf
(
"
"
+
c
[
f
]
+
"
"
)
<
0
&&
(
e
+=
"
"
+
c
[
f
]);
a
.
className
=
e
.
replace
(
/^
\s
+|
\s
+$/g
,
""
)}
else
a
.
className
=
b
}
return
a
},
s
=
function
(
a
,
b
){
if
(
!
a
||
1
!==
a
.
nodeType
)
return
a
;
if
(
a
.
classList
)
return
a
.
classList
.
contains
(
b
)
&&
a
.
classList
.
remove
(
b
),
a
;
if
(
b
&&
"
string
"
==
typeof
b
||
void
0
===
b
){
var
c
=
(
b
||
""
).
split
(
/
\s
+/
);
if
(
1
===
a
.
nodeType
&&
a
.
className
)
if
(
b
){
for
(
var
d
=
(
"
"
+
a
.
className
+
"
"
).
replace
(
/
[\n\t]
/g
,
"
"
),
e
=
0
,
f
=
c
.
length
;
f
>
e
;
e
++
)
d
=
d
.
replace
(
"
"
+
c
[
e
]
+
"
"
,
"
"
);
a
.
className
=
d
.
replace
(
/^
\s
+|
\s
+$/g
,
""
)}
else
a
.
className
=
""
}
return
a
},
t
=
function
(){
var
a
,
b
,
c
,
d
=
1
;
return
"
function
"
==
typeof
document
.
body
.
getBoundingClientRect
&&
(
a
=
document
.
body
.
getBoundingClientRect
(),
b
=
a
.
right
-
a
.
left
,
c
=
document
.
body
.
offsetWidth
,
d
=
Math
.
round
(
b
/
c
*
100
)
/
100
),
d
},
u
=
function
(
a
,
b
){
var
c
=
{
left
:
0
,
top
:
0
,
width
:
0
,
height
:
0
,
zIndex
:
A
(
b
)
-
1
};
if
(
a
.
getBoundingClientRect
){
var
d
,
e
,
f
,
g
=
a
.
getBoundingClientRect
();
"
pageXOffset
"
in
window
&&
"
pageYOffset
"
in
window
?(
d
=
window
.
pageXOffset
,
e
=
window
.
pageYOffset
):(
f
=
t
(),
d
=
Math
.
round
(
document
.
documentElement
.
scrollLeft
/
f
),
e
=
Math
.
round
(
document
.
documentElement
.
scrollTop
/
f
));
var
h
=
document
.
documentElement
.
clientLeft
||
0
,
i
=
document
.
documentElement
.
clientTop
||
0
;
c
.
left
=
g
.
left
+
d
-
h
,
c
.
top
=
g
.
top
+
e
-
i
,
c
.
width
=
"
width
"
in
g
?
g
.
width
:
g
.
right
-
g
.
left
,
c
.
height
=
"
height
"
in
g
?
g
.
height
:
g
.
bottom
-
g
.
top
}
return
c
},
v
=
function
(
a
,
b
){
var
c
=
null
==
b
||
b
&&
b
.
cacheBust
===!
0
&&
b
.
useNoCache
===!
0
;
return
c
?(
-
1
===
a
.
indexOf
(
"
?
"
)?
"
?
"
:
"
&
"
)
+
"
noCache=
"
+
(
new
Date
).
getTime
():
""
},
w
=
function
(
a
){
var
b
,
c
,
d
,
e
=
[],
f
=
[],
g
=
[];
if
(
a
.
trustedOrigins
&&
(
"
string
"
==
typeof
a
.
trustedOrigins
?
f
.
push
(
a
.
trustedOrigins
):
"
object
"
==
typeof
a
.
trustedOrigins
&&
"
length
"
in
a
.
trustedOrigins
&&
(
f
=
f
.
concat
(
a
.
trustedOrigins
))),
a
.
trustedDomains
&&
(
"
string
"
==
typeof
a
.
trustedDomains
?
f
.
push
(
a
.
trustedDomains
):
"
object
"
==
typeof
a
.
trustedDomains
&&
"
length
"
in
a
.
trustedDomains
&&
(
f
=
f
.
concat
(
a
.
trustedDomains
))),
f
.
length
)
for
(
b
=
0
,
c
=
f
.
length
;
c
>
b
;
b
++
)
if
(
f
.
hasOwnProperty
(
b
)
&&
f
[
b
]
&&
"
string
"
==
typeof
f
[
b
]){
if
(
d
=
D
(
f
[
b
]),
!
d
)
continue
;
if
(
"
*
"
===
d
){
g
=
[
d
];
break
}
g
.
push
.
apply
(
g
,[
d
,
"
//
"
+
d
,
window
.
location
.
protocol
+
"
//
"
+
d
])}
return
g
.
length
&&
e
.
push
(
"
trustedOrigins=
"
+
encodeURIComponent
(
g
.
join
(
"
,
"
))),
"
string
"
==
typeof
a
.
jsModuleId
&&
a
.
jsModuleId
&&
e
.
push
(
"
jsModuleId=
"
+
encodeURIComponent
(
a
.
jsModuleId
)),
e
.
join
(
"
&
"
)},
x
=
function
(
a
,
b
,
c
){
if
(
"
function
"
==
typeof
b
.
indexOf
)
return
b
.
indexOf
(
a
,
c
);
var
d
,
e
=
b
.
length
;
for
(
"
undefined
"
==
typeof
c
?
c
=
0
:
0
>
c
&&
(
c
=
e
+
c
),
d
=
c
;
e
>
d
;
d
++
)
if
(
b
.
hasOwnProperty
(
d
)
&&
b
[
d
]
===
a
)
return
d
;
return
-
1
},
y
=
function
(
a
){
if
(
"
string
"
==
typeof
a
)
throw
new
TypeError
(
"
ZeroClipboard doesn't accept query strings.
"
);
return
a
.
length
?
a
:[
a
]},
z
=
function
(
a
,
b
,
c
,
d
){
d
?
window
.
setTimeout
(
function
(){
a
.
apply
(
b
,
c
)},
0
):
a
.
apply
(
b
,
c
)},
A
=
function
(
a
){
var
b
,
c
;
return
a
&&
(
"
number
"
==
typeof
a
&&
a
>
0
?
b
=
a
:
"
string
"
==
typeof
a
&&
(
c
=
parseInt
(
a
,
10
))
&&!
isNaN
(
c
)
&&
c
>
0
&&
(
b
=
c
)),
b
||
(
"
number
"
==
typeof
L
.
zIndex
&&
L
.
zIndex
>
0
?
b
=
L
.
zIndex
:
"
string
"
==
typeof
L
.
zIndex
&&
(
c
=
parseInt
(
L
.
zIndex
,
10
))
&&!
isNaN
(
c
)
&&
c
>
0
&&
(
b
=
c
)),
b
||
0
},
B
=
function
(
a
,
b
){
if
(
a
&&
b
!==!
1
&&
"
undefined
"
!=
typeof
console
&&
console
&&
(
console
.
warn
||
console
.
log
)){
var
c
=
"
`
"
+
a
+
"
` is deprecated. See docs for more info:
\n
https://github.com/zeroclipboard/zeroclipboard/blob/master/docs/instructions.md#deprecations
"
;
console
.
warn
?
console
.
warn
(
c
):
console
.
log
(
c
)}},
C
=
function
(){
var
a
,
b
,
c
,
d
,
e
,
f
,
g
=
arguments
[
0
]
||
{};
for
(
a
=
1
,
b
=
arguments
.
length
;
b
>
a
;
a
++
)
if
(
null
!=
(
c
=
arguments
[
a
]))
for
(
d
in
c
)
if
(
c
.
hasOwnProperty
(
d
)){
if
(
e
=
g
[
d
],
f
=
c
[
d
],
g
===
f
)
continue
;
void
0
!==
f
&&
(
g
[
d
]
=
f
)}
return
g
},
D
=
function
(
a
){
if
(
null
==
a
||
""
===
a
)
return
null
;
if
(
a
=
a
.
replace
(
/^
\s
+|
\s
+$/g
,
""
),
""
===
a
)
return
null
;
var
b
=
a
.
indexOf
(
"
//
"
);
a
=-
1
===
b
?
a
:
a
.
slice
(
b
+
2
);
var
c
=
a
.
indexOf
(
"
/
"
);
return
a
=-
1
===
c
?
a
:
-
1
===
b
||
0
===
c
?
null
:
a
.
slice
(
0
,
c
),
a
&&
"
.swf
"
===
a
.
slice
(
-
4
).
toLowerCase
()?
null
:
a
||
null
},
E
=
function
(){
var
a
=
function
(
a
,
b
){
var
c
,
d
,
e
;
if
(
null
!=
a
&&
"
*
"
!==
b
[
0
]
&&
(
"
string
"
==
typeof
a
&&
(
a
=
[
a
]),
"
object
"
==
typeof
a
&&
"
length
"
in
a
))
for
(
c
=
0
,
d
=
a
.
length
;
d
>
c
;
c
++
)
if
(
a
.
hasOwnProperty
(
c
)
&&
(
e
=
D
(
a
[
c
]))){
if
(
"
*
"
===
e
){
b
.
length
=
0
,
b
.
push
(
"
*
"
);
break
}
-
1
===
x
(
e
,
b
)
&&
b
.
push
(
e
)}},
b
=
{
always
:
"
always
"
,
samedomain
:
"
sameDomain
"
,
never
:
"
never
"
};
return
function
(
c
,
d
){
var
e
,
f
=
d
.
allowScriptAccess
;
if
(
"
string
"
==
typeof
f
&&
(
e
=
f
.
toLowerCase
())
&&
/^always|samedomain|never$/
.
test
(
e
))
return
b
[
e
];
var
g
=
D
(
d
.
moviePath
);
null
===
g
&&
(
g
=
c
);
var
h
=
[];
a
(
d
.
trustedOrigins
,
h
),
a
(
d
.
trustedDomains
,
h
);
var
i
=
h
.
length
;
if
(
i
>
0
){
if
(
1
===
i
&&
"
*
"
===
h
[
0
])
return
"
always
"
;
if
(
-
1
!==
x
(
c
,
h
))
return
1
===
i
&&
c
===
g
?
"
sameDomain
"
:
"
always
"
}
return
"
never
"
}}(),
F
=
function
(
a
){
if
(
null
==
a
)
return
[];
if
(
Object
.
keys
)
return
Object
.
keys
(
a
);
var
b
=
[];
for
(
var
c
in
a
)
a
.
hasOwnProperty
(
c
)
&&
b
.
push
(
c
);
return
b
},
G
=
function
(
a
){
if
(
a
)
for
(
var
b
in
a
)
a
.
hasOwnProperty
(
b
)
&&
delete
a
[
b
];
return
a
},
H
=
function
(){
var
a
=!
1
;
if
(
"
boolean
"
==
typeof
d
.
disabled
)
a
=
d
.
disabled
===!
1
;
else
{
if
(
"
function
"
==
typeof
ActiveXObject
)
try
{
new
ActiveXObject
(
"
ShockwaveFlash.ShockwaveFlash
"
)
&&
(
a
=!
0
)}
catch
(
b
){}
!
a
&&
navigator
.
mimeTypes
[
"
application/x-shockwave-flash
"
]
&&
(
a
=!
0
)}
return
a
},
I
=
function
(
a
,
b
){
return
this
instanceof
I
?(
this
.
id
=
""
+
f
++
,
g
[
this
.
id
]
=
{
instance
:
this
,
elements
:[],
handlers
:{}},
a
&&
this
.
clip
(
a
),
"
undefined
"
!=
typeof
b
&&
(
B
(
"
new ZeroClipboard(elements, options)
"
,
L
.
debug
),
I
.
config
(
b
)),
this
.
options
=
I
.
config
(),
"
boolean
"
!=
typeof
d
.
disabled
&&
(
d
.
disabled
=!
H
()),
d
.
disabled
===!
1
&&
d
.
outdated
!==!
0
&&
null
===
d
.
bridge
&&
(
d
.
outdated
=!
1
,
d
.
ready
=!
1
,
M
()),
void
0
):
new
I
(
a
,
b
)};
I
.
prototype
.
setText
=
function
(
a
){
return
a
&&
""
!==
a
&&
(
e
[
"
text/plain
"
]
=
a
,
d
.
ready
===!
0
&&
d
.
bridge
&&
d
.
bridge
.
setText
(
a
)),
this
},
I
.
prototype
.
setSize
=
function
(
a
,
b
){
return
d
.
ready
===!
0
&&
d
.
bridge
&&
d
.
bridge
.
setSize
(
a
,
b
),
this
};
var
J
=
function
(
a
){
d
.
ready
===!
0
&&
d
.
bridge
&&
d
.
bridge
.
setHandCursor
(
a
)};
I
.
prototype
.
destroy
=
function
(){
this
.
unclip
(),
this
.
off
(),
delete
g
[
this
.
id
]};
var
K
=
function
(){
var
a
,
b
,
c
,
d
=
[],
e
=
F
(
g
);
for
(
a
=
0
,
b
=
e
.
length
;
b
>
a
;
a
++
)
c
=
g
[
e
[
a
]].
instance
,
c
&&
c
instanceof
I
&&
d
.
push
(
c
);
return
d
};
I
.
version
=
"
1.3.2
"
;
var
L
=
{
swfPath
:
l
,
trustedDomains
:
window
.
location
.
host
?[
window
.
location
.
host
]:[],
cacheBust
:
!
0
,
forceHandCursor
:
!
1
,
zIndex
:
999999999
,
debug
:
!
0
,
title
:
null
,
autoActivate
:
!
0
};
I
.
config
=
function
(
a
){
"
object
"
==
typeof
a
&&
null
!==
a
&&
C
(
L
,
a
);{
if
(
"
string
"
!=
typeof
a
||!
a
){
var
b
=
{};
for
(
var
c
in
L
)
L
.
hasOwnProperty
(
c
)
&&
(
b
[
c
]
=
"
object
"
==
typeof
L
[
c
]
&&
null
!==
L
[
c
]?
"
length
"
in
L
[
c
]?
L
[
c
].
slice
(
0
):
C
({},
L
[
c
]):
L
[
c
]);
return
b
}
if
(
L
.
hasOwnProperty
(
a
))
return
L
[
a
]}},
I
.
destroy
=
function
(){
I
.
deactivate
();
for
(
var
a
in
g
)
if
(
g
.
hasOwnProperty
(
a
)
&&
g
[
a
]){
var
b
=
g
[
a
].
instance
;
b
&&
"
function
"
==
typeof
b
.
destroy
&&
b
.
destroy
()}
var
c
=
N
(
d
.
bridge
);
c
&&
c
.
parentNode
&&
(
c
.
parentNode
.
removeChild
(
c
),
d
.
ready
=
null
,
d
.
bridge
=
null
)},
I
.
activate
=
function
(
a
){
c
&&
(
s
(
c
,
L
.
hoverClass
),
s
(
c
,
L
.
activeClass
)),
c
=
a
,
r
(
a
,
L
.
hoverClass
),
O
();
var
b
=
L
.
title
||
a
.
getAttribute
(
"
title
"
);
if
(
b
){
var
e
=
N
(
d
.
bridge
);
e
&&
e
.
setAttribute
(
"
title
"
,
b
)}
var
f
=
L
.
forceHandCursor
===!
0
||
"
pointer
"
===
n
(
a
,
"
cursor
"
);
J
(
f
)},
I
.
deactivate
=
function
(){
var
a
=
N
(
d
.
bridge
);
a
&&
(
a
.
style
.
left
=
"
0px
"
,
a
.
style
.
top
=
"
-9999px
"
,
a
.
removeAttribute
(
"
title
"
)),
c
&&
(
s
(
c
,
L
.
hoverClass
),
s
(
c
,
L
.
activeClass
),
c
=
null
)};
var
M
=
function
(){
var
a
,
b
,
c
=
document
.
getElementById
(
"
global-zeroclipboard-html-bridge
"
);
if
(
!
c
){
var
e
=
I
.
config
();
e
.
jsModuleId
=
"
string
"
==
typeof
j
&&
j
||
"
string
"
==
typeof
k
&&
k
||
null
;
var
f
=
E
(
window
.
location
.
host
,
L
),
g
=
w
(
e
),
h
=
L
.
moviePath
+
v
(
L
.
moviePath
,
L
),
i
=
'
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="global-zeroclipboard-flash-bridge" width="100%" height="100%"> <param name="movie" value="
'
+
h
+
'
"/> <param name="allowScriptAccess" value="
'
+
f
+
'
"/> <param name="scale" value="exactfit"/> <param name="loop" value="false"/> <param name="menu" value="false"/> <param name="quality" value="best" /> <param name="bgcolor" value="#ffffff"/> <param name="wmode" value="transparent"/> <param name="flashvars" value="
'
+
g
+
'
"/> <embed src="
'
+
h
+
'
" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="100%" height="100%" name="global-zeroclipboard-flash-bridge" allowScriptAccess="
'
+
f
+
'
" allowFullScreen="false" type="application/x-shockwave-flash" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="
'
+
g
+
'
" scale="exactfit"> </embed> </object>
'
;
c
=
document
.
createElement
(
"
div
"
),
c
.
id
=
"
global-zeroclipboard-html-bridge
"
,
c
.
setAttribute
(
"
class
"
,
"
global-zeroclipboard-container
"
),
c
.
style
.
position
=
"
absolute
"
,
c
.
style
.
left
=
"
0px
"
,
c
.
style
.
top
=
"
-9999px
"
,
c
.
style
.
width
=
"
15px
"
,
c
.
style
.
height
=
"
15px
"
,
c
.
style
.
zIndex
=
""
+
A
(
L
.
zIndex
),
document
.
body
.
appendChild
(
c
),
c
.
innerHTML
=
i
}
a
=
document
[
"
global-zeroclipboard-flash-bridge
"
],
a
&&
(
b
=
a
.
length
)
&&
(
a
=
a
[
b
-
1
]),
d
.
bridge
=
a
||
c
.
children
[
0
].
lastElementChild
},
N
=
function
(
a
){
for
(
var
b
=
/^OBJECT|EMBED$/
,
c
=
a
&&
a
.
parentNode
;
c
&&
b
.
test
(
c
.
nodeName
)
&&
c
.
parentNode
;)
c
=
c
.
parentNode
;
return
c
||
null
},
O
=
function
(){
if
(
c
){
var
a
=
u
(
c
,
L
.
zIndex
),
b
=
N
(
d
.
bridge
);
b
&&
(
b
.
style
.
top
=
a
.
top
+
"
px
"
,
b
.
style
.
left
=
a
.
left
+
"
px
"
,
b
.
style
.
width
=
a
.
width
+
"
px
"
,
b
.
style
.
height
=
a
.
height
+
"
px
"
,
b
.
style
.
zIndex
=
a
.
zIndex
+
1
),
d
.
ready
===!
0
&&
d
.
bridge
&&
d
.
bridge
.
setSize
(
a
.
width
,
a
.
height
)}
return
this
};
I
.
prototype
.
on
=
function
(
a
,
b
){
var
c
,
e
,
f
,
h
=
{},
i
=
g
[
this
.
id
]
&&
g
[
this
.
id
].
handlers
;
if
(
"
string
"
==
typeof
a
&&
a
)
f
=
a
.
toLowerCase
().
split
(
/
\s
+/
);
else
if
(
"
object
"
==
typeof
a
&&
a
&&
"
undefined
"
==
typeof
b
)
for
(
c
in
a
)
a
.
hasOwnProperty
(
c
)
&&
"
string
"
==
typeof
c
&&
c
&&
"
function
"
==
typeof
a
[
c
]
&&
this
.
on
(
c
,
a
[
c
]);
if
(
f
&&
f
.
length
){
for
(
c
=
0
,
e
=
f
.
length
;
e
>
c
;
c
++
)
a
=
f
[
c
].
replace
(
/^on/
,
""
),
h
[
a
]
=!
0
,
i
[
a
]
||
(
i
[
a
]
=
[]),
i
[
a
].
push
(
b
);
h
.
noflash
&&
d
.
disabled
&&
R
.
call
(
this
,
"
noflash
"
,{}),
h
.
wrongflash
&&
d
.
outdated
&&
R
.
call
(
this
,
"
wrongflash
"
,{
flashVersion
:
d
.
version
}),
h
.
load
&&
d
.
ready
&&
R
.
call
(
this
,
"
load
"
,{
flashVersion
:
d
.
version
})}
return
this
},
I
.
prototype
.
off
=
function
(
a
,
b
){
var
c
,
d
,
e
,
f
,
h
,
i
=
g
[
this
.
id
]
&&
g
[
this
.
id
].
handlers
;
if
(
0
===
arguments
.
length
)
f
=
F
(
i
);
else
if
(
"
string
"
==
typeof
a
&&
a
)
f
=
a
.
split
(
/
\s
+/
);
else
if
(
"
object
"
==
typeof
a
&&
a
&&
"
undefined
"
==
typeof
b
)
for
(
c
in
a
)
a
.
hasOwnProperty
(
c
)
&&
"
string
"
==
typeof
c
&&
c
&&
"
function
"
==
typeof
a
[
c
]
&&
this
.
off
(
c
,
a
[
c
]);
if
(
f
&&
f
.
length
)
for
(
c
=
0
,
d
=
f
.
length
;
d
>
c
;
c
++
)
if
(
a
=
f
[
c
].
toLowerCase
().
replace
(
/^on/
,
""
),
h
=
i
[
a
],
h
&&
h
.
length
)
if
(
b
)
for
(
e
=
x
(
b
,
h
);
-
1
!==
e
;)
h
.
splice
(
e
,
1
),
e
=
x
(
b
,
h
,
e
);
else
i
[
a
].
length
=
0
;
return
this
},
I
.
prototype
.
handlers
=
function
(
a
){
var
b
,
c
=
null
,
d
=
g
[
this
.
id
]
&&
g
[
this
.
id
].
handlers
;
if
(
d
){
if
(
"
string
"
==
typeof
a
&&
a
)
return
d
[
a
]?
d
[
a
].
slice
(
0
):
null
;
c
=
{};
for
(
b
in
d
)
d
.
hasOwnProperty
(
b
)
&&
d
[
b
]
&&
(
c
[
b
]
=
d
[
b
].
slice
(
0
))}
return
c
};
var
P
=
function
(
a
,
b
,
c
,
d
){
var
e
=
g
[
this
.
id
]
&&
g
[
this
.
id
].
handlers
[
a
];
if
(
e
&&
e
.
length
){
var
f
,
h
,
i
,
j
=
b
||
this
;
for
(
f
=
0
,
h
=
e
.
length
;
h
>
f
;
f
++
)
i
=
e
[
f
],
b
=
j
,
"
string
"
==
typeof
i
&&
"
function
"
==
typeof
window
[
i
]
&&
(
i
=
window
[
i
]),
"
object
"
==
typeof
i
&&
i
&&
"
function
"
==
typeof
i
.
handleEvent
&&
(
b
=
i
,
i
=
i
.
handleEvent
),
"
function
"
==
typeof
i
&&
z
(
i
,
b
,
c
,
d
)}
return
this
};
I
.
prototype
.
clip
=
function
(
a
){
a
=
y
(
a
);
for
(
var
b
=
0
;
b
<
a
.
length
;
b
++
)
if
(
a
.
hasOwnProperty
(
b
)
&&
a
[
b
]
&&
1
===
a
[
b
].
nodeType
){
a
[
b
].
zcClippingId
?
-
1
===
x
(
this
.
id
,
i
[
a
[
b
].
zcClippingId
])
&&
i
[
a
[
b
].
zcClippingId
].
push
(
this
.
id
):(
a
[
b
].
zcClippingId
=
"
zcClippingId_
"
+
h
++
,
i
[
a
[
b
].
zcClippingId
]
=
[
this
.
id
],
L
.
autoActivate
===!
0
&&
p
(
a
[
b
],
"
mouseover
"
,
o
));
var
c
=
g
[
this
.
id
].
elements
;
-
1
===
x
(
a
[
b
],
c
)
&&
c
.
push
(
a
[
b
])}
return
this
},
I
.
prototype
.
unclip
=
function
(
a
){
var
b
=
g
[
this
.
id
];
if
(
b
){
var
c
,
d
=
b
.
elements
;
a
=
"
undefined
"
==
typeof
a
?
d
.
slice
(
0
):
y
(
a
);
for
(
var
e
=
a
.
length
;
e
--
;)
if
(
a
.
hasOwnProperty
(
e
)
&&
a
[
e
]
&&
1
===
a
[
e
].
nodeType
){
for
(
c
=
0
;
-
1
!==
(
c
=
x
(
a
[
e
],
d
,
c
));)
d
.
splice
(
c
,
1
);
var
f
=
i
[
a
[
e
].
zcClippingId
];
if
(
f
){
for
(
c
=
0
;
-
1
!==
(
c
=
x
(
this
.
id
,
f
,
c
));)
f
.
splice
(
c
,
1
);
0
===
f
.
length
&&
(
L
.
autoActivate
===!
0
&&
q
(
a
[
e
],
"
mouseover
"
,
o
),
delete
a
[
e
].
zcClippingId
)}}}
return
this
},
I
.
prototype
.
elements
=
function
(){
var
a
=
g
[
this
.
id
];
return
a
&&
a
.
elements
?
a
.
elements
.
slice
(
0
):[]};
var
Q
=
function
(
a
){
var
b
,
c
,
d
,
e
,
f
,
h
=
[];
if
(
a
&&
1
===
a
.
nodeType
&&
(
b
=
a
.
zcClippingId
)
&&
i
.
hasOwnProperty
(
b
)
&&
(
c
=
i
[
b
],
c
&&
c
.
length
))
for
(
d
=
0
,
e
=
c
.
length
;
e
>
d
;
d
++
)
f
=
g
[
c
[
d
]].
instance
,
f
&&
f
instanceof
I
&&
h
.
push
(
f
);
return
h
};
L
.
hoverClass
=
"
zeroclipboard-is-hover
"
,
L
.
activeClass
=
"
zeroclipboard-is-active
"
,
L
.
trustedOrigins
=
null
,
L
.
allowScriptAccess
=
null
,
L
.
useNoCache
=!
0
,
L
.
moviePath
=
"
ZeroClipboard.swf
"
,
I
.
detectFlashSupport
=
function
(){
return
B
(
"
ZeroClipboard.detectFlashSupport
"
,
L
.
debug
),
H
()},
I
.
dispatch
=
function
(
a
,
b
){
if
(
"
string
"
==
typeof
a
&&
a
){
var
d
=
a
.
toLowerCase
().
replace
(
/^on/
,
""
);
if
(
d
)
for
(
var
e
=
c
?
Q
(
c
):
K
(),
f
=
0
,
g
=
e
.
length
;
g
>
f
;
f
++
)
R
.
call
(
e
[
f
],
d
,
b
)}},
I
.
prototype
.
setHandCursor
=
function
(
a
){
return
B
(
"
ZeroClipboard.prototype.setHandCursor
"
,
L
.
debug
),
a
=
"
boolean
"
==
typeof
a
?
a
:
!!
a
,
J
(
a
),
L
.
forceHandCursor
=
a
,
this
},
I
.
prototype
.
reposition
=
function
(){
return
B
(
"
ZeroClipboard.prototype.reposition
"
,
L
.
debug
),
O
()},
I
.
prototype
.
receiveEvent
=
function
(
a
,
b
){
if
(
B
(
"
ZeroClipboard.prototype.receiveEvent
"
,
L
.
debug
),
"
string
"
==
typeof
a
&&
a
){
var
c
=
a
.
toLowerCase
().
replace
(
/^on/
,
""
);
c
&&
R
.
call
(
this
,
c
,
b
)}},
I
.
prototype
.
setCurrent
=
function
(
a
){
return
B
(
"
ZeroClipboard.prototype.setCurrent
"
,
L
.
debug
),
I
.
activate
(
a
),
this
},
I
.
prototype
.
resetBridge
=
function
(){
return
B
(
"
ZeroClipboard.prototype.resetBridge
"
,
L
.
debug
),
I
.
deactivate
(),
this
},
I
.
prototype
.
setTitle
=
function
(
a
){
if
(
B
(
"
ZeroClipboard.prototype.setTitle
"
,
L
.
debug
),
a
=
a
||
L
.
title
||
c
&&
c
.
getAttribute
(
"
title
"
)){
var
b
=
N
(
d
.
bridge
);
b
&&
b
.
setAttribute
(
"
title
"
,
a
)}
return
this
},
I
.
setDefaults
=
function
(
a
){
B
(
"
ZeroClipboard.setDefaults
"
,
L
.
debug
),
I
.
config
(
a
)},
I
.
prototype
.
addEventListener
=
function
(
a
,
b
){
return
B
(
"
ZeroClipboard.prototype.addEventListener
"
,
L
.
debug
),
this
.
on
(
a
,
b
)},
I
.
prototype
.
removeEventListener
=
function
(
a
,
b
){
return
B
(
"
ZeroClipboard.prototype.removeEventListener
"
,
L
.
debug
),
this
.
off
(
a
,
b
)},
I
.
prototype
.
ready
=
function
(){
return
B
(
"
ZeroClipboard.prototype.ready
"
,
L
.
debug
),
d
.
ready
===!
0
};
var
R
=
function
(
f
,
g
){
f
=
f
.
toLowerCase
().
replace
(
/^on/
,
""
);
var
h
=
g
&&
g
.
flashVersion
&&
a
(
g
.
flashVersion
)
||
null
,
i
=
c
,
j
=!
0
;
switch
(
f
){
case
"
load
"
:
if
(
h
){
if
(
!
b
(
h
))
return
R
.
call
(
this
,
"
onWrongFlash
"
,{
flashVersion
:
h
}),
void
0
;
d
.
outdated
=!
1
,
d
.
ready
=!
0
,
d
.
version
=
h
}
break
;
case
"
wrongflash
"
:
h
&&!
b
(
h
)
&&
(
d
.
outdated
=!
0
,
d
.
ready
=!
1
,
d
.
version
=
h
);
break
;
case
"
mouseover
"
:
r
(
i
,
L
.
hoverClass
);
break
;
case
"
mouseout
"
:
L
.
autoActivate
===!
0
&&
I
.
deactivate
();
break
;
case
"
mousedown
"
:
r
(
i
,
L
.
activeClass
);
break
;
case
"
mouseup
"
:
s
(
i
,
L
.
activeClass
);
break
;
case
"
datarequested
"
:
var
k
=
i
.
getAttribute
(
"
data-clipboard-target
"
),
l
=
k
?
document
.
getElementById
(
k
):
null
;
if
(
l
){
var
m
=
l
.
value
||
l
.
textContent
||
l
.
innerText
;
m
&&
this
.
setText
(
m
)}
else
{
var
n
=
i
.
getAttribute
(
"
data-clipboard-text
"
);
n
&&
this
.
setText
(
n
)}
j
=!
1
;
break
;
case
"
complete
"
:
G
(
e
)}
var
o
=
i
,
p
=
[
this
,
g
];
return
P
.
call
(
this
,
f
,
o
,
p
,
j
)};
"
function
"
==
typeof
define
&&
define
.
amd
?
define
([
"
require
"
,
"
exports
"
,
"
module
"
],
function
(
a
,
b
,
c
){
return
j
=
c
&&
c
.
id
||
null
,
I
}):
"
object
"
==
typeof
module
&&
module
&&
"
object
"
==
typeof
module
.
exports
&&
module
.
exports
?(
k
=
module
.
id
||
null
,
module
.
exports
=
I
):
window
.
ZeroClipboard
=
I
}();
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
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!
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Snippets