Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
B
bootstrap
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
bootstrap
Commits
250e021f
Commit
250e021f
authored
Jan 08, 2014
by
soundarapandian
Committed by
XhmikosR
Jun 10, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Integrate ZeroClipboard to easily copy code snippets
parent
9e1652aa
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
1091 additions
and
0 deletions
+1091
-0
Gruntfile.js
Gruntfile.js
+1
-0
docs/assets/css/_src/docs.css
docs/assets/css/_src/docs.css
+33
-0
docs/assets/flash/zero-clipboard.swf
docs/assets/flash/zero-clipboard.swf
+0
-0
docs/assets/js/_src/application.js
docs/assets/js/_src/application.js
+47
-0
docs/assets/js/_vendor/zero-clipboard.js
docs/assets/js/_vendor/zero-clipboard.js
+1010
-0
No files found.
Gruntfile.js
View file @
250e021f
...
@@ -137,6 +137,7 @@ module.exports = function (grunt) {
...
@@ -137,6 +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/_src/application.js
'
'
docs/assets/js/_src/application.js
'
],
],
dest
:
'
docs/assets/js/docs.min.js
'
dest
:
'
docs/assets/js/docs.min.js
'
...
...
docs/assets/css/_src/docs.css
View file @
250e021f
...
@@ -1466,3 +1466,36 @@ h1[id] {
...
@@ -1466,3 +1466,36 @@ h1[id] {
-webkit-box-shadow
:
0
0
8px
rgba
(
82
,
168
,
236
,
.6
);
-webkit-box-shadow
:
0
0
8px
rgba
(
82
,
168
,
236
,
.6
);
box-shadow
:
0
0
8px
rgba
(
82
,
168
,
236
,
.6
);
box-shadow
:
0
0
8px
rgba
(
82
,
168
,
236
,
.6
);
}
}
/*
* ZeroClipboard styles
*/
.zero-clipboard
{
position
:
relative
;
}
.btn-clipboard
{
position
:
absolute
;
right
:
0
;
z-index
:
10
;
padding
:
5px
10px
;
cursor
:
pointer
;
border-color
:
#e1e1e8
;
border-bottom
:
1px
solid
transparent
;
border-left
:
1px
solid
transparent
;
border-radius
:
0
4px
0
0
;
}
.btn-clipboard-hover
{
background-color
:
#e1e1e8
;
}
@media
(
max-width
:
768px
)
{
.btn-clipboard.with-example
{
top
:
10px
;
border
:
1px
solid
#e1e1e8
;
border-radius
:
0
;
}
}
docs/assets/flash/zero-clipboard.swf
0 → 100644
View file @
250e021f
File added
docs/assets/js/_src/application.js
View file @
250e021f
...
@@ -15,6 +15,19 @@
...
@@ -15,6 +15,19 @@
$
(
function
()
{
$
(
function
()
{
// 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="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
)
...
@@ -102,6 +115,40 @@
...
@@ -102,6 +115,40 @@
btn
.
button
(
'
reset
'
)
btn
.
button
(
'
reset
'
)
},
3000
)
},
3000
)
})
})
// Handlers for ZeroClipboard
zeroClipboard
.
on
(
'
load
'
,
function
(
client
)
{
htmlBridge
.
data
(
'
placement
'
,
'
left
'
)
.
attr
(
'
title
'
,
'
copy to clipboard
'
)
.
tooltip
()
})
// Copy to clipboard
zeroClipboard
.
on
(
'
dataRequested
'
,
function
(
client
)
{
var
highlight
=
$
(
this
).
parent
().
nextAll
(
'
.highlight
'
).
first
()
client
.
setText
(
highlight
.
text
())
})
// Notify copy success and reset tooltip title
zeroClipboard
.
on
(
'
complete
'
,
function
(
client
)
{
htmlBridge
.
attr
(
'
title
'
,
'
copied!
'
)
.
tooltip
(
'
fixTitle
'
)
.
tooltip
(
'
show
'
)
.
attr
(
'
title
'
,
'
copy to clipboard
'
)
.
tooltip
(
'
fixTitle
'
)
})
// Notify copy failure
zeroClipboard
.
on
(
'
noflash wrongflash
'
,
function
(
client
)
{
htmlBridge
.
attr
(
'
title
'
,
'
flash not supported!
'
)
.
tooltip
(
'
fixTitle
'
)
.
tooltip
(
'
show
'
)
})
})
})
}(
jQuery
)
}(
jQuery
)
docs/assets/js/_vendor/zero-clipboard.js
0 → 100644
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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a 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