UNPKG

@mopinion/deploy

Version:

Deploy your Mopinion feedback forms with ease

164 lines (163 loc) 6.74 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 _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } 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