webshims-rails 1.15.4 → 1.15.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|