Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordiosmosis <diosmosis@users.noreply.github.com>2020-06-26 12:33:41 +0300
committerGitHub <noreply@github.com>2020-06-26 12:33:41 +0300
commitb12946909ff323ea2f7e7af04e4435d2dd503023 (patch)
tree90ae60f7755336e80a7bc6a1d538ae02c24493af /node_modules/iframe-resizer
parent714503751b76436daf6533331f24e3400eb06ad1 (diff)
run npm update and include node_modules (#16079)
* update npm packages to latest * fix javascript path location * update screenshots * Add node_modules for users that do not have npm insalled but use git to deploy. * fix release checklist test * Add old chroma-js + some files missing from node_module. * remove npm install * fix .travis.yml * update expected screenshots * update submodule Co-authored-by: sgiehl <stefan@matomo.org>
Diffstat (limited to 'node_modules/iframe-resizer')
-rw-r--r--node_modules/iframe-resizer/.eslintrc42
-rw-r--r--node_modules/iframe-resizer/.github/FUNDING.yml20
-rw-r--r--node_modules/iframe-resizer/.github/ISSUE_TEMPLATE/bug_report.md38
-rw-r--r--node_modules/iframe-resizer/.ncurc.json3
-rw-r--r--node_modules/iframe-resizer/.prettierrc10
-rw-r--r--node_modules/iframe-resizer/.travis.yml6
-rw-r--r--node_modules/iframe-resizer/CHANGELOG.md212
-rw-r--r--node_modules/iframe-resizer/CONTRIBUTING.md83
-rw-r--r--node_modules/iframe-resizer/FUNDING.md5
-rw-r--r--node_modules/iframe-resizer/LICENSE21
-rw-r--r--node_modules/iframe-resizer/README.md102
-rw-r--r--node_modules/iframe-resizer/index.js1
-rw-r--r--node_modules/iframe-resizer/js/iframeResizer.contentWindow.js1288
-rw-r--r--node_modules/iframe-resizer/js/iframeResizer.contentWindow.map1
-rw-r--r--node_modules/iframe-resizer/js/iframeResizer.contentWindow.min.js10
-rw-r--r--node_modules/iframe-resizer/js/iframeResizer.js1390
-rw-r--r--node_modules/iframe-resizer/js/iframeResizer.map1
-rw-r--r--node_modules/iframe-resizer/js/iframeResizer.min.js9
-rw-r--r--node_modules/iframe-resizer/js/index.js5
-rw-r--r--node_modules/iframe-resizer/package.json160
20 files changed, 3407 insertions, 0 deletions
diff --git a/node_modules/iframe-resizer/.eslintrc b/node_modules/iframe-resizer/.eslintrc
new file mode 100644
index 0000000000..e3b5ca3d14
--- /dev/null
+++ b/node_modules/iframe-resizer/.eslintrc
@@ -0,0 +1,42 @@
+{
+ "extends": ["airbnb-base", "adjunct"],
+ "plugins": ["ie11"],
+ "env": {
+ "amd": true,
+ "browser": true,
+ "jasmine": true
+ },
+ "parserOptions": { "ecmaVersion": 2015 },
+ "rules": {
+ "func-names": 0,
+ "global-require": 0,
+ "no-param-reassign": 0,
+ "no-plusplus": 0,
+ "no-restricted-globals": 0,
+ "no-use-before-define": 0,
+ "no-shadow": 0,
+ "no-var": 0,
+ "object-shorthand": 0,
+ "one-var": 0,
+ "prefer-destructuring": 0,
+ "prefer-rest-params": 0,
+ "prefer-template": 0,
+ "vars-on-top": 0,
+ "yoda": 0,
+ "ie11/no-collection-args": ["error"],
+ "ie11/no-for-in-const": ["error"],
+ "ie11/no-loop-func": ["warn"],
+ "ie11/no-weak-collections": ["error"],
+ "import/no-amd": 0,
+ "lodash/prefer-noop": 0,
+ "lodash-fp/prefer-constant": 0,
+ "unicorn/consistent-function-scoping": 0,
+ "unicorn/filename-case": 0,
+ "unicorn/prefer-node-append": 0,
+ "unicorn/prefer-node-remove": 0,
+ "unicorn/prefer-query-selector": 0,
+ "unicorn/prevent-abbreviations": 0,
+ "unicorn/prefer-string-slice": 0,
+ "unicorn/prefer-number-properties": 0,
+ }
+}
diff --git a/node_modules/iframe-resizer/.github/FUNDING.yml b/node_modules/iframe-resizer/.github/FUNDING.yml
new file mode 100644
index 0000000000..b455d95abb
--- /dev/null
+++ b/node_modules/iframe-resizer/.github/FUNDING.yml
@@ -0,0 +1,20 @@
+# These are supported funding model platforms
+
+# github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
+# patreon: # Replace with a single Patreon username
+# open_collective: # Replace with a single Open Collective username
+# ko_fi: # Replace with a single Ko-fi username
+# tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
+# community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+# liberapay: # Replace with a single Liberapay username
+# issuehunt: # Replace with a single IssueHunt username
+# otechie: # Replace with a single Otechie username
+# custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
+
+# github: davidjbradshaw
+custom: https://www.buymeacoffee.com/davidjbradshaw
+custom: https://www.paypal.me/davidjbradshaw
+# issuehunt: davidjbradshaw
+# liberapay: davidjbradshaw
+# ko_fi: davidjbradshaw
+# tidelift: npm/iframe-resizer
diff --git a/node_modules/iframe-resizer/.github/ISSUE_TEMPLATE/bug_report.md b/node_modules/iframe-resizer/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000000..dd84ea7824
--- /dev/null
+++ b/node_modules/iframe-resizer/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,38 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**To Reproduce**
+Steps to reproduce the behavior:
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Screenshots**
+If applicable, add screenshots to help explain your problem.
+
+**Desktop (please complete the following information):**
+ - OS: [e.g. iOS]
+ - Browser [e.g. chrome, safari]
+ - Version [e.g. 22]
+
+**Smartphone (please complete the following information):**
+ - Device: [e.g. iPhone6]
+ - OS: [e.g. iOS8.1]
+ - Browser [e.g. stock browser, safari]
+ - Version [e.g. 22]
+
+**Additional context**
+Add any other context about the problem here.
diff --git a/node_modules/iframe-resizer/.ncurc.json b/node_modules/iframe-resizer/.ncurc.json
new file mode 100644
index 0000000000..fdf87e66cd
--- /dev/null
+++ b/node_modules/iframe-resizer/.ncurc.json
@@ -0,0 +1,3 @@
+{
+ "reject": ["grunt-contrib-qunit"]
+}
diff --git a/node_modules/iframe-resizer/.prettierrc b/node_modules/iframe-resizer/.prettierrc
new file mode 100644
index 0000000000..db185d645a
--- /dev/null
+++ b/node_modules/iframe-resizer/.prettierrc
@@ -0,0 +1,10 @@
+{
+ "printWidth": 80,
+ "tabWidth": 2,
+ "useTabs": false,
+ "semi": false,
+ "singleQuote": true,
+ "trailingComma": "none",
+ "bracketSpacing": true,
+ "jsxBracketSameLine": false
+ }
diff --git a/node_modules/iframe-resizer/.travis.yml b/node_modules/iframe-resizer/.travis.yml
new file mode 100644
index 0000000000..93ada0136a
--- /dev/null
+++ b/node_modules/iframe-resizer/.travis.yml
@@ -0,0 +1,6 @@
+language: node_js
+node_js:
+ - "11.0"
+before_script:
+ - npm install -g grunt-cli
+sudo: false
diff --git a/node_modules/iframe-resizer/CHANGELOG.md b/node_modules/iframe-resizer/CHANGELOG.md
new file mode 100644
index 0000000000..97594805de
--- /dev/null
+++ b/node_modules/iframe-resizer/CHANGELOG.md
@@ -0,0 +1,212 @@
+# Version History
+
+- v4.2.11 Remove unicorn/prefer-number-properties from eslint rules and revert `Number.parseInt` to `parseInt`
+
+- v4.2.10 [#787](https://github.com/davidjbradshaw/iframe-resizer/issues/787) Replace `const` with `var` in index.js for IE10 [[Thomas Jaggi](https://github.com/backflip)]
+
+- v4.2.9 [#783](https://github.com/davidjbradshaw/iframe-resizer/issues/783) Bind `requestAnimationFrame` to `window` to fix issue with FireFox Content-Scripts [[Greg Soltis](https://github.com/gsoltis)]
+
+- v4.2.8 [#779](https://github.com/davidjbradshaw/iframe-resizer/issues/779) Fix issue with `javascript:void(0)` and `about:blank` URLs [[ceckoslab](https://github.com/ceckoslab)]
+
+- v4.2.7 Add support for NPM funding
+
+- v4.2.4 [#772](https://github.com/davidjbradshaw/iframe-resizer/issues/772) Fix issue with iframes inside ShaddowDOM elements [[Martin Belanger](https://github.com/martinbelanger)]
+
+- v4.2.3 [#683](https://github.com/davidjbradshaw/iframe-resizer/issues/683) Include border top/bottom, plus padding top/bottom, when calculating heights on iframe with `box-sizing: border-box;` [[Jim Doyle](https://github.com//superelement)]. [#768](https://github.com/davidjbradshaw/iframe-resizer/issues/768) Fix issue with hidden iframes [[Tony Living]](https://github.com//tonyliving)
+
+- v4.2.2 [#761](https://github.com/davidjbradshaw/iframe-resizer/pull/761) Check for iframe.src when parsing it for remoteHost [[Filip Stollar](https://github.com//SuNaden)]
+
+- v4.2.1 [#723](https://github.com/davidjbradshaw/iframe-resizer/pull/723) Fix option to turn off `autoResize` from iframe, when `resizeFrom` is set to `parent` [[Dennis Kronbügel]](https://github.com//deBFM)
+
+- v4.2.0 Add `onClose()` event to parent
+
+- v4.1.1 [#686](https://github.com/davidjbradshaw/iframe-resizer/pull/694) Fix IE11 regression with Object.values [[Jonathan Lehman](https://github.com//jdlehman)]
+
+- v4.1.0 [#686](https://github.com/davidjbradshaw/iframe-resizer/pull/686) Split client(Height/Width) into document and window values [[Bernhard Mäder](https://github.com//nuschk)]
+
+- v4.0.4 [#674](https://github.com/davidjbradshaw/iframe-resizer/pull/674) Fix default export
+
+- v4.0.3 [#606](https://github.com/davidjbradshaw/iframe-resizer/pull/606) Force height of clearFix div in iframe to 0
+
+- v4.0.2 [#671](https://github.com/davidjbradshaw/iframe-resizer/pull/671) Fix issue with window resize
+
+- v4.0.1 Fix documentation links in `README.md`
+
+- v4.0.0 Drop support for IE8-10 and Andriod 4, renamed event handlers from `fooCallback` to `onFoo` and restructure documentation. Reformat code with Prettier and add eslint to build
+
+- v3.6.5 [#658](https://github.com/davidjbradshaw/iframe-resizer/pull/658) Add `.npmignore` to project [[Sebastian Lamelas](https://github.com/smulesoft)]
+
+- v3.6.4 [#651](https://github.com/davidjbradshaw/iframe-resizer/pull/651) Fix issue resource leak when iframe removed from the page [[Steffen Eckardt](https://github.com/seckardt)]. [#651](https://github.com/davidjbradshaw/iframe-resizer/pull/651) Make Require.js optional when it is included on the page before iframe-resizer [[Dahmian Owen](https://github.com/dahmian)]
+
+- v3.6.3 [#635](https://github.com/davidjbradshaw/iframe-resizer/pull/635) Fix issue with undefined ID [[Henry Schein](https://github.com/ddxdental)]. [#582](https://github.com/davidjbradshaw/iframe-resizer/pull/582) Add `omit` option to `scrolling` config [[Matt Ryan](https://github.com/mryand)]
+
+- v3.6.2 [#596](https://github.com/davidjbradshaw/iframe-resizer/pull/596) Add Passive Event Listener for Performance [[Henrik Vendelbo](https://github.com/thepian)]. [#613](https://github.com/davidjbradshaw/iframe-resizer/pull/613) Check if the iFrameResize function is attached to the prototype of jQuery [[Paul Antal](https://github.com/paul-antal)]. [#620](https://github.com/davidjbradshaw/iframe-resizer/pull/620) Fixed an issue where host page fires init before iframe receiver setup [[Mark Zhou](https://github.com/mrmarktyy)]. [#620](https://github.com/davidjbradshaw/iframe-resizer/pull/620) Add `removeListeners` method to better support React [[Khang Nguyen](https://github.com/khangiskhan)]
+
+- v3.6.1 [#576](https://github.com/davidjbradshaw/iframe-resizer/pull/576) Fix race condition caused by react-iframe-resizer removing the domNode and calling `close()`
+
+- v3.6.0 [#562](https://github.com/davidjbradshaw/iframe-resizer/pull/562) Fix issue with debounce getPageInfo when their is more than one iFrame on the page [[Thomas Pringle](https://github.com/thomaspringle)]. [#568](https://github.com/davidjbradshaw/iframe-resizer/pull/568) Fix bug in Chrome 65 when iframe parent element has `display:none` set [[Steve Hong](https://github.com/aniude)]
+
+- v3.5.16 [#554](https://github.com/davidjbradshaw/iframe-resizer/issues/554) Fix throttling of init event [[SHOTA](https://github.com/senta)]. [#553](https://github.com/davidjbradshaw/iframe-resizer/issues/553) Prevents unhandled exception in IE11 [[vitoss](https://github.com/vitoss)]. [#555](https://github.com/davidjbradshaw/iframe-resizer/issues/555) Fix IE PolyFil and make grunt-cli local [[Jan Schmidle](https://github.com/bitcloud)]
+
+- v3.5.15 [#498](https://github.com/davidjbradshaw/iframe-resizer/issues/498) Fix bug "Cannot read property 'firstRun' of undefined" [[Shaun Johansen](https://github.com/shaunjohansen)]. [#517] Fix readyState issue in iFrame [[lostincomputer](https://github.com/lostincomputer)]
+
+- v3.5.14 [#477](https://github.com/davidjbradshaw/iframe-resizer/issues/477) Fix bug when iFrame closed before first resize
+
+- v3.5.13 [#473](https://github.com/davidjbradshaw/iframe-resizer/issues/473) Improve no response from iFrame warning message
+
+- v3.5.12 [#475](https://github.com/davidjbradshaw/iframe-resizer/issues/475) Delay onResize until after the iFrame has resized [[Codener](https://github.com/codener)]
+
+- v3.5.11 [#470](https://github.com/davidjbradshaw/iframe-resizer/issues/470) Fix jQuery reference error [[Russell Schick](https://github.com/rschick)]
+
+- v3.5.10 [#461](https://github.com/davidjbradshaw/iframe-resizer/issues/461) Don't run for server-side render
+
+- v3.5.9 Show warning message if no response from iFrame. [#463](https://github.com/davidjbradshaw/iframe-resizer/issues/463) Suppress warning message when code loaded via module [[Sergey Pereskokov](https://github.com/SerjoPepper)]
+
+- v3.5.8 [#315](https://github.com/davidjbradshaw/iframe-resizer/issues/315) Allow Scrolling to be set to 'auto'
+
+- v3.5.7 [#438](https://github.com/davidjbradshaw/iframe-resizer/issues/438) Check jQuery pluging wrapper not already loaded. [#423](https://github.com/davidjbradshaw/iframe-resizer/issues/423) Properly remove event listeners [[Aaron Hardy](https://github.com/Aaronius)]. [#401](https://github.com/davidjbradshaw/iframe-resizer/issues/401) Make tagged element fall back to all elements if tag not found. [#381](https://github.com/davidjbradshaw/iframe-resizer/issues/381) Fixing disconnect when iframe is missing temporarly [[Jeff Hicken](https://github.com/jhicken)]. Added warnings for missing iFrame and deprecated options
+
+- v3.5.5 [#373](https://github.com/davidjbradshaw/iframe-resizer/issues/373) Add option for custom size calculation methods in iFrame. [#374](https://github.com/davidjbradshaw/iframe-resizer/issues/374) Fix bug with in page links called from parent page
+
+- v3.5.4 [#362](https://github.com/davidjbradshaw/iframe-resizer/issues/362) Handle jQuery being loaded in odd ways. [#297](https://github.com/davidjbradshaw/iframe-resizer/issues/297) Ensure document ready before resizing
+
+- v3.5.3 [#283](https://github.com/davidjbradshaw/iframe-resizer/issues/283) Added _readystatechange_ event listener
+
+- v3.5.2 [#314](https://github.com/davidjbradshaw/iframe-resizer/pull/314) Add iframeHeight and iframeWidth properties to pageInfo [[Pierre Olivier](https://github.com/pomartel)]. [#303](https://github.com/davidjbradshaw/iframe-resizer/issues/303) Fix issue with IE8 polyFils
+
+- v3.5.1 [#286](https://github.com/davidjbradshaw/iframe-resizer/issues/286) Fixed _taggedElement / lowestElement / rightMostElement_ to calculate correct margin [[Dan Ballance](https://github.com/danballance)]
+
+- v3.5.0 Recall getPageInfo callback when parent page position changes. Added _Array.prototype.forEach_ to IE8 polyfils
+
+- v3.4.2 Only teardown events on close if currently enabled
+
+- v3.4.1 [#271](https://github.com/davidjbradshaw/iframe-resizer/issues/271) Fix bower.json to point to _js_ folder, rather then _src_ [[Yachi](https://github.com/yachi)]
+
+- v3.4.0 [#262](https://github.com/davidjbradshaw/iframe-resizer/issues/262) Add _getPageInfo_ method to _parentIFrame_ [[Pierre Olivier](https://github.com/pomartel)]. [#263](https://github.com/davidjbradshaw/iframe-resizer/issues/263) Change _leftMostElement_ to rightMostElement [[Luiz Panariello](https://github.com/LuizPanariello)]. [#265](https://github.com/davidjbradshaw/iframe-resizer/issues/265) Fix issue when no options being passed and added test for this
+
+- v3.3.1 Point index.js to the JS folder, instead of the src folder. Added touch event listeners. _AutoResize_ method now returns current state
+
+- v3.3.0 [#97](https://github.com/davidjbradshaw/iframe-resizer/issues/97) Add _autoResize_ method to _parentIFrame_. Fix bug when _setHeightCalculationMethod_ is called with invalid value. Add interval timer to event teardown. Log targetOrigin\*. [#253](https://github.com/davidjbradshaw/iframe-resizer/issues/253) Work around bug with MooTools interfering with system objects
+
+- v3.2.0 Added calculation of margin to _LowestElement_, _LeftMostElement_ and _taggedElement_ calculation modes. Check callback function is a function before calling it. [#246](https://github.com/davidjbradshaw/iframe-resizer/issues/246) Fixed issue when _onScroll_ changes the page position. [#247](https://github.com/davidjbradshaw/iframe-resizer/issues/247) Fix rounding issue when page is zoomed in Chrome [[thenewguy](https://github.com/thenewguy)]
+
+- v3.1.1 Added _onReady_ to iFrame. Create _iFrameResizer_ object on iFrame during setup, rather than waiting for init message to be returned from iFrame. Add ref to iFrame in host page log messages. [#245](https://github.com/davidjbradshaw/iframe-resizer/issues/245) Fix issue with iFrame not correctly resizing when multiple images are injected into the page [[mdgbayly](https://github.com/mdgbayly)]. [#246](https://github.com/davidjbradshaw/iframe-resizer/issues/246) Fix issue with including ':' in messages passed to iFrames
+
+- v3.1.0 [#101](https://github.com/davidjbradshaw/iframe-resizer/issues/101) Support async loading of iFrame script. [#239](https://github.com/davidjbradshaw/iframe-resizer/issues/239) Throttle size checking to once per screen refresh (16ms). Fixed issue with hidden iFrames in FireFox. Improved handling of parent page events. [#236](https://github.com/davidjbradshaw/iframe-resizer/issues/236) Cope with iFrames that don't have a _src_ value. [#242](https://github.com/davidjbradshaw/iframe-resizer/issues/242) Fix issue where iFrame is removed and then put back with same ID [[Alban Mouton](https://github.com/albanm)]
+
+- v3.0.0 Added _taggedElement_ size calculation method. [#199](https://github.com/davidjbradshaw/iframe-resizer/issues/199) Added in page options to iFrame. [#70](https://github.com/davidjbradshaw/iframe-resizer/issues/70) Added width calculation method options. Added methods to bound iFrames to comunicate from parent to iFrame. Ignore calls to setup an already bound iFrame. Improved event handling. Refactored MutationObserver functions. Moved IE8 polyfil from docs to own JS file and added _Funtion.prototype.bind()_. Added detection for tab focus. Fixed bug with nested inPageLinks. Public methods in iFrame now always enabled and option removed. Renamed enableInPageLinks to inPageLinks. Added double iFrame example
+
+- v2.8.10 Fixed bug with resizeFrom option not having default value in iFrame, if called from old version in parent page
+
+- v2.8.9 [#220](https://github.com/davidjbradshaw/iframe-resizer/issues/220) Switched from using _deviceorientation_ to _orientationchange_ event listner [[Brandon Kobel]/https://github.com/kobelb)]
+
+- v2.8.8 [#213](https://github.com/davidjbradshaw/iframe-resizer/issues/213) Ensure onInit fires when iFrame not sized during initialisation. Check autoResize option before resizing from parent. Lower message about resize before initialisation from 'warn' to 'log'. Updated hover example
+
+- v2.8.7 [#205](https://github.com/davidjbradshaw/iframe-resizer/issues/205) Fix race condition when page resized during page init [[Ian Caunce](https://github.com/IanCaunce)]. [#203](https://github.com/davidjbradshaw/iframe-resizer/issues/203) Added option for _checkOrigin_ to have list of allowed domains for the iFrame [[Andrej Golcov](https://github.com/andrej2k)]. [#202](https://github.com/davidjbradshaw/iframe-resizer/issues/202) Handle script being loaded more than once [[Nickolay Ribal](https://github.com/elektronik2k5)].
+ [#167](https://github.com/davidjbradshaw/iframe-resizer/issues/167) Added WebPack support [[Stephan Salat](https://github.com/ssalat)]
+
+- v2.8.6 [#163](https://github.com/davidjbradshaw/iframe-resizer/issues/163) Moved window resize event detection from iFrame to parent page. [#160](https://github.com/davidjbradshaw/iframe-resizer/issues/160) Warn, rather than error, if iFrame has been unexpectantly removed from page. The _parentIFrame.close()_ method nolonger calls _onResized()_
+
+- v2.8.5 [#173](https://github.com/davidjbradshaw/iframe-resizer/issues/173) Scope settings to iFrame. [#171](https://github.com/davidjbradshaw/iframe-resizer/issues/171) Fixed _parentIFrame.close()_ to work with 0 height iframes [Both [Reed Dadoune](https://github.com/ReedD)]
+
+- v2.8.4 Added switch for inPageLinking support
+
+- v2.8.3 Throw error if passed a non-DOM object
+
+- v2.8.2 [#145](https://github.com/davidjbradshaw/iframe-resizer/issues/145) Fixed in page links, to work with HTML IDs that are not valid CSS IDs [[Erin Millard](https://github.com/ezzatron)]. Moved map files from src to js folder. Added to NPM
+
+- v2.8.1 [#138](https://github.com/davidjbradshaw/iframe-resizer/issues/138) Added option to pass in iFrame object, instead of selector
+
+- v2.8.0 [#68](https://github.com/davidjbradshaw/iframe-resizer/issues/68) Added support for in page links and _onScroll()_ function. [#140](https://github.com/davidjbradshaw/iframe-resizer/issues/140) Added listener for _transitionend_ event [[Mat Brown](https://github.com/outoftime)]. Added listeners for animation events. Added listener for _deviceorientation_ event. Improved logging for nested iFrames
+
+- v2.7.1 [#131](https://github.com/davidjbradshaw/iframe-resizer/issues/131) Fix code that works out position of iFrame on host page
+
+- v2.7.0 [#129](https://github.com/davidjbradshaw/iframe-resizer/issues/129) Parse data passed to _parentIFrame.sendMessage()_ into JSON to allow complex data types to be sent to _onMessage()_
+
+- v2.6.5 [#107](https://github.com/davidjbradshaw/iframe-resizer/issues/107) Added Node support for use with Browserify
+
+- v2.6.4 [#115](https://github.com/davidjbradshaw/iframe-resizer/issues/115) Added _parentIFrame.scrollToOffset()_ method
+
+- v2.6.3 [#115](https://github.com/davidjbradshaw/iframe-resizer/issues/115) Fixed issue with the range check sometimes causing non-resizing messages to be rejected
+
+- v2.6.2 [#104](https://github.com/davidjbradshaw/iframe-resizer/issues/104) Fixed issue with jQuery.noConflict [[Dmitry Mukhutdinov](https://github.com/flyingleafe)]
+
+- v2.6.1 [#91](https://github.com/davidjbradshaw/iframe-resizer/issues/91) Fixed issue with jQuery version requiring empty object if no options are being set
+
+- v2.6.0 Added _parentIFrame.scrollTo()_ method. Added _Tolerance_ option. [#85](https://github.com/davidjbradshaw/iframe-resizer/issues/85) Update troubleshooting guide [[Kevin Sproles](https://github.com/kevinsproles)]
+
+- v2.5.2 [#67](https://github.com/davidjbradshaw/iframe-resizer/issues/67) Allow lowercase `<iframe>` tags for XHTML complience [[SlimerDude](https://github.com/SlimerDude)]. [#69](https://github.com/davidjbradshaw/iframe-resizer/issues/69) Fix watch task typo in gruntfile.js [[Matthew Hupman](https://github.com/mhupman)]. Remove trailing comma in heightCalcMethods array [#76](https://github.com/davidjbradshaw/iframe-resizer/issues/76) [[Fabio Scala](https://github.com/fabioscala)]
+
+- v2.5.1 [#58](https://github.com/davidjbradshaw/iframe-resizer/issues/58) Fixed endless loop and margin issues with an unnested mid-tier iframe. [#59](https://github.com/davidjbradshaw/iframe-resizer/issues/59) Fixed main property of [Bower](https://github.com/http://bower.io/) config file
+
+- v2.5.0 Added _minHeight_, _maxHeight_, _minWidth_ and _maxWidth_ options. Added _onInit_ and _onClosed_ functions (Close event calling _onResized_ is deprecated). Added **grow** and **lowestElement** _heightCalculationMethods_. Added AMD support. [#52](https://github.com/davidjbradshaw/iframe-resizer/issues/52) Added _sendMessage_ example. [#54](https://github.com/davidjbradshaw/iframe-resizer/issues/54) Work around IE8's borked JS execution stack. [#55](https://github.com/davidjbradshaw/iframe-resizer/issues/55) Check datatype of passed in options
+
+- v2.4.8 Fix issue when message passed to onMessage contains a colon
+
+- v2.4.7 [#49](https://github.com/davidjbradshaw/iframe-resizer/issues/49) Deconflict requestAnimationFrame
+
+- v2.4.6 [#46](https://github.com/davidjbradshaw/iframe-resizer/issues/46) Fix iFrame event listener in IE8
+
+- v2.4.5 [#41](https://github.com/davidjbradshaw/iframe-resizer/issues/41) Prevent error in FireFox when body is hidden by CSS [[Scott Otis](https://github.com//Scotis)]
+
+- v2.4.4 Enable nested iFrames ([#31](https://github.com/davidjbradshaw/iframe-resizer/issues/31) Filter incoming iFrame message in host-page script. [#33](https://github.com/davidjbradshaw/iframe-resizer/issues/33) Squash unexpected message warning when using nested iFrames. Improved logging for nested iFrames). [#38](https://github.com/davidjbradshaw/iframe-resizer/issues/38) Detect late image loads that cause a resize due to async image loading in WebKit [[Yassin](https://github.com//ynh)]. Fixed :Hover example in FireFox. Increased trigger timeout lock to 64ms
+
+- v2.4.3 Simplified handling of double fired events. Fixed test coverage
+
+- v2.4.2 Fix missing 'px' unit when resetting height
+
+- v2.4.1 Fix screen flicker issue with scroll height calculation methods in v2.4.0
+
+- v2.4.0 Improved handling of alternate sizing methods, so that they will now shrink on all trigger events, except _Interval_. Prevent error when incoming message to iFrame is an object
+
+- v2.3.2 Fix backwards compatibility issue between V2 iFrame and V1 host-page scripts
+
+- v2.3.1 Added setHeightCalculationMethod() method in iFrame. Added _min_ option to the height calculation methods. Invalid value for _heightCalculationMethod_ is now a warning rather than an error and now falls back to the default value
+
+- v2.3.0 Added extra _heightCalculationMethod_ options. Inject clearFix into 'body' to work around CSS floats preventing the height being correctly calculated. Added meaningful error message for non-valid values in _heightCalculationMethod_. Stop **click** events firing for 50ms after **size** events. Fixed hover example in old IE
+
+- v2.2.3 [#26](https://github.com/davidjbradshaw/iframe-resizer/issues/26) Locally scope jQuery to \$, so there is no dependancy on it being defined globally
+
+- v2.2.2 [#25](https://github.com/davidjbradshaw/iframe-resizer/issues/25) Added click listener to Window, to detect CSS checkbox resize events
+
+- v2.2.1 [#24](https://github.com/davidjbradshaw/iframe-resizer/issues/24) Prevent error when incoming message to host page is an object [[Torjus Eidet](https://github.com/torjue)]
+
+- v2.2.0 Added targetOrigin option to sendMessage function. Added bodyBackground option. Expanded troubleshooting section
+
+- v2.1.1 [#16](https://github.com/davidjbradshaw/iframe-resizer/issues/16) Option to change the height calculation method in the iFrame from offsetHeight to scrollHeight. Troubleshooting section added to docs
+
+- v2.1.0 Added sendMessage() and getId() to window.parentIFrame. Changed width calculation to use scrollWidth. Removed deprecated object name in iFrame
+
+- v2.0.0 Added native JS public function, renamed script filename to reflect that jQuery is now optional. Renamed _do(Heigh/Width)_ to _size(Height/Width)_, renamed _contentWindowBodyMargin_ to _bodyMargin_ and renamed _callback_ _onResized_. Improved logging messages. Stop _resize_ event firing for 50ms after _interval_ event. Added multiple page example. Workout unsized margins inside the iFrame. The _bodyMargin_ property now accepts any valid value for a CSS margin. Check message origin is iFrame. Removed deprecated methods
+
+- v1.4.4 Fixed _bodyMargin_ bug
+
+- v1.4.3 CodeCoverage fixes. Documentation improvements
+
+- v1.4.2 Fixed size(250) example in IE8
+
+- v1.4.1 Setting `interval` to a negative number now forces the interval test to run instead of [MutationObserver](https://developer.mozilla.org/en/docs/Web/API/MutationObserver)
+
+- v1.4.0 [#12](https://github.com/davidjbradshaw/iframe-resizer/issues/12) Option to enable scrolling in iFrame, off by default. [#13](https://github.com/davidjbradshaw/iframe-resizer/issues/13) Bower dependancies updated
+
+- v1.3.7 Stop _resize_ event firing for 50ms after _size_ event. Added size(250) to example
+
+- v1.3.6 [#11](https://github.com/davidjbradshaw/iframe-resizer/issues/11) Updated jQuery to v1.11.0 in example due to IE11 having issues with jQuery v1.10.1
+
+- v1.3.5 Documentation improvements. Added Grunt-Bump to build script
+
+- v1.3.0 IFrame code now uses default values if called with an old version of the host page script. Improved function naming. Old names have been deprecated and removed from docs
+
+- v1.2.5 Fix publish to [plugins.jquery.com](https://plugins.jquery.com)
+
+- v1.2.0 Added autoResize option, added height/width values to iFrame public size function, set HTML tag height to auto, improved documentation [All [Jure Mav](https://github.com/jmav)]. Plus setInterval now only runs in browsers that don't support [MutationObserver](https://developer.mozilla.org/en/docs/Web/API/MutationObserver) and is on by default, sourceMaps added and close() method introduced to parentIFrame object in iFrame
+
+- v1.1.1 Added event type to messageData object
+
+- v1.1.0 Added DOM [MutationObserver](https://developer.mozilla.org/en/docs/Web/API/MutationObserver) trigger to better detect content changes in iFrame, [#7](https://github.com/davidjbradshaw/iframe-resizer/issues/7) Set height of iFrame body element to auto to prevent resizing loop, if it's set to a percentage
+
+- v1.0.3 [#6](https://github.com/davidjbradshaw/iframe-resizer/issues/6) Force incoming messages to string. Migrated to Grunt 4.x. Published to Bower
+
+- v1.0.2 [#2](https://github.com/davidjbradshaw/iframe-resizer/issues/2) mime-type changed for IE8-10
+
+- v1.0.0 Initial pubic release.
diff --git a/node_modules/iframe-resizer/CONTRIBUTING.md b/node_modules/iframe-resizer/CONTRIBUTING.md
new file mode 100644
index 0000000000..3c160cf7f1
--- /dev/null
+++ b/node_modules/iframe-resizer/CONTRIBUTING.md
@@ -0,0 +1,83 @@
+# Contributing to iframe-resizer
+
+Looking to contribute something? **Here's how you can help.**
+
+Please take a moment to review this document in order to make the contribution
+process easy and effective for everyone involved.
+
+## Using the issue tracker
+
+The [issue tracker](https://github.com/davidjbradshaw/iframe-resizer/issues) is
+the preferred channel for [bug reports](#bug-reports), [features requests](#feature-requests)
+and [submitting pull requests](#pull-requests).
+
+**Please do not use the issue tracker for personal support requests. These should be raised on
+Stack Overflow ([`iframe-resizer`](http://stackoverflow.com/questions/tagged/iframe-resizer) tag).**
+
+## Bug reports
+
+A bug is a _demonstrable problem_ that is caused by the code in the repository.
+Good bug reports are extremely helpful, so thanks!
+
+Guidelines for bug reports:
+
+0. **Lint your code** &mdash; Use [jshint](http://jshint.com/)
+ to ensure your problem isn't caused by a simple error in your own code.
+
+1. **Use the GitHub issue search** &mdash; check if the issue has already been
+ reported.
+
+1. **Check if the issue has been fixed** &mdash; try to reproduce it using the
+ latest `master` or development branch in the repository.
+
+1. **Isolate the problem** &mdash; ideally create a [reduced test
+ case](https://css-tricks.com/reduced-test-cases/) and a live example.
+
+A good bug report shouldn't leave others needing to chase you up for more
+information. Please try to be as detailed as possible in your report. What is
+your environment? What steps will reproduce the issue? What browser(s) and OS
+experience the problem? Do other browsers show the bug differently? What
+would you expect to be the outcome? All these details will help people to fix
+any potential bugs.
+
+Example:
+
+> Short and descriptive example bug report title
+>
+> A summary of the issue and the browser/OS environment in which it occurs. If
+> suitable, include the steps required to reproduce the bug.
+>
+> 1. This is the first step
+> 2. This is the second step
+> 3. Further steps, etc.
+>
+> `<url>` - a link to the reduced test case
+>
+> Any other information you want to share that is relevant to the issue being
+> reported. This might include the lines of code that you have identified as
+> causing the bug, and potential solutions (and your opinions on their
+> merits).
+
+## Feature requests
+
+Feature requests are welcome. But take a moment to find out whether your idea
+fits with the scope and aims of the project.
+
+## Pull requests
+
+Good pull requests—patches, improvements, new features—are a fantastic
+help. They should remain focused in scope and avoid containing unrelated
+commits.
+
+**Please ask first** before embarking on any significant pull request (e.g.
+implementing features or refactoring code),
+otherwise you risk spending a lot of time working on something that the
+project's developers might not want to merge into the project.
+
+In lieu of a formal style-guide, take care to maintain the existing coding
+style. Add unit tests for any new or changed functionality. Lint and test
+your code using [Grunt](http://gruntjs.com/).
+
+## License
+
+By contributing your code, you agree to license your contribution under the [MIT License](LICENSE).
diff --git a/node_modules/iframe-resizer/FUNDING.md b/node_modules/iframe-resizer/FUNDING.md
new file mode 100644
index 0000000000..79c2ac986d
--- /dev/null
+++ b/node_modules/iframe-resizer/FUNDING.md
@@ -0,0 +1,5 @@
+# Donate to Iframe-Resizer
+
+Iframe-resizer is the result of many 100s of hours of work, if you would like to join others in showing support for the development of this project, then please feel free to buy me a coffee.
+
+<a href="https://www.buymeacoffee.com/davidjbradshaw " target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/yellow_img.png" alt="Buy Me A Coffee" style="height: auto !important;width: auto !important;" ></a>
diff --git a/node_modules/iframe-resizer/LICENSE b/node_modules/iframe-resizer/LICENSE
new file mode 100644
index 0000000000..0c5dcf985b
--- /dev/null
+++ b/node_modules/iframe-resizer/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2013-2019 David J. Bradshaw
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/iframe-resizer/README.md b/node_modules/iframe-resizer/README.md
new file mode 100644
index 0000000000..ab1f96a7d4
--- /dev/null
+++ b/node_modules/iframe-resizer/README.md
@@ -0,0 +1,102 @@
+# iFrame Resizer V4
+
+[![NPM version](https://badge.fury.io/js/iframe-resizer.svg)](http://badge.fury.io/js/iframe-resizer)
+[![NPM Downloads](https://img.shields.io/npm/dm/iframe-resizer.svg)](https://npm-stat.com/charts.html?package=iframe-resizer&from=2014-12-31)
+[![](https://data.jsdelivr.com/v1/package/npm/iframe-resizer/badge?style=rounded)](https://www.jsdelivr.com/package/npm/iframe-resizer)
+[![Coverage Status](https://coveralls.io/repos/davidjbradshaw/iframe-resizer/badge.svg?branch=master&service=github)](https://coveralls.io/github/davidjbradshaw/iframe-resizer)
+[![Donate](https://img.shields.io/badge/Donate-PayPal-blue.svg)](https://www.paypal.me/davidjbradshaw)
+
+This library enables the automatic resizing of the height and width of both same and cross domain iFrames to fit their contained content. It provides a range of features to address the most common issues with using iFrames, these include:
+
+- Height and width resizing of the iFrame to content size.
+- Works with multiple and nested iFrames.
+- Domain authentication for cross domain iFrames.
+- Provides a range of page size calculation methods to support complex CSS layouts.
+- Detects changes to the DOM that can cause the page to resize using [MutationObserver](https://developer.mozilla.org/en/docs/Web/API/MutationObserver).
+- Detects events that can cause the page to resize (Window Resize, CSS Animation and Transition, Orientation Change and Mouse events).
+- Simplified messaging between iFrame and host page via [postMessage](https://developer.mozilla.org/en-US/docs/Web/API/window.postMessage).
+- Fixes in page links in iFrame and supports links between the iFrame and parent page.
+- Provides custom sizing and scrolling methods.
+- Exposes parent position and viewport size to the iFrame.
+- Works with [ViewerJS](http://viewerjs.org/) to support PDF and ODF documents.
+- Supports IE 11 ([V3 supports back to IE8](https://github.com/davidjbradshaw/iframe-resizer/tree/V3))
+
+## Donate
+
+Iframe-resizer is the result of many 100s of hours of work, if you would like to join others in showing support for the development of this project, then please feel free to buy me a coffee.
+
+<a href="https://www.buymeacoffee.com/davidjbradshaw " target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/yellow_img.png" alt="Buy Me A Coffee" style="height: auto !important;width: auto !important;" ></a>
+
+## Getting Started
+
+### Install
+
+This package can be installed via NPM (`npm install iframe-resizer --save`).
+
+### Usage
+
+The package contains two minified JavaScript files in the [js](https://github.com/davidjbradshaw/iframe-resizer/js) folder. The first ([iframeResizer.min.js](https://raw.githubusercontent.com/davidjbradshaw/iframe-resizer/master/js/iframeResizer.min.js)) is for the page hosting the iFrames. It can be called with via JavaScript:
+
+```js
+const iframes = iFrameResize( [{options}], [css selector] || [iframe] );
+```
+
+The second file ([iframeResizer.contentWindow.min.js](https://raw.github.com/davidjbradshaw/iframe-resizer/master/js/iframeResizer.contentWindow.min.js)) needs placing in the page(s) contained within your iFrame. <i>This file is designed to be a guest on someone else's system, so has no dependencies and won't do anything until it's activated by a message from the containing page</i>.
+
+### Typical setup
+
+The normal configuration is to have the iFrame resize when the browser window changes size or the content of the iFrame changes. To set this up you need to configure one of the dimensions of the iFrame to a percentage and tell the library to only update the other dimension. Normally you would set the width to 100% and have the height scale to fit the content.
+
+```html
+<style>
+ iframe {
+ width: 1px;
+ min-width: 100%;
+ }
+</style>
+<iframe id="myIframe" src="http://anotherdomain.com/iframe.html"></iframe>
+<script>
+ iFrameResize({ log: true }, '#myIframe')
+</script>
+```
+
+**Note:** Using _min-width_ to set the width of the iFrame, works around an issue in iOS that can prevent the iFrame from sizing correctly.
+
+If you have problems, check the [troubleshooting](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/troubleshooting.md) section.
+
+### Example
+
+To see this working take a look at this [example](http://davidjbradshaw.com/iframe-resizer/example/) and watch the [console](https://developer.mozilla.org/en-US/docs/Tools/Web_Console).
+
+## API Documentation
+
+IFrame-Resizer provides an extensive range of options and APIs for both the parent page and the iframed page.
+
+- **Parent Page API**
+ - [Options](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/parent_page/options.md)
+ - [Events](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/parent_page/events.md)
+ - [Methods](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/parent_page/methods.md)
+- **IFramed Page API**
+ - [Options](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/iframed_page/options.md)
+ - [Events](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/iframed_page/events.md)
+ - [Methods](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/iframed_page/methods.md)
+- **Use with Libraries and Frameworks**
+ - [React](https://github.com/davidjbradshaw/iframe-resizer-react)
+ - [Vue](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/use_with/vue.md)
+ - [Angular](https://github.com/davidjbradshaw/iframe-resizer/issues/478#issuecomment-347958630)
+ - [jQuery](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/use_with/jquery.md)
+- [Troubleshooting](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/troubleshooting.md)
+- [Upgrade from version 3](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/upgrade.md)
+- [Version history](https://github.com/davidjbradshaw/iframe-resizer/blob/master/CHANGELOG.md)
+
+## License
+
+Copyright &copy; 2013-20 [David J. Bradshaw](https://github.com/davidjbradshaw).
+Licensed under the [MIT License](LICENSE).
+
+<!--
+[![NPM](https://nodei.co/npm/iframe-resizer.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/iframe-resizer/)
+
+[![Build Status](https://travis-ci.org/davidjbradshaw/iframe-resizer.svg?branch=master)](https://travis-ci.org/davidjbradshaw/iframe-resizer)
+[![Known Vulnerabilities](https://snyk.io/test/github/davidjbradshaw/iframe-resizer/badge.svg)](https://snyk.io/test/github/davidjbradshaw/iframe-resizer)
+-->
diff --git a/node_modules/iframe-resizer/index.js b/node_modules/iframe-resizer/index.js
new file mode 100644
index 0000000000..bb62b01843
--- /dev/null
+++ b/node_modules/iframe-resizer/index.js
@@ -0,0 +1 @@
+module.exports = require('./js')
diff --git a/node_modules/iframe-resizer/js/iframeResizer.contentWindow.js b/node_modules/iframe-resizer/js/iframeResizer.contentWindow.js
new file mode 100644
index 0000000000..07f918490d
--- /dev/null
+++ b/node_modules/iframe-resizer/js/iframeResizer.contentWindow.js
@@ -0,0 +1,1288 @@
+/*
+ * File: iframeResizer.contentWindow.js
+ * Desc: Include this file in any page being loaded into an iframe
+ * to force the iframe to resize to the content size.
+ * Requires: iframeResizer.js on host page.
+ * Doc: https://github.com/davidjbradshaw/iframe-resizer
+ * Author: David J. Bradshaw - dave@bradshaw.net
+ *
+ */
+
+// eslint-disable-next-line sonarjs/cognitive-complexity, no-shadow-restricted-names
+;(function (undefined) {
+ if (typeof window === 'undefined') return // don't run for server side render
+
+ var autoResize = true,
+ base = 10,
+ bodyBackground = '',
+ bodyMargin = 0,
+ bodyMarginStr = '',
+ bodyObserver = null,
+ bodyPadding = '',
+ calculateWidth = false,
+ doubleEventList = { resize: 1, click: 1 },
+ eventCancelTimer = 128,
+ firstRun = true,
+ height = 1,
+ heightCalcModeDefault = 'bodyOffset',
+ heightCalcMode = heightCalcModeDefault,
+ initLock = true,
+ initMsg = '',
+ inPageLinks = {},
+ interval = 32,
+ intervalTimer = null,
+ logging = false,
+ msgID = '[iFrameSizer]', // Must match host page msg ID
+ msgIdLen = msgID.length,
+ myID = '',
+ resetRequiredMethods = {
+ max: 1,
+ min: 1,
+ bodyScroll: 1,
+ documentElementScroll: 1
+ },
+ resizeFrom = 'child',
+ sendPermit = true,
+ target = window.parent,
+ targetOriginDefault = '*',
+ tolerance = 0,
+ triggerLocked = false,
+ triggerLockedTimer = null,
+ throttledTimer = 16,
+ width = 1,
+ widthCalcModeDefault = 'scroll',
+ widthCalcMode = widthCalcModeDefault,
+ win = window,
+ onMessage = function () {
+ warn('onMessage function not defined')
+ },
+ onReady = function () {},
+ onPageInfo = function () {},
+ customCalcMethods = {
+ height: function () {
+ warn('Custom height calculation function not defined')
+ return document.documentElement.offsetHeight
+ },
+ width: function () {
+ warn('Custom width calculation function not defined')
+ return document.body.scrollWidth
+ }
+ },
+ eventHandlersByName = {},
+ passiveSupported = false
+
+ function noop() {}
+
+ try {
+ var options = Object.create(
+ {},
+ {
+ passive: {
+ get: function () {
+ passiveSupported = true
+ }
+ }
+ }
+ )
+ window.addEventListener('test', noop, options)
+ window.removeEventListener('test', noop, options)
+ } catch (error) {
+ /* */
+ }
+
+ function addEventListener(el, evt, func, options) {
+ el.addEventListener(evt, func, passiveSupported ? options || {} : false)
+ }
+
+ function removeEventListener(el, evt, func) {
+ el.removeEventListener(evt, func, false)
+ }
+
+ function capitalizeFirstLetter(string) {
+ return string.charAt(0).toUpperCase() + string.slice(1)
+ }
+
+ // Based on underscore.js
+ function throttle(func) {
+ var context,
+ args,
+ result,
+ timeout = null,
+ previous = 0,
+ later = function () {
+ previous = getNow()
+ timeout = null
+ result = func.apply(context, args)
+ if (!timeout) {
+ // eslint-disable-next-line no-multi-assign
+ context = args = null
+ }
+ }
+
+ return function () {
+ var now = getNow()
+
+ if (!previous) {
+ previous = now
+ }
+
+ var remaining = throttledTimer - (now - previous)
+
+ context = this
+ args = arguments
+
+ if (remaining <= 0 || remaining > throttledTimer) {
+ if (timeout) {
+ clearTimeout(timeout)
+ timeout = null
+ }
+
+ previous = now
+ result = func.apply(context, args)
+
+ if (!timeout) {
+ // eslint-disable-next-line no-multi-assign
+ context = args = null
+ }
+ } else if (!timeout) {
+ timeout = setTimeout(later, remaining)
+ }
+
+ return result
+ }
+ }
+
+ var getNow =
+ Date.now ||
+ function () {
+ /* istanbul ignore next */ // Not testable in PhantonJS
+ return new Date().getTime()
+ }
+
+ function formatLogMsg(msg) {
+ return msgID + '[' + myID + '] ' + msg
+ }
+
+ function log(msg) {
+ if (logging && 'object' === typeof window.console) {
+ // eslint-disable-next-line no-console
+ console.log(formatLogMsg(msg))
+ }
+ }
+
+ function warn(msg) {
+ if ('object' === typeof window.console) {
+ // eslint-disable-next-line no-console
+ console.warn(formatLogMsg(msg))
+ }
+ }
+
+ function init() {
+ readDataFromParent()
+ log('Initialising iFrame (' + location.href + ')')
+ readDataFromPage()
+ setMargin()
+ setBodyStyle('background', bodyBackground)
+ setBodyStyle('padding', bodyPadding)
+ injectClearFixIntoBodyElement()
+ checkHeightMode()
+ checkWidthMode()
+ stopInfiniteResizingOfIFrame()
+ setupPublicMethods()
+ startEventListeners()
+ inPageLinks = setupInPageLinks()
+ sendSize('init', 'Init message from host page')
+ onReady()
+ }
+
+ function readDataFromParent() {
+ function strBool(str) {
+ return 'true' === str
+ }
+
+ var data = initMsg.substr(msgIdLen).split(':')
+
+ myID = data[0]
+ bodyMargin = undefined !== data[1] ? Number(data[1]) : bodyMargin // For V1 compatibility
+ calculateWidth = undefined !== data[2] ? strBool(data[2]) : calculateWidth
+ logging = undefined !== data[3] ? strBool(data[3]) : logging
+ interval = undefined !== data[4] ? Number(data[4]) : interval
+ autoResize = undefined !== data[6] ? strBool(data[6]) : autoResize
+ bodyMarginStr = data[7]
+ heightCalcMode = undefined !== data[8] ? data[8] : heightCalcMode
+ bodyBackground = data[9]
+ bodyPadding = data[10]
+ tolerance = undefined !== data[11] ? Number(data[11]) : tolerance
+ inPageLinks.enable = undefined !== data[12] ? strBool(data[12]) : false
+ resizeFrom = undefined !== data[13] ? data[13] : resizeFrom
+ widthCalcMode = undefined !== data[14] ? data[14] : widthCalcMode
+ }
+
+ function depricate(key) {
+ var splitName = key.split('Callback')
+
+ if (splitName.length === 2) {
+ var name =
+ 'on' + splitName[0].charAt(0).toUpperCase() + splitName[0].slice(1)
+ this[name] = this[key]
+ delete this[key]
+ warn(
+ "Deprecated: '" +
+ key +
+ "' has been renamed '" +
+ name +
+ "'. The old method will be removed in the next major version."
+ )
+ }
+ }
+
+ function readDataFromPage() {
+ function readData() {
+ var data = window.iFrameResizer
+
+ log('Reading data from page: ' + JSON.stringify(data))
+ Object.keys(data).forEach(depricate, data)
+
+ onMessage = 'onMessage' in data ? data.onMessage : onMessage
+ onReady = 'onReady' in data ? data.onReady : onReady
+ targetOriginDefault =
+ 'targetOrigin' in data ? data.targetOrigin : targetOriginDefault
+ heightCalcMode =
+ 'heightCalculationMethod' in data
+ ? data.heightCalculationMethod
+ : heightCalcMode
+ widthCalcMode =
+ 'widthCalculationMethod' in data
+ ? data.widthCalculationMethod
+ : widthCalcMode
+ }
+
+ function setupCustomCalcMethods(calcMode, calcFunc) {
+ if ('function' === typeof calcMode) {
+ log('Setup custom ' + calcFunc + 'CalcMethod')
+ customCalcMethods[calcFunc] = calcMode
+ calcMode = 'custom'
+ }
+
+ return calcMode
+ }
+
+ if (
+ 'iFrameResizer' in window &&
+ Object === window.iFrameResizer.constructor
+ ) {
+ readData()
+ heightCalcMode = setupCustomCalcMethods(heightCalcMode, 'height')
+ widthCalcMode = setupCustomCalcMethods(widthCalcMode, 'width')
+ }
+
+ log('TargetOrigin for parent set to: ' + targetOriginDefault)
+ }
+
+ function chkCSS(attr, value) {
+ if (-1 !== value.indexOf('-')) {
+ warn('Negative CSS value ignored for ' + attr)
+ value = ''
+ }
+ return value
+ }
+
+ function setBodyStyle(attr, value) {
+ if (undefined !== value && '' !== value && 'null' !== value) {
+ document.body.style[attr] = value
+ log('Body ' + attr + ' set to "' + value + '"')
+ }
+ }
+
+ function setMargin() {
+ // If called via V1 script, convert bodyMargin from int to str
+ if (undefined === bodyMarginStr) {
+ bodyMarginStr = bodyMargin + 'px'
+ }
+
+ setBodyStyle('margin', chkCSS('margin', bodyMarginStr))
+ }
+
+ function stopInfiniteResizingOfIFrame() {
+ document.documentElement.style.height = ''
+ document.body.style.height = ''
+ log('HTML & body height set to "auto"')
+ }
+
+ function manageTriggerEvent(options) {
+ var listener = {
+ add: function (eventName) {
+ function handleEvent() {
+ sendSize(options.eventName, options.eventType)
+ }
+
+ eventHandlersByName[eventName] = handleEvent
+
+ addEventListener(window, eventName, handleEvent, { passive: true })
+ },
+ remove: function (eventName) {
+ var handleEvent = eventHandlersByName[eventName]
+ delete eventHandlersByName[eventName]
+
+ removeEventListener(window, eventName, handleEvent)
+ }
+ }
+
+ if (options.eventNames && Array.prototype.map) {
+ options.eventName = options.eventNames[0]
+ options.eventNames.map(listener[options.method])
+ } else {
+ listener[options.method](options.eventName)
+ }
+
+ log(
+ capitalizeFirstLetter(options.method) +
+ ' event listener: ' +
+ options.eventType
+ )
+ }
+
+ function manageEventListeners(method) {
+ manageTriggerEvent({
+ method: method,
+ eventType: 'Animation Start',
+ eventNames: ['animationstart', 'webkitAnimationStart']
+ })
+ manageTriggerEvent({
+ method: method,
+ eventType: 'Animation Iteration',
+ eventNames: ['animationiteration', 'webkitAnimationIteration']
+ })
+ manageTriggerEvent({
+ method: method,
+ eventType: 'Animation End',
+ eventNames: ['animationend', 'webkitAnimationEnd']
+ })
+ manageTriggerEvent({
+ method: method,
+ eventType: 'Input',
+ eventName: 'input'
+ })
+ manageTriggerEvent({
+ method: method,
+ eventType: 'Mouse Up',
+ eventName: 'mouseup'
+ })
+ manageTriggerEvent({
+ method: method,
+ eventType: 'Mouse Down',
+ eventName: 'mousedown'
+ })
+ manageTriggerEvent({
+ method: method,
+ eventType: 'Orientation Change',
+ eventName: 'orientationchange'
+ })
+ manageTriggerEvent({
+ method: method,
+ eventType: 'Print',
+ eventName: ['afterprint', 'beforeprint']
+ })
+ manageTriggerEvent({
+ method: method,
+ eventType: 'Ready State Change',
+ eventName: 'readystatechange'
+ })
+ manageTriggerEvent({
+ method: method,
+ eventType: 'Touch Start',
+ eventName: 'touchstart'
+ })
+ manageTriggerEvent({
+ method: method,
+ eventType: 'Touch End',
+ eventName: 'touchend'
+ })
+ manageTriggerEvent({
+ method: method,
+ eventType: 'Touch Cancel',
+ eventName: 'touchcancel'
+ })
+ manageTriggerEvent({
+ method: method,
+ eventType: 'Transition Start',
+ eventNames: [
+ 'transitionstart',
+ 'webkitTransitionStart',
+ 'MSTransitionStart',
+ 'oTransitionStart',
+ 'otransitionstart'
+ ]
+ })
+ manageTriggerEvent({
+ method: method,
+ eventType: 'Transition Iteration',
+ eventNames: [
+ 'transitioniteration',
+ 'webkitTransitionIteration',
+ 'MSTransitionIteration',
+ 'oTransitionIteration',
+ 'otransitioniteration'
+ ]
+ })
+ manageTriggerEvent({
+ method: method,
+ eventType: 'Transition End',
+ eventNames: [
+ 'transitionend',
+ 'webkitTransitionEnd',
+ 'MSTransitionEnd',
+ 'oTransitionEnd',
+ 'otransitionend'
+ ]
+ })
+ if ('child' === resizeFrom) {
+ manageTriggerEvent({
+ method: method,
+ eventType: 'IFrame Resized',
+ eventName: 'resize'
+ })
+ }
+ }
+
+ function checkCalcMode(calcMode, calcModeDefault, modes, type) {
+ if (calcModeDefault !== calcMode) {
+ if (!(calcMode in modes)) {
+ warn(
+ calcMode + ' is not a valid option for ' + type + 'CalculationMethod.'
+ )
+ calcMode = calcModeDefault
+ }
+ log(type + ' calculation method set to "' + calcMode + '"')
+ }
+
+ return calcMode
+ }
+
+ function checkHeightMode() {
+ heightCalcMode = checkCalcMode(
+ heightCalcMode,
+ heightCalcModeDefault,
+ getHeight,
+ 'height'
+ )
+ }
+
+ function checkWidthMode() {
+ widthCalcMode = checkCalcMode(
+ widthCalcMode,
+ widthCalcModeDefault,
+ getWidth,
+ 'width'
+ )
+ }
+
+ function startEventListeners() {
+ if (true === autoResize) {
+ manageEventListeners('add')
+ setupMutationObserver()
+ } else {
+ log('Auto Resize disabled')
+ }
+ }
+
+ // function stopMsgsToParent() {
+ // log('Disable outgoing messages')
+ // sendPermit = false
+ // }
+
+ // function removeMsgListener() {
+ // log('Remove event listener: Message')
+ // removeEventListener(window, 'message', receiver)
+ // }
+
+ function disconnectMutationObserver() {
+ if (null !== bodyObserver) {
+ /* istanbul ignore next */ // Not testable in PhantonJS
+ bodyObserver.disconnect()
+ }
+ }
+
+ function stopEventListeners() {
+ manageEventListeners('remove')
+ disconnectMutationObserver()
+ clearInterval(intervalTimer)
+ }
+
+ // function teardown() {
+ // stopMsgsToParent()
+ // removeMsgListener()
+ // if (true === autoResize) stopEventListeners()
+ // }
+
+ function injectClearFixIntoBodyElement() {
+ var clearFix = document.createElement('div')
+ clearFix.style.clear = 'both'
+ // Guard against the following having been globally redefined in CSS.
+ clearFix.style.display = 'block'
+ clearFix.style.height = '0'
+ document.body.appendChild(clearFix)
+ }
+
+ function setupInPageLinks() {
+ function getPagePosition() {
+ return {
+ x:
+ window.pageXOffset !== undefined
+ ? window.pageXOffset
+ : document.documentElement.scrollLeft,
+ y:
+ window.pageYOffset !== undefined
+ ? window.pageYOffset
+ : document.documentElement.scrollTop
+ }
+ }
+
+ function getElementPosition(el) {
+ var elPosition = el.getBoundingClientRect(),
+ pagePosition = getPagePosition()
+
+ return {
+ x: parseInt(elPosition.left, 10) + parseInt(pagePosition.x, 10),
+ y: parseInt(elPosition.top, 10) + parseInt(pagePosition.y, 10)
+ }
+ }
+
+ function findTarget(location) {
+ function jumpToTarget(target) {
+ var jumpPosition = getElementPosition(target)
+
+ log(
+ 'Moving to in page link (#' +
+ hash +
+ ') at x: ' +
+ jumpPosition.x +
+ ' y: ' +
+ jumpPosition.y
+ )
+ sendMsg(jumpPosition.y, jumpPosition.x, 'scrollToOffset') // X&Y reversed at sendMsg uses height/width
+ }
+
+ var hash = location.split('#')[1] || location, // Remove # if present
+ hashData = decodeURIComponent(hash),
+ target =
+ document.getElementById(hashData) ||
+ document.getElementsByName(hashData)[0]
+
+ if (undefined !== target) {
+ jumpToTarget(target)
+ } else {
+ log(
+ 'In page link (#' +
+ hash +
+ ') not found in iFrame, so sending to parent'
+ )
+ sendMsg(0, 0, 'inPageLink', '#' + hash)
+ }
+ }
+
+ function checkLocationHash() {
+ if ('' !== location.hash && '#' !== location.hash) {
+ findTarget(location.href)
+ }
+ }
+
+ function bindAnchors() {
+ function setupLink(el) {
+ function linkClicked(e) {
+ e.preventDefault()
+
+ /* jshint validthis:true */
+ findTarget(this.getAttribute('href'))
+ }
+
+ if ('#' !== el.getAttribute('href')) {
+ addEventListener(el, 'click', linkClicked)
+ }
+ }
+
+ Array.prototype.forEach.call(
+ document.querySelectorAll('a[href^="#"]'),
+ setupLink
+ )
+ }
+
+ function bindLocationHash() {
+ addEventListener(window, 'hashchange', checkLocationHash)
+ }
+
+ function initCheck() {
+ // Check if page loaded with location hash after init resize
+ setTimeout(checkLocationHash, eventCancelTimer)
+ }
+
+ function enableInPageLinks() {
+ /* istanbul ignore else */ // Not testable in phantonJS
+ if (Array.prototype.forEach && document.querySelectorAll) {
+ log('Setting up location.hash handlers')
+ bindAnchors()
+ bindLocationHash()
+ initCheck()
+ } else {
+ warn(
+ 'In page linking not fully supported in this browser! (See README.md for IE8 workaround)'
+ )
+ }
+ }
+
+ if (inPageLinks.enable) {
+ enableInPageLinks()
+ } else {
+ log('In page linking not enabled')
+ }
+
+ return {
+ findTarget: findTarget
+ }
+ }
+
+ function setupPublicMethods() {
+ log('Enable public methods')
+
+ win.parentIFrame = {
+ autoResize: function autoResizeF(resize) {
+ if (true === resize && false === autoResize) {
+ autoResize = true
+ startEventListeners()
+ } else if (false === resize && true === autoResize) {
+ autoResize = false
+ stopEventListeners()
+ }
+ sendMsg(0, 0, 'autoResize', JSON.stringify(autoResize))
+ return autoResize
+ },
+
+ close: function closeF() {
+ sendMsg(0, 0, 'close')
+ // teardown()
+ },
+
+ getId: function getIdF() {
+ return myID
+ },
+
+ getPageInfo: function getPageInfoF(callback) {
+ if ('function' === typeof callback) {
+ onPageInfo = callback
+ sendMsg(0, 0, 'pageInfo')
+ } else {
+ onPageInfo = function () {}
+ sendMsg(0, 0, 'pageInfoStop')
+ }
+ },
+
+ moveToAnchor: function moveToAnchorF(hash) {
+ inPageLinks.findTarget(hash)
+ },
+
+ reset: function resetF() {
+ resetIFrame('parentIFrame.reset')
+ },
+
+ scrollTo: function scrollToF(x, y) {
+ sendMsg(y, x, 'scrollTo') // X&Y reversed at sendMsg uses height/width
+ },
+
+ scrollToOffset: function scrollToF(x, y) {
+ sendMsg(y, x, 'scrollToOffset') // X&Y reversed at sendMsg uses height/width
+ },
+
+ sendMessage: function sendMessageF(msg, targetOrigin) {
+ sendMsg(0, 0, 'message', JSON.stringify(msg), targetOrigin)
+ },
+
+ setHeightCalculationMethod: function setHeightCalculationMethodF(
+ heightCalculationMethod
+ ) {
+ heightCalcMode = heightCalculationMethod
+ checkHeightMode()
+ },
+
+ setWidthCalculationMethod: function setWidthCalculationMethodF(
+ widthCalculationMethod
+ ) {
+ widthCalcMode = widthCalculationMethod
+ checkWidthMode()
+ },
+
+ setTargetOrigin: function setTargetOriginF(targetOrigin) {
+ log('Set targetOrigin: ' + targetOrigin)
+ targetOriginDefault = targetOrigin
+ },
+
+ size: function sizeF(customHeight, customWidth) {
+ var valString =
+ '' + (customHeight || '') + (customWidth ? ',' + customWidth : '')
+ sendSize(
+ 'size',
+ 'parentIFrame.size(' + valString + ')',
+ customHeight,
+ customWidth
+ )
+ }
+ }
+ }
+
+ function initInterval() {
+ if (0 !== interval) {
+ log('setInterval: ' + interval + 'ms')
+ intervalTimer = setInterval(function () {
+ sendSize('interval', 'setInterval: ' + interval)
+ }, Math.abs(interval))
+ }
+ }
+
+ // Not testable in PhantomJS
+ /* istanbul ignore next */
+ function setupBodyMutationObserver() {
+ function addImageLoadListners(mutation) {
+ function addImageLoadListener(element) {
+ if (false === element.complete) {
+ log('Attach listeners to ' + element.src)
+ element.addEventListener('load', imageLoaded, false)
+ element.addEventListener('error', imageError, false)
+ elements.push(element)
+ }
+ }
+
+ if (mutation.type === 'attributes' && mutation.attributeName === 'src') {
+ addImageLoadListener(mutation.target)
+ } else if (mutation.type === 'childList') {
+ Array.prototype.forEach.call(
+ mutation.target.querySelectorAll('img'),
+ addImageLoadListener
+ )
+ }
+ }
+
+ function removeFromArray(element) {
+ elements.splice(elements.indexOf(element), 1)
+ }
+
+ function removeImageLoadListener(element) {
+ log('Remove listeners from ' + element.src)
+ element.removeEventListener('load', imageLoaded, false)
+ element.removeEventListener('error', imageError, false)
+ removeFromArray(element)
+ }
+
+ function imageEventTriggered(event, type, typeDesc) {
+ removeImageLoadListener(event.target)
+ sendSize(type, typeDesc + ': ' + event.target.src, undefined, undefined)
+ }
+
+ function imageLoaded(event) {
+ imageEventTriggered(event, 'imageLoad', 'Image loaded')
+ }
+
+ function imageError(event) {
+ imageEventTriggered(event, 'imageLoadFailed', 'Image load failed')
+ }
+
+ function mutationObserved(mutations) {
+ sendSize(
+ 'mutationObserver',
+ 'mutationObserver: ' + mutations[0].target + ' ' + mutations[0].type
+ )
+
+ // Deal with WebKit / Blink asyncing image loading when tags are injected into the page
+ mutations.forEach(addImageLoadListners)
+ }
+
+ function createMutationObserver() {
+ var target = document.querySelector('body'),
+ config = {
+ attributes: true,
+ attributeOldValue: false,
+ characterData: true,
+ characterDataOldValue: false,
+ childList: true,
+ subtree: true
+ }
+
+ observer = new MutationObserver(mutationObserved)
+
+ log('Create body MutationObserver')
+ observer.observe(target, config)
+
+ return observer
+ }
+
+ var elements = [],
+ MutationObserver =
+ window.MutationObserver || window.WebKitMutationObserver,
+ observer = createMutationObserver()
+
+ return {
+ disconnect: function () {
+ if ('disconnect' in observer) {
+ log('Disconnect body MutationObserver')
+ observer.disconnect()
+ elements.forEach(removeImageLoadListener)
+ }
+ }
+ }
+ }
+
+ function setupMutationObserver() {
+ var forceIntervalTimer = 0 > interval
+
+ // Not testable in PhantomJS
+ /* istanbul ignore if */ if (
+ window.MutationObserver ||
+ window.WebKitMutationObserver
+ ) {
+ if (forceIntervalTimer) {
+ initInterval()
+ } else {
+ bodyObserver = setupBodyMutationObserver()
+ }
+ } else {
+ log('MutationObserver not supported in this browser!')
+ initInterval()
+ }
+ }
+
+ // document.documentElement.offsetHeight is not reliable, so
+ // we have to jump through hoops to get a better value.
+ function getComputedStyle(prop, el) {
+ var retVal = 0
+ el = el || document.body // Not testable in phantonJS
+
+ retVal = document.defaultView.getComputedStyle(el, null)
+ retVal = null !== retVal ? retVal[prop] : 0
+
+ return parseInt(retVal, base)
+ }
+
+ function chkEventThottle(timer) {
+ if (timer > throttledTimer / 2) {
+ throttledTimer = 2 * timer
+ log('Event throttle increased to ' + throttledTimer + 'ms')
+ }
+ }
+
+ // Idea from https://github.com/guardian/iframe-messenger
+ function getMaxElement(side, elements) {
+ var elementsLength = elements.length,
+ elVal = 0,
+ maxVal = 0,
+ Side = capitalizeFirstLetter(side),
+ timer = getNow()
+
+ for (var i = 0; i < elementsLength; i++) {
+ elVal =
+ elements[i].getBoundingClientRect()[side] +
+ getComputedStyle('margin' + Side, elements[i])
+ if (elVal > maxVal) {
+ maxVal = elVal
+ }
+ }
+
+ timer = getNow() - timer
+
+ log('Parsed ' + elementsLength + ' HTML elements')
+ log('Element position calculated in ' + timer + 'ms')
+
+ chkEventThottle(timer)
+
+ return maxVal
+ }
+
+ function getAllMeasurements(dimention) {
+ return [
+ dimention.bodyOffset(),
+ dimention.bodyScroll(),
+ dimention.documentElementOffset(),
+ dimention.documentElementScroll()
+ ]
+ }
+
+ function getTaggedElements(side, tag) {
+ function noTaggedElementsFound() {
+ warn('No tagged elements (' + tag + ') found on page')
+ return document.querySelectorAll('body *')
+ }
+
+ var elements = document.querySelectorAll('[' + tag + ']')
+
+ if (0 === elements.length) noTaggedElementsFound()
+
+ return getMaxElement(side, elements)
+ }
+
+ function getAllElements() {
+ return document.querySelectorAll('body *')
+ }
+
+ var getHeight = {
+ bodyOffset: function getBodyOffsetHeight() {
+ return (
+ document.body.offsetHeight +
+ getComputedStyle('marginTop') +
+ getComputedStyle('marginBottom')
+ )
+ },
+
+ offset: function () {
+ return getHeight.bodyOffset() // Backwards compatability
+ },
+
+ bodyScroll: function getBodyScrollHeight() {
+ return document.body.scrollHeight
+ },
+
+ custom: function getCustomWidth() {
+ return customCalcMethods.height()
+ },
+
+ documentElementOffset: function getDEOffsetHeight() {
+ return document.documentElement.offsetHeight
+ },
+
+ documentElementScroll: function getDEScrollHeight() {
+ return document.documentElement.scrollHeight
+ },
+
+ max: function getMaxHeight() {
+ return Math.max.apply(null, getAllMeasurements(getHeight))
+ },
+
+ min: function getMinHeight() {
+ return Math.min.apply(null, getAllMeasurements(getHeight))
+ },
+
+ grow: function growHeight() {
+ return getHeight.max() // Run max without the forced downsizing
+ },
+
+ lowestElement: function getBestHeight() {
+ return Math.max(
+ getHeight.bodyOffset() || getHeight.documentElementOffset(),
+ getMaxElement('bottom', getAllElements())
+ )
+ },
+
+ taggedElement: function getTaggedElementsHeight() {
+ return getTaggedElements('bottom', 'data-iframe-height')
+ }
+ },
+ getWidth = {
+ bodyScroll: function getBodyScrollWidth() {
+ return document.body.scrollWidth
+ },
+
+ bodyOffset: function getBodyOffsetWidth() {
+ return document.body.offsetWidth
+ },
+
+ custom: function getCustomWidth() {
+ return customCalcMethods.width()
+ },
+
+ documentElementScroll: function getDEScrollWidth() {
+ return document.documentElement.scrollWidth
+ },
+
+ documentElementOffset: function getDEOffsetWidth() {
+ return document.documentElement.offsetWidth
+ },
+
+ scroll: function getMaxWidth() {
+ return Math.max(getWidth.bodyScroll(), getWidth.documentElementScroll())
+ },
+
+ max: function getMaxWidth() {
+ return Math.max.apply(null, getAllMeasurements(getWidth))
+ },
+
+ min: function getMinWidth() {
+ return Math.min.apply(null, getAllMeasurements(getWidth))
+ },
+
+ rightMostElement: function rightMostElement() {
+ return getMaxElement('right', getAllElements())
+ },
+
+ taggedElement: function getTaggedElementsWidth() {
+ return getTaggedElements('right', 'data-iframe-width')
+ }
+ }
+
+ function sizeIFrame(
+ triggerEvent,
+ triggerEventDesc,
+ customHeight,
+ customWidth
+ ) {
+ function resizeIFrame() {
+ height = currentHeight
+ width = currentWidth
+
+ sendMsg(height, width, triggerEvent)
+ }
+
+ function isSizeChangeDetected() {
+ function checkTolarance(a, b) {
+ var retVal = Math.abs(a - b) <= tolerance
+ return !retVal
+ }
+
+ currentHeight =
+ undefined !== customHeight ? customHeight : getHeight[heightCalcMode]()
+ currentWidth =
+ undefined !== customWidth ? customWidth : getWidth[widthCalcMode]()
+
+ return (
+ checkTolarance(height, currentHeight) ||
+ (calculateWidth && checkTolarance(width, currentWidth))
+ )
+ }
+
+ function isForceResizableEvent() {
+ return !(triggerEvent in { init: 1, interval: 1, size: 1 })
+ }
+
+ function isForceResizableCalcMode() {
+ return (
+ heightCalcMode in resetRequiredMethods ||
+ (calculateWidth && widthCalcMode in resetRequiredMethods)
+ )
+ }
+
+ function logIgnored() {
+ log('No change in size detected')
+ }
+
+ function checkDownSizing() {
+ if (isForceResizableEvent() && isForceResizableCalcMode()) {
+ resetIFrame(triggerEventDesc)
+ } else if (!(triggerEvent in { interval: 1 })) {
+ logIgnored()
+ }
+ }
+
+ var currentHeight, currentWidth
+
+ if (isSizeChangeDetected() || 'init' === triggerEvent) {
+ lockTrigger()
+ resizeIFrame()
+ } else {
+ checkDownSizing()
+ }
+ }
+
+ var sizeIFrameThrottled = throttle(sizeIFrame)
+
+ function sendSize(triggerEvent, triggerEventDesc, customHeight, customWidth) {
+ function recordTrigger() {
+ if (!(triggerEvent in { reset: 1, resetPage: 1, init: 1 })) {
+ log('Trigger event: ' + triggerEventDesc)
+ }
+ }
+
+ function isDoubleFiredEvent() {
+ return triggerLocked && triggerEvent in doubleEventList
+ }
+
+ if (!isDoubleFiredEvent()) {
+ recordTrigger()
+ if (triggerEvent === 'init') {
+ sizeIFrame(triggerEvent, triggerEventDesc, customHeight, customWidth)
+ } else {
+ sizeIFrameThrottled(
+ triggerEvent,
+ triggerEventDesc,
+ customHeight,
+ customWidth
+ )
+ }
+ } else {
+ log('Trigger event cancelled: ' + triggerEvent)
+ }
+ }
+
+ function lockTrigger() {
+ if (!triggerLocked) {
+ triggerLocked = true
+ log('Trigger event lock on')
+ }
+ clearTimeout(triggerLockedTimer)
+ triggerLockedTimer = setTimeout(function () {
+ triggerLocked = false
+ log('Trigger event lock off')
+ log('--')
+ }, eventCancelTimer)
+ }
+
+ function triggerReset(triggerEvent) {
+ height = getHeight[heightCalcMode]()
+ width = getWidth[widthCalcMode]()
+
+ sendMsg(height, width, triggerEvent)
+ }
+
+ function resetIFrame(triggerEventDesc) {
+ var hcm = heightCalcMode
+ heightCalcMode = heightCalcModeDefault
+
+ log('Reset trigger event: ' + triggerEventDesc)
+ lockTrigger()
+ triggerReset('reset')
+
+ heightCalcMode = hcm
+ }
+
+ function sendMsg(height, width, triggerEvent, msg, targetOrigin) {
+ function setTargetOrigin() {
+ if (undefined === targetOrigin) {
+ targetOrigin = targetOriginDefault
+ } else {
+ log('Message targetOrigin: ' + targetOrigin)
+ }
+ }
+
+ function sendToParent() {
+ var size = height + ':' + width,
+ message =
+ myID +
+ ':' +
+ size +
+ ':' +
+ triggerEvent +
+ (undefined !== msg ? ':' + msg : '')
+
+ log('Sending message to host page (' + message + ')')
+ target.postMessage(msgID + message, targetOrigin)
+ }
+
+ if (true === sendPermit) {
+ setTargetOrigin()
+ sendToParent()
+ }
+ }
+
+ function receiver(event) {
+ var processRequestFromParent = {
+ init: function initFromParent() {
+ initMsg = event.data
+ target = event.source
+
+ init()
+ firstRun = false
+ setTimeout(function () {
+ initLock = false
+ }, eventCancelTimer)
+ },
+
+ reset: function resetFromParent() {
+ if (!initLock) {
+ log('Page size reset by host page')
+ triggerReset('resetPage')
+ } else {
+ log('Page reset ignored by init')
+ }
+ },
+
+ resize: function resizeFromParent() {
+ sendSize('resizeParent', 'Parent window requested size check')
+ },
+
+ moveToAnchor: function moveToAnchorF() {
+ inPageLinks.findTarget(getData())
+ },
+ inPageLink: function inPageLinkF() {
+ this.moveToAnchor()
+ }, // Backward compatability
+
+ pageInfo: function pageInfoFromParent() {
+ var msgBody = getData()
+ log('PageInfoFromParent called from parent: ' + msgBody)
+ onPageInfo(JSON.parse(msgBody))
+ log(' --')
+ },
+
+ message: function messageFromParent() {
+ var msgBody = getData()
+
+ log('onMessage called from parent: ' + msgBody)
+ // eslint-disable-next-line sonarjs/no-extra-arguments
+ onMessage(JSON.parse(msgBody))
+ log(' --')
+ }
+ }
+
+ function isMessageForUs() {
+ return msgID === ('' + event.data).substr(0, msgIdLen) // ''+ Protects against non-string messages
+ }
+
+ function getMessageType() {
+ return event.data.split(']')[1].split(':')[0]
+ }
+
+ function getData() {
+ return event.data.substr(event.data.indexOf(':') + 1)
+ }
+
+ function isMiddleTier() {
+ return (
+ (!(typeof module !== 'undefined' && module.exports) &&
+ 'iFrameResize' in window) ||
+ ('jQuery' in window && 'iFrameResize' in window.jQuery.prototype)
+ )
+ }
+
+ function isInitMsg() {
+ // Test if this message is from a child below us. This is an ugly test, however, updating
+ // the message format would break backwards compatibity.
+ return event.data.split(':')[2] in { true: 1, false: 1 }
+ }
+
+ function callFromParent() {
+ var messageType = getMessageType()
+
+ if (messageType in processRequestFromParent) {
+ processRequestFromParent[messageType]()
+ } else if (!isMiddleTier() && !isInitMsg()) {
+ warn('Unexpected message (' + event.data + ')')
+ }
+ }
+
+ function processMessage() {
+ if (false === firstRun) {
+ callFromParent()
+ } else if (isInitMsg()) {
+ processRequestFromParent.init()
+ } else {
+ log(
+ 'Ignored message of type "' +
+ getMessageType() +
+ '". Received before initialization.'
+ )
+ }
+ }
+
+ if (isMessageForUs()) {
+ processMessage()
+ }
+ }
+
+ // Normally the parent kicks things off when it detects the iFrame has loaded.
+ // If this script is async-loaded, then tell parent page to retry init.
+ function chkLateLoaded() {
+ if ('loading' !== document.readyState) {
+ window.parent.postMessage('[iFrameResizerChild]Ready', '*')
+ }
+ }
+
+ addEventListener(window, 'message', receiver)
+ addEventListener(window, 'readystatechange', chkLateLoaded)
+ chkLateLoaded()
+
+
+})()
diff --git a/node_modules/iframe-resizer/js/iframeResizer.contentWindow.map b/node_modules/iframe-resizer/js/iframeResizer.contentWindow.map
new file mode 100644
index 0000000000..6f732004f9
--- /dev/null
+++ b/node_modules/iframe-resizer/js/iframeResizer.contentWindow.map
@@ -0,0 +1 @@
+{"version":3,"sources":["iframeResizer.contentWindow.js"],"names":["undefined","window","autoResize","base","bodyBackground","bodyMargin","bodyMarginStr","bodyObserver","bodyPadding","calculateWidth","doubleEventList","resize","click","eventCancelTimer","firstRun","height","heightCalcModeDefault","heightCalcMode","initLock","initMsg","inPageLinks","interval","intervalTimer","logging","msgID","msgIdLen","length","myID","resetRequiredMethods","max","min","bodyScroll","documentElementScroll","resizeFrom","sendPermit","target","parent","targetOriginDefault","tolerance","triggerLocked","triggerLockedTimer","throttledTimer","width","widthCalcModeDefault","widthCalcMode","win","onMessage","warn","onReady","onPageInfo","customCalcMethods","document","documentElement","offsetHeight","body","scrollWidth","eventHandlersByName","passiveSupported","options","Object","create","passive","get","addEventListener","noop","removeEventListener","error","func","context","args","result","timeout","previous","getNow","Date","now","getTime","getHeight","bodyOffset","getComputedStyle","offset","scrollHeight","custom","documentElementOffset","Math","apply","getAllMeasurements","grow","lowestElement","getMaxElement","getAllElements","taggedElement","getTaggedElements","getWidth","offsetWidth","scroll","rightMostElement","sizeIFrameThrottled","sizeIFrame","remaining","this","arguments","clearTimeout","setTimeout","later","event","processRequestFromParent","init","data","source","reset","log","triggerReset","sendSize","moveToAnchor","findTarget","getData","inPageLink","pageInfo","msgBody","JSON","parse","message","getMessageType","split","substr","indexOf","isInitMsg","true","false","callFromParent","messageType","module","exports","jQuery","prototype","chkLateLoaded","el","evt","capitalizeFirstLetter","string","charAt","toUpperCase","slice","formatLogMsg","msg","console","strBool","str","Number","enable","readDataFromParent","location","href","setupCustomCalcMethods","calcMode","calcFunc","iFrameResizer","constructor","stringify","keys","forEach","depricate","targetOrigin","heightCalculationMethod","widthCalculationMethod","readData","readDataFromPage","setBodyStyle","attr","value","chkCSS","setMargin","clearFix","createElement","style","clear","display","appendChild","injectClearFixIntoBodyElement","checkHeightMode","checkWidthMode","parentIFrame","startEventListeners","manageEventListeners","disconnect","clearInterval","sendMsg","close","getId","getPageInfo","callback","hash","resetIFrame","scrollTo","x","y","scrollToOffset","sendMessage","setHeightCalculationMethod","setWidthCalculationMethod","setTargetOrigin","size","customHeight","customWidth","getElementPosition","elPosition","getBoundingClientRect","pagePosition","pageXOffset","scrollLeft","pageYOffset","scrollTop","parseInt","left","top","jumpPosition","hashData","decodeURIComponent","getElementById","getElementsByName","checkLocationHash","bindAnchors","Array","call","querySelectorAll","getAttribute","e","preventDefault","setupInPageLinks","key","splitName","name","manageTriggerEvent","listener","add","eventName","handleEvent","eventType","remove","eventNames","map","method","checkCalcMode","calcModeDefault","modes","type","forceIntervalTimer","MutationObserver","WebKitMutationObserver","initInterval","addImageLoadListners","mutation","addImageLoadListener","element","complete","src","imageLoaded","imageError","elements","push","attributeName","removeImageLoadListener","splice","removeFromArray","imageEventTriggered","typeDesc","mutationObserved","mutations","observer","querySelector","observe","attributes","attributeOldValue","characterData","characterDataOldValue","childList","subtree","createMutationObserver","setupBodyMutationObserver","setupMutationObserver","setInterval","abs","prop","retVal","defaultView","side","elementsLength","elVal","maxVal","Side","timer","i","chkEventThottle","dimention","tag","triggerEvent","triggerEventDesc","currentHeight","currentWidth","checkTolarance","a","b","lockTrigger","resetPage","hcm","postMessage","readyState"],"mappings":"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","file":"iframeResizer.contentWindow.min.js"} \ No newline at end of file
diff --git a/node_modules/iframe-resizer/js/iframeResizer.contentWindow.min.js b/node_modules/iframe-resizer/js/iframeResizer.contentWindow.min.js
new file mode 100644
index 0000000000..5f94fc43d7
--- /dev/null
+++ b/node_modules/iframe-resizer/js/iframeResizer.contentWindow.min.js
@@ -0,0 +1,10 @@
+/*! iFrame Resizer (iframeSizer.contentWindow.min.js) - v4.2.11 - 2020-06-02
+ * Desc: Include this file in any page being loaded into an iframe
+ * to force the iframe to resize to the content size.
+ * Requires: iframeResizer.min.js on host page.
+ * Copyright: (c) 2020 David J. Bradshaw - dave@bradshaw.net
+ * License: MIT
+ */
+
+!function(d){if("undefined"!=typeof window){var n=!0,o=10,i="",r=0,a="",t=null,u="",c=!1,s={resize:1,click:1},l=128,f=!0,m=1,h="bodyOffset",g=h,p=!0,v="",y={},b=32,w=null,T=!1,E="[iFrameSizer]",O=E.length,S="",M={max:1,min:1,bodyScroll:1,documentElementScroll:1},I="child",N=!0,A=window.parent,C="*",z=0,k=!1,e=null,R=16,x=1,L="scroll",F=L,P=window,D=function(){re("onMessage function not defined")},j=function(){},q=function(){},H={height:function(){return re("Custom height calculation function not defined"),document.documentElement.offsetHeight},width:function(){return re("Custom width calculation function not defined"),document.body.scrollWidth}},W={},B=!1;try{var J=Object.create({},{passive:{get:function(){B=!0}}});window.addEventListener("test",ee,J),window.removeEventListener("test",ee,J)}catch(e){}var U,V,K,Q,X,Y,G=Date.now||function(){return(new Date).getTime()},Z={bodyOffset:function(){return document.body.offsetHeight+pe("marginTop")+pe("marginBottom")},offset:function(){return Z.bodyOffset()},bodyScroll:function(){return document.body.scrollHeight},custom:function(){return H.height()},documentElementOffset:function(){return document.documentElement.offsetHeight},documentElementScroll:function(){return document.documentElement.scrollHeight},max:function(){return Math.max.apply(null,ye(Z))},min:function(){return Math.min.apply(null,ye(Z))},grow:function(){return Z.max()},lowestElement:function(){return Math.max(Z.bodyOffset()||Z.documentElementOffset(),ve("bottom",we()))},taggedElement:function(){return be("bottom","data-iframe-height")}},$={bodyScroll:function(){return document.body.scrollWidth},bodyOffset:function(){return document.body.offsetWidth},custom:function(){return H.width()},documentElementScroll:function(){return document.documentElement.scrollWidth},documentElementOffset:function(){return document.documentElement.offsetWidth},scroll:function(){return Math.max($.bodyScroll(),$.documentElementScroll())},max:function(){return Math.max.apply(null,ye($))},min:function(){return Math.min.apply(null,ye($))},rightMostElement:function(){return ve("right",we())},taggedElement:function(){return be("right","data-iframe-width")}},_=(U=Te,X=null,Y=0,function(){var e=G(),t=R-(e-(Y=Y||e));return V=this,K=arguments,t<=0||R<t?(X&&(clearTimeout(X),X=null),Y=e,Q=U.apply(V,K),X||(V=K=null)):X=X||setTimeout(Ee,t),Q});te(window,"message",function(t){var n={init:function(){v=t.data,A=t.source,ae(),f=!1,setTimeout(function(){p=!1},l)},reset:function(){p?ie("Page reset ignored by init"):(ie("Page size reset by host page"),Me("resetPage"))},resize:function(){Oe("resizeParent","Parent window requested size check")},moveToAnchor:function(){y.findTarget(i())},inPageLink:function(){this.moveToAnchor()},pageInfo:function(){var e=i();ie("PageInfoFromParent called from parent: "+e),q(JSON.parse(e)),ie(" --")},message:function(){var e=i();ie("onMessage called from parent: "+e),D(JSON.parse(e)),ie(" --")}};function o(){return t.data.split("]")[1].split(":")[0]}function i(){return t.data.substr(t.data.indexOf(":")+1)}function r(){return t.data.split(":")[2]in{true:1,false:1}}function e(){var e=o();e in n?n[e]():("undefined"==typeof module||!module.exports)&&"iFrameResize"in window||"jQuery"in window&&"iFrameResize"in window.jQuery.prototype||r()||re("Unexpected message ("+t.data+")")}E===(""+t.data).substr(0,O)&&(!1===f?e():r()?n.init():ie('Ignored message of type "'+o()+'". Received before initialization.'))}),te(window,"readystatechange",Ae),Ae()}function ee(){}function te(e,t,n,o){e.addEventListener(t,n,!!B&&(o||{}))}function ne(e){return e.charAt(0).toUpperCase()+e.slice(1)}function oe(e){return E+"["+S+"] "+e}function ie(e){T&&"object"==typeof window.console&&console.log(oe(e))}function re(e){"object"==typeof window.console&&console.warn(oe(e))}function ae(){!function(){function e(e){return"true"===e}var t=v.substr(O).split(":");S=t[0],r=d!==t[1]?Number(t[1]):r,c=d!==t[2]?e(t[2]):c,T=d!==t[3]?e(t[3]):T,b=d!==t[4]?Number(t[4]):b,n=d!==t[6]?e(t[6]):n,a=t[7],g=d!==t[8]?t[8]:g,i=t[9],u=t[10],z=d!==t[11]?Number(t[11]):z,y.enable=d!==t[12]&&e(t[12]),I=d!==t[13]?t[13]:I,F=d!==t[14]?t[14]:F}(),ie("Initialising iFrame ("+location.href+")"),function(){function e(e,t){return"function"==typeof e&&(ie("Setup custom "+t+"CalcMethod"),H[t]=e,e="custom"),e}"iFrameResizer"in window&&Object===window.iFrameResizer.constructor&&(function(){var e=window.iFrameResizer;ie("Reading data from page: "+JSON.stringify(e)),Object.keys(e).forEach(ue,e),D="onMessage"in e?e.onMessage:D,j="onReady"in e?e.onReady:j,C="targetOrigin"in e?e.targetOrigin:C,g="heightCalculationMethod"in e?e.heightCalculationMethod:g,F="widthCalculationMethod"in e?e.widthCalculationMethod:F}(),g=e(g,"height"),F=e(F,"width"));ie("TargetOrigin for parent set to: "+C)}(),function(){d===a&&(a=r+"px");ce("margin",function(e,t){-1!==t.indexOf("-")&&(re("Negative CSS value ignored for "+e),t="");return t}("margin",a))}(),ce("background",i),ce("padding",u),function(){var e=document.createElement("div");e.style.clear="both",e.style.display="block",e.style.height="0",document.body.appendChild(e)}(),fe(),me(),document.documentElement.style.height="",document.body.style.height="",ie('HTML & body height set to "auto"'),ie("Enable public methods"),P.parentIFrame={autoResize:function(e){return!0===e&&!1===n?(n=!0,he()):!1===e&&!0===n&&(n=!1,de("remove"),null!==t&&t.disconnect(),clearInterval(w)),Ne(0,0,"autoResize",JSON.stringify(n)),n},close:function(){Ne(0,0,"close")},getId:function(){return S},getPageInfo:function(e){"function"==typeof e?(q=e,Ne(0,0,"pageInfo")):(q=function(){},Ne(0,0,"pageInfoStop"))},moveToAnchor:function(e){y.findTarget(e)},reset:function(){Ie("parentIFrame.reset")},scrollTo:function(e,t){Ne(t,e,"scrollTo")},scrollToOffset:function(e,t){Ne(t,e,"scrollToOffset")},sendMessage:function(e,t){Ne(0,0,"message",JSON.stringify(e),t)},setHeightCalculationMethod:function(e){g=e,fe()},setWidthCalculationMethod:function(e){F=e,me()},setTargetOrigin:function(e){ie("Set targetOrigin: "+e),C=e},size:function(e,t){Oe("size","parentIFrame.size("+((e||"")+(t?","+t:""))+")",e,t)}},he(),y=function(){function r(e){var t=e.getBoundingClientRect(),n={x:window.pageXOffset!==d?window.pageXOffset:document.documentElement.scrollLeft,y:window.pageYOffset!==d?window.pageYOffset:document.documentElement.scrollTop};return{x:parseInt(t.left,10)+parseInt(n.x,10),y:parseInt(t.top,10)+parseInt(n.y,10)}}function t(e){var t,n=e.split("#")[1]||e,o=decodeURIComponent(n),i=document.getElementById(o)||document.getElementsByName(o)[0];d!==i?(t=r(i),ie("Moving to in page link (#"+n+") at x: "+t.x+" y: "+t.y),Ne(t.y,t.x,"scrollToOffset")):(ie("In page link (#"+n+") not found in iFrame, so sending to parent"),Ne(0,0,"inPageLink","#"+n))}function e(){""!==location.hash&&"#"!==location.hash&&t(location.href)}function n(){Array.prototype.forEach.call(document.querySelectorAll('a[href^="#"]'),function(e){"#"!==e.getAttribute("href")&&te(e,"click",function(e){e.preventDefault(),t(this.getAttribute("href"))})})}y.enable?Array.prototype.forEach&&document.querySelectorAll?(ie("Setting up location.hash handlers"),n(),te(window,"hashchange",e),setTimeout(e,l)):re("In page linking not fully supported in this browser! (See README.md for IE8 workaround)"):ie("In page linking not enabled");return{findTarget:t}}(),Oe("init","Init message from host page"),j()}function ue(e){var t=e.split("Callback");if(2===t.length){var n="on"+t[0].charAt(0).toUpperCase()+t[0].slice(1);this[n]=this[e],delete this[e],re("Deprecated: '"+e+"' has been renamed '"+n+"'. The old method will be removed in the next major version.")}}function ce(e,t){d!==t&&""!==t&&"null"!==t&&ie("Body "+e+' set to "'+(document.body.style[e]=t)+'"')}function se(n){var e={add:function(e){function t(){Oe(n.eventName,n.eventType)}W[e]=t,te(window,e,t,{passive:!0})},remove:function(e){var t=W[e];delete W[e],function(e,t,n){e.removeEventListener(t,n,!1)}(window,e,t)}};n.eventNames&&Array.prototype.map?(n.eventName=n.eventNames[0],n.eventNames.map(e[n.method])):e[n.method](n.eventName),ie(ne(n.method)+" event listener: "+n.eventType)}function de(e){se({method:e,eventType:"Animation Start",eventNames:["animationstart","webkitAnimationStart"]}),se({method:e,eventType:"Animation Iteration",eventNames:["animationiteration","webkitAnimationIteration"]}),se({method:e,eventType:"Animation End",eventNames:["animationend","webkitAnimationEnd"]}),se({method:e,eventType:"Input",eventName:"input"}),se({method:e,eventType:"Mouse Up",eventName:"mouseup"}),se({method:e,eventType:"Mouse Down",eventName:"mousedown"}),se({method:e,eventType:"Orientation Change",eventName:"orientationchange"}),se({method:e,eventType:"Print",eventName:["afterprint","beforeprint"]}),se({method:e,eventType:"Ready State Change",eventName:"readystatechange"}),se({method:e,eventType:"Touch Start",eventName:"touchstart"}),se({method:e,eventType:"Touch End",eventName:"touchend"}),se({method:e,eventType:"Touch Cancel",eventName:"touchcancel"}),se({method:e,eventType:"Transition Start",eventNames:["transitionstart","webkitTransitionStart","MSTransitionStart","oTransitionStart","otransitionstart"]}),se({method:e,eventType:"Transition Iteration",eventNames:["transitioniteration","webkitTransitionIteration","MSTransitionIteration","oTransitionIteration","otransitioniteration"]}),se({method:e,eventType:"Transition End",eventNames:["transitionend","webkitTransitionEnd","MSTransitionEnd","oTransitionEnd","otransitionend"]}),"child"===I&&se({method:e,eventType:"IFrame Resized",eventName:"resize"})}function le(e,t,n,o){return t!==e&&(e in n||(re(e+" is not a valid option for "+o+"CalculationMethod."),e=t),ie(o+' calculation method set to "'+e+'"')),e}function fe(){g=le(g,h,Z,"height")}function me(){F=le(F,L,$,"width")}function he(){!0===n?(de("add"),function(){var e=b<0;window.MutationObserver||window.WebKitMutationObserver?e?ge():t=function(){function t(e){function t(e){!1===e.complete&&(ie("Attach listeners to "+e.src),e.addEventListener("load",i,!1),e.addEventListener("error",r,!1),u.push(e))}"attributes"===e.type&&"src"===e.attributeName?t(e.target):"childList"===e.type&&Array.prototype.forEach.call(e.target.querySelectorAll("img"),t)}function o(e){ie("Remove listeners from "+e.src),e.removeEventListener("load",i,!1),e.removeEventListener("error",r,!1),function(e){u.splice(u.indexOf(e),1)}(e)}function n(e,t,n){o(e.target),Oe(t,n+": "+e.target.src,d,d)}function i(e){n(e,"imageLoad","Image loaded")}function r(e){n(e,"imageLoadFailed","Image load failed")}function a(e){Oe("mutationObserver","mutationObserver: "+e[0].target+" "+e[0].type),e.forEach(t)}var u=[],c=window.MutationObserver||window.WebKitMutationObserver,s=function(){var e=document.querySelector("body");return s=new c(a),ie("Create body MutationObserver"),s.observe(e,{attributes:!0,attributeOldValue:!1,characterData:!0,characterDataOldValue:!1,childList:!0,subtree:!0}),s}();return{disconnect:function(){"disconnect"in s&&(ie("Disconnect body MutationObserver"),s.disconnect(),u.forEach(o))}}}():(ie("MutationObserver not supported in this browser!"),ge())}()):ie("Auto Resize disabled")}function ge(){0!==b&&(ie("setInterval: "+b+"ms"),w=setInterval(function(){Oe("interval","setInterval: "+b)},Math.abs(b)))}function pe(e,t){var n=0;return t=t||document.body,n=null!==(n=document.defaultView.getComputedStyle(t,null))?n[e]:0,parseInt(n,o)}function ve(e,t){for(var n=t.length,o=0,i=0,r=ne(e),a=G(),u=0;u<n;u++)i<(o=t[u].getBoundingClientRect()[e]+pe("margin"+r,t[u]))&&(i=o);return a=G()-a,ie("Parsed "+n+" HTML elements"),ie("Element position calculated in "+a+"ms"),function(e){R/2<e&&ie("Event throttle increased to "+(R=2*e)+"ms")}(a),i}function ye(e){return[e.bodyOffset(),e.bodyScroll(),e.documentElementOffset(),e.documentElementScroll()]}function be(e,t){var n=document.querySelectorAll("["+t+"]");return 0===n.length&&(re("No tagged elements ("+t+") found on page"),document.querySelectorAll("body *")),ve(e,n)}function we(){return document.querySelectorAll("body *")}function Te(e,t,n,o){var i,r;function a(e,t){return!(Math.abs(e-t)<=z)}i=d!==n?n:Z[g](),r=d!==o?o:$[F](),a(m,i)||c&&a(x,r)||"init"===e?(Se(),Ne(m=i,x=r,e)):e in{init:1,interval:1,size:1}||!(g in M||c&&F in M)?e in{interval:1}||ie("No change in size detected"):Ie(t)}function Ee(){Y=G(),X=null,Q=U.apply(V,K),X||(V=K=null)}function Oe(e,t,n,o){k&&e in s?ie("Trigger event cancelled: "+e):(e in{reset:1,resetPage:1,init:1}||ie("Trigger event: "+t),"init"===e?Te(e,t,n,o):_(e,t,n,o))}function Se(){k||(k=!0,ie("Trigger event lock on")),clearTimeout(e),e=setTimeout(function(){k=!1,ie("Trigger event lock off"),ie("--")},l)}function Me(e){m=Z[g](),x=$[F](),Ne(m,x,e)}function Ie(e){var t=g;g=h,ie("Reset trigger event: "+e),Se(),Me("reset"),g=t}function Ne(e,t,n,o,i){var r;!0===N&&(d===i?i=C:ie("Message targetOrigin: "+i),ie("Sending message to host page ("+(r=S+":"+(e+":"+t)+":"+n+(d!==o?":"+o:""))+")"),A.postMessage(E+r,i))}function Ae(){"loading"!==document.readyState&&window.parent.postMessage("[iFrameResizerChild]Ready","*")}}();
+//# sourceMappingURL=iframeResizer.contentWindow.map \ No newline at end of file
diff --git a/node_modules/iframe-resizer/js/iframeResizer.js b/node_modules/iframe-resizer/js/iframeResizer.js
new file mode 100644
index 0000000000..8b209cf837
--- /dev/null
+++ b/node_modules/iframe-resizer/js/iframeResizer.js
@@ -0,0 +1,1390 @@
+/*
+ * File: iframeResizer.js
+ * Desc: Force iframes to size to content.
+ * Requires: iframeResizer.contentWindow.js to be loaded into the target frame.
+ * Doc: https://github.com/davidjbradshaw/iframe-resizer
+ * Author: David J. Bradshaw - dave@bradshaw.net
+ * Contributor: Jure Mav - jure.mav@gmail.com
+ * Contributor: Reed Dadoune - reed@dadoune.com
+ */
+
+// eslint-disable-next-line sonarjs/cognitive-complexity, no-shadow-restricted-names
+;(function (undefined) {
+ if (typeof window === 'undefined') return // don't run for server side render
+
+ var count = 0,
+ logEnabled = false,
+ hiddenCheckEnabled = false,
+ msgHeader = 'message',
+ msgHeaderLen = msgHeader.length,
+ msgId = '[iFrameSizer]', // Must match iframe msg ID
+ msgIdLen = msgId.length,
+ pagePosition = null,
+ requestAnimationFrame = window.requestAnimationFrame,
+ resetRequiredMethods = {
+ max: 1,
+ scroll: 1,
+ bodyScroll: 1,
+ documentElementScroll: 1
+ },
+ settings = {},
+ timer = null,
+ defaults = {
+ autoResize: true,
+ bodyBackground: null,
+ bodyMargin: null,
+ bodyMarginV1: 8,
+ bodyPadding: null,
+ checkOrigin: true,
+ inPageLinks: false,
+ enablePublicMethods: true,
+ heightCalculationMethod: 'bodyOffset',
+ id: 'iFrameResizer',
+ interval: 32,
+ log: false,
+ maxHeight: Infinity,
+ maxWidth: Infinity,
+ minHeight: 0,
+ minWidth: 0,
+ resizeFrom: 'parent',
+ scrolling: false,
+ sizeHeight: true,
+ sizeWidth: false,
+ warningTimeout: 5000,
+ tolerance: 0,
+ widthCalculationMethod: 'scroll',
+ onClose: function () {
+ return true
+ },
+ onClosed: function () {},
+ onInit: function () {},
+ onMessage: function () {
+ warn('onMessage function not defined')
+ },
+ onResized: function () {},
+ onScroll: function () {
+ return true
+ }
+ }
+
+ function getMutationObserver() {
+ return (
+ window.MutationObserver ||
+ window.WebKitMutationObserver ||
+ window.MozMutationObserver
+ )
+ }
+
+ function addEventListener(el, evt, func) {
+ el.addEventListener(evt, func, false)
+ }
+
+ function removeEventListener(el, evt, func) {
+ el.removeEventListener(evt, func, false)
+ }
+
+ function setupRequestAnimationFrame() {
+ var vendors = ['moz', 'webkit', 'o', 'ms']
+ var x
+
+ // Remove vendor prefixing if prefixed and break early if not
+ for (x = 0; x < vendors.length && !requestAnimationFrame; x += 1) {
+ requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame']
+ }
+
+ if (!requestAnimationFrame) {
+ log('setup', 'RequestAnimationFrame not supported')
+ } else {
+ // Firefox extension content-scripts have a globalThis object that is not the same as window.
+ // Binding `requestAnimationFrame` to window allows the function to work and prevents errors
+ // being thrown when run in that context, and should be a no-op in every other context.
+ requestAnimationFrame = requestAnimationFrame.bind(window)
+ }
+ }
+
+ function getMyID(iframeId) {
+ var retStr = 'Host page: ' + iframeId
+
+ if (window.top !== window.self) {
+ if (window.parentIFrame && window.parentIFrame.getId) {
+ retStr = window.parentIFrame.getId() + ': ' + iframeId
+ } else {
+ retStr = 'Nested host page: ' + iframeId
+ }
+ }
+
+ return retStr
+ }
+
+ function formatLogHeader(iframeId) {
+ return msgId + '[' + getMyID(iframeId) + ']'
+ }
+
+ function isLogEnabled(iframeId) {
+ return settings[iframeId] ? settings[iframeId].log : logEnabled
+ }
+
+ function log(iframeId, msg) {
+ output('log', iframeId, msg, isLogEnabled(iframeId))
+ }
+
+ function info(iframeId, msg) {
+ output('info', iframeId, msg, isLogEnabled(iframeId))
+ }
+
+ function warn(iframeId, msg) {
+ output('warn', iframeId, msg, true)
+ }
+
+ function output(type, iframeId, msg, enabled) {
+ if (true === enabled && 'object' === typeof window.console) {
+ // eslint-disable-next-line no-console
+ console[type](formatLogHeader(iframeId), msg)
+ }
+ }
+
+ function iFrameListener(event) {
+ function resizeIFrame() {
+ function resize() {
+ setSize(messageData)
+ setPagePosition(iframeId)
+ on('onResized', messageData)
+ }
+
+ ensureInRange('Height')
+ ensureInRange('Width')
+
+ syncResize(resize, messageData, 'init')
+ }
+
+ function processMsg() {
+ var data = msg.substr(msgIdLen).split(':')
+ var height = data[1] ? parseInt(data[1], 10) : 0
+ var iframe = settings[data[0]] && settings[data[0]].iframe
+ var compStyle = getComputedStyle(iframe)
+
+ return {
+ iframe: iframe,
+ id: data[0],
+ height: height + getPaddingEnds(compStyle) + getBorderEnds(compStyle),
+ width: data[2],
+ type: data[3]
+ }
+ }
+
+ function getPaddingEnds(compStyle) {
+ if (compStyle.boxSizing !== 'border-box') {
+ return 0
+ }
+ var top = compStyle.paddingTop ? parseInt(compStyle.paddingTop, 10) : 0
+ var bot = compStyle.paddingBottom
+ ? parseInt(compStyle.paddingBottom, 10)
+ : 0
+ return top + bot
+ }
+
+ function getBorderEnds(compStyle) {
+ if (compStyle.boxSizing !== 'border-box') {
+ return 0
+ }
+ var top = compStyle.borderTopWidth
+ ? parseInt(compStyle.borderTopWidth, 10)
+ : 0
+ var bot = compStyle.borderBottomWidth
+ ? parseInt(compStyle.borderBottomWidth, 10)
+ : 0
+ return top + bot
+ }
+
+ function ensureInRange(Dimension) {
+ var max = Number(settings[iframeId]['max' + Dimension]),
+ min = Number(settings[iframeId]['min' + Dimension]),
+ dimension = Dimension.toLowerCase(),
+ size = Number(messageData[dimension])
+
+ log(iframeId, 'Checking ' + dimension + ' is in range ' + min + '-' + max)
+
+ if (size < min) {
+ size = min
+ log(iframeId, 'Set ' + dimension + ' to min value')
+ }
+
+ if (size > max) {
+ size = max
+ log(iframeId, 'Set ' + dimension + ' to max value')
+ }
+
+ messageData[dimension] = '' + size
+ }
+
+ function isMessageFromIFrame() {
+ function checkAllowedOrigin() {
+ function checkList() {
+ var i = 0,
+ retCode = false
+
+ log(
+ iframeId,
+ 'Checking connection is from allowed list of origins: ' +
+ checkOrigin
+ )
+
+ for (; i < checkOrigin.length; i++) {
+ if (checkOrigin[i] === origin) {
+ retCode = true
+ break
+ }
+ }
+ return retCode
+ }
+
+ function checkSingle() {
+ var remoteHost = settings[iframeId] && settings[iframeId].remoteHost
+ log(iframeId, 'Checking connection is from: ' + remoteHost)
+ return origin === remoteHost
+ }
+
+ return checkOrigin.constructor === Array ? checkList() : checkSingle()
+ }
+
+ var origin = event.origin,
+ checkOrigin = settings[iframeId] && settings[iframeId].checkOrigin
+
+ if (checkOrigin && '' + origin !== 'null' && !checkAllowedOrigin()) {
+ throw new Error(
+ 'Unexpected message received from: ' +
+ origin +
+ ' for ' +
+ messageData.iframe.id +
+ '. Message was: ' +
+ event.data +
+ '. This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.'
+ )
+ }
+
+ return true
+ }
+
+ function isMessageForUs() {
+ return (
+ msgId === ('' + msg).substr(0, msgIdLen) &&
+ msg.substr(msgIdLen).split(':')[0] in settings
+ ) // ''+Protects against non-string msg
+ }
+
+ function isMessageFromMetaParent() {
+ // Test if this message is from a parent above us. This is an ugly test, however, updating
+ // the message format would break backwards compatibity.
+ var retCode = messageData.type in { true: 1, false: 1, undefined: 1 }
+
+ if (retCode) {
+ log(iframeId, 'Ignoring init message from meta parent page')
+ }
+
+ return retCode
+ }
+
+ function getMsgBody(offset) {
+ return msg.substr(msg.indexOf(':') + msgHeaderLen + offset)
+ }
+
+ function forwardMsgFromIFrame(msgBody) {
+ log(
+ iframeId,
+ 'onMessage passed: {iframe: ' +
+ messageData.iframe.id +
+ ', message: ' +
+ msgBody +
+ '}'
+ )
+ on('onMessage', {
+ iframe: messageData.iframe,
+ message: JSON.parse(msgBody)
+ })
+ log(iframeId, '--')
+ }
+
+ function getPageInfo() {
+ var bodyPosition = document.body.getBoundingClientRect(),
+ iFramePosition = messageData.iframe.getBoundingClientRect()
+
+ return JSON.stringify({
+ iframeHeight: iFramePosition.height,
+ iframeWidth: iFramePosition.width,
+ clientHeight: Math.max(
+ document.documentElement.clientHeight,
+ window.innerHeight || 0
+ ),
+ clientWidth: Math.max(
+ document.documentElement.clientWidth,
+ window.innerWidth || 0
+ ),
+ offsetTop: parseInt(iFramePosition.top - bodyPosition.top, 10),
+ offsetLeft: parseInt(iFramePosition.left - bodyPosition.left, 10),
+ scrollTop: window.pageYOffset,
+ scrollLeft: window.pageXOffset,
+ documentHeight: document.documentElement.clientHeight,
+ documentWidth: document.documentElement.clientWidth,
+ windowHeight: window.innerHeight,
+ windowWidth: window.innerWidth
+ })
+ }
+
+ function sendPageInfoToIframe(iframe, iframeId) {
+ function debouncedTrigger() {
+ trigger('Send Page Info', 'pageInfo:' + getPageInfo(), iframe, iframeId)
+ }
+ debounceFrameEvents(debouncedTrigger, 32, iframeId)
+ }
+
+ function startPageInfoMonitor() {
+ function setListener(type, func) {
+ function sendPageInfo() {
+ if (settings[id]) {
+ sendPageInfoToIframe(settings[id].iframe, id)
+ } else {
+ stop()
+ }
+ }
+
+ ;['scroll', 'resize'].forEach(function (evt) {
+ log(id, type + evt + ' listener for sendPageInfo')
+ func(window, evt, sendPageInfo)
+ })
+ }
+
+ function stop() {
+ setListener('Remove ', removeEventListener)
+ }
+
+ function start() {
+ setListener('Add ', addEventListener)
+ }
+
+ var id = iframeId // Create locally scoped copy of iFrame ID
+
+ start()
+
+ if (settings[id]) {
+ settings[id].stopPageInfo = stop
+ }
+ }
+
+ function stopPageInfoMonitor() {
+ if (settings[iframeId] && settings[iframeId].stopPageInfo) {
+ settings[iframeId].stopPageInfo()
+ delete settings[iframeId].stopPageInfo
+ }
+ }
+
+ function checkIFrameExists() {
+ var retBool = true
+
+ if (null === messageData.iframe) {
+ warn(iframeId, 'IFrame (' + messageData.id + ') not found')
+ retBool = false
+ }
+ return retBool
+ }
+
+ function getElementPosition(target) {
+ var iFramePosition = target.getBoundingClientRect()
+
+ getPagePosition(iframeId)
+
+ return {
+ x: Math.floor(Number(iFramePosition.left) + Number(pagePosition.x)),
+ y: Math.floor(Number(iFramePosition.top) + Number(pagePosition.y))
+ }
+ }
+
+ function scrollRequestFromChild(addOffset) {
+ /* istanbul ignore next */ // Not testable in Karma
+ function reposition() {
+ pagePosition = newPosition
+ scrollTo()
+ log(iframeId, '--')
+ }
+
+ function calcOffset() {
+ return {
+ x: Number(messageData.width) + offset.x,
+ y: Number(messageData.height) + offset.y
+ }
+ }
+
+ function scrollParent() {
+ if (window.parentIFrame) {
+ window.parentIFrame['scrollTo' + (addOffset ? 'Offset' : '')](
+ newPosition.x,
+ newPosition.y
+ )
+ } else {
+ warn(
+ iframeId,
+ 'Unable to scroll to requested position, window.parentIFrame not found'
+ )
+ }
+ }
+
+ var offset = addOffset
+ ? getElementPosition(messageData.iframe)
+ : { x: 0, y: 0 },
+ newPosition = calcOffset()
+
+ log(
+ iframeId,
+ 'Reposition requested from iFrame (offset x:' +
+ offset.x +
+ ' y:' +
+ offset.y +
+ ')'
+ )
+
+ if (window.top !== window.self) {
+ scrollParent()
+ } else {
+ reposition()
+ }
+ }
+
+ function scrollTo() {
+ if (false !== on('onScroll', pagePosition)) {
+ setPagePosition(iframeId)
+ } else {
+ unsetPagePosition()
+ }
+ }
+
+ function findTarget(location) {
+ function jumpToTarget() {
+ var jumpPosition = getElementPosition(target)
+
+ log(
+ iframeId,
+ 'Moving to in page link (#' +
+ hash +
+ ') at x: ' +
+ jumpPosition.x +
+ ' y: ' +
+ jumpPosition.y
+ )
+ pagePosition = {
+ x: jumpPosition.x,
+ y: jumpPosition.y
+ }
+
+ scrollTo()
+ log(iframeId, '--')
+ }
+
+ function jumpToParent() {
+ if (window.parentIFrame) {
+ window.parentIFrame.moveToAnchor(hash)
+ } else {
+ log(
+ iframeId,
+ 'In page link #' +
+ hash +
+ ' not found and window.parentIFrame not found'
+ )
+ }
+ }
+
+ var hash = location.split('#')[1] || '',
+ hashData = decodeURIComponent(hash),
+ target =
+ document.getElementById(hashData) ||
+ document.getElementsByName(hashData)[0]
+
+ if (target) {
+ jumpToTarget()
+ } else if (window.top !== window.self) {
+ jumpToParent()
+ } else {
+ log(iframeId, 'In page link #' + hash + ' not found')
+ }
+ }
+
+ function on(funcName, val) {
+ return chkEvent(iframeId, funcName, val)
+ }
+
+ function actionMsg() {
+ if (settings[iframeId] && settings[iframeId].firstRun) firstRun()
+
+ switch (messageData.type) {
+ case 'close':
+ closeIFrame(messageData.iframe)
+ break
+
+ case 'message':
+ forwardMsgFromIFrame(getMsgBody(6))
+ break
+
+ case 'autoResize':
+ settings[iframeId].autoResize = JSON.parse(getMsgBody(9))
+ break
+
+ case 'scrollTo':
+ scrollRequestFromChild(false)
+ break
+
+ case 'scrollToOffset':
+ scrollRequestFromChild(true)
+ break
+
+ case 'pageInfo':
+ sendPageInfoToIframe(
+ settings[iframeId] && settings[iframeId].iframe,
+ iframeId
+ )
+ startPageInfoMonitor()
+ break
+
+ case 'pageInfoStop':
+ stopPageInfoMonitor()
+ break
+
+ case 'inPageLink':
+ findTarget(getMsgBody(9))
+ break
+
+ case 'reset':
+ resetIFrame(messageData)
+ break
+
+ case 'init':
+ resizeIFrame()
+ on('onInit', messageData.iframe)
+ break
+
+ default:
+ resizeIFrame()
+ }
+ }
+
+ function hasSettings(iframeId) {
+ var retBool = true
+
+ if (!settings[iframeId]) {
+ retBool = false
+ warn(
+ messageData.type +
+ ' No settings for ' +
+ iframeId +
+ '. Message was: ' +
+ msg
+ )
+ }
+
+ return retBool
+ }
+
+ function iFrameReadyMsgReceived() {
+ // eslint-disable-next-line no-restricted-syntax, guard-for-in
+ for (var iframeId in settings) {
+ trigger(
+ 'iFrame requested init',
+ createOutgoingMsg(iframeId),
+ settings[iframeId].iframe,
+ iframeId
+ )
+ }
+ }
+
+ function firstRun() {
+ if (settings[iframeId]) {
+ settings[iframeId].firstRun = false
+ }
+ }
+
+ var msg = event.data,
+ messageData = {},
+ iframeId = null
+
+ if ('[iFrameResizerChild]Ready' === msg) {
+ iFrameReadyMsgReceived()
+ } else if (isMessageForUs()) {
+ messageData = processMsg()
+ iframeId = messageData.id
+ if (settings[iframeId]) {
+ settings[iframeId].loaded = true
+ }
+
+ if (!isMessageFromMetaParent() && hasSettings(iframeId)) {
+ log(iframeId, 'Received: ' + msg)
+
+ if (checkIFrameExists() && isMessageFromIFrame()) {
+ actionMsg()
+ }
+ }
+ } else {
+ info(iframeId, 'Ignored: ' + msg)
+ }
+ }
+
+ function chkEvent(iframeId, funcName, val) {
+ var func = null,
+ retVal = null
+
+ if (settings[iframeId]) {
+ func = settings[iframeId][funcName]
+
+ if ('function' === typeof func) {
+ retVal = func(val)
+ } else {
+ throw new TypeError(
+ funcName + ' on iFrame[' + iframeId + '] is not a function'
+ )
+ }
+ }
+
+ return retVal
+ }
+
+ function removeIframeListeners(iframe) {
+ var iframeId = iframe.id
+ delete settings[iframeId]
+ }
+
+ function closeIFrame(iframe) {
+ var iframeId = iframe.id
+ if (chkEvent(iframeId, 'onClose', iframeId) === false) {
+ log(iframeId, 'Close iframe cancelled by onClose event')
+ return
+ }
+ log(iframeId, 'Removing iFrame: ' + iframeId)
+
+ try {
+ // Catch race condition error with React
+ if (iframe.parentNode) {
+ iframe.parentNode.removeChild(iframe)
+ }
+ } catch (error) {
+ warn(error)
+ }
+
+ chkEvent(iframeId, 'onClosed', iframeId)
+ log(iframeId, '--')
+ removeIframeListeners(iframe)
+ }
+
+ function getPagePosition(iframeId) {
+ if (null === pagePosition) {
+ pagePosition = {
+ x:
+ window.pageXOffset !== undefined
+ ? window.pageXOffset
+ : document.documentElement.scrollLeft,
+ y:
+ window.pageYOffset !== undefined
+ ? window.pageYOffset
+ : document.documentElement.scrollTop
+ }
+ log(
+ iframeId,
+ 'Get page position: ' + pagePosition.x + ',' + pagePosition.y
+ )
+ }
+ }
+
+ function setPagePosition(iframeId) {
+ if (null !== pagePosition) {
+ window.scrollTo(pagePosition.x, pagePosition.y)
+ log(
+ iframeId,
+ 'Set page position: ' + pagePosition.x + ',' + pagePosition.y
+ )
+ unsetPagePosition()
+ }
+ }
+
+ function unsetPagePosition() {
+ pagePosition = null
+ }
+
+ function resetIFrame(messageData) {
+ function reset() {
+ setSize(messageData)
+ trigger('reset', 'reset', messageData.iframe, messageData.id)
+ }
+
+ log(
+ messageData.id,
+ 'Size reset requested by ' +
+ ('init' === messageData.type ? 'host page' : 'iFrame')
+ )
+ getPagePosition(messageData.id)
+ syncResize(reset, messageData, 'reset')
+ }
+
+ function setSize(messageData) {
+ function setDimension(dimension) {
+ if (!messageData.id) {
+ log('undefined', 'messageData id not set')
+ return
+ }
+ messageData.iframe.style[dimension] = messageData[dimension] + 'px'
+ log(
+ messageData.id,
+ 'IFrame (' +
+ iframeId +
+ ') ' +
+ dimension +
+ ' set to ' +
+ messageData[dimension] +
+ 'px'
+ )
+ }
+
+ function chkZero(dimension) {
+ // FireFox sets dimension of hidden iFrames to zero.
+ // So if we detect that set up an event to check for
+ // when iFrame becomes visible.
+
+ /* istanbul ignore next */ // Not testable in PhantomJS
+ if (!hiddenCheckEnabled && '0' === messageData[dimension]) {
+ hiddenCheckEnabled = true
+ log(iframeId, 'Hidden iFrame detected, creating visibility listener')
+ fixHiddenIFrames()
+ }
+ }
+
+ function processDimension(dimension) {
+ setDimension(dimension)
+ chkZero(dimension)
+ }
+
+ var iframeId = messageData.iframe.id
+
+ if (settings[iframeId]) {
+ if (settings[iframeId].sizeHeight) {
+ processDimension('height')
+ }
+ if (settings[iframeId].sizeWidth) {
+ processDimension('width')
+ }
+ }
+ }
+
+ function syncResize(func, messageData, doNotSync) {
+ /* istanbul ignore if */ // Not testable in PhantomJS
+ if (
+ doNotSync !== messageData.type &&
+ requestAnimationFrame &&
+ // including check for jasmine because had trouble getting spy to work in unit test using requestAnimationFrame
+ !window.jasmine
+ ) {
+ log(messageData.id, 'Requesting animation frame')
+ requestAnimationFrame(func)
+ } else {
+ func()
+ }
+ }
+
+ function trigger(calleeMsg, msg, iframe, id, noResponseWarning) {
+ function postMessageToIFrame() {
+ var target = settings[id] && settings[id].targetOrigin
+ log(
+ id,
+ '[' +
+ calleeMsg +
+ '] Sending msg to iframe[' +
+ id +
+ '] (' +
+ msg +
+ ') targetOrigin: ' +
+ target
+ )
+ iframe.contentWindow.postMessage(msgId + msg, target)
+ }
+
+ function iFrameNotFound() {
+ warn(id, '[' + calleeMsg + '] IFrame(' + id + ') not found')
+ }
+
+ function chkAndSend() {
+ if (
+ iframe &&
+ 'contentWindow' in iframe &&
+ null !== iframe.contentWindow
+ ) {
+ // Null test for PhantomJS
+ postMessageToIFrame()
+ } else {
+ iFrameNotFound()
+ }
+ }
+
+ function warnOnNoResponse() {
+ function warning() {
+ if (settings[id] && !settings[id].loaded && !errorShown) {
+ errorShown = true
+ warn(
+ id,
+ 'IFrame has not responded within ' +
+ settings[id].warningTimeout / 1000 +
+ ' seconds. Check iFrameResizer.contentWindow.js has been loaded in iFrame. This message can be ignored if everything is working, or you can set the warningTimeout option to a higher value or zero to suppress this warning.'
+ )
+ }
+ }
+
+ if (
+ !!noResponseWarning &&
+ settings[id] &&
+ !!settings[id].warningTimeout
+ ) {
+ settings[id].msgTimeout = setTimeout(
+ warning,
+ settings[id].warningTimeout
+ )
+ }
+ }
+
+ var errorShown = false
+
+ id = id || iframe.id
+
+ if (settings[id]) {
+ chkAndSend()
+ warnOnNoResponse()
+ }
+ }
+
+ function createOutgoingMsg(iframeId) {
+ return (
+ iframeId +
+ ':' +
+ settings[iframeId].bodyMarginV1 +
+ ':' +
+ settings[iframeId].sizeWidth +
+ ':' +
+ settings[iframeId].log +
+ ':' +
+ settings[iframeId].interval +
+ ':' +
+ settings[iframeId].enablePublicMethods +
+ ':' +
+ settings[iframeId].autoResize +
+ ':' +
+ settings[iframeId].bodyMargin +
+ ':' +
+ settings[iframeId].heightCalculationMethod +
+ ':' +
+ settings[iframeId].bodyBackground +
+ ':' +
+ settings[iframeId].bodyPadding +
+ ':' +
+ settings[iframeId].tolerance +
+ ':' +
+ settings[iframeId].inPageLinks +
+ ':' +
+ settings[iframeId].resizeFrom +
+ ':' +
+ settings[iframeId].widthCalculationMethod
+ )
+ }
+
+ function setupIFrame(iframe, options) {
+ function setLimits() {
+ function addStyle(style) {
+ if (
+ Infinity !== settings[iframeId][style] &&
+ 0 !== settings[iframeId][style]
+ ) {
+ iframe.style[style] = settings[iframeId][style] + 'px'
+ log(
+ iframeId,
+ 'Set ' + style + ' = ' + settings[iframeId][style] + 'px'
+ )
+ }
+ }
+
+ function chkMinMax(dimension) {
+ if (
+ settings[iframeId]['min' + dimension] >
+ settings[iframeId]['max' + dimension]
+ ) {
+ throw new Error(
+ 'Value for min' +
+ dimension +
+ ' can not be greater than max' +
+ dimension
+ )
+ }
+ }
+
+ chkMinMax('Height')
+ chkMinMax('Width')
+
+ addStyle('maxHeight')
+ addStyle('minHeight')
+ addStyle('maxWidth')
+ addStyle('minWidth')
+ }
+
+ function newId() {
+ var id = (options && options.id) || defaults.id + count++
+ if (null !== document.getElementById(id)) {
+ id += count++
+ }
+ return id
+ }
+
+ function ensureHasId(iframeId) {
+ if ('' === iframeId) {
+ // eslint-disable-next-line no-multi-assign
+ iframe.id = iframeId = newId()
+ logEnabled = (options || {}).log
+ log(
+ iframeId,
+ 'Added missing iframe ID: ' + iframeId + ' (' + iframe.src + ')'
+ )
+ }
+
+ return iframeId
+ }
+
+ function setScrolling() {
+ log(
+ iframeId,
+ 'IFrame scrolling ' +
+ (settings[iframeId] && settings[iframeId].scrolling
+ ? 'enabled'
+ : 'disabled') +
+ ' for ' +
+ iframeId
+ )
+ iframe.style.overflow =
+ false === (settings[iframeId] && settings[iframeId].scrolling)
+ ? 'hidden'
+ : 'auto'
+ switch (settings[iframeId] && settings[iframeId].scrolling) {
+ case 'omit':
+ break
+
+ case true:
+ iframe.scrolling = 'yes'
+ break
+
+ case false:
+ iframe.scrolling = 'no'
+ break
+
+ default:
+ iframe.scrolling = settings[iframeId]
+ ? settings[iframeId].scrolling
+ : 'no'
+ }
+ }
+
+ // The V1 iFrame script expects an int, where as in V2 expects a CSS
+ // string value such as '1px 3em', so if we have an int for V2, set V1=V2
+ // and then convert V2 to a string PX value.
+ function setupBodyMarginValues() {
+ if (
+ 'number' ===
+ typeof (settings[iframeId] && settings[iframeId].bodyMargin) ||
+ '0' === (settings[iframeId] && settings[iframeId].bodyMargin)
+ ) {
+ settings[iframeId].bodyMarginV1 = settings[iframeId].bodyMargin
+ settings[iframeId].bodyMargin =
+ '' + settings[iframeId].bodyMargin + 'px'
+ }
+ }
+
+ function checkReset() {
+ // Reduce scope of firstRun to function, because IE8's JS execution
+ // context stack is borked and this value gets externally
+ // changed midway through running this function!!!
+ var firstRun = settings[iframeId] && settings[iframeId].firstRun,
+ resetRequertMethod =
+ settings[iframeId] &&
+ settings[iframeId].heightCalculationMethod in resetRequiredMethods
+
+ if (!firstRun && resetRequertMethod) {
+ resetIFrame({ iframe: iframe, height: 0, width: 0, type: 'init' })
+ }
+ }
+
+ function setupIFrameObject() {
+ if (settings[iframeId]) {
+ settings[iframeId].iframe.iFrameResizer = {
+ close: closeIFrame.bind(null, settings[iframeId].iframe),
+
+ removeListeners: removeIframeListeners.bind(
+ null,
+ settings[iframeId].iframe
+ ),
+
+ resize: trigger.bind(
+ null,
+ 'Window resize',
+ 'resize',
+ settings[iframeId].iframe
+ ),
+
+ moveToAnchor: function (anchor) {
+ trigger(
+ 'Move to anchor',
+ 'moveToAnchor:' + anchor,
+ settings[iframeId].iframe,
+ iframeId
+ )
+ },
+
+ sendMessage: function (message) {
+ message = JSON.stringify(message)
+ trigger(
+ 'Send Message',
+ 'message:' + message,
+ settings[iframeId].iframe,
+ iframeId
+ )
+ }
+ }
+ }
+ }
+
+ // We have to call trigger twice, as we can not be sure if all
+ // iframes have completed loading when this code runs. The
+ // event listener also catches the page changing in the iFrame.
+ function init(msg) {
+ function iFrameLoaded() {
+ trigger('iFrame.onload', msg, iframe, undefined, true)
+ checkReset()
+ }
+
+ function createDestroyObserver(MutationObserver) {
+ if (!iframe.parentNode) {
+ return
+ }
+
+ var destroyObserver = new MutationObserver(function (mutations) {
+ mutations.forEach(function (mutation) {
+ var removedNodes = Array.prototype.slice.call(mutation.removedNodes) // Transform NodeList into an Array
+ removedNodes.forEach(function (removedNode) {
+ if (removedNode === iframe) {
+ closeIFrame(iframe)
+ }
+ })
+ })
+ })
+ destroyObserver.observe(iframe.parentNode, {
+ childList: true
+ })
+ }
+
+ var MutationObserver = getMutationObserver()
+ if (MutationObserver) {
+ createDestroyObserver(MutationObserver)
+ }
+
+ addEventListener(iframe, 'load', iFrameLoaded)
+ trigger('init', msg, iframe, undefined, true)
+ }
+
+ function checkOptions(options) {
+ if ('object' !== typeof options) {
+ throw new TypeError('Options is not an object')
+ }
+ }
+
+ function copyOptions(options) {
+ // eslint-disable-next-line no-restricted-syntax
+ for (var option in defaults) {
+ if (Object.prototype.hasOwnProperty.call(defaults, option)) {
+ settings[iframeId][option] = Object.prototype.hasOwnProperty.call(
+ options,
+ option
+ )
+ ? options[option]
+ : defaults[option]
+ }
+ }
+ }
+
+ function getTargetOrigin(remoteHost) {
+ return '' === remoteHost ||
+ null !== remoteHost.match(/^(about:blank|javascript:|file:\/\/)/)
+ ? '*'
+ : remoteHost
+ }
+
+ function depricate(key) {
+ var splitName = key.split('Callback')
+
+ if (splitName.length === 2) {
+ var name =
+ 'on' + splitName[0].charAt(0).toUpperCase() + splitName[0].slice(1)
+ this[name] = this[key]
+ delete this[key]
+ warn(
+ iframeId,
+ "Deprecated: '" +
+ key +
+ "' has been renamed '" +
+ name +
+ "'. The old method will be removed in the next major version."
+ )
+ }
+ }
+
+ function processOptions(options) {
+ options = options || {}
+ settings[iframeId] = {
+ firstRun: true,
+ iframe: iframe,
+ remoteHost: iframe.src && iframe.src.split('/').slice(0, 3).join('/')
+ }
+
+ checkOptions(options)
+ Object.keys(options).forEach(depricate, options)
+ copyOptions(options)
+
+ if (settings[iframeId]) {
+ settings[iframeId].targetOrigin =
+ true === settings[iframeId].checkOrigin
+ ? getTargetOrigin(settings[iframeId].remoteHost)
+ : '*'
+ }
+ }
+
+ function beenHere() {
+ return iframeId in settings && 'iFrameResizer' in iframe
+ }
+
+ var iframeId = ensureHasId(iframe.id)
+
+ if (!beenHere()) {
+ processOptions(options)
+ setScrolling()
+ setLimits()
+ setupBodyMarginValues()
+ init(createOutgoingMsg(iframeId))
+ setupIFrameObject()
+ } else {
+ warn(iframeId, 'Ignored iFrame, already setup.')
+ }
+ }
+
+ function debouce(fn, time) {
+ if (null === timer) {
+ timer = setTimeout(function () {
+ timer = null
+ fn()
+ }, time)
+ }
+ }
+
+ var frameTimer = {}
+ function debounceFrameEvents(fn, time, frameId) {
+ if (!frameTimer[frameId]) {
+ frameTimer[frameId] = setTimeout(function () {
+ frameTimer[frameId] = null
+ fn()
+ }, time)
+ }
+ }
+
+ // Not testable in PhantomJS
+ /* istanbul ignore next */
+
+ function fixHiddenIFrames() {
+ function checkIFrames() {
+ function checkIFrame(settingId) {
+ function chkDimension(dimension) {
+ return (
+ '0px' ===
+ (settings[settingId] && settings[settingId].iframe.style[dimension])
+ )
+ }
+
+ function isVisible(el) {
+ return null !== el.offsetParent
+ }
+
+ if (
+ settings[settingId] &&
+ isVisible(settings[settingId].iframe) &&
+ (chkDimension('height') || chkDimension('width'))
+ ) {
+ trigger(
+ 'Visibility change',
+ 'resize',
+ settings[settingId].iframe,
+ settingId
+ )
+ }
+ }
+
+ Object.keys(settings).forEach(function (key) {
+ checkIFrame(key)
+ })
+ }
+
+ function mutationObserved(mutations) {
+ log(
+ 'window',
+ 'Mutation observed: ' + mutations[0].target + ' ' + mutations[0].type
+ )
+ debouce(checkIFrames, 16)
+ }
+
+ function createMutationObserver() {
+ var target = document.querySelector('body'),
+ config = {
+ attributes: true,
+ attributeOldValue: false,
+ characterData: true,
+ characterDataOldValue: false,
+ childList: true,
+ subtree: true
+ },
+ observer = new MutationObserver(mutationObserved)
+
+ observer.observe(target, config)
+ }
+
+ var MutationObserver = getMutationObserver()
+ if (MutationObserver) {
+ createMutationObserver()
+ }
+ }
+
+ function resizeIFrames(event) {
+ function resize() {
+ sendTriggerMsg('Window ' + event, 'resize')
+ }
+
+ log('window', 'Trigger event: ' + event)
+ debouce(resize, 16)
+ }
+
+ // Not testable in PhantomJS
+ /* istanbul ignore next */
+ function tabVisible() {
+ function resize() {
+ sendTriggerMsg('Tab Visable', 'resize')
+ }
+
+ if ('hidden' !== document.visibilityState) {
+ log('document', 'Trigger event: Visiblity change')
+ debouce(resize, 16)
+ }
+ }
+
+ function sendTriggerMsg(eventName, event) {
+ function isIFrameResizeEnabled(iframeId) {
+ return (
+ settings[iframeId] &&
+ 'parent' === settings[iframeId].resizeFrom &&
+ settings[iframeId].autoResize &&
+ !settings[iframeId].firstRun
+ )
+ }
+
+ Object.keys(settings).forEach(function (iframeId) {
+ if (isIFrameResizeEnabled(iframeId)) {
+ trigger(eventName, event, settings[iframeId].iframe, iframeId)
+ }
+ })
+ }
+
+ function setupEventListeners() {
+ addEventListener(window, 'message', iFrameListener)
+
+ addEventListener(window, 'resize', function () {
+ resizeIFrames('resize')
+ })
+
+ addEventListener(document, 'visibilitychange', tabVisible)
+
+ addEventListener(document, '-webkit-visibilitychange', tabVisible)
+ }
+
+ function factory() {
+ function init(options, element) {
+ function chkType() {
+ if (!element.tagName) {
+ throw new TypeError('Object is not a valid DOM element')
+ } else if ('IFRAME' !== element.tagName.toUpperCase()) {
+ throw new TypeError(
+ 'Expected <IFRAME> tag, found <' + element.tagName + '>'
+ )
+ }
+ }
+
+ if (element) {
+ chkType()
+ setupIFrame(element, options)
+ iFrames.push(element)
+ }
+ }
+
+ function warnDeprecatedOptions(options) {
+ if (options && options.enablePublicMethods) {
+ warn(
+ 'enablePublicMethods option has been removed, public methods are now always available in the iFrame'
+ )
+ }
+ }
+
+ var iFrames
+
+ setupRequestAnimationFrame()
+ setupEventListeners()
+
+ return function iFrameResizeF(options, target) {
+ iFrames = [] // Only return iFrames past in on this call
+
+ warnDeprecatedOptions(options)
+
+ switch (typeof target) {
+ case 'undefined':
+ case 'string':
+ Array.prototype.forEach.call(
+ document.querySelectorAll(target || 'iframe'),
+ init.bind(undefined, options)
+ )
+ break
+
+ case 'object':
+ init(options, target)
+ break
+
+ default:
+ throw new TypeError('Unexpected data type (' + typeof target + ')')
+ }
+
+ return iFrames
+ }
+ }
+
+ function createJQueryPublicMethod($) {
+ if (!$.fn) {
+ info('', 'Unable to bind to jQuery, it is not fully loaded.')
+ } else if (!$.fn.iFrameResize) {
+ $.fn.iFrameResize = function $iFrameResizeF(options) {
+ function init(index, element) {
+ setupIFrame(element, options)
+ }
+
+ return this.filter('iframe').each(init).end()
+ }
+ }
+ }
+
+ if (window.jQuery) {
+ createJQueryPublicMethod(window.jQuery)
+ }
+
+ if (typeof define === 'function' && define.amd) {
+ define([], factory)
+ } else if (typeof module === 'object' && typeof module.exports === 'object') {
+ // Node for browserfy
+ module.exports = factory()
+ }
+ window.iFrameResize = window.iFrameResize || factory()
+})()
diff --git a/node_modules/iframe-resizer/js/iframeResizer.map b/node_modules/iframe-resizer/js/iframeResizer.map
new file mode 100644
index 0000000000..e206e7c7a2
--- /dev/null
+++ b/node_modules/iframe-resizer/js/iframeResizer.map
@@ -0,0 +1 @@
+{"version":3,"sources":["iframeResizer.js"],"names":["undefined","window","$","count","logEnabled","hiddenCheckEnabled","msgHeaderLen","length","msgId","msgIdLen","pagePosition","requestAnimationFrame","resetRequiredMethods","max","scroll","bodyScroll","documentElementScroll","settings","timer","defaults","autoResize","bodyBackground","bodyMargin","bodyMarginV1","bodyPadding","checkOrigin","inPageLinks","enablePublicMethods","heightCalculationMethod","id","interval","log","maxHeight","Infinity","maxWidth","minHeight","minWidth","resizeFrom","scrolling","sizeHeight","sizeWidth","warningTimeout","tolerance","widthCalculationMethod","onClose","onClosed","onInit","onMessage","warn","onResized","onScroll","frameTimer","jQuery","fn","iFrameResize","options","this","filter","each","index","element","setupIFrame","end","info","define","amd","factory","module","exports","getMutationObserver","MutationObserver","WebKitMutationObserver","MozMutationObserver","addEventListener","el","evt","func","removeEventListener","formatLogHeader","iframeId","retStr","top","self","parentIFrame","getId","getMyID","isLogEnabled","msg","output","type","enabled","console","iFrameListener","event","resizeIFrame","ensureInRange","syncResize","setSize","messageData","setPagePosition","on","Dimension","Number","min","dimension","toLowerCase","size","getMsgBody","offset","substr","indexOf","sendPageInfoToIframe","iframe","time","frameId","setTimeout","debounceFrameEvents","trigger","bodyPosition","document","body","getBoundingClientRect","iFramePosition","JSON","stringify","iframeHeight","height","iframeWidth","width","clientHeight","Math","documentElement","innerHeight","clientWidth","innerWidth","offsetTop","parseInt","offsetLeft","left","scrollTop","pageYOffset","scrollLeft","pageXOffset","documentHeight","documentWidth","windowHeight","windowWidth","getPageInfo","getElementPosition","target","getPagePosition","x","floor","y","scrollRequestFromChild","addOffset","newPosition","scrollTo","unsetPagePosition","funcName","val","chkEvent","retBool","retCode","data","compStyle","createOutgoingMsg","iFrameReadyMsgReceived","split","getComputedStyle","boxSizing","paddingTop","bot","paddingBottom","getPaddingEnds","borderTopWidth","borderBottomWidth","getBorderEnds","loaded","true","false","remoteHost","origin","constructor","Array","i","checkList","Error","isMessageFromIFrame","firstRun","closeIFrame","msgBody","message","parse","forwardMsgFromIFrame","setListener","sendPageInfo","stop","forEach","stopPageInfo","startPageInfoMonitor","location","jumpPosition","hash","hashData","decodeURIComponent","getElementById","getElementsByName","moveToAnchor","findTarget","resetIFrame","actionMsg","retVal","TypeError","removeIframeListeners","parentNode","removeChild","error","chkZero","checkIFrames","Object","keys","key","settingId","chkDimension","style","offsetParent","checkIFrame","mutationObserved","mutations","debouce","querySelector","observe","attributes","attributeOldValue","characterData","characterDataOldValue","childList","subtree","createMutationObserver","fixHiddenIFrames","processDimension","setDimension","doNotSync","jasmine","calleeMsg","noResponseWarning","errorShown","contentWindow","targetOrigin","postMessage","msgTimeout","depricate","splitName","name","charAt","toUpperCase","slice","src","addStyle","chkMinMax","join","checkOptions","option","prototype","hasOwnProperty","call","copyOptions","match","getTargetOrigin","overflow","setScrolling","mutation","removedNodes","removedNode","resetRequertMethod","checkReset","iFrameResizer","close","bind","removeListeners","resize","anchor","sendMessage","tabVisible","visibilityState","sendTriggerMsg","eventName","isIFrameResizeEnabled","setupEventListeners","resizeIFrames","init","tagName","chkType","iFrames","push","vendors","setupRequestAnimationFrame","warnDeprecatedOptions","querySelectorAll"],"mappings":"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","file":"iframeResizer.min.js"} \ No newline at end of file
diff --git a/node_modules/iframe-resizer/js/iframeResizer.min.js b/node_modules/iframe-resizer/js/iframeResizer.min.js
new file mode 100644
index 0000000000..93b046bf1c
--- /dev/null
+++ b/node_modules/iframe-resizer/js/iframeResizer.min.js
@@ -0,0 +1,9 @@
+/*! iFrame Resizer (iframeSizer.min.js ) - v4.2.11 - 2020-06-02
+ * Desc: Force cross domain iframes to size to content.
+ * Requires: iframeResizer.contentWindow.min.js to be loaded into the target frame.
+ * Copyright: (c) 2020 David J. Bradshaw - dave@bradshaw.net
+ * License: MIT
+ */
+
+!function(l){if("undefined"!=typeof window){var e,m=0,g=!1,o=!1,v="message".length,I="[iFrameSizer]",x=I.length,F=null,r=window.requestAnimationFrame,h={max:1,scroll:1,bodyScroll:1,documentElementScroll:1},M={},i=null,w={autoResize:!0,bodyBackground:null,bodyMargin:null,bodyMarginV1:8,bodyPadding:null,checkOrigin:!0,inPageLinks:!1,enablePublicMethods:!0,heightCalculationMethod:"bodyOffset",id:"iFrameResizer",interval:32,log:!1,maxHeight:1/0,maxWidth:1/0,minHeight:0,minWidth:0,resizeFrom:"parent",scrolling:!1,sizeHeight:!0,sizeWidth:!1,warningTimeout:5e3,tolerance:0,widthCalculationMethod:"scroll",onClose:function(){return!0},onClosed:function(){},onInit:function(){},onMessage:function(){E("onMessage function not defined")},onResized:function(){},onScroll:function(){return!0}},k={};window.jQuery&&((e=window.jQuery).fn?e.fn.iFrameResize||(e.fn.iFrameResize=function(i){return this.filter("iframe").each(function(e,n){d(n,i)}).end()}):T("","Unable to bind to jQuery, it is not fully loaded.")),"function"==typeof define&&define.amd?define([],q):"object"==typeof module&&"object"==typeof module.exports&&(module.exports=q()),window.iFrameResize=window.iFrameResize||q()}function p(){return window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver}function z(e,n,i){e.addEventListener(n,i,!1)}function O(e,n,i){e.removeEventListener(n,i,!1)}function a(e){return I+"["+function(e){var n="Host page: "+e;return window.top!==window.self&&(n=window.parentIFrame&&window.parentIFrame.getId?window.parentIFrame.getId()+": "+e:"Nested host page: "+e),n}(e)+"]"}function t(e){return M[e]?M[e].log:g}function R(e,n){s("log",e,n,t(e))}function T(e,n){s("info",e,n,t(e))}function E(e,n){s("warn",e,n,!0)}function s(e,n,i,t){!0===t&&"object"==typeof window.console&&console[e](a(n),i)}function n(n){function e(){i("Height"),i("Width"),A(function(){P(b),S(y),d("onResized",b)},b,"init")}function i(e){var n=Number(M[y]["max"+e]),i=Number(M[y]["min"+e]),t=e.toLowerCase(),o=Number(b[t]);R(y,"Checking "+t+" is in range "+i+"-"+n),o<i&&(o=i,R(y,"Set "+t+" to min value")),n<o&&(o=n,R(y,"Set "+t+" to max value")),b[t]=""+o}function t(e){return p.substr(p.indexOf(":")+v+e)}function a(e,n){!function(e,n,i){k[i]||(k[i]=setTimeout(function(){k[i]=null,e()},n))}(function(){B("Send Page Info","pageInfo:"+function(){var e=document.body.getBoundingClientRect(),n=b.iframe.getBoundingClientRect();return JSON.stringify({iframeHeight:n.height,iframeWidth:n.width,clientHeight:Math.max(document.documentElement.clientHeight,window.innerHeight||0),clientWidth:Math.max(document.documentElement.clientWidth,window.innerWidth||0),offsetTop:parseInt(n.top-e.top,10),offsetLeft:parseInt(n.left-e.left,10),scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset,documentHeight:document.documentElement.clientHeight,documentWidth:document.documentElement.clientWidth,windowHeight:window.innerHeight,windowWidth:window.innerWidth})}(),e,n)},32,n)}function r(e){var n=e.getBoundingClientRect();return N(y),{x:Math.floor(Number(n.left)+Number(F.x)),y:Math.floor(Number(n.top)+Number(F.y))}}function o(e){var n=e?r(b.iframe):{x:0,y:0},i={x:Number(b.width)+n.x,y:Number(b.height)+n.y};R(y,"Reposition requested from iFrame (offset x:"+n.x+" y:"+n.y+")"),window.top!==window.self?window.parentIFrame?window.parentIFrame["scrollTo"+(e?"Offset":"")](i.x,i.y):E(y,"Unable to scroll to requested position, window.parentIFrame not found"):(F=i,s(),R(y,"--"))}function s(){!1!==d("onScroll",F)?S(y):H()}function d(e,n){return W(y,e,n)}var c,u,f,l,m,g,h,w,p=n.data,b={},y=null;"[iFrameResizerChild]Ready"===p?function(){for(var e in M)B("iFrame requested init",L(e),M[e].iframe,e)}():I===(""+p).substr(0,x)&&p.substr(x).split(":")[0]in M?(m=p.substr(x).split(":"),g=m[1]?parseInt(m[1],10):0,h=M[m[0]]&&M[m[0]].iframe,w=getComputedStyle(h),b={iframe:h,id:m[0],height:g+function(e){if("border-box"!==e.boxSizing)return 0;var n=e.paddingTop?parseInt(e.paddingTop,10):0,i=e.paddingBottom?parseInt(e.paddingBottom,10):0;return n+i}(w)+function(e){if("border-box"!==e.boxSizing)return 0;var n=e.borderTopWidth?parseInt(e.borderTopWidth,10):0,i=e.borderBottomWidth?parseInt(e.borderBottomWidth,10):0;return n+i}(w),width:m[2],type:m[3]},y=b.id,M[y]&&(M[y].loaded=!0),(l=b.type in{true:1,false:1,undefined:1})&&R(y,"Ignoring init message from meta parent page"),!l&&(f=!0,M[u=y]||(f=!1,E(b.type+" No settings for "+u+". Message was: "+p)),f)&&(R(y,"Received: "+p),c=!0,null===b.iframe&&(E(y,"IFrame ("+b.id+") not found"),c=!1),c&&function(){var e,i=n.origin,t=M[y]&&M[y].checkOrigin;if(t&&""+i!="null"&&!(t.constructor===Array?function(){var e=0,n=!1;for(R(y,"Checking connection is from allowed list of origins: "+t);e<t.length;e++)if(t[e]===i){n=!0;break}return n}():(e=M[y]&&M[y].remoteHost,R(y,"Checking connection is from: "+e),i===e)))throw new Error("Unexpected message received from: "+i+" for "+b.iframe.id+". Message was: "+n.data+". This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.");return!0}()&&function(){switch(M[y]&&M[y].firstRun&&M[y]&&(M[y].firstRun=!1),b.type){case"close":C(b.iframe);break;case"message":!function(e){R(y,"onMessage passed: {iframe: "+b.iframe.id+", message: "+e+"}"),d("onMessage",{iframe:b.iframe,message:JSON.parse(e)}),R(y,"--")}(t(6));break;case"autoResize":M[y].autoResize=JSON.parse(t(9));break;case"scrollTo":o(!1);break;case"scrollToOffset":o(!0);break;case"pageInfo":a(M[y]&&M[y].iframe,y),function(){function e(n,i){function t(){M[r]?a(M[r].iframe,r):o()}["scroll","resize"].forEach(function(e){R(r,n+e+" listener for sendPageInfo"),i(window,e,t)})}function o(){e("Remove ",O)}var r=y;e("Add ",z),M[r]&&(M[r].stopPageInfo=o)}();break;case"pageInfoStop":M[y]&&M[y].stopPageInfo&&(M[y].stopPageInfo(),delete M[y].stopPageInfo);break;case"inPageLink":!function(e){var n,i=e.split("#")[1]||"",t=decodeURIComponent(i),o=document.getElementById(t)||document.getElementsByName(t)[0];o?(n=r(o),R(y,"Moving to in page link (#"+i+") at x: "+n.x+" y: "+n.y),F={x:n.x,y:n.y},s(),R(y,"--")):window.top!==window.self?window.parentIFrame?window.parentIFrame.moveToAnchor(i):R(y,"In page link #"+i+" not found and window.parentIFrame not found"):R(y,"In page link #"+i+" not found")}(t(9));break;case"reset":j(b);break;case"init":e(),d("onInit",b.iframe);break;default:e()}}())):T(y,"Ignored: "+p)}function W(e,n,i){var t=null,o=null;if(M[e]){if("function"!=typeof(t=M[e][n]))throw new TypeError(n+" on iFrame["+e+"] is not a function");o=t(i)}return o}function b(e){var n=e.id;delete M[n]}function C(e){var n=e.id;if(!1!==W(n,"onClose",n)){R(n,"Removing iFrame: "+n);try{e.parentNode&&e.parentNode.removeChild(e)}catch(e){E(e)}W(n,"onClosed",n),R(n,"--"),b(e)}else R(n,"Close iframe cancelled by onClose event")}function N(e){null===F&&R(e,"Get page position: "+(F={x:window.pageXOffset!==l?window.pageXOffset:document.documentElement.scrollLeft,y:window.pageYOffset!==l?window.pageYOffset:document.documentElement.scrollTop}).x+","+F.y)}function S(e){null!==F&&(window.scrollTo(F.x,F.y),R(e,"Set page position: "+F.x+","+F.y),H())}function H(){F=null}function j(e){R(e.id,"Size reset requested by "+("init"===e.type?"host page":"iFrame")),N(e.id),A(function(){P(e),B("reset","reset",e.iframe,e.id)},e,"reset")}function P(n){function i(e){o||"0"!==n[e]||(o=!0,R(t,"Hidden iFrame detected, creating visibility listener"),function(){function n(){Object.keys(M).forEach(function(e){!function(n){function e(e){return"0px"===(M[n]&&M[n].iframe.style[e])}M[n]&&null!==M[n].iframe.offsetParent&&(e("height")||e("width"))&&B("Visibility change","resize",M[n].iframe,n)}(e)})}function i(e){R("window","Mutation observed: "+e[0].target+" "+e[0].type),c(n,16)}var t=p();t&&function(){var e=document.querySelector("body");new t(i).observe(e,{attributes:!0,attributeOldValue:!1,characterData:!0,characterDataOldValue:!1,childList:!0,subtree:!0})}()}())}function e(e){!function(e){n.id?(n.iframe.style[e]=n[e]+"px",R(n.id,"IFrame ("+t+") "+e+" set to "+n[e]+"px")):R("undefined","messageData id not set")}(e),i(e)}var t=n.iframe.id;M[t]&&(M[t].sizeHeight&&e("height"),M[t].sizeWidth&&e("width"))}function A(e,n,i){i!==n.type&&r&&!window.jasmine?(R(n.id,"Requesting animation frame"),r(e)):e()}function B(e,n,i,t,o){var r,a=!1;t=t||i.id,M[t]&&(i&&"contentWindow"in i&&null!==i.contentWindow?(r=M[t]&&M[t].targetOrigin,R(t,"["+e+"] Sending msg to iframe["+t+"] ("+n+") targetOrigin: "+r),i.contentWindow.postMessage(I+n,r)):E(t,"["+e+"] IFrame("+t+") not found"),o&&M[t]&&M[t].warningTimeout&&(M[t].msgTimeout=setTimeout(function(){!M[t]||M[t].loaded||a||(a=!0,E(t,"IFrame has not responded within "+M[t].warningTimeout/1e3+" seconds. Check iFrameResizer.contentWindow.js has been loaded in iFrame. This message can be ignored if everything is working, or you can set the warningTimeout option to a higher value or zero to suppress this warning."))},M[t].warningTimeout)))}function L(e){return e+":"+M[e].bodyMarginV1+":"+M[e].sizeWidth+":"+M[e].log+":"+M[e].interval+":"+M[e].enablePublicMethods+":"+M[e].autoResize+":"+M[e].bodyMargin+":"+M[e].heightCalculationMethod+":"+M[e].bodyBackground+":"+M[e].bodyPadding+":"+M[e].tolerance+":"+M[e].inPageLinks+":"+M[e].resizeFrom+":"+M[e].widthCalculationMethod}function d(i,e){function n(e){var n=e.split("Callback");if(2===n.length){var i="on"+n[0].charAt(0).toUpperCase()+n[0].slice(1);this[i]=this[e],delete this[e],E(c,"Deprecated: '"+e+"' has been renamed '"+i+"'. The old method will be removed in the next major version.")}}var t,o,r,a,s,d,c=(""===(o=i.id)&&(i.id=(t=e&&e.id||w.id+m++,null!==document.getElementById(t)&&(t+=m++),o=t),g=(e||{}).log,R(o,"Added missing iframe ID: "+o+" ("+i.src+")")),o);function u(e){1/0!==M[c][e]&&0!==M[c][e]&&(i.style[e]=M[c][e]+"px",R(c,"Set "+e+" = "+M[c][e]+"px"))}function f(e){if(M[c]["min"+e]>M[c]["max"+e])throw new Error("Value for min"+e+" can not be greater than max"+e)}c in M&&"iFrameResizer"in i?E(c,"Ignored iFrame, already setup."):(d=(d=e)||{},M[c]={firstRun:!0,iframe:i,remoteHost:i.src&&i.src.split("/").slice(0,3).join("/")},function(e){if("object"!=typeof e)throw new TypeError("Options is not an object")}(d),Object.keys(d).forEach(n,d),function(e){for(var n in w)Object.prototype.hasOwnProperty.call(w,n)&&(M[c][n]=Object.prototype.hasOwnProperty.call(e,n)?e[n]:w[n])}(d),M[c]&&(M[c].targetOrigin=!0===M[c].checkOrigin?function(e){return""===e||null!==e.match(/^(about:blank|javascript:|file:\/\/)/)?"*":e}(M[c].remoteHost):"*"),function(){switch(R(c,"IFrame scrolling "+(M[c]&&M[c].scrolling?"enabled":"disabled")+" for "+c),i.style.overflow=!1===(M[c]&&M[c].scrolling)?"hidden":"auto",M[c]&&M[c].scrolling){case"omit":break;case!0:i.scrolling="yes";break;case!1:i.scrolling="no";break;default:i.scrolling=M[c]?M[c].scrolling:"no"}}(),f("Height"),f("Width"),u("maxHeight"),u("minHeight"),u("maxWidth"),u("minWidth"),"number"!=typeof(M[c]&&M[c].bodyMargin)&&"0"!==(M[c]&&M[c].bodyMargin)||(M[c].bodyMarginV1=M[c].bodyMargin,M[c].bodyMargin=M[c].bodyMargin+"px"),r=L(c),(s=p())&&(a=s,i.parentNode&&new a(function(e){e.forEach(function(e){Array.prototype.slice.call(e.removedNodes).forEach(function(e){e===i&&C(i)})})}).observe(i.parentNode,{childList:!0})),z(i,"load",function(){B("iFrame.onload",r,i,l,!0),function(){var e=M[c]&&M[c].firstRun,n=M[c]&&M[c].heightCalculationMethod in h;!e&&n&&j({iframe:i,height:0,width:0,type:"init"})}()}),B("init",r,i,l,!0),M[c]&&(M[c].iframe.iFrameResizer={close:C.bind(null,M[c].iframe),removeListeners:b.bind(null,M[c].iframe),resize:B.bind(null,"Window resize","resize",M[c].iframe),moveToAnchor:function(e){B("Move to anchor","moveToAnchor:"+e,M[c].iframe,c)},sendMessage:function(e){B("Send Message","message:"+(e=JSON.stringify(e)),M[c].iframe,c)}}))}function c(e,n){null===i&&(i=setTimeout(function(){i=null,e()},n))}function u(){"hidden"!==document.visibilityState&&(R("document","Trigger event: Visiblity change"),c(function(){f("Tab Visable","resize")},16))}function f(n,i){Object.keys(M).forEach(function(e){!function(e){return M[e]&&"parent"===M[e].resizeFrom&&M[e].autoResize&&!M[e].firstRun}(e)||B(n,i,M[e].iframe,e)})}function y(){z(window,"message",n),z(window,"resize",function(){!function(e){R("window","Trigger event: "+e),c(function(){f("Window "+e,"resize")},16)}("resize")}),z(document,"visibilitychange",u),z(document,"-webkit-visibilitychange",u)}function q(){function i(e,n){n&&(function(){if(!n.tagName)throw new TypeError("Object is not a valid DOM element");if("IFRAME"!==n.tagName.toUpperCase())throw new TypeError("Expected <IFRAME> tag, found <"+n.tagName+">")}(),d(n,e),t.push(n))}var t;return function(){var e,n=["moz","webkit","o","ms"];for(e=0;e<n.length&&!r;e+=1)r=window[n[e]+"RequestAnimationFrame"];r?r=r.bind(window):R("setup","RequestAnimationFrame not supported")}(),y(),function(e,n){switch(t=[],function(e){e&&e.enablePublicMethods&&E("enablePublicMethods option has been removed, public methods are now always available in the iFrame")}(e),typeof n){case"undefined":case"string":Array.prototype.forEach.call(document.querySelectorAll(n||"iframe"),i.bind(l,e));break;case"object":i(e,n);break;default:throw new TypeError("Unexpected data type ("+typeof n+")")}return t}}}();
+//# sourceMappingURL=iframeResizer.map \ No newline at end of file
diff --git a/node_modules/iframe-resizer/js/index.js b/node_modules/iframe-resizer/js/index.js
new file mode 100644
index 0000000000..1ab70eceec
--- /dev/null
+++ b/node_modules/iframe-resizer/js/index.js
@@ -0,0 +1,5 @@
+var iframeResize = require('./iframeResizer')
+
+exports.iframeResize = iframeResize
+exports.iframeResizer = iframeResize // Backwards compatability
+exports.iframeResizerContentWindow = require('./iframeResizer.contentWindow')
diff --git a/node_modules/iframe-resizer/package.json b/node_modules/iframe-resizer/package.json
new file mode 100644
index 0000000000..933851eb06
--- /dev/null
+++ b/node_modules/iframe-resizer/package.json
@@ -0,0 +1,160 @@
+{
+ "_args": [
+ [
+ "iframe-resizer@4.2.11",
+ "/Users/benakamoorthi/Projects/matomo"
+ ]
+ ],
+ "_from": "iframe-resizer@4.2.11",
+ "_id": "iframe-resizer@4.2.11",
+ "_inBundle": false,
+ "_integrity": "sha512-fj5vX5kkpRbMb5Qje6veIDzqoJpnCEqUDdSOwASOeQHYmb8hLYX6Ev2yXf3jjMs2MclwcYY3chyZ3diGKcr8DA==",
+ "_location": "/iframe-resizer",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "version",
+ "registry": true,
+ "raw": "iframe-resizer@4.2.11",
+ "name": "iframe-resizer",
+ "escapedName": "iframe-resizer",
+ "rawSpec": "4.2.11",
+ "saveSpec": null,
+ "fetchSpec": "4.2.11"
+ },
+ "_requiredBy": [
+ "/"
+ ],
+ "_resolved": "https://registry.npmjs.org/iframe-resizer/-/iframe-resizer-4.2.11.tgz",
+ "_spec": "4.2.11",
+ "_where": "/Users/benakamoorthi/Projects/matomo",
+ "authors": [
+ "David J. Bradshaw <dave@bradshaw.net>"
+ ],
+ "bugs": {
+ "url": "https://github.com/davidjbradshaw/iframe-resizer/issues"
+ },
+ "dependencies": {},
+ "description": "Keep same and cross domain iFrames sized to their content with support for window/content resizing, and multiple iFrames.",
+ "devDependencies": {
+ "cosmiconfig": "^6.0.0",
+ "cryptiles": "^4.1.3",
+ "deep-extend": "^0.6.0",
+ "eslint": "^6.8.0",
+ "eslint-config-adjunct": "^4.4.0",
+ "eslint-config-airbnb-base": "^14.1.0",
+ "eslint-config-prettier": "^6.10.1",
+ "eslint-plugin-array-func": "^3.1.4",
+ "eslint-plugin-eslint-comments": "^3.1.2",
+ "eslint-plugin-html": "^6.0.0",
+ "eslint-plugin-ie11": "^1.0.0",
+ "eslint-plugin-import": "^2.20.2",
+ "eslint-plugin-jasmine": "^4.1.0",
+ "eslint-plugin-json": "^2.1.1",
+ "eslint-plugin-json-format": "^2.0.1",
+ "eslint-plugin-lodash": "^6.0.0",
+ "eslint-plugin-lodash-fp": "^2.2.0-a1",
+ "eslint-plugin-markdown": "^1.0.2",
+ "eslint-plugin-no-constructor-bind": "^1.2.8",
+ "eslint-plugin-no-secrets": "^0.6.5",
+ "eslint-plugin-no-use-extend-native": "^0.4.1",
+ "eslint-plugin-only-error": "^1.0.2",
+ "eslint-plugin-optimize-regex": "^1.1.7",
+ "eslint-plugin-prettier": "^3.1.2",
+ "eslint-plugin-promise": "^4.2.1",
+ "eslint-plugin-qunit": "^4.2.0",
+ "eslint-plugin-scanjs-rules": "^0.2.1",
+ "eslint-plugin-security": "^1.4.0",
+ "eslint-plugin-simple-import-sort": "^5.0.2",
+ "eslint-plugin-sonarjs": "^0.5.0",
+ "eslint-plugin-switch-case": "^1.1.2",
+ "eslint-plugin-unicorn": "^18.0.1",
+ "grunt": "^1.1.0",
+ "grunt-bump": "^0.8.0",
+ "grunt-cli": "^1.3.2",
+ "grunt-contrib-clean": "^2.0.0",
+ "grunt-contrib-compress": "~1.6.0",
+ "grunt-contrib-copy": "^1.0.0",
+ "grunt-contrib-jshint": "~2.1.0",
+ "grunt-contrib-qunit": "^2.0.0",
+ "grunt-contrib-uglify": "^4.0.1",
+ "grunt-contrib-watch": "~1.1.0",
+ "grunt-eslint": "^22.0.0",
+ "grunt-jsonlint": "~2.1.2",
+ "grunt-karma": "^3.0.2",
+ "grunt-karma-coveralls": "^2.5.4",
+ "grunt-shell": "~3.0.1",
+ "hoek": "^6.1.3",
+ "jasmine": "^3.5.0",
+ "jasmine-core": "^3.5.0",
+ "jasmine-jquery": "^2.1.1",
+ "jit-grunt": "~0.10.0",
+ "jquery": "^3.5.1",
+ "karma": "^4.4.1",
+ "karma-chrome-launcher": "^3.1.0",
+ "karma-coverage": "^2.0.2",
+ "karma-firefox-launcher": "^1.3.0",
+ "karma-jasmine": "^3.1.1",
+ "karma-jasmine-jquery": "^0.1.1",
+ "karma-logcapture-reporter": "0.0.1",
+ "karma-phantomjs-launcher": "^1.0.4",
+ "karma-requirejs": "^1.1.0",
+ "karma-safari-launcher": "^1.0.0",
+ "karma-verbose-summary-reporter": "0.0.1",
+ "load-grunt-tasks": "~5.1.0",
+ "lodash": "^4.17.15",
+ "minimatch": "^3.0.4",
+ "phantomjs": "^2.1.7",
+ "prettier": "^2.0.2",
+ "requirejs": "^2.3.6",
+ "time-grunt": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://github.com/davidjbradshaw/iframe-resizer/blob/master/FUNDING.md"
+ },
+ "github": "https://github.com/davidjbradshaw/iframe-resizer",
+ "homepage": "https://github.com/davidjbradshaw/iframe-resizer",
+ "keywords": [
+ "CrossDomain",
+ "Cross-Domain",
+ "iFrame",
+ "Resizing",
+ "Resizer",
+ "postMessage",
+ "autoheight",
+ "auto-height",
+ "iframe-auto-height",
+ "height-iframe",
+ "heightiframe",
+ "width",
+ "mutationObserver",
+ "RWD",
+ "responsiveiframes",
+ "responsive-iframes",
+ "jquery-plugin"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "maintainers": [
+ {
+ "name": "David J. Bradshaw",
+ "email": "dave@bradshaw.net"
+ }
+ ],
+ "name": "iframe-resizer",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/davidjbradshaw/iframe-resizer.git"
+ },
+ "scripts": {
+ "build": "npm install && grunt",
+ "eslint": "eslint *.js src/* --color",
+ "eslint:fix": "npm run eslint -- --fix",
+ "test": "grunt travis",
+ "test-watch": "grunt test-watch"
+ },
+ "version": "4.2.11"
+}