UNPKG

@mopinion/deploy

Version:

Deploy your Mopinion feedback forms with ease

202 lines (160 loc) 6.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = createService; var _config = require("../config"); var _utils = require("../utils"); var _rules = require("../rules"); var _excluded = ["trigger"]; function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var serviceBase = { defaultAdapter: function defaultAdapter() { return window.srv; }, serviceUrl: 'https://collect.mopinion.com/assets/surveys/2.0/js/survey.min.js' }; var serviceConfig = {}; var loadingServiceUrls = {}; function createService() { var _getConfig; var serviceName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'mopinion'; var customConfig = (_getConfig = (0, _config.getConfig)(function (config) { return config[serviceName]; })) !== null && _getConfig !== void 0 ? _getConfig : {}; var listeners = []; var config = _objectSpread(_objectSpread(_objectSpread({}, serviceBase), serviceConfig[serviceName] && _objectSpread({}, serviceConfig[serviceName])), customConfig); function getAdapter() { if (config.adapter) { return config.adapter; } return config.defaultAdapter(); } function isLoaded() { return typeof getAdapter() !== 'undefined'; } function isLoading() { return loadingServiceUrls[config.serviceUrl]; } function setLoading(loading) { loadingServiceUrls[config.serviceUrl] = loading; } function start() { var callback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {}; if (isLoaded()) { return callback(); } if (isLoading()) { onLoaded(callback); return; } setLoading(true); (0, _utils.appendScript)({ src: "".concat(config.serviceUrl).concat(config.version ? "?v=".concat(config.version) : ''), onLoad: function onLoad() { setLoading(false); callback(); handleLoaded(); } }); } function onLoaded(callback) { if (isLoaded()) { callback(); } else { listeners.push(callback); } } function handleLoaded() { listeners.forEach(function (callback) { return typeof callback === 'function' && callback(); }); listeners = []; } function removeWhenClosed(key) { var interval = setInterval(function () { if (formIsOpen(key)) { return; } removeForm(key); clearInterval(interval); }, 100); } function handleTrigger() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, trigger = _ref.trigger, props = _objectWithoutProperties(_ref, _excluded); customConfig.refresh = (0, _config.getConfig)(function (config) { return config.refresh; }); switch (trigger) { case _rules.triggerTypes.passive: return openForm(_objectSpread(_objectSpread(_objectSpread({}, customConfig), props), {}, { cookie_expire: props.session, trigger_method: trigger, triggerMethod: trigger, showButton: true })); case _rules.triggerTypes.proactive: case _rules.triggerTypes.exit: return openForm(_objectSpread(_objectSpread(_objectSpread({}, customConfig), props), {}, { cookie_expire: props.session, trigger_method: trigger, triggerMethod: trigger, formOpen: true })); default: return; } } function openForm() { var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; if (typeof config.openForm === 'function') { return config.openForm(props); } getAdapter().open(props); } function formIsOpen(key) { try { if (typeof config.formIsOpen === 'function') { return config.formIsOpen(key); } return getAdapter().isOpen(key); } catch (e) { return false; } } function removeForm(key) { try { if (typeof config.removeForm === 'function') { return config.removeForm(key); } return getAdapter().clearForm(key); } catch (e) {} } function addEventListener(event, fn) { try { getAdapter().addEventListener(event, fn); } catch (e) {} } function removeEventListener(event, fn) { try { getAdapter().removeEventListener(event, fn); } catch (e) {} } return { start: start, handleTrigger: handleTrigger, openForm: openForm, removeWhenClosed: removeWhenClosed, addEventListener: addEventListener, removeEventListener: removeEventListener, onLoaded: onLoaded, isLoaded: isLoaded }; } //# sourceMappingURL=createService.js.map