Skip to content
GitLab
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
1a0df1fb
Commit
1a0df1fb
authored
11 years ago
by
Chris Rebert
Browse files
Options
Download
Email Patches
Plain Diff
upgrade holder.js to v2.1
parent
a388b790
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
docs-assets/js/holder.js
+82
-97
docs-assets/js/holder.js
with
82 additions
and
97 deletions
+82
-97
docs-assets/js/holder.js
100644 → 100755
+
82
-
97
View file @
1a0df1fb
/*
/*
Holder - 2.
0
- client side image placeholders
Holder - 2.
1
- client side image placeholders
(c) 2012-2013 Ivan Malopinsky / http://imsky.co
(c) 2012-2013 Ivan Malopinsky / http://imsky.co
Provided under the
Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0
Provided under the
MIT License.
Commercial use requires attribution.
Commercial use requires attribution.
*/
*/
...
@@ -15,19 +15,40 @@ var preempted = false,
...
@@ -15,19 +15,40 @@ var preempted = false,
fallback
=
false
,
fallback
=
false
,
canvas
=
document
.
createElement
(
'
canvas
'
);
canvas
=
document
.
createElement
(
'
canvas
'
);
if
(
!
canvas
.
getContext
)
{
fallback
=
true
;
}
else
{
if
(
canvas
.
toDataURL
(
"
image/png
"
)
.
indexOf
(
"
data:image/png
"
)
<
0
)
{
//Android doesn't support data URI
fallback
=
true
;
}
else
{
var
ctx
=
canvas
.
getContext
(
"
2d
"
);
}
}
var
dpr
=
1
,
bsr
=
1
;
if
(
!
fallback
){
dpr
=
window
.
devicePixelRatio
||
1
,
bsr
=
ctx
.
webkitBackingStorePixelRatio
||
ctx
.
mozBackingStorePixelRatio
||
ctx
.
msBackingStorePixelRatio
||
ctx
.
oBackingStorePixelRatio
||
ctx
.
backingStorePixelRatio
||
1
;
}
var
ratio
=
dpr
/
bsr
;
//getElementsByClassName polyfill
//getElementsByClassName polyfill
document
.
getElementsByClassName
||
(
document
.
getElementsByClassName
=
function
(
e
){
var
t
=
document
,
n
,
r
,
i
,
s
=
[];
if
(
t
.
querySelectorAll
)
return
t
.
querySelectorAll
(
"
.
"
+
e
);
if
(
t
.
evaluate
){
r
=
"
.//*[contains(concat(' ', @class, ' '), '
"
+
e
+
"
')]
"
,
n
=
t
.
evaluate
(
r
,
t
,
null
,
0
,
null
);
while
(
i
=
n
.
iterateNext
())
s
.
push
(
i
)}
else
{
n
=
t
.
getElementsByTagName
(
"
*
"
),
r
=
new
RegExp
(
"
(^|
\\
s)
"
+
e
+
"
(
\\
s|$)
"
);
for
(
i
=
0
;
i
<
n
.
length
;
i
++
)
r
.
test
(
n
[
i
].
className
)
&&
s
.
push
(
n
[
i
])}
return
s
})
document
.
getElementsByClassName
||
(
document
.
getElementsByClassName
=
function
(
e
){
var
t
=
document
,
n
,
r
,
i
,
s
=
[];
if
(
t
.
querySelectorAll
)
return
t
.
querySelectorAll
(
"
.
"
+
e
);
if
(
t
.
evaluate
){
r
=
"
.//*[contains(concat(' ', @class, ' '), '
"
+
e
+
"
')]
"
,
n
=
t
.
evaluate
(
r
,
t
,
null
,
0
,
null
);
while
(
i
=
n
.
iterateNext
())
s
.
push
(
i
)}
else
{
n
=
t
.
getElementsByTagName
(
"
*
"
),
r
=
new
RegExp
(
"
(^|
\\
s)
"
+
e
+
"
(
\\
s|$)
"
);
for
(
i
=
0
;
i
<
n
.
length
;
i
++
)
r
.
test
(
n
[
i
].
className
)
&&
s
.
push
(
n
[
i
])}
return
s
})
//getComputedStyle polyfill
//getComputedStyle polyfill
window
.
getComputedStyle
||
(
window
.
getComputedStyle
=
function
(
e
,
t
){
return
this
.
el
=
e
,
this
.
getPropertyValue
=
function
(
t
){
var
n
=
/
(\-([
a-z
]){1})
/g
;
return
t
==
"
float
"
&&
(
t
=
"
styleFloat
"
),
n
.
test
(
t
)
&&
(
t
=
t
.
replace
(
n
,
function
(){
return
arguments
[
2
].
toUpperCase
()})),
e
.
currentStyle
[
t
]?
e
.
currentStyle
[
t
]:
null
},
this
})
window
.
getComputedStyle
||
(
window
.
getComputedStyle
=
function
(
e
){
return
this
.
el
=
e
,
this
.
getPropertyValue
=
function
(
t
){
var
n
=
/
(\-([
a-z
]){1})
/g
;
return
t
==
"
float
"
&&
(
t
=
"
styleFloat
"
),
n
.
test
(
t
)
&&
(
t
=
t
.
replace
(
n
,
function
(){
return
arguments
[
2
].
toUpperCase
()})),
e
.
currentStyle
[
t
]?
e
.
currentStyle
[
t
]:
null
},
this
})
//http://javascript.nwbox.com/ContentLoaded by Diego Perini with modifications
//http://javascript.nwbox.com/ContentLoaded by Diego Perini with modifications
function
contentLoaded
(
n
,
t
){
var
l
=
"
complete
"
,
s
=
"
readystatechange
"
,
u
=!
1
,
h
=
u
,
c
=!
0
,
i
=
n
.
document
,
a
=
i
.
documentElement
,
e
=
i
.
addEventListener
?
"
addEventListener
"
:
"
attachEvent
"
,
v
=
i
.
addEventListener
?
"
removeEventListener
"
:
"
detachEvent
"
,
f
=
i
.
addEventListener
?
""
:
"
on
"
,
r
=
function
(
e
){(
e
.
type
!=
s
||
i
.
readyState
==
l
)
&&
((
e
.
type
==
"
load
"
?
n
:
i
)[
v
](
f
+
e
.
type
,
r
,
u
),
!
h
&&
(
h
=!
0
)
&&
t
.
call
(
n
,
null
))},
o
=
function
(){
try
{
a
.
doScroll
(
"
left
"
)}
catch
(
n
){
setTimeout
(
o
,
50
);
return
}
r
(
"
poll
"
)};
if
(
i
.
readyState
==
l
)
t
.
call
(
n
,
"
lazy
"
);
else
{
if
(
i
.
createEventObject
&&
a
.
doScroll
){
try
{
c
=!
n
.
frameElement
}
catch
(
y
){}
c
&&
o
()}
i
[
e
](
f
+
"
DOMContentLoaded
"
,
r
,
u
),
i
[
e
](
f
+
s
,
r
,
u
),
n
[
e
](
f
+
"
load
"
,
r
,
u
)}}
;
function
contentLoaded
(
n
,
t
){
var
l
=
"
complete
"
,
s
=
"
readystatechange
"
,
u
=!
1
,
h
=
u
,
c
=!
0
,
i
=
n
.
document
,
a
=
i
.
documentElement
,
e
=
i
.
addEventListener
?
"
addEventListener
"
:
"
attachEvent
"
,
v
=
i
.
addEventListener
?
"
removeEventListener
"
:
"
detachEvent
"
,
f
=
i
.
addEventListener
?
""
:
"
on
"
,
r
=
function
(
e
){(
e
.
type
!=
s
||
i
.
readyState
==
l
)
&&
((
e
.
type
==
"
load
"
?
n
:
i
)[
v
](
f
+
e
.
type
,
r
,
u
),
!
h
&&
(
h
=!
0
)
&&
t
.
call
(
n
,
null
))},
o
=
function
(){
try
{
a
.
doScroll
(
"
left
"
)}
catch
(
n
){
setTimeout
(
o
,
50
);
return
}
r
(
"
poll
"
)};
if
(
i
.
readyState
==
l
)
t
.
call
(
n
,
"
lazy
"
);
else
{
if
(
i
.
createEventObject
&&
a
.
doScroll
){
try
{
c
=!
n
.
frameElement
}
catch
(
y
){}
c
&&
o
()}
i
[
e
](
f
+
"
DOMContentLoaded
"
,
r
,
u
),
i
[
e
](
f
+
s
,
r
,
u
),
n
[
e
](
f
+
"
load
"
,
r
,
u
)}}
//https://gist.github.com/991057 by Jed Schmidt with modifications
//https://gist.github.com/991057 by Jed Schmidt with modifications
function
selector
(
a
){
function
selector
(
a
){
a
=
a
.
match
(
/^
(\W)?(
.*
)
/
);
var
b
=
document
[
"
getElement
"
+
(
a
[
1
]?
a
[
1
]
==
"
#
"
?
"
ById
"
:
"
sByClassName
"
:
"
sByTagName
"
)](
a
[
2
]);
a
=
a
.
match
(
/^
(\W)?(
.*
)
/
);
var
b
=
document
[
"
getElement
"
+
(
a
[
1
]?
a
[
1
]
==
"
#
"
?
"
ById
"
:
"
sByClassName
"
:
"
sByTagName
"
)](
a
[
2
]);
var
ret
=
[];
b
!=
null
&&
(
b
.
length
?
ret
=
b
:
b
.
length
==
0
?
ret
=
b
:
ret
=
[
b
]);
return
ret
;
var
ret
=
[];
b
!=
=
null
&&
(
b
.
length
?
ret
=
b
:
b
.
length
==
=
0
?
ret
=
b
:
ret
=
[
b
]);
return
ret
;
}
}
//shallow object property extend
//shallow object property extend
...
@@ -35,14 +56,16 @@ function extend(a,b){var c={};for(var d in a)c[d]=a[d];for(var e in b)c[e]=b[e];
...
@@ -35,14 +56,16 @@ function extend(a,b){var c={};for(var d in a)c[d]=a[d];for(var e in b)c[e]=b[e];
//hasOwnProperty polyfill
//hasOwnProperty polyfill
if
(
!
Object
.
prototype
.
hasOwnProperty
)
if
(
!
Object
.
prototype
.
hasOwnProperty
)
Object
.
prototype
.
hasOwnProperty
=
function
(
prop
)
{
/*jshint -W001, -W103 */
Object
.
prototype
.
hasOwnProperty
=
function
(
prop
)
{
var
proto
=
this
.
__proto__
||
this
.
constructor
.
prototype
;
var
proto
=
this
.
__proto__
||
this
.
constructor
.
prototype
;
return
(
prop
in
this
)
&&
(
!
(
prop
in
proto
)
||
proto
[
prop
]
!==
this
[
prop
]);
return
(
prop
in
this
)
&&
(
!
(
prop
in
proto
)
||
proto
[
prop
]
!==
this
[
prop
]);
}
}
/*jshint +W001, +W103 */
function
text_size
(
width
,
height
,
template
)
{
function
text_size
(
width
,
height
,
template
)
{
height
=
parseInt
(
height
,
10
);
height
=
parseInt
(
height
,
10
);
width
=
parseInt
(
width
,
10
);
width
=
parseInt
(
width
,
10
);
var
bigSide
=
Math
.
max
(
height
,
width
)
var
bigSide
=
Math
.
max
(
height
,
width
)
var
smallSide
=
Math
.
min
(
height
,
width
)
var
smallSide
=
Math
.
min
(
height
,
width
)
var
scale
=
1
/
12
;
var
scale
=
1
/
12
;
...
@@ -52,7 +75,7 @@ function text_size(width, height, template) {
...
@@ -52,7 +75,7 @@ function text_size(width, height, template) {
}
}
}
}
function
draw
(
ctx
,
dimensions
,
template
,
ratio
)
{
function
draw
(
ctx
,
dimensions
,
template
,
ratio
,
literal
)
{
var
ts
=
text_size
(
dimensions
.
width
,
dimensions
.
height
,
template
);
var
ts
=
text_size
(
dimensions
.
width
,
dimensions
.
height
,
template
);
var
text_height
=
ts
.
height
;
var
text_height
=
ts
.
height
;
var
width
=
dimensions
.
width
*
ratio
,
var
width
=
dimensions
.
width
*
ratio
,
...
@@ -67,9 +90,12 @@ function draw(ctx, dimensions, template, ratio) {
...
@@ -67,9 +90,12 @@ function draw(ctx, dimensions, template, ratio) {
ctx
.
fillStyle
=
template
.
foreground
;
ctx
.
fillStyle
=
template
.
foreground
;
ctx
.
font
=
"
bold
"
+
text_height
+
"
px
"
+
font
;
ctx
.
font
=
"
bold
"
+
text_height
+
"
px
"
+
font
;
var
text
=
template
.
text
?
template
.
text
:
(
Math
.
floor
(
dimensions
.
width
)
+
"
x
"
+
Math
.
floor
(
dimensions
.
height
));
var
text
=
template
.
text
?
template
.
text
:
(
Math
.
floor
(
dimensions
.
width
)
+
"
x
"
+
Math
.
floor
(
dimensions
.
height
));
if
(
literal
)
{
text
=
template
.
literalText
;
}
var
text_width
=
ctx
.
measureText
(
text
).
width
;
var
text_width
=
ctx
.
measureText
(
text
).
width
;
if
(
text_width
/
width
>=
0.75
)
{
if
(
text_width
/
width
>=
0.75
)
{
text_height
=
Math
.
floor
(
text_height
*
0.75
*
(
width
/
text_width
));
text_height
=
Math
.
floor
(
text_height
*
0.75
*
(
width
/
text_width
));
}
}
//Resetting font size if necessary
//Resetting font size if necessary
ctx
.
font
=
"
bold
"
+
(
text_height
*
ratio
)
+
"
px
"
+
font
;
ctx
.
font
=
"
bold
"
+
(
text_height
*
ratio
)
+
"
px
"
+
font
;
...
@@ -88,8 +114,12 @@ function render(mode, el, holder, src) {
...
@@ -88,8 +114,12 @@ function render(mode, el, holder, src) {
theme
=
(
holder
.
font
?
extend
(
theme
,
{
theme
=
(
holder
.
font
?
extend
(
theme
,
{
font
:
holder
.
font
font
:
holder
.
font
})
:
theme
);
})
:
theme
);
el
.
setAttribute
(
"
data-src
"
,
src
);
theme
.
literalText
=
dimensions_caption
;
holder
.
originalTheme
=
holder
.
theme
;
holder
.
theme
=
theme
;
if
(
mode
==
"
image
"
)
{
if
(
mode
==
"
image
"
)
{
el
.
setAttribute
(
"
data-src
"
,
src
);
el
.
setAttribute
(
"
alt
"
,
text
?
text
:
theme
.
text
?
theme
.
text
+
"
[
"
+
dimensions_caption
+
"
]
"
:
dimensions_caption
);
el
.
setAttribute
(
"
alt
"
,
text
?
text
:
theme
.
text
?
theme
.
text
+
"
[
"
+
dimensions_caption
+
"
]
"
:
dimensions_caption
);
if
(
fallback
||
!
holder
.
auto
)
{
if
(
fallback
||
!
holder
.
auto
)
{
el
.
style
.
width
=
dimensions
.
width
+
"
px
"
;
el
.
style
.
width
=
dimensions
.
width
+
"
px
"
;
...
@@ -106,19 +136,18 @@ function render(mode, el, holder, src) {
...
@@ -106,19 +136,18 @@ function render(mode, el, holder, src) {
el
.
style
.
backgroundSize
=
dimensions
.
width
+
"
px
"
+
dimensions
.
height
+
"
px
"
;
el
.
style
.
backgroundSize
=
dimensions
.
width
+
"
px
"
+
dimensions
.
height
+
"
px
"
;
}
}
}
else
if
(
mode
==
"
fluid
"
)
{
}
else
if
(
mode
==
"
fluid
"
)
{
el
.
setAttribute
(
"
data-src
"
,
src
);
el
.
setAttribute
(
"
alt
"
,
text
?
text
:
theme
.
text
?
theme
.
text
+
"
[
"
+
dimensions_caption
+
"
]
"
:
dimensions_caption
);
el
.
setAttribute
(
"
alt
"
,
text
?
text
:
theme
.
text
?
theme
.
text
+
"
[
"
+
dimensions_caption
+
"
]
"
:
dimensions_caption
);
if
(
dimensions
.
height
.
s
ubstr
(
-
1
)
==
"
%
"
)
{
if
(
dimensions
.
height
.
s
lice
(
-
1
)
==
"
%
"
)
{
el
.
style
.
height
=
dimensions
.
height
el
.
style
.
height
=
dimensions
.
height
}
else
{
}
else
{
el
.
style
.
height
=
dimensions
.
height
+
"
px
"
el
.
style
.
height
=
dimensions
.
height
+
"
px
"
}
}
if
(
dimensions
.
width
.
s
ubstr
(
-
1
)
==
"
%
"
)
{
if
(
dimensions
.
width
.
s
lice
(
-
1
)
==
"
%
"
)
{
el
.
style
.
width
=
dimensions
.
width
el
.
style
.
width
=
dimensions
.
width
}
else
{
}
else
{
el
.
style
.
width
=
dimensions
.
width
+
"
px
"
el
.
style
.
width
=
dimensions
.
width
+
"
px
"
}
}
if
(
el
.
style
.
display
==
"
inline
"
||
el
.
style
.
display
==
""
)
{
if
(
el
.
style
.
display
==
"
inline
"
||
el
.
style
.
display
==
=
""
)
{
el
.
style
.
display
=
"
block
"
;
el
.
style
.
display
=
"
block
"
;
}
}
if
(
fallback
)
{
if
(
fallback
)
{
...
@@ -129,7 +158,7 @@ function render(mode, el, holder, src) {
...
@@ -129,7 +158,7 @@ function render(mode, el, holder, src) {
fluid_update
(
el
);
fluid_update
(
el
);
}
}
}
}
}
;
}
function
fluid_update
(
element
)
{
function
fluid_update
(
element
)
{
var
images
;
var
images
;
...
@@ -138,24 +167,23 @@ function fluid_update(element) {
...
@@ -138,24 +167,23 @@ function fluid_update(element) {
}
else
{
}
else
{
images
=
[
element
]
images
=
[
element
]
}
}
for
(
i
in
images
)
{
for
(
var
i
in
images
)
{
var
el
=
images
[
i
]
var
el
=
images
[
i
]
if
(
el
.
holderData
)
{
if
(
el
.
holderData
)
{
var
holder
=
el
.
holderData
;
var
holder
=
el
.
holderData
;
el
.
setAttribute
(
"
src
"
,
draw
(
ctx
,
{
el
.
setAttribute
(
"
src
"
,
draw
(
ctx
,
{
height
:
el
.
clientHeight
,
height
:
el
.
clientHeight
,
width
:
el
.
clientWidth
width
:
el
.
clientWidth
},
holder
.
theme
,
ratio
));
},
holder
.
theme
,
ratio
,
!!
holder
.
literal
));
}
}
}
}
}
}
function
parse_flags
(
flags
,
options
)
{
function
parse_flags
(
flags
,
options
)
{
var
ret
=
{
var
ret
=
{
theme
:
settings
.
themes
.
gray
theme
:
settings
.
themes
.
gray
}
,
render
=
false
;
};
var
render
=
false
;
for
(
sl
=
flags
.
length
,
j
=
0
;
j
<
sl
;
j
++
)
{
for
(
sl
=
flags
.
length
,
j
=
0
;
j
<
sl
;
j
++
)
{
var
flag
=
flags
[
j
];
var
flag
=
flags
[
j
];
if
(
app
.
flags
.
dimensions
.
match
(
flag
))
{
if
(
app
.
flags
.
dimensions
.
match
(
flag
))
{
...
@@ -165,49 +193,24 @@ function parse_flags(flags, options) {
...
@@ -165,49 +193,24 @@ function parse_flags(flags, options) {
render
=
true
;
render
=
true
;
ret
.
dimensions
=
app
.
flags
.
fluid
.
output
(
flag
);
ret
.
dimensions
=
app
.
flags
.
fluid
.
output
(
flag
);
ret
.
fluid
=
true
;
ret
.
fluid
=
true
;
}
else
if
(
app
.
flags
.
literal
.
match
(
flag
))
{
ret
.
literal
=
true
;
}
else
if
(
app
.
flags
.
colors
.
match
(
flag
))
{
}
else
if
(
app
.
flags
.
colors
.
match
(
flag
))
{
ret
.
theme
=
app
.
flags
.
colors
.
output
(
flag
);
ret
.
theme
=
app
.
flags
.
colors
.
output
(
flag
);
}
else
if
(
options
.
themes
[
flag
])
{
}
else
if
(
options
.
themes
[
flag
])
{
//If a theme is specified, it will override custom colors
//If a theme is specified, it will override custom colors
ret
.
theme
=
options
.
themes
[
flag
];
ret
.
theme
=
options
.
themes
[
flag
];
}
else
if
(
app
.
flags
.
text
.
match
(
flag
))
{
ret
.
text
=
app
.
flags
.
text
.
output
(
flag
);
}
else
if
(
app
.
flags
.
font
.
match
(
flag
))
{
}
else
if
(
app
.
flags
.
font
.
match
(
flag
))
{
ret
.
font
=
app
.
flags
.
font
.
output
(
flag
);
ret
.
font
=
app
.
flags
.
font
.
output
(
flag
);
}
else
if
(
app
.
flags
.
auto
.
match
(
flag
))
{
}
else
if
(
app
.
flags
.
auto
.
match
(
flag
))
{
ret
.
auto
=
true
;
ret
.
auto
=
true
;
}
else
if
(
app
.
flags
.
text
.
match
(
flag
))
{
ret
.
text
=
app
.
flags
.
text
.
output
(
flag
);
}
}
}
}
return
render
?
ret
:
false
;
return
render
?
ret
:
false
;
};
if
(
!
canvas
.
getContext
)
{
fallback
=
true
;
}
else
{
if
(
canvas
.
toDataURL
(
"
image/png
"
)
.
indexOf
(
"
data:image/png
"
)
<
0
)
{
//Android doesn't support data URI
fallback
=
true
;
}
else
{
var
ctx
=
canvas
.
getContext
(
"
2d
"
);
}
}
}
var
dpr
=
1
,
bsr
=
1
;
if
(
!
fallback
){
dpr
=
window
.
devicePixelRatio
||
1
,
bsr
=
ctx
.
webkitBackingStorePixelRatio
||
ctx
.
mozBackingStorePixelRatio
||
ctx
.
msBackingStorePixelRatio
||
ctx
.
oBackingStorePixelRatio
||
ctx
.
backingStorePixelRatio
||
1
;
}
var
ratio
=
dpr
/
bsr
;
var
fluid_images
=
[];
var
fluid_images
=
[];
var
settings
=
{
var
settings
=
{
domain
:
"
holder.js
"
,
domain
:
"
holder.js
"
,
images
:
"
img
"
,
images
:
"
img
"
,
...
@@ -229,10 +232,8 @@ var settings = {
...
@@ -229,10 +232,8 @@ var settings = {
size
:
12
size
:
12
}
}
},
},
stylesheet
:
"
.holderjs-fluid {font-size:16px;font-weight:bold;text-align:center;font-family:sans-serif;margin:0}
"
stylesheet
:
""
};
};
app
.
flags
=
{
app
.
flags
=
{
dimensions
:
{
dimensions
:
{
regex
:
/^
(\d
+
)
x
(\d
+
)
$/
,
regex
:
/^
(\d
+
)
x
(\d
+
)
$/
,
...
@@ -279,21 +280,21 @@ app.flags = {
...
@@ -279,21 +280,21 @@ app.flags = {
},
},
auto
:
{
auto
:
{
regex
:
/^auto$/
regex
:
/^auto$/
},
literal
:
{
regex
:
/^literal$/
}
}
}
}
for
(
var
flag
in
app
.
flags
)
{
for
(
var
flag
in
app
.
flags
)
{
if
(
!
app
.
flags
.
hasOwnProperty
(
flag
))
continue
;
if
(
!
app
.
flags
.
hasOwnProperty
(
flag
))
continue
;
app
.
flags
[
flag
].
match
=
function
(
val
)
{
app
.
flags
[
flag
].
match
=
function
(
val
)
{
return
val
.
match
(
this
.
regex
)
return
val
.
match
(
this
.
regex
)
}
}
}
}
app
.
add_theme
=
function
(
name
,
theme
)
{
app
.
add_theme
=
function
(
name
,
theme
)
{
name
!=
null
&&
theme
!=
null
&&
(
settings
.
themes
[
name
]
=
theme
);
name
!=
null
&&
theme
!=
null
&&
(
settings
.
themes
[
name
]
=
theme
);
return
app
;
return
app
;
};
};
app
.
add_image
=
function
(
src
,
el
)
{
app
.
add_image
=
function
(
src
,
el
)
{
var
node
=
selector
(
el
);
var
node
=
selector
(
el
);
if
(
node
.
length
)
{
if
(
node
.
length
)
{
...
@@ -305,32 +306,27 @@ app.add_image = function (src, el) {
...
@@ -305,32 +306,27 @@ app.add_image = function (src, el) {
}
}
return
app
;
return
app
;
};
};
app
.
run
=
function
(
o
)
{
app
.
run
=
function
(
o
)
{
var
options
=
extend
(
settings
,
o
),
var
options
=
extend
(
settings
,
o
),
images
=
[],
imageNodes
=
[],
bgnodes
=
[];
images
=
[],
imageNodes
=
[],
if
(
typeof
(
options
.
images
)
==
"
string
"
){
bgnodes
=
[];
imageNodes
=
selector
(
options
.
images
)
;
if
(
typeof
(
options
.
images
)
==
"
string
"
)
{
}
imageNodes
=
selector
(
options
.
images
);
else
if
(
window
.
NodeList
&&
options
.
images
instanceof
window
.
NodeList
)
{
}
else
if
(
window
.
NodeList
&&
options
.
images
instanceof
window
.
NodeList
)
{
imageNodes
=
options
.
images
;
imageNodes
=
options
.
images
;
}
else
if
(
window
.
Node
&&
options
.
images
instanceof
window
.
Node
)
{
}
else
if
(
window
.
Node
&&
options
.
images
instanceof
window
.
Node
)
{
imageNodes
=
[
options
.
images
];
imageNodes
=
[
options
.
images
];
}
}
if
(
typeof
(
options
.
bgnodes
)
==
"
string
"
)
{
if
(
typeof
(
options
.
bgnodes
)
==
"
string
"
){
bgnodes
=
selector
(
options
.
bgnodes
);
bgnodes
=
selector
(
options
.
bgnodes
);
}
else
if
(
window
.
NodeList
&&
options
.
elements
instanceof
window
.
NodeList
)
{
}
else
if
(
window
.
NodeList
&&
options
.
elements
instanceof
window
.
NodeList
)
{
bgnodes
=
options
.
bgnodes
;
bgnodes
=
options
.
bgnodes
;
}
else
if
(
window
.
Node
&&
options
.
bgnodes
instanceof
window
.
Node
)
{
}
else
if
(
window
.
Node
&&
options
.
bgnodes
instanceof
window
.
Node
)
{
bgnodes
=
[
options
.
bgnodes
];
bgnodes
=
[
options
.
bgnodes
];
}
}
preempted
=
true
;
preempted
=
true
;
for
(
i
=
0
,
l
=
imageNodes
.
length
;
i
<
l
;
i
++
)
images
.
push
(
imageNodes
[
i
]);
for
(
i
=
0
,
l
=
imageNodes
.
length
;
i
<
l
;
i
++
)
images
.
push
(
imageNodes
[
i
]);
var
holdercss
=
document
.
getElementById
(
"
holderjs-style
"
);
var
holdercss
=
document
.
getElementById
(
"
holderjs-style
"
);
if
(
!
holdercss
)
{
if
(
!
holdercss
)
{
holdercss
=
document
.
createElement
(
"
style
"
);
holdercss
=
document
.
createElement
(
"
style
"
);
...
@@ -338,53 +334,44 @@ app.run = function (o) {
...
@@ -338,53 +334,44 @@ app.run = function (o) {
holdercss
.
type
=
"
text/css
"
;
holdercss
.
type
=
"
text/css
"
;
document
.
getElementsByTagName
(
"
head
"
)[
0
].
appendChild
(
holdercss
);
document
.
getElementsByTagName
(
"
head
"
)[
0
].
appendChild
(
holdercss
);
}
}
if
(
!
options
.
nocss
)
{
if
(
!
options
.
nocss
)
{
if
(
holdercss
.
styleSheet
)
{
if
(
holdercss
.
styleSheet
)
{
holdercss
.
styleSheet
.
cssText
+=
options
.
stylesheet
;
holdercss
.
styleSheet
.
cssText
+=
options
.
stylesheet
;
}
else
{
}
else
{
holdercss
.
appendChild
(
document
.
createTextNode
(
options
.
stylesheet
));
holdercss
.
appendChild
(
document
.
createTextNode
(
options
.
stylesheet
));
}
}
}
}
var
cssregex
=
new
RegExp
(
options
.
domain
+
"
\
/(.*?)
\"
?
\\
)
"
);
var
cssregex
=
new
RegExp
(
options
.
domain
+
"
\
/(.*?)
\"
?
\\
)
"
);
for
(
var
l
=
bgnodes
.
length
,
i
=
0
;
i
<
l
;
i
++
)
{
for
(
var
l
=
bgnodes
.
length
,
i
=
0
;
i
<
l
;
i
++
)
{
var
src
=
window
.
getComputedStyle
(
bgnodes
[
i
],
null
)
var
src
=
window
.
getComputedStyle
(
bgnodes
[
i
],
null
)
.
getPropertyValue
(
"
background-image
"
);
.
getPropertyValue
(
"
background-image
"
);
var
flags
=
src
.
match
(
cssregex
);
var
flags
=
src
.
match
(
cssregex
);
var
bgsrc
=
bgnodes
[
i
].
getAttribute
(
"
data-background-src
"
);
var
bgsrc
=
bgnodes
[
i
].
getAttribute
(
"
data-background-src
"
);
if
(
flags
)
{
if
(
flags
)
{
var
holder
=
parse_flags
(
flags
[
1
].
split
(
"
/
"
),
options
);
var
holder
=
parse_flags
(
flags
[
1
].
split
(
"
/
"
),
options
);
if
(
holder
)
{
if
(
holder
)
{
render
(
"
background
"
,
bgnodes
[
i
],
holder
,
src
);
render
(
"
background
"
,
bgnodes
[
i
],
holder
,
src
);
}
}
}
}
else
if
(
bgsrc
!=
null
)
{
else
if
(
bgsrc
!=
null
){
var
holder
=
parse_flags
(
bgsrc
.
substr
(
bgsrc
.
lastIndexOf
(
options
.
domain
)
+
options
.
domain
.
length
+
1
)
var
holder
=
parse_flags
(
bgsrc
.
substr
(
bgsrc
.
lastIndexOf
(
options
.
domain
)
+
options
.
domain
.
length
+
1
)
.
split
(
"
/
"
),
options
);
.
split
(
"
/
"
),
options
);
if
(
holder
){
if
(
holder
)
{
render
(
"
background
"
,
bgnodes
[
i
],
holder
,
src
);
render
(
"
background
"
,
bgnodes
[
i
],
holder
,
src
);
}
}
}
}
}
}
for
(
l
=
images
.
length
,
i
=
0
;
i
<
l
;
i
++
)
{
for
(
l
=
images
.
length
,
i
=
0
;
i
<
l
;
i
++
)
{
var
attr_data_src
,
attr_src
;
var
attr_src
=
attr_data_src
=
src
=
null
;
attr_src
=
attr_data_src
=
src
=
null
;
try
{
try
{
attr_src
=
images
[
i
].
getAttribute
(
"
src
"
);
attr_src
=
images
[
i
].
getAttribute
(
"
src
"
);
attr_datasrc
=
images
[
i
].
getAttribute
(
"
data-src
"
);
attr_datasrc
=
images
[
i
].
getAttribute
(
"
data-src
"
);
}
catch
(
e
)
{}
}
catch
(
e
){}
if
(
attr_datasrc
==
null
&&
!!
attr_src
&&
attr_src
.
indexOf
(
options
.
domain
)
>=
0
)
{
if
(
attr_datasrc
==
null
&&
!!
attr_src
&&
attr_src
.
indexOf
(
options
.
domain
)
>=
0
)
{
src
=
attr_src
;
src
=
attr_src
;
}
else
if
(
!!
attr_datasrc
&&
attr_datasrc
.
indexOf
(
options
.
domain
)
>=
0
)
{
}
else
if
(
!!
attr_datasrc
&&
attr_datasrc
.
indexOf
(
options
.
domain
)
>=
0
)
{
src
=
attr_datasrc
;
src
=
attr_datasrc
;
}
}
if
(
src
)
{
if
(
src
)
{
var
holder
=
parse_flags
(
src
.
substr
(
src
.
lastIndexOf
(
options
.
domain
)
+
options
.
domain
.
length
+
1
)
var
holder
=
parse_flags
(
src
.
substr
(
src
.
lastIndexOf
(
options
.
domain
)
+
options
.
domain
.
length
+
1
)
.
split
(
"
/
"
),
options
);
.
split
(
"
/
"
),
options
);
...
@@ -399,7 +386,6 @@ app.run = function (o) {
...
@@ -399,7 +386,6 @@ app.run = function (o) {
}
}
return
app
;
return
app
;
};
};
contentLoaded
(
win
,
function
()
{
contentLoaded
(
win
,
function
()
{
if
(
window
.
addEventListener
)
{
if
(
window
.
addEventListener
)
{
window
.
addEventListener
(
"
resize
"
,
fluid_update
,
false
);
window
.
addEventListener
(
"
resize
"
,
fluid_update
,
false
);
...
@@ -409,9 +395,8 @@ contentLoaded(win, function () {
...
@@ -409,9 +395,8 @@ contentLoaded(win, function () {
}
}
preempted
||
app
.
run
();
preempted
||
app
.
run
();
});
});
if
(
typeof
define
===
"
function
"
&&
define
.
amd
)
{
if
(
typeof
define
===
"
function
"
&&
define
.
amd
)
{
define
(
"
Holder
"
,
[],
function
()
{
define
([],
function
()
{
return
app
;
return
app
;
});
});
}
}
...
...
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