lookbook 1.0.0.beta.5 → 1.0.0.beta.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +29 -254
- data/app/assets/lookbook/css/lookbook.css +1 -1
- data/app/assets/lookbook/css/themes/blue.css +58 -37
- data/app/assets/lookbook/css/themes/indigo.css +58 -37
- data/app/assets/lookbook/css/themes/zinc.css +58 -37
- data/app/assets/lookbook/css/tooltip.css +5 -5
- data/app/components/lookbook/base_component.rb +0 -1
- data/app/components/lookbook/button/component.html.erb +2 -2
- data/app/components/lookbook/embed/component.html.erb +5 -5
- data/app/components/lookbook/embed/component.rb +8 -0
- data/app/components/lookbook/filter/component.html.erb +1 -1
- data/app/components/lookbook/header/component.html.erb +1 -1
- data/app/components/lookbook/inspector_panel/component.css +5 -0
- data/app/components/lookbook/inspector_panel/component.html.erb +6 -0
- data/app/components/lookbook/inspector_panel/component.rb +36 -0
- data/app/components/lookbook/nav/component.rb +1 -2
- data/app/components/lookbook/nav/item/component.html.erb +1 -1
- data/app/components/lookbook/params_editor/field/component.rb +2 -1
- data/app/components/lookbook/prose/component.html.erb +1 -1
- data/app/components/lookbook/tab_panels/component.rb +1 -1
- data/app/components/lookbook/tab_panels/panel/component.rb +2 -2
- data/app/components/lookbook/tabs/dropdown_tab/component.html.erb +1 -1
- data/app/components/lookbook/tabs/tab/component.html.erb +1 -1
- data/app/components/lookbook/tag_component.rb +1 -1
- data/app/components/lookbook/toolbar/component.html.erb +1 -1
- data/app/components/lookbook/viewport/component.css +1 -1
- data/app/components/lookbook/viewport/component.html.erb +1 -1
- data/app/controllers/lookbook/application_controller.rb +1 -1
- data/app/controllers/lookbook/pages_controller.rb +1 -0
- data/app/controllers/lookbook/previews_controller.rb +21 -9
- data/app/helpers/lookbook/application_helper.rb +9 -6
- data/app/helpers/lookbook/preview_helper.rb +2 -3
- data/app/views/layouts/lookbook/application.html.erb +1 -1
- data/app/views/layouts/lookbook/page.html.erb +2 -2
- data/app/views/layouts/lookbook/shell.html.erb +6 -0
- data/app/views/layouts/lookbook/skeleton.html.erb +15 -14
- data/app/views/lookbook/previews/panels/_content.html.erb +1 -1
- data/app/views/lookbook/previews/panels/_notes.html.erb +2 -2
- data/app/views/lookbook/previews/panels/_params.html.erb +1 -1
- data/app/views/lookbook/previews/show.html.erb +7 -5
- data/lib/lookbook/code_formatter.rb +1 -1
- data/lib/lookbook/collection.rb +1 -1
- data/lib/lookbook/component.rb +2 -3
- data/lib/lookbook/config.rb +68 -46
- data/lib/lookbook/data.rb +11 -0
- data/lib/lookbook/engine.rb +64 -68
- data/lib/lookbook/entity.rb +1 -1
- data/lib/lookbook/hooks.rb +21 -0
- data/lib/lookbook/markdown.rb +1 -1
- data/lib/lookbook/page.rb +4 -5
- data/lib/lookbook/page_section.rb +2 -4
- data/lib/lookbook/panels.rb +15 -0
- data/lib/lookbook/params.rb +12 -0
- data/lib/lookbook/parser.rb +4 -1
- data/lib/lookbook/preview.rb +9 -11
- data/lib/lookbook/preview_example.rb +1 -1
- data/lib/lookbook/preview_group.rb +8 -0
- data/lib/lookbook/source_inspector.rb +9 -0
- data/lib/lookbook/store.rb +14 -2
- data/lib/lookbook/tag.rb +112 -0
- data/lib/lookbook/tags.rb +22 -0
- data/lib/lookbook/theme.rb +38 -9
- data/lib/lookbook/version.rb +1 -1
- data/lib/lookbook.rb +1 -0
- data/lib/tasks/lookbook_tasks.rake +1 -2
- data/public/lookbook-assets/css/lookbook.css +307 -150
- data/public/lookbook-assets/css/lookbook.css.map +1 -1
- data/public/lookbook-assets/css/themes/blue.css +57 -36
- data/public/lookbook-assets/css/themes/blue.css.map +1 -1
- data/public/lookbook-assets/css/themes/indigo.css +57 -36
- data/public/lookbook-assets/css/themes/indigo.css.map +1 -1
- data/public/lookbook-assets/css/themes/zinc.css +57 -36
- data/public/lookbook-assets/css/themes/zinc.css.map +1 -1
- data/public/lookbook-assets/js/embed.js +193 -193
- data/public/lookbook-assets/js/lookbook.js +1151 -1308
- data/public/lookbook-assets/js/lookbook.js.map +1 -1
- metadata +12 -4
@@ -1,24 +1,24 @@
|
|
1
1
|
(() => {
|
2
2
|
var $b2e1fd3e30ab1f5c$exports = {};
|
3
3
|
(function(undefined) {
|
4
|
-
if (typeof window ===
|
5
|
-
var autoResize = true, base = 10, bodyBackground =
|
4
|
+
if (typeof window === "undefined") return; // don't run for server side render
|
5
|
+
var autoResize = true, base = 10, bodyBackground = "", bodyMargin = 0, bodyMarginStr = "", bodyObserver = null, bodyPadding = "", calculateWidth = false, doubleEventList = {
|
6
6
|
resize: 1,
|
7
7
|
click: 1
|
8
|
-
}, eventCancelTimer = 128, firstRun = true, height1 = 1, heightCalcModeDefault =
|
8
|
+
}, eventCancelTimer = 128, firstRun = true, height1 = 1, heightCalcModeDefault = "bodyOffset", heightCalcMode = heightCalcModeDefault, initLock = true, initMsg = "", inPageLinks = {}, interval = 32, intervalTimer = null, logging = false, mouseEvents = false, msgID = "[iFrameSizer]", msgIdLen = msgID.length, myID = "", resetRequiredMethods = {
|
9
9
|
max: 1,
|
10
10
|
min: 1,
|
11
11
|
bodyScroll: 1,
|
12
12
|
documentElementScroll: 1
|
13
|
-
}, resizeFrom =
|
14
|
-
warn(
|
13
|
+
}, resizeFrom = "child", sendPermit = true, target1 = window.parent, targetOriginDefault = "*", tolerance = 0, triggerLocked = false, triggerLockedTimer = null, throttledTimer = 16, width1 = 1, widthCalcModeDefault = "scroll", widthCalcMode = widthCalcModeDefault, win = window, onMessage = function() {
|
14
|
+
warn("onMessage function not defined");
|
15
15
|
}, onReady = function() {}, onPageInfo = function() {}, customCalcMethods = {
|
16
16
|
height: function() {
|
17
|
-
warn(
|
17
|
+
warn("Custom height calculation function not defined");
|
18
18
|
return document.documentElement.offsetHeight;
|
19
19
|
},
|
20
20
|
width: function() {
|
21
|
-
warn(
|
21
|
+
warn("Custom width calculation function not defined");
|
22
22
|
return document.body.scrollWidth;
|
23
23
|
}
|
24
24
|
}, eventHandlersByName = {}, passiveSupported = false;
|
@@ -31,8 +31,8 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
31
31
|
}
|
32
32
|
}
|
33
33
|
});
|
34
|
-
window.addEventListener(
|
35
|
-
window.removeEventListener(
|
34
|
+
window.addEventListener("test", noop, options);
|
35
|
+
window.removeEventListener("test", noop, options);
|
36
36
|
} catch (error) {
|
37
37
|
/* */ }
|
38
38
|
function addEventListener(el, evt, func, options) {
|
@@ -73,23 +73,23 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
73
73
|
};
|
74
74
|
}
|
75
75
|
function formatLogMsg(msg) {
|
76
|
-
return msgID +
|
76
|
+
return msgID + "[" + myID + "] " + msg;
|
77
77
|
}
|
78
78
|
function log(msg) {
|
79
|
-
if (logging &&
|
79
|
+
if (logging && "object" === typeof window.console) // eslint-disable-next-line no-console
|
80
80
|
console.log(formatLogMsg(msg));
|
81
81
|
}
|
82
82
|
function warn(msg) {
|
83
|
-
if (
|
83
|
+
if ("object" === typeof window.console) // eslint-disable-next-line no-console
|
84
84
|
console.warn(formatLogMsg(msg));
|
85
85
|
}
|
86
86
|
function init() {
|
87
87
|
readDataFromParent();
|
88
|
-
log(
|
88
|
+
log("Initialising iFrame (" + window.location.href + ")");
|
89
89
|
readDataFromPage();
|
90
90
|
setMargin();
|
91
|
-
setBodyStyle(
|
92
|
-
setBodyStyle(
|
91
|
+
setBodyStyle("background", bodyBackground);
|
92
|
+
setBodyStyle("padding", bodyPadding);
|
93
93
|
injectClearFixIntoBodyElement();
|
94
94
|
checkHeightMode();
|
95
95
|
checkWidthMode();
|
@@ -98,14 +98,14 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
98
98
|
setupMouseEvents();
|
99
99
|
startEventListeners();
|
100
100
|
inPageLinks = setupInPageLinks();
|
101
|
-
sendSize(
|
101
|
+
sendSize("init", "Init message from host page");
|
102
102
|
onReady();
|
103
103
|
}
|
104
104
|
function readDataFromParent() {
|
105
105
|
function strBool(str) {
|
106
|
-
return
|
106
|
+
return "true" === str;
|
107
107
|
}
|
108
|
-
var data = initMsg.substr(msgIdLen).split(
|
108
|
+
var data = initMsg.substr(msgIdLen).split(":");
|
109
109
|
myID = data[0];
|
110
110
|
bodyMargin = undefined !== data[1] ? Number(data[1]) : bodyMargin // For V1 compatibility
|
111
111
|
;
|
@@ -124,9 +124,9 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
124
124
|
mouseEvents = undefined !== data[15] ? Boolean(data[15]) : mouseEvents;
|
125
125
|
}
|
126
126
|
function depricate(key) {
|
127
|
-
var splitName = key.split(
|
127
|
+
var splitName = key.split("Callback");
|
128
128
|
if (splitName.length === 2) {
|
129
|
-
var name =
|
129
|
+
var name = "on" + splitName[0].charAt(0).toUpperCase() + splitName[0].slice(1);
|
130
130
|
this[name] = this[key];
|
131
131
|
delete this[key];
|
132
132
|
warn("Deprecated: '" + key + "' has been renamed '" + name + "'. The old method will be removed in the next major version.");
|
@@ -135,50 +135,50 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
135
135
|
function readDataFromPage() {
|
136
136
|
function readData() {
|
137
137
|
var data = window.iFrameResizer;
|
138
|
-
log(
|
138
|
+
log("Reading data from page: " + JSON.stringify(data));
|
139
139
|
Object.keys(data).forEach(depricate, data);
|
140
|
-
onMessage =
|
141
|
-
onReady =
|
142
|
-
targetOriginDefault =
|
143
|
-
heightCalcMode =
|
144
|
-
widthCalcMode =
|
140
|
+
onMessage = "onMessage" in data ? data.onMessage : onMessage;
|
141
|
+
onReady = "onReady" in data ? data.onReady : onReady;
|
142
|
+
targetOriginDefault = "targetOrigin" in data ? data.targetOrigin : targetOriginDefault;
|
143
|
+
heightCalcMode = "heightCalculationMethod" in data ? data.heightCalculationMethod : heightCalcMode;
|
144
|
+
widthCalcMode = "widthCalculationMethod" in data ? data.widthCalculationMethod : widthCalcMode;
|
145
145
|
}
|
146
146
|
function setupCustomCalcMethods(calcMode, calcFunc) {
|
147
|
-
if (
|
148
|
-
log(
|
147
|
+
if ("function" === typeof calcMode) {
|
148
|
+
log("Setup custom " + calcFunc + "CalcMethod");
|
149
149
|
customCalcMethods[calcFunc] = calcMode;
|
150
|
-
calcMode =
|
150
|
+
calcMode = "custom";
|
151
151
|
}
|
152
152
|
return calcMode;
|
153
153
|
}
|
154
|
-
if (
|
154
|
+
if ("iFrameResizer" in window && Object === window.iFrameResizer.constructor) {
|
155
155
|
readData();
|
156
|
-
heightCalcMode = setupCustomCalcMethods(heightCalcMode,
|
157
|
-
widthCalcMode = setupCustomCalcMethods(widthCalcMode,
|
156
|
+
heightCalcMode = setupCustomCalcMethods(heightCalcMode, "height");
|
157
|
+
widthCalcMode = setupCustomCalcMethods(widthCalcMode, "width");
|
158
158
|
}
|
159
|
-
log(
|
159
|
+
log("TargetOrigin for parent set to: " + targetOriginDefault);
|
160
160
|
}
|
161
161
|
function chkCSS(attr, value) {
|
162
|
-
if (-1 !== value.indexOf(
|
163
|
-
warn(
|
164
|
-
value =
|
162
|
+
if (-1 !== value.indexOf("-")) {
|
163
|
+
warn("Negative CSS value ignored for " + attr);
|
164
|
+
value = "";
|
165
165
|
}
|
166
166
|
return value;
|
167
167
|
}
|
168
168
|
function setBodyStyle(attr, value) {
|
169
|
-
if (undefined !== value &&
|
169
|
+
if (undefined !== value && "" !== value && "null" !== value) {
|
170
170
|
document.body.style[attr] = value;
|
171
|
-
log(
|
171
|
+
log("Body " + attr + ' set to "' + value + '"');
|
172
172
|
}
|
173
173
|
}
|
174
174
|
function setMargin() {
|
175
175
|
// If called via V1 script, convert bodyMargin from int to str
|
176
|
-
if (undefined === bodyMarginStr) bodyMarginStr = bodyMargin +
|
177
|
-
setBodyStyle(
|
176
|
+
if (undefined === bodyMarginStr) bodyMarginStr = bodyMargin + "px";
|
177
|
+
setBodyStyle("margin", chkCSS("margin", bodyMarginStr));
|
178
178
|
}
|
179
179
|
function stopInfiniteResizingOfIFrame() {
|
180
|
-
document.documentElement.style.height =
|
181
|
-
document.body.style.height =
|
180
|
+
document.documentElement.style.height = "";
|
181
|
+
document.body.style.height = "";
|
182
182
|
log('HTML & body height set to "auto"');
|
183
183
|
}
|
184
184
|
function manageTriggerEvent(options) {
|
@@ -202,124 +202,124 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
202
202
|
options.eventName = options.eventNames[0];
|
203
203
|
options.eventNames.map(listener[options.method]);
|
204
204
|
} else listener[options.method](options.eventName);
|
205
|
-
log(capitalizeFirstLetter(options.method) +
|
205
|
+
log(capitalizeFirstLetter(options.method) + " event listener: " + options.eventType);
|
206
206
|
}
|
207
207
|
function manageEventListeners(method) {
|
208
208
|
manageTriggerEvent({
|
209
209
|
method: method,
|
210
|
-
eventType:
|
210
|
+
eventType: "Animation Start",
|
211
211
|
eventNames: [
|
212
|
-
|
213
|
-
|
212
|
+
"animationstart",
|
213
|
+
"webkitAnimationStart"
|
214
214
|
]
|
215
215
|
});
|
216
216
|
manageTriggerEvent({
|
217
217
|
method: method,
|
218
|
-
eventType:
|
218
|
+
eventType: "Animation Iteration",
|
219
219
|
eventNames: [
|
220
|
-
|
221
|
-
|
220
|
+
"animationiteration",
|
221
|
+
"webkitAnimationIteration"
|
222
222
|
]
|
223
223
|
});
|
224
224
|
manageTriggerEvent({
|
225
225
|
method: method,
|
226
|
-
eventType:
|
226
|
+
eventType: "Animation End",
|
227
227
|
eventNames: [
|
228
|
-
|
229
|
-
|
228
|
+
"animationend",
|
229
|
+
"webkitAnimationEnd"
|
230
230
|
]
|
231
231
|
});
|
232
232
|
manageTriggerEvent({
|
233
233
|
method: method,
|
234
|
-
eventType:
|
235
|
-
eventName:
|
234
|
+
eventType: "Input",
|
235
|
+
eventName: "input"
|
236
236
|
});
|
237
237
|
manageTriggerEvent({
|
238
238
|
method: method,
|
239
|
-
eventType:
|
240
|
-
eventName:
|
239
|
+
eventType: "Mouse Up",
|
240
|
+
eventName: "mouseup"
|
241
241
|
});
|
242
242
|
manageTriggerEvent({
|
243
243
|
method: method,
|
244
|
-
eventType:
|
245
|
-
eventName:
|
244
|
+
eventType: "Mouse Down",
|
245
|
+
eventName: "mousedown"
|
246
246
|
});
|
247
247
|
manageTriggerEvent({
|
248
248
|
method: method,
|
249
|
-
eventType:
|
250
|
-
eventName:
|
249
|
+
eventType: "Orientation Change",
|
250
|
+
eventName: "orientationchange"
|
251
251
|
});
|
252
252
|
manageTriggerEvent({
|
253
253
|
method: method,
|
254
|
-
eventType:
|
254
|
+
eventType: "Print",
|
255
255
|
eventName: [
|
256
|
-
|
257
|
-
|
256
|
+
"afterprint",
|
257
|
+
"beforeprint"
|
258
258
|
]
|
259
259
|
});
|
260
260
|
manageTriggerEvent({
|
261
261
|
method: method,
|
262
|
-
eventType:
|
263
|
-
eventName:
|
262
|
+
eventType: "Ready State Change",
|
263
|
+
eventName: "readystatechange"
|
264
264
|
});
|
265
265
|
manageTriggerEvent({
|
266
266
|
method: method,
|
267
|
-
eventType:
|
268
|
-
eventName:
|
267
|
+
eventType: "Touch Start",
|
268
|
+
eventName: "touchstart"
|
269
269
|
});
|
270
270
|
manageTriggerEvent({
|
271
271
|
method: method,
|
272
|
-
eventType:
|
273
|
-
eventName:
|
272
|
+
eventType: "Touch End",
|
273
|
+
eventName: "touchend"
|
274
274
|
});
|
275
275
|
manageTriggerEvent({
|
276
276
|
method: method,
|
277
|
-
eventType:
|
278
|
-
eventName:
|
277
|
+
eventType: "Touch Cancel",
|
278
|
+
eventName: "touchcancel"
|
279
279
|
});
|
280
280
|
manageTriggerEvent({
|
281
281
|
method: method,
|
282
|
-
eventType:
|
282
|
+
eventType: "Transition Start",
|
283
283
|
eventNames: [
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
284
|
+
"transitionstart",
|
285
|
+
"webkitTransitionStart",
|
286
|
+
"MSTransitionStart",
|
287
|
+
"oTransitionStart",
|
288
|
+
"otransitionstart"
|
289
289
|
]
|
290
290
|
});
|
291
291
|
manageTriggerEvent({
|
292
292
|
method: method,
|
293
|
-
eventType:
|
293
|
+
eventType: "Transition Iteration",
|
294
294
|
eventNames: [
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
295
|
+
"transitioniteration",
|
296
|
+
"webkitTransitionIteration",
|
297
|
+
"MSTransitionIteration",
|
298
|
+
"oTransitionIteration",
|
299
|
+
"otransitioniteration"
|
300
300
|
]
|
301
301
|
});
|
302
302
|
manageTriggerEvent({
|
303
303
|
method: method,
|
304
|
-
eventType:
|
304
|
+
eventType: "Transition End",
|
305
305
|
eventNames: [
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
306
|
+
"transitionend",
|
307
|
+
"webkitTransitionEnd",
|
308
|
+
"MSTransitionEnd",
|
309
|
+
"oTransitionEnd",
|
310
|
+
"otransitionend"
|
311
311
|
]
|
312
312
|
});
|
313
|
-
if (
|
313
|
+
if ("child" === resizeFrom) manageTriggerEvent({
|
314
314
|
method: method,
|
315
|
-
eventType:
|
316
|
-
eventName:
|
315
|
+
eventType: "IFrame Resized",
|
316
|
+
eventName: "resize"
|
317
317
|
});
|
318
318
|
}
|
319
319
|
function checkCalcMode(calcMode, calcModeDefault, modes, type) {
|
320
320
|
if (calcModeDefault !== calcMode) {
|
321
321
|
if (!(calcMode in modes)) {
|
322
|
-
warn(calcMode +
|
322
|
+
warn(calcMode + " is not a valid option for " + type + "CalculationMethod.");
|
323
323
|
calcMode = calcModeDefault;
|
324
324
|
}
|
325
325
|
log(type + ' calculation method set to "' + calcMode + '"');
|
@@ -327,16 +327,16 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
327
327
|
return calcMode;
|
328
328
|
}
|
329
329
|
function checkHeightMode() {
|
330
|
-
heightCalcMode = checkCalcMode(heightCalcMode, heightCalcModeDefault, getHeight,
|
330
|
+
heightCalcMode = checkCalcMode(heightCalcMode, heightCalcModeDefault, getHeight, "height");
|
331
331
|
}
|
332
332
|
function checkWidthMode() {
|
333
|
-
widthCalcMode = checkCalcMode(widthCalcMode, widthCalcModeDefault, getWidth,
|
333
|
+
widthCalcMode = checkCalcMode(widthCalcMode, widthCalcModeDefault, getWidth, "width");
|
334
334
|
}
|
335
335
|
function startEventListeners() {
|
336
336
|
if (true === autoResize) {
|
337
|
-
manageEventListeners(
|
337
|
+
manageEventListeners("add");
|
338
338
|
setupMutationObserver();
|
339
|
-
} else log(
|
339
|
+
} else log("Auto Resize disabled");
|
340
340
|
}
|
341
341
|
// function stopMsgsToParent() {
|
342
342
|
// log('Disable outgoing messages')
|
@@ -351,7 +351,7 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
351
351
|
bodyObserver.disconnect();
|
352
352
|
}
|
353
353
|
function stopEventListeners() {
|
354
|
-
manageEventListeners(
|
354
|
+
manageEventListeners("remove");
|
355
355
|
disconnectMutationObserver();
|
356
356
|
clearInterval(intervalTimer);
|
357
357
|
}
|
@@ -361,11 +361,11 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
361
361
|
// if (true === autoResize) stopEventListeners()
|
362
362
|
// }
|
363
363
|
function injectClearFixIntoBodyElement() {
|
364
|
-
var clearFix = document.createElement(
|
365
|
-
clearFix.style.clear =
|
364
|
+
var clearFix = document.createElement("div");
|
365
|
+
clearFix.style.clear = "both";
|
366
366
|
// Guard against the following having been globally redefined in CSS.
|
367
|
-
clearFix.style.display =
|
368
|
-
clearFix.style.height =
|
367
|
+
clearFix.style.display = "block";
|
368
|
+
clearFix.style.height = "0";
|
369
369
|
document.body.appendChild(clearFix);
|
370
370
|
}
|
371
371
|
function setupInPageLinks() {
|
@@ -385,34 +385,34 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
385
385
|
function findTarget(location) {
|
386
386
|
function jumpToTarget(target) {
|
387
387
|
var jumpPosition = getElementPosition(target);
|
388
|
-
log(
|
389
|
-
sendMsg(jumpPosition.y, jumpPosition.x,
|
388
|
+
log("Moving to in page link (#" + hash + ") at x: " + jumpPosition.x + " y: " + jumpPosition.y);
|
389
|
+
sendMsg(jumpPosition.y, jumpPosition.x, "scrollToOffset") // X&Y reversed at sendMsg uses height/width
|
390
390
|
;
|
391
391
|
}
|
392
|
-
var hash = location.split(
|
392
|
+
var hash = location.split("#")[1] || location, hashData = decodeURIComponent(hash), target2 = document.getElementById(hashData) || document.getElementsByName(hashData)[0];
|
393
393
|
if (undefined !== target2) jumpToTarget(target2);
|
394
394
|
else {
|
395
|
-
log(
|
396
|
-
sendMsg(0, 0,
|
395
|
+
log("In page link (#" + hash + ") not found in iFrame, so sending to parent");
|
396
|
+
sendMsg(0, 0, "inPageLink", "#" + hash);
|
397
397
|
}
|
398
398
|
}
|
399
399
|
function checkLocationHash() {
|
400
400
|
var hash = window.location.hash;
|
401
401
|
var href = window.location.href;
|
402
|
-
if (
|
402
|
+
if ("" !== hash && "#" !== hash) findTarget(href);
|
403
403
|
}
|
404
404
|
function bindAnchors() {
|
405
405
|
function setupLink(el) {
|
406
406
|
function linkClicked(e) {
|
407
407
|
e.preventDefault();
|
408
|
-
/* jshint validthis:true */ findTarget(this.getAttribute(
|
408
|
+
/* jshint validthis:true */ findTarget(this.getAttribute("href"));
|
409
409
|
}
|
410
|
-
if (
|
410
|
+
if ("#" !== el.getAttribute("href")) addEventListener(el, "click", linkClicked);
|
411
411
|
}
|
412
412
|
Array.prototype.forEach.call(document.querySelectorAll('a[href^="#"]'), setupLink);
|
413
413
|
}
|
414
414
|
function bindLocationHash() {
|
415
|
-
addEventListener(window,
|
415
|
+
addEventListener(window, "hashchange", checkLocationHash);
|
416
416
|
}
|
417
417
|
function initCheck() {
|
418
418
|
// Check if page loaded with location hash after init resize
|
@@ -421,14 +421,14 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
421
421
|
function enableInPageLinks() {
|
422
422
|
/* istanbul ignore else */ // Not testable in phantonJS
|
423
423
|
if (Array.prototype.forEach && document.querySelectorAll) {
|
424
|
-
log(
|
424
|
+
log("Setting up location.hash handlers");
|
425
425
|
bindAnchors();
|
426
426
|
bindLocationHash();
|
427
427
|
initCheck();
|
428
|
-
} else warn(
|
428
|
+
} else warn("In page linking not fully supported in this browser! (See README.md for IE8 workaround)");
|
429
429
|
}
|
430
430
|
if (inPageLinks.enable) enableInPageLinks();
|
431
|
-
else log(
|
431
|
+
else log("In page linking not enabled");
|
432
432
|
return {
|
433
433
|
findTarget: findTarget
|
434
434
|
};
|
@@ -436,17 +436,17 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
436
436
|
function setupMouseEvents() {
|
437
437
|
if (mouseEvents !== true) return;
|
438
438
|
function sendMouse(e) {
|
439
|
-
sendMsg(0, 0, e.type, e.screenY +
|
439
|
+
sendMsg(0, 0, e.type, e.screenY + ":" + e.screenX);
|
440
440
|
}
|
441
441
|
function addMouseListener(evt, name) {
|
442
|
-
log(
|
442
|
+
log("Add event listener: " + name);
|
443
443
|
addEventListener(window.document, evt, sendMouse);
|
444
444
|
}
|
445
|
-
addMouseListener(
|
446
|
-
addMouseListener(
|
445
|
+
addMouseListener("mouseenter", "Mouse Enter");
|
446
|
+
addMouseListener("mouseleave", "Mouse Leave");
|
447
447
|
}
|
448
448
|
function setupPublicMethods() {
|
449
|
-
log(
|
449
|
+
log("Enable public methods");
|
450
450
|
win.parentIFrame = {
|
451
451
|
autoResize: function autoResizeF(resize) {
|
452
452
|
if (true === resize && false === autoResize) {
|
@@ -456,41 +456,41 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
456
456
|
autoResize = false;
|
457
457
|
stopEventListeners();
|
458
458
|
}
|
459
|
-
sendMsg(0, 0,
|
459
|
+
sendMsg(0, 0, "autoResize", JSON.stringify(autoResize));
|
460
460
|
return autoResize;
|
461
461
|
},
|
462
462
|
close: function closeF() {
|
463
|
-
sendMsg(0, 0,
|
463
|
+
sendMsg(0, 0, "close");
|
464
464
|
// teardown()
|
465
465
|
},
|
466
466
|
getId: function getIdF() {
|
467
467
|
return myID;
|
468
468
|
},
|
469
469
|
getPageInfo: function getPageInfoF(callback) {
|
470
|
-
if (
|
470
|
+
if ("function" === typeof callback) {
|
471
471
|
onPageInfo = callback;
|
472
|
-
sendMsg(0, 0,
|
472
|
+
sendMsg(0, 0, "pageInfo");
|
473
473
|
} else {
|
474
474
|
onPageInfo = function() {};
|
475
|
-
sendMsg(0, 0,
|
475
|
+
sendMsg(0, 0, "pageInfoStop");
|
476
476
|
}
|
477
477
|
},
|
478
478
|
moveToAnchor: function moveToAnchorF(hash) {
|
479
479
|
inPageLinks.findTarget(hash);
|
480
480
|
},
|
481
481
|
reset: function resetF() {
|
482
|
-
resetIFrame(
|
482
|
+
resetIFrame("parentIFrame.reset");
|
483
483
|
},
|
484
484
|
scrollTo: function scrollToF(x, y) {
|
485
|
-
sendMsg(y, x,
|
485
|
+
sendMsg(y, x, "scrollTo") // X&Y reversed at sendMsg uses height/width
|
486
486
|
;
|
487
487
|
},
|
488
488
|
scrollToOffset: function scrollToF(x, y) {
|
489
|
-
sendMsg(y, x,
|
489
|
+
sendMsg(y, x, "scrollToOffset") // X&Y reversed at sendMsg uses height/width
|
490
490
|
;
|
491
491
|
},
|
492
492
|
sendMessage: function sendMessageF(msg, targetOrigin) {
|
493
|
-
sendMsg(0, 0,
|
493
|
+
sendMsg(0, 0, "message", JSON.stringify(msg), targetOrigin);
|
494
494
|
},
|
495
495
|
setHeightCalculationMethod: function setHeightCalculationMethodF(heightCalculationMethod) {
|
496
496
|
heightCalcMode = heightCalculationMethod;
|
@@ -501,20 +501,20 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
501
501
|
checkWidthMode();
|
502
502
|
},
|
503
503
|
setTargetOrigin: function setTargetOriginF(targetOrigin) {
|
504
|
-
log(
|
504
|
+
log("Set targetOrigin: " + targetOrigin);
|
505
505
|
targetOriginDefault = targetOrigin;
|
506
506
|
},
|
507
507
|
size: function sizeF(customHeight, customWidth) {
|
508
|
-
var valString =
|
509
|
-
sendSize(
|
508
|
+
var valString = "" + (customHeight || "") + (customWidth ? "," + customWidth : "");
|
509
|
+
sendSize("size", "parentIFrame.size(" + valString + ")", customHeight, customWidth);
|
510
510
|
}
|
511
511
|
};
|
512
512
|
}
|
513
513
|
function initInterval() {
|
514
514
|
if (0 !== interval) {
|
515
|
-
log(
|
515
|
+
log("setInterval: " + interval + "ms");
|
516
516
|
intervalTimer = setInterval(function() {
|
517
|
-
sendSize(
|
517
|
+
sendSize("interval", "setInterval: " + interval);
|
518
518
|
}, Math.abs(interval));
|
519
519
|
}
|
520
520
|
}
|
@@ -523,41 +523,41 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
523
523
|
function addImageLoadListners(mutation) {
|
524
524
|
function addImageLoadListener(element) {
|
525
525
|
if (false === element.complete) {
|
526
|
-
log(
|
527
|
-
element.addEventListener(
|
528
|
-
element.addEventListener(
|
526
|
+
log("Attach listeners to " + element.src);
|
527
|
+
element.addEventListener("load", imageLoaded, false);
|
528
|
+
element.addEventListener("error", imageError, false);
|
529
529
|
elements.push(element);
|
530
530
|
}
|
531
531
|
}
|
532
|
-
if (mutation.type ===
|
533
|
-
else if (mutation.type ===
|
532
|
+
if (mutation.type === "attributes" && mutation.attributeName === "src") addImageLoadListener(mutation.target);
|
533
|
+
else if (mutation.type === "childList") Array.prototype.forEach.call(mutation.target.querySelectorAll("img"), addImageLoadListener);
|
534
534
|
}
|
535
535
|
function removeFromArray(element) {
|
536
536
|
elements.splice(elements.indexOf(element), 1);
|
537
537
|
}
|
538
538
|
function removeImageLoadListener(element) {
|
539
|
-
log(
|
540
|
-
element.removeEventListener(
|
541
|
-
element.removeEventListener(
|
539
|
+
log("Remove listeners from " + element.src);
|
540
|
+
element.removeEventListener("load", imageLoaded, false);
|
541
|
+
element.removeEventListener("error", imageError, false);
|
542
542
|
removeFromArray(element);
|
543
543
|
}
|
544
544
|
function imageEventTriggered(event, type, typeDesc) {
|
545
545
|
removeImageLoadListener(event.target);
|
546
|
-
sendSize(type, typeDesc +
|
546
|
+
sendSize(type, typeDesc + ": " + event.target.src);
|
547
547
|
}
|
548
548
|
function imageLoaded(event) {
|
549
|
-
imageEventTriggered(event,
|
549
|
+
imageEventTriggered(event, "imageLoad", "Image loaded");
|
550
550
|
}
|
551
551
|
function imageError(event) {
|
552
|
-
imageEventTriggered(event,
|
552
|
+
imageEventTriggered(event, "imageLoadFailed", "Image load failed");
|
553
553
|
}
|
554
554
|
function mutationObserved(mutations) {
|
555
|
-
sendSize(
|
555
|
+
sendSize("mutationObserver", "mutationObserver: " + mutations[0].target + " " + mutations[0].type);
|
556
556
|
// Deal with WebKit / Blink asyncing image loading when tags are injected into the page
|
557
557
|
mutations.forEach(addImageLoadListners);
|
558
558
|
}
|
559
559
|
function createMutationObserver() {
|
560
|
-
var target = document.querySelector(
|
560
|
+
var target = document.querySelector("body"), config = {
|
561
561
|
attributes: true,
|
562
562
|
attributeOldValue: false,
|
563
563
|
characterData: true,
|
@@ -566,15 +566,15 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
566
566
|
subtree: true
|
567
567
|
};
|
568
568
|
observer = new MutationObserver(mutationObserved);
|
569
|
-
log(
|
569
|
+
log("Create body MutationObserver");
|
570
570
|
observer.observe(target, config);
|
571
571
|
return observer;
|
572
572
|
}
|
573
573
|
var elements = [], MutationObserver = window.MutationObserver || window.WebKitMutationObserver, observer = createMutationObserver();
|
574
574
|
return {
|
575
575
|
disconnect: function() {
|
576
|
-
if (
|
577
|
-
log(
|
576
|
+
if ("disconnect" in observer) {
|
577
|
+
log("Disconnect body MutationObserver");
|
578
578
|
observer.disconnect();
|
579
579
|
elements.forEach(removeImageLoadListener);
|
580
580
|
}
|
@@ -588,7 +588,7 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
588
588
|
if (forceIntervalTimer) initInterval();
|
589
589
|
else bodyObserver = setupBodyMutationObserver();
|
590
590
|
} else {
|
591
|
-
log(
|
591
|
+
log("MutationObserver not supported in this browser!");
|
592
592
|
initInterval();
|
593
593
|
}
|
594
594
|
}
|
@@ -605,19 +605,19 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
605
605
|
function chkEventThottle(timer) {
|
606
606
|
if (timer > throttledTimer / 2) {
|
607
607
|
throttledTimer = 2 * timer;
|
608
|
-
log(
|
608
|
+
log("Event throttle increased to " + throttledTimer + "ms");
|
609
609
|
}
|
610
610
|
}
|
611
611
|
// Idea from https://github.com/guardian/iframe-messenger
|
612
612
|
function getMaxElement(side, elements) {
|
613
613
|
var elementsLength = elements.length, elVal = 0, maxVal = 0, Side = capitalizeFirstLetter(side), timer = Date.now();
|
614
614
|
for(var i = 0; i < elementsLength; i++){
|
615
|
-
elVal = elements[i].getBoundingClientRect()[side] + getComputedStyle(
|
615
|
+
elVal = elements[i].getBoundingClientRect()[side] + getComputedStyle("margin" + Side, elements[i]);
|
616
616
|
if (elVal > maxVal) maxVal = elVal;
|
617
617
|
}
|
618
618
|
timer = Date.now() - timer;
|
619
|
-
log(
|
620
|
-
log(
|
619
|
+
log("Parsed " + elementsLength + " HTML elements");
|
620
|
+
log("Element position calculated in " + timer + "ms");
|
621
621
|
chkEventThottle(timer);
|
622
622
|
return maxVal;
|
623
623
|
}
|
@@ -631,19 +631,19 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
631
631
|
}
|
632
632
|
function getTaggedElements(side, tag) {
|
633
633
|
function noTaggedElementsFound() {
|
634
|
-
warn(
|
635
|
-
return document.querySelectorAll(
|
634
|
+
warn("No tagged elements (" + tag + ") found on page");
|
635
|
+
return document.querySelectorAll("body *");
|
636
636
|
}
|
637
|
-
var elements = document.querySelectorAll(
|
637
|
+
var elements = document.querySelectorAll("[" + tag + "]");
|
638
638
|
if (elements.length === 0) noTaggedElementsFound();
|
639
639
|
return getMaxElement(side, elements);
|
640
640
|
}
|
641
641
|
function getAllElements() {
|
642
|
-
return document.querySelectorAll(
|
642
|
+
return document.querySelectorAll("body *");
|
643
643
|
}
|
644
644
|
var getHeight = {
|
645
645
|
bodyOffset: function getBodyOffsetHeight() {
|
646
|
-
return document.body.offsetHeight + getComputedStyle(
|
646
|
+
return document.body.offsetHeight + getComputedStyle("marginTop") + getComputedStyle("marginBottom");
|
647
647
|
},
|
648
648
|
offset: function() {
|
649
649
|
return getHeight.bodyOffset() // Backwards compatability
|
@@ -672,10 +672,10 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
672
672
|
;
|
673
673
|
},
|
674
674
|
lowestElement: function getBestHeight() {
|
675
|
-
return Math.max(getHeight.bodyOffset() || getHeight.documentElementOffset(), getMaxElement(
|
675
|
+
return Math.max(getHeight.bodyOffset() || getHeight.documentElementOffset(), getMaxElement("bottom", getAllElements()));
|
676
676
|
},
|
677
677
|
taggedElement: function getTaggedElementsHeight() {
|
678
|
-
return getTaggedElements(
|
678
|
+
return getTaggedElements("bottom", "data-iframe-height");
|
679
679
|
}
|
680
680
|
}, getWidth = {
|
681
681
|
bodyScroll: function getBodyScrollWidth() {
|
@@ -703,10 +703,10 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
703
703
|
return Math.min.apply(null, getAllMeasurements(getWidth));
|
704
704
|
},
|
705
705
|
rightMostElement: function rightMostElement() {
|
706
|
-
return getMaxElement(
|
706
|
+
return getMaxElement("right", getAllElements());
|
707
707
|
},
|
708
708
|
taggedElement: function getTaggedElementsWidth() {
|
709
|
-
return getTaggedElements(
|
709
|
+
return getTaggedElements("right", "data-iframe-width");
|
710
710
|
}
|
711
711
|
};
|
712
712
|
function sizeIFrame(triggerEvent, triggerEventDesc, customHeight, customWidth) {
|
@@ -735,7 +735,7 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
735
735
|
return heightCalcMode in resetRequiredMethods || calculateWidth && widthCalcMode in resetRequiredMethods;
|
736
736
|
}
|
737
737
|
function logIgnored() {
|
738
|
-
log(
|
738
|
+
log("No change in size detected");
|
739
739
|
}
|
740
740
|
function checkDownSizing() {
|
741
741
|
if (isForceResizableEvent() && isForceResizableCalcMode()) resetIFrame(triggerEventDesc);
|
@@ -744,7 +744,7 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
744
744
|
})) logIgnored();
|
745
745
|
}
|
746
746
|
var currentHeight, currentWidth;
|
747
|
-
if (isSizeChangeDetected() ||
|
747
|
+
if (isSizeChangeDetected() || "init" === triggerEvent) {
|
748
748
|
lockTrigger();
|
749
749
|
resizeIFrame();
|
750
750
|
} else checkDownSizing();
|
@@ -756,27 +756,27 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
756
756
|
reset: 1,
|
757
757
|
resetPage: 1,
|
758
758
|
init: 1
|
759
|
-
})) log(
|
759
|
+
})) log("Trigger event: " + triggerEventDesc);
|
760
760
|
}
|
761
761
|
function isDoubleFiredEvent() {
|
762
762
|
return triggerLocked && triggerEvent in doubleEventList;
|
763
763
|
}
|
764
764
|
if (!isDoubleFiredEvent()) {
|
765
765
|
recordTrigger();
|
766
|
-
if (triggerEvent ===
|
766
|
+
if (triggerEvent === "init") sizeIFrame(triggerEvent, triggerEventDesc, customHeight, customWidth);
|
767
767
|
else sizeIFrameThrottled(triggerEvent, triggerEventDesc, customHeight, customWidth);
|
768
|
-
} else log(
|
768
|
+
} else log("Trigger event cancelled: " + triggerEvent);
|
769
769
|
}
|
770
770
|
function lockTrigger() {
|
771
771
|
if (!triggerLocked) {
|
772
772
|
triggerLocked = true;
|
773
|
-
log(
|
773
|
+
log("Trigger event lock on");
|
774
774
|
}
|
775
775
|
clearTimeout(triggerLockedTimer);
|
776
776
|
triggerLockedTimer = setTimeout(function() {
|
777
777
|
triggerLocked = false;
|
778
|
-
log(
|
779
|
-
log(
|
778
|
+
log("Trigger event lock off");
|
779
|
+
log("--");
|
780
780
|
}, eventCancelTimer);
|
781
781
|
}
|
782
782
|
function triggerReset(triggerEvent) {
|
@@ -787,19 +787,19 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
787
787
|
function resetIFrame(triggerEventDesc) {
|
788
788
|
var hcm = heightCalcMode;
|
789
789
|
heightCalcMode = heightCalcModeDefault;
|
790
|
-
log(
|
790
|
+
log("Reset trigger event: " + triggerEventDesc);
|
791
791
|
lockTrigger();
|
792
|
-
triggerReset(
|
792
|
+
triggerReset("reset");
|
793
793
|
heightCalcMode = hcm;
|
794
794
|
}
|
795
795
|
function sendMsg(height, width, triggerEvent, msg, targetOrigin) {
|
796
796
|
function setTargetOrigin() {
|
797
797
|
if (undefined === targetOrigin) targetOrigin = targetOriginDefault;
|
798
|
-
else log(
|
798
|
+
else log("Message targetOrigin: " + targetOrigin);
|
799
799
|
}
|
800
800
|
function sendToParent() {
|
801
|
-
var size = height +
|
802
|
-
log(
|
801
|
+
var size = height + ":" + width, message = myID + ":" + size + ":" + triggerEvent + (undefined !== msg ? ":" + msg : "");
|
802
|
+
log("Sending message to host page (" + message + ")");
|
803
803
|
target1.postMessage(msgID + message, targetOrigin);
|
804
804
|
}
|
805
805
|
if (true === sendPermit) {
|
@@ -820,12 +820,12 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
820
820
|
},
|
821
821
|
reset: function resetFromParent() {
|
822
822
|
if (!initLock) {
|
823
|
-
log(
|
824
|
-
triggerReset(
|
825
|
-
} else log(
|
823
|
+
log("Page size reset by host page");
|
824
|
+
triggerReset("resetPage");
|
825
|
+
} else log("Page reset ignored by init");
|
826
826
|
},
|
827
827
|
resize: function resizeFromParent() {
|
828
|
-
sendSize(
|
828
|
+
sendSize("resizeParent", "Parent window requested size check");
|
829
829
|
},
|
830
830
|
moveToAnchor: function moveToAnchorF() {
|
831
831
|
inPageLinks.findTarget(getData());
|
@@ -835,35 +835,35 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
835
835
|
},
|
836
836
|
pageInfo: function pageInfoFromParent() {
|
837
837
|
var msgBody = getData();
|
838
|
-
log(
|
838
|
+
log("PageInfoFromParent called from parent: " + msgBody);
|
839
839
|
onPageInfo(JSON.parse(msgBody));
|
840
|
-
log(
|
840
|
+
log(" --");
|
841
841
|
},
|
842
842
|
message: function messageFromParent() {
|
843
843
|
var msgBody = getData();
|
844
|
-
log(
|
844
|
+
log("onMessage called from parent: " + msgBody);
|
845
845
|
// eslint-disable-next-line sonarjs/no-extra-arguments
|
846
846
|
onMessage(JSON.parse(msgBody));
|
847
|
-
log(
|
847
|
+
log(" --");
|
848
848
|
}
|
849
849
|
};
|
850
850
|
function isMessageForUs() {
|
851
|
-
return msgID === (
|
851
|
+
return msgID === ("" + event.data).substr(0, msgIdLen) // ''+ Protects against non-string messages
|
852
852
|
;
|
853
853
|
}
|
854
854
|
function getMessageType() {
|
855
|
-
return event.data.split(
|
855
|
+
return event.data.split("]")[1].split(":")[0];
|
856
856
|
}
|
857
857
|
function getData() {
|
858
|
-
return event.data.substr(event.data.indexOf(
|
858
|
+
return event.data.substr(event.data.indexOf(":") + 1);
|
859
859
|
}
|
860
860
|
function isMiddleTier() {
|
861
|
-
return !$b2e1fd3e30ab1f5c$exports &&
|
861
|
+
return !$b2e1fd3e30ab1f5c$exports && "iFrameResize" in window || "jQuery" in window && "iFrameResize" in window.jQuery.prototype;
|
862
862
|
}
|
863
863
|
function isInitMsg() {
|
864
864
|
// Test if this message is from a child below us. This is an ugly test, however, updating
|
865
865
|
// the message format would break backwards compatibity.
|
866
|
-
return event.data.split(
|
866
|
+
return event.data.split(":")[2] in {
|
867
867
|
true: 1,
|
868
868
|
false: 1
|
869
869
|
};
|
@@ -871,7 +871,7 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
871
871
|
function callFromParent() {
|
872
872
|
var messageType = getMessageType();
|
873
873
|
if (messageType in processRequestFromParent) processRequestFromParent[messageType]();
|
874
|
-
else if (!isMiddleTier() && !isInitMsg()) warn(
|
874
|
+
else if (!isMiddleTier() && !isInitMsg()) warn("Unexpected message (" + event.data + ")");
|
875
875
|
}
|
876
876
|
function processMessage() {
|
877
877
|
if (false === firstRun) callFromParent();
|
@@ -883,10 +883,10 @@ var $b2e1fd3e30ab1f5c$exports = {};
|
|
883
883
|
// Normally the parent kicks things off when it detects the iFrame has loaded.
|
884
884
|
// If this script is async-loaded, then tell parent page to retry init.
|
885
885
|
function chkLateLoaded() {
|
886
|
-
if (
|
886
|
+
if ("loading" !== document.readyState) window.parent.postMessage("[iFrameResizerChild]Ready", "*");
|
887
887
|
}
|
888
|
-
addEventListener(window,
|
889
|
-
addEventListener(window,
|
888
|
+
addEventListener(window, "message", receiver);
|
889
|
+
addEventListener(window, "readystatechange", chkLateLoaded);
|
890
890
|
chkLateLoaded();
|
891
891
|
})();
|
892
892
|
|