{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./assets/images/logo.svg","webpack:///../node_modules/react-transition-group/esm/utils/ChildMapping.js","webpack:///../node_modules/nanoid/url-alphabet/index.js","webpack:///../node_modules/nanoid/index.browser.js","webpack:///../node_modules/react-transition-group/esm/TransitionGroup.js","webpack:///../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./components/Toast/Toast.js","webpack:///./components/Toast/ToastContainer.js","webpack:///./components/Toast/index.js","webpack:///../node_modules/react-transition-group/esm/utils/reflow.js","webpack:///./hooks/useOnline.js","webpack:///./hooks/useSWMessage.js","webpack:///./hooks/useOnHistoryPush.js","webpack:///./reducers/rooms.js","webpack:///../node_modules/dom-helpers/esm/removeClass.js","webpack:///../node_modules/react-transition-group/esm/CSSTransition.js","webpack:///../node_modules/dom-helpers/esm/addClass.js","webpack:///../node_modules/dom-helpers/esm/hasClass.js","webpack:///../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///../node_modules/copy-to-clipboard/index.js","webpack:///../node_modules/classnames/index.js","webpack:///./hooks/useInstantRoom.js","webpack:///./routes/App/NewUser/NewUser.js","webpack:///../node_modules/preact-feather/src/icons/box.tsx","webpack:///./components/FileDrop/FileDrop.js","webpack:///../node_modules/preact-feather/src/icons/image.tsx","webpack:///../node_modules/animejs/lib/anime.es.js","webpack:///./utils/visualizer.js","webpack:///./utils/formatSize.js","webpack:///../node_modules/preact-feather/src/icons/check-circle.tsx","webpack:///../node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./routes/App/Support/Support.js","webpack:////app/common/utils/socket.js","webpack:///./utils/fileShare.js","webpack:///./utils/socketConnect.js","webpack:///../node_modules/preact-feather/src/icons/x.tsx","webpack:///../node_modules/react-localstorage-hooks/esm/utils.js","webpack:///../node_modules/preact-feather/src/icons/grid.tsx","webpack:///../node_modules/preact-feather/src/icons/film.tsx","webpack:///./components/Modal/Modal.js","webpack:///../node_modules/preact-feather/src/icons/x-circle.tsx","webpack:///./routes/App/App.js","webpack:///../node_modules/preact-cli/src/lib/entry.js","webpack:///./routes/App/contexts/PWAInstall.js","webpack:///../node_modules/preact/hooks/src/index.js","webpack:///./routes/Pages/Pages.js","webpack:///./index.js","webpack:///../node_modules/preact-feather/src/icons/menu.tsx","webpack:///../node_modules/preact-feather/src/icons/github.tsx","webpack:///./components/Pill/Pill.js","webpack:///./routes/Pages/components/Header/Header.js","webpack:///./routes/Pages/components/Footer/Footer.js","webpack:///./assets/images/illustrations/two_devices.svg","webpack:///./assets/images/illustrations/three_devices.svg","webpack:///./assets/images/illustrations/earth.svg","webpack:///./routes/Pages/Home/Home.js","webpack:///./assets/images/working/join-room.png","webpack:///./assets/images/working/send-file.png","webpack:///./assets/images/working/install.png","webpack:///./assets/images/browser-icons/chrome.svg","webpack:///./assets/images/browser-icons/firefox.svg","webpack:///./assets/images/browser-icons/edge.svg","webpack:///./assets/images/browser-icons/safari.svg","webpack:///./routes/Pages/Working/Working.js","webpack:///../node_modules/preact-feather/src/icons/help-circle.tsx","webpack:///../node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack:///../node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack:///../node_modules/date-fns/esm/toDate/index.js","webpack:///../node_modules/date-fns/esm/compareAsc/index.js","webpack:///../node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack:///../node_modules/date-fns/esm/endOfDay/index.js","webpack:///../node_modules/date-fns/esm/endOfMonth/index.js","webpack:///../node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack:///../node_modules/date-fns/esm/differenceInMonths/index.js","webpack:///../node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack:///../node_modules/date-fns/esm/_lib/roundingMethods/index.js","webpack:///../node_modules/date-fns/esm/differenceInSeconds/index.js","webpack:///../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack:///../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack:///../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack:///../node_modules/date-fns/esm/_lib/assign/index.js","webpack:///../node_modules/date-fns/esm/_lib/cloneObject/index.js","webpack:///../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack:///../node_modules/date-fns/esm/formatDistance/index.js","webpack:///../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack:///../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack:///../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack:///../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack:///../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack:///../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack:///../node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack:///../node_modules/date-fns/esm/locale/en-US/index.js","webpack:///./components/Fab/Fab.js","webpack:///../node_modules/scriptjs/dist/script.js","webpack:///./routes/App/FileTransfer/FileTransfer.js","webpack:///./routes/App/Rooms/components/LocalRoomHelpModal/LocalRoomHelpModal.js","webpack:///./routes/App/layouts/AppLanding/AppLanding.js","webpack:///../node_modules/preact-feather/src/icons/arrow-left.tsx","webpack:///./assets/images/illustrations/network.svg","webpack:///../node_modules/react-localstorage-hooks/esm/createLocalStorageDispatch/createLocalStorageDispatch.js","webpack:///../node_modules/preact-router/src/util.js","webpack:///../node_modules/preact-router/src/index.js","webpack:///../node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack:///../node_modules/preact-feather/src/icons/file.tsx","webpack:///../node_modules/preact-feather/src/icons/arrow-down-circle.tsx","webpack:///./icons/QRCode.js","webpack:///./routes/App/Rooms/components/NewRoomModal/NewRoomModal.js","webpack:///./components/TransitionRouter/TransitionRoute.js","webpack:///../node_modules/react-transition-group/esm/SwitchTransition.js","webpack:///./components/TransitionRouter/TransitionRouter.js","webpack:///./assets/images/illustrations/four-o-four.svg","webpack:///./routes/Pages/FourOFour/FourOFour.js","webpack:///../node_modules/preact-feather/src/icons/plus.tsx","webpack:///../node_modules/preact-feather/src/icons/settings.tsx","webpack:///../node_modules/react-localstorage-hooks/node_modules/tslib/tslib.es6.js","webpack:///../node_modules/react-localstorage-hooks/esm/useLocalStorageSelector/useLocalStorageSelector.js","webpack:///../node_modules/preact-feather/src/icons/zap.tsx","webpack:///../node_modules/preact/src/util.js","webpack:///../node_modules/preact/src/create-element.js","webpack:///../node_modules/preact/src/component.js","webpack:///../node_modules/preact/src/diff/children.js","webpack:///../node_modules/preact/src/diff/props.js","webpack:///../node_modules/preact/src/diff/index.js","webpack:///../node_modules/preact/src/render.js","webpack:///../node_modules/preact/src/clone-element.js","webpack:///../node_modules/preact/src/create-context.js","webpack:///../node_modules/preact/src/options.js","webpack:///../node_modules/preact/src/constants.js","webpack:///../node_modules/preact/src/diff/catch-error.js","webpack:///../node_modules/preact-feather/src/icons/music.tsx","webpack:///./routes/App/Settings/Settings.js","webpack:///./routes/App/JoinInstantRoom/JoinInstantRoom.js","webpack:///./components/Loading/Loading.js","webpack:///./utils/pluralize.js","webpack:///../node_modules/preact/compat/src/util.js","webpack:///../node_modules/preact/compat/src/PureComponent.js","webpack:///../node_modules/preact/compat/src/memo.js","webpack:///../node_modules/preact/compat/src/forwardRef.js","webpack:///../node_modules/preact/compat/src/suspense.js","webpack:///../node_modules/preact/compat/src/suspense-list.js","webpack:///../node_modules/preact/compat/src/portals.js","webpack:///../node_modules/preact/compat/src/render.js","webpack:///../node_modules/preact/compat/src/index.js","webpack:///../node_modules/preact/compat/src/Children.js","webpack:///../node_modules/react-transition-group/esm/Transition.js","webpack:///../node_modules/react-transition-group/esm/config.js","webpack:///./routes/App/contexts/QueuedFiles.js","webpack:///../node_modules/preact-feather/src/icons/send.tsx","webpack:///../node_modules/downloadjs/download.js","webpack:///./utils/urls.js","webpack:///../node_modules/preact-router/match.js","webpack:////app/common/constants.js","webpack:///./routes/App/Rooms/components/Room/Room.js","webpack:///../node_modules/preact-feather/src/icons/gift.tsx","webpack:///../node_modules/toggle-selection/index.js","webpack:///../node_modules/preact-feather/src/icons/loader.tsx","webpack:///../node_modules/preact-feather/src/icons/home.tsx","webpack:///../node_modules/preact-feather/src/icons/share-2.tsx","webpack:///./components/NicknameInput/NicknameInput.js","webpack:///./routes/App/Rooms/Rooms.js"],"names":["__webpack_require__","moduleId","installedModules","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_objectWithoutPropertiesLoose","source","excluded","target","sourceKeys","keys","length","indexOf","getChildMapping","children","mapFn","result","Children","map","forEach","child","isValidElement","mapper","getProp","prop","props","getNextChildMapping","nextProps","prevChildMapping","onExited","nextChildMapping","prev","next","getValueForKey","nextKeysPending","pendingKeys","prevKey","push","childMapping","nextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","in","cloneElement","exit","enter","nanoid","size","crypto","getRandomValues","Uint8Array","reduce","id","byte","toString","toUpperCase","values","obj","k","TransitionGroup","_React$Component","context","_this","handleExited","this","self","ReferenceError","_assertThisInitialized","state","contextValue","isMounting","firstRender","_inheritsLoose","_proto","componentDidMount","mounted","setState","componentWillUnmount","getDerivedStateFromProps","_ref","appear","node","currentChildMapping","_extends","render","_this$props","Component","component","childFactory","React","createElement","TransitionGroupContext","Provider","defaultProps","Toast","class","ToastContainer","queue","message","CSSTransition","classNames","timeout","unmountOnExit","onEnter","style","marginBottom","offsetHeight","marginTop","onEntering","container","setQueue","newQueue","window","document","body","appendChild","toast","item","setTimeout","slice","forceReflow","scrollTop","useOnline","isOnline","setOnline","useState","navigator","onLine","useEffect","handleNetworkStatus","addEventListener","removeEventListener","useSWMessage","initial","action","data","setData","serviceWorker","handleMessage","event","useOnHistoryPush","cb","pushState","history","args","apply","removeRoom","rooms","idx","filter","_","dispatcher","createLocalStorageDispatch","type","payload","roomIdx","findIndex","room","remainingRooms","updatedRoom","lastJoin","Date","getTime","replaceClassName","origClass","classToRemove","replace","RegExp","removeClass","classes","split","className","element","classList","remove","setAttribute","baseVal","_len","arguments","Array","_key","concat","appliedClasses","maybeNode","maybeAppearing","_this$resolveArgument","resolveArguments","appearing","removeClasses","addClass","_this$resolveArgument2","onEntered","_this$resolveArgument3","onExit","onExiting","_this$resolveArgument5","nodeRef","current","getClassNames","isStringClassNames","baseClassName","activeClassName","doneClassName","phase","add","contains","hasClass","_addClass","_this$appliedClasses$","base","active","done","Transition","_setPrototypeOf","setPrototypeOf","__proto__","subClass","superClass","constructor","deselectCurrent","require","clipboardToIE11Formatting","text","options","debug","reselectPrevious","range","selection","mark","success","createRange","getSelection","textContent","ariaHidden","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","e","stopPropagation","format","preventDefault","clipboardData","console","warn","clearData","onCopy","selectNodeContents","addRange","execCommand","Error","err","error","copyKey","test","userAgent","prompt","removeRange","removeAllRanges","removeChild","arg","argType","isArray","inner","includes","hasOwn","join","default","useInstantRoom","loading","setLoading","setError","async","res","fetch","urls","SERVER_HOST","json","registerUser","user","FormData","NewUser","src","logo","alt","network","onSubmit","NicknameInput","input","Box","color","xmlns","width","height","viewBox","fill","stroke","points","x1","y1","x2","y2","FileDrop","onFile","border","setBorder","handleDrag","borderStyle","onDragOver","onDragLeave","dropHandler","files","dataTransfer","Image","x","y","rx","ry","cx","cy","minMax","val","min","max","Math","stringContains","str","applyArguments","func","parseEasingParameters","string","match","exec","parseFloat","spring","duration","solver","progress","zeta","exp","w0","cos","wd","b","sin","params","mass","is","und","stiffness","damping","velocity","sqrt","cached","cache","springs","frame","elapsed","rest","steps","ceil","parseEasings","easing","fnc","ease","penner","bezier","selectString","querySelectorAll","filterArray","arr","callback","len","thisArg","flattenArray","a","toArray","NodeList","HTMLCollection","arrayContains","some","cloneObject","clone","replaceObjectProps","o1","o2","mergeObjects","colorToRgb","rgb","rgbValue","hex","hexValue","g","parseInt","hexToRgba","hsl","hslValue","hue2rgb","q","h","hslToRgba","getUnit","getFunctionValue","animatable","total","getAttribute","el","convertPxToUnit","unit","CSS","tempEl","tagName","parentEl","parentNode","factor","offsetWidth","convertedUnit","getCSSValue","uppercasePropName","toLowerCase","getComputedStyle","getPropertyValue","getAnimationType","dom","inp","nil","svg","validTransforms","getElementTransforms","transform","reg","transforms","Map","set","getTransformValue","propName","defaultVal","getTransformUnit","list","getOriginalTargetValue","getRelativeValue","to","from","operator","u","validateValue","col","originalUnit","unitLess","substr","getDistance","p1","p2","pow","getPolylineLength","previousPos","totalLength","numberOfItems","currentPos","getItem","getTotalLength","PI","getCircleLength","getRectLength","getLineLength","getPolygonLength","getParentSvg","pathEl","svgData","parentSvgEl","getParentSvgEl","rect","getBoundingClientRect","viewBoxAttr","w","vW","vH","getPathProgress","path","isPathTargetInsideSVG","point","offset","getPointAtLength","p0","scaleX","scaleY","atan2","decomposeValue","rgx","pth","original","numbers","Number","strings","parseTargets","targets","pos","getAnimatables","parsed","normalizePropertyTweens","tweenSettings","settings","propArray","v","delay","endDelay","getProperties","properties","keyframes","propertyNames","loop","newKey","flattenKeyframes","tweens","normalizeTweens","previousTween","tween","normalizeTweenValues","tweenValue","toUnit","originalValue","previousValue","fromUnit","start","end","isPath","isColor","round","setTargetsValue","valueUnit","animType","setProgressValue","getAnimations","animatables","lastTween","createAnimation","getInstanceTimings","animations","animLength","getTlOffset","anim","timelineOffset","timings","isDocumentHidden","hidden","anime","makePromise","instance","promise","Promise","_resolve","resolve","finished","toggleInstanceDirection","direction","reversed","adjustTime","time","resetTime","startTime","lastTime","currentTime","speed","seekChild","seek","setAnimationsProgress","insTime","animationsLength","tweenLength","eased","isNaN","toNumbersLength","toNumber","fromNumber","stringsLength","n$1","currentValue","setCallback","passThrough","setInstanceProgress","engineTime","insDuration","insDelay","insEndDelay","reversePlayback","i$1","childrenLength","syncInstanceChildren","began","loopBegan","changeBegan","changeCompleted","remaining","now","paused","completed","instanceSettings","defaultInstanceSettings","defaultTweenSettings","instanceID","createNewInstance","reset","_onDocumentVisibility","tick","pause","play","activeInstances","engine","reverse","restart","removeTargetsFromInstance","autoplay","removeTargetsFromAnimations","targetsArray","splice","childAnimations","eases","functionEasings","update","begin","loopBegin","changeBegin","change","changeComplete","loopComplete","complete","SVGElement","HTMLInputElement","nodeType","A","aA1","aA2","B","C","calcBezier","aT","getSlope","kSampleStepSize","mX1","mY1","mX2","mY2","getTForX","aX","intervalStart","currentSample","kSplineTableSize","sampleValues","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","abs","binarySubdivide","Float32Array","linear","Sine","Circ","Back","Bounce","pow2","Elastic","amplitude","period","asin","easeIn","css","attribute","manual","last","step","activeInstancesLength","activeInstance","raf","requestAnimationFrame","undefined","suspendWhenDocumentHidden","cancelAnimationFrame","version","running","convertPx","percent","setDashoffset","pathLength","stagger","grid","axis","fromIndex","fromFirst","fromCenter","fromLast","isRange","val1","val2","maxValue","index","fromX","fromY","floor","distanceX","distanceY","timeline","tl","instanceParams","ins","tlIndex","insParams","tlDuration","random","Visualizer","canvas","ctx","getContext","updateCanvasSize","nodes","sentTo","receivedBy","draw","dpr","devicePixelRatio","innerHeight","innerWidth","scale","translate","updateAllPos","divisions","angle","addNode","isClient","peerId","nodeData","radius","textColor","removeNode","nodeIdx","startSharing","stopSharing","clearRect","connect","sender","receiver","dis","CanvasElements","Line","borderWidth","borderColor","primaryColor","find","Circle","background","Text","font","align","baseline","setTransferPercentage","percentage","destroy","formatSize","precision","kbs","mbs","toFixed","CheckCircle","assign","Support","title","subtitle","href","Socket","socket","ip","binaryType","callbacks","msg","JSON","parse","listen","on","off","send","stringify","close","code","reason","trackers","announce","FileShare","torrentClient","WebTorrent","tracker","rtcConfig","iceServers","isWebRTC","WEBRTC_SUPPORT","receiveFiles","onMeta","onProgress","onDone","metaData","constants","FILE_TORRENT","infoHash","torrent","_onTorrent","fileParts","statProg","FILE_INIT","Blob","meta","CHUNK","byteLength","FILE_STATUS","peer","updateInterval","setInterval","uploadSpeed","downloadSpeed","clearInterval","sendFileSocket","file","numPeers","onSocketProgress","reader","stream","getReader","transferStatus","peers","sharedSize","read","buffer","useTorrent","onTorrentProgress","inputMap","totalSize","TORRENT_SIZE_LIMIT","ERR_LARGE_FILE","pluralize","seed","filesMeta","WS_SIZE_LIMIT","socketConnect","username","WebSocket","WS_HOST","fileShare","JOIN","roomName","X","deserialize","serialize","Grid","Film","Modal","isClosable","isOpen","onClose","showContents","setShowContents","clearTimeout","useAnimatedVisibility","toggle","handleEsc","keyCode","which","createPortal","opacity","visibility","onClick","onKeyDown","XCircle","App","isLoaded","setLoaded","isRegistered","useLocalStorageSelector","queuedFiles","setQueuedFiles","SW_LOAD_FILES","controller","postMessage","SW_SHARE_READY","scriptjs","v2Converter","updateLocalStorageSchema","route","fullScreen","hydrate","Preact","interopDefault","normalizeURL","url","register","__webpack_public_path__","root","getElementById","firstElementChild","init","app","preRenderData","inlineDataElement","querySelector","decodeURI","innerHTML","CLI_DATA","currentURL","location","pathname","PWAInstallProvider","installable","setInstallable","deferredPrompt","useRef","handler","PWAInstall","createContext","getHookState","__h","currentComponent","currentHook","hooks","__H","__","__V","EMPTY","initialState","useReducer","invokeOrReturn","reducer","hookState","currentIndex","_reducer","__N","nextValue","_hasScuFromHooks","prevScu","shouldComponentUpdate","stateHooks","every","shouldUpdate","hookItem","__c","__s","argsChanged","_pendingArgs","useLayoutEffect","initialValue","useMemo","useImperativeHandle","ref","createHandle","factory","useCallback","useContext","provider","sub","useDebugValue","formatter","useId","__v","__m","mask","flushAfterPaintEffects","afterPaintEffects","shift","invokeCleanup","invokeEffect","__e","afterNextFrame","HAS_RAF","hook","comp","cleanup","oldArgs","newArgs","f","previousComponent","prevRaf","oldBeforeDiff","oldBeforeRender","oldAfterDiff","diffed","oldCommit","oldBeforeUnmount","unmount","vnode","commitQueue","hasErrored","Pages","FourOFour","Blaze","onChange","scrollTo","Menu","Github","Pill","Header","isMenuOpen","setMenuOpen","pkg","display","rel","Footer","Home","attributeName","dur","keySplines","calcMode","keyTimes","twoDevices","threeDevices","earth","Working","joinRoom","sendFile","chrome","edge","firefox","safari","install","HelpCircle","getDefaultOptions","defaultOptions","requiredArgs","required","TypeError","_typeof","iterator","toDate","argument","argStr","stack","NaN","compareAsc","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","diff","differenceInCalendarMonths","yearDiff","getFullYear","monthDiff","getMonth","endOfDay","dirtyDate","date","setHours","endOfMonth","month","setFullYear","isLastDayOfMonth","differenceInMonths","sign","difference","getDate","setDate","setMonth","isLastMonthNotFull","differenceInMilliseconds","getRoundingMethod","method","roundingMap","differenceInSeconds","roundingMethod","buildFormatLongFn","String","defaultWidth","formats","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","pattern","findKey","valueCallback","predicate","array","getTimezoneOffsetInMilliseconds","utcDate","UTC","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","formatDistance","dirtyBaseDate","_options$locale","locale","defaultLocale","RangeError","comparison","localizeOptions","addSuffix","Boolean","months","seconds","offsetInSeconds","minutes","includeSeconds","MINUTES_IN_DAY","hours","MINUTES_IN_MONTH","days","nearestMonth","monthsSinceStartOfYear","years","trunc","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","token","count","tokenValue","formatLong","full","long","medium","short","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","formatRelative","localize","ordinalNumber","dirtyNumber","number","rem100","era","narrow","abbreviated","wide","quarter","day","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","parsePattern","parseResult","any","weekStartsOn","firstWeekContainsDate","Fab","variant","ariaLabel","definition","ar","fn","j","each","$script","paths","idOrDone","optDone","loopFn","dset","idOrDoneIsDone","force","scriptpath","scripts","ids","loaded","doc","onload","onerror","urlArgs","head","insertBefore","lastChild","getElementsByTagName","order","ready","deps","req","missing","dep","define","Canvas","memo","forwardRef","withQueuedFiles","PureComponent","super","inputFiles","isSelectorEnabled","filesQueued","sendFiles","isP2P","client","wires","fileSize","receivers","wire","visualizer","uploaded","resetState","sent","catch","errorModal","share","copyLink","selectFiles","handleShare","copy","trim","savedData","localStorage","isLocal","showQRCodeModal","createRef","fileInput","roomsDispatch","onUserJoin","users","onUserLeave","USER_JOIN","USER_LEAVE","ERR_CONN_CLOSED","clearReceiver","sentBy","getBlob","blob","download","handleWindowPasteEvent","toggleQRCodeModal","getFileIcon","renderFile","fileProgress","renderErrorContent","ERR_SAME_NAME","handleNewRoom","reload","back","with","disabled","multiple","handleQueuedFiles","click","LocalRoomHelpModal","onRoomJoin","Navigation","AppLanding","outcome","userChoice","ga","eventCategory","eventAction","ArrowLeft","updatedData","setItem","dispatchEvent","StorageEvent","newValue","let","opts","ret","matches","decodeURIComponent","segmentize","charAt","param","flags","plus","star","pathRankSort","rank","prepareVNodeForRanking","rankSegment","rankChild","segment","getCurrentUrl","customHistory","getCurrentLocation","search","ROUTERS","canRoute","setUrl","routeTo","didRoute","subscribers","routeFromLink","handleLinkClick","ctrlKey","metaKey","altKey","shiftKey","button","currentTarget","prevent","stopImmediatePropagation","delegateLinkHandler","nodeName","hasAttribute","eventListenersInitialized","Router","static","const","getMatchingChildren","updating","forceUpdate","componentWillMount","unlisten","componentWillUpdate","componentDidUpdate","invoke","sort","newProps","previous","previousUrl","router","Link","Route","File","ArrowDownCircle","QRCode","NewRoomModal","onNewRoom","getInstantRoom","isLoading","formData","maxlength","placeholder","onInvalid","setCustomValidity","TransitionRoute","_leaveRenders","_enterRenders","modes","callHook","_element$props","leaveRenders","changeState","ENTERING","_ref2","enterRenders","_ref3","ENTERED","_ref4","SwitchTransition","status","appeared","oldChildren","newChildren","EXITING","_this$state","TransitionRouter","handleRouteChange","nextDepth","prevDepth","FourOFourVis","RedirectToFourOFour","Plus","Settings","__assign","selector","equalityFn","_a","handleStorage","selectedData","Zap","normalizedProps","createVNode","__k","__b","__d","vnodeId","Fragment","getDomSibling","childIndex","sibling","updateParentDomPointers","enqueueRender","rerenderQueue","process","prevDebounce","debounceRendering","__r","oldVNode","oldDom","parentDom","ownerSVGElement","commitRoot","diffChildren","renderResult","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","childVNode","newDom","firstChildDom","refs","EMPTY_ARR","oldChildrenLength","EMPTY_OBJ","reorderChildren","placeChild","applyRef","tmp","toChildArray","out","nextDom","sibDom","outer","nextSibling","setStyle","setProperty","IS_NON_DIMENSIONAL","oldValue","useCapture","cssText","eventProxyCapture","eventProxy","removeAttribute","newVNode","isNew","oldProps","oldState","snapshot","clearProcessingException","componentContext","renderHook","newType","contextType","__E","doRender","componentWillReceiveProps","_sb","__P","getChildContext","getSnapshotBeforeUpdate","diffElementNodes","oldHtml","newHtml","localName","createTextNode","createElementNS","childNodes","dangerouslySetInnerHTML","attributes","__html","diffProps","checked","parentVNode","skipRemove","replaceNode","firstChild","defaultValue","contextId","Consumer","subs","_props","old","errorInfo","ctor","handled","getDerivedStateFromError","componentDidCatch","Music","saveSettings","clearAllData","nickname","JoinInstantRoom","Loading","numItems","singularStr","pluralStr","shallowDiffers","comparer","updateRef","Memoed","displayName","isReactComponent","Forwarded","$$typeof","REACT_FORWARD_SYMBOL","__f","detachedClone","detachedParent","effect","removeOriginal","originalParent","Suspense","_suspenders","suspended","__a","SuspenseList","_next","_map","ContextProvider","Portal","_container","_temp","containerInfo","empty","isPropagationStopped","cancelBubble","isDefaultPrevented","defaultPrevented","REACT_ELEMENT_TYPE","preactCloneElement","startTransition","isPureReactComponent","oldDiffHook","for","only","normalized","oldCatchError","then","oldUnmount","__R","suspendingVNode","suspendingComponent","resolved","onResolved","onSuspensionComplete","suspendedVNode","pop","wasHydrating","detachedComponent","fallback","delete","revealOrder","delegated","unsuspend","wrappedUnsuspend","CAMEL_PROPS","IS_DOM","onChangeInputType","configurable","writable","oldEventHook","persist","nativeEvent","classNameDescriptor","oldVNodeHook","nonCustomElement","selected","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","useInsertionEffect","useTransition","useDeferredValue","useSyncExternalStore","subscribe","getSnapshot","_useState","_instance","_getSnapshot","parent","preactRender","preactHydrate","unmountComponentAtNode","createFactory","findDOMNode","flushSync","unstable_batchedUpdates","StrictMode","lazy","loader","Lazy","prom","ReactCurrentDispatcher","readContext","noop","UNMOUNTED","EXITED","initialStatus","appearStatus","mountOnEnter","nextCallback","prevState","updateStatus","prevProps","nextStatus","cancelNextCallback","getTimeouts","mounting","ReactDOM","performEnter","performExit","_this2","timeouts","enterTimeout","config","safeSetState","onTransitionEnd","_this3","cancel","nextState","setNextCallback","_this4","addEndListener","childProps","QueuedFiles","queued","Send","strFileName","strMimeType","dataUrlToBlob","strUrl","parts","binData","atob","mx","uiArr","charCodeAt","myBlob","saver","winMode","anchor","fileName","URL","revokeObjectURL","defaultMime","open","confirm","mimeType","MozBlob","WebKitBlob","ajax","XMLHttpRequest","responseType","response","msSaveBlob","tempUiArr","createObjectURL","btoa","encodeURIComponent","FileReader","readAsDataURL","protocol","host","_possibleConstructorReturn","Match","_preact","_preactRouter","_Component","nextUrl","_inherits","_objectWithoutProperties","RoomContainer","as","highlighted","Tag","RoomName","RoomDescription","RoomSecondaryAction","RoomPeers","localPeers","Gift","rangeCount","activeElement","ranges","getRangeAt","blur","focus","Loader","Share2","RoomsList","setLocalPeers","showLocalRoomModal","setShowLocalRoomModal","handlePeersStream","localPeersSource","EventSource","role","tabIndex","Rooms","isModalOpen","setModal","roomURL"],"mappings":"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","file":"bundle.6fb58.esm.js","sourcesContent":[" \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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"Pq/i\");\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","export default __webpack_public_path__ + \"17374ef9af90bd22669afd36841b83ed.svg\";","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nexport { urlAlphabet }\n","import { urlAlphabet } from './url-alphabet/index.js'\nlet random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nlet customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nlet customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nlet nanoid = (size = 21) =>\n crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => {\n byte &= 63\n if (byte < 36) {\n id += byte.toString(36)\n } else if (byte < 62) {\n id += (byte - 26).toString(36).toUpperCase()\n } else if (byte > 62) {\n id += '-'\n } else {\n id += '_'\n }\n return id\n }, '')\nexport { nanoid, customAlphabet, customRandom, urlAlphabet, random }\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import { h } from 'preact';\n\nimport './Toast.scoped.scss';\n\nconst Toast = props => (\n
\n);\n\nexport default Toast;","import { h } from 'preact';\nimport { TransitionGroup, CSSTransition } from 'react-transition-group';\n\nimport Toast from './Toast';\nimport './ToastContainer.scoped.scss';\n\nfunction ToastContainer({ queue }) {\n return (\n
\n \n {\n queue.map(({ message, id }) => (\n {\n node.style.marginBottom = `-${node.offsetHeight}px`;\n node.style.marginTop = `0px`;\n }}\n onEntering={node => {\n node.style.marginTop = '';\n node.style.marginBottom = '';\n }}\n >\n {message}\n \n ))\n }\n \n
\n );\n}\n\nexport default ToastContainer;\n","import { h, render } from 'preact';\nimport { nanoid } from 'nanoid';\nimport ToastContainer from './ToastContainer';\n\nlet container;\nlet queue = [];\n\nconst setQueue = (newQueue) => {\n if (typeof window === 'undefined') return;\n\n queue = newQueue;\n\n if (!container) {\n container = document.createElement('div');\n document.body.appendChild(container);\n }\n\n render(, container);\n};\n\nsetQueue([]);\n\nconst toast = (message) => {\n const item = { message, id: nanoid(8) };\n if (queue.length < 4) {\n setQueue([ ...queue, item ]);\n\n setTimeout(() => {\n setQueue(queue.slice(1));\n }, 4000);\n } else {\n setQueue([ ...queue.slice(1), item ])\n }\n};\n\nexport { toast };","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import { useState, useEffect } from 'preact/hooks';\n\n/**\n * Subscribes to navigator.onLine to detect network status\n * @returns {Boolean} Whether device is online\n */\nfunction useOnline() {\n const [isOnline, setOnline] = useState(typeof window !== 'undefined' ? navigator.onLine : true);\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const handleNetworkStatus = () => {\n setOnline(navigator.onLine);\n };\n\n window.addEventListener('offline', handleNetworkStatus);\n window.addEventListener('online', handleNetworkStatus);\n\n return () => {\n window.removeEventListener('online', handleNetworkStatus);\n window.removeEventListener('offline', handleNetworkStatus);\n };\n }, []);\n \n return isOnline;\n}\n\nexport default useOnline;\n","import { useState, useEffect } from 'preact/hooks';\n\n/**\n * Subscribes to a message sent from service worker\n * @param {*} initial Initial state of the message\n * @param {String} action Action to listen from service worker\n * @returns Message associated with the listened action\n */\nfunction useSWMessage(initial, action) {\n const [data, setData] = useState(initial);\n\n useEffect(() => {\n if (typeof window === 'undefined' || !navigator.serviceWorker) return;\n\n const handleMessage = (event) => {\n if (event.data.action === action) {\n setData(event.data.data);\n }\n };\n\n navigator.serviceWorker.addEventListener('message', handleMessage);\n\n return () => navigator.serviceWorker.removeEventListener('message', handleMessage);\n }, [action]);\n\n return [data, setData];\n}\n\nexport default useSWMessage;\n","import { useEffect } from 'preact/hooks';\n\n/**\n * Subscribes to history push events\n * @param {Function} cb Callback function called when route is pushed to history\n */\nfunction useOnHistoryPush(cb) {\n useEffect(() => {\n /**\n * TODO: Check the callback order when the hook is used in multiple places,\n * as the function would get overrided multiple times\n */\n const pushState = history.pushState;\n\n history.pushState = function(...args) {\n cb();\n return pushState.apply(history, args);\n };\n\n return () => {\n history.pushState = pushState;\n }\n }, []);\n}\n\nexport default useOnHistoryPush;","import { createLocalStorageDispatch } from 'react-localstorage-hooks';\n\nfunction removeRoom(rooms, idx) {\n return rooms.filter((_, i) => i !== idx);\n}\n\n/**\n * Reducer that returns new state of rooms list\n */\nfunction roomsReducer(data, { type, payload }) {\n switch (type) {\n case 'remove-room':\n return { ...data, rooms: removeRoom(data.rooms, payload) };\n\n case 'add-room':\n const roomIdx = data.rooms.findIndex((room) => room.name === payload);\n const remainingRooms = removeRoom(data.rooms, roomIdx);\n\n const updatedRoom = roomIdx === -1 ? { name: payload } : data.rooms[roomIdx];\n\n return {\n ...data,\n rooms: [\n { ...updatedRoom, lastJoin: new Date().getTime() },\n ...remainingRooms,\n ],\n };\n\n default:\n return data;\n }\n}\n\nconst dispatcher = createLocalStorageDispatch('blaze', roomsReducer);\nexport { dispatcher as default, roomsReducer };\n","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\nimport { forceReflow } from './utils/reflow';\n\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n *
\n * {\"I'll receive my-node-* classes\"}\n *
\n *
\n * \n *
\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n if (node) forceReflow(node);\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it appears, enters,\n * exits or has finished the transition. A single name can be provided, which\n * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n *\n * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n *\n * A few details to note about how these classes are applied:\n *\n * 1. They are _joined_ with the ones that are already defined on the child\n * component, so if you want to add some base styles, you can use\n * `className` without worrying that it will be overridden.\n *\n * 2. If the transition component mounts with `in={false}`, no classes are\n * applied yet. You might be expecting `*-exit-done`, but if you think\n * about it, a component cannot finish exiting if it hasn't entered yet.\n *\n * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n * allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n * an epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { useState } from 'preact/hooks';\nimport urls from '../utils/urls';\n\n/**\n * Hook to fetch instant room from the server\n * @param {Function} cb Callback function called with instant room name passed as parameter\n */\nfunction useInstantRoom(cb) {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState('');\n\n return [\n async () => {\n setLoading(true);\n try {\n const res = await fetch(`${urls.SERVER_HOST}/instant-room`);\n const { room } = await res.json();\n cb(room);\n } catch(err) {\n setError(err);\n } finally {\n setLoading(false);\n }\n },\n { loading, error },\n ];\n}\n\nexport default useInstantRoom;\n","import { h } from 'preact';\nimport { createLocalStorageDispatch } from 'react-localstorage-hooks';\nimport NicknameInput from '../../../components/NicknameInput/NicknameInput';\nimport network from '../../../assets/images/illustrations/network.svg';\nimport logo from '../../../assets/images/logo.svg';\n\nimport './NewUser.scoped.scss';\n\nconst registerUser = createLocalStorageDispatch('blaze', (state, e) => {\n e.preventDefault();\n const formData = new FormData(e.target);\n\n return {\n user: {\n name: formData.get('nickname'),\n },\n rooms: [],\n };\n});\n\nfunction NewUser() {\n return (\n
\n \"Blaze\"\n\n \n\n
\n

Choose a nickname

\n

\n Nicknames are used to identify different devices in a common file\n sharing room. A room must always have devices with unique nicknames.\n

\n
\n\n
\n \n \n \n
\n );\n}\n\nexport default NewUser;\n","import { h, FunctionalComponent } from 'preact';\nimport { FeatherProps } from '../types';\n\nexport const Box: FunctionalComponent = (props: FeatherProps) => {\n\tconst color = props.color || 'currentColor';\n\tconst size = props.size || 24;\n\tdelete props.color;\n\tdelete props.size;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n","import { h } from 'preact';\nimport { useState, useEffect } from 'preact/hooks';\n\nimport './FileDrop.scoped.scss';\n\nfunction FileDrop({ onFile, ...props }) {\n const [border, setBorder] = useState('none');\n\n const handleDrag = borderStyle => e => {\n e.preventDefault();\n setBorder(borderStyle);\n };\n\n useEffect(() => {\n const onDragOver = handleDrag('solid');\n const onDragLeave = handleDrag('none');\n const dropHandler = e => {\n e.preventDefault();\n\n const files = e.dataTransfer.files;\n setBorder('none');\n\n if (files != null) {\n onFile(files);\n }\n }\n\n window.addEventListener('dragover', onDragOver);\n window.addEventListener('dragleave', onDragLeave);\n window.addEventListener('drop', dropHandler);\n\n return () => {\n window.removeEventListener('dragover', onDragOver);\n window.removeEventListener('dragleave', onDragLeave);\n window.removeEventListener('drop', dropHandler);\n };\n });\n\n return (\n
\n );\n}\n\nexport default FileDrop;","import { h, FunctionalComponent } from 'preact';\nimport { FeatherProps } from '../types';\n\nexport const Image: FunctionalComponent = (\n\tprops: FeatherProps\n) => {\n\tconst color = props.color || 'currentColor';\n\tconst size = props.size || 24;\n\tdelete props.color;\n\tdelete props.size;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n","/*\n * anime.js v3.2.1\n * (c) 2020 Julian Garnier\n * Released under the MIT license\n * animejs.com\n */\n\n// Defaults\n\nvar defaultInstanceSettings = {\n update: null,\n begin: null,\n loopBegin: null,\n changeBegin: null,\n change: null,\n changeComplete: null,\n loopComplete: null,\n complete: null,\n loop: 1,\n direction: 'normal',\n autoplay: true,\n timelineOffset: 0\n};\n\nvar defaultTweenSettings = {\n duration: 1000,\n delay: 0,\n endDelay: 0,\n easing: 'easeOutElastic(1, .5)',\n round: 0\n};\n\nvar validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective', 'matrix', 'matrix3d'];\n\n// Caching\n\nvar cache = {\n CSS: {},\n springs: {}\n};\n\n// Utils\n\nfunction minMax(val, min, max) {\n return Math.min(Math.max(val, min), max);\n}\n\nfunction stringContains(str, text) {\n return str.indexOf(text) > -1;\n}\n\nfunction applyArguments(func, args) {\n return func.apply(null, args);\n}\n\nvar is = {\n arr: function (a) { return Array.isArray(a); },\n obj: function (a) { return stringContains(Object.prototype.toString.call(a), 'Object'); },\n pth: function (a) { return is.obj(a) && a.hasOwnProperty('totalLength'); },\n svg: function (a) { return a instanceof SVGElement; },\n inp: function (a) { return a instanceof HTMLInputElement; },\n dom: function (a) { return a.nodeType || is.svg(a); },\n str: function (a) { return typeof a === 'string'; },\n fnc: function (a) { return typeof a === 'function'; },\n und: function (a) { return typeof a === 'undefined'; },\n nil: function (a) { return is.und(a) || a === null; },\n hex: function (a) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); },\n rgb: function (a) { return /^rgb/.test(a); },\n hsl: function (a) { return /^hsl/.test(a); },\n col: function (a) { return (is.hex(a) || is.rgb(a) || is.hsl(a)); },\n key: function (a) { return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes'; },\n};\n\n// Easings\n\nfunction parseEasingParameters(string) {\n var match = /\\(([^)]+)\\)/.exec(string);\n return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : [];\n}\n\n// Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js\n\nfunction spring(string, duration) {\n\n var params = parseEasingParameters(string);\n var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);\n var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);\n var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);\n var velocity = minMax(is.und(params[3]) ? 0 : params[3], .1, 100);\n var w0 = Math.sqrt(stiffness / mass);\n var zeta = damping / (2 * Math.sqrt(stiffness * mass));\n var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;\n var a = 1;\n var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;\n\n function solver(t) {\n var progress = duration ? (duration * t) / 1000 : t;\n if (zeta < 1) {\n progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));\n } else {\n progress = (a + b * progress) * Math.exp(-progress * w0);\n }\n if (t === 0 || t === 1) { return t; }\n return 1 - progress;\n }\n\n function getDuration() {\n var cached = cache.springs[string];\n if (cached) { return cached; }\n var frame = 1/6;\n var elapsed = 0;\n var rest = 0;\n while(true) {\n elapsed += frame;\n if (solver(elapsed) === 1) {\n rest++;\n if (rest >= 16) { break; }\n } else {\n rest = 0;\n }\n }\n var duration = elapsed * frame * 1000;\n cache.springs[string] = duration;\n return duration;\n }\n\n return duration ? solver : getDuration;\n\n}\n\n// Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function\n\nfunction steps(steps) {\n if ( steps === void 0 ) steps = 10;\n\n return function (t) { return Math.ceil((minMax(t, 0.000001, 1)) * steps) * (1 / steps); };\n}\n\n// BezierEasing https://github.com/gre/bezier-easing\n\nvar bezier = (function () {\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1 }\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1 }\n function C(aA1) { return 3.0 * aA1 }\n\n function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }\n function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1) }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) { aB = currentT; } else { aA = currentT; }\n } while (Math.abs(currentX) > 0.0000001 && ++i < 10);\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < 4; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) { return aGuessT; }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function bezier(mX1, mY1, mX2, mY2) {\n\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { return; }\n var sampleValues = new Float32Array(kSplineTableSize);\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX(aX) {\n\n var intervalStart = 0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= 0.001) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n\n }\n\n return function (x) {\n if (mX1 === mY1 && mX2 === mY2) { return x; }\n if (x === 0 || x === 1) { return x; }\n return calcBezier(getTForX(x), mY1, mY2);\n }\n\n }\n\n return bezier;\n\n})();\n\nvar penner = (function () {\n\n // Based on jQuery UI's implemenation of easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\n var eases = { linear: function () { return function (t) { return t; }; } };\n\n var functionEasings = {\n Sine: function () { return function (t) { return 1 - Math.cos(t * Math.PI / 2); }; },\n Circ: function () { return function (t) { return 1 - Math.sqrt(1 - t * t); }; },\n Back: function () { return function (t) { return t * t * (3 * t - 2); }; },\n Bounce: function () { return function (t) {\n var pow2, b = 4;\n while (t < (( pow2 = Math.pow(2, --b)) - 1) / 11) {}\n return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow(( pow2 * 3 - 2 ) / 22 - t, 2)\n }; },\n Elastic: function (amplitude, period) {\n if ( amplitude === void 0 ) amplitude = 1;\n if ( period === void 0 ) period = .5;\n\n var a = minMax(amplitude, 1, 10);\n var p = minMax(period, .1, 2);\n return function (t) {\n return (t === 0 || t === 1) ? t : \n -a * Math.pow(2, 10 * (t - 1)) * Math.sin((((t - 1) - (p / (Math.PI * 2) * Math.asin(1 / a))) * (Math.PI * 2)) / p);\n }\n }\n };\n\n var baseEasings = ['Quad', 'Cubic', 'Quart', 'Quint', 'Expo'];\n\n baseEasings.forEach(function (name, i) {\n functionEasings[name] = function () { return function (t) { return Math.pow(t, i + 2); }; };\n });\n\n Object.keys(functionEasings).forEach(function (name) {\n var easeIn = functionEasings[name];\n eases['easeIn' + name] = easeIn;\n eases['easeOut' + name] = function (a, b) { return function (t) { return 1 - easeIn(a, b)(1 - t); }; };\n eases['easeInOut' + name] = function (a, b) { return function (t) { return t < 0.5 ? easeIn(a, b)(t * 2) / 2 : \n 1 - easeIn(a, b)(t * -2 + 2) / 2; }; };\n eases['easeOutIn' + name] = function (a, b) { return function (t) { return t < 0.5 ? (1 - easeIn(a, b)(1 - t * 2)) / 2 : \n (easeIn(a, b)(t * 2 - 1) + 1) / 2; }; };\n });\n\n return eases;\n\n})();\n\nfunction parseEasings(easing, duration) {\n if (is.fnc(easing)) { return easing; }\n var name = easing.split('(')[0];\n var ease = penner[name];\n var args = parseEasingParameters(easing);\n switch (name) {\n case 'spring' : return spring(easing, duration);\n case 'cubicBezier' : return applyArguments(bezier, args);\n case 'steps' : return applyArguments(steps, args);\n default : return applyArguments(ease, args);\n }\n}\n\n// Strings\n\nfunction selectString(str) {\n try {\n var nodes = document.querySelectorAll(str);\n return nodes;\n } catch(e) {\n return;\n }\n}\n\n// Arrays\n\nfunction filterArray(arr, callback) {\n var len = arr.length;\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n var result = [];\n for (var i = 0; i < len; i++) {\n if (i in arr) {\n var val = arr[i];\n if (callback.call(thisArg, val, i, arr)) {\n result.push(val);\n }\n }\n }\n return result;\n}\n\nfunction flattenArray(arr) {\n return arr.reduce(function (a, b) { return a.concat(is.arr(b) ? flattenArray(b) : b); }, []);\n}\n\nfunction toArray(o) {\n if (is.arr(o)) { return o; }\n if (is.str(o)) { o = selectString(o) || o; }\n if (o instanceof NodeList || o instanceof HTMLCollection) { return [].slice.call(o); }\n return [o];\n}\n\nfunction arrayContains(arr, val) {\n return arr.some(function (a) { return a === val; });\n}\n\n// Objects\n\nfunction cloneObject(o) {\n var clone = {};\n for (var p in o) { clone[p] = o[p]; }\n return clone;\n}\n\nfunction replaceObjectProps(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o1) { o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; }\n return o;\n}\n\nfunction mergeObjects(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o2) { o[p] = is.und(o1[p]) ? o2[p] : o1[p]; }\n return o;\n}\n\n// Colors\n\nfunction rgbToRgba(rgbValue) {\n var rgb = /rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g.exec(rgbValue);\n return rgb ? (\"rgba(\" + (rgb[1]) + \",1)\") : rgbValue;\n}\n\nfunction hexToRgba(hexValue) {\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var hex = hexValue.replace(rgx, function (m, r, g, b) { return r + r + g + g + b + b; } );\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var r = parseInt(rgb[1], 16);\n var g = parseInt(rgb[2], 16);\n var b = parseInt(rgb[3], 16);\n return (\"rgba(\" + r + \",\" + g + \",\" + b + \",1)\");\n}\n\nfunction hslToRgba(hslValue) {\n var hsl = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(hslValue) || /hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g.exec(hslValue);\n var h = parseInt(hsl[1], 10) / 360;\n var s = parseInt(hsl[2], 10) / 100;\n var l = parseInt(hsl[3], 10) / 100;\n var a = hsl[4] || 1;\n function hue2rgb(p, q, t) {\n if (t < 0) { t += 1; }\n if (t > 1) { t -= 1; }\n if (t < 1/6) { return p + (q - p) * 6 * t; }\n if (t < 1/2) { return q; }\n if (t < 2/3) { return p + (q - p) * (2/3 - t) * 6; }\n return p;\n }\n var r, g, b;\n if (s == 0) {\n r = g = b = l;\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n return (\"rgba(\" + (r * 255) + \",\" + (g * 255) + \",\" + (b * 255) + \",\" + a + \")\");\n}\n\nfunction colorToRgb(val) {\n if (is.rgb(val)) { return rgbToRgba(val); }\n if (is.hex(val)) { return hexToRgba(val); }\n if (is.hsl(val)) { return hslToRgba(val); }\n}\n\n// Units\n\nfunction getUnit(val) {\n var split = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);\n if (split) { return split[1]; }\n}\n\nfunction getTransformUnit(propName) {\n if (stringContains(propName, 'translate') || propName === 'perspective') { return 'px'; }\n if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) { return 'deg'; }\n}\n\n// Values\n\nfunction getFunctionValue(val, animatable) {\n if (!is.fnc(val)) { return val; }\n return val(animatable.target, animatable.id, animatable.total);\n}\n\nfunction getAttribute(el, prop) {\n return el.getAttribute(prop);\n}\n\nfunction convertPxToUnit(el, value, unit) {\n var valueUnit = getUnit(value);\n if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) { return value; }\n var cached = cache.CSS[value + unit];\n if (!is.und(cached)) { return cached; }\n var baseline = 100;\n var tempEl = document.createElement(el.tagName);\n var parentEl = (el.parentNode && (el.parentNode !== document)) ? el.parentNode : document.body;\n parentEl.appendChild(tempEl);\n tempEl.style.position = 'absolute';\n tempEl.style.width = baseline + unit;\n var factor = baseline / tempEl.offsetWidth;\n parentEl.removeChild(tempEl);\n var convertedUnit = factor * parseFloat(value);\n cache.CSS[value + unit] = convertedUnit;\n return convertedUnit;\n}\n\nfunction getCSSValue(el, prop, unit) {\n if (prop in el.style) {\n var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';\n return unit ? convertPxToUnit(el, value, unit) : value;\n }\n}\n\nfunction getAnimationType(el, prop) {\n if (is.dom(el) && !is.inp(el) && (!is.nil(getAttribute(el, prop)) || (is.svg(el) && el[prop]))) { return 'attribute'; }\n if (is.dom(el) && arrayContains(validTransforms, prop)) { return 'transform'; }\n if (is.dom(el) && (prop !== 'transform' && getCSSValue(el, prop))) { return 'css'; }\n if (el[prop] != null) { return 'object'; }\n}\n\nfunction getElementTransforms(el) {\n if (!is.dom(el)) { return; }\n var str = el.style.transform || '';\n var reg = /(\\w+)\\(([^)]*)\\)/g;\n var transforms = new Map();\n var m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); }\n return transforms;\n}\n\nfunction getTransformValue(el, propName, animatable, unit) {\n var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);\n var value = getElementTransforms(el).get(propName) || defaultVal;\n if (animatable) {\n animatable.transforms.list.set(propName, value);\n animatable.transforms['last'] = propName;\n }\n return unit ? convertPxToUnit(el, value, unit) : value;\n}\n\nfunction getOriginalTargetValue(target, propName, unit, animatable) {\n switch (getAnimationType(target, propName)) {\n case 'transform': return getTransformValue(target, propName, animatable, unit);\n case 'css': return getCSSValue(target, propName, unit);\n case 'attribute': return getAttribute(target, propName);\n default: return target[propName] || 0;\n }\n}\n\nfunction getRelativeValue(to, from) {\n var operator = /^(\\*=|\\+=|-=)/.exec(to);\n if (!operator) { return to; }\n var u = getUnit(to) || 0;\n var x = parseFloat(from);\n var y = parseFloat(to.replace(operator[0], ''));\n switch (operator[0][0]) {\n case '+': return x + y + u;\n case '-': return x - y + u;\n case '*': return x * y + u;\n }\n}\n\nfunction validateValue(val, unit) {\n if (is.col(val)) { return colorToRgb(val); }\n if (/\\s/g.test(val)) { return val; }\n var originalUnit = getUnit(val);\n var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;\n if (unit) { return unitLess + unit; }\n return unitLess;\n}\n\n// getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes\n// adapted from https://gist.github.com/SebLambla/3e0550c496c236709744\n\nfunction getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\nfunction getCircleLength(el) {\n return Math.PI * 2 * getAttribute(el, 'r');\n}\n\nfunction getRectLength(el) {\n return (getAttribute(el, 'width') * 2) + (getAttribute(el, 'height') * 2);\n}\n\nfunction getLineLength(el) {\n return getDistance(\n {x: getAttribute(el, 'x1'), y: getAttribute(el, 'y1')}, \n {x: getAttribute(el, 'x2'), y: getAttribute(el, 'y2')}\n );\n}\n\nfunction getPolylineLength(el) {\n var points = el.points;\n var totalLength = 0;\n var previousPos;\n for (var i = 0 ; i < points.numberOfItems; i++) {\n var currentPos = points.getItem(i);\n if (i > 0) { totalLength += getDistance(previousPos, currentPos); }\n previousPos = currentPos;\n }\n return totalLength;\n}\n\nfunction getPolygonLength(el) {\n var points = el.points;\n return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));\n}\n\n// Path animation\n\nfunction getTotalLength(el) {\n if (el.getTotalLength) { return el.getTotalLength(); }\n switch(el.tagName.toLowerCase()) {\n case 'circle': return getCircleLength(el);\n case 'rect': return getRectLength(el);\n case 'line': return getLineLength(el);\n case 'polyline': return getPolylineLength(el);\n case 'polygon': return getPolygonLength(el);\n }\n}\n\nfunction setDashoffset(el) {\n var pathLength = getTotalLength(el);\n el.setAttribute('stroke-dasharray', pathLength);\n return pathLength;\n}\n\n// Motion path\n\nfunction getParentSvgEl(el) {\n var parentEl = el.parentNode;\n while (is.svg(parentEl)) {\n if (!is.svg(parentEl.parentNode)) { break; }\n parentEl = parentEl.parentNode;\n }\n return parentEl;\n}\n\nfunction getParentSvg(pathEl, svgData) {\n var svg = svgData || {};\n var parentSvgEl = svg.el || getParentSvgEl(pathEl);\n var rect = parentSvgEl.getBoundingClientRect();\n var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');\n var width = rect.width;\n var height = rect.height;\n var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);\n return {\n el: parentSvgEl,\n viewBox: viewBox,\n x: viewBox[0] / 1,\n y: viewBox[1] / 1,\n w: width,\n h: height,\n vW: viewBox[2],\n vH: viewBox[3]\n }\n}\n\nfunction getPath(path, percent) {\n var pathEl = is.str(path) ? selectString(path)[0] : path;\n var p = percent || 100;\n return function(property) {\n return {\n property: property,\n el: pathEl,\n svg: getParentSvg(pathEl),\n totalLength: getTotalLength(pathEl) * (p / 100)\n }\n }\n}\n\nfunction getPathProgress(path, progress, isPathTargetInsideSVG) {\n function point(offset) {\n if ( offset === void 0 ) offset = 0;\n\n var l = progress + offset >= 1 ? progress + offset : 0;\n return path.el.getPointAtLength(l);\n }\n var svg = getParentSvg(path.el, path.svg);\n var p = point();\n var p0 = point(-1);\n var p1 = point(+1);\n var scaleX = isPathTargetInsideSVG ? 1 : svg.w / svg.vW;\n var scaleY = isPathTargetInsideSVG ? 1 : svg.h / svg.vH;\n switch (path.property) {\n case 'x': return (p.x - svg.x) * scaleX;\n case 'y': return (p.y - svg.y) * scaleY;\n case 'angle': return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;\n }\n}\n\n// Decompose value\n\nfunction decomposeValue(val, unit) {\n // const rgx = /-?\\d*\\.?\\d+/g; // handles basic numbers\n // const rgx = /[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var rgx = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var value = validateValue((is.pth(val) ? val.totalLength : val), unit) + '';\n return {\n original: value,\n numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],\n strings: (is.str(val) || unit) ? value.split(rgx) : []\n }\n}\n\n// Animatables\n\nfunction parseTargets(targets) {\n var targetsArray = targets ? (flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets))) : [];\n return filterArray(targetsArray, function (item, pos, self) { return self.indexOf(item) === pos; });\n}\n\nfunction getAnimatables(targets) {\n var parsed = parseTargets(targets);\n return parsed.map(function (t, i) {\n return {target: t, id: i, total: parsed.length, transforms: { list: getElementTransforms(t) } };\n });\n}\n\n// Properties\n\nfunction normalizePropertyTweens(prop, tweenSettings) {\n var settings = cloneObject(tweenSettings);\n // Override duration if easing is a spring\n if (/^spring/.test(settings.easing)) { settings.duration = spring(settings.easing); }\n if (is.arr(prop)) {\n var l = prop.length;\n var isFromTo = (l === 2 && !is.obj(prop[0]));\n if (!isFromTo) {\n // Duration divided by the number of tweens\n if (!is.fnc(tweenSettings.duration)) { settings.duration = tweenSettings.duration / l; }\n } else {\n // Transform [from, to] values shorthand to a valid tween value\n prop = {value: prop};\n }\n }\n var propArray = is.arr(prop) ? prop : [prop];\n return propArray.map(function (v, i) {\n var obj = (is.obj(v) && !is.pth(v)) ? v : {value: v};\n // Default delay value should only be applied to the first tween\n if (is.und(obj.delay)) { obj.delay = !i ? tweenSettings.delay : 0; }\n // Default endDelay value should only be applied to the last tween\n if (is.und(obj.endDelay)) { obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; }\n return obj;\n }).map(function (k) { return mergeObjects(k, settings); });\n}\n\n\nfunction flattenKeyframes(keyframes) {\n var propertyNames = filterArray(flattenArray(keyframes.map(function (key) { return Object.keys(key); })), function (p) { return is.key(p); })\n .reduce(function (a,b) { if (a.indexOf(b) < 0) { a.push(b); } return a; }, []);\n var properties = {};\n var loop = function ( i ) {\n var propName = propertyNames[i];\n properties[propName] = keyframes.map(function (key) {\n var newKey = {};\n for (var p in key) {\n if (is.key(p)) {\n if (p == propName) { newKey.value = key[p]; }\n } else {\n newKey[p] = key[p];\n }\n }\n return newKey;\n });\n };\n\n for (var i = 0; i < propertyNames.length; i++) loop( i );\n return properties;\n}\n\nfunction getProperties(tweenSettings, params) {\n var properties = [];\n var keyframes = params.keyframes;\n if (keyframes) { params = mergeObjects(flattenKeyframes(keyframes), params); }\n for (var p in params) {\n if (is.key(p)) {\n properties.push({\n name: p,\n tweens: normalizePropertyTweens(params[p], tweenSettings)\n });\n }\n }\n return properties;\n}\n\n// Tweens\n\nfunction normalizeTweenValues(tween, animatable) {\n var t = {};\n for (var p in tween) {\n var value = getFunctionValue(tween[p], animatable);\n if (is.arr(value)) {\n value = value.map(function (v) { return getFunctionValue(v, animatable); });\n if (value.length === 1) { value = value[0]; }\n }\n t[p] = value;\n }\n t.duration = parseFloat(t.duration);\n t.delay = parseFloat(t.delay);\n return t;\n}\n\nfunction normalizeTweens(prop, animatable) {\n var previousTween;\n return prop.tweens.map(function (t) {\n var tween = normalizeTweenValues(t, animatable);\n var tweenValue = tween.value;\n var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;\n var toUnit = getUnit(to);\n var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);\n var previousValue = previousTween ? previousTween.to.original : originalValue;\n var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;\n var fromUnit = getUnit(from) || getUnit(originalValue);\n var unit = toUnit || fromUnit;\n if (is.und(to)) { to = previousValue; }\n tween.from = decomposeValue(from, unit);\n tween.to = decomposeValue(getRelativeValue(to, from), unit);\n tween.start = previousTween ? previousTween.end : 0;\n tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;\n tween.easing = parseEasings(tween.easing, tween.duration);\n tween.isPath = is.pth(tweenValue);\n tween.isPathTargetInsideSVG = tween.isPath && is.svg(animatable.target);\n tween.isColor = is.col(tween.from.original);\n if (tween.isColor) { tween.round = 1; }\n previousTween = tween;\n return tween;\n });\n}\n\n// Tween progress\n\nvar setProgressValue = {\n css: function (t, p, v) { return t.style[p] = v; },\n attribute: function (t, p, v) { return t.setAttribute(p, v); },\n object: function (t, p, v) { return t[p] = v; },\n transform: function (t, p, v, transforms, manual) {\n transforms.list.set(p, v);\n if (p === transforms.last || manual) {\n var str = '';\n transforms.list.forEach(function (value, prop) { str += prop + \"(\" + value + \") \"; });\n t.style.transform = str;\n }\n }\n};\n\n// Set Value helper\n\nfunction setTargetsValue(targets, properties) {\n var animatables = getAnimatables(targets);\n animatables.forEach(function (animatable) {\n for (var property in properties) {\n var value = getFunctionValue(properties[property], animatable);\n var target = animatable.target;\n var valueUnit = getUnit(value);\n var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);\n var unit = valueUnit || getUnit(originalValue);\n var to = getRelativeValue(validateValue(value, unit), originalValue);\n var animType = getAnimationType(target, property);\n setProgressValue[animType](target, property, to, animatable.transforms, true);\n }\n });\n}\n\n// Animations\n\nfunction createAnimation(animatable, prop) {\n var animType = getAnimationType(animatable.target, prop.name);\n if (animType) {\n var tweens = normalizeTweens(prop, animatable);\n var lastTween = tweens[tweens.length - 1];\n return {\n type: animType,\n property: prop.name,\n animatable: animatable,\n tweens: tweens,\n duration: lastTween.end,\n delay: tweens[0].delay,\n endDelay: lastTween.endDelay\n }\n }\n}\n\nfunction getAnimations(animatables, properties) {\n return filterArray(flattenArray(animatables.map(function (animatable) {\n return properties.map(function (prop) {\n return createAnimation(animatable, prop);\n });\n })), function (a) { return !is.und(a); });\n}\n\n// Create Instance\n\nfunction getInstanceTimings(animations, tweenSettings) {\n var animLength = animations.length;\n var getTlOffset = function (anim) { return anim.timelineOffset ? anim.timelineOffset : 0; };\n var timings = {};\n timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration; })) : tweenSettings.duration;\n timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.delay; })) : tweenSettings.delay;\n timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration - anim.endDelay; })) : tweenSettings.endDelay;\n return timings;\n}\n\nvar instanceID = 0;\n\nfunction createNewInstance(params) {\n var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);\n var tweenSettings = replaceObjectProps(defaultTweenSettings, params);\n var properties = getProperties(tweenSettings, params);\n var animatables = getAnimatables(params.targets);\n var animations = getAnimations(animatables, properties);\n var timings = getInstanceTimings(animations, tweenSettings);\n var id = instanceID;\n instanceID++;\n return mergeObjects(instanceSettings, {\n id: id,\n children: [],\n animatables: animatables,\n animations: animations,\n duration: timings.duration,\n delay: timings.delay,\n endDelay: timings.endDelay\n });\n}\n\n// Core\n\nvar activeInstances = [];\n\nvar engine = (function () {\n var raf;\n\n function play() {\n if (!raf && (!isDocumentHidden() || !anime.suspendWhenDocumentHidden) && activeInstances.length > 0) {\n raf = requestAnimationFrame(step);\n }\n }\n function step(t) {\n // memo on algorithm issue:\n // dangerous iteration over mutable `activeInstances`\n // (that collection may be updated from within callbacks of `tick`-ed animation instances)\n var activeInstancesLength = activeInstances.length;\n var i = 0;\n while (i < activeInstancesLength) {\n var activeInstance = activeInstances[i];\n if (!activeInstance.paused) {\n activeInstance.tick(t);\n i++;\n } else {\n activeInstances.splice(i, 1);\n activeInstancesLength--;\n }\n }\n raf = i > 0 ? requestAnimationFrame(step) : undefined;\n }\n\n function handleVisibilityChange() {\n if (!anime.suspendWhenDocumentHidden) { return; }\n\n if (isDocumentHidden()) {\n // suspend ticks\n raf = cancelAnimationFrame(raf);\n } else { // is back to active tab\n // first adjust animations to consider the time that ticks were suspended\n activeInstances.forEach(\n function (instance) { return instance ._onDocumentVisibility(); }\n );\n engine();\n }\n }\n if (typeof document !== 'undefined') {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n }\n\n return play;\n})();\n\nfunction isDocumentHidden() {\n return !!document && document.hidden;\n}\n\n// Public Instance\n\nfunction anime(params) {\n if ( params === void 0 ) params = {};\n\n\n var startTime = 0, lastTime = 0, now = 0;\n var children, childrenLength = 0;\n var resolve = null;\n\n function makePromise(instance) {\n var promise = window.Promise && new Promise(function (_resolve) { return resolve = _resolve; });\n instance.finished = promise;\n return promise;\n }\n\n var instance = createNewInstance(params);\n var promise = makePromise(instance);\n\n function toggleInstanceDirection() {\n var direction = instance.direction;\n if (direction !== 'alternate') {\n instance.direction = direction !== 'normal' ? 'normal' : 'reverse';\n }\n instance.reversed = !instance.reversed;\n children.forEach(function (child) { return child.reversed = instance.reversed; });\n }\n\n function adjustTime(time) {\n return instance.reversed ? instance.duration - time : time;\n }\n\n function resetTime() {\n startTime = 0;\n lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);\n }\n\n function seekChild(time, child) {\n if (child) { child.seek(time - child.timelineOffset); }\n }\n\n function syncInstanceChildren(time) {\n if (!instance.reversePlayback) {\n for (var i = 0; i < childrenLength; i++) { seekChild(time, children[i]); }\n } else {\n for (var i$1 = childrenLength; i$1--;) { seekChild(time, children[i$1]); }\n }\n }\n\n function setAnimationsProgress(insTime) {\n var i = 0;\n var animations = instance.animations;\n var animationsLength = animations.length;\n while (i < animationsLength) {\n var anim = animations[i];\n var animatable = anim.animatable;\n var tweens = anim.tweens;\n var tweenLength = tweens.length - 1;\n var tween = tweens[tweenLength];\n // Only check for keyframes if there is more than one tween\n if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; }\n var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;\n var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);\n var strings = tween.to.strings;\n var round = tween.round;\n var numbers = [];\n var toNumbersLength = tween.to.numbers.length;\n var progress = (void 0);\n for (var n = 0; n < toNumbersLength; n++) {\n var value = (void 0);\n var toNumber = tween.to.numbers[n];\n var fromNumber = tween.from.numbers[n] || 0;\n if (!tween.isPath) {\n value = fromNumber + (eased * (toNumber - fromNumber));\n } else {\n value = getPathProgress(tween.value, eased * toNumber, tween.isPathTargetInsideSVG);\n }\n if (round) {\n if (!(tween.isColor && n > 2)) {\n value = Math.round(value * round) / round;\n }\n }\n numbers.push(value);\n }\n // Manual Array.reduce for better performances\n var stringsLength = strings.length;\n if (!stringsLength) {\n progress = numbers[0];\n } else {\n progress = strings[0];\n for (var s = 0; s < stringsLength; s++) {\n var a = strings[s];\n var b = strings[s + 1];\n var n$1 = numbers[s];\n if (!isNaN(n$1)) {\n if (!b) {\n progress += n$1 + ' ';\n } else {\n progress += n$1 + b;\n }\n }\n }\n }\n setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);\n anim.currentValue = progress;\n i++;\n }\n }\n\n function setCallback(cb) {\n if (instance[cb] && !instance.passThrough) { instance[cb](instance); }\n }\n\n function countIteration() {\n if (instance.remaining && instance.remaining !== true) {\n instance.remaining--;\n }\n }\n\n function setInstanceProgress(engineTime) {\n var insDuration = instance.duration;\n var insDelay = instance.delay;\n var insEndDelay = insDuration - instance.endDelay;\n var insTime = adjustTime(engineTime);\n instance.progress = minMax((insTime / insDuration) * 100, 0, 100);\n instance.reversePlayback = insTime < instance.currentTime;\n if (children) { syncInstanceChildren(insTime); }\n if (!instance.began && instance.currentTime > 0) {\n instance.began = true;\n setCallback('begin');\n }\n if (!instance.loopBegan && instance.currentTime > 0) {\n instance.loopBegan = true;\n setCallback('loopBegin');\n }\n if (insTime <= insDelay && instance.currentTime !== 0) {\n setAnimationsProgress(0);\n }\n if ((insTime >= insEndDelay && instance.currentTime !== insDuration) || !insDuration) {\n setAnimationsProgress(insDuration);\n }\n if (insTime > insDelay && insTime < insEndDelay) {\n if (!instance.changeBegan) {\n instance.changeBegan = true;\n instance.changeCompleted = false;\n setCallback('changeBegin');\n }\n setCallback('change');\n setAnimationsProgress(insTime);\n } else {\n if (instance.changeBegan) {\n instance.changeCompleted = true;\n instance.changeBegan = false;\n setCallback('changeComplete');\n }\n }\n instance.currentTime = minMax(insTime, 0, insDuration);\n if (instance.began) { setCallback('update'); }\n if (engineTime >= insDuration) {\n lastTime = 0;\n countIteration();\n if (!instance.remaining) {\n instance.paused = true;\n if (!instance.completed) {\n instance.completed = true;\n setCallback('loopComplete');\n setCallback('complete');\n if (!instance.passThrough && 'Promise' in window) {\n resolve();\n promise = makePromise(instance);\n }\n }\n } else {\n startTime = now;\n setCallback('loopComplete');\n instance.loopBegan = false;\n if (instance.direction === 'alternate') {\n toggleInstanceDirection();\n }\n }\n }\n }\n\n instance.reset = function() {\n var direction = instance.direction;\n instance.passThrough = false;\n instance.currentTime = 0;\n instance.progress = 0;\n instance.paused = true;\n instance.began = false;\n instance.loopBegan = false;\n instance.changeBegan = false;\n instance.completed = false;\n instance.changeCompleted = false;\n instance.reversePlayback = false;\n instance.reversed = direction === 'reverse';\n instance.remaining = instance.loop;\n children = instance.children;\n childrenLength = children.length;\n for (var i = childrenLength; i--;) { instance.children[i].reset(); }\n if (instance.reversed && instance.loop !== true || (direction === 'alternate' && instance.loop === 1)) { instance.remaining++; }\n setAnimationsProgress(instance.reversed ? instance.duration : 0);\n };\n\n // internal method (for engine) to adjust animation timings before restoring engine ticks (rAF)\n instance._onDocumentVisibility = resetTime;\n\n // Set Value helper\n\n instance.set = function(targets, properties) {\n setTargetsValue(targets, properties);\n return instance;\n };\n\n instance.tick = function(t) {\n now = t;\n if (!startTime) { startTime = now; }\n setInstanceProgress((now + (lastTime - startTime)) * anime.speed);\n };\n\n instance.seek = function(time) {\n setInstanceProgress(adjustTime(time));\n };\n\n instance.pause = function() {\n instance.paused = true;\n resetTime();\n };\n\n instance.play = function() {\n if (!instance.paused) { return; }\n if (instance.completed) { instance.reset(); }\n instance.paused = false;\n activeInstances.push(instance);\n resetTime();\n engine();\n };\n\n instance.reverse = function() {\n toggleInstanceDirection();\n instance.completed = instance.reversed ? false : true;\n resetTime();\n };\n\n instance.restart = function() {\n instance.reset();\n instance.play();\n };\n\n instance.remove = function(targets) {\n var targetsArray = parseTargets(targets);\n removeTargetsFromInstance(targetsArray, instance);\n };\n\n instance.reset();\n\n if (instance.autoplay) { instance.play(); }\n\n return instance;\n\n}\n\n// Remove targets from animation\n\nfunction removeTargetsFromAnimations(targetsArray, animations) {\n for (var a = animations.length; a--;) {\n if (arrayContains(targetsArray, animations[a].animatable.target)) {\n animations.splice(a, 1);\n }\n }\n}\n\nfunction removeTargetsFromInstance(targetsArray, instance) {\n var animations = instance.animations;\n var children = instance.children;\n removeTargetsFromAnimations(targetsArray, animations);\n for (var c = children.length; c--;) {\n var child = children[c];\n var childAnimations = child.animations;\n removeTargetsFromAnimations(targetsArray, childAnimations);\n if (!childAnimations.length && !child.children.length) { children.splice(c, 1); }\n }\n if (!animations.length && !children.length) { instance.pause(); }\n}\n\nfunction removeTargetsFromActiveInstances(targets) {\n var targetsArray = parseTargets(targets);\n for (var i = activeInstances.length; i--;) {\n var instance = activeInstances[i];\n removeTargetsFromInstance(targetsArray, instance);\n }\n}\n\n// Stagger helpers\n\nfunction stagger(val, params) {\n if ( params === void 0 ) params = {};\n\n var direction = params.direction || 'normal';\n var easing = params.easing ? parseEasings(params.easing) : null;\n var grid = params.grid;\n var axis = params.axis;\n var fromIndex = params.from || 0;\n var fromFirst = fromIndex === 'first';\n var fromCenter = fromIndex === 'center';\n var fromLast = fromIndex === 'last';\n var isRange = is.arr(val);\n var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);\n var val2 = isRange ? parseFloat(val[1]) : 0;\n var unit = getUnit(isRange ? val[1] : val) || 0;\n var start = params.start || 0 + (isRange ? val1 : 0);\n var values = [];\n var maxValue = 0;\n return function (el, i, t) {\n if (fromFirst) { fromIndex = 0; }\n if (fromCenter) { fromIndex = (t - 1) / 2; }\n if (fromLast) { fromIndex = t - 1; }\n if (!values.length) {\n for (var index = 0; index < t; index++) {\n if (!grid) {\n values.push(Math.abs(fromIndex - index));\n } else {\n var fromX = !fromCenter ? fromIndex%grid[0] : (grid[0]-1)/2;\n var fromY = !fromCenter ? Math.floor(fromIndex/grid[0]) : (grid[1]-1)/2;\n var toX = index%grid[0];\n var toY = Math.floor(index/grid[0]);\n var distanceX = fromX - toX;\n var distanceY = fromY - toY;\n var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n if (axis === 'x') { value = -distanceX; }\n if (axis === 'y') { value = -distanceY; }\n values.push(value);\n }\n maxValue = Math.max.apply(Math, values);\n }\n if (easing) { values = values.map(function (val) { return easing(val / maxValue) * maxValue; }); }\n if (direction === 'reverse') { values = values.map(function (val) { return axis ? (val < 0) ? val * -1 : -val : Math.abs(maxValue - val); }); }\n }\n var spacing = isRange ? (val2 - val1) / maxValue : val1;\n return start + (spacing * (Math.round(values[i] * 100) / 100)) + unit;\n }\n}\n\n// Timeline\n\nfunction timeline(params) {\n if ( params === void 0 ) params = {};\n\n var tl = anime(params);\n tl.duration = 0;\n tl.add = function(instanceParams, timelineOffset) {\n var tlIndex = activeInstances.indexOf(tl);\n var children = tl.children;\n if (tlIndex > -1) { activeInstances.splice(tlIndex, 1); }\n function passThrough(ins) { ins.passThrough = true; }\n for (var i = 0; i < children.length; i++) { passThrough(children[i]); }\n var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));\n insParams.targets = insParams.targets || params.targets;\n var tlDuration = tl.duration;\n insParams.autoplay = false;\n insParams.direction = tl.direction;\n insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);\n passThrough(tl);\n tl.seek(insParams.timelineOffset);\n var ins = anime(insParams);\n passThrough(ins);\n children.push(ins);\n var timings = getInstanceTimings(children, params);\n tl.delay = timings.delay;\n tl.endDelay = timings.endDelay;\n tl.duration = timings.duration;\n tl.seek(0);\n tl.reset();\n if (tl.autoplay) { tl.play(); }\n return tl;\n };\n return tl;\n}\n\nanime.version = '3.2.1';\nanime.speed = 1;\n// TODO:#review: naming, documentation\nanime.suspendWhenDocumentHidden = true;\nanime.running = activeInstances;\nanime.remove = removeTargetsFromActiveInstances;\nanime.get = getOriginalTargetValue;\nanime.set = setTargetsValue;\nanime.convertPx = convertPxToUnit;\nanime.path = getPath;\nanime.setDashoffset = setDashoffset;\nanime.stagger = stagger;\nanime.timeline = timeline;\nanime.easing = parseEasings;\nanime.penner = penner;\nanime.random = function (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; };\n\nexport default anime;\n","import anime from 'animejs';\n\nclass Visualizer {\n\n constructor(canvas) {\n this.canvas = canvas;\n this.ctx = this.canvas.getContext('2d');\n\n this.updateCanvasSize();\n window.addEventListener('resize', this.updateCanvasSize.bind(this));\n\n this.nodes = [];\n this.sentTo = [];\n this.receivedBy = [];\n this.state = {\n start: 0,\n end: 0,\n };\n this.active = true;\n\n this.draw();\n }\n\n updateCanvasSize() {\n const dpr = window.devicePixelRatio || 1;\n\n this.height = Math.floor(window.innerHeight / 2.2);\n \n if (window.innerWidth <= 800) {\n this.width = window.innerWidth - 32;\n } else {\n this.width = Math.floor(window.innerWidth / 2);\n }\n\n /**\n * Canvas resolution correction based on the device pixel-ratio.\n * The canvas is first scaled to it's actual size based on the pixel ratio.\n * Then the bounds of the canvas is reduced to display size using CSS.\n * Then the contents of the canvas are upscaled by the device pixel-ratio.\n * \n * In the end, we get a sharper canvas with same size elements\n */\n this.canvas.width = this.width * dpr;\n this.canvas.height = this.height * dpr;\n\n this.canvas.style.width = `${this.width}px`;\n this.canvas.style.height = `${this.height}px`;\n\n this.ctx.scale(dpr, dpr);\n\n this.ctx.translate(this.width * 0.5, this.height * 0.5);\n }\n\n /**\n * Updates the positions of all the connected nodes in the graph\n */\n updateAllPos() {\n // Get only the connected nodes by removing the client node\n const nodes = this.nodes;\n\n const divisions = 360/nodes.length;\n\n /**\n * If only one 1 node is present in the network,\n * then it must be placed at the centre of the canvas\n */\n if (nodes.length == 1) {\n anime({\n targets: nodes[0],\n cx: 0,\n cy: 0,\n });\n return;\n }\n\n nodes.forEach((node, i) => {\n // Calculate the angle that line makes\n const angle = divisions*(i+1)*Math.PI/180;\n const r = 100;\n\n anime({\n targets: node,\n cx: r * Math.cos(angle),\n cy: r * Math.sin(angle),\n });\n });\n }\n\n /**\n * Adds a node to the graph\n * @param {String} name Name/Identifier of the node. Must be unique\n * @param {Array} pos Array of two elements that have location values of the node\n * @param {Boolean} isClient Dentoes whether the node is the current client\n */\n addNode({ name, isClient, pos, peerId }) {\n\n const nodeData = {\n name,\n peerId,\n radius: 15,\n cx: pos ? pos[0] : 0,\n cy: pos ? pos[1] : 0,\n textColor: isClient ? '#C5C7CC' : '#636979',\n };\n\n anime({ targets: nodeData, radius: 30 });\n\n // Always push new node data as duplicates are handled by caller\n this.nodes.push(nodeData);\n\n if (!pos) this.updateAllPos();\n }\n\n /**\n * Removes a node from the graph\n * @param {String} name Identifier of the node\n */\n removeNode(name) {\n const nodeIdx = this.nodes.findIndex(node => node.name === name);\n\n if (nodeIdx > -1) {\n const anim = anime({\n targets: this.nodes[nodeIdx],\n radius: 15,\n });\n\n // Remove the node after 1/10th of animation has completed\n setTimeout(() => {\n this.nodes.splice(nodeIdx, 1);\n this.updateAllPos();\n }, anim.duration / 10);\n }\n }\n\n\n /**\n * Starts visualizing file transfer\n * @param {Array} sentTo ids of nodes to which files are being sent\n * @param {Array} receivedBy ids of nodes from which files are being received\n */\n startSharing(sentTo, receivedBy) {\n\n if (sentTo === undefined) {\n this.sentTo = this.nodes.slice(1);\n }\n else {\n this.sentTo = this.nodes.filter(node => sentTo.includes(node.name) || sentTo.includes(node.peerId));\n }\n\n if (receivedBy !== undefined) {\n this.receivedBy = this.nodes.filter(node => receivedBy.includes(node.name) || receivedBy.includes(node.peerId));\n }\n\n }\n\n /**\n * Removes the sender client and resets for next file transfer\n */\n stopSharing() {\n this.sentTo = [];\n this.receivedBy = [];\n }\n\n draw() {\n // The visualizer is destroyed and the draw calls are now stopped\n if (!this.active) return;\n\n /**\n * Empty the canvas, and add the updated nodes, connections and labels\n */\n this.ctx.clearRect(-this.width, -this.height, 2*this.width, 2*this.height);\n\n const connect = (sender, receiver) => {\n // Get the (x, y) coordinates of sender and receiver node\n const x1 = sender.cx;\n const y1 = sender.cy;\n const x2 = receiver.cx;\n const y2 = receiver.cy;\n\n // Calculate the total distance between the node\n const dis = Math.sqrt(Math.pow(x1-x2, 2) + Math.pow(y1-y2, 2)) - sender.radius;\n // Calculate the angle of line between the nodes along x axis.\n // Slope is calculated first\n const angle = Math.atan2(y2-y1, x2-x1);\n \n if (this.state.start > dis) {\n this.state.start = 0;\n }\n\n new CanvasElements.Line({\n x: x1 + this.state.start * Math.cos(angle),\n y: y1 + this.state.start * Math.sin(angle),\n r: 0.2 * dis,\n angle,\n borderWidth: 2,\n borderColor: '#3BE8B0',\n ctx: this.ctx,\n }); \n }\n\n /**\n * Creates the file transfer indicator line\n */\n if (this.sentTo.length || this.receivedBy.length) {\n\n this.sentTo.forEach(node => {\n connect(this.nodes[0], node);\n });\n\n this.receivedBy.forEach(node => {\n connect(node, this.nodes[0]);\n });\n\n this.state.start += 3;\n }\n else {\n this.state.start = 0;\n }\n\n \n const primaryColor = ({ name, peerId }) => {\n if (this.sentTo.length && (this.nodes[0].name === name || this.nodes[0].peerId === peerId)) {\n return '#3BE8B0';\n }\n\n if (this.receivedBy.find(node => node.name === name || node.peerId === peerId)) {\n return '#3BE8B0';\n }\n\n return '#636979';\n };\n\n /**\n * Adds the nodes\n */\n this.nodes.forEach((node, i) => {\n\n /**\n * Add waves to current client node\n */\n if (i === 0) {\n const radii = [50, 40];\n\n radii.forEach(radius =>\n new CanvasElements.Circle({\n x: node.cx,\n y: node.cy,\n r: radius,\n background: 'rgba(99, 105, 121, 0.1)',\n ctx: this.ctx,\n })\n );\n }\n\n new CanvasElements.Circle({\n x: node.cx,\n y: node.cy,\n r: node.radius,\n background: '#0D1322',\n borderColor: primaryColor(node),\n borderWidth: 2.5,\n ctx: this.ctx,\n });\n });\n\n /**\n * Adds the avatar text\n */\n this.nodes.forEach(node => {\n new CanvasElements.Text({\n x: node.cx,\n y: node.cy + 2,\n text: node.name[0].toUpperCase(),\n font: '\"Jost\", sans-serif',\n align: 'center',\n baseline: 'middle',\n size: node.radius/1.2,\n background: primaryColor(node),\n ctx: this.ctx,\n })\n });\n\n /**\n * Adds the nickname labels\n */\n this.nodes.forEach(node => \n new CanvasElements.Text({\n x: node.cx,\n y: node.cy + node.radius + 20,\n text: node.name,\n font: '\"Jost\", sans-serif',\n align: 'center',\n baseline: 'middle',\n size: 15,\n background: node.textColor,\n ctx: this.ctx,\n })\n );\n\n requestAnimationFrame(this.draw.bind(this));\n }\n\n /**\n * Updates the file transfer percentage\n * @param {Number} percentage Completed file transfer percentage\n */\n setTransferPercentage(percentage) {\n if (percentage > 100) percentage = 100;\n }\n\n destroy() {\n this.active = false;\n }\n}\n\n\nexport default Visualizer;","/**\n * Returns an easy to read formatted size\n * @param {Number} size Size of the file in bytes\n * @param {Number} precision Number of digits after decimal\n * @returns {String} Formatted size\n */\nfunction formatSize(size, precision = 1) {\n const kbs = size / 1024;\n const mbs = kbs / 1024;\n\n return mbs < 1 ? `${kbs.toFixed(precision)}KB` : `${mbs.toFixed(precision)}MB`;\n}\n\nexport default formatSize;","import { h, FunctionalComponent } from 'preact';\nimport { FeatherProps } from '../types';\n\nexport const CheckCircle: FunctionalComponent = (\n\tprops: FeatherProps\n) => {\n\tconst color = props.color || 'currentColor';\n\tconst size = props.size || 24;\n\tdelete props.color;\n\tdelete props.size;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import AppLanding from '../layouts/AppLanding/AppLanding';\n\nimport './Support.scoped.scss';\n\nfunction Support() {\n return (\n \n
\n

\n \n Sponsor me!\n

\n\n

\n Hey, I'm Akash Hamirwasia. I started building Blaze in 2018 to make\n file sharing easy. I make most of my side projects open source with\n the hope that people like me would be able to learn from and use the\n things I build.\n

\n\n \n Sponsor through GitHub\n \n \n Sponsor through BMC\n \n\n

\n \n Support the development\n

\n\n

\n You can view the source code of Blaze, find bugs and contribute a fix.\n You can also suggest and pickup development of new features.\n

\n \n View GitHub repository\n \n
\n \n );\n}\n\nexport default Support;\n","class Socket {\n\n constructor(socket, ip = '') {\n this.socket = socket;\n this.socket.binaryType = 'arraybuffer';\n this.callbacks = {};\n this.ip = ip;\n this.peerId = '';\n this.name = '';\n\n socket.addEventListener('message', msg => {\n let callback, data;\n if (typeof msg.data === 'string') {\n const json = JSON.parse(msg.data);\n data = json.data;\n callback = this.callbacks[json.event];\n }\n else {\n callback = this.callbacks['chunk'];\n data = msg.data;\n }\n\n if (callback) {\n callback(data);\n }\n });\n }\n\n listen(event, callback) {\n this.callbacks[event] = callback;\n }\n\n on(event, callback) {\n this.socket.addEventListener(event, callback);\n }\n\n off(event) {\n this.callbacks[event] = undefined;\n }\n\n send(event, data) {\n if (event === 'chunk') {\n this.socket.send(data);\n }\n else {\n this.socket.send(JSON.stringify({ event, data }));\n }\n }\n\n close(code, reason) {\n this.socket.close(code, reason);\n }\n\n get id() {\n return this.socket.id;\n }\n}\n\nexport default Socket;","import constants from '../../../common/constants';\nimport { toast } from '../components/Toast';\nimport pluralize from '../utils/pluralize';\n\nconst trackers = {\n announce: ['wss://tracker.btorrent.xyz', 'wss://tracker.openwebtorrent.com'],\n};\n\nclass FileShare {\n\n constructor(socket) {\n this.socket = socket;\n this.torrentClient = new WebTorrent({\n tracker: {\n ...trackers,\n rtcConfig: {\n iceServers: [\n {\n urls: 'stun:stun.l.google.com:19305',\n },\n {\n urls: 'stun:stun1.l.google.com:19305',\n },\n ]\n }\n }\n });\n }\n\n get isWebRTC() {\n return WebTorrent.WEBRTC_SUPPORT;\n }\n\n receiveFiles({ onMeta, onProgress, onDone }) {\n let metaData = {};\n\n this.socket.listen(constants.FILE_TORRENT, ({ infoHash, ...data }) => {\n if (onMeta) {\n metaData = data;\n onMeta(data);\n }\n\n this.torrentClient.add(infoHash, trackers, torrent => {\n this._onTorrent({ torrent, onProgress, onDone });\n });\n });\n\n let fileParts = [];\n let size = 0, statProg = 0.25;\n this.socket.listen(constants.FILE_INIT, (data) => {\n if (data.end) {\n if (fileParts.length) {\n onDone(new Blob(fileParts), metaData.meta[0]);\n fileParts = [];\n size = 0;\n statProg = 0.25;\n }\n }\n else {\n metaData = data;\n onMeta(data);\n }\n });\n\n this.socket.listen(constants.CHUNK, data => {\n fileParts.push(data);\n size += data.byteLength;\n\n const progress = size / metaData.size;\n\n onProgress({ progress });\n\n if (progress >= statProg) {\n statProg += 0.15;\n this.socket.send(constants.FILE_STATUS, {\n progress: statProg,\n peer: this.socket.name,\n });\n }\n });\n\n return () => {\n this.socket.off(constants.FILE_TORRENT);\n this.socket.off(constants.FILE_INIT);\n this.socket.off(constants.CHUNK);\n };\n }\n\n _onTorrent({ torrent, onProgress, onDone }) {\n let updateInterval;\n\n const update = () => {\n onProgress(torrent);\n\n if (!updateInterval) {\n updateInterval = setInterval(update, 500);\n }\n\n if (!torrent.uploadSpeed && !torrent.downloadSpeed) {\n onDone();\n torrent.destroy();\n clearInterval(updateInterval);\n updateInterval = undefined;\n }\n }\n\n torrent.on('upload', update);\n torrent.on('download', update);\n torrent.on('done', () => {\n onDone(torrent.files);\n });\n }\n\n sendFileSocket({ file, numPeers, onMeta, onSocketProgress }) {\n const reader = file.stream().getReader();\n const transferStatus = {\n peers: Array(numPeers - 1),\n progress: 0.25,\n };\n let sharedSize = 0, progress = 0;\n\n const meta = [{\n name: file.name,\n size: file.size,\n type: file.type,\n }];\n\n onMeta(meta);\n \n this.socket.send(constants.FILE_INIT, {\n sender: this.socket.name,\n size: file.size,\n meta,\n });\n\n return new Promise((resolve) => {\n\n const stream = async () => {\n const { done, value } = await reader.read();\n if (done) {\n this.socket.off(constants.FILE_STATUS);\n this.socket.send(constants.FILE_INIT, {\n end: true,\n });\n resolve();\n return;\n }\n\n this.socket.send(constants.CHUNK, value.buffer);\n sharedSize += value.byteLength;\n progress = sharedSize / file.size;\n\n onSocketProgress({ progress });\n\n if (transferStatus.peers.length === numPeers - 1 && progress < transferStatus.progress) {\n setTimeout(stream, 1);\n }\n };\n\n this.socket.listen(constants.FILE_STATUS, ({ peer, progress }) => {\n if (progress !== transferStatus.progress) {\n transferStatus.progress = progress;\n transferStatus.peers = [ peer ];\n } else {\n transferStatus.peers.push(peer);\n }\n \n stream();\n });\n\n stream();\n });\n }\n\n async sendFiles({ numPeers, input, useTorrent, onMeta, onSocketProgress, onTorrentProgress, onDone }) {\n if (!input) return;\n \n if (useTorrent) {\n const inputMap = {};\n let totalSize = 0;\n for (let i = 0; i < input.length; i++) {\n const file = input[i];\n inputMap[file.name + file.size] = file;\n totalSize += file.size;\n }\n\n if (totalSize > TORRENT_SIZE_LIMIT) {\n throw new Error(constants.ERR_LARGE_FILE);\n } else if (totalSize > 7e7) {\n toast(`File${pluralize(input.length, ' is', 's are')} large, transfer may take long time`);\n }\n\n this.torrentClient.seed(input, trackers, torrent => {\n this._onTorrent({\n torrent,\n onProgress: onTorrentProgress,\n onDone,\n });\n\n const filesMeta = torrent.files.map(file => ({\n name: file.name,\n size: file.length,\n type: inputMap[file.name + file.length].type,\n }));\n\n onMeta(filesMeta);\n this.socket.send(constants.FILE_TORRENT, {\n infoHash: torrent.infoHash,\n sender: this.socket.name,\n size: torrent.length,\n meta: filesMeta,\n });\n\n });\n }\n else {\n input = Array.from(input);\n\n for(const file of input) {\n if (file.size > WS_SIZE_LIMIT) {\n throw new Error(constants.ERR_LARGE_FILE);\n }\n await this.sendFileSocket({ file, numPeers, onMeta, onSocketProgress });\n }\n }\n }\n\n}\n\nexport default FileShare;","import Socket from '../../../common/utils/socket';\nimport constants from '../../../common/constants';\nimport FileShare from './fileShare';\nimport urls from '../utils/urls';\n\n/**\n * Opens a socket connection to join a room\n * @param {String} room Room to join\n * @param {String} username Name of the user joining the room\n */\nfunction socketConnect(room, username) {\n const socket = new Socket(new WebSocket(urls.WS_HOST));\n const fileShare = new FileShare(socket);\n socket.name = username;\n \n socket.on('open', () => {\n socket.send(constants.JOIN, {\n roomName: room,\n name: username,\n peerId: fileShare.isWebRTC ? fileShare.torrentClient.peerId : null,\n });\n });\n\n return fileShare;\n}\n\nexport default socketConnect;","import { h, FunctionalComponent } from 'preact';\nimport { FeatherProps } from '../types';\n\nexport const X: FunctionalComponent = (props: FeatherProps) => {\n\tconst color = props.color || 'currentColor';\n\tconst size = props.size || 24;\n\tdelete props.color;\n\tdelete props.size;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n","export var deserialize = function (data) { return data === 'undefined' ? undefined : JSON.parse(data); };\nexport var serialize = function (data) { return data === undefined ? 'undefined' : JSON.stringify(data); };\n","import { h, FunctionalComponent } from 'preact';\nimport { FeatherProps } from '../types';\n\nexport const Grid: FunctionalComponent = (\n\tprops: FeatherProps\n) => {\n\tconst color = props.color || 'currentColor';\n\tconst size = props.size || 24;\n\tdelete props.color;\n\tdelete props.size;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n","import { h, FunctionalComponent } from 'preact';\nimport { FeatherProps } from '../types';\n\nexport const Film: FunctionalComponent = (\n\tprops: FeatherProps\n) => {\n\tconst color = props.color || 'currentColor';\n\tconst size = props.size || 24;\n\tdelete props.color;\n\tdelete props.size;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n","import { h } from 'preact';\nimport { createPortal } from 'preact/compat';\nimport { useEffect, useState } from 'preact/hooks';\nimport { XCircle } from 'preact-feather';\nimport PropTypes from 'prop-types';\n\nimport './Modal.scoped.scss';\n\n/**\n * This hook can be used to toggle visibility of elements when the container has\n * animated visibility. The issue occurrs during the \"close\" phase of the animation\n * where the elements are meant to stay mounted just till the animation finishes.\n * \n * @param {boolean} initial Initial state\n * @param {number} time Time in milliseconds of the close animation\n * @returns {boolean} State variable that stays toggled ON till the animation completes\n */\nfunction useAnimatedVisibility(initial, time) {\n const [showContents, setShowContents] = useState(initial);\n\n useEffect(() => {\n if (initial) {\n setShowContents(true);\n } else {\n const id = setTimeout(() => setShowContents(false), time);\n return () => clearTimeout(id);\n }\n }, [initial, setShowContents, time]);\n\n return showContents;\n}\n\nfunction Modal({ isClosable, isOpen, onClose, children }) {\n const showContents = useAnimatedVisibility(isOpen, 200);\n\n useEffect(() => {\n document.body.classList.toggle('no-bg-image', isOpen);\n }, [ isOpen ]);\n\n useEffect(() => {\n if (isClosable){\n const handleEsc = (event) => {\n if (event.key === \"Escape\" || event.keyCode === 27 || event.which === 27) {\n onClose(event);\n }\n };\n\n window.addEventListener('keydown', handleEsc);\n return () => {\n window.removeEventListener('keydown', handleEsc);\n };\n }\n }, [ isClosable, onClose ]);\n\n return createPortal(\n
\n\n { isClosable && (\n { e.which === 13 && onClose(e) }}\n >\n \n \n )\n }\n\n
\n { showContents && children }\n
\n
,\n document.body\n );\n}\n\nModal.propTypes = {\n isClosable: PropTypes.bool,\n isOpen: PropTypes.bool.isRequired,\n onClose: PropTypes.func,\n};\n\nModal.defaultProps = {\n isClosable: true,\n onClose: () => {},\n};\n\nexport default Modal;","import { h, FunctionalComponent } from 'preact';\nimport { FeatherProps } from '../types';\n\nexport const XCircle: FunctionalComponent = (\n\tprops: FeatherProps\n) => {\n\tconst color = props.color || 'currentColor';\n\tconst size = props.size || 24;\n\tdelete props.color;\n\tdelete props.size;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n","import { route } from 'preact-router';\nimport { useEffect, useState } from 'preact/hooks';\nimport {\n createLocalStorageDispatch,\n useLocalStorageSelector,\n} from 'react-localstorage-hooks';\n\nimport constants from '../../../../common/constants';\nimport Loading from '../../components/Loading/Loading';\nimport {\n TransitionRoute,\n TransitionRouter,\n} from '../../components/TransitionRouter';\nimport { useOnline, useSWMessage } from '../../hooks';\nimport { RedirectToFourOFour } from '../Pages/FourOFour/FourOFour';\nimport { PWAInstallProvider } from './contexts/PWAInstall';\nimport { QueuedFiles } from './contexts/QueuedFiles';\nimport FileTransfer from './FileTransfer/FileTransfer';\nimport JoinInstantRoom from './JoinInstantRoom/JoinInstantRoom';\nimport NewUser from './NewUser/NewUser';\nimport Rooms from './Rooms/Rooms';\nimport Settings from './Settings/Settings';\nimport Support from './Support/Support';\n\nimport './app.scss';\n\nconst updateLocalStorageSchema = () => {\n if (typeof window === 'undefined') return;\n\n const v2Converter = (data) => {\n data.rooms = data.rooms.map((room) =>\n typeof room === 'string'\n ? { name: room, lastJoin: new Date().getTime() }\n : room\n );\n };\n\n createLocalStorageDispatch('blaze', (data) => {\n v2Converter(data);\n return data;\n })();\n};\n\nexport default function App() {\n const [isLoaded, setLoaded] = useState(false);\n const isRegistered = useLocalStorageSelector('blaze', (state) => !!state);\n const isOnline = useOnline();\n const [queuedFiles, setQueuedFiles] = useSWMessage(\n [],\n constants.SW_LOAD_FILES\n );\n\n /* Mount specific effects */\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n navigator.serviceWorker?.controller?.postMessage(constants.SW_SHARE_READY);\n }, []);\n\n /* Loading extra scripts */\n useEffect(() => {\n if (!isRegistered) return;\n\n const scriptjs = require('scriptjs');\n\n scriptjs(\n [\n 'https://unpkg.com/canvas-elements/build/cdn/canvas-elements.min.js',\n 'https://cdn.jsdelivr.net/npm/webtorrent@1.9.6/webtorrent.min.js',\n ],\n () => {\n updateLocalStorageSchema();\n setLoaded(true);\n }\n );\n }, [isRegistered]);\n\n /* Changing route when offline */\n useEffect(() => {\n if (isRegistered && !isOnline) {\n route('/app', true);\n }\n }, [isRegistered, isOnline]);\n\n if (!isRegistered) return ;\n\n return isLoaded ? (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ) : (\n \n );\n}\n","/* global __webpack_public_path__ */\n\nimport * as Preact from 'preact';\nconst { h, render, hydrate } = Preact;\n\nconst interopDefault = m => (m && m.default ? m.default : m);\n\nconst normalizeURL = url => (url[url.length - 1] === '/' ? url : url + '/');\n\nif (process.env.NODE_ENV === 'development') {\n\t// enable preact devtools\n\trequire('preact/debug');\n\n\t// only add a debug sw if webpack service worker is not requested.\n\tif (process.env.ADD_SW === undefined && 'serviceWorker' in navigator) {\n\t\tnavigator.serviceWorker.register(\n\t\t\tnormalizeURL(__webpack_public_path__) + 'sw-debug.js'\n\t\t);\n\t} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t\tnavigator.serviceWorker.register(\n\t\t\tnormalizeURL(__webpack_public_path__) +\n\t\t\t\t(process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t\t);\n\t}\n} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\tnavigator.serviceWorker.register(\n\t\tnormalizeURL(__webpack_public_path__) +\n\t\t\t(process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t);\n}\n\nlet app = interopDefault(require('preact-cli-entrypoint'));\n\nif (typeof app === 'function') {\n\tlet root =\n\t\tdocument.getElementById('preact_root') || document.body.firstElementChild;\n\n\tlet init = () => {\n\t\tlet app = interopDefault(require('preact-cli-entrypoint'));\n\t\tlet preRenderData = {};\n\t\tconst inlineDataElement = document.querySelector(\n\t\t\t'[type=\"__PREACT_CLI_DATA__\"]'\n\t\t);\n\t\tif (inlineDataElement) {\n\t\t\tpreRenderData =\n\t\t\t\tJSON.parse(decodeURI(inlineDataElement.innerHTML)).preRenderData ||\n\t\t\t\tpreRenderData;\n\t\t}\n\t\t/* An object named CLI_DATA is passed as a prop,\n\t\t * this keeps us future proof if in case we decide,\n\t\t * to send other data like at some point in time.\n\t\t */\n\t\tconst CLI_DATA = { preRenderData };\n\t\tconst currentURL = preRenderData.url ? normalizeURL(preRenderData.url) : '';\n\t\tconst canHydrate =\n\t\t\tprocess.env.PRERENDER &&\n\t\t\tprocess.env.NODE_ENV === 'production' &&\n\t\t\thydrate &&\n\t\t\tcurrentURL === normalizeURL(location.pathname);\n\t\tconst doRender = canHydrate ? hydrate : render;\n\t\tdoRender(h(app, { CLI_DATA }), document.body, root);\n\t};\n\n\tif (module.hot) module.hot.accept('preact-cli-entrypoint', init);\n\n\tinit();\n}\n","import { createContext } from 'preact';\nimport { useEffect, useRef, useState } from 'preact/hooks';\n\nconst PWAInstall = createContext({\n installable: false,\n deferredPrompt: null,\n setInstallable: () => {},\n});\n\nfunction PWAInstallProvider({ children }) {\n const [installable, setInstallable] = useState(false);\n const deferredPrompt = useRef(null);\n\n useEffect(() => {\n const handler = (e) => {\n // Stash the event so it can be triggered later.\n deferredPrompt.current = e;\n setInstallable(true);\n };\n\n window.addEventListener('beforeinstallprompt', handler);\n\n return () => window.removeEventListener('beforeinstallprompt', handler);\n }, []);\n\n return (\n \n {children}\n \n );\n}\n\nexport { PWAInstall, PWAInstallProvider };\n","import { options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {import('./internal').Component} */\nlet previousComponent;\n\n/** @type {number} */\nlet currentHook = 0;\n\n/** @type {Array} */\nlet afterPaintEffects = [];\n\nlet EMPTY = [];\n\nlet oldBeforeDiff = options._diff;\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\noptions._diff = vnode => {\n\tcurrentComponent = null;\n\tif (oldBeforeDiff) oldBeforeDiff(vnode);\n};\n\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tconst hooks = currentComponent.__hooks;\n\tif (hooks) {\n\t\tif (previousComponent === currentComponent) {\n\t\t\thooks._pendingEffects = [];\n\t\t\tcurrentComponent._renderCallbacks = [];\n\t\t\thooks._list.forEach(hookItem => {\n\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t}\n\t\t\t\thookItem._pendingValue = EMPTY;\n\t\t\t\thookItem._nextValue = hookItem._pendingArgs = undefined;\n\t\t\t});\n\t\t} else {\n\t\t\thooks._pendingEffects.forEach(invokeCleanup);\n\t\t\thooks._pendingEffects.forEach(invokeEffect);\n\t\t\thooks._pendingEffects = [];\n\t\t}\n\t}\n\tpreviousComponent = currentComponent;\n};\n\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tif (c.__hooks._pendingEffects.length) afterPaint(afterPaintEffects.push(c));\n\t\tc.__hooks._list.forEach(hookItem => {\n\t\t\tif (hookItem._pendingArgs) {\n\t\t\t\thookItem._args = hookItem._pendingArgs;\n\t\t\t}\n\t\t\tif (hookItem._pendingValue !== EMPTY) {\n\t\t\t\thookItem._value = hookItem._pendingValue;\n\t\t\t}\n\t\t\thookItem._pendingArgs = undefined;\n\t\t\thookItem._pendingValue = EMPTY;\n\t\t});\n\t}\n\tpreviousComponent = currentComponent = null;\n};\n\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tlet hasErrored;\n\t\tc.__hooks._list.forEach(s => {\n\t\t\ttry {\n\t\t\t\tinvokeCleanup(s);\n\t\t\t} catch (e) {\n\t\t\t\thasErrored = e;\n\t\t\t}\n\t\t});\n\t\tc.__hooks = undefined;\n\t\tif (hasErrored) options._catchError(hasErrored, c._vnode);\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @param {number} type The index of the hook to get\n * @returns {any}\n */\nfunction getHookState(index, type) {\n\tif (options._hook) {\n\t\toptions._hook(currentComponent, index, currentHook || type);\n\t}\n\tcurrentHook = 0;\n\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = {\n\t\t\t_list: [],\n\t\t\t_pendingEffects: []\n\t\t});\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({ _pendingValue: EMPTY });\n\t}\n\treturn hooks._list[index];\n}\n\n/**\n * @param {import('./index').StateUpdater} [initialState]\n */\nexport function useState(initialState) {\n\tcurrentHook = 1;\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @param {import('./index').Reducer} reducer\n * @param {import('./index').StateUpdater} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ any, (state: any) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++, 2);\n\thookState._reducer = reducer;\n\tif (!hookState._component) {\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst currentValue = hookState._nextValue\n\t\t\t\t\t? hookState._nextValue[0]\n\t\t\t\t\t: hookState._value[0];\n\t\t\t\tconst nextValue = hookState._reducer(currentValue, action);\n\n\t\t\t\tif (currentValue !== nextValue) {\n\t\t\t\t\thookState._nextValue = [nextValue, hookState._value[1]];\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\n\t\thookState._component = currentComponent;\n\n\t\tif (!currentComponent._hasScuFromHooks) {\n\t\t\tcurrentComponent._hasScuFromHooks = true;\n\t\t\tconst prevScu = currentComponent.shouldComponentUpdate;\n\n\t\t\t// This SCU has the purpose of bailing out after repeated updates\n\t\t\t// to stateful hooks.\n\t\t\t// we store the next value in _nextValue[0] and keep doing that for all\n\t\t\t// state setters, if we have next states and\n\t\t\t// all next states within a component end up being equal to their original state\n\t\t\t// we are safe to bail out for this specific component.\n\t\t\tcurrentComponent.shouldComponentUpdate = function(p, s, c) {\n\t\t\t\tif (!hookState._component.__hooks) return true;\n\n\t\t\t\tconst stateHooks = hookState._component.__hooks._list.filter(\n\t\t\t\t\tx => x._component\n\t\t\t\t);\n\t\t\t\tconst allHooksEmpty = stateHooks.every(x => !x._nextValue);\n\t\t\t\t// When we have no updated hooks in the component we invoke the previous SCU or\n\t\t\t\t// traverse the VDOM tree further.\n\t\t\t\tif (allHooksEmpty) {\n\t\t\t\t\treturn prevScu ? prevScu.call(this, p, s, c) : true;\n\t\t\t\t}\n\n\t\t\t\t// We check whether we have components with a nextValue set that\n\t\t\t\t// have values that aren't equal to one another this pushes\n\t\t\t\t// us to update further down the tree\n\t\t\t\tlet shouldUpdate = false;\n\t\t\t\tstateHooks.forEach(hookItem => {\n\t\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\t\tconst currentValue = hookItem._value[0];\n\t\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t\t\thookItem._nextValue = undefined;\n\t\t\t\t\t\tif (currentValue !== hookItem._value[0]) shouldUpdate = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn shouldUpdate || hookState._component.props !== p\n\t\t\t\t\t? prevScu\n\t\t\t\t\t\t? prevScu.call(this, p, s, c)\n\t\t\t\t\t\t: true\n\t\t\t\t\t: false;\n\t\t\t};\n\t\t}\n\t}\n\n\treturn hookState._nextValue || hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 3);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 4);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\nexport function useRef(initialValue) {\n\tcurrentHook = 5;\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {any[]} args\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tcurrentHook = 6;\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') {\n\t\t\t\tref(createHandle());\n\t\t\t\treturn () => ref(null);\n\t\t\t} else if (ref) {\n\t\t\t\tref.current = createHandle();\n\t\t\t\treturn () => (ref.current = null);\n\t\t\t}\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @param {() => any} factory\n * @param {any[]} args\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState} */\n\tconst state = getHookState(currentIndex++, 7);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._pendingValue = factory();\n\t\tstate._pendingArgs = args;\n\t\tstate._factory = factory;\n\t\treturn state._pendingValue;\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {any[]} args\n */\nexport function useCallback(callback, args) {\n\tcurrentHook = 8;\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\t// We could skip this call here, but than we'd not call\n\t// `options._hook`. We need to do that in order to make\n\t// the devtools aware of this hook.\n\t/** @type {import('./internal').ContextHookState} */\n\tconst state = getHookState(currentIndex++, 9);\n\t// The devtools needs access to the context object to\n\t// be able to pull of the default value when no provider\n\t// is present in the tree.\n\tstate._context = context;\n\tif (!provider) return context._defaultValue;\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(formatter ? formatter(value) : value);\n\t}\n}\n\n/**\n * @param {(error: any, errorInfo: import('preact').ErrorInfo) => void} cb\n */\nexport function useErrorBoundary(cb) {\n\t/** @type {import('./internal').ErrorBoundaryHookState} */\n\tconst state = getHookState(currentIndex++, 10);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = (err, errorInfo) => {\n\t\t\tif (state._value) state._value(err, errorInfo);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\nexport function useId() {\n\tconst state = getHookState(currentIndex++, 11);\n\tif (!state._value) {\n\t\t// Grab either the root node or the nearest async boundary node.\n\t\t/** @type {import('./internal.d').VNode} */\n\t\tlet root = currentComponent._vnode;\n\t\twhile (root !== null && !root._mask && root._parent !== null) {\n\t\t\troot = root._parent;\n\t\t}\n\n\t\tlet mask = root._mask || (root._mask = [0, 0]);\n\t\tstate._value = 'P' + mask[0] + '-' + mask[1]++;\n\t}\n\n\treturn state._value;\n}\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tlet component;\n\twhile ((component = afterPaintEffects.shift())) {\n\t\tif (!component._parentDom || !component.__hooks) continue;\n\t\ttry {\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t} catch (e) {\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t}\n}\n\nlet HAS_RAF = typeof requestAnimationFrame == 'function';\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tif (HAS_RAF) cancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (HAS_RAF) {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeCleanup(hook) {\n\t// A hook cleanup can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\tlet cleanup = hook._cleanup;\n\tif (typeof cleanup == 'function') {\n\t\thook._cleanup = undefined;\n\t\tcleanup();\n\t}\n\n\tcurrentComponent = comp;\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeEffect(hook) {\n\t// A hook call can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\thook._cleanup = hook._value();\n\tcurrentComponent = comp;\n}\n\n/**\n * @param {any[]} oldArgs\n * @param {any[]} newArgs\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn (\n\t\t!oldArgs ||\n\t\toldArgs.length !== newArgs.length ||\n\t\tnewArgs.some((arg, index) => arg !== oldArgs[index])\n\t);\n}\n\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n","import { h } from 'preact';\nimport { Router } from 'preact-router';\n\nimport Header from './components/Header/Header';\nimport Footer from './components/Footer/Footer';\nimport Home from './Home/Home';\nimport Working from './Working/Working';\nimport FourOFour, { RedirectToFourOFour } from './FourOFour/FourOFour';\n\nimport './Pages.scss';\n\nexport default function Pages() {\n\n return (\n
\n
\n \n \n \n \n \n \n
\n
\n );\n}\n","import { h } from 'preact';\nimport { Router, Route } from 'preact-router';\n\nimport Pages from './routes/Pages/Pages';\nimport App from './routes/App/App';\n\nimport './global.scss';\n\nexport default function Blaze() {\n\n function handleRouteChange() {\n if (typeof window === 'undefined') return;\n\n window.scrollTo(0, 0);\n }\n\n return (\n
\n \n \n \n \n
\n );\n}","import { h, FunctionalComponent } from 'preact';\nimport { FeatherProps } from '../types';\n\nexport const Menu: FunctionalComponent = (\n\tprops: FeatherProps\n) => {\n\tconst color = props.color || 'currentColor';\n\tconst size = props.size || 24;\n\tdelete props.color;\n\tdelete props.size;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n","import { h, FunctionalComponent } from 'preact';\nimport { FeatherProps } from '../types';\n\nexport const Github: FunctionalComponent = (\n\tprops: FeatherProps\n) => {\n\tconst color = props.color || 'currentColor';\n\tconst size = props.size || 24;\n\tdelete props.color;\n\tdelete props.size;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n};\n","import { h } from 'preact';\nimport './Pill.scoped.scss';\n\nfunction Pill(props) {\n return (\n \n );\n}\n\nexport default Pill;","import { h } from 'preact';\nimport { useState } from 'preact/hooks';\nimport { Menu, X, Github } from 'preact-feather';\nimport { Link } from 'preact-router/match';\n\nimport logo from '../../../../assets/images/logo.svg';\nimport Pill from '../../../../components/Pill/Pill';\nimport { useOnHistoryPush } from '../../../../hooks';\n\nimport './Header.scss';\nimport pkg from '../../../../../package.json';\n\nfunction Header() {\n const [isMenuOpen, setMenuOpen] = useState(false);\n\n const toggleMenu = () => {\n setMenuOpen(!isMenuOpen);\n };\n\n useOnHistoryPush(() => setMenuOpen(false));\n\n return (\n
\n \n \"Blaze\"\n v{pkg.version}\n \n\n \n {isMenuOpen ? : }\n \n \n
\n );\n}\n\nexport default Header;\n","import { h } from 'preact';\n\nimport './Footer.scss';\n\nconst Footer = () => (\n \n);\n\nexport default Footer;\n","export default __webpack_public_path__ + \"78e9ba00ab7030d0a47ff4e6c484cf46.svg\";","export default __webpack_public_path__ + \"d3b7f5223eef716ab06dcc7db5a11dfc.svg\";","export default __webpack_public_path__ + \"4dfb830cbc0b310481d0c05470af6899.svg\";","import { h } from 'preact';\nimport network from '../../../assets/images/illustrations/network.svg';\nimport twoDevices from '../../../assets/images/illustrations/two_devices.svg';\nimport threeDevices from '../../../assets/images/illustrations/three_devices.svg';\nimport earth from '../../../assets/images/illustrations/earth.svg';\nimport './Home.scss';\n\nconst Home = () => (\n
\n
\n\n
\n

Share files the modern way

\n

Using just a web browser to any device on the Internet!

\n\n \n Start Sharing\n \n \n \n \n
\n\n \"Devices\n\n \n \n \n \n \n\n
\n\n\n
\n
\n \"Laptop\n

Easy to use

\n

\n Blaze is a web app, just open it in your browser, join a room, and start sharing. No need to install any specific app, or create an account!\n

\n
\n\n
\n \"Laptop\n

Multi-device

\n

\n Traditionally, sharing files to multiple devices has been a hassle. With Blaze, you can share files across multiple devices with ease.\n

\n
\n \n
\n \"Devices\n

Anywhere

\n

\n Blaze is built on modern web technologies, allowing it to work on devices far away from each other. It just needs to be connected to the internet.\n

\n
\n
\n\n
\n\n
\n \"I built Blaze because I wanted a fast, radically different way to transfer files between my laptop and mobile\"\n\n
\n \n \"Akash\n \n Akash Hamirwasia\n Creator of Blaze\n
\n
\n\n
\n\n
\n
\n

Let's get sharing!

\n

No registrations required, completely free

\n\n \n Start sharing\n \n
\n
\n
\n);\n\nexport default Home;\n","export default __webpack_public_path__ + \"40cb004d3c641d0f7ea762b7b56d37e4.png\";","export default __webpack_public_path__ + \"460785af97cba0f1cd30554a4b2b1fe7.png\";","export default __webpack_public_path__ + \"e1071f00fce0f16c83b5be29061376ba.png\";","export default __webpack_public_path__ + \"238060420bf310bbaade3b251e717286.svg\";","export default __webpack_public_path__ + \"e870a6d834ea41e967adade53659f609.svg\";","export default __webpack_public_path__ + \"ed1f59f8ab284f57e43df4149fb453a8.svg\";","export default __webpack_public_path__ + \"3b102bc71cff1582f04f8a5a1f9c959b.svg\";","import { h } from 'preact';\nimport { Share2, Zap } from 'preact-feather';\nimport joinRoom from '../../../assets/images/working/join-room.png';\nimport sendFile from '../../../assets/images/working/send-file.png';\nimport install from '../../../assets/images/working/install.png';\nimport chrome from '../../../assets/images/browser-icons/chrome.svg';\nimport firefox from '../../../assets/images/browser-icons/firefox.svg';\nimport edge from '../../../assets/images/browser-icons/edge.svg';\nimport safari from '../../../assets/images/browser-icons/safari.svg';\n\nimport './Working.scss';\n\nconst Working = () => (\n
\n
\n
\n

How Blaze works

\n

Designed to work on any device, anywhere!

\n
\n
\n\n
\n
\n
\n

Start by joining a room

\n

\n A room is a collection of users among which you want to send/receive\n files. Rooms in Blaze can be thought of as group chats in messaging\n apps. Each user in a room must have a unique name for them to\n correctly join the room.\n

\n

\n All your previously joined rooms show up in\n Recent Rooms \n page for quick access in the future. These rooms itself are not\n persisted on any database and are immediately destroyed once all the\n users of that room leave.\n

\n
\n \"Joining\n
\n\n
\n \"Sending\n
\n

\n Send a file!\n \n

\n

\n Sending a file is easy in Blaze. Just click on the 'Send File'\n button at the bottom right and choose the files that you want to\n send. Once the files are selected, they would be shared with all the\n other users in that room.\n

\n

\n Blaze uses\n \n {' '}\n WebTorrent{' '}\n \n or WebSockets for sharing files depending on the WebRTC support of\n the browsers being used.\n \n {' '}\n WebRTC{' '}\n \n is the protocol that makes it possible for the peer-to-peer\n connection for file transfer.\n

\n

\n Do note that if the sender of a file leaves the room and the file\n isn't transferred to any user yet, the file transfer would get\n cancelled resulting in no-one receiving the file. This is because\n your files are not stored on any server and are transferred in\n real-time when you are online.\n

\n
\n
\n\n
\n
\n

Next steps

\n

\n If you enjoyed using Blaze, you can add Blaze to your home screen!\n Doing this not only makes Blaze easy to access but it also shows up\n in the share tray when you are sharing a file from other apps using{' '}\n button.\n

\n

\n Since Blaze is an open-source project, do consier checking out it's\n source code, contributing bug fixes or suggesting new features that\n can improe Blaze. If you find this project useful, consider giving\n \n {' '}\n Blaze a star\n {' '}\n or{' '}\n \n sponsoring me\n {' '}\n on GitHub 💚\n

\n

\n Blaze has been tested on:\n

    \n
  • \n \n Google Chrome\n
  • \n
  • \n \n Microsoft Edge\n
  • \n
  • \n \n Firefox Browser\n
  • \n
  • \n \n Safari\n
  • \n
\n

\n
\n \"Adding\n
\n\n
\n

Ready to share files?

\n \n Start Sharing\n \n
\n
\n
\n);\n\nexport default Working;\n","import { h, FunctionalComponent } from 'preact';\nimport { FeatherProps } from '../types';\n\nexport const HelpCircle: FunctionalComponent = (\n\tprops: FeatherProps\n) => {\n\tconst color = props.color || 'currentColor';\n\tconst size = props.size || 24;\n\tdelete props.color;\n\tdelete props.size;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\n\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\n\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\n\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport endOfDay from \"../endOfDay/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\n\nexport default function isLastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarMonths from \"../differenceInCalendarMonths/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isLastDayOfMonth from \"../isLastDayOfMonth/index.js\";\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates using trunc as a default rounding method.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\n\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n var result; // Check for the difference of less than month\n\n if (difference < 1) {\n result = 0;\n } else {\n if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) {\n // This will check if the date is end of Feb and assign a higher end of month date\n // to compare it with Jan\n dateLeft.setDate(30);\n }\n\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference); // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign; // Check for cases of one full calendar month\n\n if (isLastDayOfMonth(toDate(dirtyDateLeft)) && difference === 1 && compareAsc(dirtyDateLeft, dateRight) === 1) {\n isLastMonthNotFull = false;\n }\n\n result = sign * (difference - Number(isLastMonthNotFull));\n } // Prevent negative zero\n\n\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\n\nexport default function differenceInMilliseconds(dateLeft, dateRight) {\n requiredArgs(2, arguments);\n return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}","var roundingMap = {\n ceil: Math.ceil,\n round: Math.round,\n floor: Math.floor,\n trunc: function trunc(value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n } // Math.trunc is not supported by IE\n\n};\nvar defaultRoundingMethod = 'trunc';\nexport function getRoundingMethod(method) {\n return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];\n}","import differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\n\nexport default function differenceInSeconds(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n\n return undefined;\n}","export default function assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n\n return target;\n}","import assign from \"../assign/index.js\";\nexport default function cloneObject(object) {\n return assign({}, object);\n}","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport differenceInMonths from \"../differenceInMonths/index.js\";\nimport differenceInSeconds from \"../differenceInSeconds/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport cloneObject from \"../_lib/cloneObject/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MINUTES_IN_DAY = 1440;\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520;\nvar MINUTES_IN_MONTH = 43200;\nvar MINUTES_IN_TWO_MONTHS = 86400;\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * const result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * { includeSeconds: true }\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> 'pli ol 1 jaro'\n */\n\nexport default function formatDistance(dirtyDate, dirtyBaseDate, options) {\n var _ref, _options$locale;\n\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain formatDistance property');\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n\n var localizeOptions = assign(cloneObject(options), {\n addSuffix: Boolean(options === null || options === void 0 ? void 0 : options.addSuffix),\n comparison: comparison\n });\n var dateLeft;\n var dateRight;\n\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft);\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000;\n var minutes = Math.round((seconds - offsetInSeconds) / 60);\n var months; // 0 up to 2 mins\n\n if (minutes < 2) {\n if (options !== null && options !== void 0 && options.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance('lessThanXSeconds', 5, localizeOptions);\n } else if (seconds < 10) {\n return locale.formatDistance('lessThanXSeconds', 10, localizeOptions);\n } else if (seconds < 20) {\n return locale.formatDistance('lessThanXSeconds', 20, localizeOptions);\n } else if (seconds < 40) {\n return locale.formatDistance('halfAMinute', 0, localizeOptions);\n } else if (seconds < 60) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', 1, localizeOptions);\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', minutes, localizeOptions);\n }\n } // 2 mins up to 0.75 hrs\n\n } else if (minutes < 45) {\n return locale.formatDistance('xMinutes', minutes, localizeOptions); // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance('aboutXHours', 1, localizeOptions); // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60);\n return locale.formatDistance('aboutXHours', hours, localizeOptions); // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return locale.formatDistance('xDays', 1, localizeOptions); // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions); // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('aboutXMonths', months, localizeOptions);\n }\n\n months = differenceInMonths(dateRight, dateLeft); // 2 months up to 12 months\n\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('xMonths', nearestMonth, localizeOptions); // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12;\n var years = Math.floor(months / 12); // N years up to 1 years 3 months\n\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance('aboutXYears', years, localizeOptions); // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance('overXYears', years, localizeOptions); // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance('almostXYears', years + 1, localizeOptions);\n }\n }\n}","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\n\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\n\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}; // Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import { h } from 'preact';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\n\nimport './Fab.scoped.scss';\n\nfunction Fab({ children, text, variant, className, ...props }) {\n\n return (\n \n );\n}\n\nFab.propTypes = {\n variant: PropTypes.oneOf(['sm', 'lg', 'auto']),\n text: PropTypes.string,\n className: PropTypes.string,\n};\n\nFab.defaultProps = {\n variant: 'auto',\n text: '',\n className: '',\n};\n\nexport default Fab;","/*!\n * $script.js JS loader & dependency manager\n * https://github.com/ded/script.js\n * (c) Dustin Diaz 2014 | License MIT\n */\n\n(function (name, definition) {\n if (typeof module != 'undefined' && module.exports) module.exports = definition()\n else if (typeof define == 'function' && define.amd) define(definition)\n else this[name] = definition()\n})('$script', function () {\n var doc = document\n , head = doc.getElementsByTagName('head')[0]\n , s = 'string'\n , f = false\n , push = 'push'\n , readyState = 'readyState'\n , onreadystatechange = 'onreadystatechange'\n , list = {}\n , ids = {}\n , delay = {}\n , scripts = {}\n , scriptpath\n , urlArgs\n\n function every(ar, fn) {\n for (var i = 0, j = ar.length; i < j; ++i) if (!fn(ar[i])) return f\n return 1\n }\n function each(ar, fn) {\n every(ar, function (el) {\n fn(el)\n return 1\n })\n }\n\n function $script(paths, idOrDone, optDone) {\n paths = paths[push] ? paths : [paths]\n var idOrDoneIsDone = idOrDone && idOrDone.call\n , done = idOrDoneIsDone ? idOrDone : optDone\n , id = idOrDoneIsDone ? paths.join('') : idOrDone\n , queue = paths.length\n function loopFn(item) {\n return item.call ? item() : list[item]\n }\n function callback() {\n if (!--queue) {\n list[id] = 1\n done && done()\n for (var dset in delay) {\n every(dset.split('|'), loopFn) && !each(delay[dset], loopFn) && (delay[dset] = [])\n }\n }\n }\n setTimeout(function () {\n each(paths, function loading(path, force) {\n if (path === null) return callback()\n \n if (!force && !/^https?:\\/\\//.test(path) && scriptpath) {\n path = (path.indexOf('.js') === -1) ? scriptpath + path + '.js' : scriptpath + path;\n }\n \n if (scripts[path]) {\n if (id) ids[id] = 1\n return (scripts[path] == 2) ? callback() : setTimeout(function () { loading(path, true) }, 0)\n }\n\n scripts[path] = 1\n if (id) ids[id] = 1\n create(path, callback)\n })\n }, 0)\n return $script\n }\n\n function create(path, fn) {\n var el = doc.createElement('script'), loaded\n el.onload = el.onerror = el[onreadystatechange] = function () {\n if ((el[readyState] && !(/^c|loade/.test(el[readyState]))) || loaded) return;\n el.onload = el[onreadystatechange] = null\n loaded = 1\n scripts[path] = 2\n fn()\n }\n el.async = 1\n el.src = urlArgs ? path + (path.indexOf('?') === -1 ? '?' : '&') + urlArgs : path;\n head.insertBefore(el, head.lastChild)\n }\n\n $script.get = create\n\n $script.order = function (scripts, id, done) {\n (function callback(s) {\n s = scripts.shift()\n !scripts.length ? $script(s, id, done) : $script(s, callback)\n }())\n }\n\n $script.path = function (p) {\n scriptpath = p\n }\n $script.urlArgs = function (str) {\n urlArgs = str;\n }\n $script.ready = function (deps, ready, req) {\n deps = deps[push] ? deps : [deps]\n var missing = [];\n !each(deps, function (dep) {\n list[dep] || missing[push](dep);\n }) && every(deps, function (dep) {return list[dep]}) ?\n ready() : !function (key) {\n delay[key] = delay[key] || []\n delay[key][push](ready)\n req && req(missing)\n }(deps.join('|'))\n return $script\n }\n\n $script.done = function (idOrDone) {\n $script([null], idOrDone)\n }\n\n return $script\n});\n","import { h, createRef } from 'preact';\nimport download from 'downloadjs';\nimport { route } from 'preact-router';\nimport { PureComponent, forwardRef, memo } from 'preact/compat';\nimport { ArrowLeft, CheckCircle, Home, Plus, Image, Film, Box, Music, File, Zap, Share2, Send } from 'preact-feather';\nimport copy from 'copy-to-clipboard';\n\nimport { withQueuedFiles } from '../contexts/QueuedFiles';\nimport Fab from '../../../components/Fab/Fab';\nimport Modal from '../../../components/Modal/Modal';\nimport FileDrop from '../../../components/FileDrop/FileDrop';\nimport { toast } from '../../../components/Toast';\nimport QRCode from '../../../icons/QRCode';\n\nimport socketConnect from '../../../utils/socketConnect';\nimport Visualizer from '../../../utils/visualizer';\nimport formatSize from '../../../utils/formatSize';\nimport pluralize from '../../../utils/pluralize';\nimport urls from '../../../utils/urls';\nimport constants from '../../../../../common/constants';\nimport roomsDispatch from '../../../reducers/rooms';\n\nimport './FileTransfer.scss';\n\nconst CanvasUnwrapped = (props, ref) => {\n return ;\n};\n\nconst Canvas = memo(forwardRef(CanvasUnwrapped));\n\nclass FileTransfer extends PureComponent {\n\n constructor(props) {\n super(props);\n let { room } = props;\n room = room.replace(/[^a-zA-z0-9 ]/g, ' ').trim().toLowerCase();\n const savedData = JSON.parse(localStorage.getItem('blaze'));\n this.client = {\n ...savedData.user,\n room: room || 'Local Network',\n isLocal: !room,\n };\n\n this.state = {\n percentage: null,\n peers: [],\n isP2P: true,\n files: [],\n filesQueued: 0,\n errorModal: {\n isOpen: false,\n message: '',\n },\n isSelectorEnabled: false,\n showQRCodeModal: false,\n };\n\n this.canvas = createRef();\n this.fileInput = createRef();\n\n /**\n * Add the current room in recent rooms list\n */\n if (room) {\n roomsDispatch({ type: 'add-room', payload: room });\n }\n }\n\n onUserJoin(users) {\n let isP2P = this.state.isP2P;\n const peers = this.state.peers;\n\n users.forEach(user => {\n if (user.name === this.client.name) return;\n\n /**\n * If a peer already exists in the state,\n * don't add it again in the visualizer\n */\n if (peers.some(peer => peer === user.name)) return;\n\n isP2P = isP2P && !!user.peerId;\n this.visualizer.addNode({\n name: user.name,\n peerId: user.peerId,\n });\n });\n\n this.setState({\n peers: users.map(user => user.name),\n isP2P,\n isSelectorEnabled: users.length - 1 > 0\n });\n }\n\n onUserLeave(user) {\n this.visualizer.removeNode(user);\n const peers = this.state.peers.filter(peer => peer !== user);\n this.setState({\n peers,\n isSelectorEnabled: peers.length - 1 > 0,\n });\n }\n\n\n /**\n * DOM is reset to prepare for the next file transfer\n */\n resetState() {\n this.visualizer.stopSharing();\n this.setState({\n filesQueued: 0,\n percentage: null,\n files: this.state.files.map(file => {\n file.sent = true;\n return file;\n }),\n isSelectorEnabled: this.state.peers.length - 1 > 0,\n });\n\n // Remove the file from the input\n this.fileInput.current.value = '';\n }\n\n selectFiles = (inputFiles) => {\n\n /**\n * When no files are selected(can occur when text selection is dropped)\n */\n if (!inputFiles || !inputFiles.length) {\n toast('Invalid file selected');\n return;\n }\n\n /**\n * Firefox for mobile has issue with selection of multiple files.\n * Only one file gets selected and that has '0' size. This is\n * checked here before proceeding to transfer the invalid file.\n */\n if (inputFiles[0].size === 0) {\n toast('Multiple files not supported on this browser');\n return;\n }\n\n /**\n * File selector was disabled, but somehow new files were received\n */\n if (!this.state.isSelectorEnabled) {\n toast('File transfer is not possible right now');\n return;\n }\n\n let filesQueued = inputFiles.length;\n this.setState({\n filesQueued: inputFiles.length,\n });\n\n /**\n * Start sending files\n */\n this.fileShare\n .sendFiles({\n numPeers: this.state.peers.length,\n input: inputFiles,\n useTorrent: this.state.isP2P,\n\n onMeta: (metaData) => {\n metaData = metaData.map(file => ({\n ...file,\n sentTo: this.state.peers.filter(name => name !== this.client.name),\n }));\n\n filesQueued -= metaData.length;\n this.setState({\n filesQueued,\n files: [...metaData, ...this.state.files],\n isSelectorEnabled: false,\n });\n },\n onTorrentProgress: ({ wires, length: fileSize }) => {\n let progress = 0;\n const receivers = wires.filter(wire => wire.uploadSpeed());\n\n /**\n * Calculates upload progress,\n * Upload progress is calculated based on amount of data sent to each of the receiving peer.\n * Hence it's not the overall measure of file sent, as the receiving peers may change during the transfer process\n * which would affect the upload progress shown\n */\n this.visualizer.startSharing(\n receivers.map(wire => {\n progress += wire.uploaded / fileSize;\n return wire.peerId;\n }),\n []\n );\n this.setState({\n percentage: receivers.length ? progress / receivers.length * 100 : 0,\n isSelectorEnabled: false\n });\n },\n onSocketProgress: ({ progress }) => {\n const percentage = progress * 100;\n this.setState({\n percentage,\n isSelectorEnabled: false,\n });\n this.visualizer.startSharing();\n\n if (percentage >= 100) {\n this.resetState();\n }\n },\n onDone: () => {\n this.setState({\n files: this.state.files.map(file => ({ ...file, sent: true })),\n });\n this.visualizer.stopSharing();\n this.resetState();\n },\n })\n .catch(err => {\n switch (err.message) {\n case constants.ERR_LARGE_FILE:\n // File selected by the user is larger than the set limit\n toast(`File size is limited to ${formatSize(this.state.isP2P ? TORRENT_SIZE_LIMIT : WS_SIZE_LIMIT)}`)\n break;\n default:\n // Some other error occurred\n toast('An error occured');\n }\n this.resetState();\n });\n }\n\n componentDidMount() {\n document.title = `${this.client.room} room | Blaze`;\n\n this.visualizer = new Visualizer(this.canvas.current);\n this.fileShare = socketConnect(this.client.isLocal ? '' : this.client.room, this.client.name);\n const { socket } = this.fileShare;\n\n this.visualizer.addNode({\n name: this.client.name,\n isClient: true,\n });\n\n socket.listen(constants.USER_JOIN, this.onUserJoin.bind(this));\n socket.listen(constants.USER_LEAVE, this.onUserLeave.bind(this));\n socket.on('close', data => {\n this.setState({\n errorModal: {\n isOpen: true,\n type: data.reason || constants.ERR_CONN_CLOSED,\n },\n });\n });\n\n\n this.clearReceiver = this.fileShare.receiveFiles({\n onMeta: (data) => {\n this.sender = data.sender;\n data.meta.forEach(file => {\n file.sentBy = data.sender;\n });\n\n this.setState({\n files: [...data.meta, ...this.state.files],\n isSelectorEnabled: false,\n });\n },\n onProgress: ({ progress, wires }) => {\n const receivedBy = [];\n const sentTo = [];\n\n if (wires !== undefined) {\n wires.forEach(wire => {\n if (wire.uploadSpeed()) {\n sentTo.push(wire.peerId);\n } else if (wire.downloadSpeed()) {\n receivedBy.push(wire.peerId);\n }\n });\n }\n else {\n receivedBy.push(this.sender);\n }\n\n this.visualizer.startSharing(sentTo, receivedBy);\n this.setState({\n percentage: progress * 100,\n isSelectorEnabled: false,\n });\n },\n onDone: (file, meta) => {\n if (file !== undefined) {\n if (Array.isArray(file)) {\n file.forEach(file => {\n file.getBlob((err, blob) => download(blob, file.name));\n });\n }\n else {\n download(file, meta.name, meta.type);\n }\n }\n this.resetState();\n },\n });\n\n window.addEventListener('paste', this.handleWindowPasteEvent);\n }\n\n componentWillUnmount() {\n const { socket } = this.fileShare;\n\n if (this.clearReceiver) {\n this.clearReceiver();\n }\n\n this.visualizer.destroy();\n socket.off(constants.USER_JOIN);\n socket.off(constants.USER_LEAVE);\n socket.close();\n\n window.removeEventListener('paste', this.handleWindowPasteEvent);\n }\n\n handleNewRoom = () => {\n this.setState({\n errorModal: {\n isOpen: false,\n },\n });\n\n route('/app', true);\n }\n\n handleShare = () => {\n if (!navigator.share) {\n this.copyLink();\n return\n }\n\n navigator.share({\n title: 'Share files',\n text: `Join my room '${this.client.room}' on Blaze to share files`,\n url: window.location.href,\n });\n }\n\n handleQueuedFiles = () => {\n this.selectFiles(this.props.queuedFiles);\n this.props.setQueuedFiles([]);\n }\n\n handleWindowPasteEvent = (e) => {\n this.selectFiles(e.clipboardData.files);\n }\n\n copyLink = () => {\n if (navigator.share)\n this.handleShare();\n else {\n copy(window.location.href);\n toast('Room link copied to clipboard');\n }\n }\n\n toggleQRCodeModal(state) {\n this.setState({\n showQRCodeModal: state,\n });\n }\n\n getFileIcon(file) {\n const size = 20;\n\n switch (file.type.split('/')[0]) {\n case 'image':\n return ;\n case 'video':\n return ;\n case 'audio':\n return ;\n case 'application':\n return ;\n default:\n return ;\n }\n }\n\n renderFile(file) {\n let fileProgress = (\n
\n \n \n \n
\n );\n\n if (file.sent) {\n fileProgress = (\n
\n \n
\n );\n } else if (this.state.percentage) {\n fileProgress = (\n
\n \n \n \n
\n );\n }\n\n return (\n
  • \n
    \n {this.getFileIcon(file)}\n
    \n
    \n

    {file.name}

    \n

    \n {formatSize(file.size)}\n {!!file.sentBy && ` | Sent by ${file.sentBy}`}\n {!!file.sentTo && ` | You sent to ${file.sentTo.join(', ')}`}\n

    \n
    \n\n {fileProgress}\n
  • \n );\n }\n\n renderErrorContent() {\n const { errorModal } = this.state;\n\n switch (errorModal.type) {\n case constants.ERR_SAME_NAME:\n return (\n <>\n

    Connection Error!

    \n

    User with same name exists in this room

    \n \n \n );\n case constants.ERR_CONN_CLOSED:\n default:\n return (\n <>\n

    Connection closed

    \n

    Tip: Try refreshing this page

    \n\n \n \n );\n }\n }\n\n render({ queuedFiles }, { percentage, peers, isP2P, files, filesQueued, errorModal, isSelectorEnabled, showQRCodeModal }) {\n\n return (\n
    \n
    \n \n\n
    \n

    \n {this.props.room === \"\" && }\n {this.client.room}\n

    \n
    \n\n \n \n \n
    \n\n
    \n\n
    \n \n\n {\n percentage !== null && (\n
    \n {Math.floor(percentage)}%\n
    \n )\n }\n\n
    1 && isP2P && 'p2p'}`}>\n {\n peers.length <= 1 ? `Share room link to devices ${this.client.isLocal ? 'in same local network' : ''} you want to share files with`\n : isP2P ? (\n <>\n Established a P2P connection!\n \n )\n : 'Using an intermediate server for sharing files'\n }\n
    \n\n {\n peers.length <= 1 && (\n
    \n \n \n \n
    \n )\n }\n
    \n\n\n this.selectFiles(e.target.files)}\n multiple\n />\n\n {\n (!!files.length || !!filesQueued) && (\n
    \n
    \n

    Files

    \n {\n !!filesQueued && (\n
    \n {filesQueued}\n {' '}\n {pluralize(filesQueued, 'file is', 'files are')}\n {' '}\n in queue\n
    \n )\n }\n
    \n
      \n {files.map(file => this.renderFile(file))}\n
    \n
    \n )\n }\n\n {\n queuedFiles.length ? (\n \n \n \n ) : (\n this.fileInput.current.click()}>\n \n \n )\n }\n\n
    \n\n \n
    \n {this.renderErrorContent()}\n
    \n
    \n\n this.toggleQRCodeModal(false)}>\n
    \n

    Room QR code

    \n

    Scan this QR code to join \"{this.client.room}\" file sharing room.

    \n\n \n\n \n
    \n
    \n\n { isSelectorEnabled && }\n
    \n );\n }\n}\n\nexport default withQueuedFiles(FileTransfer);\n","import { h } from 'preact';\nimport PropTypes from 'prop-types';\n\nimport Modal from '../../../../../components/Modal/Modal';\nimport './LocalRoomHelpModal.scoped.scss';\n\nfunction LocalRoomHelpModal({ onRoomJoin, ...props }) {\n return (\n \n
    \n

    Local Network room

    \n

    \n Local network room creates a private and isolated room among devices\n in the same network connection sharing the same public IP address.\n Devices outside the local network cannot join this room.\n
    \n
    \n If Blaze is unable to detect devices in your local network, you can\n still create a public file sharing room that allows any device\n connected to the internet to join the room and share files.\n

    \n \n
    \n
    \n );\n}\n\nLocalRoomHelpModal.propTypes = {\n onRoomJoin: PropTypes.func.isRequired,\n};\n\nexport default LocalRoomHelpModal;\n","import { h } from 'preact';\nimport { memo } from 'preact/compat';\nimport { ArrowDownCircle, Gift, Grid, PieChart, Settings } from 'preact-feather';\nimport { Link } from 'preact-router/match';\nimport { useContext } from 'preact/hooks';\nimport { PWAInstall } from '../../contexts/PWAInstall';\n\nimport './AppLanding.scoped.scss';\n\nconst Navigation = memo(function Navigation() {\n return (\n <>\n \n \n Rooms\n \n \n \n Settings\n \n \n \n Support\n \n \n )\n});\n\nfunction AppLanding({ children, title, subtitle }) {\n const { installable, deferredPrompt, setInstallable } = useContext(PWAInstall);\n\n const handleInstall = async () => {\n if (typeof window === 'undefined' || !installable || deferredPrompt === null) return;\n\n setInstallable(false);\n deferredPrompt.prompt();\n const { outcome } = await deferredPrompt.userChoice;\n\n window.ga('send', 'event', {\n eventCategory: 'pwa-install',\n eventAction: 'promo-shown',\n outcome,\n });\n };\n\n return (\n
    \n
    \n
    \n

    {title}

    \n
    \n {\n installable && (\n \n )\n }\n \n
    \n
    \n

    {subtitle}

    \n
    \n\n {children}\n\n
    \n \n
    \n
    \n );\n};\n\nexport default AppLanding;\n","import { h, FunctionalComponent } from 'preact';\nimport { FeatherProps } from '../types';\n\nexport const ArrowLeft: FunctionalComponent = (\n\tprops: FeatherProps\n) => {\n\tconst color = props.color || 'currentColor';\n\tconst size = props.size || 24;\n\tdelete props.color;\n\tdelete props.size;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n","export default __webpack_public_path__ + \"25a182f265f8cc2d78a815547f118a3c.svg\";","import { deserialize, serialize } from '../utils';\n/**\n * A function to create a dispatcher that updates data stored on localStorage.\n *\n * @param key key for localStorage\n * @param reducer reducer method that returns new data\n * @returns a dispatch method\n */\nfunction createLocalStorageDispatch(key, reducer) {\n return function (action) {\n if (typeof window === 'undefined')\n return;\n var data = deserialize(window.localStorage.getItem(key));\n var updatedData = serialize(reducer(data, action));\n window.localStorage.setItem(key, updatedData);\n window.dispatchEvent(new StorageEvent('storage', { key: key, newValue: updatedData }));\n };\n}\nexport default createLocalStorageDispatch;\n","\nconst EMPTY = {};\n\nexport function assign(obj, props) {\n\t// eslint-disable-next-line guard-for-in\n\tfor (let i in props) {\n\t\tobj[i] = props[i];\n\t}\n\treturn obj;\n}\n\nexport function exec(url, route, opts) {\n\tlet reg = /(?:\\?([^#]*))?(#.*)?$/,\n\t\tc = url.match(reg),\n\t\tmatches = {},\n\t\tret;\n\tif (c && c[1]) {\n\t\tlet p = c[1].split('&');\n\t\tfor (let i=0; i b.rank) ? -1 :\n\t\t\t\t(a.index - b.index)\n\t);\n}\n\n// filter out VNodes without attributes (which are unrankeable), and add `index`/`rank` properties to be used in sorting.\nexport function prepareVNodeForRanking(vnode, index) {\n\tvnode.index = index;\n\tvnode.rank = rankChild(vnode);\n\treturn vnode.props;\n}\n\nexport function segmentize(url) {\n\treturn url.replace(/(^\\/+|\\/+$)/g, '').split('/');\n}\n\nexport function rankSegment(segment) {\n\treturn segment.charAt(0)==':' ? (1 + '*+?'.indexOf(segment.charAt(segment.length-1))) || 4 : 5;\n}\n\nexport function rank(path) {\n\treturn segmentize(path).map(rankSegment).join('');\n}\n\nfunction rankChild(vnode) {\n\treturn vnode.props.default ? 0 : rank(vnode.props.path);\n}\n","import { cloneElement, createElement, Component, toChildArray } from 'preact';\nimport { exec, prepareVNodeForRanking, assign, pathRankSort } from './util';\n\nlet customHistory = null;\n\nconst ROUTERS = [];\n\nconst subscribers = [];\n\nconst EMPTY = {};\n\nfunction setUrl(url, type='push') {\n\tif (customHistory && customHistory[type]) {\n\t\tcustomHistory[type](url);\n\t}\n\telse if (typeof history!=='undefined' && history[type+'State']) {\n\t\thistory[type+'State'](null, null, url);\n\t}\n}\n\n\nfunction getCurrentUrl() {\n\tlet url;\n\tif (customHistory && customHistory.location) {\n\t\turl = customHistory.location;\n\t}\n\telse if (customHistory && customHistory.getCurrentLocation) {\n\t\turl = customHistory.getCurrentLocation();\n\t}\n\telse {\n\t\turl = typeof location!=='undefined' ? location : EMPTY;\n\t}\n\treturn `${url.pathname || ''}${url.search || ''}`;\n}\n\n\n\nfunction route(url, replace=false) {\n\tif (typeof url!=='string' && url.url) {\n\t\treplace = url.replace;\n\t\turl = url.url;\n\t}\n\n\t// only push URL into history if we can handle it\n\tif (canRoute(url)) {\n\t\tsetUrl(url, replace ? 'replace' : 'push');\n\t}\n\n\treturn routeTo(url);\n}\n\n\n/** Check if the given URL can be handled by any router instances. */\nfunction canRoute(url) {\n\tfor (let i=ROUTERS.length; i--; ) {\n\t\tif (ROUTERS[i].canRoute(url)) return true;\n\t}\n\treturn false;\n}\n\n\n/** Tell all router instances to handle the given URL. */\nfunction routeTo(url) {\n\tlet didRoute = false;\n\tfor (let i=0; i {\n\t\t\t\trouteTo(getCurrentUrl());\n\t\t\t});\n\t\t}\n\t\taddEventListener('click', delegateLinkHandler);\n\t}\n\teventListenersInitialized = true;\n}\n\n\nclass Router extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tif (props.history) {\n\t\t\tcustomHistory = props.history;\n\t\t}\n\n\t\tthis.state = {\n\t\t\turl: props.url || getCurrentUrl()\n\t\t};\n\n\t\tinitEventListeners();\n\t}\n\n\tshouldComponentUpdate(props) {\n\t\tif (props.static!==true) return true;\n\t\treturn props.url!==this.props.url || props.onChange!==this.props.onChange;\n\t}\n\n\t/** Check if the given URL can be matched against any children */\n\tcanRoute(url) {\n\t\tconst children = toChildArray(this.props.children);\n\t\treturn this.getMatchingChildren(children, url, false).length > 0;\n\t}\n\n\t/** Re-render children with a new URL to match against. */\n\trouteTo(url) {\n\t\tthis.setState({ url });\n\n\t\tconst didRoute = this.canRoute(url);\n\n\t\t// trigger a manual re-route if we're not in the middle of an update:\n\t\tif (!this.updating) this.forceUpdate();\n\n\t\treturn didRoute;\n\t}\n\n\tcomponentWillMount() {\n\t\tROUTERS.push(this);\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidMount() {\n\t\tif (customHistory) {\n\t\t\tthis.unlisten = customHistory.listen((location) => {\n\t\t\t\tthis.routeTo(`${location.pathname || ''}${location.search || ''}`);\n\t\t\t});\n\t\t}\n\t\tthis.updating = false;\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (typeof this.unlisten==='function') this.unlisten();\n\t\tROUTERS.splice(ROUTERS.indexOf(this), 1);\n\t}\n\n\tcomponentWillUpdate() {\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidUpdate() {\n\t\tthis.updating = false;\n\t}\n\n\tgetMatchingChildren(children, url, invoke) {\n\t\treturn children\n\t\t\t.filter(prepareVNodeForRanking)\n\t\t\t.sort(pathRankSort)\n\t\t\t.map( vnode => {\n\t\t\t\tlet matches = exec(url, vnode.props.path, vnode.props);\n\t\t\t\tif (matches) {\n\t\t\t\t\tif (invoke !== false) {\n\t\t\t\t\t\tlet newProps = { url, matches };\n\t\t\t\t\t\tassign(newProps, matches);\n\t\t\t\t\t\tdelete newProps.ref;\n\t\t\t\t\t\tdelete newProps.key;\n\t\t\t\t\t\treturn cloneElement(vnode, newProps);\n\t\t\t\t\t}\n\t\t\t\t\treturn vnode;\n\t\t\t\t}\n\t\t\t}).filter(Boolean);\n\t}\n\n\trender({ children, onChange }, { url }) {\n\t\tlet active = this.getMatchingChildren(toChildArray(children), url, true);\n\n\t\tlet current = active[0] || null;\n\n\t\tlet previous = this.previousUrl;\n\t\tif (url!==previous) {\n\t\t\tthis.previousUrl = url;\n\t\t\tif (typeof onChange==='function') {\n\t\t\t\tonChange({\n\t\t\t\t\trouter: this,\n\t\t\t\t\turl,\n\t\t\t\t\tprevious,\n\t\t\t\t\tactive,\n\t\t\t\t\tcurrent\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn current;\n\t}\n}\n\nconst Link = (props) => (\n\tcreateElement('a', assign({ onClick: handleLinkClick }, props))\n);\n\nconst Route = props => createElement(props.component, props);\n\nRouter.subscribers = subscribers;\nRouter.getCurrentUrl = getCurrentUrl;\nRouter.route = route;\nRouter.Router = Router;\nRouter.Route = Route;\nRouter.Link = Link;\nRouter.exec = exec;\n\nexport { subscribers, getCurrentUrl, route, Router, Route, Link, exec };\nexport default Router;\n","import React from 'react';\nexport default React.createContext(null);","import { h, FunctionalComponent } from 'preact';\nimport { FeatherProps } from '../types';\n\nexport const File: FunctionalComponent = (\n\tprops: FeatherProps\n) => {\n\tconst color = props.color || 'currentColor';\n\tconst size = props.size || 24;\n\tdelete props.color;\n\tdelete props.size;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n","import { h, FunctionalComponent } from 'preact';\nimport { FeatherProps } from '../types';\n\nexport const ArrowDownCircle: FunctionalComponent = (\n\tprops: FeatherProps\n) => {\n\tconst color = props.color || 'currentColor';\n\tconst size = props.size || 24;\n\tdelete props.color;\n\tdelete props.size;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n","function QRCode(props) {\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default QRCode;\n","import { Loader } from 'preact-feather';\n\nimport Modal from '../../../../../components/Modal/Modal';\nimport { useInstantRoom } from '../../../../../hooks';\n\nimport './NewRoomModal.scoped.scss';\n\nfunction NewRoomModal({ onNewRoom, ...props }) {\n const [getInstantRoom, { loading: isLoading }] = useInstantRoom((room) => {\n onNewRoom(room);\n });\n\n const handleSubmit = (e) => {\n e.preventDefault();\n const formData = new FormData(e.target);\n onNewRoom(formData.get('room'));\n };\n\n return (\n \n
    \n

    Create public room

    \n

    \n Public rooms allow file sharing to any device connected to the\n internet in the same room.\n

    \n
    \n {\n e.target.setCustomValidity(\n 'Room names can contain only letters and numbers'\n );\n }}\n onChange={(e) => {\n e.target.setCustomValidity('');\n }}\n disabled={isLoading}\n />\n \n \n
    \n

    \n Instant Rooms are easy to remember room names that don't clash with\n existing rooms.\n

    \n \n \n   \n {isLoading ? 'Joining' : 'Join Instant Room'}\n \n
    \n
    \n );\n}\n\nexport default NewRoomModal;\n","import { h } from 'preact';\nimport { CSSTransition } from 'react-transition-group';\n\nfunction TransitionRoute({ children, ...props }) {\n return (\n \n {children}\n \n )\n}\n\nexport default TransitionRoute;\n","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\n\nvar _leaveRenders, _enterRenders;\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { ENTERED, ENTERING, EXITING } from './Transition';\nimport TransitionGroupContext from './TransitionGroupContext';\n\nfunction areChildrenDifferent(oldChildren, newChildren) {\n if (oldChildren === newChildren) return false;\n\n if (React.isValidElement(oldChildren) && React.isValidElement(newChildren) && oldChildren.key != null && oldChildren.key === newChildren.key) {\n return false;\n }\n\n return true;\n}\n/**\n * Enum of modes for SwitchTransition component\n * @enum { string }\n */\n\n\nexport var modes = {\n out: 'out-in',\n in: 'in-out'\n};\n\nvar callHook = function callHook(element, name, cb) {\n return function () {\n var _element$props;\n\n element.props[name] && (_element$props = element.props)[name].apply(_element$props, arguments);\n cb();\n };\n};\n\nvar leaveRenders = (_leaveRenders = {}, _leaveRenders[modes.out] = function (_ref) {\n var current = _ref.current,\n changeState = _ref.changeState;\n return React.cloneElement(current, {\n in: false,\n onExited: callHook(current, 'onExited', function () {\n changeState(ENTERING, null);\n })\n });\n}, _leaveRenders[modes.in] = function (_ref2) {\n var current = _ref2.current,\n changeState = _ref2.changeState,\n children = _ref2.children;\n return [current, React.cloneElement(children, {\n in: true,\n onEntered: callHook(children, 'onEntered', function () {\n changeState(ENTERING);\n })\n })];\n}, _leaveRenders);\nvar enterRenders = (_enterRenders = {}, _enterRenders[modes.out] = function (_ref3) {\n var children = _ref3.children,\n changeState = _ref3.changeState;\n return React.cloneElement(children, {\n in: true,\n onEntered: callHook(children, 'onEntered', function () {\n changeState(ENTERED, React.cloneElement(children, {\n in: true\n }));\n })\n });\n}, _enterRenders[modes.in] = function (_ref4) {\n var current = _ref4.current,\n children = _ref4.children,\n changeState = _ref4.changeState;\n return [React.cloneElement(current, {\n in: false,\n onExited: callHook(current, 'onExited', function () {\n changeState(ENTERED, React.cloneElement(children, {\n in: true\n }));\n })\n }), React.cloneElement(children, {\n in: true\n })];\n}, _enterRenders);\n/**\n * A transition component inspired by the [vue transition modes](https://vuejs.org/v2/guide/transitions.html#Transition-Modes).\n * You can use it when you want to control the render between state transitions.\n * Based on the selected mode and the child's key which is the `Transition` or `CSSTransition` component, the `SwitchTransition` makes a consistent transition between them.\n *\n * If the `out-in` mode is selected, the `SwitchTransition` waits until the old child leaves and then inserts a new child.\n * If the `in-out` mode is selected, the `SwitchTransition` inserts a new child first, waits for the new child to enter and then removes the old child.\n *\n * **Note**: If you want the animation to happen simultaneously\n * (that is, to have the old child removed and a new child inserted **at the same time**),\n * you should use\n * [`TransitionGroup`](https://reactcommunity.org/react-transition-group/transition-group)\n * instead.\n *\n * ```jsx\n * function App() {\n * const [state, setState] = useState(false);\n * return (\n * \n * node.addEventListener(\"transitionend\", done, false)}\n * classNames='fade'\n * >\n * \n * \n * \n * );\n * }\n * ```\n *\n * ```css\n * .fade-enter{\n * opacity: 0;\n * }\n * .fade-exit{\n * opacity: 1;\n * }\n * .fade-enter-active{\n * opacity: 1;\n * }\n * .fade-exit-active{\n * opacity: 0;\n * }\n * .fade-enter-active,\n * .fade-exit-active{\n * transition: opacity 500ms;\n * }\n * ```\n */\n\nvar SwitchTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(SwitchTransition, _React$Component);\n\n function SwitchTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.state = {\n status: ENTERED,\n current: null\n };\n _this.appeared = false;\n\n _this.changeState = function (status, current) {\n if (current === void 0) {\n current = _this.state.current;\n }\n\n _this.setState({\n status: status,\n current: current\n });\n };\n\n return _this;\n }\n\n var _proto = SwitchTransition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.appeared = true;\n };\n\n SwitchTransition.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n if (props.children == null) {\n return {\n current: null\n };\n }\n\n if (state.status === ENTERING && props.mode === modes.in) {\n return {\n status: ENTERING\n };\n }\n\n if (state.current && areChildrenDifferent(state.current, props.children)) {\n return {\n status: EXITING\n };\n }\n\n return {\n current: React.cloneElement(props.children, {\n in: true\n })\n };\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n mode = _this$props.mode,\n _this$state = this.state,\n status = _this$state.status,\n current = _this$state.current;\n var data = {\n children: children,\n current: current,\n changeState: this.changeState,\n status: status\n };\n var component;\n\n switch (status) {\n case ENTERING:\n component = enterRenders[mode](data);\n break;\n\n case EXITING:\n component = leaveRenders[mode](data);\n break;\n\n case ENTERED:\n component = current;\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: {\n isMounting: !this.appeared\n }\n }, component);\n };\n\n return SwitchTransition;\n}(React.Component);\n\nSwitchTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Transition modes.\n * `out-in`: Current element transitions out first, then when complete, the new element transitions in.\n * `in-out`: New element transitions in first, then when complete, the current element transitions out.\n *\n * @type {'out-in'|'in-out'}\n */\n mode: PropTypes.oneOf([modes.in, modes.out]),\n\n /**\n * Any `Transition` or `CSSTransition` component.\n */\n children: PropTypes.oneOfType([PropTypes.element.isRequired])\n} : {};\nSwitchTransition.defaultProps = {\n mode: modes.out\n};\nexport default SwitchTransition;","import { h } from 'preact';\nimport { SwitchTransition } from 'react-transition-group';\nimport cx from 'classnames';\nimport Router from 'preact-router';\n\nclass TransitionRouter extends Router {\n constructor(props) {\n super(props);\n this.state = {\n ...this.state,\n animType: 'enter',\n };\n }\n\n handleRouteChange(location) {\n const nextDepth = location.url.split('/').length;\n const prevDepth = (location.previous ?? '').split('/').length;\n \n if (nextDepth > prevDepth) {\n this.setState({ animType: 'enter' });\n } else if (nextDepth < prevDepth) {\n this.setState({ animType: 'exit' })\n }\n\n if (typeof this.props.onChange === 'function') {\n this.props.onChange(location);\n }\n }\n\n render(props, state) {\n return (\n
    \n \n {super.render({\n onChange: this.handleRouteChange.bind(this),\n ...props\n }, state)}\n \n
    \n );\n }\n}\n\nexport default TransitionRouter;\n","export default __webpack_public_path__ + \"e0cb1e0f57199ee2ab37d01405accae4.svg\";","import { h } from 'preact';\nimport { useEffect } from 'preact/hooks';\nimport { route } from 'preact-router';\nimport FourOFourVis from '../../../assets/images/illustrations/four-o-four.svg';\n\nimport './FourOFour.scss';\n\nconst FourOFour = () => (\n
    \n \n

    Oops, this connection just broke into numbers!

    \n

    Let's get you back to Blaze to start sharing some files

    \n Go to home\n
    \n);\n\nconst RedirectToFourOFour = () => {\n useEffect(() => {\n route('/404', true);\n }, []);\n\n return null;\n}\n\nexport { FourOFour as default, RedirectToFourOFour };","import { h, FunctionalComponent } from 'preact';\nimport { FeatherProps } from '../types';\n\nexport const Plus: FunctionalComponent = (\n\tprops: FeatherProps\n) => {\n\tconst color = props.color || 'currentColor';\n\tconst size = props.size || 24;\n\tdelete props.color;\n\tdelete props.size;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n","import { h, FunctionalComponent } from 'preact';\nimport { FeatherProps } from '../types';\n\nexport const Settings: FunctionalComponent = (\n\tprops: FeatherProps\n) => {\n\tconst color = props.color || 'currentColor';\n\tconst size = props.size || 24;\n\tdelete props.color;\n\tdelete props.size;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { __assign } from \"tslib\";\nimport { useCallback, useEffect, useState } from 'react';\nimport { deserialize } from '../utils';\n;\n/**\n * Hook to query an data stored in the localStorage and reactively update when it changes.\n * The hook only updates when the result of `selector` method changes.\n *\n * @param key Key of the localstorage store to be queried\n * @param selector Selector function to select items from the store\n * @param opts Options object\n * @returns Data queried by the `selector` method\n */\nfunction useLocalStorageSelector(key, selector, opts) {\n var options = __assign({ equalityFn: function (prev, next) { return prev === next; } }, opts);\n var _a = useState(function () { return typeof window !== 'undefined' ? selector(deserialize(window.localStorage.getItem(key))) : undefined; }), state = _a[0], setState = _a[1];\n var handleStorage = useCallback(function (event) {\n if (event.key !== key)\n return;\n var selectedData = selector(deserialize(event.newValue));\n if (!options.equalityFn(state, selectedData)) {\n setState(selectedData);\n }\n }, [state, key, setState]);\n useEffect(function () {\n if (typeof window === 'undefined')\n return;\n window.addEventListener('storage', handleStorage);\n return function () { return window.removeEventListener('storage', handleStorage); };\n }, [key, setState, handleStorage]);\n return state;\n}\nexport default useLocalStorageSelector;\n","import { h, FunctionalComponent } from 'preact';\nimport { FeatherProps } from '../types';\n\nexport const Zap: FunctionalComponent = (props: FeatherProps) => {\n\tconst color = props.color || 'currentColor';\n\tconst size = props.size || 24;\n\tdelete props.color;\n\tdelete props.size;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n};\n","import { EMPTY_ARR } from \"./constants\";\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-ignore We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n","import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (vnode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || setTimeout)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((process._rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\n\nprocess._rerenderCount = 0;\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, childVNode, newDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < renderResult.length; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (childVNode == null || typeof childVNode == 'boolean') {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g.
    {reuse}{reuse}
    ) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (Array.isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t// const reuse =
    \n\t\t\t//
    {reuse}{reuse}
    \n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Check if we find a corresponding element in oldChildren.\n\t\t// If found, delete the array item by setting to `undefined`.\n\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t// (holes).\n\t\toldVNode = oldChildren[i];\n\n\t\tif (\n\t\t\toldVNode === null ||\n\t\t\t(oldVNode &&\n\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t) {\n\t\t\toldChildren[i] = undefined;\n\t\t} else {\n\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t// We always match by type (in either case).\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toldVNode = null;\n\t\t\t}\n\t\t}\n\n\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating\n\t\t);\n\n\t\tnewDom = childVNode._dom;\n\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (!refs) refs = [];\n\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\t\tchildVNode._children === oldVNode._children\n\t\t\t) {\n\t\t\t\tchildVNode._nextDom = oldDom = reorderChildren(\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldDom,\n\t\t\t\t\tparentDom\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\toldChildren,\n\t\t\t\t\tnewDom,\n\t\t\t\t\toldDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t} else if (\n\t\t\toldDom &&\n\t\t\toldVNode._dom == oldDom &&\n\t\t\toldDom.parentNode != parentDom\n\t\t) {\n\t\t\t// The above condition is to handle null placeholders. See test in placeholder.test.js:\n\t\t\t// `efficiently replace null placeholders in parent rerenders`\n\t\t\toldDom = getDomSibling(oldVNode);\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) {\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\n\t\t}\n\t}\n\n\t// Set refs only after unmount\n\tif (refs) {\n\t\tfor (i = 0; i < refs.length; i++) {\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i]);\n\t\t}\n\t}\n}\n\nfunction reorderChildren(childVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\tlet c = childVNode._children;\n\tlet tmp = 0;\n\tfor (; c && tmp < c.length; tmp++) {\n\t\tlet vnode = c[tmp];\n\t\tif (vnode) {\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\n\t\t\t// (childVNode here).\n\t\t\tvnode._parent = childVNode;\n\n\t\t\tif (typeof vnode.type == 'function') {\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(parentDom, vnode, vnode, c, vnode._dom, oldDom);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (Array.isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nfunction placeChild(\n\tparentDom,\n\tchildVNode,\n\toldVNode,\n\toldChildren,\n\tnewDom,\n\toldDom\n) {\n\tlet nextDom;\n\tif (childVNode._nextDom !== undefined) {\n\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t// of last DOM child of this child VNode\n\t\tnextDom = childVNode._nextDom;\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t// can clean up the property\n\t\tchildVNode._nextDom = undefined;\n\t} else if (\n\t\toldVNode == null ||\n\t\tnewDom != oldDom ||\n\t\tnewDom.parentNode == null\n\t) {\n\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\tparentDom.appendChild(newDom);\n\t\t\tnextDom = null;\n\t\t} else {\n\t\t\t// `j href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname !== 'href' &&\n\t\t\tname !== 'list' &&\n\t\t\tname !== 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname !== 'tabIndex' &&\n\t\t\tname !== 'download' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t// The value `false` is different from the attribute not\n\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t// that other VDOM frameworks also always stringify `false`.\n\n\t\tif (typeof value === 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name.indexOf('-') != -1)) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tthis._listeners[e.type + false](options.event ? options.event(e) : e);\n}\n\nfunction eventProxyCapture(e) {\n\tthis._listeners[e.type + true](options.event ? options.event(e) : e);\n}\n","import { EMPTY_OBJ } from '../constants';\nimport { Component, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\tnewVNode._original === oldVNode._original\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tArray.isArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\tnewVNode._dom = oldDom;\n\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t// ^ could possibly be simplified to:\n\t\t\t// excessDomChildren.length = 0;\n\t\t}\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = newVNode.type;\n\tlet i = 0;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild &&\n\t\t\t\t'setAttribute' in child === !!nodeType &&\n\t\t\t\t(nodeType ? child.localName === nodeType : child.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS(\n\t\t\t\t'http://www.w3.org/2000/svg',\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType\n\t\t\t);\n\t\t} else {\n\t\t\tdom = document.createElement(\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType,\n\t\t\t\tnewProps.is && newProps\n\t\t\t);\n\t\t}\n\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tArray.isArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the -element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value ||\n\t\t\t\t\t(nodeType === 'progress' && !i) ||\n\t\t\t\t\t// This is only for IE 11 to fix \n\t\tif (\n\t\t\ttype == 'select' &&\n\t\t\tnormalizedProps.multiple &&\n\t\t\tArray.isArray(normalizedProps.value)\n\t\t) {\n\t\t\t// forEach() always returns undefined, which we abuse here to unset the value prop.\n\t\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\t\tchild.props.selected =\n\t\t\t\t\tnormalizedProps.value.indexOf(child.props.value) != -1;\n\t\t\t});\n\t\t}\n\n\t\t// Adding support for defaultValue in select tag\n\t\tif (type == 'select' && normalizedProps.defaultValue != null) {\n\t\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\t\tif (normalizedProps.multiple) {\n\t\t\t\t\tchild.props.selected =\n\t\t\t\t\t\tnormalizedProps.defaultValue.indexOf(child.props.value) != -1;\n\t\t\t\t} else {\n\t\t\t\t\tchild.props.selected =\n\t\t\t\t\t\tnormalizedProps.defaultValue == child.props.value;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvnode.props = normalizedProps;\n\n\t\tif (props.class != props.className) {\n\t\t\tclassNameDescriptor.enumerable = 'className' in props;\n\t\t\tif (props.className != null) normalizedProps.class = props.className;\n\t\t\tObject.defineProperty(normalizedProps, 'className', classNameDescriptor);\n\t\t}\n\t}\n\n\tvnode.$$typeof = REACT_ELEMENT_TYPE;\n\n\tif (oldVNodeHook) oldVNodeHook(vnode);\n};\n\n// Only needed for react-relay\nlet currentComponent;\nconst oldBeforeRender = options._render;\noptions._render = function(vnode) {\n\tif (oldBeforeRender) {\n\t\toldBeforeRender(vnode);\n\t}\n\tcurrentComponent = vnode._component;\n};\n\n// This is a very very private internal function for React it\n// is used to sort-of do runtime dependency injection. So far\n// only `react-relay` makes use of it. It uses it to read the\n// context value.\nexport const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {\n\tReactCurrentDispatcher: {\n\t\tcurrent: {\n\t\t\treadContext(context) {\n\t\t\t\treturn currentComponent._globalContext[context._id].props.value;\n\t\t\t}\n\t\t}\n\t}\n};\n","import {\n\tcreateElement,\n\trender as preactRender,\n\tcloneElement as preactCloneElement,\n\tcreateRef,\n\tComponent,\n\tcreateContext,\n\tFragment\n} from 'preact';\nimport {\n\tuseState,\n\tuseId,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue\n} from 'preact/hooks';\nimport { PureComponent } from './PureComponent';\nimport { memo } from './memo';\nimport { forwardRef } from './forwardRef';\nimport { Children } from './Children';\nimport { Suspense, lazy } from './suspense';\nimport { SuspenseList } from './suspense-list';\nimport { createPortal } from './portals';\nimport { is } from './util';\nimport {\n\thydrate,\n\trender,\n\tREACT_ELEMENT_TYPE,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n} from './render';\n\nconst version = '17.0.2'; // trick libraries to think we are react\n\n/**\n * Legacy version of createElement.\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor\n */\nfunction createFactory(type) {\n\treturn createElement.bind(null, type);\n}\n\n/**\n * Check if the passed element is a valid (p)react node.\n * @param {*} element The element to check\n * @returns {boolean}\n */\nfunction isValidElement(element) {\n\treturn !!element && element.$$typeof === REACT_ELEMENT_TYPE;\n}\n\n/**\n * Wrap `cloneElement` to abort if the passed element is not a valid element and apply\n * all vnode normalizations.\n * @param {import('./internal').VNode} element The vnode to clone\n * @param {object} props Props to add when cloning\n * @param {Array} rest Optional component children\n */\nfunction cloneElement(element) {\n\tif (!isValidElement(element)) return element;\n\treturn preactCloneElement.apply(null, arguments);\n}\n\n/**\n * Remove a component tree from the DOM, including state and event handlers.\n * @param {import('./internal').PreactElement} container\n * @returns {boolean}\n */\nfunction unmountComponentAtNode(container) {\n\tif (container._children) {\n\t\tpreactRender(null, container);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * Get the matching DOM node for a component\n * @param {import('./internal').Component} component\n * @returns {import('./internal').PreactElement | null}\n */\nfunction findDOMNode(component) {\n\treturn (\n\t\t(component &&\n\t\t\t(component.base || (component.nodeType === 1 && component))) ||\n\t\tnull\n\t);\n}\n\n/**\n * Deprecated way to control batched rendering inside the reconciler, but we\n * already schedule in batches inside our rendering code\n * @template Arg\n * @param {(arg: Arg) => void} callback function that triggers the updated\n * @param {Arg} [arg] Optional argument that can be passed to the callback\n */\n// eslint-disable-next-line camelcase\nconst unstable_batchedUpdates = (callback, arg) => callback(arg);\n\n/**\n * In React, `flushSync` flushes the entire tree and forces a rerender. It's\n * implmented here as a no-op.\n * @template Arg\n * @template Result\n * @param {(arg: Arg) => Result} callback function that runs before the flush\n * @param {Arg} [arg] Optional arugment that can be passed to the callback\n * @returns\n */\nconst flushSync = (callback, arg) => callback(arg);\n\n/**\n * Strict Mode is not implemented in Preact, so we provide a stand-in for it\n * that just renders its children without imposing any restrictions.\n */\nconst StrictMode = Fragment;\n\nexport function startTransition(cb) {\n\tcb();\n}\n\nexport function useDeferredValue(val) {\n\treturn val;\n}\n\nexport function useTransition() {\n\treturn [false, startTransition];\n}\n\n// TODO: in theory this should be done after a VNode is diffed as we want to insert\n// styles/... before it attaches\nexport const useInsertionEffect = useLayoutEffect;\n\n/**\n * This is taken from https://github.com/facebook/react/blob/main/packages/use-sync-external-store/src/useSyncExternalStoreShimClient.js#L84\n * on a high level this cuts out the warnings, ... and attempts a smaller implementation\n */\nexport function useSyncExternalStore(subscribe, getSnapshot) {\n\tconst value = getSnapshot();\n\n\tconst [{ _instance }, forceUpdate] = useState({\n\t\t_instance: { _value: value, _getSnapshot: getSnapshot }\n\t});\n\n\tuseLayoutEffect(() => {\n\t\t_instance._value = value;\n\t\t_instance._getSnapshot = getSnapshot;\n\n\t\tif (!is(_instance._value, getSnapshot())) {\n\t\t\tforceUpdate({ _instance });\n\t\t}\n\t}, [subscribe, value, getSnapshot]);\n\n\tuseEffect(() => {\n\t\tif (!is(_instance._value, _instance._getSnapshot())) {\n\t\t\tforceUpdate({ _instance });\n\t\t}\n\n\t\treturn subscribe(() => {\n\t\t\tif (!is(_instance._value, _instance._getSnapshot())) {\n\t\t\t\tforceUpdate({ _instance });\n\t\t\t}\n\t\t});\n\t}, [subscribe]);\n\n\treturn value;\n}\n\nexport * from 'preact/hooks';\nexport {\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tflushSync,\n\t// eslint-disable-next-line camelcase\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n\n// React copies the named exports to the default one.\nexport default {\n\tuseState,\n\tuseId,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseInsertionEffect,\n\tuseTransition,\n\tuseDeferredValue,\n\tuseSyncExternalStore,\n\tstartTransition,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue,\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tflushSync,\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n","import { toChildArray } from 'preact';\n\nconst mapFn = (children, fn) => {\n\tif (children == null) return null;\n\treturn toChildArray(toChildArray(children).map(fn));\n};\n\n// This API is completely unnecessary for Preact, so it's basically passthrough.\nexport const Children = {\n\tmap: mapFn,\n\tforEach: mapFn,\n\tcount(children) {\n\t\treturn children ? toChildArray(children).length : 0;\n\t},\n\tonly(children) {\n\t\tconst normalized = toChildArray(children);\n\t\tif (normalized.length !== 1) throw 'Children.only';\n\t\treturn normalized[0];\n\t},\n\ttoArray: toChildArray\n};\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
    \n * I'm a fade Transition!\n *
    \n * )}\n *
    \n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
    \n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
    \n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","export default {\n disabled: false\n};","import { createContext } from 'preact';\n\nconst QueuedFiles = createContext({\n queuedFiles: [],\n setQueuedFiles: () => {},\n});\n\nfunction withQueuedFiles(Component) {\n const Wrapped = props => (\n \n {queued => }\n \n );\n\n return Wrapped;\n}\n\nexport {\n QueuedFiles,\n withQueuedFiles,\n};\n","import { h, FunctionalComponent } from 'preact';\nimport { FeatherProps } from '../types';\n\nexport const Send: FunctionalComponent = (\n\tprops: FeatherProps\n) => {\n\tconst color = props.color || 'currentColor';\n\tconst size = props.size || 24;\n\tdelete props.color;\n\tdelete props.size;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n","//download.js v4.2, by dandavis; 2008-2016. [MIT] see http://danml.com/download.html for tests/usage\n// v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime\n// v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs\n// v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support. 3.1 improved safari handling.\n// v4 adds AMD/UMD, commonJS, and plain browser support\n// v4.1 adds url download capability via solo URL argument (same domain/CORS only)\n// v4.2 adds semantic variable names, long (over 2MB) dataURL support, and hidden by default temp anchors\n// https://github.com/rndme/download\n\n(function (root, factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([], factory);\n\t} else if (typeof exports === 'object') {\n\t\t// Node. Does not work with strict CommonJS, but\n\t\t// only CommonJS-like environments that support module.exports,\n\t\t// like Node.\n\t\tmodule.exports = factory();\n\t} else {\n\t\t// Browser globals (root is window)\n\t\troot.download = factory();\n }\n}(this, function () {\n\n\treturn function download(data, strFileName, strMimeType) {\n\n\t\tvar self = window, // this script is only for browsers anyway...\n\t\t\tdefaultMime = \"application/octet-stream\", // this default mime also triggers iframe downloads\n\t\t\tmimeType = strMimeType || defaultMime,\n\t\t\tpayload = data,\n\t\t\turl = !strFileName && !strMimeType && payload,\n\t\t\tanchor = document.createElement(\"a\"),\n\t\t\ttoString = function(a){return String(a);},\n\t\t\tmyBlob = (self.Blob || self.MozBlob || self.WebKitBlob || toString),\n\t\t\tfileName = strFileName || \"download\",\n\t\t\tblob,\n\t\t\treader;\n\t\t\tmyBlob= myBlob.call ? myBlob.bind(self) : Blob ;\n\t \n\t\tif(String(this)===\"true\"){ //reverse arguments, allowing download.bind(true, \"text/xml\", \"export.xml\") to act as a callback\n\t\t\tpayload=[payload, mimeType];\n\t\t\tmimeType=payload[0];\n\t\t\tpayload=payload[1];\n\t\t}\n\n\n\t\tif(url && url.length< 2048){ // if no filename and no mime, assume a url was passed as the only argument\n\t\t\tfileName = url.split(\"/\").pop().split(\"?\")[0];\n\t\t\tanchor.href = url; // assign href prop to temp anchor\n\t\t \tif(anchor.href.indexOf(url) !== -1){ // if the browser determines that it's a potentially valid url path:\n \t\tvar ajax=new XMLHttpRequest();\n \t\tajax.open( \"GET\", url, true);\n \t\tajax.responseType = 'blob';\n \t\tajax.onload= function(e){ \n\t\t\t\t download(e.target.response, fileName, defaultMime);\n\t\t\t\t};\n \t\tsetTimeout(function(){ ajax.send();}, 0); // allows setting custom ajax headers using the return:\n\t\t\t return ajax;\n\t\t\t} // end if valid url?\n\t\t} // end if url?\n\n\n\t\t//go ahead and download dataURLs right away\n\t\tif(/^data:([\\w+-]+\\/[\\w+.-]+)?[,;]/.test(payload)){\n\t\t\n\t\t\tif(payload.length > (1024*1024*1.999) && myBlob !== toString ){\n\t\t\t\tpayload=dataUrlToBlob(payload);\n\t\t\t\tmimeType=payload.type || defaultMime;\n\t\t\t}else{\t\t\t\n\t\t\t\treturn navigator.msSaveBlob ? // IE10 can't do a[download], only Blobs:\n\t\t\t\t\tnavigator.msSaveBlob(dataUrlToBlob(payload), fileName) :\n\t\t\t\t\tsaver(payload) ; // everyone else can save dataURLs un-processed\n\t\t\t}\n\t\t\t\n\t\t}else{//not data url, is it a string with special needs?\n\t\t\tif(/([\\x80-\\xff])/.test(payload)){\t\t\t \n\t\t\t\tvar i=0, tempUiArr= new Uint8Array(payload.length), mx=tempUiArr.length;\n\t\t\t\tfor(i;i {\n if (typeof window === 'undefined') return '';\n if (WS_HOST) return WS_HOST;\n\n if (window.location.protocol === 'https:') {\n return `wss://${window.location.host}/ws`;\n }\n\n return `ws://${window.location.host}/ws`;\n })(),\n SERVER_HOST: (() => {\n if (typeof window === 'undefined') return '';\n if (SERVER_HOST) return SERVER_HOST;\n\n if (window.location.protocol === 'https:') {\n return `https://${window.location.host}/server`;\n }\n\n return `http://${window.location.host}/server`;\n })(),\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.Link = exports.Match = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _preact = require('preact');\n\nvar _preactRouter = require('preact-router');\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Match = exports.Match = function (_Component) {\n\t_inherits(Match, _Component);\n\n\tfunction Match() {\n\t\tvar _temp, _this, _ret;\n\n\t\t_classCallCheck(this, Match);\n\n\t\tfor (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t\t\targs[_key] = arguments[_key];\n\t\t}\n\n\t\treturn _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.update = function (url) {\n\t\t\t_this.nextUrl = url;\n\t\t\t_this.setState({});\n\t\t}, _temp), _possibleConstructorReturn(_this, _ret);\n\t}\n\n\tMatch.prototype.componentDidMount = function componentDidMount() {\n\t\t_preactRouter.subscribers.push(this.update);\n\t};\n\n\tMatch.prototype.componentWillUnmount = function componentWillUnmount() {\n\t\t_preactRouter.subscribers.splice(_preactRouter.subscribers.indexOf(this.update) >>> 0, 1);\n\t};\n\n\tMatch.prototype.render = function render(props) {\n\t\tvar url = this.nextUrl || (0, _preactRouter.getCurrentUrl)(),\n\t\t path = url.replace(/\\?.+$/, '');\n\t\tthis.nextUrl = null;\n\t\treturn props.children({\n\t\t\turl: url,\n\t\t\tpath: path,\n\t\t\tmatches: (0, _preactRouter.exec)(path, props.path, {}) !== false\n\t\t});\n\t};\n\n\treturn Match;\n}(_preact.Component);\n\nvar Link = function Link(_ref) {\n\tvar activeClassName = _ref.activeClassName,\n\t path = _ref.path,\n\t props = _objectWithoutProperties(_ref, ['activeClassName', 'path']);\n\n\treturn (0, _preact.h)(\n\t\tMatch,\n\t\t{ path: path || props.href },\n\t\tfunction (_ref2) {\n\t\t\tvar matches = _ref2.matches;\n\t\t\treturn (0, _preact.h)(_preactRouter.Link, _extends({}, props, { 'class': [props.class || props.className, matches && activeClassName].filter(Boolean).join(' ') }));\n\t\t}\n\t);\n};\n\nexports.Link = Link;\nexports.default = Match;\n\nMatch.Link = Link;\n","export default {\n /* file transfer related */\n CHUNK: 'chunk',\n JOIN: 'join',\n USER_JOIN: 'user-join',\n USER_LEAVE: 'user-leave',\n FILE_INIT: 'file-init',\n FILE_STATUS: 'file-status',\n FILE_TORRENT: 'file-torrent',\n\n /* error related */\n ERR_SAME_NAME: 'ERR_SAME_NAME',\n ERR_CONN_CLOSED: 'ERR_CONN_CLOSED',\n ERR_LARGE_FILE: 'ERR_LARGE_FILE',\n\n /* service worker features related */\n SW_LOAD_FILES: 'sw-load-files',\n SW_SHARE_READY: 'sw-share-ready',\n};","import { h } from 'preact';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport { X } from 'preact-feather';\n\nimport './Room.scoped.scss';\n\nfunction RoomContainer({ as, className, highlighted, ...props }) {\n const Tag = as;\n return ;\n}\n\nRoomContainer.propTypes = {\n as: PropTypes.string,\n className: PropTypes.string,\n highlighted: PropTypes.bool,\n};\n\nRoomContainer.defaultProps = {\n as: 'div',\n className: '',\n highlighted: false,\n};\n\nfunction RoomName({ as, className, ...props }) {\n const Tag = as;\n return ;\n}\n\nRoomName.propTypes = {\n as: PropTypes.string,\n className: PropTypes.string,\n};\n\nRoomName.defaultProps = {\n as: 'div',\n className: '',\n};\n\n\nfunction RoomDescription({ as, className, ...props }) {\n const Tag = as;\n return ;\n}\n\nRoomDescription.propTypes = {\n as: PropTypes.string,\n className: PropTypes.string,\n};\n\nRoomDescription.defaultProps = {\n as: 'div',\n className: '',\n};\n\nfunction RoomSecondaryAction({ className, children, onClick, ...props }) {\n return (\n {\n e.stopPropagation();\n onClick(e);\n }}\n {...props}\n >\n {children}\n \n );\n}\n\nRoomSecondaryAction.propTypes = {\n className: PropTypes.string,\n children: PropTypes.node.isRequired,\n onClick: PropTypes.func,\n};\n\nRoomSecondaryAction.defaultProps = {\n className: '',\n onClick: () => {},\n};\n\nfunction RoomPeers({ className, localPeers, ...props }) {\n return (\n
      \n {localPeers.slice(0, 3).map((peer) =>
    • {peer.name[0]}
    • )}\n {localPeers.length > 3 && (\n
    • \n +\n {localPeers.length - 3}\n
    • \n )}\n
    \n )\n}\n\nRoomPeers.propTypes = {\n className: PropTypes.string,\n localPeers: PropTypes.array,\n};\n\nRoomPeers.defaultProps = {\n className: '',\n localPeers: [],\n};\n\nexport { RoomContainer, RoomName, RoomDescription, RoomSecondaryAction, RoomPeers };\n","import { h, FunctionalComponent } from 'preact';\nimport { FeatherProps } from '../types';\n\nexport const Gift: FunctionalComponent = (\n\tprops: FeatherProps\n) => {\n\tconst color = props.color || 'currentColor';\n\tconst size = props.size || 24;\n\tdelete props.color;\n\tdelete props.size;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","import { h, FunctionalComponent } from 'preact';\nimport { FeatherProps } from '../types';\n\nexport const Loader: FunctionalComponent = (\n\tprops: FeatherProps\n) => {\n\tconst color = props.color || 'currentColor';\n\tconst size = props.size || 24;\n\tdelete props.color;\n\tdelete props.size;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n","import { h, FunctionalComponent } from 'preact';\nimport { FeatherProps } from '../types';\n\nexport const Home: FunctionalComponent = (\n\tprops: FeatherProps\n) => {\n\tconst color = props.color || 'currentColor';\n\tconst size = props.size || 24;\n\tdelete props.color;\n\tdelete props.size;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n","import { h, FunctionalComponent } from 'preact';\nimport { FeatherProps } from '../types';\n\nexport const Share2: FunctionalComponent = (\n\tprops: FeatherProps\n) => {\n\tconst color = props.color || 'currentColor';\n\tconst size = props.size || 24;\n\tdelete props.color;\n\tdelete props.size;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n","import { h } from 'preact';\nimport './NicknameInput.scoped.scss';\n\nfunction NicknameInput({ input }) {\n return (\n \n );\n}\n\nexport default NicknameInput;","import { h } from 'preact';\nimport { memo } from 'preact/compat';\nimport { route } from 'preact-router';\nimport { useState, useContext, useEffect, useCallback } from 'preact/hooks';\nimport { Plus, HelpCircle, X } from 'preact-feather';\nimport { formatDistance } from 'date-fns';\nimport { useLocalStorageSelector } from 'react-localstorage-hooks';\n\nimport { QueuedFiles } from '../contexts/QueuedFiles';\nimport Fab from '../../../components/Fab/Fab';\nimport pluralize from '../../../utils/pluralize';\nimport urls from '../../../utils/urls';\nimport AppLanding from '../layouts/AppLanding/AppLanding';\nimport NewRoomModal from './components/NewRoomModal/NewRoomModal';\nimport LocalRoomHelpModal from './components/LocalRoomHelpModal/LocalRoomHelpModal';\nimport { RoomContainer, RoomSecondaryAction, RoomDescription, RoomName, RoomPeers } from './components/Room/Room';\nimport roomsDispatch from '../../../reducers/rooms';\n\nimport './Rooms.scoped.scss';\n\nconst RoomsList = memo(function RoomsList({ isOnline, onRoomJoin }) {\n const rooms = useLocalStorageSelector('blaze', ({ rooms }) => rooms, { equalityFn: (prev, next) => prev.length === next.length});\n const { queuedFiles } = useContext(QueuedFiles);\n const [localPeers, setLocalPeers] = useState([]);\n const [showLocalRoomModal, setShowLocalRoomModal] = useState(false);\n\n useEffect(() => {\n if (!isOnline) return;\n\n const handlePeersStream = ({ data }) => {\n setLocalPeers(JSON.parse(data));\n };\n const localPeersSource = new EventSource(`${urls.SERVER_HOST}/sse/local-peers`);\n localPeersSource.addEventListener('message', handlePeersStream);\n\n return () => {\n localPeersSource.removeEventListener('message', handlePeersStream);\n localPeersSource.close();\n };\n }, [isOnline]);\n\n if (!isOnline) {\n return
    Connect to the internet to start sharing files
    ;\n } else {\n return (\n <>\n {\n !!queuedFiles.length && (\n
    \n Join a room to share the selected\n {' '}\n {pluralize(queuedFiles.length, 'file', 'files')}\n
    \n )\n }\n
      \n {/* Local room */}\n 0} as=\"li\" role=\"link\" tabIndex=\"0\" onClick={() => onRoomJoin('')}>\n
      \n Local network room\n Share files only on your local network\n
      \n {\n localPeers.length > 0 ? \n : (\n setShowLocalRoomModal(true)} ariaLabel=\"What is local network room?\">\n \n \n )\n }\n
      \n {\n rooms.map((room, idx) => (\n onRoomJoin(room.name)}>\n
      \n {room.name}\n \n Joined\n {' '}\n {formatDistance(new Date(room.lastJoin), new Date(), { addSuffix: true })}\n \n
      \n roomsDispatch({ type: 'remove-room', payload: idx })}\n ariaLabel=\"Remove room\"\n >\n \n \n
      \n ))\n }\n
    \n\n setShowLocalRoomModal(false)}\n onRoomJoin={onRoomJoin}\n />\n \n );\n }\n});\n\nfunction Rooms({ isOnline }) {\n const [isModalOpen, setModal] = useState(false);\n const username = useLocalStorageSelector('blaze', ({ user }) => user.name);\n\n const handleNewRoom = useCallback((room) => {\n setModal(false);\n const roomURL = room.trim().replace(/ /g, '-').toLowerCase();\n route(`/app/t/${roomURL}`);\n }, [setModal]);\n\n useEffect(() => {\n document.title = 'App | Blaze';\n }, []);\n\n return (\n \n
    \n
    \n

    Recent Rooms

    \n\n \n\n {isOnline && (\n setModal(true)}>\n \n \n )}\n
    \n\n setModal(false)} />\n
    \n
    \n );\n}\n\nexport default Rooms;\n"],"sourceRoot":""}