UNPKG

504 kBSource Map (JSON)View Raw
1{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 09f03078a9f05a1c7a06","webpack:///./node_modules/cross-domain-utils/src/index.js","webpack:///./node_modules/belter/src/index.js","webpack:///./node_modules/zalgo-promise/src/utils.js","webpack:///./node_modules/zalgo-promise/src/global.js","webpack:///./node_modules/zalgo-promise/src/promise.js","webpack:///./node_modules/zalgo-promise/src/exceptions.js","webpack:///./node_modules/zalgo-promise/src/index.js","webpack:///./node_modules/post-robot/src/conf/constants.js","webpack:///./node_modules/post-robot/src/conf/config.js","webpack:///./node_modules/post-robot/src/conf/index.js","webpack:///./src/constants.js","webpack:///./node_modules/post-robot/src/global.js","webpack:///./node_modules/post-robot/src/lib/hello.js","webpack:///./node_modules/post-robot/src/lib/compat.js","webpack:///./node_modules/post-robot/src/lib/windows.js","webpack:///./node_modules/post-robot/src/lib/index.js","webpack:///./node_modules/belter/src/util.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/util.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/weakmap.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/native.js","webpack:///./node_modules/cross-domain-utils/src/constants.js","webpack:///./node_modules/belter/src/device.js","webpack:///./node_modules/belter/src/dom.js","webpack:///./node_modules/belter/src/storage.js","webpack:///./node_modules/post-robot/src/compat/ie.js","webpack:///./node_modules/post-robot/src/compat/index.js","webpack:///./node_modules/post-robot/src/bridge/bridge.js","webpack:///./node_modules/post-robot/src/bridge/common.js","webpack:///./node_modules/post-robot/src/bridge/child.js","webpack:///./node_modules/post-robot/src/bridge/parent.js","webpack:///./node_modules/universal-serialize/src/constants.js","webpack:///./node_modules/universal-serialize/src/common.js","webpack:///./node_modules/universal-serialize/src/serialize.js","webpack:///./node_modules/universal-serialize/src/serializers/function.js","webpack:///./node_modules/universal-serialize/src/serializers/error.js","webpack:///./node_modules/universal-serialize/src/serializers/promise.js","webpack:///./node_modules/universal-serialize/src/serializers/regex.js","webpack:///./node_modules/universal-serialize/src/serializers/date.js","webpack:///./node_modules/universal-serialize/src/serializers/array.js","webpack:///./node_modules/universal-serialize/src/serializers/object.js","webpack:///./node_modules/universal-serialize/src/serializers/string.js","webpack:///./node_modules/universal-serialize/src/serializers/number.js","webpack:///./node_modules/universal-serialize/src/serializers/boolean.js","webpack:///./node_modules/universal-serialize/src/serializers/null.js","webpack:///./node_modules/universal-serialize/src/deserialize.js","webpack:///./node_modules/post-robot/src/serialize/window.js","webpack:///./node_modules/post-robot/src/serialize/function.js","webpack:///./node_modules/post-robot/src/serialize/serialize.js","webpack:///./node_modules/post-robot/src/serialize/promise.js","webpack:///./node_modules/post-robot/src/drivers/send/strategies.js","webpack:///./node_modules/post-robot/src/drivers/send/index.js","webpack:///./node_modules/post-robot/src/drivers/listeners.js","webpack:///./node_modules/post-robot/src/drivers/receive/types.js","webpack:///./node_modules/post-robot/src/drivers/receive/index.js","webpack:///./node_modules/post-robot/src/public/client.js","webpack:///./node_modules/post-robot/src/public/server.js","webpack:///./node_modules/post-robot/src/public/config.js","webpack:///./node_modules/post-robot/src/public/index.js","webpack:///./node_modules/post-robot/src/clean.js","webpack:///./node_modules/post-robot/src/interface.js","webpack:///./node_modules/post-robot/src/index.js","webpack:///./node_modules/jsx-pragmatic/src/node.js","webpack:///./node_modules/jsx-pragmatic/src/renderers/dom.js","webpack:///./src/lib/fn.js","webpack:///./src/lib/logger.js","webpack:///./src/lib/global.js","webpack:///./src/lib/clean.js","webpack:///./src/component/window.js","webpack:///./src/component/child/props.js","webpack:///./src/component/child/index.js","webpack:///./src/component/parent/drivers.js","webpack:///./src/component/parent/index.js","webpack:///./src/lib/util.js","webpack:///./src/component/parent/props.js","webpack:///./src/component/delegate/index.js","webpack:///./src/component/component/templates/container.jsx","webpack:///./src/component/component/templates/component.jsx","webpack:///./src/component/component/index.js","webpack:///./src/component/component/validate.js","webpack:///./src/component/component/props.js","webpack:///./src/interface.js","webpack:///./src/index.js","webpack:///./node_modules/cross-domain-utils/src/util.js","webpack:///./node_modules/cross-domain-utils/src/utils.js","webpack:///./node_modules/belter/src/experiment.js","webpack:///./node_modules/belter/src/global.js","webpack:///./node_modules/belter/src/http.js","webpack:///./node_modules/belter/src/decorators.js","webpack:///./node_modules/belter/src/css.js","webpack:///./node_modules/belter/src/test.js","webpack:///./node_modules/post-robot/src/bridge/interface.js","webpack:///./src/drivers/index.js","webpack:///./src/drivers/react.js","webpack:///./src/drivers/vue.js","webpack:///./src/drivers/angular.js","webpack:///./src/drivers/glimmer.js","webpack:///./src/drivers/angular2.js"],"names":["root","factory","exports","module","define","amd","self","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_IMPORTED_MODULE_0__utils__","__webpack_exports__","__WEBPACK_IMPORTED_MODULE_1__types__","__WEBPACK_IMPORTED_MODULE_1__dom__","__WEBPACK_IMPORTED_MODULE_5__util__","__WEBPACK_IMPORTED_MODULE_7__types__","__WEBPACK_IMPORTED_MODULE_8__decorators__","__WEBPACK_IMPORTED_MODULE_9__css__","isPromise","item","Promise","window","Window","constructor","toString","then","err","getGlobal","glob","global","TypeError","zalgoGlobal","__zalgopromise__","flushPromises","activeCount","possiblyUnhandledPromiseHandlers","dispatchedErrors","ZalgoPromise","handler","_this","_classCallCheck","resolved","rejected","errorHandled","handlers","result","error","isAsync","res","resolve","reject","Error","value","dispatch","_this2","setTimeout","promise","indexOf","push","j","length","dispatchPossiblyUnhandledError","asyncReject","_this3","dispatching","_loop","_handlers$i","onSuccess","onError","flushQueue","undefined","onFinally","timeout","time","_this4","clearTimeout","toPromise","all","promises","count","results","_loop2","prom","hash","keys","map","key","items","method","onPossiblyUnhandledException","cancel","splice","context","args","apply","delay","flush","promisesToFlush","_i2","_length2","promise_ZalgoPromise","MESSAGE_TYPE","REQUEST","RESPONSE","ACK","MESSAGE_ACK","SUCCESS","ERROR","MESSAGE_NAME","METHOD","HELLO","OPEN_TUNNEL","WINDOW_PROP","POSTROBOT","SEND_STRATEGY","POST_MESSAGE","BRIDGE","GLOBAL","PROTOCOL","MOCK","FILE","SERIALIZATION_TYPE","CROSS_DOMAIN_ZALGO_PROMISE","CROSS_DOMAIN_FUNCTION","CROSS_DOMAIN_WINDOW","CONFIG","ALLOW_POSTMESSAGE_POPUP","__ALLOW_POSTMESSAGE_POPUP__","BRIDGE_TIMEOUT","CHILD_WINDOW_TIMEOUT","ACK_TIMEOUT","ACK_TIMEOUT_KNOWN","RES_TIMEOUT","ALLOWED_POST_MESSAGE_METHODS","_ALLOWED_POST_MESSAGE","location","href","ZOID","__ZOID__","PROP_TYPES","INITIAL_PROPS","WINDOW_REFERENCES","PROP_SERIALIZATION","PROP_TYPES_LIST","CONTEXT","CLASS_NAMES","EVENTS","ATTRIBUTES","ANIMATION_NAMES","EVENT_NAMES","CLOSE_REASONS","CONTEXT_LIST","DELEGATE","WILDCARD","DEFAULT_DIMENSIONS","ALLOW_DELEGATE","STRING","OBJECT","FUNCTION","BOOLEAN","NUMBER","ARRAY","RAW","UID","OPENER","TOP","PARENT","JSON","DOTIFY","BASE64","IFRAME","POPUP","OUTLET","COMPONENT_FRAME","PRERENDER_FRAME","VISIBLE","INVISIBLE","CLOSE","IFRAME_PLACEHOLDER","SHOW_CONTAINER","SHOW_COMPONENT","HIDE_CONTAINER","HIDE_COMPONENT","CLICK","PARENT_CALL","CHILD_CALL","CLOSE_DETECTED","USER_CLOSED","PARENT_CLOSE_DETECTED","CALL_ORIGINAL","CALL_DELEGATE","WIDTH","HEIGHT","defStore","arguments","getObj","getStore","win","winStore","getOrSet","has","defVal","store","set","val","del","storeKey","reset","__WEBPACK_IMPORTED_MODULE_1_cross_domain_safe_weakmap_src__","__WEBPACK_IMPORTED_MODULE_2_belter_src__","__WEBPACK_IMPORTED_MODULE_3__conf__","windowStore","WeakMap","instanceID","uniqueID","helloPromises","getHelloPromise","listenForHello","once","on","domain","_ref","source","origin","sayHello","send","_ref2","data","getWindowInstanceID","weakMapMemoizePromise","_ref3","initHello","parent","getAncestor","noop","awaitWindowHello","needsGlobalMessagingForBrowser","getUserAgent","match","knownWindows","markWindowKnown","isWindowKnown","str","atob","Buffer","from","__GLOBAL__","options","cacheMap","memoizedFunction","_len","Array","_key","cache","thisNamespace","serializeArgs","cacheTime","Date","now","displayName","memoizedPromiseFunction","_len2","_key2","promisifiedFunction","logic","__inline_memoize_cache__","called","stringifyError","level","stack","message","newErr","obj","assign","loop","dotify","prefix","newobj","isArray","every","_typeof","join","triggered","eventName","handlerList","cancelled","listener","trigger","triggerOnce","string","replace","g","toUpperCase","charAt","slice","toLowerCase","replaceObject","replacer","fullKey","defineLazyProp","itemKey","el","child","isPlainObject","_arguments2","base64encode","btoa","chars","Math","floor","random","toISOString","objectIDs","stringify","subkey","uid","getObjectID","isObjectObject","weakMapMemoize","weakmap","arg","_this5","safeIndexOf","collection","counter","CrossDomainSafeWeakMap","freeze","testWeakMap","testKey","hasNativeWeakMap","values","_cleanupClosedWindows","isWindow","isWindowClosed","isSafeToReadWrite","entry","writable","index","ABOUT","navigator","mockUserAgent","userAgent","waitForDocumentReady","document","body","url","originalHash","query","originalUrl","_url$split","split","_originalUrl$split","queryString","extendQuery","hashString","isLocalStorageEnabled","inlineMemoize","localStorage","setItem","getItem","removeItem","id","getElementSafe","isDocumentReady","interval","setInterval","clearInterval","_options","width","height","top","left","outerWidth","round","screenX","screen","outerHeight","screenY","status","toolbar","menubar","resizable","scrollbars","params","filter","Boolean","open","PopupOpenError","tag","tagName","documentElement","children","removeChild","appendChild","frame","contentWindow","awaitFrameLoad","loadedFrame","iframe","container","attempts","getElement","attributes","style","element","createElement","extend","className","_i6","_Object$keys2","_length6","setAttribute","styleSheet","styleText","doc","cssText","createTextNode","setStyle","html","write","close","err2","writeToWindow","innerHTML","frameBorder","allowTransparency","backgroundColor","class","event","addEventListener","removeEventListener","parentNode","clean","animation","animate","showElement","hideElement","classList","add","remove","isElementClosed","safeInterval","_ref6","_ref6$width","_ref6$height","_ref6$interval","_ref6$win","currentWidth","offsetWidth","currentHeight","offsetHeight","check","newWidth","newHeight","observer","ResizeObserver","observe","MutationObserver","childList","subtree","characterData","disconnect","readyState","urlEncode","parseQuery","_queryString$split2","pair","decodeURIComponent","originalQuery","props","formatQuery","Element","nodeType","ownerDocument","querySelector","create","awaitFrameLoadPromises","linkFrameWindow","bindEvents","eventNames","_i8","_length8","_i10","_length10","VENDOR_PREFIXES","setVendorCSS","capitalizedName","capitalizeFirstLetter","_i12","_length12","ANIMATION_START_EVENTS","ANIMATION_END_EVENTS","CSSRule","KEYFRAMES_RULE","WEBKIT_KEYFRAMES_RULE","MOZ_KEYFRAMES_RULE","O_KEYFRAMES_RULE","MS_KEYFRAMES_RULE","stylesheets","styleSheets","cssRules","cssRule","type","isValidAnimation","hasStarted","startTimeout","endTimeout","startEvent","endEvent","cleanUp","target","animationName","stopPropagation","STYLE","DISPLAY","NONE","BLOCK","VISIBILITY","HIDDEN","IMPORTANT","setProperty","getStorage","_ref$version","version","_ref$lifetime","lifetime","STORAGE_KEY","accessedStorage","getState","localStorageEnabled","storage","rawStorage","parse","getSession","session","__session__","created","guid","getID","getSessionState","state","getSessionID","__WEBPACK_IMPORTED_MODULE_0__util__","emulateIERestrictions","sourceWindow","targetWindow","isSameTopWindow","tunnelWindows","globalStore","needsBridgeForBrowser","needsBridgeForWin","needsBridgeForDomain","getDomain","getDomainFromUrl","isSameDomain","needsBridge","getBridgeName","sanitizedDomain","BRIDGE_NAME_PREFIX","isBridge","openTunnelToParent","canary","sendMessage","parentWindow","getParent","_tunnelWindows$keys2","tunnelWindow","cleanTunnelWindows","addTunnelWindow","documentBodyReady","remoteWindows","registerRemoteWindow","findRemoteWindow","remoteWin","registerRemoteSendMessage","remoteDomain","matchDomain","rejectRemoteSendMessage","sendBridgeMessage","messagingChild","isOpener","messagingParent","awaitRemoteBridgeForWindow","getFrameByName","openTunnelToOpener","opener","getOpener","bridge","closed","receiveMessage","bridges","bridgeFrames","popupWindowsByName","popupWindowsByWin","hasBridge","openBridge","src","openBridgeFrame","winDetails","listenForRegister","onload","onerror","windowOpen","linkUrl","destroyBridges","_i4","_bridgeFrames$keys2","_length4","last","_popupWindowsByName$k2","winName","winOptions","TYPE","PROMISE","REGEX","DATE","NULL","UNDEFINED","isSerializedType","__type__","determineType","serializeType","__val__","SERIALIZER","_SERIALIZER","code","toJSON","defaultSerializers","DESERIALIZER","_DESERIALIZER","RegExp","defaultDeserializers","winToProxyWindow","idToProxyWindow","cleanupProxyWindows","_idToProxyWindow$keys2","shouldClean","ProxyWindow","serializedWindow","actualWindow","actualWindowPromise","setWindow","getInstanceID","memoizePromise","setLocation","setName","frameElement","focus","isClosed","matchWindow","_this6","unwrap","awaitWindow","serialize","isProxyWindow","toProxyWindow","deserialize","methodStore","proxyWindowMethods","listeningForFunctions","listenForFunctionCalls","meth","proxy","serializeFunction","destination","serializeMessage","_serialize","serializers","serializer","serializePromise","deserializeMessage","_deserialize","deserializers","deserializer","serializedPromise","serializedFunction","innerWrapper","opts","_extends","crossDomainFunctionWrapper","fireAndForget","__name__","__xdomain__","deserializeFunction","SEND_MESSAGE_STRATEGIES","serializedMessage","require","dom","protocol","isActuallySameDomain","getActualDomain","forEach","postMessage","_require","foreignGlobal","_serializeMessage","send__extends","messages","strategyName","success","some","responseListeners","requestListeners","erroredResponseListeners","WINDOW_WILDCARD","__DOMAIN_REGEX__","getResponseListener","deleteResponseListener","isResponseListenerErrored","getRequestListener","winQualifier","nameListeners","domainListeners","_domainListeners$__DO2","_ref5","regex","RECEIVE_MESSAGE_TYPES","sendResponse","types__extends","host","pathname","ack","handleError","_RECEIVE_MESSAGE_TYPE","stringifyDomainPattern","respond","receivedMessages","parsedMessage","receive__typeof","parseMessage","messageListener","messageEvent","sourceElement","originalEvent","requestPromises","request","getElementById","HTMLIFrameElement","hasResult","reqPromises","requestPromise","isAncestor","isRegex","actualDomain","responseListener","addResponseListener","totalAckTimeout","totalResTimeout","ackTimeout","resTimeout","cycleTime","cycle","max","min","markResponseListenerErrored","sendToParent","client","listen","listenerOptions","errorHandler","requestListener","addRequestListener","listenersCollection","_win2","_domain2","existingListener","strDomain","regexListeners","regexListener","onceFunction","errorOnClose","server__typeof","onceListener","disable","cleanUpWindow","_requestPromises$get2","initialized","INTERFACE","Node","isElementNode","isTextNode","isFragmentNode","ElementNode","_Node","node__classCallCheck","_possibleConstructorReturn","onRender","_inherits","getTag","isTag","render","renderer","getText","TextNode","_Node2","text","FragmentNode","_Node3","normalizeChild","normalizeChildren","node__typeof","normalizedChild","_normalizedChild$chil2","subchild","node","ELEMENT_TAG","ELEMENT_PROP","DOM_EVENT","onBlur","onCancel","onClick","onClose","onContextMenu","onCopy","onCut","onAuxClick","onDoubleClick","onDragEnd","onDragStart","onDrop","onFocus","onInput","onInvalid","onKeyDown","onKeyPress","onKeyUp","onMouseDown","onMouseUp","onPaste","onPause","onPlay","onPointerCancel","onPointerDown","onPointerUp","onRateChange","onReset","onSeeked","onSubmit","onTouchCancel","onTouchEnd","onTouchStart","onVolumeChange","onAbort","onAnimationEnd","onAnimationIteration","onAnimationStart","onCanPlay","onCanPlayThrough","onDrag","onDragEnter","onDragExit","onDragLeave","onDragOver","onDurationChange","onEmptied","onEncrypted","onEnded","onGotPointerCapture","onLoad","onLoadedData","onLoadedMetadata","onLoadStart","onLostPointerCapture","onMouseMove","onMouseOut","onMouseOver","onPlaying","onPointerMove","onPointerOut","onPointerOver","onProgress","onScroll","onSeeking","onStalled","onSuspend","onTimeUpdate","onToggle","onTouchMove","onTransitionEnd","onWaiting","onWheel","CREATE_ELEMENT","_CREATE_ELEMENT","ADD_CHILDREN","firstChild","docElement","_ADD_CHILDREN","_ref7","domRenderer","_ref9$doc","_ref4","prop","dom__typeof","addProps","_ref8","_el$querySelectorAll2","querySelectorAll","script","newScript","textContent","replaceChild","fixScripts","addChildren","getCurrentScriptDir","console","warn","currentScript","logger","useLogger","newLogger","globalFor","localGlobal","cleanup","tasks","cleaned","register","complete","run","hasTasks","pop","parseChildWindowName","memoize","_window$name$split","zoidcomp","encodedPayload","base64decode","isZoidComponentWindow","normalizeChildProp","component","getProp","childDecorate","ChildComponent","_class","child__classCallCheck","xchild","xprops","createError","onPropHandlers","_parseChildWindowName","parentComponentWindow","getWindowByRef","parentExports","checkParentDomain","initialProps","getPropsByRef","setProps","watchForClose","init","buildExports","watchForResize","allowedParentDomains","onProps","ref","getTop","distance","getNthParentFromTop","ancestor","_getAllFramesInWindow2","getAllFramesInWindow","windows","required","normalizedProps","sameDomain","alias","_component$getPropNam2","getPropNames","normalizeChildProps","_onPropHandlers2","checkClose","enableAutoResize","_ref2$width","_ref2$height","_ref2$element","autoResize","getAutoResize","_ref3$width","_ref3$height","_ref3$element","waitForDocumentBody","_getAutoResize","onResize","resize","updateProps","destroy","hide","show","userClose","reason","memoized","getOwnPropertyDescriptor","RENDER_DRIVERS","renderedIntoContainer","callChildToClose","title","awaitFrameWindow","detectClose","iframeWatcher","watchElementForClose","elementWatcher","destroyElement","openPrerender","prerenderIframe","prerenderFrameWindow","assertSameDomain","switchPrerender","addClass","removeClass","delegateOverrides","openContainer","destroyComponent","destroyContainer","cancelContainerEvents","prerender","elementReady","showContainer","showComponent","hideContainer","hideComponent","loadUrl","setWindowName","toCSS","_component$dimensions","dimensions","normalizeDimension","popup","drivers__extends","ParentComponent","parent__applyDecoratedDescriptor","parent__class","parent__classCallCheck","onInit","eventEmitter","driver","registerActiveComponent","watchForUnload","tryInit","log","initialDomain","getInitialDomain","proxyWin","buildWindowName","windowName","buildUrl","runTimeout","onEnter","renderTo","parent__typeof","checkAllowRemoteRender","delegate","activeComponents","getWindowRef","isTop","getDistanceFromTop","childPayload","normalizedName","buildChildPayload","getPropsRef","getPropsForChild","propRef","_ref8$target","buildParentExports","isUpdate","validate","instance","propNames","aliases","propDef","isDefined","def","props__typeof","_Object$keys4","decorate","bind","normalizeProps","propsDef","propsToQuery","builtinProps","queryParam","getQueryParam","queryValue","getQueryValue","serialization","_Object$keys6","dotkey","normalizeMockUrl","getUrl","extendUrl","sendToChild","childExports","_this7","bridgeUrl","getBridgeUrl","bridgeDomain","_this8","windowProp","_this9","prerenderTemplate","_this10","onDisplay","propName","allowDelegate","overrides","_ref9","_this11","_arguments","_this12","closeWindowListener","onCloseWindow","_this13","onunload","unloadWindowListener","_this14","initChild","_this15","_this16","_ref10","_ref11","_this17","_this18","secondClosed","_this19","closeComponent","closeContainer","_this20","_this21","_this22","_this23","showAndAnimate","_this24","_this25","animateAndHide","_this26","_ref12","_this27","prerenderWindow","isBlankDomain","renderTemplate","writeElementToWindow","_ref13","_ref13$width","_ref13$height","_ref13$element","_ref14","_ref15","_this28","outlet","CLASS","ANIMATION","EVENT","actions","jsxDom","_ref16","_this29","containerTemplate","_this30","_this31","_this32","errored","errErr","destroyAll","DelegateComponent","delegate__classCallCheck","getDelegate","getOverrides","_createClass","defaultContainerTemplate","_ref$dimensions","defaultPrerenderTemplate","drivers","angular","angular2","glimmer","react","vue","Component","component__class","component__classCallCheck","validate__typeof","validatePropDefinitions","isPx","isPerc","contexts","anyEnabled","defaultContext","defaultEnv","env","components","promisify","_ref$width","_ref$height","component__typeof","registerDrivers","registerChild","listenDelegate","driverCache","driverName","dep","isChild","_ref2$data","canRenderTo","isZoidComponent","getRenderContext","validateRenderContext","getDefaultContext","renderIframe","renderPopup","renderIframeTo","renderPopupTo","payload","info","logWarning","logError","getByTag","postRobot","_postRobot","CONSTANTS","_CONSTANTS","iframeWindows","iframeFrames","cleanIframes","winFrames","getFrames","_i9","childFrame","frames","actualParent","_i15","_getFrames8","_length14","getNthParent","win1","win2","top1","top2","allFrames1","allFrames2","anyMatch","opener1","opener2","pattern","subpattern","callback","maxtime","Infinity","IE_WIN_ACCESS_ERROR","__cross_domain_utils_window_check__","isAboutProtocol","canReadFromWindow","mockDomain","desc","isAncestorParent","childParent","getParents","len","getAllChildFrames","_i3","_getFrames2","_i5","_getAllChildFrames2","_i7","_getAllChildFrames4","concat","allowMock","mockclosed","iframeIndex","contains","isFrameWindowClosed","collection1","collection2","_i17","_length16","item1","_i19","_length18","descriptor","test","toNum","parseInt","toPx","dim","__WEBPACK_IMPORTED_MODULE_0__index__","__WEBPACK_IMPORTED_MODULE_0__react__","__WEBPACK_IMPORTED_MODULE_1__vue__","__WEBPACK_IMPORTED_MODULE_2__angular__","__WEBPACK_IMPORTED_MODULE_3__ember__","__WEBPACK_IMPORTED_MODULE_4__glimmer__","__WEBPACK_IMPORTED_MODULE_5__angular2__","React","ReactDOM","createClass","componentDidMount","findDOMNode","setState","componentDidUpdate","_React$Component","__WEBPACK_IMPORTED_MODULE_0_belter_src__","__WEBPACK_IMPORTED_MODULE_1__constants__","inheritAttrs","mounted","$el","$attrs","beforeUpdate","ng","directive","dasherizeToCamel","scope","restrict","controller","$scope","$element","getProps","scopeProps","$root","$$phase","$apply","safeApply","$watch","GlimmerComponent","_GlimmerComponent","didInsertElement","zoid","AngularComponent","NgModule","ElementRef","NgZone","internalProps","zone","ComponentInstance","selector","template","inputs","Class","elementRef","ngOnInit","targetElement","nativeElement","ngOnChanges","declarations"],"mappings":"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","file":"zoid.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"zoid\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"zoid\"] = factory();\n\telse\n\t\troot[\"zoid\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 15);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 09f03078a9f05a1c7a06","/* @flow */\n\nexport * from './utils';\nexport * from './types';\nexport * from './constants';\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/cross-domain-utils/src/index.js","/* @flow */\n\nexport * from './device';\nexport * from './dom';\nexport * from './experiment';\nexport * from './global';\nexport * from './storage';\nexport * from './util';\nexport * from './http';\nexport * from './types';\nexport * from './decorators';\nexport * from './css';\nexport * from './test';\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/belter/src/index.js","/* @flow */\n\nexport function isPromise(item : mixed) : boolean {\n try {\n if (!item) {\n return false;\n }\n\n if (typeof Promise !== 'undefined' && item instanceof Promise) {\n return true;\n }\n\n if (typeof window !== 'undefined' && window.Window && item instanceof window.Window) {\n return false;\n }\n\n if (typeof window !== 'undefined' && window.constructor && item instanceof window.constructor) {\n return false;\n }\n\n let toString = ({}).toString;\n\n if (toString) {\n let name = toString.call(item);\n\n if (name === '[object Window]' || name === '[object global]' || name === '[object DOMWindow]') {\n return false;\n }\n }\n\n if (typeof item.then === 'function') {\n return true;\n }\n } catch (err) {\n return false;\n }\n\n return false;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/zalgo-promise/src/utils.js","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\ntype ZalgoGlobalType = {\n flushPromises : Array<ZalgoPromise<mixed>>,\n activeCount : number,\n possiblyUnhandledPromiseHandlers : Array<<T>(mixed, ZalgoPromise<T>) => void>, // eslint-disable-line no-undef\n dispatchedErrors : Array<mixed>\n};\n\nexport function getGlobal() : ZalgoGlobalType {\n\n let glob;\n\n if (typeof window !== 'undefined') {\n glob = window;\n } else if (typeof global !== 'undefined') {\n glob = global;\n } else {\n throw new TypeError(`Can not find global`);\n }\n\n let zalgoGlobal = glob.__zalgopromise__ = glob.__zalgopromise__ || {};\n zalgoGlobal.flushPromises = zalgoGlobal.flushPromises || [];\n zalgoGlobal.activeCount = zalgoGlobal.activeCount || 0;\n zalgoGlobal.possiblyUnhandledPromiseHandlers = zalgoGlobal.possiblyUnhandledPromiseHandlers || [];\n zalgoGlobal.dispatchedErrors = zalgoGlobal.dispatchedErrors || [];\n\n return zalgoGlobal;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/zalgo-promise/src/global.js","/* @flow */\n\nimport { isPromise } from './utils';\nimport { onPossiblyUnhandledException, dispatchPossiblyUnhandledError } from './exceptions';\nimport { getGlobal } from './global';\n\nexport class ZalgoPromise<R : mixed> {\n\n resolved : boolean\n rejected : boolean\n errorHandled : boolean\n value : R\n error : mixed\n handlers : Array<{\n promise : ZalgoPromise<*>,\n onSuccess : void | (result : R) => mixed,\n onError : void | (error : mixed) => mixed\n }>\n dispatching : boolean\n stack : string\n\n constructor(handler : ?(resolve : (result : R) => void, reject : (error : mixed) => void) => void) {\n\n this.resolved = false;\n this.rejected = false;\n this.errorHandled = false;\n\n this.handlers = [];\n\n if (handler) {\n\n let result;\n let error;\n let resolved = false;\n let rejected = false;\n let isAsync = false;\n\n try {\n handler(res => {\n if (isAsync) {\n this.resolve(res);\n } else {\n resolved = true;\n result = res;\n }\n\n }, err => {\n if (isAsync) {\n this.reject(err);\n } else {\n rejected = true;\n error = err;\n }\n });\n\n } catch (err) {\n this.reject(err);\n return;\n }\n\n isAsync = true;\n\n if (resolved) {\n // $FlowFixMe\n this.resolve(result);\n } else if (rejected) {\n this.reject(error);\n }\n }\n\n if (__DEBUG__) {\n try {\n throw new Error(`ZalgoPromise`);\n } catch (err) {\n this.stack = err.stack;\n }\n }\n }\n\n resolve(result : R) : ZalgoPromise<R> {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(result)) {\n throw new Error('Can not resolve promise with another promise');\n }\n\n this.resolved = true;\n this.value = result;\n this.dispatch();\n\n return this;\n }\n\n reject(error : mixed) : ZalgoPromise<R> {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(error)) {\n throw new Error('Can not reject promise with another promise');\n }\n\n if (!error) {\n let err = (error && typeof error.toString === 'function' ? error.toString() : Object.prototype.toString.call(error));\n error = new Error(`Expected reject to be called with Error, got ${ err }`);\n }\n\n this.rejected = true;\n this.error = error;\n\n if (!this.errorHandled) {\n setTimeout(() => {\n if (!this.errorHandled) {\n dispatchPossiblyUnhandledError(error, this);\n }\n }, 1);\n }\n\n this.dispatch();\n\n return this;\n }\n\n asyncReject(error : mixed) {\n this.errorHandled = true;\n this.reject(error);\n }\n\n // eslint-disable-next-line complexity\n dispatch() {\n\n let { dispatching, resolved, rejected, handlers } = this;\n\n if (dispatching) {\n return;\n }\n\n if (!resolved && !rejected) {\n return;\n }\n\n this.dispatching = true;\n getGlobal().activeCount += 1;\n\n for (let i = 0; i < handlers.length; i++) {\n\n let { onSuccess, onError, promise } = handlers[i];\n\n let result;\n\n if (resolved) {\n\n try {\n result = onSuccess ? onSuccess(this.value) : this.value;\n } catch (err) {\n promise.reject(err);\n continue;\n }\n\n } else if (rejected) {\n\n if (!onError) {\n promise.reject(this.error);\n continue;\n }\n\n try {\n result = onError(this.error);\n } catch (err) {\n promise.reject(err);\n continue;\n }\n }\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n result.errorHandled = true;\n\n } else if (isPromise(result)) {\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n } else {\n // $FlowFixMe\n result.then(res => {\n promise.resolve(res);\n }, err => {\n promise.reject(err);\n });\n }\n\n } else {\n\n promise.resolve(result);\n }\n }\n\n handlers.length = 0;\n this.dispatching = false;\n getGlobal().activeCount -= 1;\n\n if (getGlobal().activeCount === 0) {\n ZalgoPromise.flushQueue();\n }\n }\n\n then<X : mixed, Y : mixed>(onSuccess : void | (result : R) => (ZalgoPromise<X> | Y), onError : void | (error : mixed) => (ZalgoPromise<X> | Y)) : ZalgoPromise<X | Y> {\n\n if (onSuccess && typeof onSuccess !== 'function' && !onSuccess.call) {\n throw new Error('Promise.then expected a function for success handler');\n }\n\n if (onError && typeof onError !== 'function' && !onError.call) {\n throw new Error('Promise.then expected a function for error handler');\n }\n\n let promise : ZalgoPromise<X | Y> = new ZalgoPromise();\n\n this.handlers.push({\n promise,\n onSuccess,\n onError\n });\n\n this.errorHandled = true;\n\n this.dispatch();\n\n return promise;\n }\n\n catch<X : mixed, Y : mixed>(onError : (error : mixed) => ZalgoPromise<X> | Y) : ZalgoPromise<X | Y> {\n return this.then(undefined, onError);\n }\n\n finally(onFinally : () => mixed) : ZalgoPromise<R> {\n\n if (onFinally && typeof onFinally !== 'function' && !onFinally.call) {\n throw new Error('Promise.finally expected a function');\n }\n\n return this.then((result) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n return result;\n });\n }, (err) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n throw err;\n });\n });\n }\n\n timeout(time : number, err : ?Error) : ZalgoPromise<R> {\n\n if (this.resolved || this.rejected) {\n return this;\n }\n\n let timeout = setTimeout(() => {\n\n if (this.resolved || this.rejected) {\n return;\n }\n\n this.reject(err || new Error(`Promise timed out after ${ time }ms`));\n\n }, time);\n\n return this.then(result => {\n clearTimeout(timeout);\n return result;\n });\n }\n\n // $FlowFixMe\n toPromise() : Promise<R> {\n // $FlowFixMe\n if (typeof Promise === 'undefined') {\n throw new TypeError(`Could not find Promise`);\n }\n // $FlowFixMe\n return Promise.resolve(this); // eslint-disable-line compat/compat\n }\n\n static resolve<X : mixed>(value : X | ZalgoPromise<X>) : ZalgoPromise<X> {\n\n if (value instanceof ZalgoPromise) {\n return value;\n }\n\n if (isPromise(value)) {\n // $FlowFixMe\n return new ZalgoPromise((resolve, reject) => value.then(resolve, reject));\n }\n\n return new ZalgoPromise().resolve(value);\n }\n\n static reject(error : mixed) : ZalgoPromise<R> {\n return new ZalgoPromise().reject(error);\n }\n\n static all<X : [*] | [*, *] | [*, *, *] | [*, *, *, *] | [*, *, *, *, *] | [*, *, *, *, *, *] | [*, *, *, *, *, *, *] | [*, *, *, *, *, *, *, *] | [*, *, *, *, *, *, *, *, *] | Array<mixed>>(promises : X) : ZalgoPromise<$TupleMap<X, <Y>(ZalgoPromise<Y> | Y) => Y>> { // eslint-disable-line no-undef\n\n let promise = new ZalgoPromise();\n let count = promises.length;\n let results = [];\n\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n\n for (let i = 0; i < promises.length; i++) {\n let prom = promises[i];\n\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n\n ZalgoPromise.resolve(prom).then(result => {\n results[i] = result;\n count -= 1;\n if (count === 0) {\n promise.resolve(results);\n }\n }, err => {\n promise.reject(err);\n });\n }\n\n if (count === 0) {\n promise.resolve(results);\n }\n\n return promise;\n }\n\n static hash<O : { [string] : * }>(promises : O) : ZalgoPromise<$ObjMap<O, <Y>(ZalgoPromise<Y> | Y) => Y>> { // eslint-disable-line no-undef\n let result = {};\n \n return ZalgoPromise.all(Object.keys(promises).map(key => {\n return ZalgoPromise.resolve(promises[key]).then(value => {\n result[key] = value;\n });\n })).then(() => {\n return result;\n });\n }\n\n static map<T, X>(items : Array<T>, method : (T) => (ZalgoPromise<X> | X)) : ZalgoPromise<Array<X>> {\n // $FlowFixMe\n return ZalgoPromise.all(items.map(method));\n }\n\n static onPossiblyUnhandledException(handler : (err : mixed) => void) : { cancel : () => void } {\n return onPossiblyUnhandledException(handler);\n }\n\n static try<X : mixed, Y : mixed, C : mixed, A : Array<mixed>>(method : (...args : A) => (ZalgoPromise<X> | Y), context : ?C, args : ?A) : ZalgoPromise<X | Y> {\n\n if (method && typeof method !== 'function' && !method.call) {\n throw new Error('Promise.try expected a function');\n }\n\n let result;\n \n try {\n // $FlowFixMe\n result = method.apply(context, args || []);\n } catch (err) {\n return ZalgoPromise.reject(err);\n }\n\n return ZalgoPromise.resolve(result);\n }\n\n static delay(delay : number) : ZalgoPromise<void> {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, delay);\n });\n }\n\n static isPromise(value : mixed) : boolean {\n\n if (value && value instanceof ZalgoPromise) {\n return true;\n }\n\n return isPromise(value);\n }\n\n static flush() : ZalgoPromise<void> {\n let promise = new ZalgoPromise();\n getGlobal().flushPromises.push(promise);\n\n if (getGlobal().activeCount === 0) {\n ZalgoPromise.flushQueue();\n }\n\n return promise;\n }\n\n static flushQueue() {\n let promisesToFlush = getGlobal().flushPromises;\n getGlobal().flushPromises = [];\n\n for (let promise of promisesToFlush) {\n promise.resolve();\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/zalgo-promise/src/promise.js","/* @flow */\n\nimport { getGlobal } from './global';\nimport type { ZalgoPromise } from './promise';\n\nexport function dispatchPossiblyUnhandledError<T>(err : mixed, promise : ZalgoPromise<T>) {\n\n if (getGlobal().dispatchedErrors.indexOf(err) !== -1) {\n return;\n }\n\n getGlobal().dispatchedErrors.push(err);\n\n setTimeout(() => {\n if (__DEBUG__) {\n // $FlowFixMe\n throw new Error(`${ err.stack || err.toString() }\\n\\nFrom promise:\\n\\n${ promise.stack }`);\n }\n\n throw err;\n }, 1);\n\n for (let j = 0; j < getGlobal().possiblyUnhandledPromiseHandlers.length; j++) {\n getGlobal().possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n}\n\nexport function onPossiblyUnhandledException(handler : (mixed) => void) : { cancel : () => void } {\n getGlobal().possiblyUnhandledPromiseHandlers.push(handler);\n\n return {\n cancel() {\n getGlobal().possiblyUnhandledPromiseHandlers.splice(getGlobal().possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/zalgo-promise/src/exceptions.js","/* @flow */\n\nexport { ZalgoPromise } from './promise';\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/zalgo-promise/src/index.js","/* @flow */\n\nexport const MESSAGE_TYPE = {\n REQUEST: ('postrobot_message_request' : 'postrobot_message_request'),\n RESPONSE: ('postrobot_message_response' : 'postrobot_message_response'),\n ACK: ('postrobot_message_ack' : 'postrobot_message_ack')\n};\n\nexport const MESSAGE_ACK = {\n SUCCESS: ('success' : 'success'),\n ERROR: ('error' : 'error')\n};\n\nexport const MESSAGE_NAME = {\n METHOD: ('postrobot_method' : 'postrobot_method'),\n HELLO: ('postrobot_hello' : 'postrobot_hello'),\n OPEN_TUNNEL: ('postrobot_open_tunnel' : 'postrobot_open_tunnel')\n};\n\nexport const WINDOW_PROP = {\n POSTROBOT: ('__postRobot__' : '__postRobot__')\n};\n\nexport const SEND_STRATEGY = {\n POST_MESSAGE: ('postrobot_post_message' : 'postrobot_post_message'),\n BRIDGE: ('postrobot_bridge' : 'postrobot_bridge'),\n GLOBAL: ('postrobot_global' : 'postrobot_global')\n};\n\nexport const PROTOCOL = {\n MOCK: ('mock:' : 'mock:'),\n FILE: ('file:' : 'file:')\n};\n\nexport const BRIDGE_NAME_PREFIX = '__postrobot_bridge__';\nexport const POSTROBOT_PROXY = '__postrobot_proxy__';\n\nexport const WILDCARD = '*';\n\nexport const SERIALIZATION_TYPE = {\n CROSS_DOMAIN_ZALGO_PROMISE: ('cross_domain_zalgo_promise' : 'cross_domain_zalgo_promise'),\n CROSS_DOMAIN_FUNCTION: ('cross_domain_function' : 'cross_domain_function'),\n CROSS_DOMAIN_WINDOW: ('cross_domain_window' : 'cross_domain_window')\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/conf/constants.js","/* @flow */\n\nimport { SEND_STRATEGY, PROTOCOL } from './constants';\n\nexport let CONFIG : Object = {\n\n ALLOW_POSTMESSAGE_POPUP: ('__ALLOW_POSTMESSAGE_POPUP__' in window)\n ? window.__ALLOW_POSTMESSAGE_POPUP__\n : __POST_ROBOT__.__ALLOW_POSTMESSAGE_POPUP__,\n\n BRIDGE_TIMEOUT: 5000,\n CHILD_WINDOW_TIMEOUT: 5000,\n\n ACK_TIMEOUT: 2000,\n ACK_TIMEOUT_KNOWN: 10000,\n RES_TIMEOUT: __TEST__ ? 2000 : -1,\n \n ALLOWED_POST_MESSAGE_METHODS: {\n [ SEND_STRATEGY.POST_MESSAGE ]: true,\n [ SEND_STRATEGY.BRIDGE ]: true,\n [ SEND_STRATEGY.GLOBAL ]: true\n }\n};\n\nif (window.location.href.indexOf(PROTOCOL.FILE) === 0) {\n CONFIG.ALLOW_POSTMESSAGE_POPUP = true;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/conf/config.js","/* @flow */\n\nexport * from './config';\nexport * from './constants';\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/conf/index.js","/* @flow */\n\nexport const ZOID = `zoid`;\n\nexport const __ZOID__ = `__${ ZOID }__`;\n\nexport const POST_MESSAGE = {\n DELEGATE: `${ ZOID }_delegate`,\n ALLOW_DELEGATE: `${ ZOID }_allow_delegate`\n};\n\nexport const PROP_TYPES = {\n STRING: `string`,\n OBJECT: `object`,\n FUNCTION: `function`,\n BOOLEAN: `boolean`,\n NUMBER: `number`,\n ARRAY: `array`\n};\n\nexport const INITIAL_PROPS = {\n RAW: 'raw',\n UID: 'uid'\n};\n\nexport const WINDOW_REFERENCES = {\n OPENER: `opener`,\n TOP: `top`,\n PARENT: `parent`,\n GLOBAL: `global`\n};\n\nexport const PROP_SERIALIZATION = {\n JSON: ('json' : 'json'),\n DOTIFY: ('dotify' : 'dotify'),\n BASE64: ('base64' : 'base64')\n};\n\nexport const PROP_TYPES_LIST : Array<string> = Object.keys(PROP_TYPES).map(key => PROP_TYPES[key]);\n\nexport const CONTEXT = {\n IFRAME: `iframe`,\n POPUP: `popup`\n};\n\nexport const CLASS_NAMES = {\n ZOID: `${ ZOID }`,\n OUTLET: `${ ZOID }-outlet`,\n COMPONENT_FRAME: `${ ZOID }-component-frame`,\n PRERENDER_FRAME: `${ ZOID }-prerender-frame`,\n VISIBLE: `${ ZOID }-visible`,\n INVISIBLE: `${ ZOID }-invisible`\n};\n\nexport const EVENTS = {\n CLOSE: `${ ZOID }-close`\n};\n\nexport const ATTRIBUTES = {\n IFRAME_PLACEHOLDER: `data-zoid-${ ZOID }-placeholder`\n};\n\nexport const ANIMATION_NAMES = {\n SHOW_CONTAINER: `${ ZOID }-show-container`,\n SHOW_COMPONENT: `${ ZOID }-show-component`,\n HIDE_CONTAINER: `${ ZOID }-hide-container`,\n HIDE_COMPONENT: `${ ZOID }-hide-component`\n};\n\nexport const EVENT_NAMES = {\n CLICK: 'click'\n};\n\nexport const CLOSE_REASONS = {\n PARENT_CALL: ('parent_call' : 'parent_call'),\n CHILD_CALL: ('child_call' : 'child_call'),\n CLOSE_DETECTED: ('close_detected' : 'close_detected'),\n USER_CLOSED: ('user_closed' : 'user_closed'),\n PARENT_CLOSE_DETECTED: ('parent_close_detected' : 'parent_close_detected')\n};\n\nexport const CONTEXT_LIST : Array<string> = Object.keys(CONTEXT).map(key => CONTEXT[key]);\n\nexport const DELEGATE = {\n CALL_ORIGINAL: 'call_original',\n CALL_DELEGATE: 'call_delegate'\n};\n\nexport const WILDCARD = '*';\n\nexport const DEFAULT_DIMENSIONS = {\n WIDTH: '300px',\n HEIGHT: '150px'\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/constants.js","/* @flow */\n\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { getOrSet } from 'belter/src';\n\nimport { WINDOW_PROP } from './conf';\n\nexport let global : Object = window[WINDOW_PROP.POSTROBOT] = window[WINDOW_PROP.POSTROBOT] || {};\nlet winStore = global.windowStore = global.windowStore || new WeakMap();\n\ntype WindowStore<T> = {|\n get : ((CrossDomainWindowType, T) => T) & ((CrossDomainWindowType, void) => T | void),\n set : (CrossDomainWindowType, T) => T,\n has : (CrossDomainWindowType) => boolean,\n del : (CrossDomainWindowType) => void,\n getOrSet : (CrossDomainWindowType, () => T) => T\n|};\n\ntype ObjectGetter = () => Object;\n\nlet getObj : ObjectGetter = () => ({});\n\n// $FlowFixMe\nexport function windowStore<T>(key : string, defStore? : ObjectGetter = getObj) : WindowStore<T> {\n\n function getStore(win : CrossDomainWindowType) : ObjectGetter {\n return winStore.getOrSet(win, defStore);\n }\n\n return {\n has: (win) => {\n let store = getStore(win);\n return store.hasOwnProperty(key);\n },\n get: (win, defVal) => {\n let store = getStore(win);\n // $FlowFixMe\n return store.hasOwnProperty(key) ? store[key] : defVal;\n },\n set: (win, val) => {\n let store = getStore(win);\n store[key] = val;\n return val;\n },\n del: (win) => {\n let store = getStore(win);\n delete store[key];\n },\n getOrSet: (win, getter) => {\n let store = getStore(win);\n if (store.hasOwnProperty(key)) {\n return store[key];\n }\n let val = getter();\n store[key] = val;\n return val;\n }\n };\n}\n\ntype GlobalStore<T> = {|\n get : ((string, T) => T) & ((string, void) => T | void),\n set : (string, T) => T,\n has : (string) => boolean,\n del : (string) => void,\n getOrSet : (string, () => T) => T,\n reset : () => void,\n keys : () => $ReadOnlyArray<string>\n|};\n\n// $FlowFixMe\nexport function globalStore<T : mixed>(key : string, defStore? : ObjectGetter = getObj) : GlobalStore<T> {\n let store = getOrSet(global, key, defStore);\n\n return {\n has: (storeKey) => {\n return store.hasOwnProperty(storeKey);\n },\n get: (storeKey, defVal) => {\n // $FlowFixMe\n return store.hasOwnProperty(storeKey) ? store[storeKey] : defVal;\n },\n set: (storeKey, val) => {\n store[storeKey] = val;\n return val;\n },\n del: (storeKey) => {\n delete store[storeKey];\n },\n getOrSet: (storeKey, getter) => {\n if (store.hasOwnProperty(storeKey)) {\n return store[storeKey];\n }\n let val = getter();\n store[storeKey] = val;\n return val;\n },\n reset: () => {\n store = defStore();\n },\n keys: () => {\n return Object.keys(store);\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/global.js","/* @flow */\n\nimport { getAncestor, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { noop, uniqueID, once, weakMapMemoizePromise } from 'belter/src';\n\nimport { MESSAGE_NAME, WILDCARD } from '../conf';\nimport { global, windowStore } from '../global';\n\nglobal.instanceID = global.instanceID || uniqueID();\nlet helloPromises = windowStore('helloPromises');\n\nfunction getHelloPromise(win : CrossDomainWindowType) : ZalgoPromise<{ win : CrossDomainWindowType, domain : string }> {\n return helloPromises.getOrSet(win, () => new ZalgoPromise());\n}\n\nconst listenForHello = once(() => {\n global.on(MESSAGE_NAME.HELLO, { domain: WILDCARD }, ({ source, origin }) => {\n getHelloPromise(source).resolve({ win: source, domain: origin });\n return { instanceID: global.instanceID };\n });\n});\n\nexport function sayHello(win : CrossDomainWindowType) : ZalgoPromise<{ win : CrossDomainWindowType, domain : string, instanceID : string }> {\n return global.send(win, MESSAGE_NAME.HELLO, { instanceID: global.instanceID }, { domain: WILDCARD, timeout: -1 })\n .then(({ origin, data: { instanceID } }) => {\n getHelloPromise(win).resolve({ win, domain: origin });\n return { win, domain: origin, instanceID };\n });\n}\n\nexport let getWindowInstanceID = weakMapMemoizePromise((win : CrossDomainWindowType) : ZalgoPromise<string> => {\n return sayHello(win).then(({ instanceID }) => instanceID);\n});\n\nexport function initHello() {\n listenForHello();\n\n let parent = getAncestor();\n if (parent) {\n sayHello(parent).catch(noop);\n }\n}\n\nexport function awaitWindowHello(win : CrossDomainWindowType, timeout : number = 5000, name : string = 'Window') : ZalgoPromise<{ win : CrossDomainWindowType, domain : string }> {\n let promise = getHelloPromise(win);\n\n if (timeout !== -1) {\n promise = promise.timeout(timeout, new Error(`${ name } did not load after ${ timeout }ms`));\n }\n\n return promise;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/lib/hello.js","/* @flow */\n\nimport { getUserAgent } from 'cross-domain-utils/src';\n\nimport { CONFIG } from '../conf';\n\nexport function needsGlobalMessagingForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n\n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n\n return false;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/lib/compat.js","/* @flow */\n\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { windowStore } from '../global';\n\nlet knownWindows = windowStore('knownWindows');\n\nexport function markWindowKnown(win : CrossDomainWindowType) {\n knownWindows.set(win, true);\n}\n\nexport function isWindowKnown(win : CrossDomainWindowType) : boolean {\n return knownWindows.get(win, false);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/lib/windows.js","/* @flow */\n\nexport * from './hello';\nexport * from './compat';\nexport * from './windows';\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/lib/index.js","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from './types';\n\nexport function base64encode(str : string) : string {\n if (typeof window !== 'undefined' && typeof window.btoa === 'function') {\n return window.btoa(str);\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'utf8').toString('base64');\n }\n\n throw new Error(`Can not find window.btoa or Buffer`);\n}\n\nexport function base64decode(str : string) : string {\n if (typeof window !== 'undefined' && typeof window.atob === 'function') {\n return window.atob(str);\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'base64').toString('utf8');\n }\n\n throw new Error(`Can not find window.atob or Buffer`);\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n let randomID = 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n\n let timeID = base64encode(\n new Date().toISOString().slice(11, 19).replace('T', '.')\n ).replace(/[^a-zA-Z0-9]/g, '').toLowerCase();\n\n return `${ randomID }_${ timeID }`;\n}\n\nexport function getGlobal() : Object {\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n if (typeof __GLOBAL__ !== 'undefined') {\n return __GLOBAL__;\n }\n throw new Error(`No global found`);\n}\n\nlet objectIDs;\n\nexport function getObjectID(obj : Object) : string {\n\n objectIDs = objectIDs || new WeakMap();\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${ typeof obj }:${ uniqueID() }`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\nfunction serializeArgs(args : Array<mixed>) : string {\n try {\n return JSON.stringify(Array.prototype.slice.call(args), (subkey, val) => {\n if (typeof val === 'function') {\n return `memoize[${ getObjectID(val) }]`;\n }\n return val;\n });\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoize<R>(method : (...args : Array<any>) => R, options : { time? : number, name? : string, thisNamespace? : boolean } = {}) : ((...args : Array<any>) => R) {\n let cacheMap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n function memoizedFunction(...args : Array<any>) : R {\n let cache = cacheMap.getOrSet(options.thisNamespace ? this : method, () => ({}));\n\n let key : string = serializeArgs(args);\n\n let cacheTime = options.time;\n if (cache[key] && cacheTime && (Date.now() - cache[key].time) < cacheTime) {\n delete cache[key];\n }\n\n if (cache[key]) {\n return cache[key].value;\n }\n\n let time = Date.now();\n let value = method.apply(this, arguments);\n\n cache[key] = { time, value };\n\n return cache[key].value;\n }\n\n memoizedFunction.reset = () => {\n cacheMap.delete(options.thisNamespace ? this : method);\n };\n\n if (options.name) {\n memoizedFunction.displayName = `${ options.name }:memoized`;\n }\n\n return memoizedFunction;\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoizePromise<R>(method : (...args : Array<any>) => ZalgoPromise<R>) : ((...args : Array<any>) => ZalgoPromise<R>) {\n let cache = {};\n\n // eslint-disable-next-line flowtype/no-weak-types\n function memoizedPromiseFunction(...args : Array<any>) : ZalgoPromise<R> {\n let key : string = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n\n cache[key] = method.apply(this, arguments)\n .finally(() => {\n delete cache[key];\n });\n\n return cache[key];\n }\n\n memoizedPromiseFunction.reset = () => {\n cache = {};\n };\n\n return memoizedPromiseFunction;\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function promisify<R>(method : (...args : Array<any>) => R, options : { name? : string } = {}) : ((...args : Array<any>) => ZalgoPromise<R>) {\n function promisifiedFunction() : ZalgoPromise<R> {\n return ZalgoPromise.try(method, this, arguments);\n }\n\n if (options.name) {\n promisifiedFunction.displayName = `${ options.name }:promisified`;\n }\n\n return promisifiedFunction;\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function inlineMemoize<R>(method : (...args : Array<any>) => R, logic : (...args : Array<any>) => R, args : Array<any> = []) : R {\n let cache = method.__inline_memoize_cache__ = method.__inline_memoize_cache__ || {};\n let key = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n \n let result = cache[key] = logic(...args);\n return result;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array<mixed>) {\n // pass\n}\n\nexport function once(method : Function) : Function {\n let called = false;\n\n return function onceFunction() : mixed {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n}\n\nexport function hashStr(str : string) : number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str : string) : string {\n let hash = '';\n\n for (let i = 0; i < str.length; i++) {\n let total = (str[i].charCodeAt(0) * i);\n\n if (str[i + 1]) {\n total += (str[i + 1].charCodeAt(0) * (i - 1));\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str : string, pattern : RegExp) : ?string {\n let regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function awaitKey<T: mixed>(obj : Object, key : string) : ZalgoPromise<T> {\n return new ZalgoPromise(resolve => {\n\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n });\n}\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return `<unknown error: ${ Object.prototype.toString.call(err) }>`;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\n let defaultMessage = `<unknown error: ${ Object.prototype.toString.call(err) }>`;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === 'string') {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && typeof item.toString === 'function') {\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname : string, domain : string) : boolean {\n hostname = hostname.split('://')[1];\n let index = hostname.indexOf(domain);\n return (index !== -1 && hostname.slice(index) === domain);\n}\n\nexport function patchMethod(obj : Object, name : string, handler : Function) {\n let original = obj[name];\n\n obj[name] = function patchedMethod() : mixed {\n return handler({\n context: this,\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments)\n });\n };\n}\n\nexport function extend<T : Object | Function>(obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) {\n return Object.assign(obj, source);\n }\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function values<T>(obj : { [string] : T }) : Array<T> {\n let result = [];\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n result.push(obj[key]);\n }\n }\n return result;\n}\n\nexport function perc(pixels : number, percentage : number) : number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args : Array<number>) : number {\n return Math.min(...args);\n}\n\nexport function max(...args : Array<number>) : number {\n return Math.max(...args);\n}\n\nexport function regexMap<T>(str : string, regexp : RegExp, handler : () => T) : Array<T> {\n let results = [];\n\n // $FlowFixMe\n str.replace(regexp, function regexMapMatcher(item) {\n results.push(handler ? handler.apply(null, arguments) : item);\n });\n\n // $FlowFixMe\n return results;\n}\n\nexport function svgToBase64(svg : string) : string {\n return `data:image/svg+xml;base64,${ base64encode(svg) }`;\n}\n\nexport function objFilter<T, R>(obj : { [string] : T }, filter? : (T, ?string) => mixed = Boolean) : { [string] : R } {\n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || !filter(obj[key], key)) {\n continue;\n }\n\n result[key] = obj[key];\n }\n\n return result;\n}\n\nexport function identity <T>(item : T) : T {\n return item;\n}\n\nexport function regexTokenize(text : string, regexp : RegExp) : Array<string> {\n let result = [];\n text.replace(regexp, token => {\n result.push(token);\n return '';\n });\n return result;\n}\n\nexport function promiseDebounce<T>(method : () => ZalgoPromise<T> | T, delay : number = 50) : () => ZalgoPromise<T> {\n\n let promise;\n let timeout;\n\n return function promiseDebouncedMethod() : ZalgoPromise<T> {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n let localPromise = promise = promise || new ZalgoPromise();\n\n timeout = setTimeout(() => {\n promise = null;\n timeout = null;\n\n ZalgoPromise.try(method).then(\n result => { localPromise.resolve(result); },\n err => { localPromise.reject(err); }\n );\n }, delay);\n\n return localPromise;\n };\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isInteger(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+$/));\n}\n\nexport function isFloat(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+\\.[0-9]+$/));\n}\n\nexport function serializePrimitive(value : string | number | boolean) : string {\n return value.toString();\n}\n\nexport function deserializePrimitive(value : string) : string | number | boolean {\n if (value === 'true') {\n return true;\n } else if (value === 'false') {\n return false;\n } else if (isInteger(value)) {\n return parseInt(value, 10);\n } else if (isFloat(value)) {\n return parseFloat(value);\n } else {\n return value;\n }\n}\n\nexport function dotify(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\n newobj[`${ prefix }${ key }[]`] = obj[key].join(',');\n } else if (obj[key] && typeof obj[key] === 'object') {\n newobj = dotify(obj[key], `${ prefix }${ key }`, newobj);\n } else {\n newobj[`${ prefix }${ key }`] = serializePrimitive(obj[key]);\n }\n }\n return newobj;\n}\n\nexport function undotify(obj : { [string] : string }) : Object {\n \n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || typeof obj[key] !== 'string') {\n continue;\n }\n\n let value = obj[key];\n\n if (key.match(/^.+\\[\\]$/)) {\n key = key.slice(0, key.length - 2);\n value = value.split(',').map(deserializePrimitive);\n } else {\n value = deserializePrimitive(value);\n }\n\n let keyResult = result;\n let parts = key.split('.');\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i];\n let isLast = (i + 1 === parts.length);\n let isIndex = !isLast && isInteger(parts[i + 1]);\n\n if (isLast) {\n // $FlowFixMe\n keyResult[part] = value;\n } else {\n // $FlowFixMe\n keyResult = keyResult[part] = keyResult[part] || (isIndex ? [] : {});\n }\n }\n }\n\n return result;\n}\n\nexport type EventEmitterType = {\n on : (eventName : string, handler : Function) => CancelableType,\n once : (eventName : string, handler : Function) => CancelableType,\n trigger : (eventName : string) => void,\n triggerOnce : (eventName : string) => void\n};\n\nexport function eventEmitter() : EventEmitterType {\n\n let triggered = {};\n let handlers = {};\n\n return {\n\n on(eventName : string, handler : Function) : CancelableType {\n\n let handlerList = handlers[eventName] = handlers[eventName] || [];\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n\n }\n };\n },\n\n once(eventName : string, handler : Function) : CancelableType {\n\n let listener = this.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string) {\n\n let handlerList = handlers[eventName];\n\n if (handlerList) {\n for (let handler of handlerList) {\n handler();\n }\n }\n },\n\n triggerOnce(eventName : string) {\n\n if (triggered[eventName]) {\n return;\n }\n\n triggered[eventName] = true;\n this.trigger(eventName);\n }\n };\n}\n\nexport function camelToDasherize(string : string) : string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${ g.toLowerCase() }`;\n });\n}\n\nexport function dasherizeToCamel(string : string) : string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\nexport function capitalizeFirstLetter(string : string) : string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\nexport function get(item : Object, path : string, def : mixed) : mixed {\n\n if (!path) {\n return def;\n }\n\n let pathParts = path.split('.');\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n\n // If we have an object, we can get the key\n if (typeof item === 'object' && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\nexport function safeTimeout(method : Function, time : number) {\n\n let interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\nexport function defineLazyProp<T>(obj : Object | Array<mixed>, key : string | number, getter : () => T) {\n if (Array.isArray(obj)) {\n if (typeof key !== 'number') {\n throw new TypeError(`Array key must be number`);\n }\n } else if (typeof obj === 'object' && obj !== null) {\n if (typeof key !== 'string') {\n throw new TypeError(`Object key must be string`);\n }\n }\n \n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n // $FlowFixMe\n delete obj[key];\n let value = getter();\n // $FlowFixMe\n obj[key] = value;\n return value;\n },\n set: (value : T) => {\n // $FlowFixMe\n delete obj[key];\n // $FlowFixMe\n obj[key] = value;\n }\n });\n}\n\nexport function isObject(item : mixed) : boolean {\n return (typeof item === 'object' && item !== null);\n}\n\nexport function isObjectObject(obj : mixed) : boolean {\n return isObject(obj) && Object.prototype.toString.call(obj) === '[object Object]';\n}\n\nexport function isPlainObject(obj : mixed) : boolean {\n if (!isObjectObject(obj)) {\n return false;\n }\n\n // $FlowFixMe\n let constructor = obj.constructor;\n\n if (typeof constructor !== 'function') {\n return false;\n }\n\n let prototype = constructor.prototype;\n\n if (!isObjectObject(prototype)) {\n return false;\n }\n\n if (!prototype.hasOwnProperty('isPrototypeOf')) {\n return false;\n }\n\n return true;\n}\n\nexport function replaceObject<T : Object | Array<mixed>> (item : T, replacer : (mixed, string | number, string) => mixed, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n let length = item.length;\n let result = [];\n\n for (let i = 0; i < length; i++) {\n\n \n defineLazyProp(result, i, () => {\n let itemKey = fullKey ? `${ fullKey }.${ i }` : `${ i }`;\n let el = item[i];\n\n let child = replacer(el, i, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (isPlainObject(item)) {\n let result = {};\n\n for (let key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n defineLazyProp(result, key, () => {\n let itemKey = fullKey ? `${ fullKey }.${ key }` : `${ key }`;\n // $FlowFixMe\n let el = item[key];\n\n let child = replacer(el, key, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\n } else {\n target[name] = def;\n }\n}\n\ntype RegexResultType = {\n text : string,\n groups : Array<string>,\n start : number,\n end : number,\n length : number,\n replace : (text : string) => string\n};\n\nexport function regex(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\n if (typeof pattern === 'string') {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n let result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n let index : number = result.index;\n let regmatch = result[0];\n\n return {\n text: regmatch,\n groups: result.slice(1),\n start: start + index,\n end: start + index + regmatch.length,\n length: regmatch.length,\n\n replace(text : string) : string {\n\n if (!regmatch) {\n return '';\n }\n\n return `${ regmatch.slice(0, start + index) }${ text }${ regmatch.slice(index + regmatch.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : Array<RegexResultType> {\n\n let matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let regmatch = regex(pattern, string, start);\n\n if (!regmatch) {\n break;\n }\n\n matches.push(regmatch);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function isDefined(value : ?mixed) : boolean {\n return value !== null && value !== undefined;\n}\n\nexport function cycle(method : Function) : ZalgoPromise<void> {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n\nexport function debounce<T>(method : (...args : Array<mixed>) => T, time : number = 100) : (...args : Array<mixed>) => void {\n\n let timeout;\n\n return function debounceWrapper() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\ntype FunctionProxy<T : Function> = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = <R : mixed>(method : (arg : any) => R) : ((...args : Array<any>) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg : any) : R {\n return weakmap.getOrSet(arg, () => method.call(this, arg));\n };\n};\n\ntype FunctionPromiseProxy<R : mixed, T : (...args : $ReadOnlyArray<mixed>) => ZalgoPromise<R>> = (T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoizePromise : FunctionPromiseProxy<*, *> = <R : mixed>(method : (arg : any) => ZalgoPromise<R>) : ((...args : Array<any>) => ZalgoPromise<R>) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoizedPromise(arg : any) : ZalgoPromise<R> {\n return weakmap.getOrSet(arg, () =>\n method.call(this, arg).finally(() => {\n weakmap.delete(arg);\n })\n );\n };\n};\n\nexport function getOrSet<O : Object, T : mixed>(obj : O, key : string, getter : () => T) : T {\n if (obj.hasOwnProperty(key)) {\n return obj[key];\n }\n\n const val = getter();\n obj[key] = val;\n return val;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/belter/src/util.js","/* @flow */\n\nexport function safeIndexOf<T>(collection : Array<T>, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array<mixed>) {\n // pass\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/cross-domain-safe-weakmap/src/util.js","/* @flow */\n\nimport { isWindow, isWindowClosed } from 'cross-domain-utils/src';\n\nimport { hasNativeWeakMap } from './native';\nimport { noop, safeIndexOf } from './util';\n\nlet defineProperty = Object.defineProperty;\nlet counter = Date.now() % 1e9;\n\nexport class CrossDomainSafeWeakMap<K : Object, V : mixed> {\n\n name : string\n weakmap : WeakMap<K, V>\n keys : Array<K>\n values : Array<V>\n\n constructor() {\n counter += 1;\n\n // eslint-disable-next-line no-bitwise\n this.name = `__weakmap_${ Math.random() * 1e9 >>> 0 }__${ counter }`;\n\n if (hasNativeWeakMap()) {\n try {\n this.weakmap = new WeakMap();\n } catch (err) {\n // pass\n }\n }\n\n this.keys = [];\n this.values = [];\n }\n\n _cleanupClosedWindows() {\n\n let weakmap = this.weakmap;\n let keys = this.keys;\n\n for (let i = 0; i < keys.length; i++) {\n let value = keys[i];\n\n if (isWindow(value) && isWindowClosed(value)) {\n\n if (weakmap) {\n try {\n weakmap.delete(value);\n } catch (err) {\n // pass\n }\n }\n\n keys.splice(i, 1);\n this.values.splice(i, 1);\n\n i -= 1;\n }\n }\n }\n\n isSafeToReadWrite(key : K) : boolean {\n\n if (isWindow(key)) {\n return false;\n }\n\n try {\n noop(key && key.self);\n noop(key && key[this.name]);\n } catch (err) {\n return false;\n }\n\n return true;\n }\n\n set(key : K, value : V) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (!this.isSafeToReadWrite(key)) {\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let values = this.values;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n keys.push(key);\n values.push(value);\n } else {\n values[index] = value;\n }\n\n } else {\n\n let name = this.name;\n let entry = key[name];\n\n if (entry && entry[0] === key) {\n entry[1] = value;\n } else {\n defineProperty(key, name, {\n value: [ key, value ],\n writable: true\n });\n }\n }\n }\n\n get(key : K) : V | void {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return weakmap.get(key);\n }\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (!this.isSafeToReadWrite(key)) {\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n return;\n }\n\n return this.values[index];\n\n } else {\n\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return entry[1];\n }\n }\n }\n\n delete(key : K) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (!this.isSafeToReadWrite(key)) {\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index !== -1) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n\n } else {\n\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n entry[0] = entry[1] = undefined;\n }\n }\n }\n\n has(key : K) : boolean {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return true;\n }\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (!this.isSafeToReadWrite(key)) {\n\n this._cleanupClosedWindows();\n\n let index = safeIndexOf(this.keys, key);\n return index !== -1;\n\n } else {\n\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return true;\n }\n\n return false;\n }\n }\n\n getOrSet(key : K, getter : () => V) : V {\n if (this.has(key)) {\n // $FlowFixMe\n return this.get(key);\n }\n\n let value = getter();\n this.set(key, value);\n return value;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/cross-domain-safe-weakmap/src/weakmap.js","/* @flow */\n\nexport function hasNativeWeakMap() : boolean {\n\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n if (typeof Object.freeze === 'undefined') {\n return false;\n }\n\n try {\n\n let testWeakMap = new WeakMap();\n let testKey = {};\n let testValue = '__testvalue__';\n\n Object.freeze(testKey);\n\n testWeakMap.set(testKey, testValue);\n\n if (testWeakMap.get(testKey) === testValue) {\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/cross-domain-safe-weakmap/src/native.js","/* @flow */\n\nexport const PROTOCOL = {\n MOCK: ('mock:' : 'mock:'),\n FILE: ('file:' : 'file:'),\n ABOUT: ('about:' : 'about:')\n};\n\nexport const WILDCARD = '*';\n\nexport const WINDOW_TYPE = {\n IFRAME: ('iframe' : 'iframe'),\n POPUP: ('popup' : 'popup')\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/cross-domain-utils/src/constants.js","/* @flow */\n\nexport function getUserAgent() : string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nexport function isDevice() : boolean {\n let userAgent = getUserAgent();\n if (userAgent.match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)) {\n return true;\n }\n\n return false;\n}\n\nexport function isWebView() : boolean {\n let userAgent = getUserAgent();\n return (/(iPhone|iPod|iPad|Macintosh).*AppleWebKit(?!.*Safari)/i).test(userAgent) ||\n (/\\bwv\\b/).test(userAgent) ||\n (/Android.*Version\\/(\\d)\\.(\\d)/i).test(userAgent);\n}\n\nexport function isStandAlone() : boolean {\n return (window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches);\n}\n\nexport function isFacebookWebView(ua? : string = getUserAgent()) : boolean {\n return (ua.indexOf('FBAN') !== -1) || (ua.indexOf('FBAV') !== -1);\n}\n\nexport function isFirefoxIOS(ua? : string = getUserAgent()) : boolean {\n return (/FxiOS/i).test(ua);\n}\n\nexport function isEdgeIOS(ua? : string = getUserAgent()) : boolean {\n return (/EdgiOS/i).test(ua);\n}\n\nexport function isOperaMini(ua? : string = getUserAgent()) : boolean {\n return ua.indexOf('Opera Mini') > -1;\n}\n\nexport function isAndroid(ua? : string = getUserAgent()) : boolean {\n return (/Android/).test(ua);\n}\n\nexport function isIos(ua? : string = getUserAgent()) : boolean {\n return (/iPhone|iPod|iPad/).test(ua);\n}\n\nexport function isGoogleSearchApp(ua? : string = getUserAgent()) : boolean {\n return (/\\bGSA\\b/).test(ua);\n}\n\nexport function isQQBrowser(ua? : string = getUserAgent()) : boolean {\n return (/QQBrowser/).test(ua);\n}\n\nexport function isIosWebview(ua? : string = getUserAgent()) : boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return (/.+AppleWebKit(?!.*Safari)/).test(ua);\n }\n return false;\n}\n\nexport function isAndroidWebview(ua? : string = getUserAgent()) : boolean {\n if (isAndroid(ua)) {\n return (/Version\\/[\\d.]+/).test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isIE() : boolean {\n\n if (window.document.documentMode) {\n return true;\n }\n\n return Boolean(\n window.navigator &&\n window.navigator.userAgent &&\n (/Edge|MSIE/i).test(window.navigator.userAgent)\n );\n}\n\nexport function isIECompHeader() : boolean {\n let mHttp = window.document.querySelector('meta[http-equiv=\"X-UA-Compatible\"]');\n let mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron() : boolean {\n if (typeof process !== 'undefined' && process.versions && process.versions.electron) {\n return true;\n }\n return false;\n}\n\nexport function isIEIntranet() : boolean {\n\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n let status = window.status;\n\n window.status = 'testIntranetMode';\n\n if (window.status === 'testIntranetMode') {\n window.status = status;\n\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna() : boolean {\n let userAgent = getUserAgent();\n return (/Macintosh.*AppleWebKit(?!.*Safari)/i).test(userAgent);\n}\n\nexport function supportsPopups(ua? : string = getUserAgent()) : boolean {\n return !(isIosWebview(ua) || isAndroidWebview(ua) || isOperaMini(ua) ||\n isFirefoxIOS(ua) || isEdgeIOS(ua) || isFacebookWebView(ua) || isQQBrowser(ua) || isElectron() || isMacOsCna() || isStandAlone());\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/belter/src/device.js","/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { linkFrameWindow, isWindowClosed,\n type SameDomainWindowType, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { inlineMemoize, noop, stringify, capitalizeFirstLetter,\n once, extend, debounce, safeInterval } from './util';\nimport { isDevice } from './device';\nimport { KEY_CODES } from './constants';\nimport type { CancelableType } from './types';\n\ntype ElementRefType = string | HTMLElement;\n\nexport function isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport function urlEncode(str : string) : string {\n return str.replace(/\\?/g, '%3F').replace(/&/g, '%26').replace(/#/g, '%23').replace(/\\+/g, '%2B');\n}\n\nexport function waitForWindowReady() : ZalgoPromise<void> {\n return inlineMemoize(waitForWindowReady, () : ZalgoPromise<void> => {\n return new ZalgoPromise(resolve => {\n if (isDocumentReady()) {\n resolve();\n }\n\n window.addEventListener('load', () => resolve());\n });\n });\n}\n\nexport function waitForDocumentReady() : ZalgoPromise<void> {\n return inlineMemoize(waitForDocumentReady, () : ZalgoPromise<void> => {\n return new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n let interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n });\n });\n}\n\nexport function waitForDocumentBody() : ZalgoPromise<HTMLBodyElement> {\n return waitForDocumentReady().then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n });\n}\n\nexport function parseQuery(queryString : string) : Object {\n return inlineMemoize(parseQuery, () : Object => {\n let params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n }, [ queryString ]);\n}\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function formatQuery(obj : { [ string ] : string } = {}) : string {\n\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string';\n }).map(key => {\n return `${ urlEncode(key) }=${ urlEncode(obj[key]) }`;\n }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : { [ string ] : string } = {}) : string {\n\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props\n });\n}\n\nexport function extendUrl(url : string, options : { query? : { [string] : string }, hash? : { [string] : string } } = {}) : string {\n\n let query = options.query || {};\n let hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [ originalUrl, originalHash ] = url.split('#');\n [ originalUrl, originalQuery ] = originalUrl.split('?');\n\n let queryString = extendQuery(originalQuery, query);\n let hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${ originalUrl }?${ queryString }`;\n }\n\n if (hashString) {\n originalUrl = `${ originalUrl }#${ hashString }`;\n }\n\n return originalUrl;\n}\n\nexport function redirect(url : string, win : CrossDomainWindowType = window) : ZalgoPromise<void> {\n return new ZalgoPromise(resolve => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n let meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport function enablePerformance() : boolean {\n return inlineMemoize(enablePerformance, () : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n });\n}\n\nexport function getPageRenderTime() : ZalgoPromise<?number> {\n return waitForDocumentReady().then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n let timing = window.performance.timing;\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;')\n .replace(/\\//g, '&#x2F;');\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined');\n}\n\nexport function querySelectorAll(selector : string, doc : HTMLElement = window.document) : Array<Element> {\n return Array.prototype.slice.call(doc.querySelectorAll(selector));\n}\n\nexport function onClick(element : Element, handler : (Event) => void) {\n element.addEventListener('touchstart', noop);\n element.addEventListener('click', handler);\n element.addEventListener('keypress', (event : Event) => {\n // $FlowFixMe\n if (event.keyCode === KEY_CODES.ENTER) {\n return handler(event);\n }\n });\n}\n\nexport function getScript({ host = window.location.host, path } : { host? : string, path : string }) : ?HTMLScriptElement {\n return inlineMemoize(getScript, () : ?HTMLScriptElement => {\n\n let url = `${ host }${ path }`;\n let scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let script of scripts) {\n if (!script.src) {\n continue;\n }\n\n let src = script.src.replace(/^https?:\\/\\//, '').split('?')[0];\n\n if (src === url) {\n return script;\n }\n }\n }, [ path ]);\n}\n\nexport function isLocalStorageEnabled() : boolean {\n return inlineMemoize(isLocalStorageEnabled, () => {\n try {\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (window.localStorage) {\n let value = Math.random().toString();\n window.localStorage.setItem('__test__localStorage__', value);\n let result = window.localStorage.getItem('__test__localStorage__');\n window.localStorage.removeItem('__test__localStorage__');\n if (value === result) {\n return true;\n }\n }\n } catch (err) {\n // pass\n }\n return false;\n });\n}\n\nexport function getBrowserLocales() : Array<{ country? : string, lang : string }> {\n let nav = window.navigator;\n\n let locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales.map(locale => {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n let [ lang, country ] = locale.split(/[-_]/);\n return { country, lang };\n }\n\n if (locale && locale.match(/^[a-z]{2}$/)) {\n return { lang: locale };\n }\n\n return null;\n\n }).filter(Boolean);\n}\n\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nexport function isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function getElementSafe(id : ElementRefType, doc : Document | HTMLElement = document) : ?HTMLElement {\n\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === 'string') {\n return doc.querySelector(id);\n }\n}\n\nexport function getElement(id : ElementRefType, doc : Document | HTMLElement = document) : HTMLElement {\n\n let element = getElementSafe(id, doc);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${ stringify(id) }`);\n}\n\nexport function elementReady(id : ElementRefType) : ZalgoPromise<window.HTMLElement> {\n return new ZalgoPromise((resolve, reject) => {\n\n let name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n let interval = setInterval(() => {\n\n el = getElementSafe(id);\n\n if (el) {\n clearInterval(interval);\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n }, 10);\n });\n}\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\ntype PopupOptions = {|\n name? : string,\n width? : number,\n height? : number,\n top? : number,\n left? : number,\n status? : 0 | 1,\n resizable? : 0 | 1,\n toolbar? : 0 | 1,\n menubar? : 0 | 1,\n scrollbars? : 0 | 1\n|};\n\nexport function popup(url : string, options? : PopupOptions) : CrossDomainWindowType {\n\n // $FlowFixMe\n options = options || {};\n\n let { width, height } = options;\n\n let top = 0;\n let left = 0;\n\n if (width) {\n if (window.outerWidth) {\n left = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n left = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n top = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n top = Math.round((window.screen.height - height) / 2);\n }\n }\n\n options = {\n top,\n left,\n width,\n height,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...options\n };\n\n let name = options.name || '';\n delete options.name;\n\n // eslint-disable-next-line array-callback-return\n let params = Object.keys(options).map(key => {\n // $FlowFixMe\n if (options[key]) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, name, params, true);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\n }\n\n if (isWindowClosed(win)) {\n let err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n return win;\n}\n\n\nexport function writeToWindow(win : SameDomainWindowType, html : string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${ JSON.stringify(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, el : HTMLElement) {\n\n let tag = el.tagName.toLowerCase();\n\n if (tag !== 'html') {\n throw new Error(`Expected element to be html, got ${ tag }`);\n }\n\n let documentElement = win.document.documentElement;\n\n while (documentElement.children && documentElement.children.length) {\n documentElement.removeChild(documentElement.children[0]);\n }\n\n while (el.children.length) {\n documentElement.appendChild(el.children[0]);\n }\n}\n\nexport function setStyle(el : HTMLElement, styleText : string, doc : Document = window.document) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\nexport type ElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array<string>,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string\n};\n\nlet awaitFrameLoadPromises : WeakMap<HTMLIFrameElement, ZalgoPromise<HTMLIFrameElement>>;\n\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : ZalgoPromise<HTMLIFrameElement> {\n awaitFrameLoadPromises = awaitFrameLoadPromises || new WeakMap();\n\n if (awaitFrameLoadPromises.has(frame)) {\n let promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n let promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener('load', () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener('error', (err : Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(frame : HTMLIFrameElement) : ZalgoPromise<CrossDomainWindowType> {\n\n if (frame.contentWindow) {\n return ZalgoPromise.resolve(frame.contentWindow);\n }\n\n return awaitFrameLoad(frame).then(loadedFrame => {\n\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\nexport function createElement(tag : string = 'div', options : ElementOptionsType = {}, container : ?HTMLElement) : HTMLElement {\n\n tag = tag.toLowerCase();\n let element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(' ');\n }\n\n if (options.attributes) {\n for (let key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === 'iframe') {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\n\nexport type IframeElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array<string>,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string,\n url? : ?string\n};\n\nexport function iframe(options : IframeElementOptionsType = {}, container : HTMLElement, attempts : number = 3) : HTMLIFrameElement {\n\n let el = getElement(container);\n\n let attributes = options.attributes || {};\n let style = options.style || {};\n\n let frame = createElement('iframe', {\n attributes: {\n frameBorder: '0',\n allowTransparency: 'true',\n ...attributes\n },\n style: {\n backgroundColor: 'transparent',\n ...style\n },\n html: options.html,\n class: options.class\n });\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n el.appendChild(frame);\n\n // $FlowFixMe\n let win = frame.contentWindow;\n\n if (win) {\n try {\n // $FlowFixMe\n noop(win.name);\n } catch (err) {\n el.removeChild(frame);\n\n if (!attempts) {\n throw new Error(`Frame is cross-domain: ${ err.stack }`);\n }\n\n return iframe(options, container, attempts - 1);\n }\n }\n\n if (options.url || window.navigator.userAgent.match(/MSIE|Edge/i)) {\n frame.setAttribute('src', options.url || 'about:blank');\n }\n\n // $FlowFixMe\n return frame;\n}\n\nexport function addEventListener(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\nexport function elementStoppedMoving(element : ElementRefType, timeout : number = 5000) : ZalgoPromise<void> {\n return new ZalgoPromise((resolve, reject) => {\n let el = getElement(element);\n\n let start = el.getBoundingClientRect();\n\n let interval;\n let timer;\n\n interval = setInterval(() => {\n let end = el.getBoundingClientRect();\n\n if (start.top === end.top && start.bottom === end.bottom && start.left === end.left && start.right === end.right && start.width === end.width && start.height === end.height) {\n clearTimeout(timer);\n clearInterval(interval);\n return resolve();\n }\n\n start = end;\n\n }, 50);\n\n timer = setTimeout(() => {\n clearInterval(interval);\n reject(new Error(`Timed out waiting for element to stop animating after ${ timeout }ms`));\n }, timeout);\n });\n}\n\nexport function getCurrentDimensions(el : HTMLElement) : { width : number, height : number } {\n return {\n width: el.offsetWidth,\n height: el.offsetHeight\n };\n}\n\nexport function setOverflow(el : HTMLElement, value : string = 'auto') : { reset : () => void } {\n\n let { overflow, overflowX, overflowY } = el.style;\n\n el.style.overflow = el.style.overflowX = el.style.overflowY = value;\n\n return {\n reset() {\n el.style.overflow = overflow;\n el.style.overflowX = overflowX;\n el.style.overflowY = overflowY;\n }\n };\n}\n\nfunction dimensionsDiff(one : { width : number, height : number }, two : { width : number, height : number }, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : boolean {\n\n if (width && Math.abs(one.width - two.width) > threshold) {\n return true;\n }\n\n if (height && Math.abs(one.height - two.height) > threshold) {\n return true;\n }\n\n return false;\n}\n\nexport function trackDimensions(el : HTMLElement, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : { check : () => { changed : boolean, dimensions : { width : number, height : number } }, reset : () => void } {\n\n let currentDimensions = getCurrentDimensions(el);\n\n return {\n check() : { changed : boolean, dimensions : { width : number, height : number } } {\n let newDimensions = getCurrentDimensions(el);\n\n return {\n changed: dimensionsDiff(currentDimensions, newDimensions, { width, height, threshold }),\n dimensions: newDimensions\n };\n },\n\n reset() {\n currentDimensions = getCurrentDimensions(el);\n }\n };\n}\n\nexport function onDimensionsChange(el : HTMLElement, { width = true, height = true, delay = 50, threshold = 0 } : { width? : boolean, height? : boolean, delay? : number, threshold? : number }) : ZalgoPromise<{ width : number, height : number }> {\n\n return new ZalgoPromise(resolve => {\n\n let tracker = trackDimensions(el, { width, height, threshold });\n\n let interval;\n\n let resolver = debounce((dimensions) => {\n clearInterval(interval);\n return resolve(dimensions);\n }, delay * 4);\n\n interval = setInterval(() => {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n return resolver(dimensions);\n }\n }, delay);\n\n function onWindowResize() {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n window.removeEventListener('resize', onWindowResize);\n resolver(dimensions);\n }\n }\n\n window.addEventListener('resize', onWindowResize);\n });\n}\n\nexport function dimensionsMatchViewport(el : HTMLElement, { width, height } : { width : number, height : number }) : boolean {\n\n let dimensions = getCurrentDimensions(el);\n\n if (width && dimensions.width !== window.innerWidth) {\n return false;\n }\n\n if (height && dimensions.height !== window.innerHeight) {\n return false;\n }\n\n return true;\n}\n\nexport function bindEvents(element : HTMLElement, eventNames : Array<string>, handler : (event : Event) => void) : CancelableType {\n\n handler = once(handler);\n\n for (let eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (let eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n })\n };\n}\n\nconst VENDOR_PREFIXES = [ 'webkit', 'moz', 'ms', 'o' ];\n\nexport function setVendorCSS(element : HTMLElement, name : string, value : string) {\n\n // $FlowFixMe\n element.style[name] = value;\n\n let capitalizedName = capitalizeFirstLetter(name);\n\n for (let prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${ prefix }${ capitalizedName }`] = value;\n }\n}\n\nfunction isValidAnimation(element : HTMLElement, name : string) : boolean {\n\n let CSSRule = window.CSSRule;\n\n const KEYFRAMES_RULE = CSSRule.KEYFRAMES_RULE || CSSRule.WEBKIT_KEYFRAMES_RULE || CSSRule.MOZ_KEYFRAMES_RULE ||\n CSSRule.O_KEYFRAMES_RULE || CSSRule.MS_KEYFRAMES_RULE;\n\n let stylesheets = element.ownerDocument.styleSheets;\n\n try {\n for (let i = 0; i < stylesheets.length; i++) {\n\n // $FlowFixMe\n let cssRules = stylesheets[i].cssRules;\n\n if (!cssRules) {\n continue;\n }\n\n for (let j = 0; j < cssRules.length; j++) {\n\n let cssRule = cssRules[j];\n\n if (!cssRule) {\n continue;\n }\n\n if (cssRule.type === KEYFRAMES_RULE && cssRule.name === name) {\n return true;\n }\n }\n }\n } catch (err) {\n\n return false;\n }\n\n\n return false;\n}\n\n\nconst ANIMATION_START_EVENTS = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise<void> {\n return new ZalgoPromise((resolve, reject) => {\n\n let el = getElement(element);\n\n if (!el || !isValidAnimation(el, name)) {\n return resolve();\n }\n\n let hasStarted = false;\n\n let startTimeout;\n let endTimeout;\n let startEvent;\n let endEvent;\n\n function cleanUp() {\n setVendorCSS(el, 'animationName', '');\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\n }\n\n return resolve();\n });\n\n setVendorCSS(el, 'animationName', name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nconst STYLE = {\n\n DISPLAY: {\n NONE: 'none',\n BLOCK: 'block'\n },\n\n VISIBILITY: {\n VISIBLE: 'visible',\n HIDDEN: 'hidden'\n },\n\n IMPORTANT: 'important'\n};\n\nexport function makeElementVisible(element : HTMLElement) {\n element.style.setProperty('visibility', '');\n}\n\nexport function makeElementInvisible(element : HTMLElement) {\n element.style.setProperty('visibility', STYLE.VISIBILITY.HIDDEN, STYLE.IMPORTANT);\n}\n\n\nexport function showElement(element : HTMLElement) {\n element.style.setProperty('display', '');\n}\n\nexport function hideElement(element : HTMLElement) {\n element.style.setProperty('display', STYLE.DISPLAY.NONE, STYLE.IMPORTANT);\n}\n\nexport function destroyElement(element : HTMLElement) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise<void> {\n let animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise<void> {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.add(name);\n } else if (element.className.split(/\\s+/).indexOf(name) === -1) {\n element.className += ` ${ name }`;\n }\n}\n\nexport function removeClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.remove(name);\n } else if (element.className.split(/\\s+/).indexOf(name) !== -1) {\n element.className = element.className.replace(name, '');\n }\n}\n\nexport function isElementClosed(el : HTMLElement) : boolean {\n if (!el || !el.parentNode) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : CancelableType {\n handler = once(handler);\n\n let interval;\n\n if (isElementClosed(element)) {\n handler();\n } else {\n interval = safeInterval(() => {\n if (isElementClosed(element)) {\n interval.cancel();\n handler();\n }\n }, 50);\n }\n\n return {\n cancel() {\n if (interval) {\n interval.cancel();\n }\n }\n };\n}\n\nexport function fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (let script of querySelectorAll('script', el)) {\n let parentNode = script.parentNode;\n\n if (!parentNode) {\n continue;\n }\n\n let newScript = doc.createElement('script');\n newScript.text = script.textContent;\n parentNode.replaceChild(newScript, script);\n }\n}\n\ntype OnResizeOptions = {|\n width? : boolean,\n height? : boolean,\n interval? : number,\n win? : SameDomainWindowType\n|};\n\nexport function onResize(el : HTMLElement, handler : ({ width : number, height : number }) => void, { width = true, height = true, interval = 100, win = window } : OnResizeOptions = {}) : {} {\n let currentWidth = el.offsetWidth;\n let currentHeight = el.offsetHeight;\n\n handler({ width: currentWidth, height: currentHeight });\n\n let check = () => {\n let newWidth = el.offsetWidth;\n let newHeight = el.offsetHeight;\n\n if ((width && newWidth !== currentWidth) || (height && newHeight !== currentHeight)) {\n handler({ width: newWidth, height: newHeight });\n }\n\n currentWidth = newWidth;\n currentHeight = newHeight;\n };\n\n let observer;\n let timeout;\n\n if (typeof win.ResizeObserver !== 'undefined') {\n observer = new win.ResizeObserver(check);\n observer.observe(el);\n\n } else if (typeof win.MutationObserver !== 'undefined') {\n observer = new win.MutationObserver(check);\n observer.observe(el, {\n attributes: true,\n childList: true,\n subtree: true,\n characterData: false\n });\n win.addEventListener('resize', check);\n } else {\n let loop = () => {\n check();\n timeout = setTimeout(loop, interval);\n };\n loop();\n }\n\n return {\n cancel: () => {\n observer.disconnect();\n window.removeEventListener('resize', check);\n clearTimeout(timeout);\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/belter/src/dom.js","/* @flow */\n\nimport { uniqueID, getGlobal, inlineMemoize } from './util';\nimport { isLocalStorageEnabled } from './dom';\n\ntype Getter<T> = <T>(handler : (Object) => T) => T;\n\nexport type Storage = {\n getState : Getter<*>,\n getID : () => string,\n getSessionState : Getter<*>,\n getSessionID : () => string\n};\n\nexport function getStorage({ name, version = 'latest', lifetime = (5 * 60 * 1000) } : { name : string, version? : string, lifetime? : number }) : Storage {\n return inlineMemoize(getStorage, () => {\n const STORAGE_KEY = `__${ name }_${ version }_storage__`;\n\n let accessedStorage;\n\n function getState<T>(handler : (storage : Object) => T) : T {\n\n let localStorageEnabled = isLocalStorageEnabled();\n let storage;\n\n if (accessedStorage) {\n storage = accessedStorage;\n }\n\n if (!storage && localStorageEnabled) {\n let rawStorage = window.localStorage.getItem(STORAGE_KEY);\n\n if (rawStorage) {\n storage = JSON.parse(rawStorage);\n }\n }\n\n if (!storage) {\n storage = getGlobal()[STORAGE_KEY];\n }\n\n if (!storage) {\n storage = {\n id: uniqueID()\n };\n }\n\n if (!storage.id) {\n storage.id = uniqueID();\n }\n\n accessedStorage = storage;\n\n let result = handler(storage);\n\n if (localStorageEnabled) {\n window.localStorage.setItem(STORAGE_KEY, JSON.stringify(storage));\n } else {\n getGlobal()[STORAGE_KEY] = storage;\n }\n\n accessedStorage = null;\n\n return result;\n }\n\n function getID() : string {\n return getState(storage => storage.id);\n }\n\n function getSession<T>(handler : (state : Object) => T) : T {\n return getState(storage => {\n\n let session = storage.__session__;\n let now = Date.now();\n\n if (session && ((now - session.created) > lifetime)) {\n session = null;\n }\n\n if (!session) {\n session = {\n guid: uniqueID(),\n created: now\n };\n }\n\n storage.__session__ = session;\n\n return handler(session);\n });\n }\n\n function getSessionState<T>(handler : (state : Object) => T) : T {\n return getSession(session => {\n session.state = session.state || {};\n return handler(session.state);\n });\n }\n\n function getSessionID() : string {\n return getSession(session => session.guid);\n }\n\n return {\n getState,\n getID,\n getSessionState,\n getSessionID\n };\n }, [ { name, version, lifetime } ]);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/belter/src/storage.js","/* @flow */\n\nimport { isSameTopWindow, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG } from '../conf';\n\nexport function emulateIERestrictions(sourceWindow : CrossDomainWindowType, targetWindow : CrossDomainWindowType) {\n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n\n if (isSameTopWindow(sourceWindow, targetWindow) === false) {\n throw new Error(`Can not send and receive post messages between two different windows (disabled to emulate IE)`);\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/compat/ie.js","/* @flow */\n\nexport * from './ie';\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/compat/index.js","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { getParent, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { noop, uniqueID } from 'belter/src';\n\nimport { MESSAGE_NAME, WILDCARD } from '../conf';\nimport { global, globalStore } from '../global';\n\n/*\n HERE BE DRAGONS\n\n Warning: this file may look weird. Why save the tunnel window in an Object\n by ID, then look it up later, rather than just using the reference from the closure scope?\n\n The reason is, that ends up meaning the garbage collector can never get its hands\n on a closed window, since our closure has continued access to it -- and post-robot\n has no good way to know whether to clean up the function with the closure scope.\n\n If you're editing this file, be sure to run significant memory / GC tests afterwards.\n*/\n\nlet tunnelWindows = globalStore('tunnelWindows');\n\nfunction cleanTunnelWindows() {\n for (let key of tunnelWindows.keys()) {\n let tunnelWindow = tunnelWindows[key];\n\n try {\n noop(tunnelWindow.source);\n } catch (err) {\n tunnelWindows.del(key);\n continue;\n }\n\n if (isWindowClosed(tunnelWindow.source)) {\n tunnelWindows.del(key);\n }\n }\n}\n\ntype TunnelWindowDataType = {\n name : string,\n source : CrossDomainWindowType,\n canary : () => void,\n sendMessage : (message : string) => void\n};\n\nfunction addTunnelWindow({ name, source, canary, sendMessage } : TunnelWindowDataType) : string {\n cleanTunnelWindows();\n let id = uniqueID();\n tunnelWindows.set(id, { name, source, canary, sendMessage });\n return id;\n}\n\nglobal.openTunnelToParent = function openTunnelToParent({ name, source, canary, sendMessage } : TunnelWindowDataType) : ZalgoPromise<{ source : CrossDomainWindowType, origin : string, data : Object }> {\n\n let parentWindow = getParent(window);\n\n if (!parentWindow) {\n throw new Error(`No parent window found to open tunnel to`);\n }\n\n let id = addTunnelWindow({ name, source, canary, sendMessage });\n\n return global.send(parentWindow, MESSAGE_NAME.OPEN_TUNNEL, {\n\n name,\n\n sendMessage() {\n\n let tunnelWindow = tunnelWindows.get(id);\n\n try {\n // IE gets antsy if you try to even reference a closed window\n noop(tunnelWindow && tunnelWindow.source);\n } catch (err) {\n tunnelWindows.del(id);\n return;\n }\n\n if (!tunnelWindow || !tunnelWindow.source || isWindowClosed(tunnelWindow.source)) {\n return;\n }\n\n try {\n tunnelWindow.canary();\n } catch (err) {\n return;\n }\n\n tunnelWindow.sendMessage.apply(this, arguments);\n }\n\n }, { domain: WILDCARD });\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/bridge/bridge.js","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, isSameDomain, isOpener, isSameTopWindow, matchDomain, getUserAgent, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { noop } from 'belter/src';\n\nimport { CONFIG, BRIDGE_NAME_PREFIX } from '../conf';\nimport { windowStore } from '../global';\n\nexport function needsBridgeForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n\n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForWin(win : CrossDomainWindowType) : boolean {\n\n if (!isSameTopWindow(window, win)) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForDomain(domain : ?string, win : ?CrossDomainWindowType) : boolean {\n\n if (domain) {\n if (getDomain() !== getDomainFromUrl(domain)) {\n return true;\n }\n } else if (win) {\n if (!isSameDomain(win)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function needsBridge({ win, domain } : { win? : CrossDomainWindowType, domain? : string }) : boolean {\n\n if (!needsBridgeForBrowser()) {\n return false;\n }\n\n if (domain && !needsBridgeForDomain(domain, win)) {\n return false;\n }\n\n if (win && !needsBridgeForWin(win)) {\n return false;\n }\n\n return true;\n}\n\nexport function getBridgeName(domain : string) : string {\n\n domain = domain || getDomainFromUrl(domain);\n\n let sanitizedDomain = domain.replace(/[^a-zA-Z0-9]+/g, '_');\n\n let id = `${ BRIDGE_NAME_PREFIX }_${ sanitizedDomain }`;\n\n return id;\n}\n\nexport function isBridge() : boolean {\n return Boolean(window.name && window.name === getBridgeName(getDomain()));\n}\n\nexport let documentBodyReady = new ZalgoPromise(resolve => {\n\n if (window.document && window.document.body) {\n return resolve(window.document.body);\n }\n\n let interval = setInterval(() => {\n if (window.document && window.document.body) {\n clearInterval(interval);\n return resolve(window.document.body);\n }\n }, 10);\n});\n\nlet remoteWindows = windowStore('remoteWindows');\n\nexport function registerRemoteWindow(win : CrossDomainWindowType) {\n remoteWindows.getOrSet(win, () => new ZalgoPromise());\n}\n\nexport function findRemoteWindow(win : CrossDomainWindowType) : ZalgoPromise<(remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => void> {\n let remoteWin = remoteWindows.get(win);\n\n if (!remoteWin) {\n throw new Error(`Remote window not found`);\n }\n\n return remoteWin;\n}\n\nexport function registerRemoteSendMessage(win : CrossDomainWindowType, domain : string, sendMessage : (message : string) => void) {\n let sendMessageWrapper = (remoteWin : CrossDomainWindowType, remoteDomain : string, message : string) => {\n if (remoteWin !== win) {\n throw new Error(`Remote window does not match window`);\n }\n\n if (!matchDomain(remoteDomain, domain)) {\n throw new Error(`Remote domain ${ remoteDomain } does not match domain ${ domain }`);\n }\n\n sendMessage(message);\n };\n\n findRemoteWindow(win).resolve(sendMessageWrapper);\n}\n\nexport function rejectRemoteSendMessage(win : CrossDomainWindowType, err : Error) {\n findRemoteWindow(win).reject(err).catch(noop);\n}\n\nexport function sendBridgeMessage(win : CrossDomainWindowType, domain : string, message : string) : ZalgoPromise<void> {\n\n let messagingChild = isOpener(window, win);\n let messagingParent = isOpener(win, window);\n\n if (!messagingChild && !messagingParent) {\n throw new Error(`Can only send messages to and from parent and popup windows`);\n }\n\n return findRemoteWindow(win).then(sendMessage => {\n return sendMessage(win, domain, message);\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/bridge/common.js","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isSameDomain, getOpener, getDomain, getFrameByName, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { weakMapMemoize, noop } from 'belter/src';\n\nimport { WINDOW_PROP } from '../conf';\nimport { global } from '../global';\n\nimport { needsBridge, registerRemoteWindow, rejectRemoteSendMessage, registerRemoteSendMessage, getBridgeName } from './common';\n\nlet awaitRemoteBridgeForWindow = weakMapMemoize((win : CrossDomainWindowType) : ZalgoPromise<?CrossDomainWindowType> => {\n return ZalgoPromise.try(() => {\n try {\n let frame = getFrameByName(win, getBridgeName(getDomain()));\n\n if (!frame) {\n return;\n }\n\n // $FlowFixMe\n if (isSameDomain(frame) && frame[WINDOW_PROP.POSTROBOT]) {\n return frame;\n }\n\n return new ZalgoPromise(resolve => {\n\n let interval;\n let timeout;\n\n interval = setInterval(() => {\n // $FlowFixMe\n if (frame && isSameDomain(frame) && frame[WINDOW_PROP.POSTROBOT]) {\n clearInterval(interval);\n clearTimeout(timeout);\n return resolve(frame);\n }\n }, 100);\n\n timeout = setTimeout(() => {\n clearInterval(interval);\n return resolve();\n }, 2000);\n });\n\n } catch (err) {\n // pass\n }\n });\n});\n\nexport function openTunnelToOpener() : ZalgoPromise<void> {\n return ZalgoPromise.try(() => {\n\n const opener = getOpener(window);\n\n if (!opener) {\n return;\n }\n\n if (!needsBridge({ win: opener })) {\n return;\n }\n\n registerRemoteWindow(opener);\n\n return awaitRemoteBridgeForWindow(opener).then(bridge => {\n\n if (!bridge) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: no bridge found in opener`));\n }\n\n if (!window.name) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: window does not have a name`));\n }\n\n return bridge[WINDOW_PROP.POSTROBOT].openTunnelToParent({\n\n name: window.name,\n\n source: window,\n\n canary() {\n // pass\n },\n\n sendMessage(message) {\n\n try {\n noop(window);\n } catch (err) {\n return;\n }\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: this.origin,\n source: this.source\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n\n }).then(({ source, origin, data }) => {\n\n if (source !== opener) {\n throw new Error(`Source does not match opener`);\n }\n\n registerRemoteSendMessage(source, origin, data.sendMessage);\n\n }).catch(err => {\n\n rejectRemoteSendMessage(opener, err);\n throw err;\n });\n });\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/bridge/child.js","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getFrameByName, isWindowClosed, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, PROTOCOL, MESSAGE_NAME } from '../conf';\nimport { awaitWindowHello } from '../lib';\nimport { global, windowStore, globalStore } from '../global';\n\nimport { getBridgeName, documentBodyReady, registerRemoteSendMessage, registerRemoteWindow } from './common';\n\nlet bridges = globalStore('bridges');\nlet bridgeFrames = globalStore('bridgeFrames');\nlet popupWindowsByName = globalStore('popupWindowsByName');\nlet popupWindowsByWin = windowStore('popupWindowsByWin');\n\nfunction listenForRegister(source, domain) {\n global.on(MESSAGE_NAME.OPEN_TUNNEL, { window: source, domain }, ({ origin, data }) => {\n\n if (origin !== domain) {\n throw new Error(`Domain ${ domain } does not match origin ${ origin }`);\n }\n\n if (!data.name) {\n throw new Error(`Register window expected to be passed window name`);\n }\n\n if (!data.sendMessage) {\n throw new Error(`Register window expected to be passed sendMessage method`);\n }\n\n if (!popupWindowsByName.has(data.name)) {\n throw new Error(`Window with name ${ data.name } does not exist, or was not opened by this window`);\n }\n\n // $FlowFixMe\n if (!popupWindowsByName.get(data.name).domain) {\n throw new Error(`We do not have a registered domain for window ${ data.name }`);\n }\n\n // $FlowFixMe\n if (popupWindowsByName.get(data.name).domain !== origin) {\n // $FlowFixMe\n throw new Error(`Message origin ${ origin } does not matched registered window origin ${ popupWindowsByName.get(data.name).domain }`);\n }\n\n // $FlowFixMe\n registerRemoteSendMessage(popupWindowsByName.get(data.name).win, domain, data.sendMessage);\n\n return {\n sendMessage(message) {\n\n if (!window || window.closed) {\n return;\n }\n\n let winDetails = popupWindowsByName.get(data.name);\n\n if (!winDetails) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: winDetails.domain,\n source: winDetails.win\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n };\n });\n}\n\nfunction openBridgeFrame(name : string, url : string) : HTMLIFrameElement {\n\n let iframe = document.createElement(`iframe`);\n\n iframe.setAttribute(`name`, name);\n iframe.setAttribute(`id`, name);\n\n iframe.setAttribute(`style`, `display: none; margin: 0; padding: 0; border: 0px none; overflow: hidden;`);\n iframe.setAttribute(`frameborder`, `0`);\n iframe.setAttribute(`border`, `0`);\n iframe.setAttribute(`scrolling`, `no`);\n iframe.setAttribute(`allowTransparency`, `true`);\n\n iframe.setAttribute(`tabindex`, `-1`);\n iframe.setAttribute(`hidden`, `true`);\n iframe.setAttribute(`title`, ``);\n iframe.setAttribute(`role`, `presentation`);\n\n iframe.src = url;\n\n return iframe;\n}\n\nexport function hasBridge(url : string, domain : string) : boolean {\n return bridges.has(domain || getDomainFromUrl(url));\n}\n\nexport function openBridge(url : string, domain : string) : ZalgoPromise<CrossDomainWindowType> {\n domain = domain || getDomainFromUrl(url);\n \n return bridges.getOrSet(domain, () => ZalgoPromise.try(() => {\n\n if (getDomain() === domain) {\n throw new Error(`Can not open bridge on the same domain as current domain: ${ domain }`);\n }\n\n let name = getBridgeName(domain);\n let frame = getFrameByName(window, name);\n\n if (frame) {\n throw new Error(`Frame with name ${ name } already exists on page`);\n }\n\n let iframe = openBridgeFrame(name, url);\n bridgeFrames.set(domain, iframe);\n\n return documentBodyReady.then(body => {\n\n body.appendChild(iframe);\n\n let bridge = iframe.contentWindow;\n\n listenForRegister(bridge, domain);\n\n return new ZalgoPromise((resolve, reject) => {\n\n iframe.onload = resolve;\n iframe.onerror = reject;\n\n }).then(() => {\n\n return awaitWindowHello(bridge, CONFIG.BRIDGE_TIMEOUT, `Bridge ${ url }`);\n\n }).then(() => {\n\n return bridge;\n });\n });\n }));\n}\n\nlet windowOpen = window.open;\n\nwindow.open = function windowOpenWrapper(url : string, name : string, options : string, last : mixed) : mixed {\n\n let domain = url;\n\n if (url && url.indexOf(PROTOCOL.MOCK) === 0) {\n [ domain, url ] = url.split('|');\n }\n\n if (domain) {\n domain = getDomainFromUrl(domain);\n }\n\n let win = windowOpen.call(this, url, name, options, last);\n\n if (!win) {\n return win;\n }\n\n if (url) {\n registerRemoteWindow(win);\n }\n\n for (let winName of popupWindowsByName.keys()) {\n // $FlowFixMe\n if (isWindowClosed(popupWindowsByName.get(winName).win)) {\n popupWindowsByName.del(winName);\n }\n }\n\n if (name && win) {\n let winOptions = popupWindowsByWin.getOrSet(win, () => ({}));\n\n // $FlowFixMe\n winOptions.name = winOptions.name || name;\n // $FlowFixMe\n winOptions.win = winOptions.win || win;\n // $FlowFixMes\n winOptions.domain = winOptions.domain || domain;\n\n popupWindowsByWin.set(win, winOptions);\n popupWindowsByName.set(name, winOptions);\n }\n\n return win;\n};\n\nexport function linkUrl(win : CrossDomainWindowType, url : string) {\n if (popupWindowsByWin.has(win)) {\n // $FlowFixMe\n popupWindowsByWin.get(win).domain = getDomainFromUrl(url);\n registerRemoteWindow(win);\n }\n}\n\nexport function destroyBridges() {\n for (let domain of bridgeFrames.keys()) {\n let frame = bridgeFrames.get(domain);\n if (frame && frame.parentNode) {\n frame.parentNode.removeChild(frame);\n }\n }\n bridgeFrames.reset();\n bridges.reset();\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/bridge/parent.js","/* @flow */\n\nexport const TYPE = {\n FUNCTION: ('function' : 'function'),\n ERROR: ('error' : 'error'),\n PROMISE: ('promise' : 'promise'),\n REGEX: ('regex' : 'regex'),\n DATE: ('date' : 'date'),\n ARRAY: ('array' : 'array'),\n OBJECT: ('object' : 'object'),\n STRING: ('string' : 'string'),\n NUMBER: ('number' : 'number'),\n BOOLEAN: ('boolean' : 'boolean'),\n NULL: ('null' : 'null'),\n UNDEFINED: ('undefined' : 'undefined')\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/universal-serialize/src/constants.js","/* @flow */\n\nimport { TYPE } from './constants';\nimport type { CustomSerializedType } from './types';\n\nexport function isSerializedType(item : mixed) : boolean {\n return (typeof item === 'object' && item !== null && typeof item.__type__ === 'string');\n}\n\nexport function determineType(val : mixed) : $Values<typeof TYPE> | void {\n if (typeof val === 'undefined') {\n return TYPE.UNDEFINED;\n }\n\n if (val === null) {\n return TYPE.NULL;\n }\n\n if (Array.isArray(val)) {\n return TYPE.ARRAY;\n }\n\n if (typeof val === 'function') {\n return TYPE.FUNCTION;\n }\n\n if (typeof val === 'object') {\n\n if (val instanceof Error) {\n return TYPE.ERROR;\n }\n\n if (typeof val.then === 'function') {\n return TYPE.PROMISE;\n }\n\n if (Object.prototype.toString.call(val) === '[object RegExp]') {\n return TYPE.REGEX;\n }\n\n if (Object.prototype.toString.call(val) === '[object Date]') {\n return TYPE.DATE;\n }\n\n return TYPE.OBJECT;\n }\n\n if (typeof val === 'string') {\n return TYPE.STRING;\n }\n\n if (typeof val === 'number') {\n return TYPE.NUMBER;\n }\n\n if (typeof val === 'boolean') {\n return TYPE.BOOLEAN;\n }\n}\n\nexport function serializeType<T : string, V : mixed>(type : T, val : V) : CustomSerializedType<T, V> {\n return {\n __type__: type,\n __val__: val\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/universal-serialize/src/common.js","/* @flow */\n\nimport { TYPE } from './constants';\nimport type { Thenable, CustomSerializedType, NativeSerializedType } from './types';\nimport { determineType, isSerializedType } from './common';\nimport {\n serializeFunction,\n serializeError, type SerializedError,\n serializePromise,\n serializeRegex, type SerializedRegex,\n serializeDate, type SerializedDate,\n serializeArray,\n serializeObject,\n serializeString,\n serializeNumber,\n serializeBoolean,\n serializeNull\n} from './serializers';\n\ntype NativeSerializer<V : mixed, S : mixed, T : $Values<typeof TYPE>> = (value : V, key : string) => NativeSerializedType<T, S>;\ntype CustomSerializer<V : mixed, S : mixed, T : string> = (value : V, key : string) => CustomSerializedType<T, S>;\ntype PrimitiveSerializer<V : mixed, S : mixed> = (value : V, key : string) => S;\ntype CustomOrPrimitiveSerializer<V : mixed, T : string> = CustomSerializer<V, *, T> | PrimitiveSerializer<V, *>;\ntype NativeOrCustomOrPrimitiveSerializer<V : mixed, S : mixed, T : string> = NativeSerializer<V, S, T> | CustomOrPrimitiveSerializer<V, T>;\n\ntype Serializers = {|\n function? : CustomOrPrimitiveSerializer<Function, typeof TYPE.FUNCTION>,\n error? : NativeOrCustomOrPrimitiveSerializer<Error, SerializedError, typeof TYPE.ERROR>,\n promise? : CustomOrPrimitiveSerializer<Thenable, typeof TYPE.PROMISE>,\n regex? : NativeOrCustomOrPrimitiveSerializer<RegExp, SerializedRegex, typeof TYPE.REGEX>,\n date? : NativeOrCustomOrPrimitiveSerializer<Date, SerializedDate, typeof TYPE.DATE>,\n array? : CustomOrPrimitiveSerializer<$ReadOnlyArray<mixed>, typeof TYPE.ARRAY>,\n object? : CustomOrPrimitiveSerializer<Object, typeof TYPE.OBJECT>,\n string? : CustomOrPrimitiveSerializer<string, typeof TYPE.STRING>,\n number? : CustomOrPrimitiveSerializer<number, typeof TYPE.NUMBER>,\n boolean? : CustomOrPrimitiveSerializer<boolean, typeof TYPE.BOOLEAN>,\n null? : CustomOrPrimitiveSerializer<null, typeof TYPE.NULL>\n|};\n\nconst SERIALIZER : Serializers = {\n [ TYPE.FUNCTION ]: serializeFunction,\n [ TYPE.ERROR ]: serializeError,\n [ TYPE.PROMISE ]: serializePromise,\n [ TYPE.REGEX ]: serializeRegex,\n [ TYPE.DATE ]: serializeDate,\n [ TYPE.ARRAY ]: serializeArray,\n [ TYPE.OBJECT ]: serializeObject,\n [ TYPE.STRING ]: serializeString,\n [ TYPE.NUMBER ]: serializeNumber,\n [ TYPE.BOOLEAN ]: serializeBoolean,\n [ TYPE.NULL ]: serializeNull\n};\n\n// $FlowFixMe\nconst defaultSerializers : Serializers = {};\n\nexport function serialize<T : mixed>(obj : T, serializers : Serializers = defaultSerializers) : string {\n\n function replacer(key) : ?mixed {\n const val = this[key];\n\n if (isSerializedType(this)) {\n return val;\n }\n \n const type = determineType(val);\n\n if (!type) {\n return val;\n }\n\n // $FlowFixMe\n const serializer = serializers[type] || SERIALIZER[type];\n\n if (!serializer) {\n return val;\n }\n\n return serializer(val, key);\n }\n\n const result = JSON.stringify(obj, replacer);\n\n if (typeof result === 'undefined') {\n return TYPE.UNDEFINED;\n }\n\n return result;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/universal-serialize/src/serialize.js","/* @flow */\n\nexport type SerializedFunction = void;\n\nexport function serializeFunction() : SerializedFunction {\n // pass\n}\n\nexport function deserializeFunction() {\n throw new Error(`Function serialization is not implemented; nothing to deserialize`);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/universal-serialize/src/serializers/function.js","/* @flow */\n\nimport { serializeType } from '../common';\nimport { TYPE } from '../constants';\nimport type { NativeSerializedType } from '../types';\n\nexport type SerializedError = {|\n message : string,\n stack : string,\n code : string | number | void\n|};\n\n// $FlowFixMe\nexport function serializeError({ message, stack, code } : Error) : NativeSerializedType<typeof TYPE.ERROR, SerializedError> {\n return serializeType(TYPE.ERROR, { message, stack, code });\n}\n\nexport function deserializeError({ message, stack, code } : SerializedError) : Error {\n const error = new Error(message);\n // $FlowFixMe\n error.code = code;\n error.stack = `${ stack }\\n\\n${ error.stack }`;\n return error;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/universal-serialize/src/serializers/error.js","/* @flow */\n\nexport type SerializedPromise = void;\n\nexport function serializePromise() : SerializedPromise {\n // pass\n}\n\nexport function deserializePromise() {\n throw new Error(`Promise serialization is not implemented; nothing to deserialize`);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/universal-serialize/src/serializers/promise.js","/* @flow */\n\nimport { serializeType } from '../common';\nimport { TYPE } from '../constants';\nimport type { NativeSerializedType } from '../types';\n\nexport type SerializedRegex = string;\n\nexport function serializeRegex(val : RegExp) : NativeSerializedType<typeof TYPE.REGEX, SerializedRegex> {\n return serializeType(TYPE.REGEX, val.source);\n}\n\nexport function deserializeRegex(val : string) : RegExp {\n // eslint-disable-next-line security/detect-non-literal-regexp\n return new RegExp(val);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/universal-serialize/src/serializers/regex.js","/* @flow */\n\nimport { serializeType } from '../common';\nimport { TYPE } from '../constants';\nimport type { NativeSerializedType } from '../types';\n\nexport type SerializedDate = string;\n\nexport function serializeDate(val : Date) : NativeSerializedType<typeof TYPE.DATE, SerializedDate> {\n return serializeType(TYPE.DATE, val.toJSON());\n}\n\nexport function deserializeDate(val : string) : Date {\n return new Date(val);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/universal-serialize/src/serializers/date.js","/* @flow */\n\nexport type SerializedArray<T : mixed = mixed> = $ReadOnlyArray<T>;\n\nexport function serializeArray<T : mixed>(val : $ReadOnlyArray<T>) : SerializedArray<T> {\n return val;\n}\n\nexport function deserializeArray<T : mixed>(val : SerializedArray<T>) : $ReadOnlyArray<T> {\n return val;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/universal-serialize/src/serializers/array.js","/* @flow */\n\nexport type SerializedObject = Object;\n\nexport function serializeObject(val : Object) : SerializedObject {\n return val;\n}\n\nexport function deserializeObject(val : SerializedObject) : Object {\n return val;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/universal-serialize/src/serializers/object.js","/* @flow */\n\nexport type SerializedString = string;\n\nexport function serializeString(val : string) : SerializedString {\n return val;\n}\n\nexport function deserializeString(val : SerializedString) : string {\n return val;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/universal-serialize/src/serializers/string.js","/* @flow */\n\nexport type SerializedNumber = number;\n\nexport function serializeNumber(val : number) : SerializedNumber {\n return val;\n}\n\nexport function deserializeNumber(val : SerializedNumber) : number {\n return val;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/universal-serialize/src/serializers/number.js","/* @flow */\n\nexport type SerializedBoolean = boolean;\n\nexport function serializeBoolean(val : boolean) : SerializedBoolean {\n return val;\n}\n\nexport function deserializeBoolean(val : SerializedBoolean) : boolean {\n return val;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/universal-serialize/src/serializers/boolean.js","/* @flow */\n\nexport type SerializedNull = null;\n\nexport function serializeNull(val : null) : SerializedNull {\n return val;\n}\n\nexport function deserializeNull(val : SerializedNull) : null {\n return val;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/universal-serialize/src/serializers/null.js","/* @flow */\n\nimport type { Thenable } from './types';\nimport { TYPE } from './constants';\nimport { determineType, isSerializedType } from './common';\nimport {\n deserializeFunction,\n deserializeError, type SerializedError,\n deserializePromise,\n deserializeRegex, type SerializedRegex,\n deserializeDate, type SerializedDate,\n deserializeArray,\n deserializeObject,\n deserializeString,\n deserializeNumber,\n deserializeBoolean,\n deserializeNull\n} from './serializers';\n\ntype Deserializer<V : mixed, S : mixed> = (serializedValue : S, key : string) => V;\ntype PrimitiveDeserializer<V, S = V> = (serializedValue : S, key : string) => V;\n\ntype Deserializers = {\n function? : Deserializer<Function, *>,\n error? : Deserializer<Error, SerializedError>,\n promise? : Deserializer<Thenable, *>,\n regex? : Deserializer<RegExp, SerializedRegex>,\n date? : Deserializer<Date, SerializedDate>,\n array? : PrimitiveDeserializer<$ReadOnlyArray<mixed>>,\n object? : PrimitiveDeserializer<Object>,\n string? : PrimitiveDeserializer<string>,\n number? : PrimitiveDeserializer<number>,\n boolean? : PrimitiveDeserializer<boolean>,\n null? : PrimitiveDeserializer<null>,\n [string] : Deserializer<mixed, *>\n};\n\n// $FlowFixMe\nconst DESERIALIZER : Deserializers = {\n [ TYPE.FUNCTION ]: deserializeFunction,\n [ TYPE.ERROR ]: deserializeError,\n [ TYPE.PROMISE ]: deserializePromise,\n [ TYPE.REGEX ]: deserializeRegex,\n [ TYPE.DATE ]: deserializeDate,\n [ TYPE.ARRAY ]: deserializeArray,\n [ TYPE.OBJECT ]: deserializeObject,\n [ TYPE.STRING ]: deserializeString,\n [ TYPE.NUMBER ]: deserializeNumber,\n [ TYPE.BOOLEAN ]: deserializeBoolean,\n [ TYPE.NULL ]: deserializeNull\n};\n\n// $FlowFixMe\nconst defaultDeserializers : Deserializers = {};\n\nexport function deserialize<T : mixed | null | void>(str : string, deserializers : Deserializers = defaultDeserializers) : T {\n if (str === TYPE.UNDEFINED) {\n // $FlowFixMe\n return;\n }\n\n function replacer(key, val) : ?mixed {\n if (isSerializedType(this)) {\n return val;\n }\n\n let type;\n let value;\n\n if (isSerializedType(val)) {\n type = val.__type__;\n value = val.__val__;\n } else {\n type = determineType(val);\n value = val;\n }\n\n if (!type) {\n return value;\n }\n\n // $FlowFixMe\n const deserializer = deserializers[type] || DESERIALIZER[type];\n\n if (!deserializer) {\n return value;\n }\n\n return deserializer(value, key);\n }\n\n return JSON.parse(str, replacer);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/universal-serialize/src/deserialize.js","/* @flow */\n\nimport { isSameDomain, isWindowClosed, type CrossDomainWindowType, type DomainMatcher } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { uniqueID, memoizePromise } from 'belter/src';\nimport { serializeType, type CustomSerializedType } from 'universal-serialize/src';\n\nimport { SERIALIZATION_TYPE } from '../conf';\nimport { windowStore, globalStore } from '../global';\nimport { getWindowInstanceID } from '../lib';\n\nlet winToProxyWindow = windowStore('winToProxyWindow');\nlet idToProxyWindow = globalStore('idToProxyWindow');\n\nfunction cleanupProxyWindows() {\n for (let id of idToProxyWindow.keys()) {\n // $FlowFixMe\n if (idToProxyWindow.get(id).shouldClean()) {\n idToProxyWindow.del(id);\n }\n }\n}\n\ntype SerializedProxyWindow = {|\n close : () => ZalgoPromise<void>,\n focus : () => ZalgoPromise<void>,\n isClosed : () => ZalgoPromise<boolean>,\n setLocation : (string) => ZalgoPromise<void>,\n setName : (string) => ZalgoPromise<void>,\n id : string,\n getInstanceID : () => ZalgoPromise<string>\n|};\n\nexport class ProxyWindow {\n\n serializedWindow : SerializedProxyWindow\n actualWindow : CrossDomainWindowType\n actualWindowPromise : ZalgoPromise<CrossDomainWindowType>\n\n constructor(serializedWindow : SerializedProxyWindow, actualWindow? : CrossDomainWindowType) {\n this.serializedWindow = serializedWindow;\n this.actualWindowPromise = new ZalgoPromise();\n if (actualWindow) {\n this.setWindow(actualWindow);\n }\n this.serializedWindow.getInstanceID = memoizePromise(this.serializedWindow.getInstanceID);\n }\n\n setLocation(href : string) : ZalgoPromise<ProxyWindow> {\n return ZalgoPromise.try(() => {\n if (this.actualWindow) {\n this.actualWindow.location = href;\n } else {\n return this.serializedWindow.setLocation(href);\n }\n }).then(() => this);\n }\n\n setName(name : string) : ZalgoPromise<ProxyWindow> {\n return ZalgoPromise.try(() => {\n if (this.actualWindow) {\n if (!isSameDomain(this.actualWindow)) {\n throw new Error(`Can not set name for window on different domain`);\n }\n // $FlowFixMe\n this.actualWindow.name = name;\n // $FlowFixMe\n if (this.actualWindow.frameElement) {\n // $FlowFixMe\n this.actualWindow.frameElement.setAttribute('name', name);\n }\n } else {\n return this.serializedWindow.setName(name);\n }\n }).then(() => this);\n }\n\n close() : ZalgoPromise<ProxyWindow> {\n return ZalgoPromise.try(() => {\n if (this.actualWindow) {\n this.actualWindow.close();\n } else {\n return this.serializedWindow.close();\n }\n }).then(() => this);\n }\n\n focus() : ZalgoPromise<ProxyWindow> {\n return ZalgoPromise.try(() => {\n if (this.actualWindow) {\n this.actualWindow.focus();\n }\n return this.serializedWindow.focus();\n }).then(() => this);\n }\n\n isClosed() : ZalgoPromise<boolean> {\n return ZalgoPromise.try(() => {\n if (this.actualWindow) {\n return isWindowClosed(this.actualWindow);\n } else {\n return this.serializedWindow.isClosed();\n }\n });\n }\n\n setWindow(win : CrossDomainWindowType) {\n this.actualWindow = win;\n this.actualWindowPromise.resolve(win);\n }\n\n matchWindow(win : CrossDomainWindowType) : ZalgoPromise<boolean> {\n return ZalgoPromise.try(() => {\n if (this.actualWindow) {\n return win === this.actualWindow;\n }\n \n return ZalgoPromise.all([\n this.getInstanceID(),\n getWindowInstanceID(win)\n ]).then(([ proxyInstanceID, knownWindowInstanceID ]) => {\n let match = proxyInstanceID === knownWindowInstanceID;\n\n if (match) {\n this.setWindow(win);\n }\n\n return match;\n });\n });\n }\n\n unwrap() : CrossDomainWindowType | ProxyWindow {\n return this.actualWindow || this;\n }\n\n awaitWindow() : ZalgoPromise<CrossDomainWindowType> {\n return this.actualWindowPromise;\n }\n\n getInstanceID() : ZalgoPromise<string> {\n if (this.actualWindow) {\n return getWindowInstanceID(this.actualWindow);\n } else {\n return this.serializedWindow.getInstanceID();\n }\n }\n\n serialize() : SerializedProxyWindow {\n return this.serializedWindow;\n }\n\n shouldClean() : boolean {\n return this.actualWindow && isWindowClosed(this.actualWindow);\n }\n\n static unwrap(win : CrossDomainWindowType | ProxyWindow) : CrossDomainWindowType | ProxyWindow {\n return ProxyWindow.isProxyWindow(win)\n // $FlowFixMe\n ? win.unwrap()\n : win;\n }\n\n static serialize(win : CrossDomainWindowType | ProxyWindow) : SerializedProxyWindow {\n cleanupProxyWindows();\n\n return ProxyWindow.toProxyWindow(win).serialize();\n }\n\n static deserialize(serializedWindow : SerializedProxyWindow) : ProxyWindow {\n cleanupProxyWindows();\n \n return idToProxyWindow.getOrSet(serializedWindow.id, () => {\n return new ProxyWindow(serializedWindow);\n });\n }\n\n static isProxyWindow(obj : mixed) : boolean {\n return obj instanceof ProxyWindow;\n }\n\n static toProxyWindow(win : CrossDomainWindowType | ProxyWindow) : ProxyWindow {\n cleanupProxyWindows();\n\n if (ProxyWindow.isProxyWindow(win)) {\n // $FlowFixMe\n return win;\n }\n\n // $FlowFixMe\n return winToProxyWindow.getOrSet(win, () => {\n let id = uniqueID();\n\n return idToProxyWindow.set(id, new ProxyWindow({\n id,\n getInstanceID: () => getWindowInstanceID(win),\n close: () => ZalgoPromise.try(() => {\n win.close();\n }),\n focus: () => ZalgoPromise.try(() => {\n win.focus();\n }),\n isClosed: () => ZalgoPromise.try(() => {\n // $FlowFixMe\n return isWindowClosed(win);\n }),\n setLocation: (href) => ZalgoPromise.try(() => {\n // $FlowFixMe\n if (isSameDomain(win)) {\n try {\n if (win.location && typeof win.location.replace === 'function') {\n // $FlowFixMe\n win.location.replace(href);\n return;\n }\n } catch (err) {\n // pass\n }\n }\n \n // $FlowFixMe\n win.location = href;\n }),\n setName: (name) => ZalgoPromise.try(() => {\n // $FlowFixMe\n win.name = name;\n })\n // $FlowFixMe\n }, win));\n });\n }\n}\n\nexport type SerializedWindow = CustomSerializedType<typeof SERIALIZATION_TYPE.CROSS_DOMAIN_WINDOW, SerializedProxyWindow>;\n\nexport function serializeWindow(destination : CrossDomainWindowType | ProxyWindow, domain : DomainMatcher, win : CrossDomainWindowType) : SerializedWindow {\n return serializeType(SERIALIZATION_TYPE.CROSS_DOMAIN_WINDOW, ProxyWindow.serialize(win));\n}\n\nexport function deserializeWindow(source : CrossDomainWindowType | ProxyWindow, origin : string, win : SerializedProxyWindow) : ProxyWindow {\n return ProxyWindow.deserialize(win);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/serialize/window.js","/* @flow */\n\nimport { matchDomain, getDomain, type CrossDomainWindowType, type DomainMatcher } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { once, uniqueID } from 'belter/src';\nimport { serializeType, type CustomSerializedType } from 'universal-serialize/src';\n\nimport { MESSAGE_NAME, WILDCARD, SERIALIZATION_TYPE } from '../conf';\nimport { global, windowStore, globalStore } from '../global';\n\nimport { ProxyWindow } from './window';\n\nlet methodStore = windowStore('methodStore');\nlet proxyWindowMethods = globalStore('proxyWindowMethods');\nglobal.listeningForFunctions = global.listeningForFunctions || false;\n\nconst listenForFunctionCalls = once(() => {\n if (global.listeningForFunctions) {\n return;\n }\n\n global.listeningForFunctions = true;\n\n global.on(MESSAGE_NAME.METHOD, { origin: WILDCARD }, ({ source, origin, data } : { source : CrossDomainWindowType, origin : string, data : Object }) => {\n let { id, name } = data;\n \n return ZalgoPromise.try(() => {\n let methods = methodStore.getOrSet(source, () => ({}));\n let meth = methods[data.id] || proxyWindowMethods.get(id);\n\n if (!meth) {\n throw new Error(`Could not find method '${ data.name }' with id: ${ data.id } in ${ getDomain(window) }`);\n }\n\n let { proxy, domain, val } = meth;\n\n if (!matchDomain(domain, origin)) {\n throw new Error(`Method '${ data.name }' domain ${ JSON.stringify(meth.domain) } does not match origin ${ origin } in ${ getDomain(window) }`);\n }\n \n if (proxy) {\n // $FlowFixMe\n return proxy.matchWindow(source).then(match => {\n if (!match) {\n throw new Error(`Method call '${ data.name }' failed - proxy window does not match source in ${ getDomain(window) }`);\n }\n return val;\n });\n }\n\n return val;\n\n }).then(method => {\n return method.apply({ source, origin, data }, data.args);\n\n }).then(result => {\n return { result, id, name };\n });\n });\n});\n\nexport type SerializedFunction = CustomSerializedType<typeof SERIALIZATION_TYPE.CROSS_DOMAIN_FUNCTION, {\n id : string,\n name : string\n}>;\n\nexport function serializeFunction<T>(destination : CrossDomainWindowType | ProxyWindow, domain : DomainMatcher, val : () => ZalgoPromise<T> | T, key : string) : SerializedFunction {\n listenForFunctionCalls();\n \n let id = uniqueID();\n destination = ProxyWindow.unwrap(destination);\n\n if (ProxyWindow.isProxyWindow(destination)) {\n proxyWindowMethods.set(id, { proxy: destination, domain, val });\n // $FlowFixMe\n destination.awaitWindow().then(win => {\n proxyWindowMethods.del(id);\n let methods = methodStore.getOrSet(win, () => ({}));\n methods[id] = { domain, val };\n });\n } else {\n // $FlowFixMe\n let methods = methodStore.getOrSet(destination, () => ({}));\n methods[id] = { domain, val };\n }\n\n return serializeType(SERIALIZATION_TYPE.CROSS_DOMAIN_FUNCTION, { id, name: val.name || key });\n}\n\nexport function deserializeFunction<T>(source : CrossDomainWindowType | ProxyWindow, origin : string, { id, name } : { id : string, name : string }) : (...args : $ReadOnlyArray<mixed>) => ZalgoPromise<T> {\n\n function innerWrapper<X : mixed>(args : $ReadOnlyArray<mixed>, opts? : Object = {}) : ZalgoPromise<X> {\n return ZalgoPromise.try(() => {\n // $FlowFixMe\n return ProxyWindow.isProxyWindow(source) ? source.awaitWindow() : source;\n }).then(win => {\n return global.send(win, MESSAGE_NAME.METHOD, { id, name, args }, { domain: origin, ...opts });\n });\n }\n\n function crossDomainFunctionWrapper<X : mixed>() : ZalgoPromise<X> {\n return innerWrapper(Array.prototype.slice.call(arguments))\n .then(({ data }) => data.result);\n }\n\n crossDomainFunctionWrapper.fireAndForget = function crossDomainFireAndForgetFunctionWrapper<X : mixed>() : ZalgoPromise<X> {\n return innerWrapper(Array.prototype.slice.call(arguments), { fireAndForget: true });\n };\n\n crossDomainFunctionWrapper.__name__ = name;\n crossDomainFunctionWrapper.__xdomain__ = true;\n crossDomainFunctionWrapper.origin = origin;\n\n return crossDomainFunctionWrapper;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/serialize/function.js","/* @flow */\n\nimport { type CrossDomainWindowType, isWindow, type DomainMatcher } from 'cross-domain-utils/src';\nimport { TYPE, serialize, deserialize, type Thenable } from 'universal-serialize/src';\n\nimport { SERIALIZATION_TYPE } from '../conf';\n\nimport { serializeFunction, deserializeFunction, type SerializedFunction } from './function';\nimport { serializePromise, deserializePromise, type SerializedPromise } from './promise';\nimport { serializeWindow, deserializeWindow, type SerializedWindow, ProxyWindow } from './window';\n\nexport function serializeMessage<T : mixed>(destination : CrossDomainWindowType | ProxyWindow, domain : DomainMatcher, obj : T) : string {\n return serialize(obj, {\n [ TYPE.PROMISE ]: (val : Thenable, key : string) : SerializedPromise => serializePromise(destination, domain, val, key),\n [ TYPE.FUNCTION ]: (val : Function, key : string) : SerializedFunction => serializeFunction(destination, domain, val, key),\n [ TYPE.OBJECT ]: (val : CrossDomainWindowType) : Object | SerializedWindow => {\n return (isWindow(val) || ProxyWindow.isProxyWindow(val)) ? serializeWindow(destination, domain, val) : val;\n }\n });\n}\n\nexport function deserializeMessage<T : mixed>(source : CrossDomainWindowType | ProxyWindow, origin : string, message : string) : T {\n return deserialize(message, {\n [ SERIALIZATION_TYPE.CROSS_DOMAIN_ZALGO_PROMISE ]: (serializedPromise) => deserializePromise(source, origin, serializedPromise),\n [ SERIALIZATION_TYPE.CROSS_DOMAIN_FUNCTION ]: (serializedFunction) => deserializeFunction(source, origin, serializedFunction),\n [ SERIALIZATION_TYPE.CROSS_DOMAIN_WINDOW ]: (serializedWindow) => deserializeWindow(source, origin, serializedWindow)\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/serialize/serialize.js","/* @flow */\n\nimport { type CrossDomainWindowType, type DomainMatcher } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { serializeType, type CustomSerializedType, type Thenable } from 'universal-serialize/src';\n\nimport { SERIALIZATION_TYPE } from '../conf';\n\nimport { serializeFunction, type SerializedFunction } from './function';\nimport { ProxyWindow } from './window';\n\nexport type SerializedPromise = CustomSerializedType<typeof SERIALIZATION_TYPE.CROSS_DOMAIN_ZALGO_PROMISE, {\n then : SerializedFunction\n}>;\n\nexport function serializePromise(destination : CrossDomainWindowType | ProxyWindow, domain : DomainMatcher, val : Thenable, key : string) : SerializedPromise {\n return serializeType(SERIALIZATION_TYPE.CROSS_DOMAIN_ZALGO_PROMISE, {\n then: serializeFunction(destination, domain, (resolve, reject) => val.then(resolve, reject), key)\n });\n}\n\nexport function deserializePromise<T>(source : CrossDomainWindowType | ProxyWindow, origin : string, { then } : { then : Function }) : ZalgoPromise<T> {\n return new ZalgoPromise(then);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/serialize/promise.js","/* @flow */\n\nimport { isSameDomain, isSameTopWindow, isActuallySameDomain, getActualDomain, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { SEND_STRATEGY, PROTOCOL, WILDCARD, WINDOW_PROP } from '../../conf';\nimport { needsGlobalMessagingForBrowser } from '../../lib';\n\nexport let SEND_MESSAGE_STRATEGIES = {};\n\n\nSEND_MESSAGE_STRATEGIES[SEND_STRATEGY.POST_MESSAGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : (string | Array<string>)) => {\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(window, win);\n } catch (err) {\n return;\n }\n }\n\n let domains;\n\n if (Array.isArray(domain)) {\n domains = domain;\n } else if (typeof domain === 'string') {\n domains = [ domain ];\n } else {\n domains = [ WILDCARD ];\n }\n\n domains = domains.map(dom => {\n\n if (dom.indexOf(PROTOCOL.MOCK) === 0) {\n\n if (window.location.protocol === PROTOCOL.FILE) {\n return WILDCARD;\n }\n\n if (!isActuallySameDomain(win)) {\n throw new Error(`Attempting to send messsage to mock domain ${ dom }, but window is actually cross-domain`);\n }\n\n // $FlowFixMe\n return getActualDomain(win);\n }\n\n if (dom.indexOf(PROTOCOL.FILE) === 0) {\n return WILDCARD;\n }\n\n return dom;\n });\n\n domains.forEach(dom => {\n return win.postMessage(serializedMessage, dom);\n });\n};\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n\n let { sendBridgeMessage, needsBridgeForBrowser, isBridge } = require('../../bridge');\n\n SEND_MESSAGE_STRATEGIES[SEND_STRATEGY.BRIDGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : string) => {\n\n if (!needsBridgeForBrowser() && !isBridge()) {\n return;\n }\n\n if (isSameDomain(win)) {\n throw new Error(`Post message through bridge disabled between same domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use bridge to communicate between two different windows, not between frames`);\n }\n\n return sendBridgeMessage(win, domain, serializedMessage);\n };\n}\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__ || __POST_ROBOT__.__GLOBAL_MESSAGE_SUPPORT__) {\n \n SEND_MESSAGE_STRATEGIES[SEND_STRATEGY.GLOBAL] = (win : CrossDomainWindowType, serializedMessage : string) => {\n\n if (!needsGlobalMessagingForBrowser()) {\n return;\n }\n\n if (!isSameDomain(win)) {\n throw new Error(`Post message through global disabled between different domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use global to communicate between two different windows, not between frames`);\n }\n\n // $FlowFixMe\n let foreignGlobal = win[WINDOW_PROP.POSTROBOT];\n\n if (!foreignGlobal) {\n throw new Error(`Can not find postRobot global on foreign window`);\n }\n\n return foreignGlobal.receiveMessage({\n source: window,\n origin: getDomain(),\n data: serializedMessage\n });\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/drivers/send/strategies.js","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { uniqueID, stringifyError } from 'belter/src';\n\nimport { MESSAGE_TYPE, CONFIG, MESSAGE_NAME, WILDCARD, WINDOW_PROP } from '../../conf';\nimport { serializeMessage } from '../../serialize';\nimport type { Message } from '../types';\n\nimport { SEND_MESSAGE_STRATEGIES } from './strategies';\n\nfunction logMessage(domain : string | Array<string>, message : Message) {\n if (__DEBUG__) {\n let level;\n\n if (Object.keys(MESSAGE_NAME).map(key => MESSAGE_NAME[key]).indexOf(message.name) !== -1 || message.type === MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n\n // eslint-disable-next-line no-console\n if (typeof console !== 'undefined' && typeof console[level] === 'function') {\n // eslint-disable-next-line no-console\n console[level]('postrobot_send', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', domain || WILDCARD, '\\n\\n', message);\n }\n }\n}\n\nexport function sendMessage(win : CrossDomainWindowType, domain : string | Array<string>, message : Message) : ZalgoPromise<void> {\n return ZalgoPromise.try(() => {\n\n if (isWindowClosed(win)) {\n throw new Error('Window is closed');\n }\n\n logMessage(domain, message);\n\n const serializedMessage = serializeMessage(win, domain, {\n [ WINDOW_PROP.POSTROBOT ]: {\n id: uniqueID(),\n ...message\n }\n });\n\n\n let messages = [];\n\n return ZalgoPromise.map(Object.keys(SEND_MESSAGE_STRATEGIES), strategyName => {\n\n return ZalgoPromise.try(() => {\n\n if (!CONFIG.ALLOWED_POST_MESSAGE_METHODS[strategyName]) {\n throw new Error(`Strategy disallowed: ${ strategyName }`);\n }\n\n return SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n\n }).then(() => {\n messages.push(`${ strategyName }: success`);\n return true;\n }, err => {\n messages.push(`${ strategyName }: ${ stringifyError(err) }\\n`);\n return false;\n });\n\n }).then(results => {\n\n let success = results.some(Boolean);\n let status = `${ message.type } ${ message.name } ${ success ? 'success' : 'error' }:\\n - ${ messages.join('\\n - ') }\\n`;\n\n if (!success) {\n throw new Error(status);\n }\n });\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/drivers/send/index.js","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { matchDomain, type CrossDomainWindowType, type DomainMatcher } from 'cross-domain-utils/src';\nimport { isRegex, getOrSet } from 'belter/src';\n\nimport { global, globalStore, windowStore } from '../global';\nimport { WILDCARD } from '../conf';\n\nlet responseListeners = globalStore('responseListeners');\nlet requestListeners = windowStore('requestListeners');\nlet erroredResponseListeners = globalStore('erroredResponseListeners');\n\nexport function resetListeners() {\n responseListeners.reset();\n erroredResponseListeners.reset();\n}\n\nglobal.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new (function WindowWildcard() { /* pass */ })();\n\nconst __DOMAIN_REGEX__ = '__domain_regex__';\n\nexport type RequestListenerType = {\n handler : ({ source : CrossDomainWindowType, origin : string, data : mixed }) => (mixed | ZalgoPromise<mixed>),\n handleError : (err : mixed) => void,\n window : ?CrossDomainWindowType,\n name : string,\n domain : DomainMatcher\n};\n\nexport type ResponseListenerType = {\n name : string,\n window : CrossDomainWindowType,\n domain : DomainMatcher,\n respond : (err : ?mixed, result : ?mixed) => void,\n ack? : ?boolean\n};\n\nexport function addResponseListener(hash : string, listener : ResponseListenerType) {\n responseListeners.set(hash, listener);\n}\n\nexport function getResponseListener(hash : string) : ?ResponseListenerType {\n return responseListeners.get(hash);\n}\n\nexport function deleteResponseListener(hash : string) {\n responseListeners.del(hash);\n}\n\nexport function markResponseListenerErrored(hash : string) {\n erroredResponseListeners.set(hash, true);\n}\n\nexport function isResponseListenerErrored(hash : string) : boolean {\n return erroredResponseListeners.has(hash);\n}\n\nexport function getRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp) }) : ?RequestListenerType {\n\n if (win === WILDCARD) {\n win = null;\n }\n\n if (domain === WILDCARD) {\n domain = null;\n }\n\n if (!name) {\n throw new Error(`Name required to get request listener`);\n }\n\n for (let winQualifier of [ win, global.WINDOW_WILDCARD ]) {\n if (!winQualifier) {\n continue;\n }\n\n let nameListeners = requestListeners.get(winQualifier);\n\n if (!nameListeners) {\n continue;\n }\n\n let domainListeners = nameListeners[name];\n\n if (!domainListeners) {\n continue;\n }\n\n if (domain && typeof domain === 'string') {\n if (domainListeners[domain]) {\n return domainListeners[domain];\n }\n\n if (domainListeners[__DOMAIN_REGEX__]) {\n for (let { regex, listener } of domainListeners[__DOMAIN_REGEX__]) {\n if (matchDomain(regex, domain)) {\n return listener;\n }\n }\n }\n }\n\n if (domainListeners[WILDCARD]) {\n return domainListeners[WILDCARD];\n }\n }\n}\n\nexport function addRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?DomainMatcher }, listener : RequestListenerType) : { cancel : () => void } {\n\n if (!name || typeof name !== 'string') {\n throw new Error(`Name required to add request listener`);\n }\n\n if (Array.isArray(win)) {\n let listenersCollection = [];\n\n for (let item of win) {\n listenersCollection.push(addRequestListener({ name, domain, win: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n if (Array.isArray(domain)) {\n let listenersCollection = [];\n\n for (let item of domain) {\n listenersCollection.push(addRequestListener({ name, win, domain: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n let existingListener = getRequestListener({ name, win, domain });\n\n if (!win || win === WILDCARD) {\n win = global.WINDOW_WILDCARD;\n }\n\n domain = domain || WILDCARD;\n\n if (existingListener) {\n if (win && domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (win) {\n throw new Error(`Request listener already exists for ${ name } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() }`);\n } else {\n throw new Error(`Request listener already exists for ${ name }`);\n }\n }\n\n let nameListeners = requestListeners.getOrSet(win, () => ({}));\n // $FlowFixMe\n let domainListeners = getOrSet(nameListeners, name, () => ({}));\n\n let strDomain = domain.toString();\n\n let regexListeners;\n let regexListener;\n\n if (isRegex(domain)) {\n regexListeners = getOrSet(domainListeners, __DOMAIN_REGEX__, () => []);\n regexListener = { regex: domain, listener };\n regexListeners.push(regexListener);\n } else {\n domainListeners[strDomain] = listener;\n }\n\n return {\n cancel() {\n delete domainListeners[strDomain];\n\n if (regexListener) {\n regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n\n if (!regexListeners.length) {\n delete domainListeners[__DOMAIN_REGEX__];\n }\n }\n\n if (!Object.keys(domainListeners).length) {\n // $FlowFixMe\n delete nameListeners[name];\n }\n\n // $FlowFixMe\n if (win && !Object.keys(nameListeners).length) {\n requestListeners.del(win);\n }\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/drivers/listeners.js","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isWindowClosed, matchDomain, stringifyDomainPattern, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { noop } from 'belter/src';\n\nimport { MESSAGE_TYPE, MESSAGE_ACK } from '../../conf';\nimport { sendMessage } from '../send';\nimport { getRequestListener, getResponseListener, deleteResponseListener, isResponseListenerErrored } from '../listeners';\nimport type { RequestMessage, AckResponseMessage, SuccessResponseMessage, ErrorResponseMessage } from '../types';\n\nexport let RECEIVE_MESSAGE_TYPES = {\n\n [ MESSAGE_TYPE.REQUEST ](source : CrossDomainWindowType, origin : string, message : RequestMessage) : ZalgoPromise<void> {\n\n let options = getRequestListener({ name: message.name, win: source, domain: origin });\n\n function sendResponse(type : $Values<typeof MESSAGE_TYPE>, data = {}) : ZalgoPromise<void> {\n\n if (message.fireAndForget || isWindowClosed(source)) {\n return ZalgoPromise.resolve();\n }\n\n // $FlowFixMe\n return sendMessage(source, origin, {\n type,\n hash: message.hash,\n name: message.name,\n ...data\n });\n }\n\n return ZalgoPromise.all([\n\n sendResponse(MESSAGE_TYPE.ACK),\n\n ZalgoPromise.try(() => {\n\n if (!options) {\n throw new Error(`No handler found for post message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Request origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n let data = message.data;\n\n return options.handler({ source, origin, data });\n\n }).then(data => {\n return sendResponse(MESSAGE_TYPE.RESPONSE, {\n ack: MESSAGE_ACK.SUCCESS,\n data\n });\n\n }, error => {\n return sendResponse(MESSAGE_TYPE.RESPONSE, {\n ack: MESSAGE_ACK.ERROR,\n error\n });\n })\n\n ]).then(noop).catch(err => {\n if (options && options.handleError) {\n return options.handleError(err);\n } else {\n throw err;\n }\n });\n },\n\n [ MESSAGE_TYPE.ACK ](source : CrossDomainWindowType, origin : string, message : AckResponseMessage) {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message ack for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Ack origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n options.ack = true;\n },\n\n [ MESSAGE_TYPE.RESPONSE ](source : CrossDomainWindowType, origin : string, message : SuccessResponseMessage | ErrorResponseMessage) : void | ZalgoPromise<void> {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message response for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Response origin ${ origin } does not match domain ${ stringifyDomainPattern(options.domain) }`);\n }\n\n deleteResponseListener(message.hash);\n\n if (message.ack === MESSAGE_ACK.ERROR) {\n return options.respond(message.error, null);\n } else if (message.ack === MESSAGE_ACK.SUCCESS) {\n let data = message.data;\n return options.respond(null, { source, origin, data });\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/drivers/receive/types.js","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType, getDomain } from 'cross-domain-utils/src';\nimport { addEventListener, noop } from 'belter/src';\n\nimport { MESSAGE_NAME, WINDOW_PROP, MESSAGE_TYPE } from '../../conf';\nimport { markWindowKnown } from '../../lib';\nimport { deserializeMessage } from '../../serialize';\nimport { global, globalStore } from '../../global';\n\nimport { RECEIVE_MESSAGE_TYPES } from './types';\n\nlet receivedMessages = globalStore('receivedMessages');\n\ntype MessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : string\n};\n\nfunction parseMessage(message : string, source : CrossDomainWindowType, origin : string) : ?Object {\n\n let parsedMessage;\n\n try {\n parsedMessage = deserializeMessage(source, origin, message);\n } catch (err) {\n return;\n }\n\n if (!parsedMessage) {\n return;\n }\n\n if (typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n parsedMessage = parsedMessage[WINDOW_PROP.POSTROBOT];\n\n if (!parsedMessage || typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n if (!parsedMessage.type || typeof parsedMessage.type !== 'string') {\n return;\n }\n\n if (!RECEIVE_MESSAGE_TYPES[parsedMessage.type]) {\n return;\n }\n\n return parsedMessage;\n}\n\n\nexport function receiveMessage(event : MessageEvent) {\n\n if (!window || window.closed) {\n throw new Error(`Message recieved in closed window`);\n }\n\n try {\n if (!event.source) {\n return;\n }\n } catch (err) {\n return;\n }\n\n let { source, origin, data } = event;\n\n if (__TEST__) {\n // $FlowFixMe\n origin = getDomain(source);\n }\n\n let message = parseMessage(data, source, origin);\n\n if (!message) {\n return;\n }\n\n markWindowKnown(source);\n\n if (receivedMessages.has(message.id)) {\n return;\n }\n\n receivedMessages.set(message.id, true);\n\n if (__DEBUG__) {\n let level;\n\n if (Object.keys(MESSAGE_NAME).map(key => MESSAGE_NAME[key]).indexOf(message.name) !== -1 || message.type === MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n\n // eslint-disable-next-line no-console\n if (typeof console !== 'undefined' && typeof console[level] === 'function') {\n // eslint-disable-next-line no-console\n console[level]('postrobot_receive', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', origin, '\\n\\n', message);\n }\n }\n\n if (isWindowClosed(source) && !message.fireAndForget) {\n return;\n }\n\n RECEIVE_MESSAGE_TYPES[message.type](source, origin, message);\n}\n\nexport function messageListener(event : { source : CrossDomainWindowType, origin : string, data : string, sourceElement : CrossDomainWindowType, originalEvent? : { origin : string } }) {\n\n try {\n noop(event.source);\n } catch (err) {\n return;\n }\n\n // $FlowFixMe\n let messageEvent : MessageEvent = {\n source: event.source || event.sourceElement,\n origin: event.origin || (event.originalEvent && event.originalEvent.origin),\n data: event.data\n };\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(messageEvent.source, window);\n } catch (err) {\n return;\n }\n }\n\n receiveMessage(messageEvent);\n}\n\nexport function listenForMessages() {\n // $FlowFixMe\n addEventListener(window, 'message', messageListener);\n}\n\nglobal.receiveMessage = receiveMessage;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/drivers/receive/index.js","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getAncestor, isAncestor, isWindowClosed, getDomain, matchDomain, type CrossDomainWindowType, type DomainMatcher } from 'cross-domain-utils/src';\nimport { uniqueID, isRegex } from 'belter/src';\n\n\nimport { CONFIG, MESSAGE_TYPE, WILDCARD } from '../conf';\nimport { sendMessage, addResponseListener, deleteResponseListener, markResponseListenerErrored, type ResponseListenerType } from '../drivers';\nimport { awaitWindowHello, sayHello, isWindowKnown } from '../lib';\nimport { global, windowStore } from '../global';\n\nexport let requestPromises = windowStore('requestPromises');\n\ntype WindowResolverType = CrossDomainWindowType | string | HTMLIFrameElement;\n\ntype RequestOptionsType = {\n window? : ?WindowResolverType,\n domain? : ?DomainMatcher,\n name? : ?string,\n data? : ?Object,\n fireAndForget? : ?boolean,\n timeout? : ?number\n};\n\ntype ResponseMessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : Object\n};\n\nexport function request(options : RequestOptionsType) : ZalgoPromise<ResponseMessageEvent> {\n\n let prom = ZalgoPromise.try(() => {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n let name = options.name;\n let targetWindow : ?CrossDomainWindowType;\n let domain : DomainMatcher;\n\n if (typeof options.window === 'string') {\n let el = document.getElementById(options.window);\n\n if (!el) {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be a valid element id`);\n }\n\n if (el.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n // $FlowFixMe\n if (!el.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n // $FlowFixMe\n targetWindow = el.contentWindow;\n\n } else if (options.window instanceof HTMLIFrameElement) {\n\n if (options.window.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n if (options.window && !options.window.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n if (options.window && options.window.contentWindow) {\n // $FlowFixMe\n targetWindow = options.window.contentWindow;\n }\n } else {\n targetWindow = options.window;\n }\n\n if (!targetWindow) {\n throw new Error('Expected options.window to be a window object, iframe, or iframe element id.');\n }\n\n const win = targetWindow;\n\n domain = options.domain || WILDCARD;\n\n let hash = `${ options.name }_${ uniqueID() }`;\n\n if (isWindowClosed(win)) {\n throw new Error('Target window is closed');\n }\n\n let hasResult = false;\n\n let reqPromises = requestPromises.getOrSet(win, () => []);\n\n let requestPromise = ZalgoPromise.try(() => {\n\n if (isAncestor(window, win)) {\n return awaitWindowHello(win, options.timeout || CONFIG.CHILD_WINDOW_TIMEOUT);\n }\n\n }).then(({ domain: origin } = {}) => {\n\n if (isRegex(domain) && !origin) {\n return sayHello(win);\n }\n\n }).then(({ domain: origin } = {}) => {\n\n if (isRegex(domain)) {\n if (!matchDomain(domain, origin)) {\n throw new Error(`Remote window domain ${ origin } does not match regex: ${ domain.toString() }`);\n }\n\n domain = origin;\n }\n\n if (typeof domain !== 'string' && !Array.isArray(domain)) {\n throw new TypeError(`Expected domain to be a string or array`);\n }\n\n const actualDomain = domain;\n\n return new ZalgoPromise((resolve, reject) => {\n\n let responseListener : ResponseListenerType;\n\n if (!options.fireAndForget) {\n responseListener = {\n name,\n window: win,\n domain: actualDomain,\n respond(err, result) {\n if (!err) {\n hasResult = true;\n reqPromises.splice(reqPromises.indexOf(requestPromise, 1));\n }\n\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n }\n };\n\n addResponseListener(hash, responseListener);\n }\n\n sendMessage(win, actualDomain, {\n type: MESSAGE_TYPE.REQUEST,\n hash,\n name,\n data: options.data,\n fireAndForget: Boolean(options.fireAndForget)\n }).catch(reject);\n\n if (options.fireAndForget) {\n return resolve();\n }\n\n let totalAckTimeout = isWindowKnown(win) ? CONFIG.ACK_TIMEOUT_KNOWN : CONFIG.ACK_TIMEOUT;\n let totalResTimeout = options.timeout || CONFIG.RES_TIMEOUT;\n\n let ackTimeout = totalAckTimeout;\n let resTimeout = totalResTimeout;\n\n let cycleTime = 100;\n\n let cycle = () => {\n\n if (hasResult) {\n return;\n }\n\n if (isWindowClosed(win)) {\n\n if (!responseListener.ack) {\n return reject(new Error(`Window closed for ${ name } before ack`));\n }\n\n return reject(new Error(`Window closed for ${ name } before response`));\n }\n\n ackTimeout = Math.max(ackTimeout - cycleTime, 0);\n if (resTimeout !== -1) {\n resTimeout = Math.max(resTimeout - cycleTime, 0);\n }\n\n let hasAck = responseListener.ack;\n\n if (hasAck) {\n\n if (resTimeout === -1) {\n return;\n }\n\n cycleTime = Math.min(resTimeout, 2000);\n\n } else if (ackTimeout === 0) {\n return reject(new Error(`No ack for postMessage ${ name } in ${ getDomain() } in ${ totalAckTimeout }ms`));\n\n } else if (resTimeout === 0) {\n return reject(new Error(`No response for postMessage ${ name } in ${ getDomain() } in ${ totalResTimeout }ms`));\n }\n\n setTimeout(cycle, cycleTime);\n };\n\n setTimeout(cycle, cycleTime);\n });\n });\n\n requestPromise.catch(() => {\n markResponseListenerErrored(hash);\n deleteResponseListener(hash);\n });\n\n reqPromises.push(requestPromise);\n\n return requestPromise;\n });\n\n return prom;\n}\n\nexport function send(window : WindowResolverType, name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise<ResponseMessageEvent> {\n\n options = options || {};\n options.window = window;\n options.name = name;\n options.data = data;\n\n return request(options);\n}\n\nexport function sendToParent(name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise<ResponseMessageEvent> {\n\n let win = getAncestor();\n\n if (!win) {\n return new ZalgoPromise((resolve, reject) => reject(new Error('Window does not have a parent')));\n }\n\n return send(win, name, data, options);\n}\n\nexport function client(options : RequestOptionsType = {}) : { send : (string, ?Object) => ZalgoPromise<ResponseMessageEvent> } {\n\n if (!options.window) {\n throw new Error(`Expected options.window`);\n }\n\n const win = options.window;\n\n return {\n send(name : string, data : ?Object) : ZalgoPromise<ResponseMessageEvent> {\n return send(win, name, data, options);\n }\n };\n}\n\nglobal.send = send;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/public/client.js","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType, type DomainMatcher } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { once as onceFunction, safeInterval } from 'belter/src';\n\nimport { addRequestListener, type RequestListenerType } from '../drivers';\nimport { WILDCARD } from '../conf';\nimport { global } from '../global';\n\ntype ErrorHandlerType = (err : mixed) => void;\ntype HandlerType = ({ source : CrossDomainWindowType, origin : string, data : mixed }) => (void | mixed | ZalgoPromise<mixed>);\n\ntype ServerOptionsType = {\n handler? : ?HandlerType,\n errorHandler? : ?ErrorHandlerType,\n window? : CrossDomainWindowType,\n name? : ?string,\n domain? : ?DomainMatcher,\n once? : ?boolean,\n errorOnClose? : ?boolean\n};\n\nexport function listen(options : ServerOptionsType) : { cancel : () => void } {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n if (!options.handler) {\n throw new Error('Expected options.handler');\n }\n\n const name = options.name;\n const win = options.window;\n const domain = options.domain;\n\n let listenerOptions : RequestListenerType = {\n handler: options.handler,\n handleError: options.errorHandler || (err => {\n throw err;\n }),\n window: win,\n domain: domain || WILDCARD,\n name\n };\n\n let requestListener = addRequestListener({ name, win, domain }, listenerOptions);\n\n if (options.once) {\n let handler = listenerOptions.handler;\n listenerOptions.handler = onceFunction(function listenOnce() : mixed | ZalgoPromise<mixed> {\n requestListener.cancel();\n return handler.apply(this, arguments);\n });\n }\n\n if (listenerOptions.window && options.errorOnClose) {\n let interval = safeInterval(() => {\n if (win && typeof win === 'object' && isWindowClosed(win)) {\n interval.cancel();\n listenerOptions.handleError(new Error('Post message target window is closed'));\n }\n }, 50);\n }\n\n return {\n cancel() {\n requestListener.cancel();\n }\n };\n}\n\nexport function on(name : string, options : ServerOptionsType | HandlerType, handler : ?HandlerType) : { cancel : () => void } {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n\n options.name = name;\n options.handler = handler || options.handler;\n\n return listen(options);\n}\n\nexport function once(name : string, options : ?(ServerOptionsType | HandlerType) = {}, handler : ?HandlerType) : ZalgoPromise<{ source : mixed, origin : string, data : Object }> {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n handler = handler || options.handler;\n let errorHandler = options.errorHandler;\n\n let promise = new ZalgoPromise((resolve, reject) => {\n\n options = options || {};\n\n options.name = name;\n options.once = true;\n\n options.handler = (event) => {\n resolve(event);\n if (handler) {\n return handler(event);\n }\n };\n\n options.errorHandler = (err) => {\n reject(err);\n if (errorHandler) {\n return errorHandler(err);\n }\n };\n });\n\n let onceListener = listen(options);\n promise.cancel = onceListener.cancel;\n\n return promise;\n}\n\nexport function listener(options : ServerOptionsType = {}) : { on : (name : string, handler : HandlerType) => { cancel : () => void } } {\n\n return {\n on(name : string, handler : HandlerType) : { cancel : () => void } {\n return on(name, options, handler);\n }\n };\n}\n\nglobal.on = on;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/public/server.js","/* @flow */\n\nimport { WINDOW_PROP } from '../conf';\nimport { messageListener } from '../drivers';\n\nexport { CONFIG } from '../conf';\n\nexport function disable() {\n delete window[WINDOW_PROP.POSTROBOT];\n window.removeEventListener('message', messageListener);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/public/config.js","/* @flow */\n\nimport { getAncestor } from 'cross-domain-utils/src';\n\nexport * from './client';\nexport * from './server';\nexport * from './config';\n\nexport let parent = getAncestor();\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/public/index.js","/* @flow */\n\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { requestPromises } from './public';\n\nexport function cleanUpWindow(win : CrossDomainWindowType) {\n for (let promise of requestPromises.get(win, [])) {\n promise.reject(new Error(`Window cleaned up before response`));\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/clean.js","/* @flow */\n\nimport { initHello } from './lib';\nimport { listenForMessages } from './drivers';\nimport { global } from './global';\n\nexport * from './public';\nexport { markWindowKnown } from './lib';\nexport { serializeMessage, deserializeMessage, ProxyWindow } from './serialize';\nexport { cleanUpWindow } from './clean';\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport let bridge = __POST_ROBOT__.__IE_POPUP_SUPPORT__ ? require('./bridge/interface') : null;\n\nif (!global.initialized) {\n global.initialized = true;\n\n listenForMessages();\n\n if (bridge) {\n bridge.openTunnelToOpener();\n }\n\n initHello();\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/interface.js","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/index.js","/* @flow */\n\nexport type NodePropsType = { [string] : mixed };\n// eslint-disable-next-line no-use-before-define\nexport type NodeType = ElementNode | TextNode | FragmentNode;\n// eslint-disable-next-line no-use-before-define\nexport type NodeChildrenType = $ReadOnlyArray<ElementNode | TextNode>;\nexport type NodeRenderer<T> = (string, NodePropsType, NodeChildrenType) => T;\nexport type NodeRendererFactory<T, O = Object> = (O | void) => NodeRenderer<T>;\n\nclass Node {\n isElementNode() : boolean {\n return false;\n }\n\n isTextNode() : boolean {\n return false;\n }\n\n isFragmentNode() : boolean {\n return false;\n }\n}\n\nexport class ElementNode extends Node {\n name : string\n props : NodePropsType\n children : NodeChildrenType\n onRender : ?<T>(T) => void // eslint-disable-line no-undef\n\n constructor(name : string, props : NodePropsType, children : NodeChildrenType) {\n super();\n this.name = name;\n this.props = props;\n this.children = children;\n\n if (typeof props.onRender === 'function') {\n this.onRender = props.onRender;\n delete props.onRender;\n }\n }\n\n getTag() : string {\n return this.name;\n }\n\n isTag(name : string) : boolean {\n return name === this.name;\n }\n\n isElementNode() : boolean {\n return true;\n }\n\n render<T>(renderer : NodeRenderer<T>) : T {\n const element = renderer(this.name, this.props, this.children);\n if (this.onRender) {\n this.onRender(element);\n }\n return element;\n }\n\n getText() : string {\n throw new Error(`Can not get text of an element node`);\n }\n}\n\nexport class TextNode extends Node {\n text : string\n\n constructor(text : string) {\n super();\n this.text = text;\n }\n\n getTag() : string {\n throw new Error(`Can not get tag of text node`);\n }\n\n isTag(name : string) : boolean { // eslint-disable-line no-unused-vars\n throw new Error(`Can not check tag of text node`);\n }\n\n isTextNode() : boolean {\n return true;\n }\n\n render<T>(renderer : NodeRenderer<T>) : T { // eslint-disable-line no-unused-vars\n throw new Error(`Can not render a text node`);\n }\n\n getText() : string {\n return this.text;\n }\n}\n\nexport class FragmentNode extends Node {\n children : NodeChildrenType\n\n constructor(children : NodeChildrenType) {\n super();\n this.children = children;\n }\n\n getTag() : string {\n throw new Error(`Can not get tag of fragment node`);\n }\n\n isTag(name : string) : boolean { // eslint-disable-line no-unused-vars\n throw new Error(`Can not check tag of fragment node`);\n }\n\n isFragmentNode() : boolean {\n return true;\n }\n\n render<T>(renderer : NodeRenderer<T>) : $ReadOnlyArray<T> { // eslint-disable-line no-unused-vars\n throw new Error(`Can not render a fragment node`);\n }\n\n getText() : string {\n throw new Error(`Can not get text of a fragment node`);\n }\n}\n\ntype JsxChildType = $ReadOnlyArray<JsxChildType> | NodeType | string;\ntype NullableJsxChildType = $ReadOnlyArray<NullableJsxChildType> | NodeType | string | null | void;\n\nfunction normalizeChild(child : NullableJsxChildType) : NodeType | void {\n if (typeof child === 'string') {\n return new TextNode(child);\n\n } else if (child instanceof ElementNode || child instanceof TextNode || child instanceof FragmentNode) {\n return child;\n\n } else if (Array.isArray(child)) {\n return new FragmentNode(normalizeChildren(child)); // eslint-disable-line no-use-before-define\n\n } else if (child === null || typeof child === 'undefined') {\n return; // eslint-disable-line no-useless-return\n\n } else {\n throw new Error(`Child node must be string or instance of jsx-pragmatic node; got ${ typeof child }`);\n }\n}\n\nfunction normalizeChildren(children : $ReadOnlyArray<NullableJsxChildType>) : NodeChildrenType {\n const result = [];\n\n for (const child of children) {\n const normalizedChild = normalizeChild(child);\n\n if (!normalizedChild) {\n continue;\n }\n\n if (normalizedChild instanceof FragmentNode) {\n for (const subchild of normalizedChild.children) {\n result.push(subchild);\n }\n } else {\n result.push(normalizedChild);\n }\n }\n\n return result;\n}\n\ntype JSXElementBuilder<P : NodePropsType> = (\n element : string,\n props : P | null,\n ...children : $ReadOnlyArray<NullableJsxChildType>\n) => ElementNode;\n\ntype JSXElementFunctionBuilder<P : NodePropsType> = (\n element : (P, $ReadOnlyArray<JsxChildType>) => ElementNode,\n props : P | null,\n ...children : $ReadOnlyArray<NullableJsxChildType>\n) => ElementNode;\n\ntype JSXTextFunctionBuilder<P : NodePropsType> = (\n element : (P, $ReadOnlyArray<JsxChildType>) => string | TextNode,\n props : P | null,\n ...children : $ReadOnlyArray<NullableJsxChildType>\n) => TextNode;\n\ntype JSXFragmentFunctionBuilder<P : NodePropsType> = (\n element : (P, $ReadOnlyArray<JsxChildType>) => FragmentNode | $ReadOnlyArray<NullableJsxChildType>,\n props : P | null,\n ...children : $ReadOnlyArray<NullableJsxChildType>\n) => FragmentNode;\n\ntype JSXEmptyFunctionBuilder<P : NodePropsType> = (\n element : (P, $ReadOnlyArray<JsxChildType>) => null | void,\n props : P | null,\n ...children : $ReadOnlyArray<NullableJsxChildType>\n) => void;\n\ntype JSXBuilder<P : NodePropsType> = JSXElementBuilder<P> & JSXElementFunctionBuilder<P> & JSXTextFunctionBuilder<P> & JSXFragmentFunctionBuilder<P> & JSXEmptyFunctionBuilder<P>;\n\nexport const node : JSXBuilder<*> = <P : NodePropsType>(element, props : P | null, ...children) => {\n if (typeof element === 'string') {\n return new ElementNode(element, props || {}, normalizeChildren(children));\n }\n\n if (typeof element === 'function') {\n // $FlowFixMe\n return normalizeChild(element(props || {}, normalizeChildren(children)));\n }\n \n throw new TypeError(`Expected jsx Element to be a string or a function`);\n};\n\nexport function Fragment(props : NodePropsType, ...children : $ReadOnlyArray<JsxChildType>) : FragmentNode {\n \n if (props && Object.keys(props).length) {\n throw new Error(`Do not pass props to Fragment`);\n }\n\n return new FragmentNode(normalizeChildren(children));\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/jsx-pragmatic/src/node.js","/* @flow */\n\nimport type { NodeChildrenType, NodePropsType, NodeRendererFactory, NodeRenderer } from '../node';\n\nconst ELEMENT_TAG = {\n HTML: 'html',\n IFRAME: 'iframe',\n SCRIPT: 'script',\n NODE: 'node',\n DEFAULT: 'default'\n};\n\nconst ELEMENT_PROP = {\n INNER_HTML: 'innerHTML',\n EL: 'el'\n};\n\nconst DOM_EVENT = {\n onBlur: 'blur',\n onCancel: 'cancel',\n onClick: 'click',\n onClose: 'close',\n onContextMenu: 'contextMenu',\n onCopy: 'copy',\n onCut: 'cut',\n onAuxClick: 'auxClick',\n onDoubleClick: 'doubleClick',\n onDragEnd: 'dragEnd',\n onDragStart: 'dragStart',\n onDrop: 'drop',\n onFocus: 'focus',\n onInput: 'input',\n onInvalid: 'invalid',\n onKeyDown: 'keyDown',\n onKeyPress: 'keyPress',\n onKeyUp: 'keyUp',\n onMouseDown: 'mouseDown',\n onMouseUp: 'mouseUp',\n onPaste: 'paste',\n onPause: 'pause',\n onPlay: 'play',\n onPointerCancel: 'pointerCancel',\n onPointerDown: 'pointerDown',\n onPointerUp: 'pointerUp',\n onRateChange: 'rateChange',\n onReset: 'reset',\n onSeeked: 'seeked',\n onSubmit: 'submit',\n onTouchCancel: 'touchCancel',\n onTouchEnd: 'touchEnd',\n onTouchStart: 'touchStart',\n onVolumeChange: 'volumeChange',\n onAbort: 'abort',\n onAnimationEnd: 'animationEnd',\n onAnimationIteration: 'animationIteration',\n onAnimationStart: 'animationStart',\n onCanPlay: 'canPlay',\n onCanPlayThrough: 'canPlayThrough',\n onDrag: 'drag',\n onDragEnter: 'dragEnter',\n onDragExit: 'dragExit',\n onDragLeave: 'dragLeave',\n onDragOver: 'dragOver',\n onDurationChange: 'durationChange',\n onEmptied: 'emptied',\n onEncrypted: 'encrypted',\n onEnded: 'ended',\n onError: 'error',\n onGotPointerCapture: 'gotPointerCapture',\n onLoad: 'load',\n onLoadedData: 'loadedData',\n onLoadedMetadata: 'loadedMetadata',\n onLoadStart: 'loadStart',\n onLostPointerCapture: 'lostPointerCapture',\n onMouseMove: 'mouseMove',\n onMouseOut: 'mouseOut',\n onMouseOver: 'mouseOver',\n onPlaying: 'playing',\n onPointerMove: 'pointerMove',\n onPointerOut: 'pointerOut',\n onPointerOver: 'pointerOver',\n onProgress: 'progress',\n onScroll: 'scroll',\n onSeeking: 'seeking',\n onStalled: 'stalled',\n onSuspend: 'suspend',\n onTimeUpdate: 'timeUpdate',\n onToggle: 'toggle',\n onTouchMove: 'touchMove',\n onTransitionEnd: 'transitionEnd',\n onWaiting: 'waiting',\n onWheel: 'wheel'\n};\n\nfunction fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (const script of el.querySelectorAll('script')) {\n const parentNode = script.parentNode;\n\n if (!parentNode) {\n continue;\n }\n\n const newScript = doc.createElement('script');\n // $FlowFixMe\n newScript.text = script.textContent;\n parentNode.replaceChild(newScript, script);\n }\n}\n\ntype CreateElementOptions = {|\n doc : Document,\n name : string,\n props : NodePropsType\n|};\n\nconst CREATE_ELEMENT : { [string] : (CreateElementOptions) => HTMLElement } = {\n\n [ ELEMENT_TAG.NODE ]: ({ props } : CreateElementOptions) => {\n if (!props[ELEMENT_PROP.EL]) {\n throw new Error(`Must pass ${ ELEMENT_PROP.EL } prop to ${ ELEMENT_TAG.NODE } element`);\n }\n\n if (Object.keys(props).length > 1) {\n throw new Error(`Must not pass any prop other than ${ ELEMENT_PROP.EL } to ${ ELEMENT_TAG.NODE } element`);\n }\n\n // $FlowFixMe\n return props[ELEMENT_PROP.EL];\n },\n\n [ ELEMENT_TAG.DEFAULT ]: ({ name, doc } : CreateElementOptions) => {\n return doc.createElement(name);\n }\n};\n\nfunction createElement({ doc, name, props } : CreateElementOptions) : HTMLElement {\n const elementCreator = CREATE_ELEMENT[name] || CREATE_ELEMENT[ELEMENT_TAG.DEFAULT];\n return elementCreator({ name, props, doc });\n}\n\ntype AddPropsOptions = {|\n el : HTMLElement,\n props : NodePropsType\n|};\n\nfunction addProps({ el, props } : AddPropsOptions) {\n for (const prop of Object.keys(props)) {\n const val = props[prop];\n\n if (val === null || typeof val === 'undefined' || prop === ELEMENT_PROP.EL || prop === ELEMENT_PROP.INNER_HTML) {\n continue;\n }\n\n if (DOM_EVENT.hasOwnProperty(prop)) {\n if (typeof val !== 'undefined' && typeof val !== 'function') {\n throw new TypeError(`Prop ${ prop } must be function`);\n }\n\n el.addEventListener(DOM_EVENT[prop], val);\n\n } else if (typeof val === 'string' || typeof val === 'number') {\n el.setAttribute(prop, val.toString());\n\n } else if (typeof val === 'boolean') {\n if (val === true) {\n el.setAttribute(prop, '');\n }\n\n } else {\n throw new TypeError(`Can not render prop ${ prop } of type ${ typeof val }`);\n }\n }\n}\n\ntype AddChildrenOptions = {|\n el : HTMLElement,\n name : string,\n children : NodeChildrenType,\n doc : Document,\n props : NodePropsType,\n domRenderer : NodeRenderer<HTMLElement>\n|};\n\nconst ADD_CHILDREN : { [string] : (AddChildrenOptions) => void } = {\n\n [ ELEMENT_TAG.IFRAME ]: ({ el, children } : AddChildrenOptions) => {\n const firstChild = children[0];\n\n if (children.length > 1 || !firstChild.isElementNode()) {\n throw new Error(`Expected only single element node as child of ${ ELEMENT_TAG.IFRAME } element`);\n }\n\n if (!firstChild.isTag(ELEMENT_TAG.HTML)) {\n throw new Error(`Expected element to be inserted into frame to be html, got ${ firstChild.getTag() }`);\n }\n \n el.addEventListener('load', () => {\n\n // $FlowFixMe\n const win = el.contentWindow;\n \n if (!win) {\n throw new Error(`Expected frame to have contentWindow`);\n }\n\n const doc = win.document;\n const docElement = doc.documentElement;\n\n while (docElement.children && docElement.children.length) {\n docElement.removeChild(docElement.children[0]);\n }\n\n // eslint-disable-next-line no-use-before-define\n const child = firstChild.render(dom({ doc }));\n \n while (child.children.length) {\n docElement.appendChild(child.children[0]);\n }\n });\n },\n\n [ ELEMENT_TAG.SCRIPT ]: ({ el, children } : AddChildrenOptions) => {\n const firstChild = children[0];\n\n if (children.length !== 1 || !firstChild.isTextNode()) {\n throw new Error(`Expected only single text node as child of ${ ELEMENT_TAG.SCRIPT } element`);\n }\n \n // $FlowFixMe\n el.text = firstChild.getText();\n },\n\n [ ELEMENT_TAG.DEFAULT ]: ({ el, children, doc, domRenderer } : AddChildrenOptions) => {\n for (const child of children) {\n if (child.isTextNode()) {\n el.appendChild(doc.createTextNode(child.getText()));\n } else {\n el.appendChild(child.render(domRenderer));\n }\n }\n }\n};\n\nfunction addChildren({ el, name, props, children, doc, domRenderer } : AddChildrenOptions) {\n if (props.hasOwnProperty(ELEMENT_PROP.INNER_HTML)) {\n\n if (children.length >= 1) {\n throw new Error(`Expected no children to be passed when ${ ELEMENT_PROP.INNER_HTML } prop is set`);\n }\n\n const html = props[ELEMENT_PROP.INNER_HTML];\n\n if (typeof html !== 'string') {\n throw new TypeError(`${ ELEMENT_PROP.INNER_HTML } prop must be string`);\n }\n\n if (name === ELEMENT_TAG.SCRIPT) {\n // $FlowFixMe\n el.text = html;\n } else {\n el.innerHTML = html;\n fixScripts(el, doc);\n }\n\n } else {\n const addChildrenToElement = ADD_CHILDREN[name] || ADD_CHILDREN[ELEMENT_TAG.DEFAULT];\n addChildrenToElement({ el, name, props, children, doc, domRenderer });\n }\n}\n\n\nexport const dom : NodeRendererFactory<HTMLElement> = ({ doc = document } : { doc? : Document } = {}) => {\n const domRenderer = (name, props, children) => {\n const el = createElement({ name, props, doc });\n addProps({ el, props });\n addChildren({ el, name, props, children, doc, domRenderer });\n return el;\n };\n\n return domRenderer;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/jsx-pragmatic/src/renderers/dom.js","/* @flow */\n\nexport function getCurrentScriptDir() : string {\n // eslint-disable-next-line no-console\n console.warn(`Do not use zoid.getCurrentScriptDir() in production -- browser support is limited`);\n\n // eslint-disable-next-line compat/compat\n if (document.currentScript) {\n // eslint-disable-next-line compat/compat\n return document.currentScript.src.split('/').slice(0, -1).join('/');\n }\n\n return '.';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/fn.js","/* @flow */\n\ntype Logger = {\n debug : (event : string, payload? : { [string] : ?string }) => void,\n info : (event : string, payload? : { [string] : ?string }) => void,\n warn : (event : string, payload? : { [string] : ?string }) => void,\n error : (event : string, payload? : { [string] : ?string }) => void\n};\n\nlet logger : ?Logger;\n\nexport function useLogger(newLogger : Logger) {\n logger = newLogger;\n}\n\nexport function info(name : string, event : string, payload : Object = {}) {\n if (logger) {\n logger.info(`xc_${ name }_${ event }`, payload);\n }\n}\n\n\n/* Log Warning\n -----------\n\n Log a warning\n*/\n\nexport function warn(name : string, event : string, payload : Object = {}) {\n if (logger) {\n logger.warn(`xc_${ name }_${ event }`, payload);\n }\n}\n\n\n/* Log Error\n ---------\n\n Log an error\n*/\n\nexport function error(name : string, event : string, payload : Object = {}) {\n if (logger) {\n logger.error(`xc_${ name }_${ event }`, payload);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/logger.js","/* @flow */\n\nimport { isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { __ZOID__ } from '../constants';\n\nexport function globalFor(win : CrossDomainWindowType) : ?Object {\n\n if (!isSameDomain(win)) {\n return;\n }\n\n if (!win[__ZOID__]) {\n win[__ZOID__] = {};\n }\n\n return win[__ZOID__];\n}\n\nexport function localGlobal() : Object {\n let global = globalFor(window);\n\n if (!global) {\n throw new Error(`Could not get local global`);\n }\n\n return global;\n}\n\nexport let global = localGlobal();\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/global.js","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { noop } from 'belter/src';\n\nexport type CleanupType = {\n set : <T : mixed>(string, T) => T, // eslint-disable-line no-undef\n register : (string | Function, ?Function) => void,\n hasTasks : () => boolean,\n all : () => ZalgoPromise<void>,\n run : (string) => ZalgoPromise<void>\n};\n\nexport function cleanup(obj : Object) : CleanupType {\n\n let tasks = [];\n let cleaned = false;\n\n return {\n\n set<T : mixed>(name : string, item : T) : T {\n\n if (cleaned) {\n return item;\n }\n\n obj[name] = item;\n this.register(() => {\n delete obj[name];\n });\n return item;\n },\n\n register(name : string | Function, method : ?Function) {\n\n if (typeof name === 'function') {\n method = name;\n name = '<anonymous-cleanup-handler>';\n }\n\n if (typeof method !== 'function') {\n throw new TypeError(`Expected to be passed function to clean.register`);\n }\n\n if (cleaned) {\n method();\n return;\n }\n\n tasks.push({\n complete: false,\n\n name,\n\n run() {\n\n if (this.complete) {\n return;\n }\n\n this.complete = true;\n\n if (method) {\n method();\n }\n }\n });\n },\n\n hasTasks() : boolean {\n return Boolean(tasks.filter(item => !item.complete).length);\n },\n\n all() : ZalgoPromise<void> {\n let results = [];\n\n cleaned = true;\n\n while (tasks.length) {\n results.push(tasks.pop().run());\n }\n\n return ZalgoPromise.all(results).then(() => { /* pass */ });\n },\n\n run(name : string) : ZalgoPromise<void> {\n let results = [];\n\n for (let item of tasks) {\n if (item.name === name) {\n results.push(item.run());\n }\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/clean.js","/* @flow */\n\nimport { memoize, stringifyError, base64encode, base64decode } from 'belter/src';\n\nimport { normalizeString } from '../lib';\nimport { ZOID } from '../constants';\n\nimport type { ChildPayload } from './parent';\n\nexport function buildChildWindowName(name : string, childPayload : ChildPayload) : string {\n let normalizedName = normalizeString(name);\n let encodedPayload = base64encode(JSON.stringify(childPayload));\n\n return `__${ ZOID }__${ normalizedName }__${ encodedPayload }__`;\n}\n\nexport let parseChildWindowName = memoize(() : ChildPayload => {\n if (!window.name) {\n throw new Error(`No window name`);\n }\n\n let [ , zoidcomp, name, encodedPayload ] = window.name.split('__');\n\n if (zoidcomp !== ZOID) {\n throw new Error(`Window not rendered by zoid - got ${ zoidcomp }`);\n }\n\n if (!name) {\n throw new Error(`Expected component name`);\n }\n\n if (!encodedPayload) {\n throw new Error(`Expected encoded payload`);\n }\n\n try {\n return JSON.parse(base64decode(encodedPayload));\n } catch (err) {\n throw new Error(`Can not decode window name payload: ${ encodedPayload }: ${ stringifyError(err) }`);\n }\n});\n\nexport let isZoidComponentWindow = memoize(() => {\n try {\n parseChildWindowName();\n } catch (err) {\n return false;\n }\n\n return true;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/window.js","/* @flow */\n\nimport { getDomain, isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport type { Component } from '../component';\nimport type { BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\n\nexport function normalizeChildProp<T, P>(component : Component<P>, props : (BuiltInPropsType & P), key : string, value : T) : ?T {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType<P> = component.getProp(key);\n\n if (!prop) {\n return value;\n }\n\n if (typeof prop.childDecorate === 'function') {\n return prop.childDecorate(value);\n }\n\n return value;\n}\n\n\nexport function normalizeChildProps<P>(parentComponentWindow : CrossDomainWindowType, component : Component<P>, props : (BuiltInPropsType & P), origin : string, required : boolean = true) : (BuiltInPropsType & P) {\n\n let result = {};\n\n // $FlowFixMe\n for (let key of Object.keys(props)) {\n let prop = component.getProp(key);\n\n if (prop && prop.sameDomain && (origin !== getDomain(window) || !isSameDomain(parentComponentWindow))) {\n continue;\n }\n\n let value = normalizeChildProp(component, props, key, props[key]);\n\n result[key] = value;\n if (prop && prop.alias && !result[prop.alias]) {\n result[prop.alias] = value;\n }\n }\n\n if (required) {\n for (let key of component.getPropNames()) {\n if (!props.hasOwnProperty(key)) {\n result[key] = normalizeChildProp(component, props, key, props[key]);\n }\n }\n }\n\n // $FlowFixMe\n return result;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/child/props.js","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isSameDomain, matchDomain, getDomain, getOpener, getTop, getParent,\n getNthParentFromTop, getAncestor, getAllFramesInWindow, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { markWindowKnown, deserializeMessage } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { extend, getElement, noop, memoized, waitForDocumentBody, onResize } from 'belter/src';\n\nimport { parseChildWindowName } from '../window';\nimport { globalFor } from '../../lib';\nimport { CONTEXT, CLOSE_REASONS, INITIAL_PROPS, WINDOW_REFERENCES } from '../../constants';\nimport type { Component } from '../component';\nimport type { BuiltInPropsType } from '../component/props';\nimport type { WindowRef, PropRef, ParentExportsType } from '../parent';\n\nimport { normalizeChildProps } from './props';\n\nexport type ChildExportsType<P> = {\n updateProps : (props : (BuiltInPropsType & P)) => ZalgoPromise<void>,\n close : () => ZalgoPromise<void>\n};\n\n/* Child Component\n ---------------\n\n This is the portion of code which runs inside the frame or popup window containing the component's implementation.\n\n When the component author calls myComponent.attach(), it creates a new instance of ChildComponent, which is then\n responsible for managing the state and messaging back up to the parent, and providing props for the component to\n utilize.\n*/\n\nexport class ChildComponent<P> {\n\n component : Component<P>\n props : BuiltInPropsType & P\n context : string\n parentExports : ParentExportsType<P>\n parentComponentWindow : CrossDomainWindowType\n\n onPropHandlers : Array<(BuiltInPropsType & P) => void>\n onInit : ZalgoPromise<ChildComponent<P>>\n watchingForResize : boolean\n autoResize : { width : boolean, height : boolean, element? : string }\n\n constructor(component : Component<P>) {\n ZalgoPromise.try(() => {\n if (window.xchild || window.xprops) {\n throw this.component.createError(`Can not attach multiple components to the same window`);\n }\n\n this.component = component;\n this.onPropHandlers = [];\n \n let { parent, domain, exports, context, props } = parseChildWindowName();\n\n this.context = context;\n this.parentComponentWindow = this.getWindowByRef(parent);\n this.parentExports = deserializeMessage(this.parentComponentWindow, domain, exports);\n\n this.checkParentDomain(domain);\n\n window.xchild = this.component.xchild = this;\n let initialProps = this.getPropsByRef(this.parentComponentWindow, domain, props);\n this.setProps(initialProps, domain);\n markWindowKnown(this.parentComponentWindow);\n \n this.watchForClose();\n\n return this.parentExports.init(this.buildExports());\n\n }).then(() => {\n return this.watchForResize();\n\n }).catch(err => {\n this.error(err);\n });\n }\n\n checkParentDomain(domain : string) {\n if (!matchDomain(this.component.allowedParentDomains, domain)) {\n throw new Error(`Can not be rendered by domain: ${ domain }`);\n }\n }\n\n onProps(handler : Function) {\n this.onPropHandlers.push(handler);\n }\n\n getPropsByRef(parentComponentWindow : CrossDomainWindowType, domain : string, { type, value, uid } : PropRef) : (BuiltInPropsType & P) {\n let props;\n\n if (type === INITIAL_PROPS.RAW) {\n props = value;\n } else if (type === INITIAL_PROPS.UID) {\n\n if (!isSameDomain(parentComponentWindow)) {\n if (window.location.protocol === 'file:') {\n throw new Error(`Can not get props from file:// domain`);\n }\n\n throw new Error(`Parent component window is on a different domain - expected ${ getDomain() } - can not retrieve props`);\n }\n\n let global = globalFor(parentComponentWindow);\n\n if (!global) {\n throw new Error(`Can not find global for parent component - can not retrieve props`);\n }\n\n props = global.props[uid];\n }\n\n if (!props) {\n throw new Error(`Initial props not found`);\n }\n\n return deserializeMessage(parentComponentWindow, domain, props);\n }\n\n getWindowByRef(ref : WindowRef) : CrossDomainWindowType {\n let { type } = ref;\n let result;\n \n if (type === WINDOW_REFERENCES.OPENER) {\n result = getOpener(window);\n \n } else if (type === WINDOW_REFERENCES.TOP) {\n result = getTop(window);\n \n } else if (type === WINDOW_REFERENCES.PARENT) {\n // $FlowFixMe\n let { distance } = ref;\n \n if (distance) {\n result = getNthParentFromTop(window, distance);\n } else {\n result = getParent(window);\n }\n }\n \n if (type === WINDOW_REFERENCES.GLOBAL) {\n // $FlowFixMe\n let { uid } = ref;\n let ancestor = getAncestor(window);\n \n if (ancestor) {\n for (let frame of getAllFramesInWindow(ancestor)) {\n let global = globalFor(frame);\n \n if (global && global.windows && global.windows[uid]) {\n result = global.windows[uid];\n break;\n }\n }\n }\n }\n \n if (!result) {\n throw new Error(`Unable to find ${ type } window`);\n }\n \n return result;\n }\n\n\n setProps(props : (BuiltInPropsType & P), origin : string, required : boolean = true) {\n // $FlowFixMe\n this.props = this.props || {};\n let normalizedProps = normalizeChildProps(this.parentComponentWindow, this.component, props, origin, required);\n extend(this.props, normalizedProps);\n for (let handler of this.onPropHandlers) {\n handler.call(this, this.props);\n }\n window.xprops = this.component.xprops = this.props;\n }\n\n watchForClose() {\n window.addEventListener('unload', () => {\n return this.parentExports.checkClose.fireAndForget();\n });\n }\n\n enableAutoResize({ width = false, height = true, element = 'body' } : { width : boolean, height : boolean, element : string } = {}) {\n this.autoResize = { width, height, element };\n this.watchForResize();\n }\n\n getAutoResize() : { width : boolean, height : boolean, element : HTMLElement } {\n let { width = false, height = false, element = 'body' } = this.autoResize || this.component.autoResize || {};\n element = getElement(element);\n return { width, height, element };\n }\n\n @memoized\n watchForResize() : ?ZalgoPromise<void> {\n return waitForDocumentBody().then(() => {\n let { width, height, element } = this.getAutoResize();\n\n if (!width && !height) {\n return;\n }\n \n if (this.context === CONTEXT.POPUP) {\n return;\n }\n\n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize({\n width: width ? newWidth : undefined,\n height: height ? newHeight : undefined\n });\n }, { width, height });\n });\n }\n\n buildExports() : ChildExportsType<P> {\n\n let self = this;\n\n return {\n updateProps(props : (BuiltInPropsType & P)) : ZalgoPromise<void> {\n return ZalgoPromise.try(() => self.setProps(props, this.origin, false));\n },\n\n close() : ZalgoPromise<void> {\n return ZalgoPromise.try(() => self.destroy());\n }\n };\n }\n\n resize({ width, height } : { width? : number, height? : number }) : ZalgoPromise<void> {\n return this.parentExports.resize.fireAndForget({ width, height });\n }\n\n hide() : ZalgoPromise<void> {\n return this.parentExports.hide();\n }\n\n show() : ZalgoPromise<void> {\n return this.parentExports.show();\n }\n\n userClose() : ZalgoPromise<void> {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n close(reason : string = CLOSE_REASONS.CHILD_CALL) : ZalgoPromise<void> {\n return this.parentExports.close(reason);\n }\n \n destroy() : ZalgoPromise<void> {\n return ZalgoPromise.try(() => {\n window.close();\n });\n }\n\n focus() {\n window.focus();\n }\n\n error(err : mixed) : ZalgoPromise<void> {\n // eslint-disable-next-line promise/no-promise-in-callback\n return ZalgoPromise.try(() => {\n if (this.parentExports.error) {\n return this.parentExports.error(err);\n }\n }).catch(noop).then(() => {\n throw err;\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/child/index.js","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { cleanUpWindow, ProxyWindow } from 'post-robot/src';\nimport { type CrossDomainWindowType, type SameDomainWindowType, assertSameDomain, isSameDomain } from 'cross-domain-utils/src';\nimport { iframe, popup, toCSS, showElement, hideElement,\n destroyElement, normalizeDimension, watchElementForClose,\n awaitFrameWindow, awaitFrameLoad, addClass, removeClass, uniqueID } from 'belter/src';\n\nimport { CONTEXT, DELEGATE, CLOSE_REASONS, CLASS_NAMES } from '../../constants';\n\n\nexport type ContextDriverType = {\n\n renderedIntoContainer : boolean,\n callChildToClose : boolean,\n\n open : () => ZalgoPromise<ProxyWindow>,\n resize : ({ width? : ?number, height? : ?number }) => void,\n show : () => void,\n hide : () => void,\n\n delegateOverrides : {\n [string] : string | Function\n },\n\n openPrerender : (CrossDomainWindowType) => ZalgoPromise<?SameDomainWindowType>,\n switchPrerender? : () => void\n};\n\n/* Render Drivers\n --------------\n\n There are various differences in how we treat:\n\n - Opening frames and windows\n - Rendering up to the parent\n - Resizing\n - etc.\n\n based on the context we're rendering to.\n\n These render drivers split this functionality out in a driver pattern, so our component code doesn't bunch up into a\n series of if-popup-then-else-if-iframe code.\n*/\n\nexport let RENDER_DRIVERS : { [string] : ContextDriverType } = {};\n\n// Iframe context is rendered inline on the page, without any kind of parent template. It's the one context that is designed\n// to feel like a native element on the page.\n\nRENDER_DRIVERS[CONTEXT.IFRAME] = {\n\n renderedIntoContainer: true,\n callChildToClose: false,\n\n open() : ZalgoPromise<ProxyWindow> {\n\n let attributes = this.component.attributes.iframe || {};\n\n let frame = iframe({\n attributes: {\n title: this.component.name,\n ...attributes\n },\n class: [\n CLASS_NAMES.COMPONENT_FRAME,\n CLASS_NAMES.INVISIBLE\n ]\n }, this.element);\n\n this.clean.set('iframe', frame);\n\n return awaitFrameWindow(frame).then(win => {\n\n let detectClose = () => {\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n };\n\n let iframeWatcher = watchElementForClose(frame, detectClose);\n let elementWatcher = watchElementForClose(this.element, detectClose);\n\n this.clean.register('destroyWindow', () => {\n iframeWatcher.cancel();\n elementWatcher.cancel();\n cleanUpWindow(win);\n destroyElement(frame);\n });\n\n return ProxyWindow.toProxyWindow(win);\n });\n },\n\n openPrerender() : ZalgoPromise<?SameDomainWindowType> {\n\n let attributes = this.component.attributes.iframe || {};\n\n let prerenderIframe = iframe({\n attributes: {\n name: `__zoid_prerender_frame__${ this.component.name }_${ uniqueID() }__`,\n ...attributes\n },\n class: [\n CLASS_NAMES.PRERENDER_FRAME,\n CLASS_NAMES.VISIBLE\n ]\n }, this.element);\n\n this.clean.set('prerenderIframe', prerenderIframe);\n\n return awaitFrameLoad(prerenderIframe).then(() => {\n let prerenderFrameWindow = prerenderIframe.contentWindow;\n\n this.clean.register('destroyPrerender', () => {\n destroyElement(prerenderIframe);\n });\n\n return assertSameDomain(prerenderFrameWindow);\n });\n },\n\n switchPrerender() {\n\n addClass(this.prerenderIframe, CLASS_NAMES.INVISIBLE);\n removeClass(this.prerenderIframe, CLASS_NAMES.VISIBLE);\n\n addClass(this.iframe, CLASS_NAMES.VISIBLE);\n removeClass(this.iframe, CLASS_NAMES.INVISIBLE);\n\n setTimeout(() => {\n if (this.prerenderIframe) {\n destroyElement(this.prerenderIframe);\n }\n }, 1000);\n },\n\n delegateOverrides: {\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyComponent: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n cancelContainerEvents: DELEGATE.CALL_DELEGATE,\n prerender: DELEGATE.CALL_DELEGATE,\n elementReady: DELEGATE.CALL_DELEGATE,\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n resize: DELEGATE.CALL_DELEGATE,\n loadUrl: DELEGATE.CALL_DELEGATE,\n openPrerender: DELEGATE.CALL_DELEGATE,\n switchPrerender: DELEGATE.CALL_DELEGATE,\n setWindowName: DELEGATE.CALL_DELEGATE,\n open: DELEGATE.CALL_DELEGATE\n },\n\n resize({ width, height } : { width? : ?number, height? : ?number }) {\n\n if (width) {\n this.container.style.width = toCSS(width);\n this.element.style.width = toCSS(width);\n }\n\n if (height) {\n this.container.style.height = toCSS(height);\n this.element.style.height = toCSS(height);\n }\n },\n\n show() {\n showElement(this.element);\n },\n\n hide() {\n hideElement(this.element);\n }\n};\n\nif (__ZOID__.__POPUP_SUPPORT__) {\n\n // Popup context opens up a centered popup window on the page.\n\n RENDER_DRIVERS[CONTEXT.POPUP] = {\n \n renderedIntoContainer: false,\n callChildToClose: true,\n\n open() : ZalgoPromise<ProxyWindow> {\n return ZalgoPromise.try(() => {\n let { width, height } = this.component.dimensions;\n\n width = normalizeDimension(width, window.outerWidth);\n height = normalizeDimension(height, window.outerWidth);\n\n let attributes = this.component.attributes.popup || {};\n let win = popup('', { width, height, ...attributes });\n\n this.clean.register('destroyWindow', () => {\n win.close();\n cleanUpWindow(win);\n });\n\n return ProxyWindow.toProxyWindow(win);\n });\n },\n\n openPrerender(win : CrossDomainWindowType) : ZalgoPromise<?SameDomainWindowType> {\n return ZalgoPromise.try(() => {\n if (isSameDomain(win)) {\n return assertSameDomain(win);\n }\n });\n },\n\n resize() {\n // pass\n },\n\n hide() {\n throw new Error('Can not hide popup');\n },\n\n show() {\n throw new Error('Can not show popup');\n },\n\n delegateOverrides: {\n\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n\n elementReady: DELEGATE.CALL_DELEGATE,\n\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n\n cancelContainerEvents: DELEGATE.CALL_DELEGATE\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/parent/drivers.js","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { send, bridge, serializeMessage, ProxyWindow } from 'post-robot/src';\nimport { isSameDomain, isSameTopWindow, matchDomain, getDomainFromUrl, isBlankDomain,\n onCloseWindow, getDomain, type CrossDomainWindowType, getDistanceFromTop, isTop, normalizeMockUrl } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { addEventListener, uniqueID, elementReady, writeElementToWindow,\n noop, showAndAnimate, animateAndHide, showElement, hideElement, onResize,\n addClass, extend, extendUrl, getElement, memoized, appendChild,\n once, stringify, stringifyError, eventEmitter, type EventEmitterType } from 'belter/src';\nimport { node, dom, ElementNode } from 'jsx-pragmatic/src';\n\nimport { buildChildWindowName } from '../window';\nimport { POST_MESSAGE, CONTEXT, CLASS_NAMES, ANIMATION_NAMES,\n CLOSE_REASONS, DELEGATE, INITIAL_PROPS, WINDOW_REFERENCES, EVENTS } from '../../constants';\nimport type { Component } from '../component';\nimport { global, cleanup, type CleanupType } from '../../lib';\nimport type { PropsType, BuiltInPropsType } from '../component/props';\nimport type { ChildExportsType } from '../child';\nimport type { CancelableType, DimensionsType, ElementRefType } from '../../types';\n\nimport { RENDER_DRIVERS, type ContextDriverType } from './drivers';\nimport { propsToQuery, normalizeProps } from './props';\n\nglobal.props = global.props || {};\nglobal.windows = global.windows || {};\n\nexport type RenderOptionsType<P> = {\n id : string,\n props : PropsType & P,\n tag : string,\n context : string,\n outlet : HTMLElement,\n CLASS : typeof CLASS_NAMES,\n ANIMATION : typeof ANIMATION_NAMES,\n CONTEXT : typeof CONTEXT,\n EVENT : typeof EVENTS,\n actions : {\n close : (?string) => ZalgoPromise<void>,\n focus : () => ZalgoPromise<ProxyWindow>\n },\n on : (string, () => void) => CancelableType,\n jsxDom : typeof node,\n document : Document,\n container? : HTMLElement,\n dimensions : DimensionsType,\n doc? : Document\n};\n\nexport type ParentExportsType<P> = {\n init : (ChildExportsType<P>) => ZalgoPromise<void>,\n close : (string) => ZalgoPromise<void>,\n checkClose : () => ZalgoPromise<void>,\n resize : ({ width? : ?number, height? : ?number }) => ZalgoPromise<void>,\n trigger : (string) => ZalgoPromise<void>,\n hide : () => ZalgoPromise<void>,\n show : () => ZalgoPromise<void>,\n error : (mixed) => ZalgoPromise<void>\n};\n\nexport type PropRef =\n {| type : typeof INITIAL_PROPS.RAW, uid? : string, value? : string |};\n\nexport type WindowRef =\n {| type : typeof WINDOW_REFERENCES.OPENER |} |\n {| type : typeof WINDOW_REFERENCES.TOP |} |\n {| type : typeof WINDOW_REFERENCES.PARENT, distance : number |} |\n {| type : typeof WINDOW_REFERENCES.GLOBAL, uid : string |};\n\nexport type ChildPayload = {\n uid : string,\n tag : string,\n context : $Values<typeof CONTEXT>,\n domain : string,\n parent : WindowRef,\n props : PropRef,\n exports : string\n};\n\n/* Parent Component\n ----------------\n\n This manages the state of the component on the parent window side - i.e. the window the component is being rendered into.\n\n It handles opening the necessary windows/iframes, launching the component's url, and listening for messages back from the component.\n*/\n\nexport class ParentComponent<P> {\n\n component : Component<P>\n driver : ContextDriverType\n props : BuiltInPropsType & P\n onInit : ZalgoPromise<ParentComponent<P>>\n errored : boolean\n event : EventEmitterType\n clean : CleanupType\n\n container : HTMLElement\n element : HTMLElement\n iframe : HTMLIFrameElement\n prerenderIframe : HTMLIFrameElement\n\n childExports : ?ChildExportsType<P>\n timeout : ?TimeoutID // eslint-disable-line no-undef\n\n constructor(component : Component<P>, context : string, { props } : { props : (PropsType & P) }) {\n ZalgoPromise.try(() => {\n this.onInit = new ZalgoPromise();\n this.clean = cleanup(this);\n this.event = eventEmitter();\n\n this.component = component;\n this.driver = RENDER_DRIVERS[context];\n \n this.setProps(props);\n this.registerActiveComponent();\n this.watchForUnload();\n \n return this.onInit;\n\n }).catch(err => {\n return this.error(err, props);\n });\n }\n\n render(context : $Values<typeof CONTEXT>, element : ElementRefType, target? : CrossDomainWindowType = window) : ZalgoPromise<ParentComponent<P>> {\n return this.tryInit(() => {\n this.component.log(`render`);\n\n let uid = uniqueID();\n let tasks = {};\n \n tasks.onRender = this.props.onRender();\n\n let domain = this.getDomain();\n let initialDomain = this.getInitialDomain();\n\n tasks.elementReady = ZalgoPromise.try(() => {\n if (element) {\n return this.elementReady(element);\n }\n });\n\n let focus = () => {\n return tasks.open.then(proxyWin => proxyWin.focus());\n };\n\n tasks.openContainer = tasks.elementReady.then(() => {\n return this.openContainer(element, { context, uid, focus });\n });\n\n tasks.open = this.driver.renderedIntoContainer\n ? tasks.openContainer.then(() => this.open())\n : this.open();\n\n tasks.awaitWindow = tasks.open.then(proxyWin => {\n return proxyWin.awaitWindow();\n });\n\n tasks.showContainer = tasks.openContainer.then(() => {\n return this.showContainer();\n });\n\n tasks.buildWindowName = tasks.open.then(proxyWin => {\n return this.buildWindowName({ proxyWin, initialDomain, domain, target, context, uid });\n });\n\n tasks.setWindowName = ZalgoPromise.all([ tasks.open, tasks.buildWindowName ]).then(([ proxyWin, windowName ]) => {\n return this.setWindowName(proxyWin, windowName);\n });\n\n tasks.watchForClose = ZalgoPromise.all([ tasks.awaitWindow, tasks.setWindowName ]).then(([ win ]) => {\n return this.watchForClose(win);\n });\n\n tasks.prerender = ZalgoPromise.all([ tasks.awaitWindow, tasks.openContainer ]).then(([ win ]) => {\n return this.prerender(win, { context, uid });\n });\n\n tasks.showComponent = tasks.prerender.then(() => {\n return this.showComponent();\n });\n \n tasks.buildUrl = this.buildUrl();\n\n tasks.openBridge = ZalgoPromise.all([ tasks.awaitWindow, tasks.buildUrl ]).then(([ win, url ]) => {\n return this.openBridge(win, getDomainFromUrl(url), context);\n });\n\n tasks.loadUrl = ZalgoPromise.all([\n tasks.open,\n tasks.buildUrl,\n tasks.setWindowName\n ]).then(([ proxyWin, url ]) => {\n return this.loadUrl(proxyWin, url);\n });\n\n tasks.switchPrerender = ZalgoPromise.all([ tasks.prerender, this.onInit ]).then(() => {\n return this.switchPrerender();\n });\n\n tasks.runTimeout = tasks.loadUrl.then(() => {\n return this.runTimeout();\n });\n\n return ZalgoPromise.hash(tasks);\n\n }).then(() => {\n return this.props.onEnter();\n }).then(() => {\n return this;\n });\n }\n\n renderTo(context : $Values<typeof CONTEXT>, target : CrossDomainWindowType, element : ?string) : ZalgoPromise<ParentComponent<P>> {\n return this.tryInit(() => {\n if (target === window) {\n return this.render(context, element);\n }\n\n if (element && typeof element !== 'string') {\n throw new Error(`Element passed to renderTo must be a string selector, got ${ typeof element } ${ element }`);\n }\n\n this.checkAllowRemoteRender(target);\n\n this.component.log(`render_${ context }_to_win`, { element: stringify(element), context });\n\n this.delegate(context, target);\n return this.render(context, element, target);\n });\n }\n\n on(eventName : string, handler : () => void) : CancelableType {\n return this.event.on(eventName, handler);\n }\n\n checkAllowRemoteRender(target : CrossDomainWindowType) {\n\n if (!target) {\n throw this.component.createError(`Must pass window to renderTo`);\n }\n\n if (!isSameTopWindow(window, target)) {\n throw new Error(`Can only renderTo an adjacent frame`);\n }\n\n let origin = getDomain();\n let domain = this.getDomain();\n\n if (!matchDomain(domain, origin) && !isSameDomain(target)) {\n throw new Error(`Can not render remotely to ${ domain.toString() } - can only render to ${ origin }`);\n }\n }\n\n registerActiveComponent() {\n ParentComponent.activeComponents.push(this);\n\n this.clean.register(() => {\n ParentComponent.activeComponents.splice(ParentComponent.activeComponents.indexOf(this), 1);\n });\n }\n\n getWindowRef(target : CrossDomainWindowType, domain : string, uid : string, context : $Values<typeof CONTEXT>) : WindowRef {\n \n if (domain === getDomain(window)) {\n global.windows[uid] = window;\n this.clean.register(() => {\n delete global.windows[uid];\n });\n \n return { type: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n if (target !== window) {\n throw new Error(`Can not currently create window reference for different target with a different domain`);\n }\n\n if (context === CONTEXT.POPUP) {\n return { type: WINDOW_REFERENCES.OPENER };\n }\n\n if (isTop(window)) {\n return { type: WINDOW_REFERENCES.TOP };\n }\n\n return { type: WINDOW_REFERENCES.PARENT, distance: getDistanceFromTop(window) };\n }\n\n buildWindowName({ proxyWin, initialDomain, domain, target, uid, context } : { proxyWin : ProxyWindow, initialDomain : string, domain : string | RegExp, target : CrossDomainWindowType, context : $Values<typeof CONTEXT>, uid : string }) : string {\n return buildChildWindowName(this.component.name, this.buildChildPayload({ proxyWin, initialDomain, domain, target, context, uid }));\n }\n\n getPropsRef(proxyWin : ProxyWindow, target : CrossDomainWindowType, domain : string | RegExp, uid : string) : PropRef {\n let value = serializeMessage(proxyWin, domain, this.getPropsForChild(domain));\n\n let propRef = isSameDomain(target)\n ? { type: INITIAL_PROPS.RAW, value }\n : { type: INITIAL_PROPS.UID, uid };\n\n if (propRef.type === INITIAL_PROPS.UID) {\n global.props[uid] = value;\n\n this.clean.register(() => {\n delete global.props[uid];\n });\n }\n\n return propRef;\n }\n\n buildChildPayload({ proxyWin, initialDomain, domain, target = window, context, uid } : { proxyWin : ProxyWindow, initialDomain : string, domain : string | RegExp, target : CrossDomainWindowType, context : $Values<typeof CONTEXT>, uid : string } = {}) : ChildPayload {\n\n let childPayload : ChildPayload = {\n uid,\n context,\n domain: getDomain(window),\n tag: this.component.tag,\n parent: this.getWindowRef(target, initialDomain, uid, context),\n props: this.getPropsRef(proxyWin, target, domain, uid),\n exports: serializeMessage(proxyWin, domain, this.buildParentExports(proxyWin))\n };\n\n return childPayload;\n }\n\n setProps(props : (PropsType & P), isUpdate : boolean = false) {\n\n if (this.component.validate) {\n this.component.validate(this.component, props);\n }\n\n // $FlowFixMe\n this.props = this.props || {};\n\n extend(this.props, normalizeProps(this.component, this, props, isUpdate));\n }\n\n buildUrl() : ZalgoPromise<string> {\n return propsToQuery({ ...this.component.props, ...this.component.builtinProps }, this.props)\n .then(query => {\n let url = normalizeMockUrl(this.component.getUrl(this.props));\n return extendUrl(url, { query: { ...query } });\n });\n }\n\n getDomain() : string | RegExp {\n return this.component.getDomain(this.props);\n }\n\n getInitialDomain() : string {\n return this.component.getInitialDomain(this.props);\n }\n\n getPropsForChild(domain : string | RegExp) : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(this.props)) {\n let prop = this.component.getProp(key);\n\n if (prop && prop.sendToChild === false) {\n continue;\n }\n\n if (prop && prop.sameDomain && !matchDomain(domain, getDomain(window))) {\n continue;\n }\n\n // $FlowFixMe\n result[key] = this.props[key];\n }\n\n // $FlowFixMe\n return result;\n }\n\n updateProps(props : (PropsType & P)) : ZalgoPromise<void> {\n this.setProps(props, true);\n\n return this.onInit.then(() => {\n if (this.childExports) {\n return this.childExports.updateProps(this.getPropsForChild(this.getDomain()));\n } else {\n throw new Error(`Child exports were not available`);\n }\n });\n }\n\n openBridge(win : CrossDomainWindowType, domain : string, context : $Values<typeof CONTEXT>) : ZalgoPromise<?CrossDomainWindowType> {\n return ZalgoPromise.try(() => {\n if (!bridge || !bridge.needsBridge({ win, domain }) || bridge.hasBridge(domain, domain)) {\n return;\n }\n\n let bridgeUrl = this.component.getBridgeUrl(this.props);\n\n if (!bridgeUrl) {\n throw new Error(`Bridge url and domain needed to render ${ context }`);\n }\n\n let bridgeDomain = getDomainFromUrl(bridgeUrl);\n bridge.linkUrl(win, domain);\n return bridge.openBridge(bridgeUrl, bridgeDomain);\n });\n }\n \n open() : ZalgoPromise<ProxyWindow> {\n return ZalgoPromise.try(() => {\n this.component.log(`open`);\n\n let windowProp = this.props.window;\n\n if (windowProp) {\n this.clean.register('destroyProxyWindow', () => {\n return windowProp.close();\n });\n\n return windowProp;\n }\n\n return this.driver.open.call(this);\n });\n }\n\n setWindowName(proxyWin : ProxyWindow, name : string) : ZalgoPromise<ProxyWindow> {\n return proxyWin.setName(name);\n }\n\n switchPrerender() : ZalgoPromise<void> {\n return ZalgoPromise.try(() => {\n if (this.component.prerenderTemplate && this.driver.switchPrerender) {\n return this.driver.switchPrerender.call(this);\n }\n });\n }\n\n elementReady(element : ElementRefType) : ZalgoPromise<void> {\n return elementReady(element).then(noop);\n }\n\n\n delegate(context : $Values<typeof CONTEXT>, target : CrossDomainWindowType) {\n this.component.log(`delegate`);\n\n let props = {\n window: this.props.window,\n onClose: this.props.onClose,\n onDisplay: this.props.onDisplay\n };\n\n for (let propName of this.component.getPropNames()) {\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n props[propName] = this.props[propName];\n }\n }\n\n let delegate = send(target, `${ POST_MESSAGE.DELEGATE }_${ this.component.name }`, {\n context,\n props,\n overrides: {\n userClose: () => this.userClose(),\n error: (err) => this.error(err),\n on: (eventName, handler) => this.on(eventName, handler)\n }\n\n }).then(({ data }) => {\n this.clean.register(data.destroy);\n return data;\n\n }).catch(err => {\n throw new Error(`Unable to delegate rendering. Possibly the component is not loaded in the target window.\\n\\n${ stringifyError(err) }`);\n });\n\n let overrides = this.driver.delegateOverrides;\n for (let key of Object.keys(overrides)) {\n let val = overrides[key];\n\n if (val === DELEGATE.CALL_DELEGATE) {\n // $FlowFixMe\n this[key] = function overridenFunction() : ZalgoPromise<mixed> {\n return delegate.then(data => {\n return data.overrides[key].apply(this, arguments);\n });\n };\n }\n }\n }\n\n watchForClose(win : CrossDomainWindowType) {\n let closeWindowListener = onCloseWindow(win, () => {\n this.component.log(`detect_close_child`);\n\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n }, 3000);\n\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n watchForUnload() {\n\n // Our child has no way of knowing if we navigated off the page. So we have to listen for unload\n // and close the child manually if that happens.\n\n let onunload = once(() => {\n this.component.log(`navigate_away`);\n this.destroyComponent();\n });\n\n let unloadWindowListener = addEventListener(window, 'unload', onunload);\n\n this.clean.register('destroyUnloadWindowListener', unloadWindowListener.cancel);\n }\n\n loadUrl(proxyWin : ProxyWindow, url : string) : ZalgoPromise<ProxyWindow> {\n this.component.log(`load_url`);\n return proxyWin.setLocation(url);\n }\n\n runTimeout() {\n let timeout = this.props.timeout;\n\n if (timeout) {\n let id = this.timeout = setTimeout(() => {\n this.component.log(`timed_out`, { timeout: timeout.toString() });\n this.error(this.component.createError(`Loading component timed out after ${ timeout } milliseconds`));\n }, timeout);\n\n this.clean.register(() => {\n clearTimeout(id);\n delete this.timeout;\n });\n }\n }\n\n initChild(childExports : ChildExportsType<P>) : ZalgoPromise<void> {\n return ZalgoPromise.try(() => {\n this.childExports = childExports;\n this.onInit.resolve(this);\n \n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n });\n }\n\n buildParentExports(win : ProxyWindow) : ParentExportsType<P> {\n return {\n init: (childExports) => this.initChild(childExports),\n close: (reason) => this.close(reason),\n checkClose: () => this.checkClose(win),\n resize: ({ width, height }) => this.resize({ width, height }),\n trigger: (name) => ZalgoPromise.try(() => this.event.trigger(name)),\n hide: () => ZalgoPromise.try(() => this.hide()),\n show: () => ZalgoPromise.try(() => this.show()),\n error: (err) => this.error(err)\n };\n }\n\n resize({ width, height } : { width? : ?number, height? : ?number }) : ZalgoPromise<void> {\n return ZalgoPromise.try(() => {\n this.driver.resize.call(this, { width, height });\n });\n }\n\n hide() : void {\n\n if (this.container) {\n hideElement(this.container);\n }\n\n return this.driver.hide.call(this);\n }\n\n show() : void {\n\n if (this.container) {\n showElement(this.container);\n }\n\n return this.driver.show.call(this);\n }\n\n\n checkClose(win : ProxyWindow) : ZalgoPromise<void> {\n return win.isClosed().then(closed => {\n if (closed) {\n return this.userClose();\n }\n\n return ZalgoPromise.delay(200)\n .then(() => win.isClosed())\n .then(secondClosed => {\n if (secondClosed) {\n return this.userClose();\n }\n });\n });\n }\n\n\n userClose() : ZalgoPromise<void> {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child component\n */\n\n @memoized\n close(reason? : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise<void> {\n return ZalgoPromise.try(() => {\n\n this.component.log(`close`, { reason });\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(),\n this.closeContainer()\n ]);\n\n }).then(() => {\n\n return this.destroy();\n });\n }\n\n\n @memoized\n closeContainer(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise<void> {\n return ZalgoPromise.try(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(reason),\n this.hideContainer()\n ]);\n\n }).then(() => {\n\n return this.destroyContainer();\n });\n }\n\n\n @memoized\n destroyContainer() : ZalgoPromise<void> {\n return ZalgoPromise.try(() => {\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyContainerTemplate');\n });\n }\n\n\n @memoized\n closeComponent(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise<void> {\n return ZalgoPromise.try(() => {\n return this.cancelContainerEvents();\n\n }).then(() => {\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n return this.hideComponent();\n\n }).then(() => {\n return this.destroyComponent();\n\n }).then(() => {\n // IE in metro mode -- child window needs to close itself, or close will hang\n if (this.childExports && this.driver.callChildToClose) {\n this.childExports.close().catch(noop);\n }\n });\n }\n\n destroyComponent() {\n this.clean.run('destroyUnloadWindowListener');\n this.clean.run('destroyCloseWindowListener');\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyWindow');\n }\n\n @memoized\n showContainer() : ZalgoPromise<void> {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.container) {\n return showAndAnimate(this.container, ANIMATION_NAMES.SHOW_CONTAINER, this.clean.register);\n }\n });\n }\n\n @memoized\n showComponent() : ZalgoPromise<void> {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.element) {\n return showAndAnimate(this.element, ANIMATION_NAMES.SHOW_COMPONENT, this.clean.register);\n }\n });\n }\n\n @memoized\n hideContainer() : ZalgoPromise<void> {\n return ZalgoPromise.try(() => {\n if (this.container) {\n return animateAndHide(this.container, ANIMATION_NAMES.HIDE_CONTAINER, this.clean.register);\n }\n });\n }\n\n @memoized\n hideComponent() : ZalgoPromise<void> {\n return ZalgoPromise.try(() => {\n if (this.element) {\n return animateAndHide(this.element, ANIMATION_NAMES.HIDE_COMPONENT, this.clean.register);\n }\n });\n }\n\n\n /* Create Component Template\n -------------------------\n\n Creates an initial template and stylesheet which are loaded into the child window, to be displayed before the url is loaded\n */\n\n prerender(win : CrossDomainWindowType, { context, uid } : { context : $Values<typeof CONTEXT>, uid : string }) : ZalgoPromise<void> {\n return ZalgoPromise.try(() => {\n if (!this.component.prerenderTemplate) {\n return;\n }\n\n return ZalgoPromise.try(() => {\n return this.driver.openPrerender.call(this, win);\n \n }).then(prerenderWindow => {\n if (!prerenderWindow || !isSameDomain(prerenderWindow) || !isBlankDomain(prerenderWindow)) {\n return;\n }\n \n let doc = prerenderWindow.document;\n let el = this.renderTemplate(this.component.prerenderTemplate, { context, uid, document: doc });\n \n if (el instanceof ElementNode) {\n el = el.render(dom({ doc }));\n }\n \n try {\n writeElementToWindow(prerenderWindow, el);\n } catch (err) {\n return;\n }\n\n let { width = false, height = false, element = 'body' } = this.component.autoResize || {};\n \n if (width || height) {\n onResize(getElement(element, prerenderWindow.document), ({ width: newWidth, height: newHeight }) => {\n this.resize({\n width: width ? newWidth : undefined,\n height: height ? newHeight : undefined\n });\n }, { width, height, win: prerenderWindow });\n }\n });\n });\n }\n\n renderTemplate<T : HTMLElement | ElementNode>(renderer : (RenderOptionsType<P>) => T, { context, uid, focus, container, document, outlet } : { context : $Values<typeof CONTEXT>, uid : string, focus? : () => ZalgoPromise<ProxyWindow>, container? : HTMLElement, document? : Document, outlet? : HTMLElement }) : T {\n focus = focus || (() => ZalgoPromise.resolve());\n\n // $FlowFixMe\n return renderer.call(this, {\n context,\n uid,\n id: `${ CLASS_NAMES.ZOID }-${ this.component.tag }-${ uid }`,\n props: renderer.__xdomain__ ? null : this.props,\n tag: this.component.tag,\n CLASS: CLASS_NAMES,\n ANIMATION: ANIMATION_NAMES,\n CONTEXT,\n EVENT: EVENTS,\n actions: {\n focus,\n close: () => this.userClose()\n },\n on: (eventName, handler) => this.on(eventName, handler),\n jsxDom: node,\n document,\n dimensions: this.component.dimensions,\n container,\n outlet\n });\n }\n\n openContainer(element : ?HTMLElement, { context, uid, focus } : { context : $Values<typeof CONTEXT>, uid : string, focus : () => ZalgoPromise<ProxyWindow> }) : ZalgoPromise<void> {\n return ZalgoPromise.try(() => {\n let el;\n\n if (element) {\n el = getElement(element);\n } else {\n el = document.body;\n }\n\n if (!el) {\n throw new Error(`Could not find element to open container into`);\n }\n\n if (!this.component.containerTemplate) {\n if (this.driver.renderedIntoContainer) {\n throw new Error(`containerTemplate needed to render ${ context }`);\n }\n\n return;\n }\n\n let outlet = document.createElement('div');\n addClass(outlet, CLASS_NAMES.OUTLET);\n\n let container = this.renderTemplate(this.component.containerTemplate, { context, uid, container: el, focus, outlet });\n\n if (container instanceof ElementNode) {\n container = container.render(dom({ doc: document }));\n }\n\n this.container = container;\n hideElement(this.container);\n appendChild(el, this.container);\n\n if (this.driver.renderedIntoContainer) {\n this.element = outlet;\n hideElement(this.element);\n\n if (!this.element) {\n throw new Error('Could not find element to render component into');\n }\n\n hideElement(this.element);\n }\n\n this.clean.register('destroyContainerTemplate', () => {\n\n if (this.container && this.container.parentNode) {\n this.container.parentNode.removeChild(this.container);\n }\n\n delete this.container;\n });\n });\n }\n\n cancelContainerEvents() {\n this.clean.run('destroyContainerEvents');\n }\n\n destroy() : ZalgoPromise<void> {\n return ZalgoPromise.try(() => {\n if (this.clean.hasTasks()) {\n this.component.log(`destroy`);\n return this.clean.all();\n }\n });\n }\n\n\n tryInit(method : () => mixed) : ZalgoPromise<ParentComponent<P>> {\n return ZalgoPromise.try(method).catch(err => {\n this.onInit.reject(err);\n }).then(() => {\n return this.onInit;\n });\n }\n\n // $FlowFixMe\n error(err : mixed, props : PropsType & P = this.props) : ZalgoPromise<void> {\n if (this.errored) {\n return;\n }\n\n this.errored = true;\n\n // eslint-disable-next-line promise/no-promise-in-callback\n return ZalgoPromise.try(() => {\n this.onInit = this.onInit || new ZalgoPromise();\n this.onInit.reject(err);\n\n return this.destroy();\n\n }).then(() => {\n if (props.onError) {\n return props.onError(err);\n }\n\n }).catch(errErr => { // eslint-disable-line unicorn/catch-error-name\n throw new Error(`An error was encountered while handling error:\\n\\n ${ stringifyError(err) }\\n\\n${ stringifyError(errErr) }`);\n\n }).then(() => {\n if (!props.onError) {\n throw err;\n }\n });\n }\n\n static activeComponents : Array<ParentComponent<*>> = []\n\n static destroyAll() : ZalgoPromise<void> {\n let results = [];\n\n while (ParentComponent.activeComponents.length) {\n results.push(ParentComponent.activeComponents[0].destroy());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/parent/index.js","/* @flow */\n\nexport function normalizeString(str : string) : string {\n return str.replace(/^[^a-z0-9A-Z]+|[^a-z0-9A-Z]+$/g, '').replace(/[^a-z0-9A-Z]+/g, '_');\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/util.js","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { dotify, isDefined } from 'belter/src';\n\nimport type { Component } from '../component';\nimport type { BuiltInPropsDefinitionType, PropsType, BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\nimport { PROP_SERIALIZATION } from '../../constants';\n\nimport type { ParentComponent } from './index';\n\n/* Normalize Props\n ---------------\n\n Turn props into normalized values, using defaults, function options, etc.\n*/\n\nexport function normalizeProps<P>(component : Component<P>, instance : ParentComponent<P>, props : (PropsType & P), isUpdate : boolean = false) : (BuiltInPropsType & P) { // eslint-disable-line complexity\n\n let result = {};\n props = props || {};\n\n let propNames = isUpdate ? [] : component.getPropNames();\n\n // $FlowFixMe\n for (let key of Object.keys(props)) {\n if (propNames.indexOf(key) === -1) {\n propNames.push(key);\n }\n }\n\n const aliases = [];\n\n for (let key of propNames) {\n let propDef = component.getProp(key);\n let value = props[key];\n\n if (!propDef) {\n result[key] = value;\n continue;\n }\n\n const alias = propDef.alias;\n if (alias) {\n if (!isDefined(value) && isDefined(props[alias])) {\n value = props[alias];\n }\n aliases.push(alias);\n }\n\n if (propDef.value) {\n value = propDef.value();\n }\n\n if (!isDefined(value) && propDef.def) {\n value = propDef.def(props, component);\n }\n\n if (isDefined(value)) {\n if (propDef.type === 'array' ? !Array.isArray(value) : (typeof value !== propDef.type)) {\n throw new TypeError(`Prop is not of type ${ propDef.type }: ${ key }`);\n }\n } else if (propDef.required !== false) {\n throw new Error(`Expected prop ${ key } to be passed`);\n }\n\n result[key] = value;\n }\n\n for (let alias of aliases) {\n delete result[alias];\n }\n\n for (let key of Object.keys(result)) {\n let propDef = component.getProp(key);\n let value = result[key];\n\n if (!propDef) {\n continue;\n }\n\n if (isDefined(value) && propDef.validate) {\n // $FlowFixMe\n propDef.validate(value, result);\n }\n\n if (propDef.decorate) {\n // $FlowFixMe\n result[key] = propDef.decorate(value, result);\n }\n\n if (result[key] && propDef.type === 'function') {\n result[key] = result[key].bind(instance);\n }\n }\n\n // $FlowFixMe\n return result;\n}\n\n\n/* Props to Query\n --------------\n\n Turn props into an initial query string to open the component with\n\n string -> string\n bool -> 1\n object -> json\n number -> string\n*/\n\n// $FlowFixMe\nfunction getQueryParam<T, P>(prop : MixedPropDefinitionType<P>, key : string, value : T) : ZalgoPromise<string> {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryParam === 'function') {\n return prop.queryParam(value);\n } else if (typeof prop.queryParam === 'string') {\n return prop.queryParam;\n } else {\n return key;\n }\n });\n}\n\n// $FlowFixMe\nfunction getQueryValue<T, P>(prop : MixedPropDefinitionType<P>, key : string, value : T) : ZalgoPromise<mixed> {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryValue === 'function') {\n return prop.queryValue(value);\n } else {\n return value;\n }\n });\n}\n\nexport function propsToQuery<P>(propsDef : BuiltInPropsDefinitionType<P>, props : (BuiltInPropsType & P)) : ZalgoPromise<{ [string] : string }> {\n\n let params = {};\n\n return ZalgoPromise.all(Object.keys(props).map(key => {\n\n let prop = propsDef[key];\n\n if (!prop) {\n return; // eslint-disable-line array-callback-return\n }\n\n return ZalgoPromise.resolve().then(() => {\n\n let value = props[key];\n\n if (!value) {\n return;\n }\n\n if (!prop.queryParam) {\n return;\n }\n\n return value;\n\n }).then(value => {\n\n if (value === null || typeof value === 'undefined') {\n return;\n }\n\n return ZalgoPromise.all([\n // $FlowFixMe\n getQueryParam(prop, key, value),\n // $FlowFixMe\n getQueryValue(prop, key, value)\n ]).then(([ queryParam, queryValue ]) => {\n\n let result;\n\n if (typeof queryValue === 'boolean') {\n result = queryValue.toString();\n } else if (typeof queryValue === 'string') {\n result = queryValue.toString();\n } else if (typeof queryValue === 'function') {\n return;\n } else if (typeof queryValue === 'object' && queryValue !== null) {\n\n if (prop.serialization === PROP_SERIALIZATION.JSON) {\n result = JSON.stringify(queryValue);\n } else if (prop.serialization === PROP_SERIALIZATION.BASE64) {\n result = btoa(JSON.stringify(queryValue));\n } else if (prop.serialization === PROP_SERIALIZATION.DOTIFY || !prop.serialization) {\n result = dotify(queryValue, key);\n\n for (let dotkey of Object.keys(result)) {\n params[dotkey] = result[dotkey];\n }\n\n return;\n }\n\n } else if (typeof queryValue === 'number') {\n result = queryValue.toString();\n }\n\n params[queryParam] = result;\n });\n });\n\n })).then(() => {\n return params;\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/parent/props.js","/* @flow */\n\nimport { onCloseWindow, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { eventEmitter, type EventEmitterType } from 'belter/src';\nimport { ProxyWindow } from 'post-robot/src';\n\nimport { ParentComponent } from '../parent';\nimport { RENDER_DRIVERS, type ContextDriverType } from '../parent/drivers';\nimport type { Component } from '../component';\nimport type { CancelableType } from '../../types';\nimport { cleanup, type CleanupType } from '../../lib';\n\nexport type DelegatePropsType = {\n onClose : () => ?ZalgoPromise<void>,\n onDisplay : () => ?ZalgoPromise<void>,\n window : ?ProxyWindow\n};\n\nexport type DelegateOptionsType = {\n context : string,\n props : DelegatePropsType,\n overrides : {\n userClose : (string) => ZalgoPromise<void>,\n error : (mixed) => ZalgoPromise<void>,\n on : (string, () => void) => CancelableType\n }\n};\n\nexport type DelegateReturnType = {\n overrides : Object,\n destroy : () => ZalgoPromise<void>\n};\n\nexport class DelegateComponent<P> {\n\n component : Component<P>\n source : CrossDomainWindowType\n context : string\n props : DelegatePropsType\n event : EventEmitterType\n clean : CleanupType\n uid : string\n\n userClose : (string) => ZalgoPromise<void>\n getDomain : () => ZalgoPromise<string>\n error : (mixed) => ZalgoPromise<void>\n on : (string, () => void) => CancelableType\n\n constructor(component : Component<P>, source : CrossDomainWindowType, options : DelegateOptionsType) {\n this.component = component;\n this.context = options.context;\n this.clean = cleanup(this);\n this.event = eventEmitter();\n\n // $FlowFixMe\n this.destroyComponent = ParentComponent.prototype.destroyComponent;\n // $FlowFixMe\n this.resize = ParentComponent.prototype.resize;\n // $FlowFixMe\n this.renderTemplate = ParentComponent.prototype.renderTemplate;\n // $FlowFixMe\n this.registerActiveComponent = ParentComponent.prototype.registerActiveComponent;\n\n this.props = {\n window: options.props.window,\n onClose: options.props.onClose,\n onDisplay: options.props.onDisplay\n };\n\n for (let propName of component.getPropNames()) {\n // $FlowFixMe\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n this.props[propName] = options.props[propName];\n }\n }\n\n this.userClose = options.overrides.userClose;\n this.error = options.overrides.error;\n this.on = options.overrides.on;\n\n // $FlowFixMe\n this.registerActiveComponent();\n\n this.watchForClose(source);\n }\n\n getDelegate() : DelegateReturnType {\n return {\n overrides: this.getOverrides(),\n destroy: () => this.destroy()\n };\n }\n\n get driver() : ContextDriverType {\n return RENDER_DRIVERS[this.context];\n }\n\n watchForClose(source : CrossDomainWindowType) {\n let closeWindowListener = onCloseWindow(source, () => this.destroy(), 3000);\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n getOverrides() : { [string] : mixed } {\n let context = this.context;\n let delegateOverrides = RENDER_DRIVERS[context].delegateOverrides;\n\n let overrides = {};\n\n let self = this;\n\n for (let key of Object.keys(delegateOverrides)) {\n overrides[key] = function delegateOverride() : mixed {\n // $FlowFixMe\n return ParentComponent.prototype[key].apply(self, arguments);\n };\n }\n\n return overrides;\n }\n\n destroy() : ZalgoPromise<void> {\n return this.clean.all();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/delegate/index.js","/* @flow */\n/* @jsx node */\n\nimport { node, dom } from 'jsx-pragmatic/src';\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultContainerTemplate<P>({ id, tag, context, CLASS, outlet, document, dimensions : { width, height } } : RenderOptionsType<P>) : HTMLElement {\n\n return (\n <div id={ id } class={ `${ CLASS.ZOID } ${ CLASS.ZOID }-tag-${ tag } ${ CLASS.ZOID }-context-${ context }` }>\n <style>\n {`\n #${ id }, #${ id } > .${ CLASS.OUTLET } {\n width: ${ width };\n height: ${ height };\n }\n\n #${ id } > .${ CLASS.OUTLET } {\n display: inline-block;\n position: relative;\n }\n\n #${ id } > .${ CLASS.OUTLET } > iframe {\n height: 100%;\n width: 100%;\n position: absolute;\n top: 0;\n left: 0;\n transition: opacity .2s ease-in-out;\n }\n\n #${ id } > .${ CLASS.OUTLET } > iframe.${ CLASS.VISIBLE } {\n opacity: 1;\n }\n\n #${ id } > .${ CLASS.OUTLET } > iframe.${ CLASS.INVISIBLE } {\n opacity: 0;\n }\n `}\n </style>\n\n <node el={ outlet } />\n </div>\n ).render(dom({ doc: document }));\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/component/templates/container.jsx","/* @flow */\n/* @jsx node */\n\nimport { node, dom } from 'jsx-pragmatic/src';\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultPrerenderTemplate<P>({ document } : RenderOptionsType<P>) : HTMLElement {\n return (\n <html>\n <head>\n <style>\n {`\n html, body {\n width: 100%;\n height: 100%;\n overflow: hidden;\n top: 0;\n left: 0;\n margin: 0;\n text-align: center;\n }\n\n .spinner {\n position: absolute;\n max-height: 60vmin;\n max-width: 60vmin;\n height: 40px;\n width: 40px;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n z-index: 10;\n }\n\n .spinner .loader {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n border: 3px solid rgba(0, 0, 0, .2);\n border-top-color: rgba(33, 128, 192, 0.8);\n border-radius: 100%;\n animation: rotation .7s infinite linear;\n\n }\n\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n `}\n </style>\n </head>\n <body>\n <div class=\"spinner\">\n <div id=\"loader\" class=\"loader\"></div>\n </div>\n </body>\n </html>\n ).render(dom({ doc: document }));\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/component/templates/component.jsx","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { on, send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { memoize, isRegex, toCSS } from 'belter/src';\nimport { type ElementNode } from 'jsx-pragmatic/src';\n\nimport { ChildComponent } from '../child';\nimport { ParentComponent, type RenderOptionsType } from '../parent';\nimport { DelegateComponent, type DelegateOptionsType } from '../delegate';\nimport { isZoidComponentWindow, parseChildWindowName } from '../window';\nimport { CONTEXT, POST_MESSAGE, WILDCARD, DEFAULT_DIMENSIONS } from '../../constants';\nimport { angular, angular2, glimmer, react, vue } from '../../drivers/index';\nimport { info, error, warn } from '../../lib';\nimport type { CssDimensionsType, StringMatcherType, ElementRefType, EnvString } from '../../types';\n\nimport { validate } from './validate';\nimport { defaultContainerTemplate, defaultPrerenderTemplate } from './templates';\nimport { getInternalProps, type UserPropsDefinitionType, type BuiltInPropsDefinitionType, type PropsType, type BuiltInPropsType, type MixedPropDefinitionType } from './props';\n\nconst drivers = { angular, angular2, glimmer, react, vue };\n\n/* Component\n ---------\n\n This is the spec for the component. The idea is, when I call zoid.create(), it will create a new instance\n of Component with the blueprint needed to set up ParentComponents and ChildComponents.\n\n This is the one portion of code which is required by -- and shared to -- both the parent and child windows, and\n contains all of the configuration needed for them to set themselves up.\n*/\n\nexport type ComponentOptionsType<P> = {\n\n tag : string,\n\n url : EnvString | (props : BuiltInPropsType & P) => string,\n buildUrl? : (props : BuiltInPropsType & P) => string,\n domain? : EnvString | RegExp,\n bridgeUrl? : EnvString,\n\n props? : UserPropsDefinitionType<P>,\n\n dimensions? : CssDimensionsType,\n autoResize? : { width? : boolean, height? : boolean, element? : string },\n\n allowedParentDomains? : StringMatcherType,\n\n defaultEnv? : string,\n\n attributes? : {\n iframe? : { [string] : string },\n popup? : { [string] : string }\n },\n\n contexts? : { iframe? : boolean, popup? : boolean },\n defaultContext? : string,\n\n containerTemplate? : (RenderOptionsType<P>) => HTMLElement | ElementNode,\n prerenderTemplate? : (RenderOptionsType<P>) => HTMLElement | ElementNode,\n\n validate? : (Component<P>, (PropsType & P)) => void\n};\n\nexport type ComponentDriverType<P, T : mixed> = {\n global : () => ?T,\n register : (Component<P>, T) => mixed\n};\n\nexport class Component<P> {\n\n tag : string\n name : string\n \n url : void | EnvString | (props : BuiltInPropsType & P) => string\n domain : void | EnvString | RegExp\n bridgeUrl : void | EnvString\n\n props : UserPropsDefinitionType<P>\n builtinProps : BuiltInPropsDefinitionType<P>\n\n dimensions : void | CssDimensionsType\n autoResize : void | { width? : boolean, height? : boolean, element? : string }\n\n allowedParentDomains : StringMatcherType\n\n defaultEnv : void | string\n\n contexts : { iframe? : boolean, popup? : boolean }\n defaultContext : string\n \n attributes : {\n iframe? : { [string] : string },\n popup? : { [string] : string }\n }\n\n containerTemplate : (RenderOptionsType<P>) => HTMLElement | ElementNode\n prerenderTemplate : (RenderOptionsType<P>) => HTMLElement | ElementNode\n\n validate : void | (Component<P>, (PropsType & P)) => void\n\n driverCache : { [string] : mixed }\n\n xchild : ?ChildComponent<P>\n xprops : ?P\n\n constructor(options : ComponentOptionsType<P>) {\n validate(options);\n\n // The tag name of the component. Used by some drivers (e.g. angular) to turn the component into an html element,\n // e.g. <my-component>\n\n this.tag = options.tag;\n this.name = this.tag.replace(/-/g, '_');\n\n this.allowedParentDomains = options.allowedParentDomains || WILDCARD;\n\n if (Component.components[this.tag]) {\n throw new Error(`Can not register multiple components with the same tag`);\n }\n\n // A json based spec describing what kind of props the component accepts. This is used to validate any props before\n // they are passed down to the child.\n\n this.builtinProps = getInternalProps();\n this.props = options.props || {};\n\n // The dimensions of the component, e.g. { width: '300px', height: '150px' }\n\n let { width = DEFAULT_DIMENSIONS.WIDTH, height = DEFAULT_DIMENSIONS.HEIGHT } = options.dimensions || {};\n this.dimensions = { width: toCSS(width), height: toCSS(height) };\n\n this.defaultEnv = options.defaultEnv;\n this.url = options.url || options.buildUrl;\n this.domain = options.domain;\n this.bridgeUrl = options.bridgeUrl;\n\n this.attributes = options.attributes || {};\n this.contexts = options.contexts || { iframe: true, popup: false };\n this.defaultContext = options.defaultContext || CONTEXT.IFRAME;\n\n this.autoResize = (typeof options.autoResize === 'object')\n ? options.autoResize\n : { width: Boolean(options.autoResize), height: Boolean(options.autoResize), element: 'body' };\n\n this.containerTemplate = options.containerTemplate || defaultContainerTemplate;\n this.prerenderTemplate = options.prerenderTemplate || defaultPrerenderTemplate;\n\n this.validate = options.validate;\n\n Component.components[this.tag] = this;\n\n // Register all of the drivers for instantiating components. The model used is -- there's a standard javascript\n // way of rendering a component, then each other technology (e.g. react) needs to hook into that interface.\n // This makes us a little more pluggable and loosely coupled.\n this.registerDrivers();\n this.registerChild();\n this.listenDelegate();\n }\n\n @memoize\n getPropNames() : Array<string> {\n let props = Object.keys(this.props);\n\n for (let key of Object.keys(this.builtinProps)) {\n if (props.indexOf(key) === -1) {\n props.push(key);\n }\n }\n\n return props;\n }\n\n // $FlowFixMe\n getProp(name : string) : MixedPropDefinitionType<P> {\n // $FlowFixMe\n return this.props[name] || this.builtinProps[name];\n }\n\n registerDrivers() {\n this.driverCache = {};\n\n for (let driverName of Object.keys(drivers)) {\n if (driverName.indexOf('_') === 0) {\n continue;\n }\n\n let driver = drivers[driverName];\n let glob = driver.global();\n if (glob) {\n this.driver(driverName, glob);\n }\n }\n }\n\n driver(name : string, dep : mixed) : mixed {\n if (!drivers[name]) {\n throw new Error(`Could not find driver for framework: ${ name }`);\n }\n\n if (!this.driverCache[name]) {\n this.driverCache[name] = drivers[name].register(this, dep);\n }\n\n return this.driverCache[name];\n }\n\n registerChild() : ZalgoPromise<?ChildComponent<P>> {\n return ZalgoPromise.try(() => {\n if (this.isChild()) {\n return new ChildComponent(this);\n }\n });\n }\n\n listenDelegate() {\n on(`${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`, () => {\n return true;\n });\n\n on(`${ POST_MESSAGE.DELEGATE }_${ this.name }`, ({ source, data: { context, props, overrides } }) => {\n return this.delegate(source, { context, props, overrides }).getDelegate();\n });\n }\n\n canRenderTo(win : CrossDomainWindowType) : ZalgoPromise<boolean> {\n return send(win, `${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`).then(({ data }) => {\n return data;\n }).catch(() => {\n return false;\n });\n }\n\n getUrl(props : BuiltInPropsType & P) : string {\n if (typeof this.url === 'function') {\n return this.url(props);\n }\n\n if (typeof this.url === 'string') {\n return this.url;\n }\n\n let env = props.env || this.defaultEnv;\n if (env && typeof this.url === 'object' && this.url[env]) {\n return this.url[env];\n }\n\n throw new Error(`Can not find url`);\n }\n\n getInitialDomain(props : BuiltInPropsType & P) : string {\n if (typeof this.domain === 'string') {\n // $FlowFixMe\n return this.domain;\n }\n\n let env = props.env || this.defaultEnv;\n // $FlowFixMe\n if (env && typeof this.domain === 'object' && !isRegex(this.domain) && this.domain[env]) {\n return this.domain[env];\n }\n\n return getDomainFromUrl(this.getUrl(props));\n }\n\n getDomain(props : BuiltInPropsType & P) : string | RegExp {\n if (isRegex(this.domain)) {\n // $FlowFixMe\n return this.domain;\n }\n\n return this.getInitialDomain(props);\n }\n\n getBridgeUrl(props : BuiltInPropsType & P) : ?string {\n if (this.bridgeUrl) {\n if (typeof this.bridgeUrl === 'string') {\n return this.bridgeUrl;\n }\n \n let env = props.env || this.defaultEnv;\n if (env && typeof this.bridgeUrl === 'object' && this.bridgeUrl[env]) {\n return this.bridgeUrl[env];\n }\n }\n }\n\n isZoidComponent() : boolean {\n return isZoidComponentWindow();\n }\n\n isChild() : boolean {\n return isZoidComponentWindow() && parseChildWindowName().tag === this.tag;\n }\n\n\n createError(message : string, tag : ?string) : Error {\n return new Error(`[${ tag || this.tag }] ${ message }`);\n }\n\n\n /* Init\n ----\n\n Shortcut to instantiate a component on a parent page, with props\n */\n\n init(props : (PropsType & P), context : ?string, element : ElementRefType) : ParentComponent<P> {\n return new ParentComponent(this, this.getRenderContext(context, element), { props });\n }\n\n\n delegate(source : CrossDomainWindowType, options : DelegateOptionsType) : DelegateComponent<P> {\n return new DelegateComponent(this, source, options);\n }\n\n validateRenderContext(context : ?string, element : ?ElementRefType) {\n if (context && !this.contexts[context]) {\n throw new Error(`[${ this.tag }] Can not render to ${ context }`);\n }\n\n if (!element && context === CONTEXT.IFRAME) {\n throw new Error(`[${ this.tag }] Context type ${ CONTEXT.IFRAME } requires an element selector`);\n }\n }\n\n getDefaultContext() : string {\n if (this.defaultContext && this.contexts[this.defaultContext]) {\n return this.defaultContext;\n } else if (this.contexts[CONTEXT.IFRAME]) {\n return CONTEXT.IFRAME;\n } else if (this.contexts[CONTEXT.POPUP]) {\n return CONTEXT.POPUP;\n }\n\n throw new Error(`Can not determine default context`);\n }\n\n getRenderContext(context : ?string, element : ?ElementRefType) : string {\n context = context || this.getDefaultContext();\n this.validateRenderContext(context, element);\n return context;\n }\n\n\n /* Render\n ------\n\n Shortcut to render a parent component\n */\n\n render(props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise<ParentComponent<P>> {\n return ZalgoPromise.try(() => {\n let context = this.getRenderContext(null, element);\n return new ParentComponent(this, context, { props }).render(context, element);\n });\n }\n\n renderIframe(props : (PropsType & P), element : ElementRefType) : ZalgoPromise<ParentComponent<P>> {\n return ZalgoPromise.try(() => {\n let context = this.getRenderContext(CONTEXT.IFRAME, element);\n return new ParentComponent(this, context, { props }).render(context, element);\n });\n }\n\n renderPopup(props : (PropsType & P)) : ZalgoPromise<ParentComponent<P>> {\n return ZalgoPromise.try(() => {\n let context = this.getRenderContext(CONTEXT.POPUP);\n return new ParentComponent(this, context, { props }).render(context);\n });\n }\n\n renderTo(win : CrossDomainWindowType, props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise<ParentComponent<P>> {\n return ZalgoPromise.try(() => {\n let context = this.getRenderContext(null, element);\n return new ParentComponent(this, context, { props }).renderTo(context, win, element);\n });\n }\n\n renderIframeTo(win : CrossDomainWindowType, props : (PropsType & P), element : ElementRefType) : ZalgoPromise<ParentComponent<P>> {\n return ZalgoPromise.try(() => {\n let context = this.getRenderContext(CONTEXT.IFRAME, element);\n return new ParentComponent(this, context, { props }).renderTo(context, win, element);\n });\n }\n\n renderPopupTo(win : CrossDomainWindowType, props : (PropsType & P)) : ZalgoPromise<ParentComponent<P>> {\n return ZalgoPromise.try(() => {\n let context = this.getRenderContext(CONTEXT.POPUP);\n return new ParentComponent(this, context, { props }).renderTo(context, win);\n });\n }\n\n /* Log\n ---\n\n Log an event using the component name\n */\n\n log(event : string, payload : { [ string ] : string } = {}) {\n info(this.name, event, payload);\n }\n\n\n /* Log Warning\n -----------\n\n Log a warning\n */\n\n logWarning(event : string, payload : { [ string ] : string }) {\n warn(this.name, event, payload);\n }\n\n\n /* Log Error\n ---------\n\n Log an error\n */\n\n logError(event : string, payload : { [ string ] : string }) {\n error(this.name, event, payload);\n }\n\n static components : { [string] : Component<*> } = {}\n\n static getByTag<T>(tag : string) : Component<T> {\n return Component.components[tag];\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/component/index.js","/* @flow */\n\nimport { isPerc, isPx } from 'belter/src';\n\nimport { PROP_TYPES_LIST, CONTEXT_LIST } from '../../constants';\n\nimport type { ComponentOptionsType } from './index';\n\nfunction validatePropDefinitions<P>(options : ComponentOptionsType<P>) {\n\n if (options.props && !(typeof options.props === 'object')) {\n throw new Error(`Expected options.props to be an object`);\n }\n\n if (options.props) {\n for (let key of Object.keys(options.props)) {\n\n // $FlowFixMe\n let prop = options.props[key];\n\n if (!prop || !(typeof prop === 'object')) {\n throw new Error(`Expected options.props.${ key } to be an object`);\n }\n\n if (!prop.type) {\n throw new Error(`Expected prop.type`);\n }\n\n if (PROP_TYPES_LIST.indexOf(prop.type) === -1) {\n throw new Error(`Expected prop.type to be one of ${ PROP_TYPES_LIST.join(', ') }`);\n }\n\n if (prop.required && prop.def) {\n throw new Error(`Required prop can not have a default value`);\n }\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function validate<P>(options : ?ComponentOptionsType<P>) { // eslint-ignore-line\n\n if (!options) {\n throw new Error(`Expected options to be passed`);\n }\n\n if (!options.tag || !options.tag.match(/^[a-z0-9-]+$/)) {\n throw new Error(`Invalid options.tag: ${ options.tag }`);\n }\n\n validatePropDefinitions(options);\n\n if (options.dimensions) {\n if (options.dimensions && !isPx(options.dimensions.width) && !isPerc(options.dimensions.width)) {\n throw new Error(`Expected options.dimensions.width to be a px or % string value`);\n }\n\n if (options.dimensions && !isPx(options.dimensions.height) && !isPerc(options.dimensions.height)) {\n throw new Error(`Expected options.dimensions.height to be a px or % string value`);\n }\n }\n\n if (options.contexts) {\n\n if (options.contexts.popup && !__ZOID__.__POPUP_SUPPORT__) {\n throw new Error(`Popups not supported in this build -- please use the full zoid.js build`);\n }\n\n let anyEnabled = false;\n\n for (let context of Object.keys(options.contexts)) {\n\n if (CONTEXT_LIST.indexOf(context) === -1) {\n throw new Error(`Unsupported context type: ${ context }`);\n }\n\n if ((options.contexts && options.contexts[context]) || (options.contexts && options.contexts[context] === undefined)) {\n anyEnabled = true;\n }\n }\n\n if (!anyEnabled) {\n throw new Error(`No context type is enabled`);\n }\n }\n\n if (options.defaultContext) {\n if (CONTEXT_LIST.indexOf(options.defaultContext) === -1) {\n throw new Error(`Unsupported context type: ${ options.defaultContext || 'unknown' }`);\n }\n\n if (options.contexts && options.defaultContext && !options.contexts[options.defaultContext]) {\n throw new Error(`Disallowed default context type: ${ options.defaultContext || 'unknown' }`);\n }\n }\n\n if (options.defaultEnv) {\n if (typeof options.defaultEnv !== 'string') {\n throw new TypeError(`Expected options.defaultEnv to be a string`);\n }\n\n if (typeof options.url === 'object' && !options.url[options.defaultEnv]) {\n throw new Error(`No url found for default env: ${ options.defaultEnv }`);\n }\n }\n\n if (!options.url && !options.buildUrl) {\n throw new Error(`Must pass url`);\n }\n\n if (typeof options.url === 'object') {\n\n if (!options.defaultEnv) {\n throw new Error(`Must pass options.defaultEnv with env->url mapping`);\n }\n\n for (let env of Object.keys(options.url)) {\n if (!options.url[env]) {\n throw new Error(`No url specified for env: ${ env }`);\n }\n }\n }\n\n if (options.prerenderTemplate && typeof options.prerenderTemplate !== 'function') {\n throw new Error(`Expected options.prerenderTemplate to be a function`);\n }\n\n if (options.containerTemplate && typeof options.containerTemplate !== 'function') {\n throw new Error(`Expected options.containerTemplate to be a function`);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/component/validate.js","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { once, memoize, noop, promisify } from 'belter/src';\nimport { isWindow, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ProxyWindow } from 'post-robot/src/serialize/window';\n\nimport { type DimensionsType } from '../../types';\nimport { PROP_SERIALIZATION } from '../../constants';\n\nimport type { Component } from './index';\n\ntype PropDefinitionType<T, P, S : string> = {|\n type : S,\n alias? : string,\n value? : () => ?T,\n required? : boolean,\n queryParam? : boolean | string | (T) => (string | ZalgoPromise<string>),\n queryValue? : (T) => (ZalgoPromise<mixed> | mixed),\n sendToChild? : boolean,\n allowDelegate? : boolean,\n validate? : (T, PropsType & P) => void,\n decorate? : (T, PropsType & P) => (T | void),\n def? : (P, Component<P>) => ? T,\n sameDomain? : boolean,\n serialization? : $Values<typeof PROP_SERIALIZATION>,\n childDecorate? : (T) => ?T\n|};\n\nexport type BooleanPropDefinitionType<T : boolean, P> = PropDefinitionType<T, P, 'boolean'>;\nexport type StringPropDefinitionType<T : string, P> = PropDefinitionType<T, P, 'string'>;\nexport type NumberPropDefinitionType<T : number, P> = PropDefinitionType<T, P, 'number'>;\nexport type FunctionPropDefinitionType<T : Function, P> = PropDefinitionType<T, P, 'function'>;\nexport type ArrayPropDefinitionType<T : Array<*>, P> = PropDefinitionType<T, P, 'array'>;\nexport type ObjectPropDefinitionType<T : Object, P> = PropDefinitionType<T, P, 'object'>;\n\nexport type MixedPropDefinitionType<P> = BooleanPropDefinitionType<*, P> | StringPropDefinitionType<*, P> | NumberPropDefinitionType<*, P> | FunctionPropDefinitionType<*, P> | ObjectPropDefinitionType<*, P> | ArrayPropDefinitionType<*, P>;\n\nexport type UserPropsDefinitionType<P> = {\n [string] : MixedPropDefinitionType<P>\n};\n\nexport type EventHandlerType<T> = (T) => void | ZalgoPromise<void>;\n\ntype envPropType = string;\ntype timeoutPropType = number;\ntype dimensionsPropType = DimensionsType;\ntype windowPropType = ProxyWindow;\n\ntype onDisplayPropType = EventHandlerType<void>;\ntype onEnterPropType = EventHandlerType<void>;\ntype onRenderPropType = EventHandlerType<void>;\ntype onClosePropType = EventHandlerType<string>;\ntype onErrorPropType = EventHandlerType<mixed>;\n\nexport type BuiltInPropsType = {\n env : envPropType,\n timeout? : timeoutPropType,\n dimensions? : dimensionsPropType,\n window? : windowPropType,\n\n onDisplay : onDisplayPropType,\n onEnter : onEnterPropType,\n onRender : onRenderPropType,\n onClose : onClosePropType,\n onError? : onErrorPropType\n};\n\nexport type PropsType = {\n env? : envPropType,\n timeout? : timeoutPropType,\n dimensions? : dimensionsPropType,\n window? : windowPropType,\n\n onDisplay? : onDisplayPropType,\n onEnter? : onEnterPropType,\n onRender? : onRenderPropType,\n onClose? : onClosePropType,\n onError? : onErrorPropType\n};\n\nexport type BuiltInPropsDefinitionType<P> = {\n env : StringPropDefinitionType<envPropType, P>,\n timeout : NumberPropDefinitionType<timeoutPropType, P>,\n dimensions : ObjectPropDefinitionType<dimensionsPropType, P>,\n window : ObjectPropDefinitionType<windowPropType, P>,\n\n onDisplay : FunctionPropDefinitionType<onDisplayPropType, P>,\n onEnter : FunctionPropDefinitionType<onEnterPropType, P>,\n onRender : FunctionPropDefinitionType<onRenderPropType, P>,\n onClose : FunctionPropDefinitionType<onClosePropType, P>,\n onError : FunctionPropDefinitionType<onErrorPropType, P>\n};\n\n/* Internal Props\n --------------\n\n We define and use certain props by default, for configuration and events that are used at the framework level.\n These follow the same format as regular props, and are classed as reserved words that may not be overriden by users.\n*/\n\nexport function getInternalProps<P>() : BuiltInPropsDefinitionType<P> {\n return {\n\n // The desired env in which the component is being rendered. Used to determine the correct url\n\n env: {\n type: 'string',\n queryParam: true,\n required: false,\n def(props, component) : ?string {\n return component.defaultEnv;\n }\n },\n\n window: {\n type: 'object',\n sendToChild: false,\n required: false,\n validate(val : CrossDomainWindowType | ProxyWindow) {\n if (!isWindow(val) && !ProxyWindow.isProxyWindow(val)) {\n throw new Error(`Expected Window or ProxyWindow`);\n }\n },\n decorate(val : CrossDomainWindowType | ProxyWindow | void) : ProxyWindow | void {\n if (val) {\n return ProxyWindow.toProxyWindow(val);\n }\n }\n },\n\n dimensions: {\n type: 'object',\n required: false\n },\n\n timeout: {\n type: 'number',\n required: false,\n sendToChild: false\n },\n\n onDisplay: {\n type: 'function',\n required: false,\n sendToChild: false,\n\n def() : Function {\n return noop;\n },\n\n decorate(onDisplay : Function) : Function {\n return memoize(promisify(onDisplay));\n }\n },\n\n onEnter: {\n type: 'function',\n required: false,\n sendToChild: false,\n\n def() : Function {\n return noop;\n },\n\n decorate(onEnter : Function) : Function {\n return promisify(onEnter);\n }\n },\n\n // When we get an INIT message from the child\n\n onRender: {\n type: 'function',\n required: false,\n sendToChild: false,\n\n def() : Function {\n return noop;\n },\n\n decorate(onRender : Function) : Function {\n return promisify(onRender);\n }\n },\n\n // When the user closes the component.\n\n onClose: {\n type: 'function',\n required: false,\n sendToChild: false,\n\n def() : Function {\n return noop;\n },\n\n decorate(onClose : Function) : Function {\n return once(promisify(onClose));\n }\n },\n\n // When the component experiences an error\n\n onError: {\n type: 'function',\n required: false,\n sendToChild: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n setTimeout(() => {\n throw err;\n });\n };\n },\n\n decorate(onError : Function) : Function {\n return once(promisify(onError));\n }\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/component/props.js","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\n// eslint-disable-next-line import/no-namespace\nimport * as _postRobot from 'post-robot/src';\n\nimport { Component, type ComponentOptionsType } from './component';\nimport { ParentComponent } from './component/parent';\n// eslint-disable-next-line import/no-namespace\nimport * as _CONSTANTS from './constants';\n\nexport { PopupOpenError } from 'belter/src';\n\nexport function create<P>(options : ComponentOptionsType<P>) : Component<P> {\n return new Component(options);\n}\n\nexport function getByTag<P>(tag : string) : Component<P> {\n return Component.getByTag(tag);\n}\n\nexport { getCurrentScriptDir, useLogger } from './lib';\n\nexport function destroyAll() : ZalgoPromise<void> {\n return ParentComponent.destroyAll();\n}\nexport let postRobot = _postRobot;\n\nexport const CONSTANTS = _CONSTANTS;\n\nexport type ZoidComponent<P> = Component<P>;\n\n\n\n// WEBPACK FOOTER //\n// ./src/interface.js","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","/* @flow */\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array<mixed>) {\n // pass\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/cross-domain-utils/src/util.js","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isRegex, noop } from './util';\nimport type { CrossDomainWindowType, SameDomainWindowType, DomainMatcher } from './types';\nimport { PROTOCOL, WILDCARD } from './constants';\n\nlet IE_WIN_ACCESS_ERROR = 'Call was rejected by callee.\\r\\n';\n\nexport function isFileProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.FILE;\n}\n\nexport function isAboutProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.ABOUT;\n}\n\nexport function getParent(win : ?CrossDomainWindowType) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n try {\n if (win.parent && win.parent !== win) {\n return win.parent;\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function getOpener(win : ?CrossDomainWindowType) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n // Make sure we're not actually an iframe which has had window.open() called on us\n if (getParent(win)) {\n return;\n }\n\n try {\n return win.opener;\n } catch (err) {\n // pass\n }\n}\n\nexport function canReadFromWindow(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n noop(win && win.location && win.location.href);\n return true;\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function getActualDomain(win : ?SameDomainWindowType) : string {\n\n win = win || window;\n\n let location = win.location;\n\n if (!location) {\n throw new Error(`Can not read window location`);\n }\n\n let protocol = location.protocol;\n\n if (!protocol) {\n throw new Error(`Can not read window protocol`);\n }\n\n if (protocol === PROTOCOL.FILE) {\n return `${ PROTOCOL.FILE }//`;\n }\n\n if (protocol === PROTOCOL.ABOUT) {\n\n let parent = getParent(win);\n if (parent && canReadFromWindow(parent)) {\n // $FlowFixMe\n return getActualDomain(parent);\n }\n\n return `${ PROTOCOL.ABOUT }//`;\n }\n\n let host = location.host;\n\n if (!host) {\n throw new Error(`Can not read window host`);\n }\n\n return `${ protocol }//${ host }`;\n}\n\nexport function getDomain(win : ?SameDomainWindowType) : string {\n\n win = win || window;\n\n let domain = getActualDomain(win);\n\n if (domain && win.mockDomain && win.mockDomain.indexOf(PROTOCOL.MOCK) === 0) {\n return win.mockDomain;\n }\n\n return domain;\n}\n\nexport function isBlankDomain(win : CrossDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n if (!win.location.href) {\n return true;\n }\n\n if (win.location.href === 'about:blank') {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isActuallySameDomain(win : CrossDomainWindowType) : boolean {\n\n try {\n if (win === window) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n let desc = Object.getOwnPropertyDescriptor(win, 'location');\n\n if (desc && desc.enumerable === false) {\n return false;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (getActualDomain(win) === getActualDomain(window)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n\n if (!isActuallySameDomain(win)) {\n return false;\n }\n\n try {\n\n if (win === window) {\n return true;\n }\n\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n\n // $FlowFixMe\n if (getDomain(window) === getDomain(win)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\n\nexport function assertSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : SameDomainWindowType {\n if (!isSameDomain(win)) {\n throw new Error(`Expected window to be same domain`);\n }\n\n // $FlowFixMe\n return win;\n}\n\nexport function getParents(win : CrossDomainWindowType) : Array<CrossDomainWindowType> {\n\n let result = [];\n\n try {\n\n while (win.parent !== win) {\n result.push(win.parent);\n win = win.parent;\n }\n\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\nexport function isAncestorParent(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n if (!parent || !child) {\n return false;\n }\n\n let childParent = getParent(child);\n\n if (childParent) {\n return childParent === parent;\n }\n\n if (getParents(child).indexOf(parent) !== -1) {\n return true;\n }\n\n return false;\n}\n\nexport function getFrames(win : CrossDomainWindowType) : Array<CrossDomainWindowType> {\n\n let result = [];\n\n let frames;\n\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n\n let len;\n\n try {\n len = frames.length;\n } catch (err) {\n // pass\n }\n\n if (len === 0) {\n return result;\n }\n\n if (len) {\n for (let i = 0; i < len; i++) {\n\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n\n result.push(frame);\n }\n\n return result;\n }\n\n for (let i = 0; i < 100; i++) {\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n return result;\n }\n\n if (!frame) {\n return result;\n }\n\n result.push(frame);\n }\n\n return result;\n}\n\n\nexport function getAllChildFrames(win : CrossDomainWindowType) : Array<CrossDomainWindowType> {\n\n let result = [];\n\n for (let frame of getFrames(win)) {\n result.push(frame);\n\n for (let childFrame of getAllChildFrames(frame)) {\n result.push(childFrame);\n }\n }\n\n return result;\n}\n\nexport function getTop(win : CrossDomainWindowType) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n try {\n if (win.top) {\n return win.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(win) === win) {\n return win;\n }\n\n try {\n if (isAncestorParent(window, win) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (isAncestorParent(win, window) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n for (let frame of getAllChildFrames(win)) {\n try {\n if (frame.top) {\n return frame.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(frame) === frame) {\n return frame;\n }\n }\n}\n\nexport function getNextOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n return getOpener(getTop(win) || win);\n}\n\nexport function getUltimateTop(win? : CrossDomainWindowType = window) : CrossDomainWindowType {\n let opener = getNextOpener(win);\n\n if (opener) {\n return getUltimateTop(opener);\n }\n\n return top;\n}\n\nexport function getAllFramesInWindow(win : CrossDomainWindowType) : Array<CrossDomainWindowType> {\n let top = getTop(win);\n\n if (!top) {\n throw new Error(`Can not determine top window`);\n }\n\n return [ ...getAllChildFrames(top), top ];\n}\n\nexport function getAllWindows(win? : CrossDomainWindowType = window) : $ReadOnlyArray<CrossDomainWindowType> {\n let frames = getAllFramesInWindow(win);\n let opener = getNextOpener(win);\n\n if (opener) {\n return [ ...getAllWindows(opener), ...frames ];\n } else {\n return frames;\n }\n}\n\nexport function isTop(win : CrossDomainWindowType) : boolean {\n return win === getTop(win);\n}\n\nexport function isFrameWindowClosed(frame : HTMLIFrameElement) : boolean {\n\n if (!frame.contentWindow) {\n return true;\n }\n\n if (!frame.parentNode) {\n return true;\n }\n\n let doc = frame.ownerDocument;\n\n if (doc && doc.documentElement && !doc.documentElement.contains(frame)) {\n return true;\n }\n\n return false;\n}\n\nfunction safeIndexOf<T>(collection : Array<T>, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\nlet iframeWindows = [];\nlet iframeFrames = [];\n\nexport function isWindowClosed(win : CrossDomainWindowType, allowMock : boolean = true) : boolean {\n\n try {\n if (win === window) {\n return false;\n }\n } catch (err) {\n return true;\n }\n\n try {\n if (!win) {\n return true;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (win.closed) {\n return true;\n }\n\n } catch (err) {\n\n // I love you so much IE\n\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return false;\n }\n\n return true;\n }\n\n\n if (allowMock && isSameDomain(win)) {\n try {\n // $FlowFixMe\n if (win.mockclosed) {\n return true;\n }\n } catch (err) {\n // pass\n }\n }\n\n // Mobile safari\n\n try {\n if (!win.parent || !win.top) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n // Yes, this actually happens in IE. win === win errors out when the window\n // is from an iframe, and the iframe was removed from the page.\n\n try {\n noop(win === win); // eslint-disable-line no-self-compare\n } catch (err) {\n return true;\n }\n\n // IE orphaned frame\n\n let iframeIndex = safeIndexOf(iframeWindows, win);\n\n if (iframeIndex !== -1) {\n let frame = iframeFrames[iframeIndex];\n\n if (frame && isFrameWindowClosed(frame)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction cleanIframes() {\n for (let i = 0; i < iframeWindows.length; i++) {\n if (isWindowClosed(iframeWindows[i])) {\n iframeFrames.splice(i, 1);\n iframeWindows.splice(i, 1);\n }\n }\n}\n\nexport function linkFrameWindow(frame : HTMLIFrameElement) {\n\n cleanIframes();\n\n if (frame && frame.contentWindow) {\n try {\n iframeWindows.push(frame.contentWindow);\n iframeFrames.push(frame);\n } catch (err) {\n // pass\n }\n }\n}\n\nexport function getUserAgent(win : ?SameDomainWindowType) : string {\n win = win || window;\n return win.navigator.mockUserAgent || win.navigator.userAgent;\n}\n\n\nexport function getFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let winFrames = getFrames(win);\n\n for (let childFrame of winFrames) {\n try {\n // $FlowFixMe\n if (isSameDomain(childFrame) && childFrame.name === name && winFrames.indexOf(childFrame) !== -1) {\n return childFrame;\n }\n } catch (err) {\n // pass\n }\n }\n\n try {\n // $FlowFixMe\n if (winFrames.indexOf(win.frames[name]) !== -1) {\n // $FlowFixMe\n return win.frames[name];\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (winFrames.indexOf(win[name]) !== -1) {\n return win[name];\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function findChildFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n for (let childFrame of getFrames(win)) {\n let namedFrame = findChildFrameByName(childFrame, name);\n\n if (namedFrame) {\n return namedFrame;\n }\n }\n}\n\nexport function findFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame;\n\n frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n let top = getTop(win) || win;\n\n return findChildFrameByName(top, name);\n}\n\nexport function isParent(win : CrossDomainWindowType, frame : CrossDomainWindowType) : boolean {\n\n let frameParent = getParent(frame);\n\n if (frameParent) {\n return frameParent === win;\n }\n\n for (let childFrame of getFrames(win)) {\n if (childFrame === frame) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isOpener(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n return parent === getOpener(child);\n}\n\nexport function getAncestor(win : ?CrossDomainWindowType) : ?CrossDomainWindowType {\n win = win || window;\n\n let opener = getOpener(win);\n\n if (opener) {\n return opener;\n }\n\n let parent = getParent(win);\n\n if (parent) {\n return parent;\n }\n}\n\nexport function getAncestors(win : CrossDomainWindowType) : Array<CrossDomainWindowType> {\n\n let results = [];\n\n let ancestor = win;\n\n while (ancestor) {\n ancestor = getAncestor(ancestor);\n if (ancestor) {\n results.push(ancestor);\n }\n }\n\n return results;\n}\n\n\nexport function isAncestor(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n let actualParent = getAncestor(child);\n\n if (actualParent) {\n if (actualParent === parent) {\n return true;\n }\n\n return false;\n }\n\n if (child === parent) {\n return false;\n }\n\n if (getTop(child) === child) {\n return false;\n }\n\n for (let frame of getFrames(parent)) {\n if (frame === child) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isPopup() : boolean {\n return Boolean(getOpener(window));\n}\n\nexport function isIframe() : boolean {\n return Boolean(getParent(window));\n}\n\nexport function isFullpage() : boolean {\n return Boolean(!isIframe() && !isPopup());\n}\n\nfunction anyMatch(collection1, collection2) : boolean {\n\n for (let item1 of collection1) {\n for (let item2 of collection2) {\n if (item1 === item2) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nexport function getDistanceFromTop(win : CrossDomainWindowType = window) : number {\n let distance = 0;\n let parent = win;\n\n while (parent) {\n parent = getParent(parent);\n if (parent) {\n distance += 1;\n }\n }\n\n return distance;\n}\n\nexport function getNthParent(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n let parent = win;\n\n for (let i = 0; i < n; i++) {\n if (!parent) {\n return;\n }\n\n parent = getParent(parent);\n }\n\n return parent;\n}\n\nexport function getNthParentFromTop(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n return getNthParent(win, getDistanceFromTop(win) - n);\n}\n\nexport function isSameTopWindow(win1 : CrossDomainWindowType, win2 : CrossDomainWindowType) : boolean {\n\n let top1 = getTop(win1) || win1;\n let top2 = getTop(win2) || win2;\n\n try {\n if (top1 && top2) {\n if (top1 === top2) {\n return true;\n }\n\n return false;\n }\n } catch (err) {\n // pass\n }\n\n let allFrames1 = getAllFramesInWindow(win1);\n let allFrames2 = getAllFramesInWindow(win2);\n\n if (anyMatch(allFrames1, allFrames2)) {\n return true;\n }\n\n let opener1 = getOpener(top1);\n let opener2 = getOpener(top2);\n\n if (opener1 && anyMatch(getAllFramesInWindow(opener1), allFrames2)) {\n return false;\n }\n\n if (opener2 && anyMatch(getAllFramesInWindow(opener2), allFrames1)) {\n return false;\n }\n\n return false;\n}\n\nexport function matchDomain(pattern : DomainMatcher, origin : DomainMatcher) : boolean {\n\n if (typeof pattern === 'string') {\n\n if (typeof origin === 'string') {\n return pattern === WILDCARD || origin === pattern;\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n }\n\n if (isRegex(pattern)) {\n\n if (isRegex(origin)) {\n return pattern.toString() === origin.toString();\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n\n // $FlowFixMe\n return Boolean(origin.match(pattern));\n }\n\n if (Array.isArray(pattern)) {\n\n if (Array.isArray(origin)) {\n return JSON.stringify(pattern) === JSON.stringify(origin);\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n return pattern.some(subpattern => matchDomain(subpattern, origin));\n }\n\n return false;\n}\n\nexport function stringifyDomainPattern(pattern : DomainMatcher) : string {\n if (Array.isArray(pattern)) {\n return `(${ pattern.join(' | ') })`;\n } else if (isRegex(pattern)) {\n return `RegExp(${ pattern.toString() }`;\n } else {\n return pattern.toString();\n }\n}\n\nexport function getDomainFromUrl(url : string) : string {\n\n let domain;\n\n if (url.match(/^(https?|mock|file):\\/\\//)) {\n domain = url;\n } else {\n return getDomain();\n }\n\n domain = domain.split('/').slice(0, 3).join('/');\n\n return domain;\n}\n\nexport function onCloseWindow(win : CrossDomainWindowType, callback : Function, delay : number = 1000, maxtime : number = Infinity) : { cancel : () => void } {\n\n let timeout;\n\n let check = () => {\n\n if (isWindowClosed(win)) {\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n return callback();\n }\n\n if (maxtime <= 0) {\n clearTimeout(timeout);\n } else {\n maxtime -= delay;\n timeout = setTimeout(check, delay);\n }\n };\n\n check();\n\n return {\n cancel() {\n if (timeout) {\n clearTimeout(timeout);\n }\n }\n };\n}\n\n// eslint-disable-next-line complexity\nexport function isWindow(obj : Object) : boolean {\n\n try {\n if (obj === window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (Object.prototype.toString.call(obj) === '[object Window]') {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (window.Window && obj instanceof window.Window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.self === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.parent === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.top === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n noop(obj === obj); // eslint-disable-line no-self-compare\n\n } catch (err) {\n return true;\n }\n\n try {\n noop(obj && obj.__cross_domain_utils_window_check__);\n\n } catch (err) {\n return true;\n }\n\n return false;\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined' && typeof window.location !== 'undefined');\n}\n\nexport function isCurrentDomain(domain : string) : boolean {\n if (!isBrowser()) {\n return false;\n }\n\n return (getDomain() === domain);\n}\n\nexport function isMockDomain(domain : string) : boolean {\n return domain.indexOf(PROTOCOL.MOCK) === 0;\n}\n\nexport function normalizeMockUrl(url : string) : string {\n if (!isMockDomain(getDomainFromUrl(url))) {\n return url;\n }\n\n if (!__TEST__) {\n throw new Error(`Mock urls not supported out of test mode`);\n }\n\n return url.replace(/^mock:\\/\\/[^/]+/, getActualDomain(window));\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/cross-domain-utils/src/utils.js","/* @flow */\n\nimport { noop } from './util';\nimport { getStorage } from './storage';\n\nfunction getBelterExperimentStorage() : Object {\n return getStorage({ name: 'belter_experiment' });\n}\n\nfunction isEventUnique(name : string) : boolean {\n return getBelterExperimentStorage().getSessionState(state => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\nexport type Experiment = {\n isEnabled : () => boolean,\n isDisabled : () => boolean,\n getTreatment : () => string,\n log : (string, payload? : { [string] : ?string }) => Experiment,\n logStart : (payload? : { [string] : ?string }) => Experiment,\n logComplete : (payload? : { [string] : ?string }) => Experiment\n};\n\nfunction getThrottlePercentile(name : string) : number {\n return getBelterExperimentStorage().getState(state => {\n state.throttlePercentiles = state.throttlePercentiles || {};\n state.throttlePercentiles[name] = state.throttlePercentiles[name] || Math.floor(Math.random() * 100);\n return state.throttlePercentiles[name];\n });\n}\n\nconst THROTTLE_GROUP = {\n TEST: 'test',\n CONTROL: 'control',\n THROTTLE: 'throttle'\n};\n\ntype ExperimentOptions = {\n name : string,\n sample? : number,\n logTreatment? : ({ name : string, treatment : string }) => void,\n logCheckpoint? : ({ name : string, treatment : string, checkpoint : string, payload? : { [string] : ?string } }) => void\n};\n\nexport function experiment({ name, sample = 50, logTreatment = noop, logCheckpoint = noop } : ExperimentOptions) : Experiment {\n\n let throttle = getThrottlePercentile(name);\n\n let group;\n\n if (throttle < sample) {\n group = THROTTLE_GROUP.TEST;\n } else if ((sample >= 50) || ((sample <= throttle) && (throttle < (sample * 2)))) {\n group = THROTTLE_GROUP.CONTROL;\n } else {\n group = THROTTLE_GROUP.THROTTLE;\n }\n\n let treatment = `${ name }_${ group }`;\n\n let started = false;\n let forced = false;\n\n try {\n if (window.localStorage && window.localStorage.getItem(name)) {\n forced = true;\n }\n } catch (err) {\n // pass\n }\n\n return {\n\n isEnabled() : boolean {\n return (group === THROTTLE_GROUP.TEST) || forced;\n },\n\n isDisabled() : boolean {\n return (group !== THROTTLE_GROUP.TEST) && !forced;\n },\n\n getTreatment() : string {\n return treatment;\n },\n\n log(checkpoint : string, payload? : { [string] : ?string } = {}) : Experiment {\n if (!started) {\n return this;\n }\n\n if (isEventUnique(`${ name }_${ treatment }`)) {\n logTreatment({ name, treatment });\n }\n\n if (isEventUnique(`${ name }_${ treatment }_${ checkpoint }`)) {\n logCheckpoint({ name, treatment, checkpoint, payload });\n }\n\n return this;\n },\n\n logStart(payload? : { [string] : ?string } = {}) : Experiment {\n started = true;\n return this.log(`start`, payload);\n },\n\n logComplete(payload? : { [string] : ?string } = {}) : Experiment {\n return this.log(`complete`, payload);\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/belter/src/experiment.js","/* @flow */\n\nimport { getGlobal } from './util';\n\nexport function getGlobalNameSpace<T : Object>({ name, version = 'latest' } : { name : string, version? : string }) : { get : (string, defValue? : T) => T } {\n\n let global = getGlobal();\n let globalKey = `__${ name }__${ version }_global__`;\n\n let namespace = global[globalKey] = global[globalKey] || {};\n\n return {\n get: (key : string, defValue? : T) : T => {\n // $FlowFixMe\n defValue = defValue || {};\n let item = namespace[key] = namespace[key] || defValue;\n return item;\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/belter/src/global.js","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { type SameDomainWindowType } from 'cross-domain-utils/src';\n\ntype RequestOptionsType = {\n url : string,\n method? : string,\n headers? : { [key : string] : string },\n json? : Object,\n data? : { [key : string] : string },\n body? : string,\n win? : SameDomainWindowType,\n timeout? : number\n};\n\ntype ResponseType = {\n status : number,\n headers : { [string] : string },\n body : Object\n};\n\nconst HEADERS = {\n CONTENT_TYPE: 'content-type',\n ACCEPT: 'accept'\n};\n\nlet headerBuilders = [];\n\nfunction parseHeaders(rawHeaders : string = '') : { [string] : string } {\n let result = {};\n for (let line of rawHeaders.trim().split('\\n')) {\n let [ key, ...values ] = line.split(':');\n result[key.toLowerCase()] = values.join(':').trim();\n }\n return result;\n}\n\nexport function request({ url, method = 'get', headers = {}, json, data, body, win = window, timeout = 0 } : RequestOptionsType) : ZalgoPromise<ResponseType> {\n return new ZalgoPromise((resolve, reject) => {\n\n if ((json && data) || (json && body) || (data && json)) {\n throw new Error(`Only options.json or options.data or options.body should be passed`);\n }\n\n let normalizedHeaders = {};\n\n for (let key of Object.keys(headers)) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n\n if (json) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/json';\n } else if (data || body) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/x-www-form-urlencoded; charset=utf-8';\n }\n\n normalizedHeaders[HEADERS.ACCEPT] = normalizedHeaders[HEADERS.ACCEPT] || 'application/json';\n\n for (let headerBuilder of headerBuilders) {\n let builtHeaders = headerBuilder();\n\n for (let key of Object.keys(builtHeaders)) {\n normalizedHeaders[key.toLowerCase()] = builtHeaders[key];\n }\n }\n\n let xhr = new win.XMLHttpRequest();\n\n xhr.addEventListener('load', function xhrLoad() : void {\n\n let responseHeaders = parseHeaders(this.getAllResponseHeaders());\n\n if (!this.status) {\n return reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: no response status code.`));\n }\n \n let contentType = responseHeaders['content-type'];\n let isJSON = contentType && (contentType.indexOf('application/json') === 0 || contentType.indexOf('text/json') === 0);\n let responseBody = this.responseText;\n\n try {\n responseBody = JSON.parse(responseBody);\n } catch (err) {\n if (isJSON) {\n return reject(new Error(`Invalid json: ${ this.responseText }.`));\n }\n }\n\n let res = {\n status: this.status,\n headers: responseHeaders,\n body: responseBody\n };\n\n return resolve(res);\n\n }, false);\n\n xhr.addEventListener('error', (evt) => {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: ${ evt.toString() }.`));\n }, false);\n\n xhr.open(method, url, true);\n\n for (let key in normalizedHeaders) {\n if (normalizedHeaders.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, normalizedHeaders[key]);\n }\n }\n\n if (json) {\n body = JSON.stringify(json);\n } else if (data) {\n body = Object.keys(data).map(key => {\n return `${ encodeURIComponent(key) }=${ data ? encodeURIComponent(data[key]) : '' }`;\n }).join('&');\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = function xhrTimeout() {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } has timed out`));\n };\n\n xhr.send(body);\n });\n}\n\nexport function addHeaderBuilder(method : () => { [string] : string }) {\n headerBuilders.push(method);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/belter/src/http.js","/* @flow */\n\nimport { memoize, promisify } from './util';\n\nexport function memoized(target : Object, name : string, descriptor : Object) {\n descriptor.value = memoize(descriptor.value, { name, thisNamespace: true });\n}\n\nexport function promise(target : Object, name : string, descriptor : Object) {\n descriptor.value = promisify(descriptor.value, { name });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/belter/src/decorators.js","/* @flow */\n\nexport function isPerc(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+%$/).test(str);\n}\n\nexport function isPx(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+px$/).test(str);\n}\n\nexport function toNum(val : string | number) : number {\n\n if (typeof val === 'number') {\n return val;\n }\n\n let match = val.match(/^([0-9]+)(px|%)$/);\n\n if (!match) {\n throw new Error(`Could not match css value from ${ val }`);\n }\n\n return parseInt(match[1], 10);\n}\n\nexport function toPx(val : number | string) : string {\n return `${ toNum(val) }px`;\n}\n\nexport function toCSS(val : number | string) : string {\n\n if (typeof val === 'number') {\n return toPx(val);\n }\n\n return isPerc(val) ? val : toPx(val);\n}\n\nexport function percOf(num : number, perc : string) : number {\n return parseInt(num * toNum(perc) / 100, 10);\n}\n\nexport function normalizeDimension(dim : string | number, max : number) : number {\n if (typeof dim === 'number') {\n return dim;\n } else if (isPerc(dim)) {\n return percOf(max, dim);\n } else if (isPx(dim)) {\n return toNum(dim);\n } else {\n throw new Error(`Can not normalize dimension: ${ dim }`);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/belter/src/css.js","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { noop } from './util';\n\ntype ExpectHandler = <T, A : $ReadOnlyArray<mixed>>(name : string, ?(...args : A) => T) => (...args : A) => T; // eslint-disable-line no-undef\ntype ErrorHandler = <T, A : $ReadOnlyArray<mixed>>(name : string, ?(...args : A) => T) => (...args : A) => T; // eslint-disable-line no-undef\n\nexport function wrapPromise<T>(method : ({ expect : ExpectHandler, error : ErrorHandler }) => ZalgoPromise<T>, { timeout = 2000 } : { timeout? : number } = {}) : ZalgoPromise<void> {\n let expected = [];\n let promises = [];\n\n let timeoutPromise = ZalgoPromise.delay(timeout);\n\n let expect : ExpectHandler = (name, fn = noop) => {\n let obj = { name, fn };\n expected.push(obj);\n // $FlowFixMe\n return function expectWrapper(...args) : * {\n expected.splice(expected.indexOf(obj), 1);\n let result;\n try {\n // $FlowFixMe\n result = fn.call(this, ...args);\n promises.push(ZalgoPromise.resolve(result));\n return result;\n } catch (err) {\n promises.push(ZalgoPromise.reject(err));\n throw err;\n }\n };\n };\n\n let error : ErrorHandler = (name : string, fn = noop) => {\n // $FlowFixMe\n return function errorWrapper(...args) : * {\n promises.push(ZalgoPromise.try(() => {\n // $FlowFixMe\n return fn.call(this, ...args);\n }).then(() => {\n throw new Error(`Expected ${ name } to not be called`);\n }));\n };\n };\n\n let awaitPromises = () : ZalgoPromise<void> => {\n return ZalgoPromise.try(() => {\n if (promises.length) {\n let promise = promises.pop();\n return promise.then(awaitPromises);\n } else if (expected.length) {\n return timeoutPromise.then(() => {\n if (!expected.length) {\n return awaitPromises();\n }\n });\n }\n });\n };\n\n promises.push(ZalgoPromise.try(() => method({ expect, error })));\n\n return awaitPromises().then(() => {\n if (expected.length) {\n throw new Error(`Expected ${ expected[0].name } to be called`);\n }\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/belter/src/test.js","/* @flow */\n\nexport { openBridge, linkUrl, isBridge, needsBridge, needsBridgeForBrowser, hasBridge,\n needsBridgeForWin, needsBridgeForDomain, openTunnelToOpener, destroyBridges } from './index';\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/post-robot/src/bridge/interface.js","/* @flow */\n\nexport * from './react';\nexport * from './vue';\nexport * from './angular';\nexport * from './ember';\nexport * from './glimmer';\nexport * from './angular2';\n\n\n\n// WEBPACK FOOTER //\n// ./src/drivers/index.js","/* @flow */\n\nimport { extend } from 'belter/src';\n\nimport type { Component, ComponentDriverType } from '../component/component';\nimport { CONTEXT } from '../constants';\n\ndeclare class ReactClassType {\n\n}\n\ntype ReactElementType = {\n\n};\n\ntype ReactType = {\n createClass : ({ render : ReactElementType, componentDidMount : () => void, componentDidUpdate : () => void }) => (typeof ReactClassType),\n createElement : (string, ?{ [string] : mixed }, ...children : Array<ReactElementType>) => ReactElementType\n};\n\ntype ReactDomType = {\n findDOMNode : (ReactElementType) => HTMLElement\n};\n\ntype ReactLibraryType = { React : ReactType, ReactDOM : ReactDomType };\n\nexport let react : ComponentDriverType<*, ReactLibraryType> = {\n\n global() : ?ReactLibraryType {\n if (window.React && window.ReactDOM) {\n return {\n React: window.React,\n ReactDOM: window.ReactDOM\n };\n }\n },\n\n register(component : Component<*>, { React, ReactDOM } : ReactLibraryType) : (typeof ReactClassType) {\n\n if (React.createClass) {\n\n // $FlowFixMe\n component.react = React.createClass({\n\n render() : ReactElementType {\n return React.createElement('div', null);\n },\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(CONTEXT.IFRAME, el);\n },\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n }\n });\n } else {\n // $FlowFixMe\n component.react = class extends React.Component {\n render() : ReactElementType {\n return React.createElement('div', null);\n }\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(CONTEXT.IFRAME, el);\n }\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n }\n };\n }\n\n return component.react;\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/drivers/react.js","/* @flow */\n\nimport { extend } from 'belter/src';\n\nimport type { Component, ComponentDriverType } from '../component/component';\nimport { CONTEXT } from '../constants';\n\ntype VueComponent = {\n render : (Function) => Element,\n inheritAttrs : boolean,\n mounted : () => void,\n beforeUpdate : () => void\n};\n\nexport let vue : ComponentDriverType<*, void> = {\n\n global() {\n // pass\n },\n\n register<P>(component : Component<P>) : VueComponent {\n\n return {\n render(createElement) : Element {\n return createElement('div');\n },\n\n inheritAttrs: false,\n\n mounted() {\n let el = this.$el;\n\n // $FlowFixMe\n this.parent = component.init(extend({}, this.$attrs), null, el);\n\n this.parent.render(CONTEXT.IFRAME, el);\n },\n\n beforeUpdate() {\n \n if (this.parent && this.$attrs) {\n this.parent.updateProps(extend({}, this.$attrs));\n }\n }\n };\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/drivers/vue.js","/* @flow */\n\nimport { dasherizeToCamel, replaceObject } from 'belter/src';\n\nimport type { Component, ComponentDriverType } from '../component/component';\nimport { CONTEXT } from '../constants';\n\ntype AngularModule = {\n directive : (string, () => {\n scope : { [string] : '=' | '@' },\n restrict : string,\n controller : Array<string | Function>\n }) => AngularModule\n};\n\ntype Angular = {\n module : (string, Array<string>) => AngularModule\n};\n\nexport let angular : ComponentDriverType<*, Angular> = {\n\n global() : ?Angular {\n return window.angular;\n },\n\n register(component : Component<*>, ng : Angular) : AngularModule {\n\n let module = ng.module(component.tag, []).directive(dasherizeToCamel(component.tag), () => {\n\n let scope = {};\n\n for (let key of component.getPropNames()) {\n scope[key] = '=';\n }\n\n scope.props = '=';\n\n return {\n scope,\n\n restrict: 'E',\n\n controller: [ '$scope', '$element', ($scope, $element) => {\n component.log(`instantiate_angular_component`);\n\n function safeApply() {\n if ($scope.$root.$$phase !== '$apply' && $scope.$root.$$phase !== '$digest') {\n try {\n $scope.$apply();\n } catch (err) {\n // pass\n }\n }\n }\n\n let getProps = () => {\n\n let scopeProps;\n\n if ($scope.props) {\n scopeProps = $scope.props;\n } else {\n scopeProps = {};\n for (let key of Object.keys(scope)) {\n if ($scope[key] !== undefined) {\n scopeProps[key] = $scope[key];\n }\n }\n }\n\n scopeProps = replaceObject(scopeProps, item => {\n if (typeof item === 'function') {\n return function angularWrapped() : mixed {\n let result = item.apply(this, arguments);\n safeApply();\n return result;\n };\n }\n return item;\n });\n\n return scopeProps;\n };\n\n let parent = component.init(getProps(), null, $element[0]);\n parent.render(CONTEXT.IFRAME, $element[0]);\n\n $scope.$watch(() => {\n parent.updateProps(getProps());\n });\n } ]\n };\n });\n\n return module;\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/drivers/angular.js","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class GlimmerComponentType {\n element : HTMLElement,\n args : Object\n}\n\nexport let glimmer : ComponentDriverType<*, (typeof GlimmerComponentType)> = {\n\n global() {\n // pass\n },\n\n register(component : Component<*>, GlimmerComponent : (typeof GlimmerComponentType)) : (typeof GlimmerComponentType) {\n return class extends GlimmerComponent {\n didInsertElement() {\n component.render({ ...this.args }, this.element);\n }\n };\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/drivers/glimmer.js","/* @flow */\n/* eslint new-cap: 0 */\n\nimport { replaceObject } from 'belter/src';\n\nimport type { Component, ComponentDriverType } from '../component/component';\nimport { CONTEXT } from '../constants';\n\ntype Angular2Injection = {};\n\ntype Angular2Component = {};\n\ntype Angular2Module = {};\n\ntype Angular2 = {\n Component : ({ selector : string, template : string, inputs : Array<string> }) => {\n Class : ({ constructor : Array<Angular2Injection | Function>, ngOnInit : () => void, ngOnChanges : () => void }) => Angular2Component\n },\n NgModule : ({ declarations : Array<Angular2Component>, exports : Array<Angular2Component> }) => {\n Class : ({ constructor : () => void }) => Angular2Module\n },\n ElementRef : Angular2Injection,\n NgZone : Angular2Injection\n};\n\n\nexport let angular2 : ComponentDriverType<*, Angular2> = {\n\n global() {\n // pass\n },\n\n register(zoid : Component<*>, { Component : AngularComponent, NgModule, ElementRef, NgZone }) : Angular2Module {\n\n zoid.log('initializing angular2 component');\n\n let getProps = (component) => {\n return replaceObject({ ...component.internalProps, ...component.props }, item => {\n if (typeof item === 'function') {\n return function angular2Wrapped() : void {\n return component.zone.run(() => item.apply(this, arguments));\n };\n }\n return item;\n });\n };\n\n const ComponentInstance =\n AngularComponent({\n selector: zoid.tag,\n template: '<div></div>',\n inputs: [ 'props' ]\n }).Class({\n constructor: [ ElementRef, NgZone, function angularConstructor(elementRef, zone) {\n this.elementRef = elementRef;\n this.zone = zone;\n } ],\n ngOnInit () {\n const targetElement = this.elementRef.nativeElement;\n const parent = zoid.init(getProps(this), null, targetElement);\n parent.render(CONTEXT.IFRAME, targetElement);\n this.parent = parent;\n },\n ngOnChanges() {\n if (this.parent) {\n this.parent.updateProps(getProps(this));\n }\n }\n });\n\n\n const ModuleInstance = NgModule({\n declarations: [ ComponentInstance ],\n exports: [ ComponentInstance ]\n }).Class({\n constructor () {\n // pass\n }\n });\n\n return ModuleInstance;\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/drivers/angular2.js"],"sourceRoot":""}
\No newline at end of file