webshims-rails 1.15.4 → 1.15.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +1 -1
- data/lib/webshims-rails/version.rb +2 -2
- data/readme.textile +2 -2
- data/vendor/assets/javascripts/webshims/polyfiller.js +2 -2
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +222 -122
- data/vendor/assets/javascripts/webshims/shims/form-validation.js +5 -2
- data/vendor/assets/javascripts/webshims/shims/form-validators.js +12 -8
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-no.js +130 -0
- data/vendor/assets/javascripts/webshims/shims/picture.js +222 -122
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38f62cf267399136bf9d595a21dd08ecab5ce05e
|
4
|
+
data.tar.gz: 06c7d3129c32b4f13e09e51efe9b3d0fe6bf43e6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da45e530703f377bb8494449907a6af502a7b8982fc7336da8b7e21d5fc04eab93d9c786fc1ffe74316afabde8b919e010040b448956d05fde1392d0b43511c7
|
7
|
+
data.tar.gz: 11fba75988dcd55dd5e250ffba765e3db6b3f819c5decb3dc169e66bc614dfd468648c248e9062599503eeabd5d741cdaeeac789521a65ed0b9dc725db897498
|
data/Rakefile
CHANGED
@@ -39,7 +39,7 @@ EOT
|
|
39
39
|
end
|
40
40
|
|
41
41
|
|
42
|
-
puts "Ok, check your work. If you are the gem owner, run rake
|
42
|
+
puts "Ok, check your work. If you are the gem owner, run rake push VERSION=#{version} to generate and push the gem."
|
43
43
|
input = STDIN.gets.strip
|
44
44
|
end
|
45
45
|
|
data/readme.textile
CHANGED
@@ -43,10 +43,10 @@ Users of previous webshims-rails versions should update their sprockets requires
|
|
43
43
|
|
44
44
|
h2. Updating
|
45
45
|
|
46
|
-
There's a quick-and-dirty rake task in the repository to checkout webshims from github, checkout a git ref, and copy the required scripts over.
|
46
|
+
There's a quick-and-dirty rake task in the repository to checkout webshims from github, checkout a git ref, and copy the required scripts over. You need to specify the Webshims-rails version and the git reference (version/tag/sha) from the webshims repository.
|
47
47
|
|
48
48
|
<pre>
|
49
|
-
rake update VERSION=1.14.5
|
49
|
+
rake update VERSION=1.14.5 REF=1.14.5
|
50
50
|
</pre>
|
51
51
|
|
52
52
|
h2. License
|
@@ -137,7 +137,7 @@
|
|
137
137
|
}
|
138
138
|
|
139
139
|
$.extend(webshims, {
|
140
|
-
version: '1.15.
|
140
|
+
version: '1.15.5',
|
141
141
|
|
142
142
|
cfg: {
|
143
143
|
enhanceAuto: window.Audio && (!window.matchMedia || matchMedia('(min-device-width: 721px)').matches),
|
@@ -1097,7 +1097,7 @@
|
|
1097
1097
|
|
1098
1098
|
webshims.validationMessages = webshims.validityMessages = {
|
1099
1099
|
langSrc: 'i18n/formcfg-',
|
1100
|
-
availableLangs: "ar ca cs el es fa fr he hi hu it ja lt nl pl pt pt-BR pt-PT ru sv zh-CN zh-TW".split(' ')
|
1100
|
+
availableLangs: "ar ca cs el es fa fr he hi hu it ja lt nl no pl pt pt-BR pt-PT ru sv zh-CN zh-TW".split(' ')
|
1101
1101
|
};
|
1102
1102
|
webshims.formcfg = $.extend({}, webshims.validationMessages);
|
1103
1103
|
|
@@ -1,13 +1,20 @@
|
|
1
|
-
/*! respimage -
|
1
|
+
/*! respimage - v1.1.6 - 2014-11-20
|
2
2
|
Licensed MIT */
|
3
3
|
!function(window, document, undefined) {
|
4
4
|
"use strict";
|
5
5
|
function trim(str) {
|
6
6
|
return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, "");
|
7
7
|
}
|
8
|
-
function
|
9
|
-
|
10
|
-
|
8
|
+
function updateMetrics() {
|
9
|
+
var dprM;
|
10
|
+
(isVwDirty || DPR != window.devicePixelRatio) && (isVwDirty = !1, DPR = window.devicePixelRatio,
|
11
|
+
cssCache = {}, sizeLengthCache = {}, dprM = (DPR || 1) * cfg.xQuant, cfg.uT || (dprM = Math.min(dprM, 3),
|
12
|
+
dprM > 1.4 && (dprM = Math.round(dprM / (1 + (dprM - 1.4) / 12) * 100) / 100), ri.DPR = dprM),
|
13
|
+
tLow = cfg.tLow * dprM, greed = cfg.greed / 2, greed += greed * dprM, tHigh = cfg.tHigh,
|
14
|
+
tMemory = 2 + dprM, units.width = Math.max(window.innerWidth || 0, docElem.clientWidth),
|
15
|
+
units.height = Math.max(window.innerHeight || 0, docElem.clientHeight), isLandscape = units.width > units.height,
|
16
|
+
units.vw = units.width / 100, units.vh = units.height / 100, units.em = ri.getEmValue(),
|
17
|
+
units.rem = units.em);
|
11
18
|
}
|
12
19
|
function parseDescriptor(descriptor) {
|
13
20
|
if (!(descriptor in memDescriptor)) {
|
@@ -15,19 +22,21 @@
|
|
15
22
|
val: 1,
|
16
23
|
type: "x"
|
17
24
|
}, parsedDescriptor = trim(descriptor || "");
|
18
|
-
parsedDescriptor && (parsedDescriptor
|
19
|
-
descriptorObj.type = RegExp.$2) : descriptorObj = !1),
|
25
|
+
parsedDescriptor && (parsedDescriptor = parsedDescriptor.replace(regHDesc, ""),
|
26
|
+
parsedDescriptor.match(regDescriptor) ? (descriptorObj.val = 1 * RegExp.$1, descriptorObj.type = RegExp.$2) : descriptorObj = !1),
|
27
|
+
memDescriptor[descriptor] = descriptorObj;
|
20
28
|
}
|
21
29
|
return memDescriptor[descriptor];
|
22
30
|
}
|
23
31
|
function chooseLowRes(lowRes, diff, dpr) {
|
24
|
-
|
32
|
+
var add = diff * greed * lowRes;
|
33
|
+
return isLandscape || (add /= 1.5), lowRes += add, diff > tHigh && (lowRes += tLow),
|
25
34
|
lowRes > dpr;
|
26
35
|
}
|
27
36
|
function inView(el) {
|
28
37
|
if (!el.getBoundingClientRect) return !0;
|
29
38
|
var bottom, right, left, top, rect = el.getBoundingClientRect();
|
30
|
-
return !!((bottom = rect.bottom) >= -9 && (top = rect.top) <=
|
39
|
+
return !!((bottom = rect.bottom) >= -9 && (top = rect.top) <= units.height + 9 && (right = rect.right) >= -9 && (left = rect.left) <= units.height + 9 && (bottom || right || left || top));
|
31
40
|
}
|
32
41
|
function applyBestCandidate(img) {
|
33
42
|
var srcSetCandidates, matchingSet = ri.getSet(img), evaluated = !1;
|
@@ -41,7 +50,7 @@
|
|
41
50
|
var candidate;
|
42
51
|
return !set && src && (set = img[ri.ns].sets, set = set && set[set.length - 1]),
|
43
52
|
candidate = getCandidateForSrc(src, set), candidate && (src = ri.makeUrl(src), img[ri.ns].curSrc = src,
|
44
|
-
img[ri.ns].curCan = candidate,
|
53
|
+
img[ri.ns].curCan = candidate, candidate.res || setResolution(candidate, candidate.set.sizes)),
|
45
54
|
candidate;
|
46
55
|
}
|
47
56
|
function getCandidateForSrc(src, set) {
|
@@ -83,18 +92,16 @@
|
|
83
92
|
candidate;
|
84
93
|
}
|
85
94
|
document.createElement("picture");
|
86
|
-
var
|
87
|
-
addSize: !1,
|
95
|
+
var ri = {}, noop = function() {}, image = document.createElement("img"), getImgAttr = image.getAttribute, setImgAttr = image.setAttribute, removeImgAttr = image.removeAttribute, docElem = document.documentElement, types = {}, cfg = {
|
88
96
|
xQuant: 1,
|
89
97
|
tLow: .1,
|
90
|
-
tHigh: .
|
91
|
-
tLazy: .
|
92
|
-
greed: .
|
93
|
-
}, srcAttr = "data-risrc", srcsetAttr = srcAttr + "set";
|
94
|
-
ri.ns = ("ri" + new Date().getTime()).substr(0, 9),
|
95
|
-
|
96
|
-
ri.
|
97
|
-
ri.cfg = cfg, ri.supSrcset && (ri.sel += ", img[" + srcsetAttr + "]");
|
98
|
+
tHigh: .6,
|
99
|
+
tLazy: .33,
|
100
|
+
greed: .5
|
101
|
+
}, srcAttr = "data-risrc", srcsetAttr = srcAttr + "set", supportAbort = /rident/.test(navigator.userAgent), curSrcProp = "currentSrc";
|
102
|
+
ri.ns = ("ri" + new Date().getTime()).substr(0, 9), curSrcProp in image || (curSrcProp = "src"),
|
103
|
+
ri.supSrcset = "srcset" in image, ri.supSizes = "sizes" in image, ri.selShort = "picture>img,img[srcset]",
|
104
|
+
ri.sel = ri.selShort, ri.cfg = cfg, ri.supSrcset && (ri.sel += ",img[" + srcsetAttr + "]");
|
98
105
|
var anchor = document.createElement("a");
|
99
106
|
ri.makeUrl = function(src) {
|
100
107
|
return anchor.href = src, anchor.href;
|
@@ -102,11 +109,9 @@
|
|
102
109
|
return context.querySelectorAll(sel);
|
103
110
|
};
|
104
111
|
{
|
105
|
-
var on = (
|
106
|
-
console.warn(message);
|
107
|
-
} : noop, function(obj, evt, fn, capture) {
|
112
|
+
var on = function(obj, evt, fn, capture) {
|
108
113
|
obj.addEventListener ? obj.addEventListener(evt, fn, capture || !1) : obj.attachEvent && obj.attachEvent("on" + evt, fn);
|
109
|
-
}
|
114
|
+
}, off = function(obj, evt, fn, capture) {
|
110
115
|
obj.removeEventListener ? obj.removeEventListener(evt, fn, capture || !1) : obj.detachEvent && obj.detachEvent("on" + evt, fn);
|
111
116
|
};
|
112
117
|
"https:" == location.protocol;
|
@@ -115,41 +120,33 @@
|
|
115
120
|
return ri.matchesMedia = window.matchMedia && (matchMedia("(min-width: 0.1em)") || {}).matches ? function(media) {
|
116
121
|
return !media || matchMedia(media).matches;
|
117
122
|
} : ri.mMQ, ri.matchesMedia.apply(this, arguments);
|
118
|
-
}
|
119
|
-
var
|
120
|
-
|
121
|
-
|
122
|
-
}
|
123
|
-
ri.mMQ = function(media) {
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
123
|
+
};
|
124
|
+
var tLow, greed, tHigh, tMemory, isWinComplete, isLandscape, isVwDirty = !0, cssCache = {}, sizeLengthCache = {}, DPR = window.devicePixelRatio, units = {
|
125
|
+
px: 1,
|
126
|
+
"in": 96
|
127
|
+
};
|
128
|
+
ri.DPR = DPR || 1, ri.u = units, ri.mMQ = function(media) {
|
129
|
+
return media ? evalCSS(media) : !0;
|
130
|
+
};
|
131
|
+
var evalCSS = function() {
|
132
|
+
var cache = {}, regLength = /^([\d\.]+)(em|vw|px)$/, replace = function() {
|
133
|
+
for (var args = arguments, index = 0, string = args[0]; ++index in args; ) string = string.replace(args[index], args[++index]);
|
134
|
+
return string;
|
135
|
+
}, buidlStr = function(css) {
|
136
|
+
return cache[css] || (cache[css] = "return " + replace((css || "").toLowerCase(), /\band\b/g, "&&", /,/g, "||", /min-([a-z-\s]+):/g, "e.$1>=", /max-([a-z-\s]+):/g, "e.$1<=", /calc([^)]+)/g, "($1)", /(\d+[\.]*[\d]*)([a-z]+)/g, "($1 * e.$2)", /^(?!(e.[a-z]|[0-9\.&=|><\+\-\*\(\)\/])).*/gi, "") + ";"),
|
137
|
+
cache[css];
|
138
|
+
};
|
139
|
+
return function(css, length) {
|
140
|
+
var parsedLength;
|
141
|
+
if (!(css in cssCache)) if (cssCache[css] = !1, length && (parsedLength = css.match(regLength))) cssCache[css] = parsedLength[1] * units[parsedLength[2]]; else try {
|
142
|
+
cssCache[css] = new Function("e", buidlStr(css))(units);
|
143
|
+
} catch (e) {}
|
144
|
+
return cssCache[css];
|
145
|
+
};
|
146
|
+
}();
|
135
147
|
ri.calcLength = function(sourceSizeValue) {
|
136
|
-
var
|
137
|
-
|
138
|
-
if (parsedLength = sourceSizeValue.match(regLength)) parsedLength[1] = parseFloat(parsedLength[1], 10),
|
139
|
-
value = parsedLength[1] ? "vw" == parsedLength[2] ? ri.vW * parsedLength[1] / 100 : "em" == parsedLength[2] ? ri.getEmValue() * parsedLength[1] : parsedLength[1] : !1; else if (sourceSizeValue.indexOf("calc") > -1 || parseInt(sourceSizeValue, 10)) {
|
140
|
-
sourceSizeValue = sourceSizeValue.replace("vw", "%"), lengthEl || (lengthEl = document.createElement("div"),
|
141
|
-
lengthEl.style.cssText = baseStyle), lengthElInstered || (lengthElInstered = !0,
|
142
|
-
docElem.insertBefore(lengthEl, docElem.firstChild)), lengthEl.style.width = "0px";
|
143
|
-
try {
|
144
|
-
lengthEl.style.width = sourceSizeValue;
|
145
|
-
} catch (e) {
|
146
|
-
failed = !0;
|
147
|
-
}
|
148
|
-
value = lengthEl.offsetWidth, failed && (value = !1);
|
149
|
-
}
|
150
|
-
0 >= value && (value = !1), lengthCache[orirgValue] = value;
|
151
|
-
}
|
152
|
-
return lengthCache[orirgValue];
|
148
|
+
var value = evalCSS(sourceSizeValue, !0) || !1;
|
149
|
+
return 0 > value && (value = !1), value;
|
153
150
|
}, ri.types = types, types["image/jpeg"] = !0, types["image/gif"] = !0, types["image/png"] = !0,
|
154
151
|
types["image/svg+xml"] = document.implementation.hasFeature("http://wwwindow.w3.org/TR/SVG11/feature#Image", "1.1"),
|
155
152
|
ri.supportsType = function(type) {
|
@@ -179,7 +176,7 @@
|
|
179
176
|
}
|
180
177
|
return set.cands;
|
181
178
|
};
|
182
|
-
var eminpx, memDescriptor = {}, regDescriptor = /^([\+eE\d\.]+)(w|x)$/, fsCss = "font-size:100
|
179
|
+
var eminpx, memDescriptor = {}, regDescriptor = /^([\+eE\d\.]+)(w|x)$/, regHDesc = /\s*\d+h\s*/, baseStyle = "position:absolute;left:0;visibility:hidden;display:block;padding:0;border:none;font-size:1em;width:1em;overflow:hidden;clip:rect(0px, 0px, 0px, 0px)", fsCss = "font-size:100%!important;";
|
183
180
|
ri.getEmValue = function() {
|
184
181
|
var body;
|
185
182
|
if (!eminpx && (body = document.body)) {
|
@@ -189,15 +186,13 @@
|
|
189
186
|
docElem.style.cssText = originalHTMLCSS, body.style.cssText = originalBodyCSS;
|
190
187
|
}
|
191
188
|
return eminpx || 16;
|
192
|
-
}
|
193
|
-
var sizeLengthCache = {};
|
194
|
-
ri.calcListLength = function(sourceSizeListStr) {
|
189
|
+
}, ri.calcListLength = function(sourceSizeListStr) {
|
195
190
|
if (!(sourceSizeListStr in sizeLengthCache) || cfg.uT) {
|
196
191
|
var sourceSize, parsedSize, length, media, i, len, sourceSizeList = trim(sourceSizeListStr).split(/\s*,\s*/), winningLength = !1;
|
197
192
|
for (i = 0, len = sourceSizeList.length; len > i && (sourceSize = sourceSizeList[i],
|
198
193
|
parsedSize = ri.parseSize(sourceSize), length = parsedSize.length, media = parsedSize.media,
|
199
194
|
!length || !ri.matchesMedia(media) || (winningLength = ri.calcLength(length)) === !1); i++) ;
|
200
|
-
sizeLengthCache[sourceSizeListStr] = winningLength ? winningLength :
|
195
|
+
sizeLengthCache[sourceSizeListStr] = winningLength ? winningLength : units.width;
|
201
196
|
}
|
202
197
|
return sizeLengthCache[sourceSizeListStr];
|
203
198
|
}, ri.setRes = function(set) {
|
@@ -208,83 +203,70 @@
|
|
208
203
|
candidate.descriptor || setResolution(candidate, set.sizes);
|
209
204
|
}
|
210
205
|
return candidates;
|
211
|
-
}
|
212
|
-
var dprM, tLow, greed, tLazy, tHigh, tMemory, isWinComplete;
|
213
|
-
ri.applySetCandidate = function(candidates, img) {
|
206
|
+
}, ri.applySetCandidate = function(candidates, img) {
|
214
207
|
if (candidates.length) {
|
215
|
-
var candidate, dpr, i, j, diff, length, bestCandidate, curSrc, curCan, isSameSet, candidateSrc, imageData = img[ri.ns], evaled = !0;
|
208
|
+
var candidate, dpr, i, j, diff, length, bestCandidate, curSrc, curCan, isSameSet, candidateSrc, oldRes, imageData = img[ri.ns], evaled = !0;
|
216
209
|
if (curSrc = imageData.curSrc || img[curSrcProp], curCan = imageData.curCan || setSrcToCur(img, curSrc, candidates[0].set),
|
217
|
-
dpr = ri.
|
218
|
-
curCan && isSameSet && curCan.res >= dpr && tMemory > curCan.res
|
219
|
-
|
220
|
-
!bestCandidate) for (
|
221
|
-
|
222
|
-
|
210
|
+
dpr = ri.DPR, curSrc && (curCan && curCan.res < dpr && (oldRes = curCan.res, curCan.res += cfg.tLazy * Math.pow(curCan.res - .1, isLandscape ? 2.2 : 1.9)),
|
211
|
+
isSameSet = !imageData.pic || curCan && curCan.set == candidates[0].set, curCan && isSameSet && curCan.res >= dpr && (oldRes || tMemory > curCan.res) ? bestCandidate = curCan : supportAbort || img.complete || !getImgAttr.call(img, "src") || img.lazyload || (isSameSet || !inView(img)) && (bestCandidate = curCan,
|
212
|
+
candidateSrc = curSrc, evaled = "L", isWinComplete && reevaluateAfterLoad(img))),
|
213
|
+
!bestCandidate) for (oldRes && (curCan.res = curCan.res - (curCan.res - oldRes) / 2),
|
214
|
+
candidates.sort(ascendingSort), length = candidates.length, bestCandidate = candidates[length - 1],
|
215
|
+
i = 0; length > i; i++) if (candidate = candidates[i], candidate.res >= dpr) {
|
223
216
|
j = i - 1, bestCandidate = candidates[j] && (diff = candidate.res - dpr) && curSrc != ri.makeUrl(candidate.url) && chooseLowRes(candidates[j].res, diff, dpr) ? candidates[j] : candidate;
|
224
217
|
break;
|
225
218
|
}
|
226
|
-
return
|
227
|
-
|
228
|
-
imageData.curCan = bestCandidate, candidateSrc != curSrc ? ri.setSrc(img, bestCandidate) : ri.setSize(img)),
|
219
|
+
return oldRes && (curCan.res = oldRes), bestCandidate && (candidateSrc = ri.makeUrl(bestCandidate.url),
|
220
|
+
imageData.curSrc = candidateSrc, imageData.curCan = bestCandidate, candidateSrc != curSrc ? ri.setSrc(img, bestCandidate) : ri.setSize(img)),
|
229
221
|
evaled;
|
230
222
|
}
|
231
223
|
};
|
232
|
-
ri.
|
233
|
-
return ri.DPR * cfg.xQuant;
|
234
|
-
}, ri.setSrc = function(img, bestCandidate) {
|
224
|
+
ri.setSrc = function(img, bestCandidate) {
|
235
225
|
var origWidth;
|
236
226
|
img.src = bestCandidate.url, "image/svg+xml" == bestCandidate.set.type && (origWidth = img.style.width,
|
237
|
-
img.style.width = img.offsetWidth + 1 + "px", img.offsetWidth + 1 && (img.style.width = origWidth))
|
238
|
-
|
239
|
-
|
240
|
-
|
227
|
+
img.style.width = img.offsetWidth + 1 + "px", img.offsetWidth + 1 && (img.style.width = origWidth)),
|
228
|
+
ri.setSize(img);
|
229
|
+
}, ri.setSize = noop, ri.getSet = function(img) {
|
230
|
+
var i, set, supportsType, match = !1, sets = img[ri.ns].sets;
|
231
|
+
for (i = 0; i < sets.length && !match; i++) if (set = sets[i], set.srcset && ri.matchesMedia(set.media) && (supportsType = ri.supportsType(set.type))) {
|
232
|
+
"pending" == supportsType && (set = supportsType), match = set;
|
233
|
+
break;
|
234
|
+
}
|
235
|
+
return match;
|
241
236
|
};
|
242
|
-
ri.setSize = function(img) {
|
243
|
-
var width, curCandidate = img[ri.ns].curCan;
|
244
|
-
cfg.addSize && curCandidate && !img[ri.ns].dims && (img.complete || (off(img, "load", intrinsicSizeHandler),
|
245
|
-
on(img, "load", intrinsicSizeHandler)), width = img.naturalWidth, width && ("x" == curCandidate.desc.type ? setImgAttr.call(img, "width", parseInt(width / curCandidate.res / cfg.xQuant, 10)) : "w" == curCandidate.desc.type && setImgAttr.call(img, "width", parseInt(curCandidate.cWidth * (width / curCandidate.desc.val), 10))));
|
246
|
-
}, document.addEventListener && "naturalWidth" in image && "complete" in image || (ri.setSize = noop),
|
247
|
-
ri.getSet = function(img) {
|
248
|
-
var i, set, supportsType, match = !1, sets = img[ri.ns].sets;
|
249
|
-
for (i = 0; i < sets.length && !match; i++) if (set = sets[i], set.srcset && ri.matchesMedia(set.media) && (supportsType = ri.supportsType(set.type))) {
|
250
|
-
"pending" == supportsType && (set = supportsType), match = set;
|
251
|
-
break;
|
252
|
-
}
|
253
|
-
return match;
|
254
|
-
};
|
255
237
|
var alwaysCheckWDescriptor = ri.supSrcset && !ri.supSizes;
|
256
238
|
ri.parseSets = function(element, parent) {
|
257
239
|
var srcsetAttribute, fallbackCandidate, isWDescripor, srcsetParsed, hasPicture = "PICTURE" == parent.nodeName.toUpperCase(), imageData = element[ri.ns];
|
258
240
|
imageData.src === undefined && (imageData.src = getImgAttr.call(element, "src"),
|
259
241
|
imageData.src ? setImgAttr.call(element, srcAttr, imageData.src) : removeImgAttr.call(element, srcAttr)),
|
260
242
|
imageData.srcset === undefined && (srcsetAttribute = getImgAttr.call(element, "srcset"),
|
261
|
-
imageData.srcset = srcsetAttribute, srcsetParsed = !0), imageData.
|
262
|
-
imageData.sets
|
263
|
-
imageData.srcset
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
}), imageData.curCan = null, imageData.supported = !(hasPicture || fallbackCandidate && !ri.supSrcset || isWDescripor),
|
243
|
+
imageData.srcset = srcsetAttribute, srcsetParsed = !0), imageData.sets = [], hasPicture && (imageData.pic = !0,
|
244
|
+
getAllSourceElements(parent, imageData.sets)), imageData.srcset ? (fallbackCandidate = {
|
245
|
+
srcset: imageData.srcset,
|
246
|
+
sizes: getImgAttr.call(element, "sizes")
|
247
|
+
}, imageData.sets.push(fallbackCandidate), isWDescripor = alwaysCheckWDescriptor || imageData.src ? hasWDescripor(fallbackCandidate) : !1,
|
248
|
+
isWDescripor || !imageData.src || getCandidateForSrc(imageData.src, fallbackCandidate) || hasOneX(fallbackCandidate) || (fallbackCandidate.srcset += ", " + imageData.src,
|
249
|
+
fallbackCandidate.cands = !1)) : imageData.src && imageData.sets.push({
|
250
|
+
srcset: imageData.src,
|
251
|
+
sizes: null
|
252
|
+
}), imageData.curCan = null, imageData.supported = !(hasPicture || fallbackCandidate && !ri.supSrcset || isWDescripor),
|
272
253
|
srcsetParsed && ri.supSrcset && !imageData.supported && (srcsetAttribute ? (setImgAttr.call(element, srcsetAttr, srcsetAttribute),
|
273
|
-
element.srcset = "") : removeImgAttr.call(element, srcsetAttr)), imageData.
|
254
|
+
element.srcset = "") : removeImgAttr.call(element, srcsetAttr)), imageData.supported && !imageData.srcset && (!imageData.src && element.src || element.src != ri.makeUrl(imageData.src)) && (null == imageData.src ? element.removeAttribute("src") : element.src = imageData.src),
|
255
|
+
imageData.parsed = !0;
|
274
256
|
};
|
275
257
|
var reevaluateAfterLoad = function() {
|
276
258
|
var onload = function() {
|
277
|
-
off(this, "load", onload), ri.fillImgs({
|
259
|
+
off(this, "load", onload), off(this, "error", onload), ri.fillImgs({
|
278
260
|
elements: [ this ]
|
279
261
|
});
|
280
262
|
};
|
281
263
|
return function(img) {
|
282
|
-
off(img, "load", onload), on(img, "load", onload);
|
264
|
+
off(img, "load", onload), off(img, "error", onload), on(img, "error", onload), on(img, "load", onload);
|
283
265
|
};
|
284
266
|
}();
|
285
267
|
ri.fillImg = function(element, options) {
|
286
268
|
var parent, imageData, extreme = options.reparse || options.reevaluate;
|
287
|
-
if (element[ri.ns] || (element[ri.ns] = {}), imageData = element[ri.ns], "
|
269
|
+
if (element[ri.ns] || (element[ri.ns] = {}), imageData = element[ri.ns], "L" == imageData.evaled && element.complete && (imageData.evaled = !1),
|
288
270
|
extreme || !imageData.evaled) {
|
289
271
|
if (!imageData.parsed || options.reparse) {
|
290
272
|
if (parent = element.parentNode, !parent) return;
|
@@ -295,14 +277,8 @@
|
|
295
277
|
};
|
296
278
|
var resizeThrottle;
|
297
279
|
ri.setupRun = function(options) {
|
298
|
-
(!alreadyRun || options.reevaluate || isVwDirty) && (
|
299
|
-
|
300
|
-
tLazy = cfg.tLazy * dprM, greed = cfg.greed * dprM, tHigh = cfg.tHigh, tMemory = .6 + .4 * dprM + tLazy),
|
301
|
-
isVwDirty && (lengthCache = {}, sizeLengthCache = {}, updateView(), options.elements || options.context || clearTimeout(resizeThrottle));
|
302
|
-
}, ri.teardownRun = function() {
|
303
|
-
var parent;
|
304
|
-
lengthElInstered && (lengthElInstered = !1, parent = lengthEl.parentNode, parent && parent.removeChild(lengthEl));
|
305
|
-
};
|
280
|
+
(!alreadyRun || options.reevaluate || isVwDirty) && (updateMetrics(), options.elements || options.context || clearTimeout(resizeThrottle));
|
281
|
+
}, ri.teardownRun = noop;
|
306
282
|
var alreadyRun = !1, respimage = function(opt) {
|
307
283
|
var elements, i, plen, options = opt || {};
|
308
284
|
if (options.elements && 1 == options.elements.nodeType && ("IMG" == options.elements.nodeName.toUpperCase() ? options.elements = [ options.elements ] : (options.context = options.elements,
|
@@ -313,9 +289,13 @@
|
|
313
289
|
}
|
314
290
|
};
|
315
291
|
ri.fillImgs = respimage, window.HTMLPictureElement ? (respimage = noop, ri.fillImg = noop) : !function() {
|
316
|
-
var
|
317
|
-
|
318
|
-
|
292
|
+
var lDelay;
|
293
|
+
lDelay = supportAbort ? 180 : 400;
|
294
|
+
var run = function() {
|
295
|
+
var readyState = document.readyState || "";
|
296
|
+
clearTimeout(timerId), timerId = setTimeout(run, "loading" == readyState ? lDelay : 2e3),
|
297
|
+
document.body && (/d$|^c/.test(readyState) && (isWinComplete = !0, clearTimeout(timerId),
|
298
|
+
off(document, "readystatechange", run)), ri.fillImgs());
|
319
299
|
}, resizeEval = function() {
|
320
300
|
ri.fillImgs({
|
321
301
|
reevaluate: !0
|
@@ -333,6 +313,125 @@
|
|
333
313
|
});
|
334
314
|
}, window.respimage = respimage;
|
335
315
|
}(window, document);
|
316
|
+
|
317
|
+
(function( factory ) {
|
318
|
+
"use strict";
|
319
|
+
var interValId;
|
320
|
+
var intervalIndex = 0;
|
321
|
+
var run = function(){
|
322
|
+
if ( window.respimage ) {
|
323
|
+
factory( window.respimage );
|
324
|
+
}
|
325
|
+
if(window.respimage || intervalIndex > 9999){
|
326
|
+
clearInterval(interValId);
|
327
|
+
}
|
328
|
+
intervalIndex++;
|
329
|
+
};
|
330
|
+
interValId = setInterval(run, 8);
|
331
|
+
|
332
|
+
run();
|
333
|
+
|
334
|
+
}( function( respimage, undefined ) {
|
335
|
+
"use strict";
|
336
|
+
|
337
|
+
var ri = respimage._;
|
338
|
+
var knownWidths = {};
|
339
|
+
var cfg = ri.cfg;
|
340
|
+
var curSrcProp = "currentSrc";
|
341
|
+
var setSize = function(width, img, data){
|
342
|
+
var curCandidate = data.curCan;
|
343
|
+
|
344
|
+
if ( width ) {
|
345
|
+
if ( curCandidate.desc.type == "x" ) {
|
346
|
+
img.setAttribute( "width", parseInt( (width / curCandidate.res) / cfg.xQuant, 10) );
|
347
|
+
} else if ( curCandidate.desc.type == "w" ) {
|
348
|
+
img.setAttribute( "width", parseInt( curCandidate.cWidth * (width / curCandidate.desc.val), 10) );
|
349
|
+
}
|
350
|
+
}
|
351
|
+
};
|
352
|
+
var loadBg = function(url, img, data){
|
353
|
+
var bgImg;
|
354
|
+
var curCandidate;
|
355
|
+
if(knownWidths[url]){
|
356
|
+
setSize(knownWidths[url], img, data);
|
357
|
+
} else {
|
358
|
+
curCandidate = data.curCan;
|
359
|
+
if(curCandidate.desc.type == 'w'){
|
360
|
+
setSize(curCandidate.desc.val, img, data);
|
361
|
+
}
|
362
|
+
|
363
|
+
bgImg = document.createElement('img');
|
364
|
+
bgImg.onload = function(){
|
365
|
+
knownWidths[url] = bgImg.naturalWidth || bgImg.width;
|
366
|
+
if(url == img[curSrcProp]){
|
367
|
+
setSize(knownWidths[url], img, data);
|
368
|
+
}
|
369
|
+
bgImg.onload = null;
|
370
|
+
bgImg.onerror = null;
|
371
|
+
img = null;
|
372
|
+
bgImg = null;
|
373
|
+
};
|
374
|
+
bgImg.onerror = function(){
|
375
|
+
img = null;
|
376
|
+
bgImg.onload = null;
|
377
|
+
bgImg.onerror = null;
|
378
|
+
bgImg = null;
|
379
|
+
};
|
380
|
+
bgImg.src = url;
|
381
|
+
|
382
|
+
if(bgImg && bgImg.complete){
|
383
|
+
bgImg.onload();
|
384
|
+
}
|
385
|
+
}
|
386
|
+
|
387
|
+
};
|
388
|
+
var reeval = (function(){
|
389
|
+
var running, timer;
|
390
|
+
var run = function(){
|
391
|
+
running = false;
|
392
|
+
clearTimeout(timer);
|
393
|
+
respimage({reevaluate: true});
|
394
|
+
};
|
395
|
+
|
396
|
+
return function(){
|
397
|
+
if(!running && cfg.addSize){
|
398
|
+
running = true;
|
399
|
+
clearTimeout(timer);
|
400
|
+
timer = setTimeout(run, 33);
|
401
|
+
}
|
402
|
+
};
|
403
|
+
|
404
|
+
})();
|
405
|
+
|
406
|
+
if( !(curSrcProp in document.createElement("img")) ){
|
407
|
+
curSrcProp = "src";
|
408
|
+
}
|
409
|
+
|
410
|
+
cfg.addSize = true;
|
411
|
+
|
412
|
+
ri.setSize = function( img ) {
|
413
|
+
var url;
|
414
|
+
var data = img[ ri.ns ];
|
415
|
+
var curCandidate = data.curCan;
|
416
|
+
|
417
|
+
if ( data.dims === undefined ) {
|
418
|
+
data.dims = img.getAttribute( "height" ) && img.getAttribute( "width" );
|
419
|
+
}
|
420
|
+
|
421
|
+
if ( !cfg.addSize || !curCandidate || data.dims ) {return;}
|
422
|
+
url = ri.makeUrl(curCandidate.url);
|
423
|
+
if(url == img[curSrcProp]){
|
424
|
+
loadBg(url, img, data);
|
425
|
+
}
|
426
|
+
};
|
427
|
+
|
428
|
+
|
429
|
+
if(window.addEventListener){
|
430
|
+
addEventListener('resize', reeval, false);
|
431
|
+
}
|
432
|
+
respimage({reevaluate: true});
|
433
|
+
}));
|
434
|
+
|
336
435
|
(function( factory ) {
|
337
436
|
"use strict";
|
338
437
|
var interValId;
|
@@ -419,12 +518,13 @@
|
|
419
518
|
|
420
519
|
|
421
520
|
respimage.testTypeSupport("image/webp", "data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==", 1);
|
422
|
-
respimage.testTypeSupport("image/jp2 image/jpx image/jpm", "data:image/jp2;base64
|
521
|
+
respimage.testTypeSupport("image/jp2 image/jpx image/jpm", "data:image/jp2;base64,/0//UQAyAAAAAAABAAAAAgAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAEBwEBBwEBBwEBBwEB/1IADAAAAAEAAAQEAAH/XAAEQED/ZAAlAAFDcmVhdGVkIGJ5IE9wZW5KUEVHIHZlcnNpb24gMi4wLjD/kAAKAAAAAABYAAH/UwAJAQAABAQAAf9dAAUBQED/UwAJAgAABAQAAf9dAAUCQED/UwAJAwAABAQAAf9dAAUDQED/k8+kEAGvz6QQAa/PpBABr994EAk//9k=", 1);
|
423
522
|
respimage.testTypeSupport("image/vnd.ms-photo", "data:image/vnd.ms-photo;base64,SUm8AQgAAAAFAAG8AQAQAAAASgAAAIC8BAABAAAAAQAAAIG8BAABAAAAAQAAAMC8BAABAAAAWgAAAMG8BAABAAAAHwAAAAAAAAAkw91vA07+S7GFPXd2jckNV01QSE9UTwAZAYBxAAAAABP/gAAEb/8AAQAAAQAAAA==", 1);
|
424
523
|
respimage.testTypeSupport("video/png video/apng video/x-mng video/x-png", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACGFjVEwAAAABAAAAAcMq2TYAAAANSURBVAiZY2BgYPgPAAEEAQB9ssjfAAAAGmZjVEwAAAAAAAAAAQAAAAEAAAAAAAAAAAD6A+gBAbNU+2sAAAARZmRBVAAAAAEImWNgYGBgAAAABQAB6MzFdgAAAABJRU5ErkJggg==", false, true);
|
425
524
|
|
426
525
|
}));
|
427
526
|
|
527
|
+
|
428
528
|
(function(){
|
429
529
|
|
430
530
|
webshim.isReady('picture', true);
|
@@ -762,9 +762,12 @@ webshims.register('form-validation', function($, webshims, window, document, und
|
|
762
762
|
var invalid, errorBox, afterHide;
|
763
763
|
var fieldWrapper = this.getFieldWrapper(elem);
|
764
764
|
|
765
|
+
if(!reset){
|
766
|
+
invalid = $('input:invalid, select:invalid, textarea:invalid', fieldWrapper);
|
767
|
+
}
|
765
768
|
if(fieldWrapper.hasClass(invalidWrapperClass)){
|
766
769
|
$(elem).filter('input').off('.recheckinvalid');
|
767
|
-
if(!reset &&
|
770
|
+
if(!reset && invalid && invalid[0]){
|
768
771
|
$(invalid).trigger('updatevalidation.webshims');
|
769
772
|
} else {
|
770
773
|
errorBox = this.get(elem, fieldWrapper);
|
@@ -784,7 +787,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
|
|
784
787
|
}
|
785
788
|
|
786
789
|
}
|
787
|
-
if(!reset && !invalid){
|
790
|
+
if(!reset && (!invalid || !invalid.length)){
|
788
791
|
this.addSuccess(elem, fieldWrapper);
|
789
792
|
}
|
790
793
|
return fieldWrapper;
|
@@ -185,20 +185,24 @@ webshims.ready('form-validation', function(){
|
|
185
185
|
|
186
186
|
|
187
187
|
$('body').on('click', function(e){
|
188
|
+
|
188
189
|
if(e.target.type == 'submit' && !e.isDefaultPrevented()){
|
189
|
-
var activeElement, i, len;
|
190
|
-
|
190
|
+
var activeElement, i, len, elements;
|
191
|
+
|
191
192
|
try {
|
192
193
|
activeElement = document.activeElement;
|
193
|
-
} catch(
|
194
|
+
} catch(er){}
|
195
|
+
|
196
|
+
if(!activeElement || activeElement == e.target){return;}
|
197
|
+
elements = $(e.target).jProp('form').prop('elements') || [];
|
198
|
+
|
199
|
+
if(activeElement && 'form' in activeElement && $.prop(activeElement, 'willValidate')){
|
200
|
+
$(activeElement).trigger('updatevalidation.webshims');
|
201
|
+
}
|
194
202
|
|
195
203
|
for(i = 0, len = elements.length; i < len; i++){
|
196
204
|
if($.data(elements[i], 'customMismatchedRule')){
|
197
|
-
|
198
|
-
$(elements[i]).trigger('updatevalidation.webshims');
|
199
|
-
} else {
|
200
|
-
testValidityRules(elements[i]);
|
201
|
-
}
|
205
|
+
testValidityRules(elements[i]);
|
202
206
|
}
|
203
207
|
}
|
204
208
|
|
@@ -0,0 +1,130 @@
|
|
1
|
+
webshims.validityMessages['no'] = {
|
2
|
+
"typeMismatch": {
|
3
|
+
"defaultMessage": "Vennligst skriv en gyldig verdi.",
|
4
|
+
"email": "Vennligst skriv inn en e-postadresse.",
|
5
|
+
"url": "Vennligst skriv inn en URL."
|
6
|
+
},
|
7
|
+
"badInput": {
|
8
|
+
"defaultMessage": "Vennligst skriv en gyldig verdi.",
|
9
|
+
"number": "Vennligst skriv inn et tall.",
|
10
|
+
"date": "Vennligst skriv inn en dato.",
|
11
|
+
"time": "Vennligst skriv inn et klokkeslett.",
|
12
|
+
"range": "Ugyldig data.",
|
13
|
+
"month": "Vennligst skriv en gyldig verdi.",
|
14
|
+
"datetime-local": "Vennligst skriv inn dato & tid"
|
15
|
+
},
|
16
|
+
"rangeUnderflow": {
|
17
|
+
"defaultMessage": "Verdi må være større eller lik {%min}.",
|
18
|
+
"date": "Verdi må være på eller etter {%min}.",
|
19
|
+
"time": "Verdi må være på eller etter {%min}.",
|
20
|
+
"datetime-local": "Verdi må være på eller etter {%min}.",
|
21
|
+
"month": "Verdi må være på eller etter {%min}."
|
22
|
+
},
|
23
|
+
"rangeOverflow": {
|
24
|
+
"defaultMessage": "Verdi må være mindre eller lik {%max}.",
|
25
|
+
"date": "Verdi må være på eller før {%max}.",
|
26
|
+
"time": "Verdi må være på eller før {%max}.",
|
27
|
+
"datetime-local": "Verdi må være på eller før {%max}.",
|
28
|
+
"month": "Verdi må være på eller før {%max}."
|
29
|
+
},
|
30
|
+
"stepMismatch": "Ugyldig inndata.",
|
31
|
+
"tooLong": "Vennligst fyll inn maks {%maxlength} tegn. Du skrev inn {%valueLen}.",
|
32
|
+
"tooShort": "Vennlist fyll inn minst {%minlength} tegn. Du skrev inn {%valueLen}.",
|
33
|
+
"patternMismatch": "Ugyldig data. {%title}",
|
34
|
+
"valueMissing": {
|
35
|
+
"defaultMessage": "Vennligst fyll inn dette feltet.",
|
36
|
+
"checkbox": "Vennligst kryss av i denne boksen om du ønsker å fortsette.",
|
37
|
+
"select": "Vennligst velg.",
|
38
|
+
"radio": "Vennligst velg."
|
39
|
+
}
|
40
|
+
};
|
41
|
+
webshims.formcfg['no'] = {
|
42
|
+
"numberFormat": {
|
43
|
+
".": ".",
|
44
|
+
",": ","
|
45
|
+
},
|
46
|
+
"numberSigns": ".",
|
47
|
+
"dateSigns": "/",
|
48
|
+
"timeSigns": ":. ",
|
49
|
+
"dFormat": "/",
|
50
|
+
"patterns": {
|
51
|
+
"d": "dd/mm/yy"
|
52
|
+
},
|
53
|
+
"meridian": [
|
54
|
+
"AM",
|
55
|
+
"PM"
|
56
|
+
],
|
57
|
+
"month": {
|
58
|
+
"currentText": "Denne måned"
|
59
|
+
},
|
60
|
+
"time": {
|
61
|
+
"currentText": "Nå"
|
62
|
+
},
|
63
|
+
"date": {
|
64
|
+
"closeText": "Ferdig",
|
65
|
+
"clear": "Tøm",
|
66
|
+
"prevText": "Forrige",
|
67
|
+
"nextText": "Neste",
|
68
|
+
"currentText": "I dag",
|
69
|
+
"monthNames": [
|
70
|
+
"Januar",
|
71
|
+
"Februar",
|
72
|
+
"Mars",
|
73
|
+
"April",
|
74
|
+
"Mai",
|
75
|
+
"Juni",
|
76
|
+
"Juli",
|
77
|
+
"August",
|
78
|
+
"September",
|
79
|
+
"Oktober",
|
80
|
+
"November",
|
81
|
+
"Desember"
|
82
|
+
],
|
83
|
+
"monthNamesShort": [
|
84
|
+
"Jan",
|
85
|
+
"Feb",
|
86
|
+
"Mar",
|
87
|
+
"Apr",
|
88
|
+
"Mai",
|
89
|
+
"Jun",
|
90
|
+
"Jul",
|
91
|
+
"Aug",
|
92
|
+
"Sep",
|
93
|
+
"Okt",
|
94
|
+
"Nov",
|
95
|
+
"Des"
|
96
|
+
],
|
97
|
+
"dayNames": [
|
98
|
+
"Søndag",
|
99
|
+
"Mandag",
|
100
|
+
"Tirsdag",
|
101
|
+
"Onsdag",
|
102
|
+
"Torsdag",
|
103
|
+
"Fredag",
|
104
|
+
"Lørdag"
|
105
|
+
],
|
106
|
+
"dayNamesShort": [
|
107
|
+
"Søn",
|
108
|
+
"Man",
|
109
|
+
"Tir",
|
110
|
+
"Ons",
|
111
|
+
"Tor",
|
112
|
+
"Fre",
|
113
|
+
"Lør"
|
114
|
+
],
|
115
|
+
"dayNamesMin": [
|
116
|
+
"Sø",
|
117
|
+
"Ma",
|
118
|
+
"Ti",
|
119
|
+
"On",
|
120
|
+
"To",
|
121
|
+
"Fr",
|
122
|
+
"Lø"
|
123
|
+
],
|
124
|
+
"weekHeader": "Uke",
|
125
|
+
"firstDay": 1,
|
126
|
+
"isRTL": false,
|
127
|
+
"showMonthAfterYear": false,
|
128
|
+
"yearSuffix": ""
|
129
|
+
}
|
130
|
+
};
|
@@ -1,13 +1,20 @@
|
|
1
|
-
/*! respimage -
|
1
|
+
/*! respimage - v1.1.6 - 2014-11-20
|
2
2
|
Licensed MIT */
|
3
3
|
!function(window, document, undefined) {
|
4
4
|
"use strict";
|
5
5
|
function trim(str) {
|
6
6
|
return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, "");
|
7
7
|
}
|
8
|
-
function
|
9
|
-
|
10
|
-
|
8
|
+
function updateMetrics() {
|
9
|
+
var dprM;
|
10
|
+
(isVwDirty || DPR != window.devicePixelRatio) && (isVwDirty = !1, DPR = window.devicePixelRatio,
|
11
|
+
cssCache = {}, sizeLengthCache = {}, dprM = (DPR || 1) * cfg.xQuant, cfg.uT || (dprM = Math.min(dprM, 3),
|
12
|
+
dprM > 1.4 && (dprM = Math.round(dprM / (1 + (dprM - 1.4) / 12) * 100) / 100), ri.DPR = dprM),
|
13
|
+
tLow = cfg.tLow * dprM, greed = cfg.greed / 2, greed += greed * dprM, tHigh = cfg.tHigh,
|
14
|
+
tMemory = 2 + dprM, units.width = Math.max(window.innerWidth || 0, docElem.clientWidth),
|
15
|
+
units.height = Math.max(window.innerHeight || 0, docElem.clientHeight), isLandscape = units.width > units.height,
|
16
|
+
units.vw = units.width / 100, units.vh = units.height / 100, units.em = ri.getEmValue(),
|
17
|
+
units.rem = units.em);
|
11
18
|
}
|
12
19
|
function parseDescriptor(descriptor) {
|
13
20
|
if (!(descriptor in memDescriptor)) {
|
@@ -15,19 +22,21 @@
|
|
15
22
|
val: 1,
|
16
23
|
type: "x"
|
17
24
|
}, parsedDescriptor = trim(descriptor || "");
|
18
|
-
parsedDescriptor && (parsedDescriptor
|
19
|
-
descriptorObj.type = RegExp.$2) : descriptorObj = !1),
|
25
|
+
parsedDescriptor && (parsedDescriptor = parsedDescriptor.replace(regHDesc, ""),
|
26
|
+
parsedDescriptor.match(regDescriptor) ? (descriptorObj.val = 1 * RegExp.$1, descriptorObj.type = RegExp.$2) : descriptorObj = !1),
|
27
|
+
memDescriptor[descriptor] = descriptorObj;
|
20
28
|
}
|
21
29
|
return memDescriptor[descriptor];
|
22
30
|
}
|
23
31
|
function chooseLowRes(lowRes, diff, dpr) {
|
24
|
-
|
32
|
+
var add = diff * greed * lowRes;
|
33
|
+
return isLandscape || (add /= 1.5), lowRes += add, diff > tHigh && (lowRes += tLow),
|
25
34
|
lowRes > dpr;
|
26
35
|
}
|
27
36
|
function inView(el) {
|
28
37
|
if (!el.getBoundingClientRect) return !0;
|
29
38
|
var bottom, right, left, top, rect = el.getBoundingClientRect();
|
30
|
-
return !!((bottom = rect.bottom) >= -9 && (top = rect.top) <=
|
39
|
+
return !!((bottom = rect.bottom) >= -9 && (top = rect.top) <= units.height + 9 && (right = rect.right) >= -9 && (left = rect.left) <= units.height + 9 && (bottom || right || left || top));
|
31
40
|
}
|
32
41
|
function applyBestCandidate(img) {
|
33
42
|
var srcSetCandidates, matchingSet = ri.getSet(img), evaluated = !1;
|
@@ -41,7 +50,7 @@
|
|
41
50
|
var candidate;
|
42
51
|
return !set && src && (set = img[ri.ns].sets, set = set && set[set.length - 1]),
|
43
52
|
candidate = getCandidateForSrc(src, set), candidate && (src = ri.makeUrl(src), img[ri.ns].curSrc = src,
|
44
|
-
img[ri.ns].curCan = candidate,
|
53
|
+
img[ri.ns].curCan = candidate, candidate.res || setResolution(candidate, candidate.set.sizes)),
|
45
54
|
candidate;
|
46
55
|
}
|
47
56
|
function getCandidateForSrc(src, set) {
|
@@ -83,18 +92,16 @@
|
|
83
92
|
candidate;
|
84
93
|
}
|
85
94
|
document.createElement("picture");
|
86
|
-
var
|
87
|
-
addSize: !1,
|
95
|
+
var ri = {}, noop = function() {}, image = document.createElement("img"), getImgAttr = image.getAttribute, setImgAttr = image.setAttribute, removeImgAttr = image.removeAttribute, docElem = document.documentElement, types = {}, cfg = {
|
88
96
|
xQuant: 1,
|
89
97
|
tLow: .1,
|
90
|
-
tHigh: .
|
91
|
-
tLazy: .
|
92
|
-
greed: .
|
93
|
-
}, srcAttr = "data-risrc", srcsetAttr = srcAttr + "set";
|
94
|
-
ri.ns = ("ri" + new Date().getTime()).substr(0, 9),
|
95
|
-
|
96
|
-
ri.
|
97
|
-
ri.cfg = cfg, ri.supSrcset && (ri.sel += ", img[" + srcsetAttr + "]");
|
98
|
+
tHigh: .6,
|
99
|
+
tLazy: .33,
|
100
|
+
greed: .5
|
101
|
+
}, srcAttr = "data-risrc", srcsetAttr = srcAttr + "set", supportAbort = /rident/.test(navigator.userAgent), curSrcProp = "currentSrc";
|
102
|
+
ri.ns = ("ri" + new Date().getTime()).substr(0, 9), curSrcProp in image || (curSrcProp = "src"),
|
103
|
+
ri.supSrcset = "srcset" in image, ri.supSizes = "sizes" in image, ri.selShort = "picture>img,img[srcset]",
|
104
|
+
ri.sel = ri.selShort, ri.cfg = cfg, ri.supSrcset && (ri.sel += ",img[" + srcsetAttr + "]");
|
98
105
|
var anchor = document.createElement("a");
|
99
106
|
ri.makeUrl = function(src) {
|
100
107
|
return anchor.href = src, anchor.href;
|
@@ -102,11 +109,9 @@
|
|
102
109
|
return context.querySelectorAll(sel);
|
103
110
|
};
|
104
111
|
{
|
105
|
-
var on = (
|
106
|
-
console.warn(message);
|
107
|
-
} : noop, function(obj, evt, fn, capture) {
|
112
|
+
var on = function(obj, evt, fn, capture) {
|
108
113
|
obj.addEventListener ? obj.addEventListener(evt, fn, capture || !1) : obj.attachEvent && obj.attachEvent("on" + evt, fn);
|
109
|
-
}
|
114
|
+
}, off = function(obj, evt, fn, capture) {
|
110
115
|
obj.removeEventListener ? obj.removeEventListener(evt, fn, capture || !1) : obj.detachEvent && obj.detachEvent("on" + evt, fn);
|
111
116
|
};
|
112
117
|
"https:" == location.protocol;
|
@@ -115,41 +120,33 @@
|
|
115
120
|
return ri.matchesMedia = window.matchMedia && (matchMedia("(min-width: 0.1em)") || {}).matches ? function(media) {
|
116
121
|
return !media || matchMedia(media).matches;
|
117
122
|
} : ri.mMQ, ri.matchesMedia.apply(this, arguments);
|
118
|
-
}
|
119
|
-
var
|
120
|
-
|
121
|
-
|
122
|
-
}
|
123
|
-
ri.mMQ = function(media) {
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
123
|
+
};
|
124
|
+
var tLow, greed, tHigh, tMemory, isWinComplete, isLandscape, isVwDirty = !0, cssCache = {}, sizeLengthCache = {}, DPR = window.devicePixelRatio, units = {
|
125
|
+
px: 1,
|
126
|
+
"in": 96
|
127
|
+
};
|
128
|
+
ri.DPR = DPR || 1, ri.u = units, ri.mMQ = function(media) {
|
129
|
+
return media ? evalCSS(media) : !0;
|
130
|
+
};
|
131
|
+
var evalCSS = function() {
|
132
|
+
var cache = {}, regLength = /^([\d\.]+)(em|vw|px)$/, replace = function() {
|
133
|
+
for (var args = arguments, index = 0, string = args[0]; ++index in args; ) string = string.replace(args[index], args[++index]);
|
134
|
+
return string;
|
135
|
+
}, buidlStr = function(css) {
|
136
|
+
return cache[css] || (cache[css] = "return " + replace((css || "").toLowerCase(), /\band\b/g, "&&", /,/g, "||", /min-([a-z-\s]+):/g, "e.$1>=", /max-([a-z-\s]+):/g, "e.$1<=", /calc([^)]+)/g, "($1)", /(\d+[\.]*[\d]*)([a-z]+)/g, "($1 * e.$2)", /^(?!(e.[a-z]|[0-9\.&=|><\+\-\*\(\)\/])).*/gi, "") + ";"),
|
137
|
+
cache[css];
|
138
|
+
};
|
139
|
+
return function(css, length) {
|
140
|
+
var parsedLength;
|
141
|
+
if (!(css in cssCache)) if (cssCache[css] = !1, length && (parsedLength = css.match(regLength))) cssCache[css] = parsedLength[1] * units[parsedLength[2]]; else try {
|
142
|
+
cssCache[css] = new Function("e", buidlStr(css))(units);
|
143
|
+
} catch (e) {}
|
144
|
+
return cssCache[css];
|
145
|
+
};
|
146
|
+
}();
|
135
147
|
ri.calcLength = function(sourceSizeValue) {
|
136
|
-
var
|
137
|
-
|
138
|
-
if (parsedLength = sourceSizeValue.match(regLength)) parsedLength[1] = parseFloat(parsedLength[1], 10),
|
139
|
-
value = parsedLength[1] ? "vw" == parsedLength[2] ? ri.vW * parsedLength[1] / 100 : "em" == parsedLength[2] ? ri.getEmValue() * parsedLength[1] : parsedLength[1] : !1; else if (sourceSizeValue.indexOf("calc") > -1 || parseInt(sourceSizeValue, 10)) {
|
140
|
-
sourceSizeValue = sourceSizeValue.replace("vw", "%"), lengthEl || (lengthEl = document.createElement("div"),
|
141
|
-
lengthEl.style.cssText = baseStyle), lengthElInstered || (lengthElInstered = !0,
|
142
|
-
docElem.insertBefore(lengthEl, docElem.firstChild)), lengthEl.style.width = "0px";
|
143
|
-
try {
|
144
|
-
lengthEl.style.width = sourceSizeValue;
|
145
|
-
} catch (e) {
|
146
|
-
failed = !0;
|
147
|
-
}
|
148
|
-
value = lengthEl.offsetWidth, failed && (value = !1);
|
149
|
-
}
|
150
|
-
0 >= value && (value = !1), lengthCache[orirgValue] = value;
|
151
|
-
}
|
152
|
-
return lengthCache[orirgValue];
|
148
|
+
var value = evalCSS(sourceSizeValue, !0) || !1;
|
149
|
+
return 0 > value && (value = !1), value;
|
153
150
|
}, ri.types = types, types["image/jpeg"] = !0, types["image/gif"] = !0, types["image/png"] = !0,
|
154
151
|
types["image/svg+xml"] = document.implementation.hasFeature("http://wwwindow.w3.org/TR/SVG11/feature#Image", "1.1"),
|
155
152
|
ri.supportsType = function(type) {
|
@@ -179,7 +176,7 @@
|
|
179
176
|
}
|
180
177
|
return set.cands;
|
181
178
|
};
|
182
|
-
var eminpx, memDescriptor = {}, regDescriptor = /^([\+eE\d\.]+)(w|x)$/, fsCss = "font-size:100
|
179
|
+
var eminpx, memDescriptor = {}, regDescriptor = /^([\+eE\d\.]+)(w|x)$/, regHDesc = /\s*\d+h\s*/, baseStyle = "position:absolute;left:0;visibility:hidden;display:block;padding:0;border:none;font-size:1em;width:1em;overflow:hidden;clip:rect(0px, 0px, 0px, 0px)", fsCss = "font-size:100%!important;";
|
183
180
|
ri.getEmValue = function() {
|
184
181
|
var body;
|
185
182
|
if (!eminpx && (body = document.body)) {
|
@@ -189,15 +186,13 @@
|
|
189
186
|
docElem.style.cssText = originalHTMLCSS, body.style.cssText = originalBodyCSS;
|
190
187
|
}
|
191
188
|
return eminpx || 16;
|
192
|
-
}
|
193
|
-
var sizeLengthCache = {};
|
194
|
-
ri.calcListLength = function(sourceSizeListStr) {
|
189
|
+
}, ri.calcListLength = function(sourceSizeListStr) {
|
195
190
|
if (!(sourceSizeListStr in sizeLengthCache) || cfg.uT) {
|
196
191
|
var sourceSize, parsedSize, length, media, i, len, sourceSizeList = trim(sourceSizeListStr).split(/\s*,\s*/), winningLength = !1;
|
197
192
|
for (i = 0, len = sourceSizeList.length; len > i && (sourceSize = sourceSizeList[i],
|
198
193
|
parsedSize = ri.parseSize(sourceSize), length = parsedSize.length, media = parsedSize.media,
|
199
194
|
!length || !ri.matchesMedia(media) || (winningLength = ri.calcLength(length)) === !1); i++) ;
|
200
|
-
sizeLengthCache[sourceSizeListStr] = winningLength ? winningLength :
|
195
|
+
sizeLengthCache[sourceSizeListStr] = winningLength ? winningLength : units.width;
|
201
196
|
}
|
202
197
|
return sizeLengthCache[sourceSizeListStr];
|
203
198
|
}, ri.setRes = function(set) {
|
@@ -208,83 +203,70 @@
|
|
208
203
|
candidate.descriptor || setResolution(candidate, set.sizes);
|
209
204
|
}
|
210
205
|
return candidates;
|
211
|
-
}
|
212
|
-
var dprM, tLow, greed, tLazy, tHigh, tMemory, isWinComplete;
|
213
|
-
ri.applySetCandidate = function(candidates, img) {
|
206
|
+
}, ri.applySetCandidate = function(candidates, img) {
|
214
207
|
if (candidates.length) {
|
215
|
-
var candidate, dpr, i, j, diff, length, bestCandidate, curSrc, curCan, isSameSet, candidateSrc, imageData = img[ri.ns], evaled = !0;
|
208
|
+
var candidate, dpr, i, j, diff, length, bestCandidate, curSrc, curCan, isSameSet, candidateSrc, oldRes, imageData = img[ri.ns], evaled = !0;
|
216
209
|
if (curSrc = imageData.curSrc || img[curSrcProp], curCan = imageData.curCan || setSrcToCur(img, curSrc, candidates[0].set),
|
217
|
-
dpr = ri.
|
218
|
-
curCan && isSameSet && curCan.res >= dpr && tMemory > curCan.res
|
219
|
-
|
220
|
-
!bestCandidate) for (
|
221
|
-
|
222
|
-
|
210
|
+
dpr = ri.DPR, curSrc && (curCan && curCan.res < dpr && (oldRes = curCan.res, curCan.res += cfg.tLazy * Math.pow(curCan.res - .1, isLandscape ? 2.2 : 1.9)),
|
211
|
+
isSameSet = !imageData.pic || curCan && curCan.set == candidates[0].set, curCan && isSameSet && curCan.res >= dpr && (oldRes || tMemory > curCan.res) ? bestCandidate = curCan : supportAbort || img.complete || !getImgAttr.call(img, "src") || img.lazyload || (isSameSet || !inView(img)) && (bestCandidate = curCan,
|
212
|
+
candidateSrc = curSrc, evaled = "L", isWinComplete && reevaluateAfterLoad(img))),
|
213
|
+
!bestCandidate) for (oldRes && (curCan.res = curCan.res - (curCan.res - oldRes) / 2),
|
214
|
+
candidates.sort(ascendingSort), length = candidates.length, bestCandidate = candidates[length - 1],
|
215
|
+
i = 0; length > i; i++) if (candidate = candidates[i], candidate.res >= dpr) {
|
223
216
|
j = i - 1, bestCandidate = candidates[j] && (diff = candidate.res - dpr) && curSrc != ri.makeUrl(candidate.url) && chooseLowRes(candidates[j].res, diff, dpr) ? candidates[j] : candidate;
|
224
217
|
break;
|
225
218
|
}
|
226
|
-
return
|
227
|
-
|
228
|
-
imageData.curCan = bestCandidate, candidateSrc != curSrc ? ri.setSrc(img, bestCandidate) : ri.setSize(img)),
|
219
|
+
return oldRes && (curCan.res = oldRes), bestCandidate && (candidateSrc = ri.makeUrl(bestCandidate.url),
|
220
|
+
imageData.curSrc = candidateSrc, imageData.curCan = bestCandidate, candidateSrc != curSrc ? ri.setSrc(img, bestCandidate) : ri.setSize(img)),
|
229
221
|
evaled;
|
230
222
|
}
|
231
223
|
};
|
232
|
-
ri.
|
233
|
-
return ri.DPR * cfg.xQuant;
|
234
|
-
}, ri.setSrc = function(img, bestCandidate) {
|
224
|
+
ri.setSrc = function(img, bestCandidate) {
|
235
225
|
var origWidth;
|
236
226
|
img.src = bestCandidate.url, "image/svg+xml" == bestCandidate.set.type && (origWidth = img.style.width,
|
237
|
-
img.style.width = img.offsetWidth + 1 + "px", img.offsetWidth + 1 && (img.style.width = origWidth))
|
238
|
-
|
239
|
-
|
240
|
-
|
227
|
+
img.style.width = img.offsetWidth + 1 + "px", img.offsetWidth + 1 && (img.style.width = origWidth)),
|
228
|
+
ri.setSize(img);
|
229
|
+
}, ri.setSize = noop, ri.getSet = function(img) {
|
230
|
+
var i, set, supportsType, match = !1, sets = img[ri.ns].sets;
|
231
|
+
for (i = 0; i < sets.length && !match; i++) if (set = sets[i], set.srcset && ri.matchesMedia(set.media) && (supportsType = ri.supportsType(set.type))) {
|
232
|
+
"pending" == supportsType && (set = supportsType), match = set;
|
233
|
+
break;
|
234
|
+
}
|
235
|
+
return match;
|
241
236
|
};
|
242
|
-
ri.setSize = function(img) {
|
243
|
-
var width, curCandidate = img[ri.ns].curCan;
|
244
|
-
cfg.addSize && curCandidate && !img[ri.ns].dims && (img.complete || (off(img, "load", intrinsicSizeHandler),
|
245
|
-
on(img, "load", intrinsicSizeHandler)), width = img.naturalWidth, width && ("x" == curCandidate.desc.type ? setImgAttr.call(img, "width", parseInt(width / curCandidate.res / cfg.xQuant, 10)) : "w" == curCandidate.desc.type && setImgAttr.call(img, "width", parseInt(curCandidate.cWidth * (width / curCandidate.desc.val), 10))));
|
246
|
-
}, document.addEventListener && "naturalWidth" in image && "complete" in image || (ri.setSize = noop),
|
247
|
-
ri.getSet = function(img) {
|
248
|
-
var i, set, supportsType, match = !1, sets = img[ri.ns].sets;
|
249
|
-
for (i = 0; i < sets.length && !match; i++) if (set = sets[i], set.srcset && ri.matchesMedia(set.media) && (supportsType = ri.supportsType(set.type))) {
|
250
|
-
"pending" == supportsType && (set = supportsType), match = set;
|
251
|
-
break;
|
252
|
-
}
|
253
|
-
return match;
|
254
|
-
};
|
255
237
|
var alwaysCheckWDescriptor = ri.supSrcset && !ri.supSizes;
|
256
238
|
ri.parseSets = function(element, parent) {
|
257
239
|
var srcsetAttribute, fallbackCandidate, isWDescripor, srcsetParsed, hasPicture = "PICTURE" == parent.nodeName.toUpperCase(), imageData = element[ri.ns];
|
258
240
|
imageData.src === undefined && (imageData.src = getImgAttr.call(element, "src"),
|
259
241
|
imageData.src ? setImgAttr.call(element, srcAttr, imageData.src) : removeImgAttr.call(element, srcAttr)),
|
260
242
|
imageData.srcset === undefined && (srcsetAttribute = getImgAttr.call(element, "srcset"),
|
261
|
-
imageData.srcset = srcsetAttribute, srcsetParsed = !0), imageData.
|
262
|
-
imageData.sets
|
263
|
-
imageData.srcset
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
}), imageData.curCan = null, imageData.supported = !(hasPicture || fallbackCandidate && !ri.supSrcset || isWDescripor),
|
243
|
+
imageData.srcset = srcsetAttribute, srcsetParsed = !0), imageData.sets = [], hasPicture && (imageData.pic = !0,
|
244
|
+
getAllSourceElements(parent, imageData.sets)), imageData.srcset ? (fallbackCandidate = {
|
245
|
+
srcset: imageData.srcset,
|
246
|
+
sizes: getImgAttr.call(element, "sizes")
|
247
|
+
}, imageData.sets.push(fallbackCandidate), isWDescripor = alwaysCheckWDescriptor || imageData.src ? hasWDescripor(fallbackCandidate) : !1,
|
248
|
+
isWDescripor || !imageData.src || getCandidateForSrc(imageData.src, fallbackCandidate) || hasOneX(fallbackCandidate) || (fallbackCandidate.srcset += ", " + imageData.src,
|
249
|
+
fallbackCandidate.cands = !1)) : imageData.src && imageData.sets.push({
|
250
|
+
srcset: imageData.src,
|
251
|
+
sizes: null
|
252
|
+
}), imageData.curCan = null, imageData.supported = !(hasPicture || fallbackCandidate && !ri.supSrcset || isWDescripor),
|
272
253
|
srcsetParsed && ri.supSrcset && !imageData.supported && (srcsetAttribute ? (setImgAttr.call(element, srcsetAttr, srcsetAttribute),
|
273
|
-
element.srcset = "") : removeImgAttr.call(element, srcsetAttr)), imageData.
|
254
|
+
element.srcset = "") : removeImgAttr.call(element, srcsetAttr)), imageData.supported && !imageData.srcset && (!imageData.src && element.src || element.src != ri.makeUrl(imageData.src)) && (null == imageData.src ? element.removeAttribute("src") : element.src = imageData.src),
|
255
|
+
imageData.parsed = !0;
|
274
256
|
};
|
275
257
|
var reevaluateAfterLoad = function() {
|
276
258
|
var onload = function() {
|
277
|
-
off(this, "load", onload), ri.fillImgs({
|
259
|
+
off(this, "load", onload), off(this, "error", onload), ri.fillImgs({
|
278
260
|
elements: [ this ]
|
279
261
|
});
|
280
262
|
};
|
281
263
|
return function(img) {
|
282
|
-
off(img, "load", onload), on(img, "load", onload);
|
264
|
+
off(img, "load", onload), off(img, "error", onload), on(img, "error", onload), on(img, "load", onload);
|
283
265
|
};
|
284
266
|
}();
|
285
267
|
ri.fillImg = function(element, options) {
|
286
268
|
var parent, imageData, extreme = options.reparse || options.reevaluate;
|
287
|
-
if (element[ri.ns] || (element[ri.ns] = {}), imageData = element[ri.ns], "
|
269
|
+
if (element[ri.ns] || (element[ri.ns] = {}), imageData = element[ri.ns], "L" == imageData.evaled && element.complete && (imageData.evaled = !1),
|
288
270
|
extreme || !imageData.evaled) {
|
289
271
|
if (!imageData.parsed || options.reparse) {
|
290
272
|
if (parent = element.parentNode, !parent) return;
|
@@ -295,14 +277,8 @@
|
|
295
277
|
};
|
296
278
|
var resizeThrottle;
|
297
279
|
ri.setupRun = function(options) {
|
298
|
-
(!alreadyRun || options.reevaluate || isVwDirty) && (
|
299
|
-
|
300
|
-
tLazy = cfg.tLazy * dprM, greed = cfg.greed * dprM, tHigh = cfg.tHigh, tMemory = .6 + .4 * dprM + tLazy),
|
301
|
-
isVwDirty && (lengthCache = {}, sizeLengthCache = {}, updateView(), options.elements || options.context || clearTimeout(resizeThrottle));
|
302
|
-
}, ri.teardownRun = function() {
|
303
|
-
var parent;
|
304
|
-
lengthElInstered && (lengthElInstered = !1, parent = lengthEl.parentNode, parent && parent.removeChild(lengthEl));
|
305
|
-
};
|
280
|
+
(!alreadyRun || options.reevaluate || isVwDirty) && (updateMetrics(), options.elements || options.context || clearTimeout(resizeThrottle));
|
281
|
+
}, ri.teardownRun = noop;
|
306
282
|
var alreadyRun = !1, respimage = function(opt) {
|
307
283
|
var elements, i, plen, options = opt || {};
|
308
284
|
if (options.elements && 1 == options.elements.nodeType && ("IMG" == options.elements.nodeName.toUpperCase() ? options.elements = [ options.elements ] : (options.context = options.elements,
|
@@ -313,9 +289,13 @@
|
|
313
289
|
}
|
314
290
|
};
|
315
291
|
ri.fillImgs = respimage, window.HTMLPictureElement ? (respimage = noop, ri.fillImg = noop) : !function() {
|
316
|
-
var
|
317
|
-
|
318
|
-
|
292
|
+
var lDelay;
|
293
|
+
lDelay = supportAbort ? 180 : 400;
|
294
|
+
var run = function() {
|
295
|
+
var readyState = document.readyState || "";
|
296
|
+
clearTimeout(timerId), timerId = setTimeout(run, "loading" == readyState ? lDelay : 2e3),
|
297
|
+
document.body && (/d$|^c/.test(readyState) && (isWinComplete = !0, clearTimeout(timerId),
|
298
|
+
off(document, "readystatechange", run)), ri.fillImgs());
|
319
299
|
}, resizeEval = function() {
|
320
300
|
ri.fillImgs({
|
321
301
|
reevaluate: !0
|
@@ -333,6 +313,125 @@
|
|
333
313
|
});
|
334
314
|
}, window.respimage = respimage;
|
335
315
|
}(window, document);
|
316
|
+
|
317
|
+
(function( factory ) {
|
318
|
+
"use strict";
|
319
|
+
var interValId;
|
320
|
+
var intervalIndex = 0;
|
321
|
+
var run = function(){
|
322
|
+
if ( window.respimage ) {
|
323
|
+
factory( window.respimage );
|
324
|
+
}
|
325
|
+
if(window.respimage || intervalIndex > 9999){
|
326
|
+
clearInterval(interValId);
|
327
|
+
}
|
328
|
+
intervalIndex++;
|
329
|
+
};
|
330
|
+
interValId = setInterval(run, 8);
|
331
|
+
|
332
|
+
run();
|
333
|
+
|
334
|
+
}( function( respimage, undefined ) {
|
335
|
+
"use strict";
|
336
|
+
|
337
|
+
var ri = respimage._;
|
338
|
+
var knownWidths = {};
|
339
|
+
var cfg = ri.cfg;
|
340
|
+
var curSrcProp = "currentSrc";
|
341
|
+
var setSize = function(width, img, data){
|
342
|
+
var curCandidate = data.curCan;
|
343
|
+
|
344
|
+
if ( width ) {
|
345
|
+
if ( curCandidate.desc.type == "x" ) {
|
346
|
+
img.setAttribute( "width", parseInt( (width / curCandidate.res) / cfg.xQuant, 10) );
|
347
|
+
} else if ( curCandidate.desc.type == "w" ) {
|
348
|
+
img.setAttribute( "width", parseInt( curCandidate.cWidth * (width / curCandidate.desc.val), 10) );
|
349
|
+
}
|
350
|
+
}
|
351
|
+
};
|
352
|
+
var loadBg = function(url, img, data){
|
353
|
+
var bgImg;
|
354
|
+
var curCandidate;
|
355
|
+
if(knownWidths[url]){
|
356
|
+
setSize(knownWidths[url], img, data);
|
357
|
+
} else {
|
358
|
+
curCandidate = data.curCan;
|
359
|
+
if(curCandidate.desc.type == 'w'){
|
360
|
+
setSize(curCandidate.desc.val, img, data);
|
361
|
+
}
|
362
|
+
|
363
|
+
bgImg = document.createElement('img');
|
364
|
+
bgImg.onload = function(){
|
365
|
+
knownWidths[url] = bgImg.naturalWidth || bgImg.width;
|
366
|
+
if(url == img[curSrcProp]){
|
367
|
+
setSize(knownWidths[url], img, data);
|
368
|
+
}
|
369
|
+
bgImg.onload = null;
|
370
|
+
bgImg.onerror = null;
|
371
|
+
img = null;
|
372
|
+
bgImg = null;
|
373
|
+
};
|
374
|
+
bgImg.onerror = function(){
|
375
|
+
img = null;
|
376
|
+
bgImg.onload = null;
|
377
|
+
bgImg.onerror = null;
|
378
|
+
bgImg = null;
|
379
|
+
};
|
380
|
+
bgImg.src = url;
|
381
|
+
|
382
|
+
if(bgImg && bgImg.complete){
|
383
|
+
bgImg.onload();
|
384
|
+
}
|
385
|
+
}
|
386
|
+
|
387
|
+
};
|
388
|
+
var reeval = (function(){
|
389
|
+
var running, timer;
|
390
|
+
var run = function(){
|
391
|
+
running = false;
|
392
|
+
clearTimeout(timer);
|
393
|
+
respimage({reevaluate: true});
|
394
|
+
};
|
395
|
+
|
396
|
+
return function(){
|
397
|
+
if(!running && cfg.addSize){
|
398
|
+
running = true;
|
399
|
+
clearTimeout(timer);
|
400
|
+
timer = setTimeout(run, 33);
|
401
|
+
}
|
402
|
+
};
|
403
|
+
|
404
|
+
})();
|
405
|
+
|
406
|
+
if( !(curSrcProp in document.createElement("img")) ){
|
407
|
+
curSrcProp = "src";
|
408
|
+
}
|
409
|
+
|
410
|
+
cfg.addSize = true;
|
411
|
+
|
412
|
+
ri.setSize = function( img ) {
|
413
|
+
var url;
|
414
|
+
var data = img[ ri.ns ];
|
415
|
+
var curCandidate = data.curCan;
|
416
|
+
|
417
|
+
if ( data.dims === undefined ) {
|
418
|
+
data.dims = img.getAttribute( "height" ) && img.getAttribute( "width" );
|
419
|
+
}
|
420
|
+
|
421
|
+
if ( !cfg.addSize || !curCandidate || data.dims ) {return;}
|
422
|
+
url = ri.makeUrl(curCandidate.url);
|
423
|
+
if(url == img[curSrcProp]){
|
424
|
+
loadBg(url, img, data);
|
425
|
+
}
|
426
|
+
};
|
427
|
+
|
428
|
+
|
429
|
+
if(window.addEventListener){
|
430
|
+
addEventListener('resize', reeval, false);
|
431
|
+
}
|
432
|
+
respimage({reevaluate: true});
|
433
|
+
}));
|
434
|
+
|
336
435
|
(function( factory ) {
|
337
436
|
"use strict";
|
338
437
|
var interValId;
|
@@ -419,12 +518,13 @@
|
|
419
518
|
|
420
519
|
|
421
520
|
respimage.testTypeSupport("image/webp", "data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==", 1);
|
422
|
-
respimage.testTypeSupport("image/jp2 image/jpx image/jpm", "data:image/jp2;base64
|
521
|
+
respimage.testTypeSupport("image/jp2 image/jpx image/jpm", "data:image/jp2;base64,/0//UQAyAAAAAAABAAAAAgAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAEBwEBBwEBBwEBBwEB/1IADAAAAAEAAAQEAAH/XAAEQED/ZAAlAAFDcmVhdGVkIGJ5IE9wZW5KUEVHIHZlcnNpb24gMi4wLjD/kAAKAAAAAABYAAH/UwAJAQAABAQAAf9dAAUBQED/UwAJAgAABAQAAf9dAAUCQED/UwAJAwAABAQAAf9dAAUDQED/k8+kEAGvz6QQAa/PpBABr994EAk//9k=", 1);
|
423
522
|
respimage.testTypeSupport("image/vnd.ms-photo", "data:image/vnd.ms-photo;base64,SUm8AQgAAAAFAAG8AQAQAAAASgAAAIC8BAABAAAAAQAAAIG8BAABAAAAAQAAAMC8BAABAAAAWgAAAMG8BAABAAAAHwAAAAAAAAAkw91vA07+S7GFPXd2jckNV01QSE9UTwAZAYBxAAAAABP/gAAEb/8AAQAAAQAAAA==", 1);
|
424
523
|
respimage.testTypeSupport("video/png video/apng video/x-mng video/x-png", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACGFjVEwAAAABAAAAAcMq2TYAAAANSURBVAiZY2BgYPgPAAEEAQB9ssjfAAAAGmZjVEwAAAAAAAAAAQAAAAEAAAAAAAAAAAD6A+gBAbNU+2sAAAARZmRBVAAAAAEImWNgYGBgAAAABQAB6MzFdgAAAABJRU5ErkJggg==", false, true);
|
425
524
|
|
426
525
|
}));
|
427
526
|
|
527
|
+
|
428
528
|
(function(){
|
429
529
|
|
430
530
|
webshim.isReady('picture', true);
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webshims-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.15.
|
4
|
+
version: 1.15.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Reese
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -125,6 +125,7 @@ files:
|
|
125
125
|
- vendor/assets/javascripts/webshims/shims/i18n/formcfg-ja.js
|
126
126
|
- vendor/assets/javascripts/webshims/shims/i18n/formcfg-lt.js
|
127
127
|
- vendor/assets/javascripts/webshims/shims/i18n/formcfg-nl.js
|
128
|
+
- vendor/assets/javascripts/webshims/shims/i18n/formcfg-no.js
|
128
129
|
- vendor/assets/javascripts/webshims/shims/i18n/formcfg-pl.js
|
129
130
|
- vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt-BR.js
|
130
131
|
- vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt-PT.js
|
@@ -224,7 +225,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
224
225
|
version: '0'
|
225
226
|
requirements: []
|
226
227
|
rubyforge_project: webshims-rails
|
227
|
-
rubygems_version: 2.
|
228
|
+
rubygems_version: 2.4.2
|
228
229
|
signing_key:
|
229
230
|
specification_version: 4
|
230
231
|
summary: Webshims lib packaged as a Rails engine
|