85 lines
3.2 KiB
JavaScript
85 lines
3.2 KiB
JavaScript
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
|
|
"use strict";
|
|
|
|
var _scrollToElement = _interopRequireDefault(require("./misc/scroll-to-element.js"));
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
|
|
var submittedForm = window.mc4wp_submitted_form;
|
|
var forms = window.mc4wp.forms;
|
|
|
|
function trigger(event, args) {
|
|
forms.trigger(args[0].id + '.' + event, args);
|
|
forms.trigger(event, args);
|
|
}
|
|
|
|
function handleFormRequest(form, eventName, errors, data) {
|
|
var timeStart = Date.now();
|
|
var pageHeight = document.body.clientHeight; // re-populate form if an error occurred
|
|
|
|
if (errors) {
|
|
form.setData(data);
|
|
} // scroll to form
|
|
|
|
|
|
if (window.scrollY <= 10 && submittedForm.auto_scroll) {
|
|
(0, _scrollToElement["default"])(form.element);
|
|
} // trigger events on window.load so all other scripts have loaded
|
|
|
|
|
|
window.addEventListener('load', function () {
|
|
trigger('submitted', [form]);
|
|
|
|
if (errors) {
|
|
trigger('error', [form, errors]);
|
|
} else {
|
|
// form was successfully submitted
|
|
trigger('success', [form, data]); // subscribed / unsubscribed
|
|
|
|
trigger(eventName, [form, data]); // for BC: always trigger "subscribed" event when firing "updated_subscriber" event
|
|
|
|
if (eventName === 'updated_subscriber') {
|
|
trigger('subscribed', [form, data, true]);
|
|
}
|
|
} // scroll to form again if page height changed since last scroll, eg because of slow loading images
|
|
// (only if load didn't take too long to prevent overtaking user scroll)
|
|
|
|
|
|
var timeElapsed = Date.now() - timeStart;
|
|
|
|
if (submittedForm.auto_scroll && timeElapsed > 1000 && timeElapsed < 2000 && document.body.clientHeight !== pageHeight) {
|
|
(0, _scrollToElement["default"])(form.element);
|
|
}
|
|
});
|
|
}
|
|
|
|
if (submittedForm) {
|
|
var element = document.getElementById(submittedForm.element_id);
|
|
var form = forms.getByElement(element);
|
|
handleFormRequest(form, submittedForm.event, submittedForm.errors, submittedForm.data);
|
|
}
|
|
|
|
},{"./misc/scroll-to-element.js":2}],2:[function(require,module,exports){
|
|
"use strict";
|
|
|
|
function scrollTo(element) {
|
|
var x = window.pageXOffset || document.documentElement.scrollLeft;
|
|
var y = calculateScrollOffset(element);
|
|
window.scrollTo(x, y);
|
|
}
|
|
|
|
function calculateScrollOffset(elem) {
|
|
var body = document.body;
|
|
var html = document.documentElement;
|
|
var elemRect = elem.getBoundingClientRect();
|
|
var clientHeight = html.clientHeight;
|
|
var documentHeight = Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);
|
|
var scrollPosition = elemRect.bottom - clientHeight / 2 - elemRect.height / 2;
|
|
var maxScrollPosition = documentHeight - clientHeight;
|
|
return Math.min(scrollPosition + window.pageYOffset, maxScrollPosition);
|
|
}
|
|
|
|
module.exports = scrollTo;
|
|
|
|
},{}]},{},[1]);
|