lookbook 1.0.0.beta.5 → 1.0.0.beta.6

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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +27 -254
  3. data/app/assets/lookbook/css/lookbook.css +1 -1
  4. data/app/assets/lookbook/css/themes/blue.css +57 -36
  5. data/app/assets/lookbook/css/themes/indigo.css +57 -36
  6. data/app/assets/lookbook/css/themes/zinc.css +57 -36
  7. data/app/assets/lookbook/css/tooltip.css +5 -5
  8. data/app/components/lookbook/button/component.html.erb +2 -2
  9. data/app/components/lookbook/embed/component.html.erb +5 -5
  10. data/app/components/lookbook/embed/component.rb +8 -0
  11. data/app/components/lookbook/filter/component.html.erb +1 -1
  12. data/app/components/lookbook/header/component.html.erb +1 -1
  13. data/app/components/lookbook/inspector_panel/component.html.erb +4 -0
  14. data/app/components/lookbook/inspector_panel/component.rb +36 -0
  15. data/app/components/lookbook/nav/item/component.html.erb +1 -1
  16. data/app/components/lookbook/prose/component.html.erb +1 -1
  17. data/app/components/lookbook/tabs/dropdown_tab/component.html.erb +1 -1
  18. data/app/components/lookbook/tabs/tab/component.html.erb +1 -1
  19. data/app/components/lookbook/toolbar/component.html.erb +1 -1
  20. data/app/components/lookbook/viewport/component.css +1 -1
  21. data/app/components/lookbook/viewport/component.html.erb +1 -1
  22. data/app/controllers/lookbook/pages_controller.rb +1 -0
  23. data/app/controllers/lookbook/previews_controller.rb +15 -3
  24. data/app/helpers/lookbook/application_helper.rb +0 -6
  25. data/app/helpers/lookbook/preview_helper.rb +2 -3
  26. data/app/views/layouts/lookbook/application.html.erb +1 -1
  27. data/app/views/layouts/lookbook/page.html.erb +2 -2
  28. data/app/views/layouts/lookbook/shell.html.erb +6 -0
  29. data/app/views/layouts/lookbook/skeleton.html.erb +0 -6
  30. data/app/views/lookbook/previews/panels/_content.html.erb +1 -1
  31. data/app/views/lookbook/previews/panels/_notes.html.erb +2 -2
  32. data/app/views/lookbook/previews/panels/_params.html.erb +1 -1
  33. data/app/views/lookbook/previews/show.html.erb +5 -3
  34. data/lib/lookbook/config.rb +56 -39
  35. data/lib/lookbook/engine.rb +8 -0
  36. data/lib/lookbook/params.rb +12 -0
  37. data/lib/lookbook/store.rb +8 -0
  38. data/lib/lookbook/version.rb +1 -1
  39. data/public/lookbook-assets/css/lookbook.css +302 -150
  40. data/public/lookbook-assets/css/lookbook.css.map +1 -1
  41. data/public/lookbook-assets/css/themes/blue.css +57 -36
  42. data/public/lookbook-assets/css/themes/blue.css.map +1 -1
  43. data/public/lookbook-assets/css/themes/indigo.css +57 -36
  44. data/public/lookbook-assets/css/themes/indigo.css.map +1 -1
  45. data/public/lookbook-assets/css/themes/zinc.css +57 -36
  46. data/public/lookbook-assets/css/themes/zinc.css.map +1 -1
  47. data/public/lookbook-assets/js/embed.js +193 -193
  48. data/public/lookbook-assets/js/lookbook.js +1169 -1326
  49. data/public/lookbook-assets/js/lookbook.js.map +1 -1
  50. metadata +6 -4
@@ -1,24 +1,24 @@
1
1
  (() => {
2
2
  var $b2e1fd3e30ab1f5c$exports = {};
3
3
  (function(undefined) {
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 = {
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 = 'bodyOffset', heightCalcMode = heightCalcModeDefault, initLock = true, initMsg = '', inPageLinks = {}, interval = 32, intervalTimer = null, logging = false, mouseEvents = false, msgID = '[iFrameSizer]', msgIdLen = msgID.length, myID = '', resetRequiredMethods = {
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 = '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');
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('Custom height calculation function not defined');
17
+ warn("Custom height calculation function not defined");
18
18
  return document.documentElement.offsetHeight;
19
19
  },
20
20
  width: function() {
21
- warn('Custom width calculation function not defined');
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('test', noop, options);
35
- window.removeEventListener('test', noop, options);
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 + '[' + myID + '] ' + msg;
76
+ return msgID + "[" + myID + "] " + msg;
77
77
  }
78
78
  function log(msg) {
79
- if (logging && 'object' === typeof window.console) // eslint-disable-next-line no-console
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 ('object' === typeof window.console) // eslint-disable-next-line no-console
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('Initialising iFrame (' + window.location.href + ')');
88
+ log("Initialising iFrame (" + window.location.href + ")");
89
89
  readDataFromPage();
90
90
  setMargin();
91
- setBodyStyle('background', bodyBackground);
92
- setBodyStyle('padding', bodyPadding);
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('init', 'Init message from host page');
101
+ sendSize("init", "Init message from host page");
102
102
  onReady();
103
103
  }
104
104
  function readDataFromParent() {
105
105
  function strBool(str) {
106
- return 'true' === str;
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('Callback');
127
+ var splitName = key.split("Callback");
128
128
  if (splitName.length === 2) {
129
- var name = 'on' + splitName[0].charAt(0).toUpperCase() + splitName[0].slice(1);
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('Reading data from page: ' + JSON.stringify(data));
138
+ log("Reading data from page: " + JSON.stringify(data));
139
139
  Object.keys(data).forEach(depricate, data);
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;
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 ('function' === typeof calcMode) {
148
- log('Setup custom ' + calcFunc + 'CalcMethod');
147
+ if ("function" === typeof calcMode) {
148
+ log("Setup custom " + calcFunc + "CalcMethod");
149
149
  customCalcMethods[calcFunc] = calcMode;
150
- calcMode = 'custom';
150
+ calcMode = "custom";
151
151
  }
152
152
  return calcMode;
153
153
  }
154
- if ('iFrameResizer' in window && Object === window.iFrameResizer.constructor) {
154
+ if ("iFrameResizer" in window && Object === window.iFrameResizer.constructor) {
155
155
  readData();
156
- heightCalcMode = setupCustomCalcMethods(heightCalcMode, 'height');
157
- widthCalcMode = setupCustomCalcMethods(widthCalcMode, 'width');
156
+ heightCalcMode = setupCustomCalcMethods(heightCalcMode, "height");
157
+ widthCalcMode = setupCustomCalcMethods(widthCalcMode, "width");
158
158
  }
159
- log('TargetOrigin for parent set to: ' + targetOriginDefault);
159
+ log("TargetOrigin for parent set to: " + targetOriginDefault);
160
160
  }
161
161
  function chkCSS(attr, value) {
162
- if (-1 !== value.indexOf('-')) {
163
- warn('Negative CSS value ignored for ' + attr);
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 && '' !== value && 'null' !== value) {
169
+ if (undefined !== value && "" !== value && "null" !== value) {
170
170
  document.body.style[attr] = value;
171
- log('Body ' + attr + ' set to "' + value + '"');
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 + 'px';
177
- setBodyStyle('margin', chkCSS('margin', bodyMarginStr));
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) + ' event listener: ' + options.eventType);
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: 'Animation Start',
210
+ eventType: "Animation Start",
211
211
  eventNames: [
212
- 'animationstart',
213
- 'webkitAnimationStart'
212
+ "animationstart",
213
+ "webkitAnimationStart"
214
214
  ]
215
215
  });
216
216
  manageTriggerEvent({
217
217
  method: method,
218
- eventType: 'Animation Iteration',
218
+ eventType: "Animation Iteration",
219
219
  eventNames: [
220
- 'animationiteration',
221
- 'webkitAnimationIteration'
220
+ "animationiteration",
221
+ "webkitAnimationIteration"
222
222
  ]
223
223
  });
224
224
  manageTriggerEvent({
225
225
  method: method,
226
- eventType: 'Animation End',
226
+ eventType: "Animation End",
227
227
  eventNames: [
228
- 'animationend',
229
- 'webkitAnimationEnd'
228
+ "animationend",
229
+ "webkitAnimationEnd"
230
230
  ]
231
231
  });
232
232
  manageTriggerEvent({
233
233
  method: method,
234
- eventType: 'Input',
235
- eventName: 'input'
234
+ eventType: "Input",
235
+ eventName: "input"
236
236
  });
237
237
  manageTriggerEvent({
238
238
  method: method,
239
- eventType: 'Mouse Up',
240
- eventName: 'mouseup'
239
+ eventType: "Mouse Up",
240
+ eventName: "mouseup"
241
241
  });
242
242
  manageTriggerEvent({
243
243
  method: method,
244
- eventType: 'Mouse Down',
245
- eventName: 'mousedown'
244
+ eventType: "Mouse Down",
245
+ eventName: "mousedown"
246
246
  });
247
247
  manageTriggerEvent({
248
248
  method: method,
249
- eventType: 'Orientation Change',
250
- eventName: 'orientationchange'
249
+ eventType: "Orientation Change",
250
+ eventName: "orientationchange"
251
251
  });
252
252
  manageTriggerEvent({
253
253
  method: method,
254
- eventType: 'Print',
254
+ eventType: "Print",
255
255
  eventName: [
256
- 'afterprint',
257
- 'beforeprint'
256
+ "afterprint",
257
+ "beforeprint"
258
258
  ]
259
259
  });
260
260
  manageTriggerEvent({
261
261
  method: method,
262
- eventType: 'Ready State Change',
263
- eventName: 'readystatechange'
262
+ eventType: "Ready State Change",
263
+ eventName: "readystatechange"
264
264
  });
265
265
  manageTriggerEvent({
266
266
  method: method,
267
- eventType: 'Touch Start',
268
- eventName: 'touchstart'
267
+ eventType: "Touch Start",
268
+ eventName: "touchstart"
269
269
  });
270
270
  manageTriggerEvent({
271
271
  method: method,
272
- eventType: 'Touch End',
273
- eventName: 'touchend'
272
+ eventType: "Touch End",
273
+ eventName: "touchend"
274
274
  });
275
275
  manageTriggerEvent({
276
276
  method: method,
277
- eventType: 'Touch Cancel',
278
- eventName: 'touchcancel'
277
+ eventType: "Touch Cancel",
278
+ eventName: "touchcancel"
279
279
  });
280
280
  manageTriggerEvent({
281
281
  method: method,
282
- eventType: 'Transition Start',
282
+ eventType: "Transition Start",
283
283
  eventNames: [
284
- 'transitionstart',
285
- 'webkitTransitionStart',
286
- 'MSTransitionStart',
287
- 'oTransitionStart',
288
- 'otransitionstart'
284
+ "transitionstart",
285
+ "webkitTransitionStart",
286
+ "MSTransitionStart",
287
+ "oTransitionStart",
288
+ "otransitionstart"
289
289
  ]
290
290
  });
291
291
  manageTriggerEvent({
292
292
  method: method,
293
- eventType: 'Transition Iteration',
293
+ eventType: "Transition Iteration",
294
294
  eventNames: [
295
- 'transitioniteration',
296
- 'webkitTransitionIteration',
297
- 'MSTransitionIteration',
298
- 'oTransitionIteration',
299
- 'otransitioniteration'
295
+ "transitioniteration",
296
+ "webkitTransitionIteration",
297
+ "MSTransitionIteration",
298
+ "oTransitionIteration",
299
+ "otransitioniteration"
300
300
  ]
301
301
  });
302
302
  manageTriggerEvent({
303
303
  method: method,
304
- eventType: 'Transition End',
304
+ eventType: "Transition End",
305
305
  eventNames: [
306
- 'transitionend',
307
- 'webkitTransitionEnd',
308
- 'MSTransitionEnd',
309
- 'oTransitionEnd',
310
- 'otransitionend'
306
+ "transitionend",
307
+ "webkitTransitionEnd",
308
+ "MSTransitionEnd",
309
+ "oTransitionEnd",
310
+ "otransitionend"
311
311
  ]
312
312
  });
313
- if ('child' === resizeFrom) manageTriggerEvent({
313
+ if ("child" === resizeFrom) manageTriggerEvent({
314
314
  method: method,
315
- eventType: 'IFrame Resized',
316
- eventName: 'resize'
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 + ' is not a valid option for ' + type + 'CalculationMethod.');
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, 'height');
330
+ heightCalcMode = checkCalcMode(heightCalcMode, heightCalcModeDefault, getHeight, "height");
331
331
  }
332
332
  function checkWidthMode() {
333
- widthCalcMode = checkCalcMode(widthCalcMode, widthCalcModeDefault, getWidth, 'width');
333
+ widthCalcMode = checkCalcMode(widthCalcMode, widthCalcModeDefault, getWidth, "width");
334
334
  }
335
335
  function startEventListeners() {
336
336
  if (true === autoResize) {
337
- manageEventListeners('add');
337
+ manageEventListeners("add");
338
338
  setupMutationObserver();
339
- } else log('Auto Resize disabled');
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('remove');
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('div');
365
- clearFix.style.clear = 'both';
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 = 'block';
368
- clearFix.style.height = '0';
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('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
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('#')[1] || location, hashData = decodeURIComponent(hash), target2 = document.getElementById(hashData) || document.getElementsByName(hashData)[0];
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('In page link (#' + hash + ') not found in iFrame, so sending to parent');
396
- sendMsg(0, 0, 'inPageLink', '#' + hash);
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 ('' !== hash && '#' !== hash) findTarget(href);
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('href'));
408
+ /* jshint validthis:true */ findTarget(this.getAttribute("href"));
409
409
  }
410
- if ('#' !== el.getAttribute('href')) addEventListener(el, 'click', linkClicked);
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, 'hashchange', checkLocationHash);
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('Setting up location.hash handlers');
424
+ log("Setting up location.hash handlers");
425
425
  bindAnchors();
426
426
  bindLocationHash();
427
427
  initCheck();
428
- } else warn('In page linking not fully supported in this browser! (See README.md for IE8 workaround)');
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('In page linking not enabled');
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 + ':' + e.screenX);
439
+ sendMsg(0, 0, e.type, e.screenY + ":" + e.screenX);
440
440
  }
441
441
  function addMouseListener(evt, name) {
442
- log('Add event listener: ' + name);
442
+ log("Add event listener: " + name);
443
443
  addEventListener(window.document, evt, sendMouse);
444
444
  }
445
- addMouseListener('mouseenter', 'Mouse Enter');
446
- addMouseListener('mouseleave', 'Mouse Leave');
445
+ addMouseListener("mouseenter", "Mouse Enter");
446
+ addMouseListener("mouseleave", "Mouse Leave");
447
447
  }
448
448
  function setupPublicMethods() {
449
- log('Enable public methods');
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, 'autoResize', JSON.stringify(autoResize));
459
+ sendMsg(0, 0, "autoResize", JSON.stringify(autoResize));
460
460
  return autoResize;
461
461
  },
462
462
  close: function closeF() {
463
- sendMsg(0, 0, 'close');
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 ('function' === typeof callback) {
470
+ if ("function" === typeof callback) {
471
471
  onPageInfo = callback;
472
- sendMsg(0, 0, 'pageInfo');
472
+ sendMsg(0, 0, "pageInfo");
473
473
  } else {
474
474
  onPageInfo = function() {};
475
- sendMsg(0, 0, 'pageInfoStop');
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('parentIFrame.reset');
482
+ resetIFrame("parentIFrame.reset");
483
483
  },
484
484
  scrollTo: function scrollToF(x, y) {
485
- sendMsg(y, x, 'scrollTo') // X&Y reversed at sendMsg uses height/width
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, 'scrollToOffset') // X&Y reversed at sendMsg uses height/width
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, 'message', JSON.stringify(msg), targetOrigin);
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('Set targetOrigin: ' + targetOrigin);
504
+ log("Set targetOrigin: " + targetOrigin);
505
505
  targetOriginDefault = targetOrigin;
506
506
  },
507
507
  size: function sizeF(customHeight, customWidth) {
508
- var valString = '' + (customHeight || '') + (customWidth ? ',' + customWidth : '');
509
- sendSize('size', 'parentIFrame.size(' + valString + ')', customHeight, customWidth);
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('setInterval: ' + interval + 'ms');
515
+ log("setInterval: " + interval + "ms");
516
516
  intervalTimer = setInterval(function() {
517
- sendSize('interval', 'setInterval: ' + interval);
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('Attach listeners to ' + element.src);
527
- element.addEventListener('load', imageLoaded, false);
528
- element.addEventListener('error', imageError, false);
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 === 'attributes' && mutation.attributeName === 'src') addImageLoadListener(mutation.target);
533
- else if (mutation.type === 'childList') Array.prototype.forEach.call(mutation.target.querySelectorAll('img'), addImageLoadListener);
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('Remove listeners from ' + element.src);
540
- element.removeEventListener('load', imageLoaded, false);
541
- element.removeEventListener('error', imageError, false);
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 + ': ' + event.target.src);
546
+ sendSize(type, typeDesc + ": " + event.target.src);
547
547
  }
548
548
  function imageLoaded(event) {
549
- imageEventTriggered(event, 'imageLoad', 'Image loaded');
549
+ imageEventTriggered(event, "imageLoad", "Image loaded");
550
550
  }
551
551
  function imageError(event) {
552
- imageEventTriggered(event, 'imageLoadFailed', 'Image load failed');
552
+ imageEventTriggered(event, "imageLoadFailed", "Image load failed");
553
553
  }
554
554
  function mutationObserved(mutations) {
555
- sendSize('mutationObserver', 'mutationObserver: ' + mutations[0].target + ' ' + mutations[0].type);
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('body'), config = {
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('Create body MutationObserver');
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 ('disconnect' in observer) {
577
- log('Disconnect body MutationObserver');
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('MutationObserver not supported in this browser!');
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('Event throttle increased to ' + throttledTimer + 'ms');
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('margin' + Side, elements[i]);
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('Parsed ' + elementsLength + ' HTML elements');
620
- log('Element position calculated in ' + timer + 'ms');
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('No tagged elements (' + tag + ') found on page');
635
- return document.querySelectorAll('body *');
634
+ warn("No tagged elements (" + tag + ") found on page");
635
+ return document.querySelectorAll("body *");
636
636
  }
637
- var elements = document.querySelectorAll('[' + tag + ']');
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('body *');
642
+ return document.querySelectorAll("body *");
643
643
  }
644
644
  var getHeight = {
645
645
  bodyOffset: function getBodyOffsetHeight() {
646
- return document.body.offsetHeight + getComputedStyle('marginTop') + getComputedStyle('marginBottom');
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('bottom', getAllElements()));
675
+ return Math.max(getHeight.bodyOffset() || getHeight.documentElementOffset(), getMaxElement("bottom", getAllElements()));
676
676
  },
677
677
  taggedElement: function getTaggedElementsHeight() {
678
- return getTaggedElements('bottom', 'data-iframe-height');
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('right', getAllElements());
706
+ return getMaxElement("right", getAllElements());
707
707
  },
708
708
  taggedElement: function getTaggedElementsWidth() {
709
- return getTaggedElements('right', 'data-iframe-width');
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('No change in size detected');
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() || 'init' === triggerEvent) {
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('Trigger event: ' + triggerEventDesc);
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 === 'init') sizeIFrame(triggerEvent, triggerEventDesc, customHeight, customWidth);
766
+ if (triggerEvent === "init") sizeIFrame(triggerEvent, triggerEventDesc, customHeight, customWidth);
767
767
  else sizeIFrameThrottled(triggerEvent, triggerEventDesc, customHeight, customWidth);
768
- } else log('Trigger event cancelled: ' + triggerEvent);
768
+ } else log("Trigger event cancelled: " + triggerEvent);
769
769
  }
770
770
  function lockTrigger() {
771
771
  if (!triggerLocked) {
772
772
  triggerLocked = true;
773
- log('Trigger event lock on');
773
+ log("Trigger event lock on");
774
774
  }
775
775
  clearTimeout(triggerLockedTimer);
776
776
  triggerLockedTimer = setTimeout(function() {
777
777
  triggerLocked = false;
778
- log('Trigger event lock off');
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('Reset trigger event: ' + triggerEventDesc);
790
+ log("Reset trigger event: " + triggerEventDesc);
791
791
  lockTrigger();
792
- triggerReset('reset');
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('Message targetOrigin: ' + targetOrigin);
798
+ else log("Message targetOrigin: " + targetOrigin);
799
799
  }
800
800
  function sendToParent() {
801
- var size = height + ':' + width, message = myID + ':' + size + ':' + triggerEvent + (undefined !== msg ? ':' + msg : '');
802
- log('Sending message to host page (' + message + ')');
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('Page size reset by host page');
824
- triggerReset('resetPage');
825
- } else log('Page reset ignored by init');
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('resizeParent', 'Parent window requested size check');
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('PageInfoFromParent called from parent: ' + msgBody);
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('onMessage called from parent: ' + msgBody);
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 === ('' + event.data).substr(0, msgIdLen) // ''+ Protects against non-string messages
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(']')[1].split(':')[0];
855
+ return event.data.split("]")[1].split(":")[0];
856
856
  }
857
857
  function getData() {
858
- return event.data.substr(event.data.indexOf(':') + 1);
858
+ return event.data.substr(event.data.indexOf(":") + 1);
859
859
  }
860
860
  function isMiddleTier() {
861
- return !$b2e1fd3e30ab1f5c$exports && 'iFrameResize' in window || 'jQuery' in window && 'iFrameResize' in window.jQuery.prototype;
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(':')[2] in {
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('Unexpected message (' + event.data + ')');
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 ('loading' !== document.readyState) window.parent.postMessage('[iFrameResizerChild]Ready', '*');
886
+ if ("loading" !== document.readyState) window.parent.postMessage("[iFrameResizerChild]Ready", "*");
887
887
  }
888
- addEventListener(window, 'message', receiver);
889
- addEventListener(window, 'readystatechange', chkLateLoaded);
888
+ addEventListener(window, "message", receiver);
889
+ addEventListener(window, "readystatechange", chkLateLoaded);
890
890
  chkLateLoaded();
891
891
  })();
892
892