3bfe1f32af93a7f842592c94e38695c9.json 5.88 KB
{"ast":null,"code":"var _interopRequireDefault=require(\"@babel/runtime/helpers/interopRequireDefault\");Object.defineProperty(exports,\"__esModule\",{value:true});exports.default=void 0;var _regenerator=_interopRequireDefault(require(\"@babel/runtime/regenerator\"));var _classCallCheck2=_interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));var _createClass2=_interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));var _invariant=_interopRequireDefault(require(\"invariant\"));var EventTypes=['url'];var listeners=[];function _validateURL(url){(0,_invariant.default)(typeof url==='string',\"Invalid URL: should be a string. Instead found: \"+url);(0,_invariant.default)(url,'Invalid URL: cannot be empty');}var Linking=function(){function Linking(){(0,_classCallCheck2.default)(this,Linking);}(0,_createClass2.default)(Linking,[{key:\"addEventListener\",value:function addEventListener(type,listener){(0,_invariant.default)(EventTypes.indexOf(type)!==-1,\"Linking.addEventListener(): \"+type+\" is not a valid event\");var nativeListener=function nativeListener(nativeEvent){return listener({url:window.location.href,nativeEvent:nativeEvent});};listeners.push({listener:listener,nativeListener:nativeListener});window.addEventListener('message',nativeListener,false);}},{key:\"removeEventListener\",value:function removeEventListener(type,listener){(0,_invariant.default)(EventTypes.indexOf(type)!==-1,\"Linking.removeEventListener(): \"+type+\" is not a valid event.\");var listenerIndex=listeners.findIndex(function(pair){return pair.listener===listener;});(0,_invariant.default)(listenerIndex!==-1,'Linking.removeEventListener(): cannot remove an unregistered event listener.');var nativeListener=listeners[listenerIndex].nativeListener;window.removeEventListener('message',nativeListener,false);listeners.splice(listenerIndex,1);}},{key:\"canOpenURL\",value:function canOpenURL(url){return _regenerator.default.async(function canOpenURL$(_context){while(1){switch(_context.prev=_context.next){case 0:_validateURL(url);return _context.abrupt(\"return\",true);case 2:case\"end\":return _context.stop();}}});}},{key:\"getInitialURL\",value:function getInitialURL(){return _regenerator.default.async(function getInitialURL$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:return _context2.abrupt(\"return\",window.location.href);case 1:case\"end\":return _context2.stop();}}});}},{key:\"openURL\",value:function openURL(url){return _regenerator.default.async(function openURL$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:_validateURL(url);window.location.href=url;case 2:case\"end\":return _context3.stop();}}});}}]);return Linking;}();var _default=new Linking();exports.default=_default;","map":{"version":3,"sources":["../../src/Linking/LinkingModule.web.ts"],"names":[],"mappings":"waAAA,4DAIA,GAAM,CAAA,UAAU,CAAG,CAAC,KAAD,CAAnB,CAEA,GAAM,CAAA,SAAS,CAAwE,EAAvF,CAEA,QAAS,CAAA,YAAT,CAAsB,GAAtB,CAAiC,CAC/B,uBAAU,MAAO,CAAA,GAAP,GAAe,QAAzB,oDAAsF,GAAtF,EACA,uBAAU,GAAV,CAAe,8BAAf,EACD,C,GAGK,CAAA,O,sKACa,I,CAAa,Q,CAAqB,CACjD,uBACE,UAAU,CAAC,OAAX,CAAmB,IAAnB,IAA6B,CAAC,CADhC,gCAEiC,IAFjC,0BAIA,GAAM,CAAA,cAAc,CAAsB,QAApC,CAAA,cAAoC,CAAA,WAAW,QACnD,CAAA,QAAQ,CAAC,CAAE,GAAG,CAAE,MAAM,CAAC,QAAP,CAAgB,IAAvB,CAA6B,WAAW,CAAX,WAA7B,CAAD,CAD2C,EAArD,CAEA,SAAS,CAAC,IAAV,CAAe,CAAE,QAAQ,CAAR,QAAF,CAAY,cAAc,CAAd,cAAZ,CAAf,EACA,MAAM,CAAC,gBAAP,CAAwB,SAAxB,CAAmC,cAAnC,CAAmD,KAAnD,EACD,C,gEAEmB,I,CAAa,Q,CAAqB,CACpD,uBACE,UAAU,CAAC,OAAX,CAAmB,IAAnB,IAA6B,CAAC,CADhC,mCAEoC,IAFpC,2BAIA,GAAM,CAAA,aAAa,CAAG,SAAS,CAAC,SAAV,CAAoB,SAAA,IAAI,QAAI,CAAA,IAAI,CAAC,QAAL,GAAkB,QAAtB,EAAxB,CAAtB,CACA,uBACE,aAAa,GAAK,CAAC,CADrB,CAEE,8EAFF,EAIA,GAAM,CAAA,cAAc,CAAG,SAAS,CAAC,aAAD,CAAT,CAAyB,cAAhD,CACA,MAAM,CAAC,mBAAP,CAA2B,SAA3B,CAAsC,cAAtC,CAAsD,KAAtD,EACA,SAAS,CAAC,MAAV,CAAiB,aAAjB,CAAgC,CAAhC,EACD,C,8CAEgB,G,uHACf,YAAY,CAAC,GAAD,CAAZ,C,gCACO,I,kQAIA,MAAM,CAAC,QAAP,CAAgB,I,yFAGX,G,uHACZ,YAAY,CAAC,GAAD,CAAZ,CACA,MAAM,CAAC,QAAP,CAAgB,IAAhB,CAAuB,GAAvB,C,mFAIW,GAAI,CAAA,OAAJ,E","sourcesContent":["import invariant from 'invariant';\n\nimport { URLListener, NativeURLListener } from './Linking.types';\n\nconst EventTypes = ['url'];\n\nconst listeners: Array<{ listener: URLListener; nativeListener: NativeURLListener }> = [];\n\nfunction _validateURL(url: string): void {\n  invariant(typeof url === 'string', `Invalid URL: should be a string. Instead found: ${url}`);\n  invariant(url, 'Invalid URL: cannot be empty');\n}\n\n// TODO: Bacon: For better parity this should extend EventEmitter like React Native.\nclass Linking {\n  addEventListener(type: 'url', listener: URLListener): void {\n    invariant(\n      EventTypes.indexOf(type) !== -1,\n      `Linking.addEventListener(): ${type} is not a valid event`\n    );\n    const nativeListener: NativeURLListener = nativeEvent =>\n      listener({ url: window.location.href, nativeEvent });\n    listeners.push({ listener, nativeListener });\n    window.addEventListener('message', nativeListener, false);\n  }\n\n  removeEventListener(type: 'url', listener: URLListener): void {\n    invariant(\n      EventTypes.indexOf(type) !== -1,\n      `Linking.removeEventListener(): ${type} is not a valid event.`\n    );\n    const listenerIndex = listeners.findIndex(pair => pair.listener === listener);\n    invariant(\n      listenerIndex !== -1,\n      'Linking.removeEventListener(): cannot remove an unregistered event listener.'\n    );\n    const nativeListener = listeners[listenerIndex].nativeListener;\n    window.removeEventListener('message', nativeListener, false);\n    listeners.splice(listenerIndex, 1);\n  }\n\n  async canOpenURL(url: string): Promise<boolean> {\n    _validateURL(url);\n    return true;\n  }\n\n  async getInitialURL(): Promise<string> {\n    return window.location.href;\n  }\n\n  async openURL(url: string): Promise<void> {\n    _validateURL(url);\n    window.location.href = url;\n  }\n}\n\nexport default new Linking();\n"],"sourceRoot":""},"metadata":{},"sourceType":"script"}