kosx

mraid.js

Jan 11th, 2021 (edited)
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /******/ (function(modules) { // webpackBootstrap
  2. /******/    // The module cache
  3. /******/    var installedModules = {};
  4. /******/
  5. /******/    // The require function
  6. /******/    function __webpack_require__(moduleId) {
  7. /******/
  8. /******/        // Check if module is in cache
  9. /******/        if(installedModules[moduleId]) {
  10. /******/            return installedModules[moduleId].exports;
  11. /******/        }
  12. /******/        // Create a new module (and put it into the cache)
  13. /******/        var module = installedModules[moduleId] = {
  14. /******/            i: moduleId,
  15. /******/            l: false,
  16. /******/            exports: {}
  17. /******/        };
  18. /******/
  19. /******/        // Execute the module function
  20. /******/        modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  21. /******/
  22. /******/        // Flag the module as loaded
  23. /******/        module.l = true;
  24. /******/
  25. /******/        // Return the exports of the module
  26. /******/        return module.exports;
  27. /******/    }
  28. /******/
  29. /******/
  30. /******/    // expose the modules object (__webpack_modules__)
  31. /******/    __webpack_require__.m = modules;
  32. /******/
  33. /******/    // expose the module cache
  34. /******/    __webpack_require__.c = installedModules;
  35. /******/
  36. /******/    // define getter function for harmony exports
  37. /******/    __webpack_require__.d = function(exports, name, getter) {
  38. /******/        if(!__webpack_require__.o(exports, name)) {
  39. /******/            Object.defineProperty(exports, name, {
  40. /******/                configurable: false,
  41. /******/                enumerable: true,
  42. /******/                get: getter
  43. /******/            });
  44. /******/        }
  45. /******/    };
  46. /******/
  47. /******/    // define __esModule on exports
  48. /******/    __webpack_require__.r = function(exports) {
  49. /******/        Object.defineProperty(exports, '__esModule', { value: true });
  50. /******/    };
  51. /******/
  52. /******/    // getDefaultExport function for compatibility with non-harmony modules
  53. /******/    __webpack_require__.n = function(module) {
  54. /******/        var getter = module && module.__esModule ?
  55. /******/            function getDefault() { return module['default']; } :
  56. /******/            function getModuleExports() { return module; };
  57. /******/        __webpack_require__.d(getter, 'a', getter);
  58. /******/        return getter;
  59. /******/    };
  60. /******/
  61. /******/    // Object.prototype.hasOwnProperty.call
  62. /******/    __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
  63. /******/
  64. /******/    // __webpack_public_path__
  65. /******/    __webpack_require__.p = "";
  66. /******/
  67. /******/
  68. /******/    // Load entry module and return exports
  69. /******/    return __webpack_require__(__webpack_require__.s = "./src/main.js");
  70. /******/ })
  71. /************************************************************************/
  72. /******/ ({
  73.  
  74. /***/ "./src/bridgeMraid.js":
  75. /*!****************************!*\
  76.   !*** ./src/bridgeMraid.js ***!
  77.   \****************************/
  78. /*! no static exports found */
  79. /***/ (function(module, exports, __webpack_require__) {
  80.  
  81. "use strict";
  82. eval("\n\n// Bridge interface to SDK\nvar CONSTANTS = __webpack_require__(/*! ./constants */ \"./src/constants.js\");\nvar Helpers = __webpack_require__(/*! ./helpers */ \"./src/helpers.js\");\nvar mraidState = __webpack_require__(/*! ./mraidState */ \"./src/mraidState.js\");\n\nvar nativeSDKFiredReady = false;\nvar nativeCallQueue = [];\nvar nativeCallInFlight = false;\nvar lastSizeChangeProperties = null;\n\n// Functions that will be invoked by the native SDK whenever a \"change\" event occurs.\nvar changeHandlers = {\n    state: function state(val) {\n        var state = mraidState.getStateValue();\n        if (state === CONSTANTS.STATES.LOADING) {\n            broadcastEvent(CONSTANTS.EVENTS.INFO, \"Native SDK initialized.\");\n        }\n        state = mraidState.updateState(val);\n        broadcastEvent(CONSTANTS.EVENTS.INFO, \"Set state to \" + Helpers.stringify(val));\n        broadcastEvent(CONSTANTS.EVENTS.STATECHANGE, state);\n    },\n    viewable: function viewable(val) {\n        var isViewable = mraidState.updateIsViewable(val);\n        broadcastEvent(CONSTANTS.EVENTS.INFO, \"Set isViewable to \" + Helpers.stringify(val));\n        broadcastEvent(CONSTANTS.EVENTS.VIEWABLECHANGE, isViewable);\n    },\n    placementType: function placementType(val) {\n        broadcastEvent(CONSTANTS.EVENTS.INFO, \"Set placementType to \" + Helpers.stringify(val));\n        mraidState.updatePlacementType(val);\n    },\n    sizeChange: function sizeChange(val) {\n        broadcastEvent(CONSTANTS.EVENTS.INFO, \"Set screenSize to \" + Helpers.stringify(val));\n        var width = val.width,\n            height = val.height;\n\n        mraidState.updateScreenSize(width, height);\n    },\n    supports: function supports(val) {\n        broadcastEvent(CONSTANTS.EVENTS.INFO, \"Set supports to \" + Helpers.stringify(val));\n        mraidState.updateSupportProperties(val);\n    },\n    hostSDKVersion: function hostSDKVersion(val) {\n        // val is expected to be formatted like 'X.Y.Z[-+]identifier'.\n        var versions = val.split(\".\").map(function (version) {\n            return parseInt(version, 10);\n        }).filter(function (version) {\n            return version >= 0;\n        });\n\n        if (versions.length >= 3) {\n            var hostSDKVersion = mraidState.updateHostSDKVersion(versions);\n            broadcastEvent(CONSTANTS.EVENTS.INFO, \"Set hostSDKVersion to \" + Helpers.stringify(hostSDKVersion));\n        }\n    }\n};\n\nfunction fireChangeEvent(properties) {\n    for (var p in properties) {\n        if (properties[p]) {\n            // Change handlers defined by MRAID below\n            var handler = changeHandlers[p];\n            handler(properties[p]);\n        }\n    }\n}\n\nfunction nativeCallComplete() {\n    if (nativeCallQueue.length === 0) {\n        nativeCallInFlight = false;\n        return;\n    }\n    var nextCall = nativeCallQueue.pop();\n    window.location = nextCall;\n}\n\nfunction executeNativeCall(event, args) {\n    var call = \"smaato://\" + event;\n    var key = void 0;\n    var value = void 0;\n    var isFirstArgument = true;\n\n    if (!nativeSDKFiredReady) {\n        console.log(\"rejecting \" + event + \" because mraid is not ready\");\n        notifyErrorEvent(\"mraid is not ready\", event);\n        return;\n    }\n\n    for (var i = 0; i < args.length; i += 2) {\n        key = args[i];\n        value = args[i + 1];\n\n        if (value === null) {\n            continue;\n        }\n        if (isFirstArgument) {\n            call += \"?\";\n            isFirstArgument = false;\n        } else {\n            call += \"&\";\n        }\n        call += encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n    }\n\n    if (nativeCallInFlight) {\n        nativeCallQueue.push(call);\n    } else {\n        nativeCallInFlight = true;\n        window.location = call; // how does this work?\n    }\n}\n\nfunction setCurrentPosition(x, y, width, height) {\n    var currentPosition = mraidState.updateCurrentPosition(x, y, width, height);\n    broadcastEvent(CONSTANTS.EVENTS.INFO, \"Set current position to \" + Helpers.stringify(currentPosition));\n}\n\nfunction setDefaultPosition(x, y, width, height) {\n    var defaultPosition = mraidState.updateDefaultPosition(x, y, width, height);\n    broadcastEvent(CONSTANTS.EVENTS.INFO, \"Set default position to \" + Helpers.stringify(defaultPosition));\n}\n\nfunction setMaxSize(width, height) {\n    var maxSize = mraidState.updateMaxSize(width, height);\n    mraidState.updateExpandProperties(\"width\", width);\n    mraidState.updateExpandProperties(\"height\", height);\n    broadcastEvent(CONSTANTS.EVENTS.INFO, \"Set max size to \" + Helpers.stringify(maxSize));\n}\n\nfunction setPlacementType(_placementType) {\n    var placementType = mraidState.updatePlacementType(_placementType);\n    broadcastEvent(CONSTANTS.EVENTS.INFO, \"Set placement type to \" + Helpers.stringify(placementType));\n}\n\nfunction setScreenSize(width, height) {\n    var screenSize = mraidState.updateScreenSize(width, height);\n    broadcastEvent(CONSTANTS.EVENTS.INFO, \"Set screen size to \" + Helpers.stringify(screenSize));\n}\n\nfunction setState(_state) {\n    var state = mraidState.updateState(_state);\n    broadcastEvent(CONSTANTS.EVENTS.INFO, \"Set state to \" + Helpers.stringify(state));\n    broadcastEvent(CONSTANTS.EVENTS.STATECHANGE, state);\n}\n\nfunction setIsViewable(_isViewable) {\n    var isViewable = mraidState.updateIsViewable(_isViewable);\n    broadcastEvent(CONSTANTS.EVENTS.INFO, \"Set isViewable to \" + Helpers.stringify(isViewable));\n    broadcastEvent(CONSTANTS.EVENTS.VIEWABLECHANGE, isViewable);\n}\n\nfunction setSupports(value) {\n    return mraidState.updateSupportProperties(value);\n}\n\nfunction notifyReadyEvent() {\n    nativeSDKFiredReady = true;\n    broadcastEvent(CONSTANTS.EVENTS.READY);\n}\n\nfunction notifyErrorEvent(message, action) {\n    broadcastEvent(CONSTANTS.EVENTS.ERROR, message, action);\n}\n\nfunction notifySizeChangeEvent(width, height) {\n    if (lastSizeChangeProperties && width === lastSizeChangeProperties.width && height === lastSizeChangeProperties.height) {\n        return;\n    }\n\n    lastSizeChangeProperties = {\n        width: width,\n        height: height\n    };\n    broadcastEvent(CONSTANTS.EVENTS.SIZECHANGE, width, height);\n}\n\nfunction notifyStateChangeEvent() {\n    var state = mraidState.getStateValue();\n    if (state === CONSTANTS.STATES.LOADING) {\n        broadcastEvent(CONSTANTS.EVENTS.INFO, \"Native SDK initialized.\");\n    }\n    broadcastEvent(CONSTANTS.EVENTS.INFO, \"Set state to \" + Helpers.stringify(state));\n    broadcastEvent(CONSTANTS.EVENTS.STATECHANGE, state);\n}\n\nfunction notifyViewableChangeEvent() {\n    var isViewable = mraidState.getIsViewableValue();\n    broadcastEvent(CONSTANTS.EVENTS.INFO, \"Set isViewable to \" + Helpers.stringify(isViewable));\n    broadcastEvent(CONSTANTS.EVENTS.VIEWABLECHANGE, isViewable);\n}\n\nmodule.exports = {\n    validate: validate, // shouldn't be on bridge\n    setState: setState,\n    setMaxSize: setMaxSize,\n    setSupports: setSupports,\n    setScreenSize: setScreenSize,\n    setIsViewable: setIsViewable,\n    broadcastEvent: broadcastEvent,\n    fireChangeEvent: fireChangeEvent,\n    setPlacementType: setPlacementType,\n    executeNativeCall: executeNativeCall,\n    setCurrentPosition: setCurrentPosition,\n    setDefaultPosition: setDefaultPosition,\n    nativeCallComplete: nativeCallComplete,\n    notifyReadyEvent: notifyReadyEvent,\n    notifyErrorEvent: notifyErrorEvent,\n    notifySizeChangeEvent: notifySizeChangeEvent,\n    notifyStateChangeEvent: notifyStateChangeEvent,\n    notifyViewableChangeEvent: notifyViewableChangeEvent,\n    lastSizeChangeProperties: lastSizeChangeProperties,\n    nativeSDKFiredReady: nativeSDKFiredReady,\n    nativeCallQueue: nativeCallQueue,\n    nativeCallInFlight: nativeCallInFlight,\n    fireReadyEvent: notifyReadyEvent,\n    fireErrorEvent: notifyErrorEvent\n};\n\nfunction broadcastEvent() {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n    }\n\n    var event = args.shift();\n    var listeners = mraidState.getListeners();\n    if (listeners[event]) {\n        listeners[event].broadcast(args);\n    }\n}\n\nfunction validate(obj, validators, action, merge) {\n    if (!merge) {\n        // Check to see if any required properties are missing.\n        if (obj === null) {\n            broadcastEvent(CONSTANTS.EVENTS.ERROR, \"Required object not provided.\", action);\n            return false;\n        }\n        for (var i in validators) {\n            if (validators[i] && obj[i] === undefined) {\n                broadcastEvent(CONSTANTS.EVENTS.ERROR, \"Object is missing required property: \" + i, action);\n                return false;\n            }\n        }\n    }\n\n    for (var prop in obj) {\n        var validator = validators[prop];\n        var value = obj[prop];\n        if (validator && !validator(value)) {\n            // Failed validation.\n            broadcastEvent(CONSTANTS.EVENTS.ERROR, \"Value of property \" + prop + \" is invalid: \" + value, action);\n            return false;\n        }\n    }\n    return true;\n}\n\n//# sourceURL=webpack:///./src/bridgeMraid.js?");
  83.  
  84. /***/ }),
  85.  
  86. /***/ "./src/constants.js":
  87. /*!**************************!*\
  88.   !*** ./src/constants.js ***!
  89.   \**************************/
  90. /*! no static exports found */
  91. /***/ (function(module, exports, __webpack_require__) {
  92.  
  93. "use strict";
  94. eval("\n\nmodule.exports = {\n    VERSION: \"2.0\",\n    STATES: {\n        LOADING: \"loading\",\n        DEFAULT: \"default\",\n        EXPANDED: \"expanded\",\n        HIDDEN: \"hidden\",\n        RESIZED: \"resized\"\n    },\n    EVENTS: {\n        ERROR: \"error\",\n        INFO: \"info\",\n        READY: \"ready\",\n        STATECHANGE: \"stateChange\",\n        VIEWABLECHANGE: \"viewableChange\",\n        SIZECHANGE: \"sizeChange\"\n    },\n    PLACEMENT_TYPES: {\n        UNKNOWN: \"unknown\",\n        INLINE: \"inline\",\n        INTERSTITIAL: \"interstitial\"\n    },\n    NATIVE_EVENTS: {\n        OPEN: \"open\",\n        USECUSTOMCLOSE: \"useCustomClose\",\n        EXPAND: \"expand\",\n        CLOSE: \"close\",\n        PLAYVIDEO: \"playVideo\",\n        SETORIENTATIONPROPERTIES: \"setOrientationProperties\",\n        RESIZE: \"resize\"\n    }\n};\n\n//# sourceURL=webpack:///./src/constants.js?");
  95.  
  96. /***/ }),
  97.  
  98. /***/ "./src/helpers.js":
  99. /*!************************!*\
  100.   !*** ./src/helpers.js ***!
  101.   \************************/
  102. /*! no static exports found */
  103. /***/ (function(module, exports, __webpack_require__) {
  104.  
  105. "use strict";
  106. eval("\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction contains(value, array) {\n    for (var i in array) {\n        if (array[i] === value) {\n            return true;\n        }\n    }\n    return false;\n}\n\nfunction clone(obj) {\n    if (obj === null) {\n        return null;\n    }\n    var f = function f() {};\n    f.prototype = obj;\n    return new f();\n}\n\nfunction stringify(obj) {\n    if ((typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj)) === \"object\") {\n        var out = [];\n        if (obj.push) {\n            // Array.\n            for (var p in obj) {\n                out.push(obj[p]);\n            }\n            return \"[\" + out.join(\",\") + \"]\";\n        }\n        // Other object.\n        for (var _p in obj) {\n            out.push(\"'\" + _p + \"': \" + obj[_p]);\n        }\n        return \"{\" + out.join(\",\") + \"}\";\n    }return String(obj);\n}\n\nmodule.exports = {\n    clone: clone,\n    contains: contains,\n    stringify: stringify\n};\n\n//# sourceURL=webpack:///./src/helpers.js?");
  107.  
  108. /***/ }),
  109.  
  110. /***/ "./src/main.js":
  111. /*!*********************!*\
  112.   !*** ./src/main.js ***!
  113.   \*********************/
  114. /*! no static exports found */
  115. /***/ (function(module, exports, __webpack_require__) {
  116.  
  117. "use strict";
  118. eval("\n\nvar mraid = __webpack_require__(/*! ./mraid */ \"./src/mraid.js\");\nvar mraidbridge = __webpack_require__(/*! ./bridgeMraid */ \"./src/bridgeMraid.js\");\n\n(function () {\n    var isIOS = /iphone|ipad|ipod/i.test(window.navigator.userAgent.toLowerCase());\n    if (isIOS) {\n        console = {};\n        console.log = function (log) {\n            var iframe = document.createElement(\"iframe\");\n            iframe.setAttribute(\"src\", \"ios-log: \" + log);\n            document.documentElement.appendChild(iframe);\n            iframe.parentNode.removeChild(iframe);\n            iframe = null;\n        };\n        console.debug = console.info = console.warn = console.error = console.log;\n    }\n})();\n\n(function () {\n    // Bridge interface to SDK\n    window.mraidbridge = mraidbridge;\n    window.mraid = mraid;\n})();\n\n//# sourceURL=webpack:///./src/main.js?");
  119.  
  120. /***/ }),
  121.  
  122. /***/ "./src/mraid.js":
  123. /*!**********************!*\
  124.   !*** ./src/mraid.js ***!
  125.   \**********************/
  126. /*! no static exports found */
  127. /***/ (function(module, exports, __webpack_require__) {
  128.  
  129. "use strict";
  130. eval("\n\nvar CONSTANTS = __webpack_require__(/*! ./constants */ \"./src/constants.js\");\nvar Helpers = __webpack_require__(/*! ./helpers */ \"./src/helpers.js\");\nvar bridge = __webpack_require__(/*! ./bridgeMraid */ \"./src/bridgeMraid.js\");\nvar mraidState = __webpack_require__(/*! ./mraidState */ \"./src/mraidState.js\");\n\nvar VERSION = CONSTANTS.VERSION,\n    STATES = CONSTANTS.STATES,\n    EVENTS = CONSTANTS.EVENTS,\n    PLACEMENT_TYPES = CONSTANTS.PLACEMENT_TYPES,\n    NATIVE_EVENTS = CONSTANTS.NATIVE_EVENTS;\n\n\nmodule.exports = {\n    VERSION: VERSION,\n    STATES: STATES,\n    EVENTS: EVENTS,\n    PLACEMENT_TYPES: PLACEMENT_TYPES,\n    addEventListener: addEventListener,\n    removeEventListener: removeEventListener,\n    open: open,\n    close: close,\n    expand: expand,\n    resize: resize,\n    supports: supports,\n    getState: getState,\n    playVideo: playVideo,\n    getMaxSize: getMaxSize,\n    getVersion: getVersion,\n    isViewable: isViewable,\n    getScreenSize: getScreenSize,\n    useCustomClose: useCustomClose,\n    getPlacementType: getPlacementType,\n    getHostSDKVersion: getHostSDKVersion,\n    getCurrentPosition: getCurrentPosition,\n    getDefaultPosition: getDefaultPosition,\n    getResizeProperties: getResizeProperties,\n    setResizeProperties: setResizeProperties,\n    getExpandProperties: getExpandProperties,\n    setExpandProperties: setExpandProperties,\n    getOrientationProperties: getOrientationProperties,\n    setOrientationProperties: setOrientationProperties\n};\n\nvar expandPropertyValidators = {\n    useCustomClose: function useCustomClose(v) {\n        return typeof v === \"boolean\";\n    }\n};\n\nfunction addEventListener(event, listener) {\n    if (!event || !listener) {\n        bridge.broadcastEvent(EVENTS.ERROR, \"Both event and listener are required.\", \"addEventListener\");\n    } else if (!Helpers.contains(event, EVENTS)) {\n        bridge.broadcastEvent(EVENTS.ERROR, \"Unknown MRAID event: \" + event, \"addEventListener\");\n    } else {\n        mraidState.updateListeners(event, listener);\n    }\n}\n\nfunction close() {\n    var state = mraidState.getStateValue();\n    if (state === STATES.HIDDEN) {\n        bridge.broadcastEvent(EVENTS.ERROR, \"Ad cannot be closed when it is already hidden.\", \"close\");\n    } else {\n        bridge.executeNativeCall(NATIVE_EVENTS.CLOSE, []);\n        try {\n            Android.close(); // eslint-disable-line no-undef\n        } catch (err) {\n            console.warn(\"Android is not defined!\");\n        }\n    }\n}\n\nfunction expand(URL) {\n    var expandProperties = mraidState.getExpandProperties();\n    if (!(getState() === STATES.DEFAULT || getState() === STATES.RESIZED)) {\n        bridge.broadcastEvent(EVENTS.ERROR, \"Ad can only be expanded from the default or resized state.\", \"expand\");\n    } else {\n        var args = [\"shouldUseCustomClose\", expandProperties.useCustomClose];\n        if (URL) {\n            args = args.concat([\"url\", URL]);\n        }\n        bridge.executeNativeCall(NATIVE_EVENTS.EXPAND, args);\n        try {\n            Android.expand(0, 0, 0, 0, URL, expandProperties.useCustomClose); // eslint-disable-line no-undef\n        } catch (err) {\n            console.warn(\"Android is not defined!\");\n        }\n    }\n}\n\nfunction getExpandProperties() {\n    var expandProperties = mraidState.getExpandProperties();\n    var properties = {\n        width: expandProperties.width,\n        height: expandProperties.height,\n        useCustomClose: expandProperties.useCustomClose,\n        isModal: expandProperties.isModal\n    };\n    return properties;\n}\n\nfunction getCurrentPosition() {\n    var _mraidState$getCurren = mraidState.getCurrentPositionValue(),\n        x = _mraidState$getCurren.x,\n        y = _mraidState$getCurren.y,\n        width = _mraidState$getCurren.width,\n        height = _mraidState$getCurren.height;\n\n    return {\n        x: x, y: y, width: width, height: height\n    };\n}\n\nfunction getDefaultPosition() {\n    var _mraidState$getDefaul = mraidState.getDefaultPositionValue(),\n        x = _mraidState$getDefaul.x,\n        y = _mraidState$getDefaul.y,\n        width = _mraidState$getDefaul.width,\n        height = _mraidState$getDefaul.height;\n\n    return {\n        x: x, y: y, width: width, height: height\n    };\n}\n\nfunction getMaxSize() {\n    var maxSize = mraidState.getMaxSizeValue();\n    var width = maxSize.width,\n        height = maxSize.height;\n\n    return { width: width, height: height };\n}\n\nfunction getPlacementType() {\n    return mraidState.getPlacementTypeValue();\n}\n\nfunction getScreenSize() {\n    var screenSize = mraidState.getScreenSizeValue();\n    var width = screenSize.width,\n        height = screenSize.height;\n\n    return { width: width, height: height };\n}\n\nfunction getState() {\n    return mraidState.getStateValue();\n}\n\nfunction isViewable() {\n    return mraidState.getIsViewableValue();\n}\n\nfunction getVersion() {\n    return VERSION;\n}\n\nfunction open(URL) {\n    if (!URL) {\n        bridge.broadcastEvent(EVENTS.ERROR, \"URL is required.\", \"open\");\n    } else {\n        var args = [\"url\", URL];\n        bridge.executeNativeCall(NATIVE_EVENTS.OPEN, args);\n        try {\n            Android.open(URL); // eslint-disable-line no-undef\n        } catch (err) {\n            console.warn(\"Android is not defined!\");\n        }\n    }\n}\n\nfunction removeEventListener(event, listener) {\n    if (!event) {\n        bridge.broadcastEvent(EVENTS.ERROR, \"Event is required.\", \"removeEventListener\");\n        return;\n    }\n    var listeners = mraidState.getListeners();\n\n    if (listener) {\n        // If we have a valid event, we'll try to remove the listener from it.\n        var success = false;\n        if (listeners[event]) {\n            success = mraidState.removeListener(listener, event);\n        }\n        // If we didn't have a valid event or couldn't remove the listener from the event, broadcast an error and return early.\n        if (!success) {\n            bridge.broadcastEvent(EVENTS.ERROR, \"Listener not currently registered for event.\", \"removeEventListener\");\n            return;\n        }\n    } else if (!listener && listeners[event]) {\n        mraidState.removeAllListeners(event);\n    }\n\n    listeners = mraidState.getListeners();\n    if (listeners[event] && listeners[event].count === 0) {\n        mraidState.deleteListeners(event);\n    }\n}\n\nfunction setExpandProperties(properties) {\n    if (bridge.validate(properties, expandPropertyValidators, \"setExpandProperties\", true)) {\n        if (properties.hasOwnProperty(\"useCustomClose\")) {\n            mraidState.updateExpandProperties(\"useCustomClose\", properties.useCustomClose);\n        }\n    }\n}\n\nfunction useCustomClose(shouldUseCustomClose) {\n    mraidState.updateExpandProperties(\"useCustomClose\", shouldUseCustomClose);\n    var args = [\"shouldUseCustomClose\", shouldUseCustomClose];\n    bridge.executeNativeCall(NATIVE_EVENTS.USECUSTOMCLOSE, args);\n    try {\n        Android.useCustomClose(shouldUseCustomClose); // eslint-disable-line no-undef\n    } catch (err) {\n        console.warn(\"Android is not defined!\");\n    }\n}\n\nfunction supports(feature) {\n    return mraidState.getSupportValue(feature);\n}\n\nfunction playVideo(uri) {\n    if (!isViewable()) {\n        bridge.broadcastEvent(EVENTS.ERROR, \"playVideo cannot be called until the ad is viewable\", \"playVideo\");\n        return;\n    }\n    if (!uri) {\n        bridge.broadcastEvent(EVENTS.ERROR, \"playVideo must be called with a valid URI\", \"playVideo\");\n    } else {\n        var args = [\"uri\", uri];\n        bridge.executeNativeCall(NATIVE_EVENTS.PLAYVIDEO, args);\n        try {\n            Android.playVideo(uri); // eslint-disable-line no-undef\n        } catch (err) {\n            console.warn(\"Android is not defined!\");\n        }\n    }\n}\n\nfunction setOrientationProperties(properties) {\n    var desiredProperties = [\"allowOrientationChange\", \"forceOrientation\"];\n    var orientationProperties = mraidState.updateOrientationProperties(desiredProperties, properties);\n\n    var args = [\"allowOrientationChange\", orientationProperties.allowOrientationChange, \"forceOrientation\", orientationProperties.forceOrientation];\n    bridge.executeNativeCall(NATIVE_EVENTS.SETORIENTATIONPROPERTIES, args);\n    try {\n        Android.setOrientationProperties(orientationProperties.allowOrientationChange, orientationProperties.forceOrientation); // eslint-disable-line no-undef\n    } catch (err) {\n        console.warn(\"Android is not defined!\");\n    }\n}\n\nfunction getOrientationProperties() {\n    var _mraidState$getOrient = mraidState.getOrientationPropertiesValues(),\n        allowOrientationChange = _mraidState$getOrient.allowOrientationChange,\n        forceOrientation = _mraidState$getOrient.forceOrientation;\n\n    return {\n        allowOrientationChange: allowOrientationChange,\n        forceOrientation: forceOrientation\n    };\n}\n\nfunction resize() {\n    var _mraidState$getResize = mraidState.getResizePropertiesValues(),\n        width = _mraidState$getResize.width,\n        height = _mraidState$getResize.height,\n        offsetX = _mraidState$getResize.offsetX,\n        offsetY = _mraidState$getResize.offsetY,\n        customClosePosition = _mraidState$getResize.customClosePosition,\n        allowOffscreen = _mraidState$getResize.allowOffscreen;\n\n    if (!(getState() === STATES.DEFAULT || getState() === STATES.RESIZED)) {\n        bridge.broadcastEvent(EVENTS.ERROR, \"Ad can only be resized from the default or resized state.\", \"resize\");\n    } else if (!width || !height) {\n        bridge.broadcastEvent(EVENTS.ERROR, \"Must set resize properties before calling resize()\", \"resize\");\n    } else {\n        var args = [\"width\", width, \"height\", height, \"offsetX\", offsetX || 0, \"offsetY\", offsetY || 0, \"customClosePosition\", customClosePosition, \"allowOffscreen\", !!allowOffscreen];\n        bridge.executeNativeCall(NATIVE_EVENTS.RESIZE, args);\n        try {\n            Android.resize(width, height, offsetX, offsetY, customClosePosition, allowOffscreen); // eslint-disable-line no-undef\n        } catch (err) {\n            console.warn(\"Android is not defined!\");\n        }\n    }\n}\n\nvar resizePropertyValidators = {\n    width: function width(v) {\n        return !isNaN(v) && v > 0;\n    },\n    height: function height(v) {\n        return !isNaN(v) && v > 0;\n    },\n    offsetX: function offsetX(v) {\n        return !isNaN(v);\n    },\n    offsetY: function offsetY(v) {\n        return !isNaN(v);\n    },\n    customClosePosition: function customClosePosition(v) {\n        return typeof v === \"string\" && [\"top-right\", \"bottom-right\", \"top-left\", \"bottom-left\", \"center\", \"top-center\", \"bottom-center\"].indexOf(v) > -1;\n    },\n    allowOffscreen: function allowOffscreen(v) {\n        return typeof v === \"boolean\";\n    }\n};\n\nfunction getResizeProperties() {\n    var _mraidState$getResize2 = mraidState.getResizePropertiesValues(),\n        width = _mraidState$getResize2.width,\n        height = _mraidState$getResize2.height,\n        offsetX = _mraidState$getResize2.offsetX,\n        offsetY = _mraidState$getResize2.offsetY,\n        customClosePosition = _mraidState$getResize2.customClosePosition,\n        allowOffscreen = _mraidState$getResize2.allowOffscreen;\n\n    var properties = {\n        width: width,\n        height: height,\n        offsetX: offsetX,\n        offsetY: offsetY,\n        customClosePosition: customClosePosition,\n        allowOffscreen: allowOffscreen\n    };\n    return properties;\n}\n\nfunction setResizeProperties(properties) {\n    if (bridge.validate(properties, resizePropertyValidators, \"setResizeProperties\", true)) {\n        var desiredProperties = [\"width\", \"height\", \"offsetX\", \"offsetY\", \"customClosePosition\", \"allowOffscreen\"];\n        mraidState.updateResizeProperties(desiredProperties, properties);\n    }\n}\n\n// Determining SDK version\nfunction getHostSDKVersion() {\n    return mraidState.getHostSDKVersionValue();\n}\n\n//# sourceURL=webpack:///./src/mraid.js?");
  131.  
  132. /***/ }),
  133.  
  134. /***/ "./src/mraidState.js":
  135. /*!***************************!*\
  136.   !*** ./src/mraidState.js ***!
  137.   \***************************/
  138. /*! no static exports found */
  139. /***/ (function(module, exports, __webpack_require__) {
  140.  
  141. "use strict";
  142. eval("\n\n// internal MRAID state\nvar state = \"loading\";\nvar isViewable = false;\nvar placementType = \"unknown\";\nvar hostSDKVersion = {\n    major: 0,\n    minor: 0,\n    patch: 0\n};\nvar defaultPosition = {};\nvar currentPosition = {};\nvar maxSize = {};\nvar screenSize = {};\n\n// External MRAID state: may be directly or indirectly modified by the ad JS.\n// Properties which define the behavior of an expandable ad.\nvar expandProperties = {\n    width: false,\n    height: false,\n    useCustomClose: false,\n    isModal: true\n};\n\nvar resizeProperties = {\n    width: false,\n    height: false,\n    offsetX: false,\n    offsetY: false,\n    customClosePosition: \"top-right\",\n    allowOffscreen: true\n};\n\nvar orientationProperties = {\n    allowOrientationChange: true,\n    forceOrientation: \"none\"\n};\n\nvar supportProperties = {\n    sms: false,\n    tel: false,\n    inlineVideo: false\n};\n\nvar eventListeners = {};\n\nfunction getListeners() {\n    return eventListeners;\n}\n\nfunction getResizePropertiesValues() {\n    return resizeProperties;\n}\n\nfunction getOrientationPropertiesValues() {\n    return orientationProperties;\n}\n\nfunction getStateValue() {\n    return state;\n}\n\nfunction getSupportValue(feature) {\n    return supportProperties[feature];\n}\n\nfunction getMaxSizeValue() {\n    return maxSize;\n}\n\nfunction getExpandProperties() {\n    return expandProperties;\n}\n\nfunction getScreenSizeValue() {\n    return screenSize;\n}\n\nfunction getPlacementTypeValue() {\n    return placementType;\n}\n\nfunction getIsViewableValue() {\n    return isViewable;\n}\n\nfunction getHostSDKVersionValue() {\n    return hostSDKVersion;\n}\n\nfunction getDefaultPositionValue() {\n    return defaultPosition;\n}\n\nfunction getCurrentPositionValue() {\n    return currentPosition;\n}\n\nfunction updateState(value) {\n    state = value;\n    return state;\n}\n\nfunction updateMaxSize(width, height) {\n    maxSize = { width: width, height: height };\n    return maxSize;\n}\n\nfunction updateIsViewable(value) {\n    isViewable = value;\n    return isViewable;\n}\n\nfunction updateScreenSize(width, height) {\n    screenSize = { width: width, height: height };\n    return screenSize;\n}\n\nfunction updateExpandProperties(key, value) {\n    expandProperties[key] = value;\n    return expandProperties;\n}\n\nfunction updateSupportProperties(value) {\n    supportProperties = value;\n    return supportProperties;\n}\n\nfunction updatePlacementType(value) {\n    placementType = value;\n    return placementType;\n}\n\nfunction updateHostSDKVersion(versions) {\n    hostSDKVersion.major = parseInt(versions[0], 10);\n    hostSDKVersion.minor = parseInt(versions[1], 10);\n    hostSDKVersion.patch = parseInt(versions[2], 10);\n    return hostSDKVersion;\n}\n\nfunction updateResizeProperties(desiredProperties, properties) {\n    desiredProperties.forEach(function (propertyName) {\n        if (properties.hasOwnProperty(propertyName)) {\n            resizeProperties[propertyName] = properties[propertyName];\n        }\n    });\n    return resizeProperties;\n}\n\nfunction updateDefaultPosition(x, y, width, height) {\n    defaultPosition = {\n        x: x, y: y, width: width, height: height\n    };\n    return defaultPosition;\n}\n\nfunction updateCurrentPosition(x, y, width, height) {\n    currentPosition = {\n        x: x, y: y, width: width, height: height\n    };\n    return currentPosition;\n}\n\nfunction updateOrientationProperties(desiredProperties, properties) {\n    desiredProperties.forEach(function (propertyName) {\n        if (properties.hasOwnProperty(propertyName)) {\n            orientationProperties[propertyName] = properties[propertyName];\n        }\n    });\n    return orientationProperties;\n}\n\nfunction updateListeners(event, listener) {\n    if (!eventListeners[event]) {\n        eventListeners[event] = new EventListeners(event); // eslint-disable-line\n    }\n    eventListeners[event].add(listener);\n}\n\nfunction removeListener(listener, event) {\n    return eventListeners[event].remove(listener);\n}\n\nfunction removeAllListeners(event) {\n    return eventListeners[event].removeAll();\n}\n\nfunction deleteListeners(event) {\n    eventListeners[event] = null;\n    delete eventListeners[event];\n}\n\nmodule.exports = {\n    getListeners: getListeners,\n    removeListener: removeListener,\n    deleteListeners: deleteListeners,\n    updateListeners: updateListeners,\n    removeAllListeners: removeAllListeners,\n    getStateValue: getStateValue,\n    getSupportValue: getSupportValue,\n    getMaxSizeValue: getMaxSizeValue,\n    getIsViewableValue: getIsViewableValue,\n    getScreenSizeValue: getScreenSizeValue,\n    getExpandProperties: getExpandProperties,\n    getPlacementTypeValue: getPlacementTypeValue,\n    getHostSDKVersionValue: getHostSDKVersionValue,\n    getCurrentPositionValue: getCurrentPositionValue,\n    getDefaultPositionValue: getDefaultPositionValue,\n    getResizePropertiesValues: getResizePropertiesValues,\n    getOrientationPropertiesValues: getOrientationPropertiesValues,\n    updateState: updateState,\n    updateMaxSize: updateMaxSize,\n    updateIsViewable: updateIsViewable,\n    updateScreenSize: updateScreenSize,\n    updatePlacementType: updatePlacementType,\n    updateHostSDKVersion: updateHostSDKVersion,\n    updateDefaultPosition: updateDefaultPosition,\n    updateCurrentPosition: updateCurrentPosition,\n    updateResizeProperties: updateResizeProperties,\n    updateExpandProperties: updateExpandProperties,\n    updateSupportProperties: updateSupportProperties,\n    updateOrientationProperties: updateOrientationProperties\n};\n\nfunction EventListeners(event) {\n    this.event = event;\n    this.count = 0;\n    var listeners = {};\n\n    this.add = function (func) {\n        var id = String(func);\n        if (!listeners[id]) {\n            listeners[id] = func;\n            this.count = this.count + 1;\n        }\n    };\n\n    this.remove = function (func) {\n        var id = String(func);\n        if (listeners[id]) {\n            listeners[id] = null;\n            delete listeners[id];\n            this.count = this.count - 1;\n            return true;\n        }\n        return false;\n    };\n\n    this.removeAll = function () {\n        for (var id in listeners) {\n            if (listeners.hasOwnProperty(id)) {\n                this.remove(listeners[id]);\n            }\n        }\n    };\n\n    this.broadcast = function (args) {\n        for (var id in listeners) {\n            if (listeners[id]) {\n                listeners[id].apply(window.mraid, args);\n            }\n        }\n    };\n\n    this.toString = function () {\n        var out = [event, \":\"];\n        for (var id in listeners) {\n            if (listeners.hasOwnProperty(id)) {\n                out.push(\"|\", id, \"|\");\n            }\n        }\n        return out.join(\"\");\n    };\n}\n\n//# sourceURL=webpack:///./src/mraidState.js?");
  143.  
  144. /***/ })
  145.  
  146. /******/ });
Add Comment
Please, Sign In to add comment