-1&&(c=c.slice(0,n)),uf(c,this._docs,{includeMatches:r,includeScore:o})}_searchStringList(t){const n=co(t,this.options),{records:r}=this._myIndex,o=[];return r.forEach(({v:i,i:a,n:u})=>{if(!Ue(i))return;const{isMatch:c,score:l,indices:f}=n.searchIn(i);c&&o.push({item:i,idx:a,matches:[{score:l,value:i,norm:u,indices:f}]})}),o}_searchLogical(t){const n=ea(t,this.options),r=(u,c,l)=>{if(!u.children){const{keyId:d,searcher:p}=u,m=this._findMatches({key:this._keyStore.get(d),value:this._myIndex.getValueForItemAtKeyId(c,d),searcher:p});return m&&m.length?[{idx:l,item:c,matches:m}]:[]}const f=[];for(let d=0,p=u.children.length;d{if(Ue(u)){let l=r(n,u,c);l.length&&(i[c]||(i[c]={idx:c,item:u,matches:[]},a.push(i[c])),l.forEach(({matches:f})=>{i[c].matches.push(...f)}))}}),a}_searchObjectList(t){const n=co(t,this.options),{keys:r,records:o}=this._myIndex,i=[];return o.forEach(({$:a,i:u})=>{if(!Ue(a))return;let c=[];r.forEach((l,f)=>{c.push(...this._findMatches({key:l,value:a[f],searcher:n}))}),c.length&&i.push({idx:u,item:a,matches:c})}),i}_findMatches({key:t,value:n,searcher:r}){if(!Ue(n))return[];let o=[];if(rt(n))n.forEach(({v:i,i:a,n:u})=>{if(!Ue(i))return;const{isMatch:c,score:l,indices:f}=r.searchIn(i);c&&o.push({score:l,key:t,value:i,idx:a,norm:u,indices:f})});else{const{v:i,n:a}=n,{isMatch:u,score:c,indices:l}=r.searchIn(i);u&&o.push({score:c,key:t,value:i,norm:a,indices:l})}return o}}Tn.version="7.0.0";Tn.createIndex=Gs;Tn.parseIndex=jd;Tn.config=X;Tn.parseQuery=ea;rf(nf);export{Hr as $,nt as A,to as B,un as C,yi as D,Bt as E,Qr as F,xo as G,oo as H,H as I,eo as J,qn as K,jt as L,Zr as M,an as N,Lu as O,Fs as P,Mo as Q,Mt as R,Vc as S,ou as T,Ns as U,cs as V,Qi as W,$u as X,Cf as Y,zs as Z,Vf as _,Nt as a,ar as a0,Tf as a1,Dc as a2,Ef as a3,Tn as a4,Bl as a5,Wa as a6,Zi as a7,Ja as a8,ro as a9,Ka as b,ls as c,ke as d,tn as e,Ar as f,us as g,Fn as h,Af as i,li as j,$l as k,Ir as l,ws as m,mt as n,Ya as o,bs as p,yn as q,zn as r,$e as s,Qc as t,gf as u,cr as v,$f as w,Lf as x,Hf as y,If as z};
-//# sourceMappingURL=fuse-7xj_Hrid.js.map
diff --git a/assets/fuse-7xj_Hrid.js.map b/assets/fuse-7xj_Hrid.js.map
deleted file mode 100644
index 30d2c9f..0000000
--- a/assets/fuse-7xj_Hrid.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"mappings":"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","names":["_extends","target","i","source","key","reservedModifierKeywords","mappedKeys","mapKey","isHotkeyModifier","parseKeysHookInput","keys","splitKey","parseHotkey","hotkey","combinationKey","description","k","modifiers","singleCharKeys","pushToCurrentlyPressedKeys","removeFromCurrentlyPressedKeys","currentlyPressedKeys","isReadonlyArray","value","isHotkeyPressed","hotkeyArray","maybePreventDefault","preventDefault","isHotkeyEnabled","enabled","isKeyboardEventTriggeredByInput","ev","isHotkeyEnabledOnTag","_ref","enabledOnTags","targetTagName","tag","isScopeActive","activeScopes","scopes","scope","isHotkeyMatchingKeyboardEvent","e","ignoreModifiers","alt","meta","mod","shift","ctrl","pressedKeyUppercase","code","ctrlKey","metaKey","shiftKey","altKey","keyCode","pressedKey","BoundHotkeysProxyProvider","createContext","useBoundHotkeysProxy","useContext","deepEqual","x","y","isEqual","HotkeysContext","useHotkeysContext","useDeepEqualMemo","ref","useRef","stopPropagation","useSafeLayoutEffect","useLayoutEffect","useEffect","useHotkeys","callback","options","dependencies","hasTriggeredRef","_options","_keys","_deps","memoisedCB","useCallback","cbRef","memoisedOptions","_useHotkeysContext","enabledScopes","proxy","listener","isKeyUp","_e$target","rootNode","_hotkey$keys","handleKeyDown","event","handleKeyUp","domNode","root","factory","module","this","global","Toastify","version","divElement","property","avatarElement","closeElement","width","self","getAxisOffsetAValue","xOffset","yOffset","rootElement","elementToInsert","toastElement","topLeftOffsetSize","topRightOffsetSize","offsetSize","allToasts","classUsed","containsClass","height","offset","axis","elem","yourClass","window","_showToast","showToast","props","text","onClick","delay","rest","toast","className","destination","gravity","position","setTimeout","useInterval","fn","deps","immediate","savedCallback","current","id","setInterval","tick","clearInterval","openCompose","opts","url","URL","parse","location","screenWidth","screenHeight","screen","left","Math","max","top","min","winUID","uid","random","newWin","open","__COMPOSE__","alert","isSafari","test","navigator","userAgent","openOSK","fauxEl","document","createElement","style","opacity","body","appendChild","focus","removeChild","ICONS","__vitePreload","heart","bookmark","check-circle","x-circle","transfer","rocket","rtl","arrow-up","arrow-down","earth","lock","unlock","eye-close","eye-open","message","comment","comment2","home","notification","follow","follow-add","poll","pencil","quill","at","attachment","upload","gear","more","more2","external","popout","popin","rotate","plus","chevron-down","reply","flip","thread","group","bot","menu","list","search","hashtag","info","shortcut","user","following","pin","unpin","bus","link","history","share","sparkles","sparkles2","exit","translate","play","trash","mute","unmute","block","unblock","flag","time","refresh","emoji2","filter","filters","chart","react","layout4","layout5","announce","round","arrow-up-circle","arrow-down-circle","clipboard","account-edit","account-warning","keyboard","cloud","month","media","speak","building","history2","copy","quote","settings","heart-break","user-x","minimize","SIZES","s","m","l","xl","xxl","ICONDATA","SVGICon","moize","_jsx","viewBox","dangerouslySetInnerHTML","__html","transform","isShallowEqual","maxSize","Object","length","matchesArg","cacheKeyArg","keyArg","icon","Icon","size","title","class","iconSize","iconBlock","warn","Array","iconData","setIconData","useState","currentIcon","iconB","useCloseWatcher","watcher","CloseWatcher","addEventListener","destroy","useCloseWatcher$1","$modalContainer","getElementById","Modal","children","onClose","minimized","modalRef","timer","focusElement","querySelector","clearTimeout","supportsCloseWatcher","escRef","keydown","keyup","$deckContainers","querySelectorAll","page","tabIndex","forEach","$deckContainer","setAttribute","removeAttribute","node","currentTarget","inert","onFocus","isFocusable","getComputedStyle","pointerEvents","console","ReactPropTypesSecret","ReactPropTypesSecret_1","require$$0","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","propName","componentName","propFullName","secret","err","getShim","ReactPropTypes","ReactIs","throwOnDirectAccess","propTypesModule","isMenuOpen","state","batchedUpdates","unstable_batchedUpdates","getTransition","transition","name","safeCall","arg","internalKey","getName","component","mergeProps","targetProp","sourceProp","parsePadding","paddingStr","padding","right","getScrollAncestor","overflow","overflowX","overflowY","commonProps","isDisabled","isHovering","indexOfNode","nodeList","stylePropTypes","oneOfType","string","func","menuPropTypes","object","bool","number","oneOf","rootMenuPropTypes","exact","uncontrolledMenuPropTypes","useBEM","element","useMemo","blockElement","classString","expandedClassName","menuContainerClass","menuClass","menuArrowClass","menuItemClass","menuDividerClass","menuHeaderClass","menuGroupClass","subMenuClass","HoverItemContext","MenuListItemContext","MenuListContext","EventHandlersContext","RadioGroupContext","SettingsContext","Keys","HoverActionTypes","CloseReason","FocusPositions","MenuStateMap","positionAbsolute","roleNone","roleMenuitem","dummyItemProps","MenuContainer","containerRef","containerProps","isOpen","theming","itemTransition","jsx","createSubmenuCtx","count","closeDelay","pending","settled","useItems","menuRef","focusRef","hoverItem","setHoverItem","mutableState","updateItems","item","isMounted","items","index","dispatch","actionType","nextIndex","hoverIndex","sortItems","orderedNodes","a","b","newItem","prevItem","getNativeDimension","transformed","untransformed","getNormalizedClientRect","rect","getPositionHelpers","menuScroll","boundingBoxPadding","menuRect","containerRect","boundingRect","getLeftOverflow","getRightOverflow","getTopOverflow","getBottomOverflow","leftOverflow","rightOverflow","topOverflow","bottomOverflow","placeArrowVertical","arrowRef","menuY","anchorRect","placeLeftorRight","placeLeftorRightY","placeLeftX","placeRightX","confineHorizontally","confineVertically","arrow","direction","computedDirection","placeArrowHorizontal","menuX","placeToporBottom","placeToporBottomX","placeTopY","placeBottomY","positionMenu","align","gap","positionHelpers","isHorizontal","horizontalOffset","verticalOffset","arrowElt","useIsomorphicLayoutEffect","setRef","instance","useCombinedRef","refA","refB","offScreen","MenuList","ariaLabel","menuClassName","menuStyle","arrowProps","anchorPoint","anchorRef","focusProps","externalRef","parentScrollingRef","setDownOverflow","repositionFlag","captureFocus","endTransition","menuItemFocus","restProps","menuPosition","setMenuPosition","arrowPosition","setArrowPosition","overflowData","setOverflowData","expandedDirection","setExpandedDirection","submenuCtx","reposSubmenu","forceReposSubmenu","useReducer","c","boundingBoxRef","rootMenuRef","rootAnchorRef","scrollNodesRef","reposition","viewScroll","submenuCloseDelay","parentSubmenuCtx","reposFlag","prevOpen","openTransition","closeTransition","scrollNodes","onKeyDown","onAnimationEnd","onPointerMove","onPointerLeave","handlePosition","noOverflowCheck","_anchorRef$current","arrowX","arrowY","menuHeight","overflowAmt","anchorScroll","scroll","handleScroll","scrollObservers","o","hasOverflow","parentScroll","targetList","resizeObserver","entries","flushSync","resizeObserverOptions","anchor","alwaysUpdate","setItemFocus","menuElt","itemContext","maxHeight","listContext","overflowStyle","arrowModifiers","_arrowClassName","ControlledMenu","forwardRef","initialMounted","unmountOnClose","transitionTimeout","submenuOpenDelay","portal","onItemClick","eventHandlers","isCheckorRadio","keepOpen","menuList","createPortal","PRE_ENTER","ENTERING","ENTERED","PRE_EXIT","EXITING","EXITED","UNMOUNTED","STATUS","getState","status","startOrEnd","unmounted","getEndStatus","unmountOnExit","getTimeout","timeout","updateState","setState","latestState","timeoutId","onChange","useTransition","enter","preEnter","preExit","initialEntered","mountOnEnter","enterTimeout","exitTimeout","toggle","toEnter","transitState","enterStage","useMenuState","initialOpen","toggleMenu","useMenuStateAndFocus","menuProps","setMenuItemFocus","openMenu","useClick","onToggle","skipOpen","useMenuChange","onMenuChange","Menu","_","_1","menuButton","instanceRef","stateProps","buttonRef","anchorProps","handleClose","button","buttonProps","renderButton","cloneElement","useImperativeHandle","Fragment","withHovering","WrappedComponent","Component","memo","WithHovering","itemRef","useItemEffect","SubMenu","disabled","label","openTrigger","_2","itemProps","parentMenuRef","parentDir","parentOverflow","isParentOpen","isPortal","_openMenu","timerId","stopTimer","args","setHover","delayOpen","onKeyDownOfRoot","handled","externalItemRef","itemClassName","restItemProps","mergedItemProps","getMenuList","container","useItemState","unsetHover","onBlur","keepHover","MenuItem","href","type","checked","restStateProps","radioGroup","isRadio","isCheckBox","isAnchor","isChecked","handleClick","mergedProps","menuItemProps","FocusableItem","renderChildren","MenuDivider","MenuHeader","MenuGroup","takeOverflow","setOverflowStyle","xxxl","alphaCache","canvas","OffscreenCanvas","ctx","getContext","willReadFrequently","imageSmoothingEnabled","Avatar","squircle","avatarRef","isMissing","src","loading","decoding","crossOrigin","undefined","onError","onLoad","dataset","loaded","drawImage","allPixels","getImageData","hasAlpha","data","pixel","classList","add","clearRect","mem","Link","routerLocation","useLocation","hash","replace","trim","to","includes","parsedHash","origin","searchParams","searchParamsStr","from","map","encodeURIComponent","join","pathname","isActive","decodeURIComponent","parentNode","closest","prevLocation","IS_RTL","observer","MutationObserver","mutations","mutation","dir","isRTL","observe","documentElement","defaultBoundingBoxPadding","safeAreaInsets","getSafeAreaInsets","safeAreaInsetTop","getPropertyValue","safeAreaInsetRight","safeAreaInsetBottom","safeAreaInsetLeft","parseInt","requestAnimationFrame","safeBoundingBoxPadding","paddings","v","CSS","supports","passive","useWindowSize","setSize","handleResize","innerWidth","innerHeight","removeEventListener","Menu2","_instanceRef","rtlAlign","closeMenu","SubMenu2","pointerType","MenuConfirm","subMenu","confirm","confirmLabel","menuItemClassName","menuFooter","menuExtras","_jsxs","CustomEmoji","staticUrl","srcset","EmojiText","emojis","indexOf","regex","RegExp","shortcode","elements","split","word","emoji","find","EmojiText$1","oldProps","newProps","nameCollator","Intl","Collator","sensitivity","NameText","account","showAvatar","showAcct","short","acct","avatar","avatarStatic","displayName","username","acct1","acct2","match","api","trimmedUsername","toLowerCase","trimmedDisplayName","shortenedDisplayName","shortenedAlphaNumericDisplayName","hideUsername","compare","which","internalURL","states","showAccount","_Fragment","newAccount","t","n","r","u","f","h","d","$","M","g","D","p","S","w","O","dayjs","extend","dayjsTwitter","localizedFormat","relativeTime","dtf","DateTimeFormat","RelativeTime","datetime","format","renderCount","rerender","date","dateStr","dt","isValid","str","now","diff","year","twitter","toDate","fromNow","toISOString","raf","rafRerender","scheduleRerender","cancelAnimationFrame","_localeMatch","localeMatch","locales","resolvedOptions","locale","languages","localeTargetLanguages","translationTargetLanguages","getTranslateTargetLanguage","fromSettings","contentTranslationTargetLanguage","IntlDN","DisplayNames","_localeCode2Text","of","localeCode2Text","semver","validateAndParse","isWildcard","tryParse","forceType","compareStrings","ap","bp","compareSegments","compareVersions","v1","v2","n1","n2","p1","p2","operator","assertValidOperator","res","operatorResMap","allowedOperators","op","satisfies","range","v3","vp","r1","r2","r3","rp","nonZero","containPixelfed","notContainPixelfed","platformFeatures","supportsCache","feature","domain","getCurrentInstance","features","includePrerelease","loose","maxInt","base","tMin","tMax","skew","damp","initialBias","initialN","delimiter","regexPunycode","regexNonASCII","regexSeparators","errors","baseMinusTMin","floor","stringFromCharCode","error","array","result","mapDomain","parts","labels","encoded","ucs2decode","output","counter","extra","ucs2encode","codePoints","basicToDigit","codePoint","digitToBasic","digit","adapt","delta","numPoints","firstTime","decode","input","inputLength","bias","basic","j","oldi","baseMinusT","out","encode","currentValue","basicLength","handledCPCount","handledCPCountPlusOne","q","qMinusT","toUnicode","toASCII","punycode","emojifyText","fauxDiv","whitelistLinkClasses","_enhanceContent","content","postEnhanceDOM","enhancedContent","dom","innerHTML","hasLink","hasCodeBlock","remove","textContent","shortenLink","links","usernames","innerText","hasChildren","some","push","slice","textNodes","extractTextNodes","html","nodeValue","replaceWith","childNodes","pre","br","nextParagraphs","currentBlock","nextElementSibling","next","tagName","codeText","replaceAll","rejectFilter","prevIndex","hashtagStuffedParagraphs","hashtagCount","nodeType","Node","TEXT_NODE","linkText","startsWith","img","getAttribute","naturalWidth","naturalHeight","setProperty","queueMicrotask","enhanceContent","defaultRejectFilter","defaultRejectFilterMap","fromEntries","nodeName","URL_PREFIX_REGEX","URL_DISPLAY_LENGTH","prefix","displayURL","suffix","cutoff","rejectFilterMap","assign","reduce","acc","cur","walk","createTreeWalker","NodeFilter","SHOW_TEXT","acceptNode","FILTER_REJECT","FILTER_ACCEPT","nextNode","div","getHTMLText","preProcess","el","append","handleContentLinks","mentions","previewMode","statusURL","prevText","previousSibling","textBeforeLinkIsAt","endsWith","textStartsWithAt","contains","targetText","mention","textBeforeLinkIsHash","hashURL","_b","_DateTimeFormat","dateYear","hideTime","formatOpts","currentYear","Date","getFullYear","day","hour","minute","niceDateTime","dtfOpts","NumberFormat","shortenNumber","notation","roundingMode","TOAST_DURATION","showCompose","composerState","duration","AccountBlock","skeleton","avatarSize","useAvatarStatic","internal","showActivity","showStats","accountInstance","hideDisplayName","relationship","excludeRelationshipAttrs","statusesCount","lastStatusAt","fields","note","followersCount","createdAt","locked","verifiedField","verifiedAt","excludedRelationship","hasRelationship","followedBy","requested","MenuLink","detail","RetryOperation","timeouts","retry_operation","currentTime","timeoutOps","counts","mainError","mainErrorCount","exports","attempt","obj","methods","method","original","retry","objectToString","isError","errorMessages","isNetworkError","AbortError","decorateErrorWithCounts","attemptNumber","retriesLeft","pRetry","resolve","reject","operation","abortHandler","_a","cleanUp","finalError","__defProp","__defNormalProp","__publicField","observerMap","RootIds","rootId","unsupportedValue","getRootId","optionsToId","createObserver","thresholds","entry","inView","threshold","fallbackInView","bounds","callbacks","isPlainChildren","InView","React.Component","prevProps","rootMargin","trackVisibility","as","triggerOnce","skip","initialInView","React.createElement","useInView","React2.useState","React2.useRef","React2.useEffect","unobserve","entryTarget","previousEntryTarget","TOP","shazamIDs","LazyShazam","hasID","visible","setVisible","visibleStart","setVisibleStart","getBoundingClientRect","bottom","hidden","PHANPY_LINGVA_INSTANCES","import","LINGVA_INSTANCES","throttle","pThrottle","limit","interval","currentLingvaInstance","_lingvaTranslate","fetchCall","fetch","ok","provider","translation","detectedSourceLanguage","detectedSource","retries","onFailedAttempt","log","TRANSLATED_MAX_AGE","lingvaTranslate","pmem","forceTranslate","sourceLanguage","onTranslate","mini","autoDetected","uiState","setUIState","targetLang","setTranslatedContent","pronunciationContent","detailsRef","translatedContent","sourceLangText","targetLangText","apiSourceLang","detectedLangText","setDetectedLang","pronunciation","query","setPronunciationContent","detectedLang","lang","sourceLanguages","abrupt","TranslationBlock$1","TranslationBlock","promisifyRequest","request","createStore","dbName","storeName","dbp","txMode","db","defaultGetStoreFunc","defaultGetStore","get","customStore","store","set","getMany","del","delMany","clear","eachCursor","cursor","initDB","val","drafts","catchup","fetchRelationships","accounts","relationshipsMap","masto","currentAccount","getCurrentAccountID","uniqueAccountIds","relationships","LiteYTEmbed","shadowDom","nonce","oldVal","newVal","isIntersectionObserver","autoplay","wantsNoCookie","embedTarget","iframeHTML","posterUrlWebp","posterUrlJpeg","kind","linkElem","digitLookup","decode83","start","end","pow","PI","PI2","sRGBToLinear","linearTosRGB","signSqr","fastCos","cos","getBlurHashAverageColor","blurHash","decodeBlurHash","punch","sizeFlag","numX","numY","basis","basisY","colorIndex","pixelIndex","maximumValue","colors","averageColor","cosinesY","cosinesX","bytesPerRow","pixels","addIndentation","splittedHtml","char","level","opened","indented","elTag","newIndented","addIndentation_1","removeEmptyLines","nonFormattedString","mergeAttributesWithElements","markup","splittedMarkup","mergedLines","currentElement","line","toLines","require$$1","prettify","splitted","A","z","U","X","Y","R","G","J","C","L","P","I","T","E","B","Poll","readOnly","votePoll","expired","expiresAt","multiple","ownVotes","voted","votersCount","votesCount","expiresAtDate","pollVotesCount","roundPrecision","showResults","setShowResults","optionsHaveVoteCounts","every","option","optionVotesCount","percentage","toFixed","isLeading","onSubmit","form","formData","FormData","choices","FilterContext","_isFiltered","filtered","filterContext","appliedFilters","hasContext","context","filterAction","action","filterTitles","titles","titlesStr","isFiltered","filteredItem","currentAccountID","filterState","filteredItems","htmlContentLength","supportsTTS","speechSynthesis","speaking","cancel","utterance","SpeechSynthesisUtterance","statusPeek","spoilerText","mediaAttachments","image","gifv","video","audio","unknown","F","useResolvedElement","subscriber","refOrElement","lastReportRef","refOrElementRef","cbElementRef","evaluateSubscription","cbElement","extractSize","boxProp","sizeType","useResizeObserver","onResize","onResizeRef","resizeObserverRef","_useState","didUnmount","previous","refCallback","reportedWidth","reportedHeight","newWidth","newHeight","newSize","useTruncated","useThrottledCallback","scrollHeight","truncated","_height","computedHeight","box","visibilityIconsMap","public","unlisted","private","direct","styleRoot","styleChild","styles","isSsr","isTouch","make3dTransformValue","scale","getOffsetBounds","containerDimension","childDimension","centerContained","classnames","other","abs","sqrt","isMac","isDragInteraction","isZoomInteraction","isZoomGesture","wheelEvent","cancelEvent","getDistance","calculateScale","startTouches","endTouches","startDistance","endDistance","isCloseTo","expected","swing","getPointByPageCoordinates","touch","getPageCoordinatesByTouches","touches","sum","getVectorAvg","vectors","clamp","shouldInterceptWheel","getElementSize","offsetWidth","offsetHeight","calculateVelocity","startPoint","endPoint","comparePoints","noup","zeroPoint","PinchZoom","_super","__extends","_this","__assign","createRef","clickEvent","touchEndEvent","touchStartEvent","touchMoveEvent","pageX","pageY","deltaY","deltaMode","scaleDelta","likeTouchEvent","center","dScale","inertiaFriction","inertia","renderFrame","prevOffset","currentCoordinates","prevPoint","newScale","touchCenter","needZoomOut","zoomFactor","startZoomFactor","updateProgress","progress","elWidth","elHeight","minOffsetX","maxOffsetX","_c","minOffsetY","maxOffsetY","__x","__y","animated","startOffset","containerCenter","diffZoomFactor","diffOffset","updateFrame","originalZoomFactor","lastCenter","sanitizedOffset","targetOffset","scaleFactor","offsetLeft","offsetTop","_document","_html","_body","scrollTop","scrollLeft","posTop","posLeft","frameFn","startTime","timeFn","frameTime","xZoomFactor","yZoomFactor","eventName","_i","newInteraction","interaction","fingers","mouseEvent","isEnd","isStart","child","Children","React","any","formatDuration","hours","minutes","seconds","toString","padStart","dataAltLabel","AltBadge","showMediaAlt","MEDIA_CAPTION_LIMIT","MEDIA_CAPTION_LIMIT_LONGER","isMediaCaptionLong","caption","Media","showOriginal","autoAnimate","showCaption","allowLongerCaption","altIndex","blurhash","previewRemoteUrl","previewUrl","remoteUrl","small","mediaURL","remoteMediaURL","hasDimensions","orientation","rgbAverageColor","videoRef","focalPosition","mediaRef","onUpdate","removeProperty","touchAction","pinchZoomEnabled","setPinchZoomEnabled","quickPinchZoomProps","draggableUnZoomed","tapZoomFactor","doubleTapToggleZoom","Parent","remoteMediaURLObj","getURLObj","isVideoMaybe","isAudioMaybe","isImage","parentRef","imageSmallerThanParent","setImageSmallerThanParent","smaller","maxAspectHeight","averageColorStyle","mediaStyles","aspectRatio","longDesc","showInlineDesc","Figure","hasNaturalAspectRatio","setHasNaturalAspectRatio","display","mode","backgroundImage","backgroundSize","QuickPinchZoom","objectPosition","$media","clientWidth","clientHeight","minDimension","hasSmallDimension","displayNaturalHeight","hasDuration","shortDuration","isGIF","loopable","formattedDuration","hoverAnimate","autoGIFAnimate","showProgress","gifHTML","videoHTML","pause","onMouseEnter","onMouseLeave","poster","preload","playsinline","loop","muted","onTimeUpdate","disablePictureInPicture","onLoadedMetadata","controls","autoPlay","oldMedia","newMedia","SHOW_COMMENT_COUNT_LIMIT","INLINE_TRANSLATE_LIMIT","fetchAccount","$select","memFetchAccount","visibilityText","isIOS","ontouchstart","rtf","RelativeTimeFormat","REACTIONS_LIMIT","getPollText","getPostText","PostContent","post","language","oldPost","newPost","SIZE_CLASS","detectLang","detectAll","accuracy","Status","statusID","propInstance","contentTextWeight","enableCommentHint","withinContext","enableTranslate","_forceTranslate","onMediaClick","quoted","onStatusLinkClick","showFollowedTags","allowContextMenu","showActionsBar","showReplyParent","mediaFirst","authenticated","currentInstance","sameInstance","sKey","statusKey","snapStates","useSnapshot","statuses","accountId","accountURL","accountEmojis","repliesCount","reblogged","reblogsCount","favourited","favouritesCount","bookmarked","sensitive","visibility","_language","editedAt","card","inReplyToId","inReplyToAccountId","reblog","uri","tags","pinned","_deleted","_pinned","emojiReactions","languageAutoDetected","setLanguageAutoDetected","detected","hasMediaAttachments","isSelf","filterInfo","debugHover","FilteredStatus","createdAtDate","editedAtDate","inReplyToAccountRef","setInReplyToAccount","inReplyToAccount","account2","catch","mentionSelf","readingExpandSpoilers","showSpoiler","readingExpandMedia","showSpoilerMedia","FollowedTagsParent","setForceTranslate","statusFollowedTags","StatusParent","contentTranslation","contentTranslationAutoInline","targetLanguage","inlineTranslate","isSizeLarge","showEdited","setShowEdited","showEmbed","setShowEmbed","contentLength","readMoreText","statusRef","spoilerContentRef","contentRef","mediaContainerRef","textWeight","editedDateText","mediaNoDesc","replyToStatus","statusMonthsAgo","boostStatus","unauthInteractionErrorMessage","confirmText","yes","newStatus","saveStatus","favouriteStatus","favouriteStatusNotify","done","bookmarkStatus","bookmarkStatusNotify","contentTranslationHideLanguages","reblogIterator","firstLoad","favouriteIterator","differentLanguage","reblogResults","Promise","favouriteResults","_types","isPinnable","StatusMenuItems","replyStatus","canBoost","confirmBoostStatus","heading","fetchBoostedLikedByAccounts","showReactions","postID","postText","createdDateText","nicePostURL","isPublic","cachedStatus","getStatus","setIsContextMenuOpen","contextMenuProps","bindLongPressContext","useLongPress","showContextMenu","clientX","clientY","setContextMenuProps","isContextMenuOpen","hotkeysEnabled","fRef","dRef","bRef","rRef","xRef","activeStatus","spoilerButton","spoilerMediaButton","displayedMediaAttachments","captionChildren","attachments","indices","showMultipleMediaCaptions","showCommentCount","isThread","showCommentHint","containsQuestion","nodeRef","anchorNode","selection","contextMenuRef","actionsRef","StatusButton","statusThreadNumber","MediaFirstContainer","spoilers","spoilersMedia","QuoteStatuses","newPoll","pollResponse","polls","then","MultipleMediaFigure","selfReferential","emojiReaction","me","url2","isShortCode","EditedAtModal","moreThanOne","currentIndex","setCurrentIndex","carouselRef","behavior","getDomain","providerName","providerUrl","authorName","authorUrl","imageDescription","embedUrl","publishedAt","isLandscape","hasIframeHTML","setCardStatusURL","hasText","unfurlMastodonLink","unfurledLinks","blurhashImage","isPost","isCardPost","putImageData","videoID","cardStatusURL","nocookie","setEditHistory","editHistory2","fetchStatusHistory","editHistory","Loader","generateHTMLCode","quotes","contentHTML","sourceMediaURL","previewMediaURL","mediaHTML","sourceMediaURLObj","htmlCode","EmbedModal","readonly","setButtonTitle","buttonTitle","host","iconAlt","restPath","urlObj","statusReply","filterTitleStr","srKey","statusPeekText","bindLongPressPeek","isReblog","actualStatusID","showPeek","isFollowedTags","setShowPeek","cancelOnMovement","ssKey","statusPeekRef","uniqueQuotes","arr","q2","restNewProps","shallowEqual","restOldProps","IDX","HEX","len","num","isArray","getTag","INFINITY","baseToString","isString","isNumber","isBoolean","isObjectLike","isObject","isDefined","isBlank","INCORRECT_INDEX_TYPE","LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY","PATTERN_LENGTH_TOO_LARGE","MISSING_KEY_PROPERTY","INVALID_KEY_WEIGHT_VALUE","hasOwn","KeyStore","totalWeight","createKey","keyId","path","weight","getFn","createKeyPath","createKeyId","deepGet","MatchOptions","BasicOptions","FuzzyOptions","AdvancedOptions","Config","SPACE","norm","mantissa","cache","numTokens","FuseIndex","fieldNormWeight","docs","records","idx","doc","docIndex","record","keyIndex","subRecords","stack","nestedArrIndex","subRecord","createIndex","myIndex","parseIndex","computeScore$1","pattern","currentLocation","expectedLocation","distance","ignoreLocation","proximity","convertMaskToIndices","matchmask","minMatchCharLength","MAX_BITS","patternAlphabet","findAllMatches","includeMatches","patternLen","textLen","currentThreshold","bestLocation","computeMatches","matchMask","score","lastBitArr","finalScore","binMax","mask","binMin","binMid","finish","bitArr","charMatch","createPatternAlphabet","BitapSearch","isCaseSensitive","addChunk","startIndex","remainder","allIndices","totalScore","hasMatches","alphabet","isMatch","BaseMatch","getMatch","exp","matches","ExactMatch","InverseExactMatch","PrefixExactMatch","InversePrefixExactMatch","SuffixExactMatch","InverseSuffixExactMatch","FuzzyMatch","IncludeMatch","searchers","searchersLen","SPACE_RE","OR_TOKEN","parseQuery","results","queryItem","found","searcher","token","MultiMatchSet","ExtendedSearch","numMatches","qLen","pLen","registeredSearchers","register","createSearcher","searcherClass","LogicalOperator","KeyType","isExpression","isPath","isLeaf","convertToExplicit","auto","isQueryPath","computeScore","ignoreFieldNorm","transformMatches","transformScore","includeScore","transformers","transformer","Fuse","predicate","shouldSort","sortFn","expression","evaluate","resultMap","expResults"],"ignoreList":[0,1,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,58,59,60,61,66,67,68,69,71,81,82,83,84,85,86,89,92,93,94,95,96,97,104,105,108,109,110,111,115,116],"sources":["../../node_modules/react-hotkeys-hook/dist/react-hotkeys-hook.esm.js","../../node_modules/toastify-js/src/toastify.js","../../src/utils/show-toast.js","../../src/utils/useInterval.js","../../src/utils/open-compose.js","../../src/utils/open-osk.jsx","../../src/components/ICONS.jsx","../../src/components/icon.jsx","../../src/utils/useCloseWatcher.js","../../src/components/modal.jsx","../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../node_modules/prop-types/factoryWithThrowingShims.js","../../node_modules/prop-types/index.js","../../node_modules/@szhsin/react-menu/dist/es/utils/utils.js","../../node_modules/@szhsin/react-menu/dist/es/utils/propTypes.js","../../node_modules/@szhsin/react-menu/dist/es/hooks/useBEM.js","../../node_modules/@szhsin/react-menu/dist/es/utils/constants.js","../../node_modules/@szhsin/react-menu/dist/es/components/MenuContainer.js","../../node_modules/@szhsin/react-menu/dist/es/utils/submenuCtx.js","../../node_modules/@szhsin/react-menu/dist/es/hooks/useItems.js","../../node_modules/@szhsin/react-menu/dist/es/positionUtils/getNormalizedClientRect.js","../../node_modules/@szhsin/react-menu/dist/es/positionUtils/getPositionHelpers.js","../../node_modules/@szhsin/react-menu/dist/es/positionUtils/placeArrowVertical.js","../../node_modules/@szhsin/react-menu/dist/es/positionUtils/placeLeftorRight.js","../../node_modules/@szhsin/react-menu/dist/es/positionUtils/placeArrowHorizontal.js","../../node_modules/@szhsin/react-menu/dist/es/positionUtils/placeToporBottom.js","../../node_modules/@szhsin/react-menu/dist/es/positionUtils/positionMenu.js","../../node_modules/@szhsin/react-menu/dist/es/hooks/useIsomorphicLayoutEffect.js","../../node_modules/@szhsin/react-menu/dist/es/hooks/useCombinedRef.js","../../node_modules/@szhsin/react-menu/dist/es/components/MenuList.js","../../node_modules/@szhsin/react-menu/dist/es/components/ControlledMenu.js","../../node_modules/react-transition-state/dist/es/hooks/utils.js","../../node_modules/react-transition-state/dist/es/hooks/useTransition.js","../../node_modules/@szhsin/react-menu/dist/es/hooks/useMenuState.js","../../node_modules/@szhsin/react-menu/dist/es/hooks/useMenuStateAndFocus.js","../../node_modules/@szhsin/react-menu/dist/es/hooks/useClick.js","../../node_modules/@szhsin/react-menu/dist/es/hooks/useMenuChange.js","../../node_modules/@szhsin/react-menu/dist/es/components/Menu.js","../../node_modules/@szhsin/react-menu/dist/es/utils/withHovering.js","../../node_modules/@szhsin/react-menu/dist/es/hooks/useItemEffect.js","../../node_modules/@szhsin/react-menu/dist/es/components/SubMenu.js","../../node_modules/@szhsin/react-menu/dist/es/hooks/useItemState.js","../../node_modules/@szhsin/react-menu/dist/es/components/MenuItem.js","../../node_modules/@szhsin/react-menu/dist/es/components/FocusableItem.js","../../node_modules/@szhsin/react-menu/dist/es/components/MenuDivider.js","../../node_modules/@szhsin/react-menu/dist/es/components/MenuHeader.js","../../node_modules/@szhsin/react-menu/dist/es/components/MenuGroup.js","../../src/components/avatar.jsx","../../src/components/link.jsx","../../src/utils/is-rtl.js","../../src/utils/safe-bounding-box-padding.js","../../src/utils/useWindowSize.js","../../src/components/menu2.jsx","../../src/components/submenu2.jsx","../../src/components/menu-confirm.jsx","../../src/components/custom-emoji.jsx","../../src/components/emoji-text.jsx","../../src/components/name-text.jsx","../../node_modules/dayjs/dayjs.min.js","../../node_modules/dayjs-twitter/dist/dayjs-twitter.min.js","../../node_modules/dayjs/plugin/localizedFormat.js","../../node_modules/dayjs/plugin/relativeTime.js","../../src/components/relative-time.jsx","../../src/utils/locale-match.jsx","../../src/utils/get-translate-target-language.jsx","../../src/utils/localeCode2Text.jsx","../../node_modules/compare-versions/lib/esm/utils.js","../../node_modules/compare-versions/lib/esm/compareVersions.js","../../node_modules/compare-versions/lib/esm/compare.js","../../node_modules/compare-versions/lib/esm/satisfies.js","../../src/utils/supports.js","../../node_modules/punycode/punycode.es6.js","../../src/utils/emojify-text.js","../../src/utils/enhance-content.js","../../src/utils/getHTMLText.jsx","../../src/utils/handle-content-links.js","../../src/utils/nice-date-time.js","../../src/utils/shorten-number.jsx","../../src/utils/show-compose.js","../../src/components/account-block.jsx","../../src/components/menu-link.jsx","../../node_modules/retry/lib/retry_operation.js","../../node_modules/retry/lib/retry.js","../../node_modules/retry/index.js","../../node_modules/is-network-error/index.js","../../node_modules/p-retry/index.js","../../node_modules/react-intersection-observer/dist/index.mjs","../../src/components/lazy-shazam.jsx","../../src/components/translation-block.jsx","../../node_modules/idb-keyval/dist/index.js","../../src/utils/db.js","../../src/utils/relationships.js","../../node_modules/@justinribeiro/lite-youtube/lite-youtube.js","../../node_modules/fast-blurhash/index.js","../../node_modules/html-prettify/src/utils/addIndentation.js","../../node_modules/html-prettify/src/utils/toLines.js","../../node_modules/html-prettify/src/index.js","../../node_modules/use-long-press/index.mjs","../../src/components/poll.jsx","../../src/utils/filter-context.js","../../src/utils/filters.jsx","../../src/utils/html-content-length.js","../../src/utils/speech.js","../../src/utils/status-peek.jsx","../../node_modules/use-debounce/dist/index.module.js","../../node_modules/use-resize-observer/dist/bundle.esm.js","../../src/utils/useTruncated.js","../../src/utils/visibility-icons-map.js","../../node_modules/react-quick-pinch-zoom/esm/PinchZoom/styles.css.js","../../node_modules/react-quick-pinch-zoom/esm/utils.js","../../node_modules/react-quick-pinch-zoom/esm/PinchZoom/getOffsetBounds.js","../../node_modules/react-quick-pinch-zoom/esm/PinchZoom/component.js","../../src/utils/format-duration.jsx","../../src/components/media.jsx","../../src/components/status.jsx","../../node_modules/uid/single/index.mjs","../../node_modules/fuse.js/dist/fuse.mjs"],"sourcesContent":["import { useContext, createContext, useState, useCallback, useRef, useLayoutEffect, useEffect } from 'react';\nimport { jsx } from 'react/jsx-runtime';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nvar reservedModifierKeywords = ['shift', 'alt', 'meta', 'mod', 'ctrl'];\nvar mappedKeys = {\n esc: 'escape',\n \"return\": 'enter',\n '.': 'period',\n ',': 'comma',\n '-': 'slash',\n ' ': 'space',\n '`': 'backquote',\n '#': 'backslash',\n '+': 'bracketright',\n ShiftLeft: 'shift',\n ShiftRight: 'shift',\n AltLeft: 'alt',\n AltRight: 'alt',\n MetaLeft: 'meta',\n MetaRight: 'meta',\n OSLeft: 'meta',\n OSRight: 'meta',\n ControlLeft: 'ctrl',\n ControlRight: 'ctrl'\n};\nfunction mapKey(key) {\n return (mappedKeys[key] || key).trim().toLowerCase().replace(/key|digit|numpad|arrow/, '');\n}\nfunction isHotkeyModifier(key) {\n return reservedModifierKeywords.includes(key);\n}\nfunction parseKeysHookInput(keys, splitKey) {\n if (splitKey === void 0) {\n splitKey = ',';\n }\n return keys.split(splitKey);\n}\nfunction parseHotkey(hotkey, combinationKey, description) {\n if (combinationKey === void 0) {\n combinationKey = '+';\n }\n var keys = hotkey.toLocaleLowerCase().split(combinationKey).map(function (k) {\n return mapKey(k);\n });\n var modifiers = {\n alt: keys.includes('alt'),\n ctrl: keys.includes('ctrl') || keys.includes('control'),\n shift: keys.includes('shift'),\n meta: keys.includes('meta'),\n mod: keys.includes('mod')\n };\n var singleCharKeys = keys.filter(function (k) {\n return !reservedModifierKeywords.includes(k);\n });\n return _extends({}, modifiers, {\n keys: singleCharKeys,\n description: description\n });\n}\n\n(function () {\n if (typeof document !== 'undefined') {\n document.addEventListener('keydown', function (e) {\n if (e.key === undefined) {\n // Synthetic event (e.g., Chrome autofill). Ignore.\n return;\n }\n pushToCurrentlyPressedKeys([mapKey(e.key), mapKey(e.code)]);\n });\n document.addEventListener('keyup', function (e) {\n if (e.key === undefined) {\n // Synthetic event (e.g., Chrome autofill). Ignore.\n return;\n }\n removeFromCurrentlyPressedKeys([mapKey(e.key), mapKey(e.code)]);\n });\n }\n if (typeof window !== 'undefined') {\n window.addEventListener('blur', function () {\n currentlyPressedKeys.clear();\n });\n }\n})();\nvar currentlyPressedKeys = /*#__PURE__*/new Set();\n// https://github.com/microsoft/TypeScript/issues/17002\nfunction isReadonlyArray(value) {\n return Array.isArray(value);\n}\nfunction isHotkeyPressed(key, splitKey) {\n if (splitKey === void 0) {\n splitKey = ',';\n }\n var hotkeyArray = isReadonlyArray(key) ? key : key.split(splitKey);\n return hotkeyArray.every(function (hotkey) {\n return currentlyPressedKeys.has(hotkey.trim().toLowerCase());\n });\n}\nfunction pushToCurrentlyPressedKeys(key) {\n var hotkeyArray = Array.isArray(key) ? key : [key];\n /*\r\n Due to a weird behavior on macOS we need to clear the set if the user pressed down the meta key and presses another key.\r\n https://stackoverflow.com/questions/11818637/why-does-javascript-drop-keyup-events-when-the-metakey-is-pressed-on-mac-browser\r\n Otherwise the set will hold all ever pressed keys while the meta key is down which leads to wrong results.\r\n */\n if (currentlyPressedKeys.has('meta')) {\n currentlyPressedKeys.forEach(function (key) {\n return !isHotkeyModifier(key) && currentlyPressedKeys[\"delete\"](key.toLowerCase());\n });\n }\n hotkeyArray.forEach(function (hotkey) {\n return currentlyPressedKeys.add(hotkey.toLowerCase());\n });\n}\nfunction removeFromCurrentlyPressedKeys(key) {\n var hotkeyArray = Array.isArray(key) ? key : [key];\n /*\r\n Due to a weird behavior on macOS we need to clear the set if the user pressed down the meta key and presses another key.\r\n https://stackoverflow.com/questions/11818637/why-does-javascript-drop-keyup-events-when-the-metakey-is-pressed-on-mac-browser\r\n Otherwise the set will hold all ever pressed keys while the meta key is down which leads to wrong results.\r\n */\n if (key === 'meta') {\n currentlyPressedKeys.clear();\n } else {\n hotkeyArray.forEach(function (hotkey) {\n return currentlyPressedKeys[\"delete\"](hotkey.toLowerCase());\n });\n }\n}\n\nfunction maybePreventDefault(e, hotkey, preventDefault) {\n if (typeof preventDefault === 'function' && preventDefault(e, hotkey) || preventDefault === true) {\n e.preventDefault();\n }\n}\nfunction isHotkeyEnabled(e, hotkey, enabled) {\n if (typeof enabled === 'function') {\n return enabled(e, hotkey);\n }\n return enabled === true || enabled === undefined;\n}\nfunction isKeyboardEventTriggeredByInput(ev) {\n return isHotkeyEnabledOnTag(ev, ['input', 'textarea', 'select']);\n}\nfunction isHotkeyEnabledOnTag(_ref, enabledOnTags) {\n var target = _ref.target;\n if (enabledOnTags === void 0) {\n enabledOnTags = false;\n }\n var targetTagName = target && target.tagName;\n if (isReadonlyArray(enabledOnTags)) {\n return Boolean(targetTagName && enabledOnTags && enabledOnTags.some(function (tag) {\n return tag.toLowerCase() === targetTagName.toLowerCase();\n }));\n }\n return Boolean(targetTagName && enabledOnTags && enabledOnTags === true);\n}\nfunction isScopeActive(activeScopes, scopes) {\n if (activeScopes.length === 0 && scopes) {\n console.warn('A hotkey has the \"scopes\" option set, however no active scopes were found. If you want to use the global scopes feature, you need to wrap your app in a ');\n return true;\n }\n if (!scopes) {\n return true;\n }\n return activeScopes.some(function (scope) {\n return scopes.includes(scope);\n }) || activeScopes.includes('*');\n}\nvar isHotkeyMatchingKeyboardEvent = function isHotkeyMatchingKeyboardEvent(e, hotkey, ignoreModifiers) {\n if (ignoreModifiers === void 0) {\n ignoreModifiers = false;\n }\n var alt = hotkey.alt,\n meta = hotkey.meta,\n mod = hotkey.mod,\n shift = hotkey.shift,\n ctrl = hotkey.ctrl,\n keys = hotkey.keys;\n var pressedKeyUppercase = e.key,\n code = e.code,\n ctrlKey = e.ctrlKey,\n metaKey = e.metaKey,\n shiftKey = e.shiftKey,\n altKey = e.altKey;\n var keyCode = mapKey(code);\n var pressedKey = pressedKeyUppercase.toLowerCase();\n if (!(keys != null && keys.includes(keyCode)) && !(keys != null && keys.includes(pressedKey)) && !['ctrl', 'control', 'unknown', 'meta', 'alt', 'shift', 'os'].includes(keyCode)) {\n return false;\n }\n if (!ignoreModifiers) {\n // We check the pressed keys for compatibility with the keyup event. In keyup events the modifier flags are not set.\n if (alt === !altKey && pressedKey !== 'alt') {\n return false;\n }\n if (shift === !shiftKey && pressedKey !== 'shift') {\n return false;\n }\n // Mod is a special key name that is checking for meta on macOS and ctrl on other platforms\n if (mod) {\n if (!metaKey && !ctrlKey) {\n return false;\n }\n } else {\n if (meta === !metaKey && pressedKey !== 'meta' && pressedKey !== 'os') {\n return false;\n }\n if (ctrl === !ctrlKey && pressedKey !== 'ctrl' && pressedKey !== 'control') {\n return false;\n }\n }\n }\n // All modifiers are correct, now check the key\n // If the key is set, we check for the key\n if (keys && keys.length === 1 && (keys.includes(pressedKey) || keys.includes(keyCode))) {\n return true;\n } else if (keys) {\n // Check if all keys are present in pressedDownKeys set\n return isHotkeyPressed(keys);\n } else if (!keys) {\n // If the key is not set, we only listen for modifiers, that check went alright, so we return true\n return true;\n }\n // There is nothing that matches.\n return false;\n};\n\nvar BoundHotkeysProxyProvider = /*#__PURE__*/createContext(undefined);\nvar useBoundHotkeysProxy = function useBoundHotkeysProxy() {\n return useContext(BoundHotkeysProxyProvider);\n};\nfunction BoundHotkeysProxyProviderProvider(_ref) {\n var addHotkey = _ref.addHotkey,\n removeHotkey = _ref.removeHotkey,\n children = _ref.children;\n return /*#__PURE__*/jsx(BoundHotkeysProxyProvider.Provider, {\n value: {\n addHotkey: addHotkey,\n removeHotkey: removeHotkey\n },\n children: children\n });\n}\n\nfunction deepEqual(x, y) {\n //@ts-ignore\n return x && y && typeof x === 'object' && typeof y === 'object' ? Object.keys(x).length === Object.keys(y).length &&\n //@ts-ignore\n Object.keys(x).reduce(function (isEqual, key) {\n return isEqual && deepEqual(x[key], y[key]);\n }, true) : x === y;\n}\n\nvar HotkeysContext = /*#__PURE__*/createContext({\n hotkeys: [],\n enabledScopes: [],\n toggleScope: function toggleScope() {},\n enableScope: function enableScope() {},\n disableScope: function disableScope() {}\n});\nvar useHotkeysContext = function useHotkeysContext() {\n return useContext(HotkeysContext);\n};\nvar HotkeysProvider = function HotkeysProvider(_ref) {\n var _ref$initiallyActiveS = _ref.initiallyActiveScopes,\n initiallyActiveScopes = _ref$initiallyActiveS === void 0 ? ['*'] : _ref$initiallyActiveS,\n children = _ref.children;\n var _useState = useState((initiallyActiveScopes == null ? void 0 : initiallyActiveScopes.length) > 0 ? initiallyActiveScopes : ['*']),\n internalActiveScopes = _useState[0],\n setInternalActiveScopes = _useState[1];\n var _useState2 = useState([]),\n boundHotkeys = _useState2[0],\n setBoundHotkeys = _useState2[1];\n var enableScope = useCallback(function (scope) {\n setInternalActiveScopes(function (prev) {\n if (prev.includes('*')) {\n return [scope];\n }\n return Array.from(new Set([].concat(prev, [scope])));\n });\n }, []);\n var disableScope = useCallback(function (scope) {\n setInternalActiveScopes(function (prev) {\n if (prev.filter(function (s) {\n return s !== scope;\n }).length === 0) {\n return ['*'];\n } else {\n return prev.filter(function (s) {\n return s !== scope;\n });\n }\n });\n }, []);\n var toggleScope = useCallback(function (scope) {\n setInternalActiveScopes(function (prev) {\n if (prev.includes(scope)) {\n if (prev.filter(function (s) {\n return s !== scope;\n }).length === 0) {\n return ['*'];\n } else {\n return prev.filter(function (s) {\n return s !== scope;\n });\n }\n } else {\n if (prev.includes('*')) {\n return [scope];\n }\n return Array.from(new Set([].concat(prev, [scope])));\n }\n });\n }, []);\n var addBoundHotkey = useCallback(function (hotkey) {\n setBoundHotkeys(function (prev) {\n return [].concat(prev, [hotkey]);\n });\n }, []);\n var removeBoundHotkey = useCallback(function (hotkey) {\n setBoundHotkeys(function (prev) {\n return prev.filter(function (h) {\n return !deepEqual(h, hotkey);\n });\n });\n }, []);\n return /*#__PURE__*/jsx(HotkeysContext.Provider, {\n value: {\n enabledScopes: internalActiveScopes,\n hotkeys: boundHotkeys,\n enableScope: enableScope,\n disableScope: disableScope,\n toggleScope: toggleScope\n },\n children: /*#__PURE__*/jsx(BoundHotkeysProxyProviderProvider, {\n addHotkey: addBoundHotkey,\n removeHotkey: removeBoundHotkey,\n children: children\n })\n });\n};\n\nfunction useDeepEqualMemo(value) {\n var ref = useRef(undefined);\n if (!deepEqual(ref.current, value)) {\n ref.current = value;\n }\n return ref.current;\n}\n\nvar stopPropagation = function stopPropagation(e) {\n e.stopPropagation();\n e.preventDefault();\n e.stopImmediatePropagation();\n};\nvar useSafeLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\nfunction useHotkeys(keys, callback, options, dependencies) {\n var ref = useRef(null);\n var hasTriggeredRef = useRef(false);\n var _options = !(options instanceof Array) ? options : !(dependencies instanceof Array) ? dependencies : undefined;\n var _keys = isReadonlyArray(keys) ? keys.join(_options == null ? void 0 : _options.splitKey) : keys;\n var _deps = options instanceof Array ? options : dependencies instanceof Array ? dependencies : undefined;\n var memoisedCB = useCallback(callback, _deps != null ? _deps : []);\n var cbRef = useRef(memoisedCB);\n if (_deps) {\n cbRef.current = memoisedCB;\n } else {\n cbRef.current = callback;\n }\n var memoisedOptions = useDeepEqualMemo(_options);\n var _useHotkeysContext = useHotkeysContext(),\n enabledScopes = _useHotkeysContext.enabledScopes;\n var proxy = useBoundHotkeysProxy();\n useSafeLayoutEffect(function () {\n if ((memoisedOptions == null ? void 0 : memoisedOptions.enabled) === false || !isScopeActive(enabledScopes, memoisedOptions == null ? void 0 : memoisedOptions.scopes)) {\n return;\n }\n var listener = function listener(e, isKeyUp) {\n var _e$target;\n if (isKeyUp === void 0) {\n isKeyUp = false;\n }\n if (isKeyboardEventTriggeredByInput(e) && !isHotkeyEnabledOnTag(e, memoisedOptions == null ? void 0 : memoisedOptions.enableOnFormTags)) {\n return;\n }\n // TODO: SINCE THE EVENT IS NOW ATTACHED TO THE REF, THE ACTIVE ELEMENT CAN NEVER BE INSIDE THE REF. THE HOTKEY ONLY TRIGGERS IF THE\n // REF IS THE ACTIVE ELEMENT. THIS IS A PROBLEM SINCE FOCUSED SUB COMPONENTS WON'T TRIGGER THE HOTKEY.\n if (ref.current !== null) {\n var rootNode = ref.current.getRootNode();\n if ((rootNode instanceof Document || rootNode instanceof ShadowRoot) && rootNode.activeElement !== ref.current && !ref.current.contains(rootNode.activeElement)) {\n stopPropagation(e);\n return;\n }\n }\n if ((_e$target = e.target) != null && _e$target.isContentEditable && !(memoisedOptions != null && memoisedOptions.enableOnContentEditable)) {\n return;\n }\n parseKeysHookInput(_keys, memoisedOptions == null ? void 0 : memoisedOptions.splitKey).forEach(function (key) {\n var _hotkey$keys;\n var hotkey = parseHotkey(key, memoisedOptions == null ? void 0 : memoisedOptions.combinationKey);\n if (isHotkeyMatchingKeyboardEvent(e, hotkey, memoisedOptions == null ? void 0 : memoisedOptions.ignoreModifiers) || (_hotkey$keys = hotkey.keys) != null && _hotkey$keys.includes('*')) {\n if (memoisedOptions != null && memoisedOptions.ignoreEventWhen != null && memoisedOptions.ignoreEventWhen(e)) {\n return;\n }\n if (isKeyUp && hasTriggeredRef.current) {\n return;\n }\n maybePreventDefault(e, hotkey, memoisedOptions == null ? void 0 : memoisedOptions.preventDefault);\n if (!isHotkeyEnabled(e, hotkey, memoisedOptions == null ? void 0 : memoisedOptions.enabled)) {\n stopPropagation(e);\n return;\n }\n // Execute the user callback for that hotkey\n cbRef.current(e, hotkey);\n if (!isKeyUp) {\n hasTriggeredRef.current = true;\n }\n }\n });\n };\n var handleKeyDown = function handleKeyDown(event) {\n if (event.key === undefined) {\n // Synthetic event (e.g., Chrome autofill). Ignore.\n return;\n }\n pushToCurrentlyPressedKeys(mapKey(event.code));\n if ((memoisedOptions == null ? void 0 : memoisedOptions.keydown) === undefined && (memoisedOptions == null ? void 0 : memoisedOptions.keyup) !== true || memoisedOptions != null && memoisedOptions.keydown) {\n listener(event);\n }\n };\n var handleKeyUp = function handleKeyUp(event) {\n if (event.key === undefined) {\n // Synthetic event (e.g., Chrome autofill). Ignore.\n return;\n }\n removeFromCurrentlyPressedKeys(mapKey(event.code));\n hasTriggeredRef.current = false;\n if (memoisedOptions != null && memoisedOptions.keyup) {\n listener(event, true);\n }\n };\n var domNode = ref.current || (_options == null ? void 0 : _options.document) || document;\n // @ts-ignore\n domNode.addEventListener('keyup', handleKeyUp);\n // @ts-ignore\n domNode.addEventListener('keydown', handleKeyDown);\n if (proxy) {\n parseKeysHookInput(_keys, memoisedOptions == null ? void 0 : memoisedOptions.splitKey).forEach(function (key) {\n return proxy.addHotkey(parseHotkey(key, memoisedOptions == null ? void 0 : memoisedOptions.combinationKey, memoisedOptions == null ? void 0 : memoisedOptions.description));\n });\n }\n return function () {\n // @ts-ignore\n domNode.removeEventListener('keyup', handleKeyUp);\n // @ts-ignore\n domNode.removeEventListener('keydown', handleKeyDown);\n if (proxy) {\n parseKeysHookInput(_keys, memoisedOptions == null ? void 0 : memoisedOptions.splitKey).forEach(function (key) {\n return proxy.removeHotkey(parseHotkey(key, memoisedOptions == null ? void 0 : memoisedOptions.combinationKey, memoisedOptions == null ? void 0 : memoisedOptions.description));\n });\n }\n };\n }, [_keys, memoisedOptions, enabledScopes]);\n return ref;\n}\n\nfunction useRecordHotkeys() {\n var _useState = useState(new Set()),\n keys = _useState[0],\n setKeys = _useState[1];\n var _useState2 = useState(false),\n isRecording = _useState2[0],\n setIsRecording = _useState2[1];\n var handler = useCallback(function (event) {\n if (event.key === undefined) {\n // Synthetic event (e.g., Chrome autofill). Ignore.\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n setKeys(function (prev) {\n var newKeys = new Set(prev);\n newKeys.add(mapKey(event.code));\n return newKeys;\n });\n }, []);\n var stop = useCallback(function () {\n if (typeof document !== 'undefined') {\n document.removeEventListener('keydown', handler);\n setIsRecording(false);\n }\n }, [handler]);\n var start = useCallback(function () {\n setKeys(new Set());\n if (typeof document !== 'undefined') {\n stop();\n document.addEventListener('keydown', handler);\n setIsRecording(true);\n }\n }, [handler, stop]);\n var resetKeys = useCallback(function () {\n setKeys(new Set());\n }, []);\n return [keys, {\n start: start,\n stop: stop,\n resetKeys: resetKeys,\n isRecording: isRecording\n }];\n}\n\nexport { HotkeysProvider, isHotkeyPressed, useHotkeys, useHotkeysContext, useRecordHotkeys };\n//# sourceMappingURL=react-hotkeys-hook.esm.js.map\n","/*!\n * Toastify js 1.12.0\n * https://github.com/apvarun/toastify-js\n * @license MIT licensed\n *\n * Copyright (C) 2018 Varun A P\n */\n(function(root, factory) {\n if (typeof module === \"object\" && module.exports) {\n module.exports = factory();\n } else {\n root.Toastify = factory();\n }\n})(this, function(global) {\n // Object initialization\n var Toastify = function(options) {\n // Returning a new init object\n return new Toastify.lib.init(options);\n },\n // Library version\n version = \"1.12.0\";\n\n // Set the default global options\n Toastify.defaults = {\n oldestFirst: true,\n text: \"Toastify is awesome!\",\n node: undefined,\n duration: 3000,\n selector: undefined,\n callback: function () {\n },\n destination: undefined,\n newWindow: false,\n close: false,\n gravity: \"toastify-top\",\n positionLeft: false,\n position: '',\n backgroundColor: '',\n avatar: \"\",\n className: \"\",\n stopOnFocus: true,\n onClick: function () {\n },\n offset: {x: 0, y: 0},\n escapeMarkup: true,\n ariaLive: 'polite',\n style: {background: ''}\n };\n\n // Defining the prototype of the object\n Toastify.lib = Toastify.prototype = {\n toastify: version,\n\n constructor: Toastify,\n\n // Initializing the object with required parameters\n init: function(options) {\n // Verifying and validating the input object\n if (!options) {\n options = {};\n }\n\n // Creating the options object\n this.options = {};\n\n this.toastElement = null;\n\n // Validating the options\n this.options.text = options.text || Toastify.defaults.text; // Display message\n this.options.node = options.node || Toastify.defaults.node; // Display content as node\n this.options.duration = options.duration === 0 ? 0 : options.duration || Toastify.defaults.duration; // Display duration\n this.options.selector = options.selector || Toastify.defaults.selector; // Parent selector\n this.options.callback = options.callback || Toastify.defaults.callback; // Callback after display\n this.options.destination = options.destination || Toastify.defaults.destination; // On-click destination\n this.options.newWindow = options.newWindow || Toastify.defaults.newWindow; // Open destination in new window\n this.options.close = options.close || Toastify.defaults.close; // Show toast close icon\n this.options.gravity = options.gravity === \"bottom\" ? \"toastify-bottom\" : Toastify.defaults.gravity; // toast position - top or bottom\n this.options.positionLeft = options.positionLeft || Toastify.defaults.positionLeft; // toast position - left or right\n this.options.position = options.position || Toastify.defaults.position; // toast position - left or right\n this.options.backgroundColor = options.backgroundColor || Toastify.defaults.backgroundColor; // toast background color\n this.options.avatar = options.avatar || Toastify.defaults.avatar; // img element src - url or a path\n this.options.className = options.className || Toastify.defaults.className; // additional class names for the toast\n this.options.stopOnFocus = options.stopOnFocus === undefined ? Toastify.defaults.stopOnFocus : options.stopOnFocus; // stop timeout on focus\n this.options.onClick = options.onClick || Toastify.defaults.onClick; // Callback after click\n this.options.offset = options.offset || Toastify.defaults.offset; // toast offset\n this.options.escapeMarkup = options.escapeMarkup !== undefined ? options.escapeMarkup : Toastify.defaults.escapeMarkup;\n this.options.ariaLive = options.ariaLive || Toastify.defaults.ariaLive;\n this.options.style = options.style || Toastify.defaults.style;\n if(options.backgroundColor) {\n this.options.style.background = options.backgroundColor;\n }\n\n // Returning the current object for chaining functions\n return this;\n },\n\n // Building the DOM element\n buildToast: function() {\n // Validating if the options are defined\n if (!this.options) {\n throw \"Toastify is not initialized\";\n }\n\n // Creating the DOM object\n var divElement = document.createElement(\"div\");\n divElement.className = \"toastify on \" + this.options.className;\n\n // Positioning toast to left or right or center\n if (!!this.options.position) {\n divElement.className += \" toastify-\" + this.options.position;\n } else {\n // To be depreciated in further versions\n if (this.options.positionLeft === true) {\n divElement.className += \" toastify-left\";\n console.warn('Property `positionLeft` will be depreciated in further versions. Please use `position` instead.')\n } else {\n // Default position\n divElement.className += \" toastify-right\";\n }\n }\n\n // Assigning gravity of element\n divElement.className += \" \" + this.options.gravity;\n\n if (this.options.backgroundColor) {\n // This is being deprecated in favor of using the style HTML DOM property\n console.warn('DEPRECATION NOTICE: \"backgroundColor\" is being deprecated. Please use the \"style.background\" property.');\n }\n\n // Loop through our style object and apply styles to divElement\n for (var property in this.options.style) {\n divElement.style[property] = this.options.style[property];\n }\n\n // Announce the toast to screen readers\n if (this.options.ariaLive) {\n divElement.setAttribute('aria-live', this.options.ariaLive)\n }\n\n // Adding the toast message/node\n if (this.options.node && this.options.node.nodeType === Node.ELEMENT_NODE) {\n // If we have a valid node, we insert it\n divElement.appendChild(this.options.node)\n } else {\n if (this.options.escapeMarkup) {\n divElement.innerText = this.options.text;\n } else {\n divElement.innerHTML = this.options.text;\n }\n\n if (this.options.avatar !== \"\") {\n var avatarElement = document.createElement(\"img\");\n avatarElement.src = this.options.avatar;\n\n avatarElement.className = \"toastify-avatar\";\n\n if (this.options.position == \"left\" || this.options.positionLeft === true) {\n // Adding close icon on the left of content\n divElement.appendChild(avatarElement);\n } else {\n // Adding close icon on the right of content\n divElement.insertAdjacentElement(\"afterbegin\", avatarElement);\n }\n }\n }\n\n // Adding a close icon to the toast\n if (this.options.close === true) {\n // Create a span for close element\n var closeElement = document.createElement(\"button\");\n closeElement.type = \"button\";\n closeElement.setAttribute(\"aria-label\", \"Close\");\n closeElement.className = \"toast-close\";\n closeElement.innerHTML = \"✖\";\n\n // Triggering the removal of toast from DOM on close click\n closeElement.addEventListener(\n \"click\",\n function(event) {\n event.stopPropagation();\n this.removeElement(this.toastElement);\n window.clearTimeout(this.toastElement.timeOutValue);\n }.bind(this)\n );\n\n //Calculating screen width\n var width = window.innerWidth > 0 ? window.innerWidth : screen.width;\n\n // Adding the close icon to the toast element\n // Display on the right if screen width is less than or equal to 360px\n if ((this.options.position == \"left\" || this.options.positionLeft === true) && width > 360) {\n // Adding close icon on the left of content\n divElement.insertAdjacentElement(\"afterbegin\", closeElement);\n } else {\n // Adding close icon on the right of content\n divElement.appendChild(closeElement);\n }\n }\n\n // Clear timeout while toast is focused\n if (this.options.stopOnFocus && this.options.duration > 0) {\n var self = this;\n // stop countdown\n divElement.addEventListener(\n \"mouseover\",\n function(event) {\n window.clearTimeout(divElement.timeOutValue);\n }\n )\n // add back the timeout\n divElement.addEventListener(\n \"mouseleave\",\n function() {\n divElement.timeOutValue = window.setTimeout(\n function() {\n // Remove the toast from DOM\n self.removeElement(divElement);\n },\n self.options.duration\n )\n }\n )\n }\n\n // Adding an on-click destination path\n if (typeof this.options.destination !== \"undefined\") {\n divElement.addEventListener(\n \"click\",\n function(event) {\n event.stopPropagation();\n if (this.options.newWindow === true) {\n window.open(this.options.destination, \"_blank\");\n } else {\n window.location = this.options.destination;\n }\n }.bind(this)\n );\n }\n\n if (typeof this.options.onClick === \"function\" && typeof this.options.destination === \"undefined\") {\n divElement.addEventListener(\n \"click\",\n function(event) {\n event.stopPropagation();\n this.options.onClick();\n }.bind(this)\n );\n }\n\n // Adding offset\n if(typeof this.options.offset === \"object\") {\n\n var x = getAxisOffsetAValue(\"x\", this.options);\n var y = getAxisOffsetAValue(\"y\", this.options);\n\n var xOffset = this.options.position == \"left\" ? x : \"-\" + x;\n var yOffset = this.options.gravity == \"toastify-top\" ? y : \"-\" + y;\n\n divElement.style.transform = \"translate(\" + xOffset + \",\" + yOffset + \")\";\n\n }\n\n // Returning the generated element\n return divElement;\n },\n\n // Displaying the toast\n showToast: function() {\n // Creating the DOM object for the toast\n this.toastElement = this.buildToast();\n\n // Getting the root element to with the toast needs to be added\n var rootElement;\n if (typeof this.options.selector === \"string\") {\n rootElement = document.getElementById(this.options.selector);\n } else if (this.options.selector instanceof HTMLElement || (typeof ShadowRoot !== 'undefined' && this.options.selector instanceof ShadowRoot)) {\n rootElement = this.options.selector;\n } else {\n rootElement = document.body;\n }\n\n // Validating if root element is present in DOM\n if (!rootElement) {\n throw \"Root element is not defined\";\n }\n\n // Adding the DOM element\n var elementToInsert = Toastify.defaults.oldestFirst ? rootElement.firstChild : rootElement.lastChild;\n rootElement.insertBefore(this.toastElement, elementToInsert);\n\n // Repositioning the toasts in case multiple toasts are present\n Toastify.reposition();\n\n if (this.options.duration > 0) {\n this.toastElement.timeOutValue = window.setTimeout(\n function() {\n // Remove the toast from DOM\n this.removeElement(this.toastElement);\n }.bind(this),\n this.options.duration\n ); // Binding `this` for function invocation\n }\n\n // Supporting function chaining\n return this;\n },\n\n hideToast: function() {\n if (this.toastElement.timeOutValue) {\n clearTimeout(this.toastElement.timeOutValue);\n }\n this.removeElement(this.toastElement);\n },\n\n // Removing the element from the DOM\n removeElement: function(toastElement) {\n // Hiding the element\n // toastElement.classList.remove(\"on\");\n toastElement.className = toastElement.className.replace(\" on\", \"\");\n\n // Removing the element from DOM after transition end\n window.setTimeout(\n function() {\n // remove options node if any\n if (this.options.node && this.options.node.parentNode) {\n this.options.node.parentNode.removeChild(this.options.node);\n }\n\n // Remove the element from the DOM, only when the parent node was not removed before.\n if (toastElement.parentNode) {\n toastElement.parentNode.removeChild(toastElement);\n }\n\n // Calling the callback function\n this.options.callback.call(toastElement);\n\n // Repositioning the toasts again\n Toastify.reposition();\n }.bind(this),\n 400\n ); // Binding `this` for function invocation\n },\n };\n\n // Positioning the toasts on the DOM\n Toastify.reposition = function() {\n\n // Top margins with gravity\n var topLeftOffsetSize = {\n top: 15,\n bottom: 15,\n };\n var topRightOffsetSize = {\n top: 15,\n bottom: 15,\n };\n var offsetSize = {\n top: 15,\n bottom: 15,\n };\n\n // Get all toast messages on the DOM\n var allToasts = document.getElementsByClassName(\"toastify\");\n\n var classUsed;\n\n // Modifying the position of each toast element\n for (var i = 0; i < allToasts.length; i++) {\n // Getting the applied gravity\n if (containsClass(allToasts[i], \"toastify-top\") === true) {\n classUsed = \"toastify-top\";\n } else {\n classUsed = \"toastify-bottom\";\n }\n\n var height = allToasts[i].offsetHeight;\n classUsed = classUsed.substr(9, classUsed.length-1)\n // Spacing between toasts\n var offset = 15;\n\n var width = window.innerWidth > 0 ? window.innerWidth : screen.width;\n\n // Show toast in center if screen with less than or equal to 360px\n if (width <= 360) {\n // Setting the position\n allToasts[i].style[classUsed] = offsetSize[classUsed] + \"px\";\n\n offsetSize[classUsed] += height + offset;\n } else {\n if (containsClass(allToasts[i], \"toastify-left\") === true) {\n // Setting the position\n allToasts[i].style[classUsed] = topLeftOffsetSize[classUsed] + \"px\";\n\n topLeftOffsetSize[classUsed] += height + offset;\n } else {\n // Setting the position\n allToasts[i].style[classUsed] = topRightOffsetSize[classUsed] + \"px\";\n\n topRightOffsetSize[classUsed] += height + offset;\n }\n }\n }\n\n // Supporting function chaining\n return this;\n };\n\n // Helper function to get offset.\n function getAxisOffsetAValue(axis, options) {\n\n if(options.offset[axis]) {\n if(isNaN(options.offset[axis])) {\n return options.offset[axis];\n }\n else {\n return options.offset[axis] + 'px';\n }\n }\n\n return '0px';\n\n }\n\n function containsClass(elem, yourClass) {\n if (!elem || typeof yourClass !== \"string\") {\n return false;\n } else if (\n elem.className &&\n elem.className\n .trim()\n .split(/\\s+/gi)\n .indexOf(yourClass) > -1\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n // Setting up the prototype for the init object\n Toastify.lib.init.prototype = Toastify.lib;\n\n // Returning the Toastify function to be assigned to the window object/module\n return Toastify;\n});\n","import Toastify from 'toastify-js';\n\nwindow._showToast = showToast;\n\nfunction showToast(props) {\n if (typeof props === 'string') {\n props = { text: props };\n }\n const { onClick, delay, ...rest } = props;\n const toast = Toastify({\n className: `${onClick || props.destination ? 'shiny-pill' : ''}`,\n gravity: 'bottom',\n position: 'center',\n ...rest,\n onClick: () => {\n onClick?.(toast); // Pass in the object itself!\n },\n });\n if (delay) {\n setTimeout(() => {\n toast.showToast();\n }, delay);\n } else {\n toast.showToast();\n }\n return toast;\n}\n\nexport default showToast;\n","import { useEffect, useRef } from 'preact/hooks';\n\nfunction useInterval(fn, delay, deps, immediate) {\n const savedCallback = useRef(fn);\n useEffect(() => {\n savedCallback.current = fn;\n }, [fn, deps]);\n\n useEffect(() => {\n if (!immediate || delay === null || delay === false) return;\n savedCallback.current();\n }, [immediate]);\n\n useEffect(() => {\n if (delay === null || delay === false) return;\n const tick = () => savedCallback.current();\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }, [delay]);\n}\n\nexport default useInterval;\n","export default function openCompose(opts) {\n const url = URL.parse('/compose/', window.location);\n const { width: screenWidth, height: screenHeight } = window.screen;\n const left = Math.max(0, (screenWidth - 600) / 2);\n const top = Math.max(0, (screenHeight - 450) / 2);\n const width = Math.min(screenWidth, 600);\n const height = Math.min(screenHeight, 450);\n const winUID = opts?.uid || Math.random();\n const newWin = window.open(\n url,\n 'compose' + winUID,\n `width=${width},height=${height},left=${left},top=${top}`,\n );\n\n if (newWin) {\n // if (masto) {\n // newWin.masto = masto;\n // }\n\n newWin.__COMPOSE__ = opts;\n } else {\n alert('Looks like your browser is blocking popups.');\n }\n\n return newWin;\n}\n","const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); // https://stackoverflow.com/a/23522755\n\nexport default function openOSK() {\n if (isSafari) {\n const fauxEl = document.createElement('input');\n fauxEl.style.position = 'absolute';\n fauxEl.style.top = '0';\n fauxEl.style.left = '0';\n fauxEl.style.opacity = '0';\n document.body.appendChild(fauxEl);\n fauxEl.focus();\n setTimeout(() => {\n document.body.removeChild(fauxEl);\n }, 500);\n }\n}\n","export const ICONS = {\n x: () => import('@iconify-icons/mingcute/close-line'),\n heart: () => import('@iconify-icons/mingcute/heart-line'),\n bookmark: () => import('@iconify-icons/mingcute/bookmark-line'),\n 'check-circle': () => import('@iconify-icons/mingcute/check-circle-line'),\n 'x-circle': () => import('@iconify-icons/mingcute/close-circle-line'),\n transfer: () => import('@iconify-icons/mingcute/transfer-4-line'),\n rocket: () => import('@iconify-icons/mingcute/rocket-line'),\n 'arrow-left': {\n module: () => import('@iconify-icons/mingcute/arrow-left-line'),\n rtl: true,\n },\n 'arrow-right': {\n module: () => import('@iconify-icons/mingcute/arrow-right-line'),\n rtl: true,\n },\n 'arrow-up': () => import('@iconify-icons/mingcute/arrow-up-line'),\n 'arrow-down': () => import('@iconify-icons/mingcute/arrow-down-line'),\n earth: () => import('@iconify-icons/mingcute/earth-line'),\n lock: () => import('@iconify-icons/mingcute/lock-line'),\n unlock: () => import('@iconify-icons/mingcute/unlock-line'),\n 'eye-close': () => import('@iconify-icons/mingcute/eye-close-line'),\n 'eye-open': () => import('@iconify-icons/mingcute/eye-2-line'),\n message: () => import('@iconify-icons/mingcute/mail-line'),\n comment: {\n module: () => import('@iconify-icons/mingcute/chat-3-line'),\n rtl: true,\n },\n comment2: {\n module: () => import('@iconify-icons/mingcute/comment-2-line'),\n rtl: true,\n },\n home: () => import('@iconify-icons/mingcute/home-3-line'),\n notification: () => import('@iconify-icons/mingcute/notification-line'),\n follow: () => import('@iconify-icons/mingcute/user-follow-line'),\n 'follow-add': () => import('@iconify-icons/mingcute/user-add-line'),\n poll: [() => import('@iconify-icons/mingcute/chart-bar-line'), '90deg'],\n pencil: () => import('@iconify-icons/mingcute/pencil-line'),\n quill: () => import('@iconify-icons/mingcute/quill-pen-line'),\n at: () => import('@iconify-icons/mingcute/at-line'),\n attachment: () => import('@iconify-icons/mingcute/attachment-line'),\n upload: () => import('@iconify-icons/mingcute/upload-3-line'),\n gear: () => import('@iconify-icons/mingcute/settings-3-line'),\n more: () => import('@iconify-icons/mingcute/more-3-line'),\n more2: () => import('@iconify-icons/mingcute/more-1-fill'),\n external: {\n module: () => import('@iconify-icons/mingcute/external-link-line'),\n rtl: true,\n },\n popout: {\n module: () => import('@iconify-icons/mingcute/external-link-line'),\n rtl: true,\n },\n popin: {\n module: () => import('@iconify-icons/mingcute/external-link-line'),\n rotate: '180deg',\n rtl: true,\n },\n plus: () => import('@iconify-icons/mingcute/add-circle-line'),\n 'chevron-left': {\n module: () => import('@iconify-icons/mingcute/left-line'),\n rtl: true,\n },\n 'chevron-right': {\n module: () => import('@iconify-icons/mingcute/right-line'),\n rtl: true,\n },\n 'chevron-down': () => import('@iconify-icons/mingcute/down-line'),\n reply: {\n module: () => import('@iconify-icons/mingcute/share-forward-line'),\n rotate: '180deg',\n flip: 'horizontal',\n rtl: true,\n },\n thread: () => import('@iconify-icons/mingcute/route-line'),\n group: {\n module: () => import('@iconify-icons/mingcute/group-line'),\n rtl: true,\n },\n bot: () => import('@iconify-icons/mingcute/android-2-line'),\n menu: () => import('@iconify-icons/mingcute/rows-4-line'),\n list: {\n module: () => import('@iconify-icons/mingcute/list-check-line'),\n rtl: true,\n },\n search: () => import('@iconify-icons/mingcute/search-2-line'),\n hashtag: () => import('@iconify-icons/mingcute/hashtag-line'),\n info: () => import('@iconify-icons/mingcute/information-line'),\n shortcut: () => import('@iconify-icons/mingcute/lightning-line'),\n user: () => import('@iconify-icons/mingcute/user-4-line'),\n following: () => import('@iconify-icons/mingcute/walk-line'),\n pin: () => import('@iconify-icons/mingcute/pin-line'),\n unpin: [() => import('@iconify-icons/mingcute/pin-line'), '180deg'],\n bus: () => import('@iconify-icons/mingcute/bus-2-line'),\n link: () => import('@iconify-icons/mingcute/link-2-line'),\n history: () => import('@iconify-icons/mingcute/history-line'),\n share: () => import('@iconify-icons/mingcute/share-2-line'),\n sparkles: () => import('@iconify-icons/mingcute/sparkles-line'),\n sparkles2: () => import('@iconify-icons/mingcute/sparkles-2-line'),\n exit: {\n module: () => import('@iconify-icons/mingcute/exit-line'),\n rtl: true,\n },\n translate: () => import('@iconify-icons/mingcute/translate-line'),\n play: () => import('@iconify-icons/mingcute/play-fill'),\n trash: () => import('@iconify-icons/mingcute/delete-2-line'),\n mute: {\n module: () => import('@iconify-icons/mingcute/volume-mute-line'),\n rtl: true,\n },\n unmute: {\n module: () => import('@iconify-icons/mingcute/volume-line'),\n rtl: true,\n },\n block: () => import('@iconify-icons/mingcute/forbid-circle-line'),\n unblock: [\n () => import('@iconify-icons/mingcute/forbid-circle-line'),\n '180deg',\n ],\n flag: () => import('@iconify-icons/mingcute/flag-1-line'),\n time: () => import('@iconify-icons/mingcute/time-line'),\n refresh: () => import('@iconify-icons/mingcute/refresh-2-line'),\n emoji2: () => import('@iconify-icons/mingcute/emoji-2-line'),\n filter: () => import('@iconify-icons/mingcute/filter-2-line'),\n filters: () => import('@iconify-icons/mingcute/filter-line'),\n chart: () => import('@iconify-icons/mingcute/chart-line-line'),\n react: () => import('@iconify-icons/mingcute/react-line'),\n layout4: {\n module: () => import('@iconify-icons/mingcute/layout-4-line'),\n rtl: true,\n },\n layout5: () => import('@iconify-icons/mingcute/layout-5-line'),\n announce: {\n module: () => import('@iconify-icons/mingcute/announcement-line'),\n rtl: true,\n },\n alert: () => import('@iconify-icons/mingcute/alert-line'),\n round: () => import('@iconify-icons/mingcute/round-fill'),\n 'arrow-up-circle': () =>\n import('@iconify-icons/mingcute/arrow-up-circle-line'),\n 'arrow-down-circle': () =>\n import('@iconify-icons/mingcute/arrow-down-circle-line'),\n clipboard: {\n module: () => import('@iconify-icons/mingcute/clipboard-line'),\n rtl: true,\n },\n 'account-edit': () => import('@iconify-icons/mingcute/user-edit-line'),\n 'account-warning': () => import('@iconify-icons/mingcute/user-warning-line'),\n keyboard: () => import('@iconify-icons/mingcute/keyboard-line'),\n cloud: () => import('@iconify-icons/mingcute/cloud-line'),\n month: {\n module: () => import('@iconify-icons/mingcute/calendar-month-line'),\n rtl: true,\n },\n media: () => import('@iconify-icons/mingcute/photo-album-line'),\n speak: () => import('@iconify-icons/mingcute/radar-line'),\n building: () => import('@iconify-icons/mingcute/building-5-line'),\n history2: {\n module: () => import('@iconify-icons/mingcute/history-2-line'),\n rtl: true,\n },\n document: () => import('@iconify-icons/mingcute/document-line'),\n 'arrows-right': {\n module: () => import('@iconify-icons/mingcute/arrows-right-line'),\n rtl: true,\n },\n code: () => import('@iconify-icons/mingcute/code-line'),\n copy: () => import('@iconify-icons/mingcute/copy-2-line'),\n quote: {\n module: () => import('@iconify-icons/mingcute/quote-left-line'),\n rtl: true,\n },\n settings: () => import('@iconify-icons/mingcute/settings-6-line'),\n 'heart-break': () => import('@iconify-icons/mingcute/heart-crack-line'),\n 'user-x': () => import('@iconify-icons/mingcute/user-x-line'),\n minimize: () => import('@iconify-icons/mingcute/arrows-down-line'),\n};\n","import moize from 'moize';\nimport { useEffect, useRef, useState } from 'preact/hooks';\n\nimport { ICONS } from './ICONS';\n\nconst SIZES = {\n s: 12,\n m: 16,\n l: 20,\n xl: 24,\n xxl: 32,\n};\n\nconst ICONDATA = {};\n\n// Memoize the dangerouslySetInnerHTML of the SVGs\nconst SVGICon = moize(\n function ({ width, height, body, rotate, flip }) {\n return (\n \n );\n },\n {\n isShallowEqual: true,\n maxSize: Object.keys(ICONS).length,\n matchesArg: (cacheKeyArg, keyArg) =>\n cacheKeyArg.icon === keyArg.icon && cacheKeyArg.body === keyArg.body,\n },\n);\n\nfunction Icon({\n icon,\n size = 'm',\n alt,\n title,\n class: className = '',\n style = {},\n}) {\n if (!icon) return null;\n\n const iconSize = SIZES[size];\n let iconBlock = ICONS[icon];\n if (!iconBlock) {\n console.warn(`Icon ${icon} not found`);\n return null;\n }\n\n let rotate,\n flip,\n rtl = false;\n if (Array.isArray(iconBlock)) {\n [iconBlock, rotate, flip] = iconBlock;\n } else if (typeof iconBlock === 'object') {\n ({ rotate, flip, rtl } = iconBlock);\n iconBlock = iconBlock.module;\n }\n\n const [iconData, setIconData] = useState(ICONDATA[icon]);\n const currentIcon = useRef(icon);\n useEffect(() => {\n if (iconData && currentIcon.current === icon) return;\n (async () => {\n const iconB = await iconBlock();\n setIconData(iconB.default);\n ICONDATA[icon] = iconB.default;\n })();\n currentIcon.current = icon;\n }, [icon]);\n\n return (\n \n {iconData && (\n // \n \n )}\n \n );\n}\n\nexport default Icon;\n","import { useEffect } from 'preact/hooks';\n\nfunction useCloseWatcher(fn, deps = []) {\n if (!fn || typeof fn !== 'function') return;\n useEffect(() => {\n const watcher = new CloseWatcher();\n watcher.addEventListener('close', fn);\n return () => {\n watcher.destroy();\n };\n }, deps);\n}\n\nexport default window.CloseWatcher ? useCloseWatcher : () => {};\n","import './modal.css';\n\nimport { createPortal } from 'preact/compat';\nimport { useEffect, useRef } from 'preact/hooks';\nimport { useHotkeys } from 'react-hotkeys-hook';\n\nimport useCloseWatcher from '../utils/useCloseWatcher';\n\nconst $modalContainer = document.getElementById('modal-container');\n\nfunction Modal({ children, onClose, onClick, class: className, minimized }) {\n if (!children) return null;\n\n const modalRef = useRef();\n useEffect(() => {\n let timer = setTimeout(() => {\n const focusElement = modalRef.current?.querySelector('[tabindex=\"-1\"]');\n if (focusElement) {\n focusElement.focus();\n }\n }, 100);\n return () => clearTimeout(timer);\n }, []);\n\n const supportsCloseWatcher = window.CloseWatcher;\n const escRef = useHotkeys(\n 'esc',\n () => {\n setTimeout(() => {\n onClose?.();\n }, 0);\n },\n {\n enabled: !supportsCloseWatcher && !!onClose,\n // Using keyup and setTimeout above\n // This will run \"later\" to prevent clash with esc handlers from other components\n keydown: false,\n keyup: true,\n },\n [onClose],\n );\n useCloseWatcher(onClose, [onClose]);\n\n useEffect(() => {\n const $deckContainers = document.querySelectorAll('.deck-container');\n if (minimized) {\n // Similar to focusDeck in focus-deck.jsx\n // Focus last deck\n const page = $deckContainers[$deckContainers.length - 1]; // last one\n if (page && page.tabIndex === -1) {\n page.focus();\n }\n } else {\n if (children) {\n $deckContainers.forEach(($deckContainer) => {\n $deckContainer.setAttribute('inert', '');\n });\n } else {\n $deckContainers.forEach(($deckContainer) => {\n $deckContainer.removeAttribute('inert');\n });\n }\n }\n return () => {\n $deckContainers.forEach(($deckContainer) => {\n $deckContainer.removeAttribute('inert');\n });\n };\n }, [children, minimized]);\n\n const Modal = (\n {\n modalRef.current = node;\n escRef.current = node?.querySelector?.('[tabindex=\"-1\"]') || node;\n }}\n className={className}\n onClick={(e) => {\n onClick?.(e);\n if (e.target === e.currentTarget) {\n onClose?.(e);\n }\n }}\n tabIndex={minimized ? 0 : '-1'}\n inert={minimized}\n onFocus={(e) => {\n try {\n if (e.target === e.currentTarget) {\n const focusElement =\n modalRef.current?.querySelector('[tabindex=\"-1\"]');\n const isFocusable =\n !!focusElement &&\n getComputedStyle(focusElement)?.pointerEvents !== 'none';\n if (focusElement && isFocusable) {\n focusElement.focus();\n }\n }\n } catch (err) {\n console.error(err);\n }\n }}\n >\n {children}\n
\n );\n\n return createPortal(Modal, $modalContainer);\n\n // return createPortal(children, $modalContainer);\n}\n\nexport default Modal;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import { unstable_batchedUpdates } from 'react-dom';\n\nconst isMenuOpen = state => !!state && state[0] === 'o';\nconst batchedUpdates = unstable_batchedUpdates || (callback => callback());\nconst values = Object.values || (obj => Object.keys(obj).map(key => obj[key]));\nconst getTransition = (transition, name) => transition === true || !!(transition && transition[name]);\nconst safeCall = (fn, arg) => typeof fn === 'function' ? fn(arg) : fn;\nconst internalKey = '_szhsinMenu';\nconst getName = component => component[internalKey];\nconst defineName = (name, component) => Object.defineProperty(component, internalKey, {\n value: name\n});\nconst mergeProps = (target, source) => {\n source && Object.keys(source).forEach(key => {\n const targetProp = target[key];\n const sourceProp = source[key];\n if (typeof sourceProp === 'function' && targetProp) {\n target[key] = (...arg) => {\n sourceProp(...arg);\n targetProp(...arg);\n };\n } else {\n target[key] = sourceProp;\n }\n });\n return target;\n};\nconst parsePadding = paddingStr => {\n if (typeof paddingStr !== 'string') return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n const padding = paddingStr.trim().split(/\\s+/, 4).map(parseFloat);\n const top = !isNaN(padding[0]) ? padding[0] : 0;\n const right = !isNaN(padding[1]) ? padding[1] : top;\n return {\n top,\n right,\n bottom: !isNaN(padding[2]) ? padding[2] : top,\n left: !isNaN(padding[3]) ? padding[3] : right\n };\n};\nconst getScrollAncestor = node => {\n while (node) {\n node = node.parentNode;\n if (!node || node === document.body || !node.parentNode) return;\n const {\n overflow,\n overflowX,\n overflowY\n } = getComputedStyle(node);\n if (/auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX)) return node;\n }\n};\nfunction commonProps(isDisabled, isHovering) {\n return {\n 'aria-disabled': isDisabled || undefined,\n tabIndex: isHovering ? 0 : -1\n };\n}\nfunction indexOfNode(nodeList, node) {\n for (let i = 0; i < nodeList.length; i++) {\n if (nodeList[i] === node) return i;\n }\n return -1;\n}\n\nexport { batchedUpdates, commonProps, defineName, getName, getScrollAncestor, getTransition, indexOfNode, isMenuOpen, mergeProps, parsePadding, safeCall, values };\n","import { oneOfType, string, func, object, bool, number, oneOf, exact } from 'prop-types';\n\nconst stylePropTypes = name => ({\n [name ? `${name}ClassName` : 'className']: oneOfType([string, func])\n});\nconst menuPropTypes = {\n className: string,\n ...stylePropTypes('menu'),\n arrowProps: object,\n focusProps: object,\n menuStyle: object,\n arrow: bool,\n setDownOverflow: bool,\n gap: number,\n shift: number,\n align: /*#__PURE__*/oneOf(['start', 'center', 'end']),\n direction: /*#__PURE__*/oneOf(['left', 'right', 'top', 'bottom']),\n position: /*#__PURE__*/oneOf(['auto', 'anchor', 'initial']),\n overflow: /*#__PURE__*/oneOf(['auto', 'visible', 'hidden'])\n};\nconst rootMenuPropTypes = {\n ...menuPropTypes,\n containerProps: object,\n initialMounted: bool,\n unmountOnClose: bool,\n transition: /*#__PURE__*/oneOfType([bool, /*#__PURE__*/exact({\n open: bool,\n close: bool,\n item: bool\n })]),\n transitionTimeout: number,\n boundingBoxRef: object,\n boundingBoxPadding: string,\n reposition: /*#__PURE__*/oneOf(['auto', 'initial']),\n repositionFlag: /*#__PURE__*/oneOfType([string, number]),\n viewScroll: /*#__PURE__*/oneOf(['auto', 'close', 'initial']),\n submenuOpenDelay: number,\n submenuCloseDelay: number,\n portal: /*#__PURE__*/oneOfType([bool, /*#__PURE__*/exact({\n target: object,\n stablePosition: bool\n })]),\n theming: string,\n onItemClick: func\n};\nconst uncontrolledMenuPropTypes = {\n instanceRef: /*#__PURE__*/oneOfType([object, func]),\n onMenuChange: func\n};\n\nexport { menuPropTypes, rootMenuPropTypes, stylePropTypes, uncontrolledMenuPropTypes };\n","import { useMemo } from 'react';\n\nconst useBEM = ({\n block,\n element,\n modifiers,\n className\n}) => useMemo(() => {\n const blockElement = element ? `${block}__${element}` : block;\n let classString = blockElement;\n modifiers && Object.keys(modifiers).forEach(name => {\n const value = modifiers[name];\n if (value) classString += ` ${blockElement}--${value === true ? name : `${name}-${value}`}`;\n });\n let expandedClassName = typeof className === 'function' ? className(modifiers) : className;\n if (typeof expandedClassName === 'string') {\n expandedClassName = expandedClassName.trim();\n if (expandedClassName) classString += ` ${expandedClassName}`;\n }\n return classString;\n}, [block, element, modifiers, className]);\n\nexport { useBEM };\n","import { createContext } from 'react';\n\nconst menuContainerClass = 'szh-menu-container';\nconst menuClass = 'szh-menu';\nconst menuButtonClass = 'szh-menu-button';\nconst menuArrowClass = 'arrow';\nconst menuItemClass = 'item';\nconst menuDividerClass = 'divider';\nconst menuHeaderClass = 'header';\nconst menuGroupClass = 'group';\nconst subMenuClass = 'submenu';\nconst radioGroupClass = 'radio-group';\nconst HoverItemContext = /*#__PURE__*/createContext();\nconst MenuListItemContext = /*#__PURE__*/createContext({});\nconst MenuListContext = /*#__PURE__*/createContext({});\nconst EventHandlersContext = /*#__PURE__*/createContext({});\nconst RadioGroupContext = /*#__PURE__*/createContext({});\nconst SettingsContext = /*#__PURE__*/createContext({});\nconst Keys = /*#__PURE__*/Object.freeze({\n ENTER: 'Enter',\n ESC: 'Escape',\n SPACE: ' ',\n HOME: 'Home',\n END: 'End',\n LEFT: 'ArrowLeft',\n RIGHT: 'ArrowRight',\n UP: 'ArrowUp',\n DOWN: 'ArrowDown'\n});\nconst HoverActionTypes = /*#__PURE__*/Object.freeze({\n RESET: 0,\n SET: 1,\n UNSET: 2,\n INCREASE: 3,\n DECREASE: 4,\n FIRST: 5,\n LAST: 6,\n SET_INDEX: 7\n});\nconst CloseReason = /*#__PURE__*/Object.freeze({\n CLICK: 'click',\n CANCEL: 'cancel',\n BLUR: 'blur',\n SCROLL: 'scroll'\n});\nconst FocusPositions = /*#__PURE__*/Object.freeze({\n FIRST: 'first',\n LAST: 'last'\n});\nconst MenuStateMap = /*#__PURE__*/Object.freeze({\n entering: 'opening',\n entered: 'open',\n exiting: 'closing',\n exited: 'closed'\n});\nconst positionAbsolute = 'absolute';\nconst roleNone = 'presentation';\nconst roleMenuitem = 'menuitem';\nconst dummyItemProps = {\n 'aria-hidden': true,\n role: roleMenuitem\n};\n\nexport { CloseReason, EventHandlersContext, FocusPositions, HoverActionTypes, HoverItemContext, Keys, MenuListContext, MenuListItemContext, MenuStateMap, RadioGroupContext, SettingsContext, dummyItemProps, menuArrowClass, menuButtonClass, menuClass, menuContainerClass, menuDividerClass, menuGroupClass, menuHeaderClass, menuItemClass, positionAbsolute, radioGroupClass, roleMenuitem, roleNone, subMenuClass };\n","import { useMemo } from 'react';\nimport { jsx } from 'react/jsx-runtime';\nimport { mergeProps, getTransition, safeCall } from '../utils/utils.js';\nimport { useBEM } from '../hooks/useBEM.js';\nimport { menuContainerClass, Keys, CloseReason } from '../utils/constants.js';\n\nconst MenuContainer = ({\n className,\n containerRef,\n containerProps,\n children,\n isOpen,\n theming,\n transition,\n onClose\n}) => {\n const itemTransition = getTransition(transition, 'item');\n const onKeyDown = ({\n key\n }) => {\n switch (key) {\n case Keys.ESC:\n safeCall(onClose, {\n key,\n reason: CloseReason.CANCEL\n });\n break;\n }\n };\n const onBlur = e => {\n if (isOpen && !e.currentTarget.contains(e.relatedTarget)) {\n safeCall(onClose, {\n reason: CloseReason.BLUR\n });\n }\n };\n return /*#__PURE__*/jsx(\"div\", {\n ...mergeProps({\n onKeyDown,\n onBlur\n }, containerProps),\n className: useBEM({\n block: menuContainerClass,\n modifiers: useMemo(() => ({\n theme: theming,\n itemTransition\n }), [theming, itemTransition]),\n className\n }),\n style: {\n position: 'absolute',\n ...(containerProps == null ? void 0 : containerProps.style)\n },\n ref: containerRef,\n children: children\n });\n};\n\nexport { MenuContainer };\n","const createSubmenuCtx = () => {\n let timer,\n count = 0;\n return {\n toggle: isOpen => {\n isOpen ? count++ : count--;\n count = Math.max(count, 0);\n },\n on: (closeDelay, pending, settled) => {\n if (count) {\n if (!timer) timer = setTimeout(() => {\n timer = 0;\n pending();\n }, closeDelay);\n } else {\n settled == null || settled();\n }\n },\n off: () => {\n if (timer) {\n clearTimeout(timer);\n timer = 0;\n }\n }\n };\n};\n\nexport { createSubmenuCtx };\n","import { useState, useRef, useCallback } from 'react';\nimport { HoverActionTypes } from '../utils/constants.js';\nimport { indexOfNode } from '../utils/utils.js';\n\nconst useItems = (menuRef, focusRef) => {\n const [hoverItem, setHoverItem] = useState();\n const stateRef = useRef({\n items: [],\n hoverIndex: -1,\n sorted: false\n });\n const mutableState = stateRef.current;\n const updateItems = useCallback((item, isMounted) => {\n const {\n items\n } = mutableState;\n if (!item) {\n mutableState.items = [];\n } else if (isMounted) {\n items.push(item);\n } else {\n const index = items.indexOf(item);\n if (index > -1) {\n items.splice(index, 1);\n if (item.contains(document.activeElement)) {\n focusRef.current.focus();\n setHoverItem();\n }\n }\n }\n mutableState.hoverIndex = -1;\n mutableState.sorted = false;\n }, [mutableState, focusRef]);\n const dispatch = useCallback((actionType, item, nextIndex) => {\n const {\n items,\n hoverIndex\n } = mutableState;\n const sortItems = () => {\n if (mutableState.sorted) return;\n const orderedNodes = menuRef.current.querySelectorAll('.szh-menu__item');\n items.sort((a, b) => indexOfNode(orderedNodes, a) - indexOfNode(orderedNodes, b));\n mutableState.sorted = true;\n };\n let index = -1,\n newItem = undefined;\n switch (actionType) {\n case HoverActionTypes.RESET:\n break;\n case HoverActionTypes.SET:\n newItem = item;\n break;\n case HoverActionTypes.UNSET:\n newItem = prevItem => prevItem === item ? undefined : prevItem;\n break;\n case HoverActionTypes.FIRST:\n sortItems();\n index = 0;\n newItem = items[index];\n break;\n case HoverActionTypes.LAST:\n sortItems();\n index = items.length - 1;\n newItem = items[index];\n break;\n case HoverActionTypes.SET_INDEX:\n sortItems();\n index = nextIndex;\n newItem = items[index];\n break;\n case HoverActionTypes.INCREASE:\n sortItems();\n index = hoverIndex;\n if (index < 0) index = items.indexOf(item);\n index++;\n if (index >= items.length) index = 0;\n newItem = items[index];\n break;\n case HoverActionTypes.DECREASE:\n sortItems();\n index = hoverIndex;\n if (index < 0) index = items.indexOf(item);\n index--;\n if (index < 0) index = items.length - 1;\n newItem = items[index];\n break;\n default:\n if (process.env.NODE_ENV !== 'production') throw new Error(`[React-Menu] Unknown hover action type: ${actionType}`);\n }\n if (!newItem) index = -1;\n setHoverItem(newItem);\n mutableState.hoverIndex = index;\n }, [menuRef, mutableState]);\n return {\n hoverItem,\n dispatch,\n updateItems\n };\n};\n\nexport { useItems };\n","const getNativeDimension = (transformed, untransformed) => Math.round(transformed) === untransformed ? transformed : untransformed;\nconst getNormalizedClientRect = element => {\n const rect = element.getBoundingClientRect();\n rect.width = getNativeDimension(rect.width, element.offsetWidth);\n rect.height = getNativeDimension(rect.height, element.offsetHeight);\n return rect;\n};\n\nexport { getNormalizedClientRect };\n","import { getNormalizedClientRect } from './getNormalizedClientRect.js';\nimport { parsePadding } from '../utils/utils.js';\n\nconst getPositionHelpers = (containerRef, menuRef, menuScroll, boundingBoxPadding) => {\n const menuRect = getNormalizedClientRect(menuRef.current);\n const containerRect = containerRef.current.getBoundingClientRect();\n const boundingRect = menuScroll === window ? {\n left: 0,\n top: 0,\n right: document.documentElement.clientWidth,\n bottom: window.innerHeight\n } : menuScroll.getBoundingClientRect();\n const padding = parsePadding(boundingBoxPadding);\n const getLeftOverflow = x => x + containerRect.left - boundingRect.left - padding.left;\n const getRightOverflow = x => x + containerRect.left + menuRect.width - boundingRect.right + padding.right;\n const getTopOverflow = y => y + containerRect.top - boundingRect.top - padding.top;\n const getBottomOverflow = y => y + containerRect.top + menuRect.height - boundingRect.bottom + padding.bottom;\n const confineHorizontally = x => {\n let leftOverflow = getLeftOverflow(x);\n if (leftOverflow < 0) {\n x -= leftOverflow;\n } else {\n const rightOverflow = getRightOverflow(x);\n if (rightOverflow > 0) {\n x -= rightOverflow;\n leftOverflow = getLeftOverflow(x);\n if (leftOverflow < 0) x -= leftOverflow;\n }\n }\n return x;\n };\n const confineVertically = y => {\n let topOverflow = getTopOverflow(y);\n if (topOverflow < 0) {\n y -= topOverflow;\n } else {\n const bottomOverflow = getBottomOverflow(y);\n if (bottomOverflow > 0) {\n y -= bottomOverflow;\n topOverflow = getTopOverflow(y);\n if (topOverflow < 0) y -= topOverflow;\n }\n }\n return y;\n };\n return {\n menuRect,\n containerRect,\n getLeftOverflow,\n getRightOverflow,\n getTopOverflow,\n getBottomOverflow,\n confineHorizontally,\n confineVertically\n };\n};\n\nexport { getPositionHelpers };\n","const placeArrowVertical = ({\n arrowRef,\n menuY,\n anchorRect,\n containerRect,\n menuRect\n}) => {\n let y = anchorRect.top - containerRect.top - menuY + anchorRect.height / 2;\n const offset = arrowRef.current.offsetHeight * 1.25;\n y = Math.max(offset, y);\n y = Math.min(y, menuRect.height - offset);\n return y;\n};\n\nexport { placeArrowVertical };\n","import { placeArrowVertical } from './placeArrowVertical.js';\n\nconst placeLeftorRight = ({\n anchorRect,\n containerRect,\n menuRect,\n placeLeftorRightY,\n placeLeftX,\n placeRightX,\n getLeftOverflow,\n getRightOverflow,\n confineHorizontally,\n confineVertically,\n arrowRef,\n arrow,\n direction,\n position\n}) => {\n let computedDirection = direction;\n let y = placeLeftorRightY;\n if (position !== 'initial') {\n y = confineVertically(y);\n if (position === 'anchor') {\n y = Math.min(y, anchorRect.bottom - containerRect.top);\n y = Math.max(y, anchorRect.top - containerRect.top - menuRect.height);\n }\n }\n let x, leftOverflow, rightOverflow;\n if (computedDirection === 'left') {\n x = placeLeftX;\n if (position !== 'initial') {\n leftOverflow = getLeftOverflow(x);\n if (leftOverflow < 0) {\n rightOverflow = getRightOverflow(placeRightX);\n if (rightOverflow <= 0 || -leftOverflow > rightOverflow) {\n x = placeRightX;\n computedDirection = 'right';\n }\n }\n }\n } else {\n x = placeRightX;\n if (position !== 'initial') {\n rightOverflow = getRightOverflow(x);\n if (rightOverflow > 0) {\n leftOverflow = getLeftOverflow(placeLeftX);\n if (leftOverflow >= 0 || -leftOverflow < rightOverflow) {\n x = placeLeftX;\n computedDirection = 'left';\n }\n }\n }\n }\n if (position === 'auto') x = confineHorizontally(x);\n const arrowY = arrow ? placeArrowVertical({\n menuY: y,\n arrowRef,\n anchorRect,\n containerRect,\n menuRect\n }) : undefined;\n return {\n arrowY,\n x,\n y,\n computedDirection\n };\n};\n\nexport { placeLeftorRight };\n","const placeArrowHorizontal = ({\n arrowRef,\n menuX,\n anchorRect,\n containerRect,\n menuRect\n}) => {\n let x = anchorRect.left - containerRect.left - menuX + anchorRect.width / 2;\n const offset = arrowRef.current.offsetWidth * 1.25;\n x = Math.max(offset, x);\n x = Math.min(x, menuRect.width - offset);\n return x;\n};\n\nexport { placeArrowHorizontal };\n","import { placeArrowHorizontal } from './placeArrowHorizontal.js';\n\nconst placeToporBottom = ({\n anchorRect,\n containerRect,\n menuRect,\n placeToporBottomX,\n placeTopY,\n placeBottomY,\n getTopOverflow,\n getBottomOverflow,\n confineHorizontally,\n confineVertically,\n arrowRef,\n arrow,\n direction,\n position\n}) => {\n let computedDirection = direction === 'top' ? 'top' : 'bottom';\n let x = placeToporBottomX;\n if (position !== 'initial') {\n x = confineHorizontally(x);\n if (position === 'anchor') {\n x = Math.min(x, anchorRect.right - containerRect.left);\n x = Math.max(x, anchorRect.left - containerRect.left - menuRect.width);\n }\n }\n let y, topOverflow, bottomOverflow;\n if (computedDirection === 'top') {\n y = placeTopY;\n if (position !== 'initial') {\n topOverflow = getTopOverflow(y);\n if (topOverflow < 0) {\n bottomOverflow = getBottomOverflow(placeBottomY);\n if (bottomOverflow <= 0 || -topOverflow > bottomOverflow) {\n y = placeBottomY;\n computedDirection = 'bottom';\n }\n }\n }\n } else {\n y = placeBottomY;\n if (position !== 'initial') {\n bottomOverflow = getBottomOverflow(y);\n if (bottomOverflow > 0) {\n topOverflow = getTopOverflow(placeTopY);\n if (topOverflow >= 0 || -topOverflow < bottomOverflow) {\n y = placeTopY;\n computedDirection = 'top';\n }\n }\n }\n }\n if (position === 'auto') y = confineVertically(y);\n const arrowX = arrow ? placeArrowHorizontal({\n menuX: x,\n arrowRef,\n anchorRect,\n containerRect,\n menuRect\n }) : undefined;\n return {\n arrowX,\n x,\n y,\n computedDirection\n };\n};\n\nexport { placeToporBottom };\n","import { placeLeftorRight } from './placeLeftorRight.js';\nimport { placeToporBottom } from './placeToporBottom.js';\n\nconst positionMenu = ({\n arrow,\n align,\n direction,\n gap,\n shift,\n position,\n anchorRect,\n arrowRef,\n positionHelpers\n}) => {\n const {\n menuRect,\n containerRect\n } = positionHelpers;\n const isHorizontal = direction === 'left' || direction === 'right';\n let horizontalOffset = isHorizontal ? gap : shift;\n let verticalOffset = isHorizontal ? shift : gap;\n if (arrow) {\n const arrowElt = arrowRef.current;\n if (isHorizontal) {\n horizontalOffset += arrowElt.offsetWidth;\n } else {\n verticalOffset += arrowElt.offsetHeight;\n }\n }\n const placeLeftX = anchorRect.left - containerRect.left - menuRect.width - horizontalOffset;\n const placeRightX = anchorRect.right - containerRect.left + horizontalOffset;\n const placeTopY = anchorRect.top - containerRect.top - menuRect.height - verticalOffset;\n const placeBottomY = anchorRect.bottom - containerRect.top + verticalOffset;\n let placeToporBottomX, placeLeftorRightY;\n if (align === 'end') {\n placeToporBottomX = anchorRect.right - containerRect.left - menuRect.width;\n placeLeftorRightY = anchorRect.bottom - containerRect.top - menuRect.height;\n } else if (align === 'center') {\n placeToporBottomX = anchorRect.left - containerRect.left - (menuRect.width - anchorRect.width) / 2;\n placeLeftorRightY = anchorRect.top - containerRect.top - (menuRect.height - anchorRect.height) / 2;\n } else {\n placeToporBottomX = anchorRect.left - containerRect.left;\n placeLeftorRightY = anchorRect.top - containerRect.top;\n }\n placeToporBottomX += horizontalOffset;\n placeLeftorRightY += verticalOffset;\n const options = {\n ...positionHelpers,\n anchorRect,\n placeLeftX,\n placeRightX,\n placeLeftorRightY,\n placeTopY,\n placeBottomY,\n placeToporBottomX,\n arrowRef,\n arrow,\n direction,\n position\n };\n switch (direction) {\n case 'left':\n case 'right':\n return placeLeftorRight(options);\n case 'top':\n case 'bottom':\n default:\n return placeToporBottom(options);\n }\n};\n\nexport { positionMenu };\n","import { useLayoutEffect, useEffect } from 'react';\n\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect as useLayoutEffect };\n","import { useMemo } from 'react';\n\nfunction setRef(ref, instance) {\n typeof ref === 'function' ? ref(instance) : ref.current = instance;\n}\nconst useCombinedRef = (refA, refB) => useMemo(() => {\n if (!refA) return refB;\n if (!refB) return refA;\n return instance => {\n setRef(refA, instance);\n setRef(refB, instance);\n };\n}, [refA, refB]);\n\nexport { useCombinedRef };\n","import { useState, useReducer, useContext, useRef, useCallback, useEffect, useMemo } from 'react';\nimport { flushSync } from 'react-dom';\nimport { MenuContainer } from './MenuContainer.js';\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport { createSubmenuCtx } from '../utils/submenuCtx.js';\nimport { SettingsContext, MenuListContext, HoverActionTypes, menuClass, menuArrowClass, positionAbsolute, dummyItemProps, MenuListItemContext, HoverItemContext, Keys, CloseReason, FocusPositions } from '../utils/constants.js';\nimport { useItems } from '../hooks/useItems.js';\nimport { getScrollAncestor, commonProps, mergeProps, safeCall, isMenuOpen, getTransition, batchedUpdates } from '../utils/utils.js';\nimport { getPositionHelpers } from '../positionUtils/getPositionHelpers.js';\nimport { positionMenu } from '../positionUtils/positionMenu.js';\nimport { useLayoutEffect as useIsomorphicLayoutEffect } from '../hooks/useIsomorphicLayoutEffect.js';\nimport { useBEM } from '../hooks/useBEM.js';\nimport { useCombinedRef } from '../hooks/useCombinedRef.js';\n\nconst offScreen = -9999;\nconst MenuList = ({\n ariaLabel,\n menuClassName,\n menuStyle,\n arrow,\n arrowProps = {},\n anchorPoint,\n anchorRef,\n containerRef,\n containerProps,\n focusProps,\n externalRef,\n parentScrollingRef,\n align = 'start',\n direction = 'bottom',\n position = 'auto',\n overflow = 'visible',\n setDownOverflow,\n repositionFlag,\n captureFocus = true,\n state,\n endTransition,\n isDisabled,\n menuItemFocus,\n gap = 0,\n shift = 0,\n children,\n onClose,\n ...restProps\n}) => {\n const [menuPosition, setMenuPosition] = useState({\n x: offScreen,\n y: offScreen\n });\n const [arrowPosition, setArrowPosition] = useState({});\n const [overflowData, setOverflowData] = useState();\n const [expandedDirection, setExpandedDirection] = useState(direction);\n const [submenuCtx] = useState(createSubmenuCtx);\n const [reposSubmenu, forceReposSubmenu] = useReducer(c => c + 1, 1);\n const {\n transition,\n boundingBoxRef,\n boundingBoxPadding,\n rootMenuRef,\n rootAnchorRef,\n scrollNodesRef,\n reposition,\n viewScroll,\n submenuCloseDelay\n } = useContext(SettingsContext);\n const {\n submenuCtx: parentSubmenuCtx,\n reposSubmenu: reposFlag = repositionFlag\n } = useContext(MenuListContext);\n const menuRef = useRef(null);\n const focusRef = useRef();\n const arrowRef = useRef();\n const prevOpen = useRef(false);\n const {\n hoverItem,\n dispatch,\n updateItems\n } = useItems(menuRef, focusRef);\n const isOpen = isMenuOpen(state);\n const openTransition = getTransition(transition, 'open');\n const closeTransition = getTransition(transition, 'close');\n const scrollNodes = scrollNodesRef.current;\n const onKeyDown = e => {\n switch (e.key) {\n case Keys.HOME:\n dispatch(HoverActionTypes.FIRST);\n break;\n case Keys.END:\n dispatch(HoverActionTypes.LAST);\n break;\n case Keys.UP:\n dispatch(HoverActionTypes.DECREASE, hoverItem);\n break;\n case Keys.DOWN:\n dispatch(HoverActionTypes.INCREASE, hoverItem);\n break;\n case Keys.SPACE:\n if (e.target && e.target.className.indexOf(menuClass) !== -1) {\n e.preventDefault();\n }\n return;\n default:\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n };\n const onAnimationEnd = () => {\n if (state === 'closing') {\n setOverflowData();\n }\n safeCall(endTransition);\n };\n const onPointerMove = e => {\n e.stopPropagation();\n submenuCtx.on(submenuCloseDelay, () => {\n dispatch(HoverActionTypes.RESET);\n focusRef.current.focus();\n });\n };\n const onPointerLeave = e => {\n if (e.target === e.currentTarget) submenuCtx.off();\n };\n const handlePosition = useCallback(noOverflowCheck => {\n var _anchorRef$current;\n const anchorRect = anchorRef ? (_anchorRef$current = anchorRef.current) == null ? void 0 : _anchorRef$current.getBoundingClientRect() : anchorPoint ? {\n left: anchorPoint.x,\n right: anchorPoint.x,\n top: anchorPoint.y,\n bottom: anchorPoint.y,\n width: 0,\n height: 0\n } : null;\n if (!anchorRect) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('[React-Menu] Menu might not be positioned properly as one of the anchorRef or anchorPoint prop should be provided. If `anchorRef` is provided, the anchor must be mounted before menu is open.');\n }\n return;\n }\n if (!scrollNodes.menu) {\n scrollNodes.menu = (boundingBoxRef ? boundingBoxRef.current : getScrollAncestor(rootMenuRef.current)) || window;\n }\n const positionHelpers = getPositionHelpers(containerRef, menuRef, scrollNodes.menu, boundingBoxPadding);\n let {\n arrowX,\n arrowY,\n x,\n y,\n computedDirection\n } = positionMenu({\n arrow,\n align,\n direction,\n gap,\n shift,\n position,\n anchorRect,\n arrowRef,\n positionHelpers\n });\n const {\n menuRect\n } = positionHelpers;\n const menuHeight = menuRect.height;\n if (!noOverflowCheck && overflow !== 'visible') {\n const {\n getTopOverflow,\n getBottomOverflow\n } = positionHelpers;\n let height, overflowAmt;\n const bottomOverflow = getBottomOverflow(y);\n if (bottomOverflow > 0) {\n height = menuHeight - bottomOverflow;\n overflowAmt = bottomOverflow;\n } else {\n const topOverflow = getTopOverflow(y);\n if (topOverflow < 0) {\n height = menuHeight + topOverflow;\n overflowAmt = 0 - topOverflow;\n if (height >= 0) y -= topOverflow;\n }\n }\n if (height >= 0) {\n setOverflowData({\n height,\n overflowAmt\n });\n }\n }\n if (arrow) setArrowPosition({\n x: arrowX,\n y: arrowY\n });\n setMenuPosition({\n x,\n y\n });\n setExpandedDirection(computedDirection);\n }, [arrow, align, boundingBoxPadding, direction, gap, shift, position, overflow, anchorPoint, anchorRef, containerRef, boundingBoxRef, rootMenuRef, scrollNodes]);\n useIsomorphicLayoutEffect(() => {\n if (isOpen) {\n handlePosition();\n if (prevOpen.current) forceReposSubmenu();\n }\n prevOpen.current = isOpen;\n }, [isOpen, handlePosition, reposFlag]);\n useIsomorphicLayoutEffect(() => {\n if (overflowData && !setDownOverflow) menuRef.current.scrollTop = 0;\n }, [overflowData, setDownOverflow]);\n useIsomorphicLayoutEffect(() => updateItems, [updateItems]);\n useEffect(() => {\n let {\n menu: menuScroll\n } = scrollNodes;\n if (!isOpen || !menuScroll) return;\n menuScroll = menuScroll.addEventListener ? menuScroll : window;\n if (!scrollNodes.anchors) {\n scrollNodes.anchors = [];\n let anchorScroll = getScrollAncestor(rootAnchorRef && rootAnchorRef.current);\n while (anchorScroll && anchorScroll !== menuScroll) {\n scrollNodes.anchors.push(anchorScroll);\n anchorScroll = getScrollAncestor(anchorScroll);\n }\n }\n let scroll = viewScroll;\n if (scrollNodes.anchors.length && scroll === 'initial') scroll = 'auto';\n if (scroll === 'initial') return;\n const handleScroll = () => {\n if (scroll === 'auto') {\n batchedUpdates(() => handlePosition(true));\n } else {\n safeCall(onClose, {\n reason: CloseReason.SCROLL\n });\n }\n };\n const scrollObservers = scrollNodes.anchors.concat(viewScroll !== 'initial' ? menuScroll : []);\n scrollObservers.forEach(o => o.addEventListener('scroll', handleScroll));\n return () => scrollObservers.forEach(o => o.removeEventListener('scroll', handleScroll));\n }, [rootAnchorRef, scrollNodes, isOpen, onClose, viewScroll, handlePosition]);\n const hasOverflow = !!overflowData && overflowData.overflowAmt > 0;\n useEffect(() => {\n if (hasOverflow || !isOpen || !parentScrollingRef) return;\n const handleScroll = () => batchedUpdates(handlePosition);\n const parentScroll = parentScrollingRef.current;\n parentScroll.addEventListener('scroll', handleScroll);\n return () => parentScroll.removeEventListener('scroll', handleScroll);\n }, [isOpen, hasOverflow, parentScrollingRef, handlePosition]);\n useEffect(() => {\n if (!isOpen || typeof ResizeObserver !== 'function' || reposition === 'initial') return;\n const targetList = [];\n const resizeObserver = new ResizeObserver(entries => entries.forEach(({\n target\n }) => {\n if (targetList.indexOf(target) < 0) {\n targetList.push(target);\n } else {\n flushSync(() => {\n handlePosition();\n forceReposSubmenu();\n });\n }\n }));\n const resizeObserverOptions = {\n box: 'border-box'\n };\n resizeObserver.observe(menuRef.current, resizeObserverOptions);\n const anchor = anchorRef == null ? void 0 : anchorRef.current;\n anchor && resizeObserver.observe(anchor, resizeObserverOptions);\n return () => resizeObserver.disconnect();\n }, [isOpen, reposition, anchorRef, handlePosition]);\n useEffect(() => {\n if (!isOpen) {\n dispatch(HoverActionTypes.RESET);\n if (!closeTransition) setOverflowData();\n return;\n }\n const {\n position,\n alwaysUpdate\n } = menuItemFocus || {};\n const setItemFocus = () => {\n if (position === FocusPositions.FIRST) {\n dispatch(HoverActionTypes.FIRST);\n } else if (position === FocusPositions.LAST) {\n dispatch(HoverActionTypes.LAST);\n } else if (position >= -1) {\n dispatch(HoverActionTypes.SET_INDEX, undefined, position);\n }\n };\n if (alwaysUpdate) {\n setItemFocus();\n } else if (captureFocus) {\n const id = setTimeout(() => {\n const menuElt = menuRef.current;\n if (menuElt && !menuElt.contains(document.activeElement)) {\n focusRef.current.focus();\n setItemFocus();\n }\n }, openTransition ? 170 : 100);\n return () => clearTimeout(id);\n }\n }, [isOpen, openTransition, closeTransition, captureFocus, menuItemFocus, dispatch]);\n const itemContext = useMemo(() => ({\n isParentOpen: isOpen,\n submenuCtx,\n dispatch,\n updateItems\n }), [isOpen, submenuCtx, dispatch, updateItems]);\n let maxHeight, overflowAmt;\n if (overflowData) {\n setDownOverflow ? overflowAmt = overflowData.overflowAmt : maxHeight = overflowData.height;\n }\n const listContext = useMemo(() => ({\n reposSubmenu,\n submenuCtx,\n overflow,\n overflowAmt,\n parentMenuRef: menuRef,\n parentDir: expandedDirection\n }), [reposSubmenu, submenuCtx, overflow, overflowAmt, expandedDirection]);\n const overflowStyle = maxHeight >= 0 ? {\n maxHeight,\n overflow\n } : undefined;\n const modifiers = useMemo(() => ({\n state,\n align,\n dir: expandedDirection\n }), [state, align, expandedDirection]);\n const arrowModifiers = useMemo(() => ({\n dir: expandedDirection\n }), [expandedDirection]);\n const _arrowClassName = useBEM({\n block: menuClass,\n element: menuArrowClass,\n modifiers: arrowModifiers,\n className: arrowProps.className\n });\n const menu = /*#__PURE__*/jsxs(\"ul\", {\n role: \"menu\",\n \"aria-label\": ariaLabel,\n ...commonProps(isDisabled),\n ...mergeProps({\n onPointerEnter: parentSubmenuCtx == null ? void 0 : parentSubmenuCtx.off,\n onPointerMove,\n onPointerLeave,\n onKeyDown,\n onAnimationEnd\n }, restProps),\n ref: useCombinedRef(externalRef, menuRef),\n className: useBEM({\n block: menuClass,\n modifiers,\n className: menuClassName\n }),\n style: {\n ...menuStyle,\n ...overflowStyle,\n margin: 0,\n display: state === 'closed' ? 'none' : undefined,\n position: positionAbsolute,\n left: menuPosition.x,\n top: menuPosition.y\n },\n children: [/*#__PURE__*/jsx(\"li\", {\n tabIndex: -1,\n style: {\n position: positionAbsolute,\n left: 0,\n top: 0,\n display: 'block',\n outline: 'none'\n },\n ref: focusRef,\n ...dummyItemProps,\n ...focusProps\n }), arrow && /*#__PURE__*/jsx(\"li\", {\n ...dummyItemProps,\n ...arrowProps,\n className: _arrowClassName,\n style: {\n display: 'block',\n position: positionAbsolute,\n left: arrowPosition.x,\n top: arrowPosition.y,\n ...arrowProps.style\n },\n ref: arrowRef\n }), /*#__PURE__*/jsx(MenuListContext.Provider, {\n value: listContext,\n children: /*#__PURE__*/jsx(MenuListItemContext.Provider, {\n value: itemContext,\n children: /*#__PURE__*/jsx(HoverItemContext.Provider, {\n value: hoverItem,\n children: safeCall(children, modifiers)\n })\n })\n })]\n });\n return containerProps ? /*#__PURE__*/jsx(MenuContainer, {\n ...containerProps,\n isOpen: isOpen,\n children: menu\n }) : menu;\n};\n\nexport { MenuList };\n","import { forwardRef, useRef, useMemo } from 'react';\nimport { createPortal } from 'react-dom';\nimport { oneOf, exact, number, object, bool, oneOfType, string, func } from 'prop-types';\nimport { MenuList } from './MenuList.js';\nimport { jsx } from 'react/jsx-runtime';\nimport { rootMenuPropTypes } from '../utils/propTypes.js';\nimport { safeCall, values } from '../utils/utils.js';\nimport { MenuStateMap, Keys, CloseReason, SettingsContext, EventHandlersContext } from '../utils/constants.js';\n\nconst ControlledMenu = /*#__PURE__*/forwardRef(function ControlledMenu({\n 'aria-label': ariaLabel,\n className,\n containerProps,\n initialMounted,\n unmountOnClose,\n transition,\n transitionTimeout,\n boundingBoxRef,\n boundingBoxPadding,\n reposition = 'auto',\n submenuOpenDelay = 300,\n submenuCloseDelay = 150,\n viewScroll = 'initial',\n portal,\n theming,\n onItemClick,\n ...restProps\n}, externalRef) {\n const containerRef = useRef(null);\n const scrollNodesRef = useRef({});\n const {\n anchorRef,\n state,\n onClose\n } = restProps;\n const settings = useMemo(() => ({\n initialMounted,\n unmountOnClose,\n transition,\n transitionTimeout,\n boundingBoxRef,\n boundingBoxPadding,\n rootMenuRef: containerRef,\n rootAnchorRef: anchorRef,\n scrollNodesRef,\n reposition,\n viewScroll,\n submenuOpenDelay,\n submenuCloseDelay\n }), [initialMounted, unmountOnClose, transition, transitionTimeout, anchorRef, boundingBoxRef, boundingBoxPadding, reposition, viewScroll, submenuOpenDelay, submenuCloseDelay]);\n const eventHandlers = useMemo(() => ({\n handleClick(event, isCheckorRadio) {\n if (!event.stopPropagation) safeCall(onItemClick, event);\n let keepOpen = event.keepOpen;\n if (keepOpen === undefined) {\n keepOpen = isCheckorRadio && event.key === Keys.SPACE;\n }\n if (!keepOpen) {\n safeCall(onClose, {\n value: event.value,\n key: event.key,\n reason: CloseReason.CLICK\n });\n }\n },\n handleClose(key) {\n safeCall(onClose, {\n key,\n reason: CloseReason.CLICK\n });\n }\n }), [onItemClick, onClose]);\n if (!state) return null;\n const menuList = /*#__PURE__*/jsx(SettingsContext.Provider, {\n value: settings,\n children: /*#__PURE__*/jsx(EventHandlersContext.Provider, {\n value: eventHandlers,\n children: /*#__PURE__*/jsx(MenuList, {\n ...restProps,\n ariaLabel: ariaLabel || 'Menu',\n externalRef: externalRef,\n containerRef: containerRef,\n containerProps: {\n className,\n containerRef,\n containerProps,\n theming,\n transition,\n onClose\n }\n })\n })\n });\n if (portal === true && typeof document !== 'undefined') {\n return /*#__PURE__*/createPortal(menuList, document.body);\n } else if (portal) {\n return portal.target ? /*#__PURE__*/createPortal(menuList, portal.target) : portal.stablePosition ? null : menuList;\n }\n return menuList;\n});\nprocess.env.NODE_ENV !== \"production\" ? ControlledMenu.propTypes = {\n ...rootMenuPropTypes,\n state: /*#__PURE__*/oneOf( /*#__PURE__*/values(MenuStateMap)),\n anchorPoint: /*#__PURE__*/exact({\n x: number,\n y: number\n }),\n anchorRef: object,\n captureFocus: bool,\n menuItemFocus: /*#__PURE__*/exact({\n position: /*#__PURE__*/oneOfType([string, number]),\n alwaysUpdate: bool\n }),\n onClose: func\n} : void 0;\n\nexport { ControlledMenu };\n","const PRE_ENTER = 0;\nconst ENTERING = 1;\nconst ENTERED = 2;\nconst PRE_EXIT = 3;\nconst EXITING = 4;\nconst EXITED = 5;\nconst UNMOUNTED = 6;\nconst STATUS = ['preEnter', 'entering', 'entered', 'preExit', 'exiting', 'exited', 'unmounted'];\nconst getState = status => ({\n _s: status,\n status: STATUS[status],\n isEnter: status < PRE_EXIT,\n isMounted: status !== UNMOUNTED,\n isResolved: status === ENTERED || status > EXITING\n});\nconst startOrEnd = unmounted => unmounted ? UNMOUNTED : EXITED;\nconst getEndStatus = (status, unmountOnExit) => {\n switch (status) {\n case ENTERING:\n case PRE_ENTER:\n return ENTERED;\n case EXITING:\n case PRE_EXIT:\n return startOrEnd(unmountOnExit);\n }\n};\nconst getTimeout = timeout => typeof timeout === 'object' ? [timeout.enter, timeout.exit] : [timeout, timeout];\n\nexport { ENTERED, ENTERING, EXITED, EXITING, PRE_ENTER, PRE_EXIT, STATUS, UNMOUNTED, getEndStatus, getState, getTimeout, startOrEnd };\n","import { useState, useRef, useCallback, useEffect } from 'react';\nimport { getState, ENTERED, startOrEnd, getTimeout, getEndStatus, PRE_ENTER, ENTERING, PRE_EXIT, EXITING } from './utils.js';\n\nconst updateState = (status, setState, latestState, timeoutId, onChange) => {\n clearTimeout(timeoutId.current);\n const state = getState(status);\n setState(state);\n latestState.current = state;\n onChange && onChange({\n current: state\n });\n};\nconst useTransition = ({\n enter = true,\n exit = true,\n preEnter,\n preExit,\n timeout,\n initialEntered,\n mountOnEnter,\n unmountOnExit,\n onStateChange: onChange\n} = {}) => {\n const [state, setState] = useState(() => getState(initialEntered ? ENTERED : startOrEnd(mountOnEnter)));\n const latestState = useRef(state);\n const timeoutId = useRef();\n const [enterTimeout, exitTimeout] = getTimeout(timeout);\n const endTransition = useCallback(() => {\n const status = getEndStatus(latestState.current._s, unmountOnExit);\n status && updateState(status, setState, latestState, timeoutId, onChange);\n }, [onChange, unmountOnExit]);\n const toggle = useCallback(toEnter => {\n const transitState = status => {\n updateState(status, setState, latestState, timeoutId, onChange);\n switch (status) {\n case ENTERING:\n if (enterTimeout >= 0) timeoutId.current = setTimeout(endTransition, enterTimeout);\n break;\n case EXITING:\n if (exitTimeout >= 0) timeoutId.current = setTimeout(endTransition, exitTimeout);\n break;\n case PRE_ENTER:\n case PRE_EXIT:\n timeoutId.current = setTimeout(() => transitState(status + 1), 0);\n break;\n }\n };\n const enterStage = latestState.current.isEnter;\n if (typeof toEnter !== 'boolean') toEnter = !enterStage;\n if (toEnter) {\n !enterStage && transitState(enter ? preEnter ? PRE_ENTER : ENTERING : ENTERED);\n } else {\n enterStage && transitState(exit ? preExit ? PRE_EXIT : EXITING : startOrEnd(unmountOnExit));\n }\n }, [endTransition, onChange, enter, exit, preEnter, preExit, enterTimeout, exitTimeout, unmountOnExit]);\n useEffect(() => () => clearTimeout(timeoutId.current), []);\n return [state, toggle, endTransition];\n};\n\nexport { useTransition };\n","import { useTransition } from 'react-transition-state';\nimport { getTransition } from '../utils/utils.js';\nimport { MenuStateMap } from '../utils/constants.js';\n\nconst useMenuState = ({\n initialOpen,\n initialMounted,\n unmountOnClose,\n transition,\n transitionTimeout = 500\n} = {}) => {\n const [{\n status\n }, toggleMenu, endTransition] = useTransition({\n initialEntered: initialOpen,\n mountOnEnter: !initialMounted,\n unmountOnExit: unmountOnClose,\n timeout: transitionTimeout,\n enter: getTransition(transition, 'open'),\n exit: getTransition(transition, 'close')\n });\n return [{\n state: MenuStateMap[status],\n endTransition\n }, toggleMenu];\n};\n\nexport { useMenuState };\n","import { useState } from 'react';\nimport { useMenuState } from './useMenuState.js';\n\nconst useMenuStateAndFocus = options => {\n const [menuProps, toggleMenu] = useMenuState(options);\n const [menuItemFocus, setMenuItemFocus] = useState();\n const openMenu = (position, alwaysUpdate) => {\n setMenuItemFocus({\n position,\n alwaysUpdate\n });\n toggleMenu(true);\n };\n return [{\n menuItemFocus,\n ...menuProps\n }, toggleMenu, openMenu];\n};\n\nexport { useMenuStateAndFocus };\n","import { useState } from 'react';\n\nconst useClick = (state, onToggle) => {\n if (process.env.NODE_ENV !== 'production' && typeof onToggle !== 'function') {\n throw new Error('[React-Menu] useClick/useHover requires a function in the second parameter.');\n }\n const [skipOpen] = useState({});\n return {\n onMouseDown: () => {\n skipOpen.v = state && state !== 'closed';\n },\n onClick: e => skipOpen.v ? skipOpen.v = false : onToggle(true, e)\n };\n};\n\nexport { useClick };\n","import { useRef, useEffect } from 'react';\nimport { safeCall } from '../utils/utils.js';\n\nconst useMenuChange = (onMenuChange, isOpen) => {\n const prevOpen = useRef(isOpen);\n useEffect(() => {\n if (prevOpen.current !== isOpen) safeCall(onMenuChange, {\n open: isOpen\n });\n prevOpen.current = isOpen;\n }, [onMenuChange, isOpen]);\n};\n\nexport { useMenuChange };\n","import { forwardRef, useRef, useCallback, useImperativeHandle, Fragment, cloneElement } from 'react';\nimport { oneOfType, element, func } from 'prop-types';\nimport { ControlledMenu } from './ControlledMenu.js';\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport { useMenuStateAndFocus } from '../hooks/useMenuStateAndFocus.js';\nimport { useClick } from '../hooks/useClick.js';\nimport { useCombinedRef } from '../hooks/useCombinedRef.js';\nimport { safeCall, mergeProps, getName, isMenuOpen } from '../utils/utils.js';\nimport { useMenuChange } from '../hooks/useMenuChange.js';\nimport { rootMenuPropTypes, uncontrolledMenuPropTypes } from '../utils/propTypes.js';\nimport { FocusPositions, Keys } from '../utils/constants.js';\n\nconst Menu = /*#__PURE__*/forwardRef(function Menu({\n 'aria-label': ariaLabel,\n captureFocus: _,\n initialOpen: _1,\n menuButton,\n instanceRef,\n onMenuChange,\n ...restProps\n}, externalRef) {\n const [stateProps, toggleMenu, openMenu] = useMenuStateAndFocus(restProps);\n const {\n state\n } = stateProps;\n const isOpen = isMenuOpen(state);\n const buttonRef = useRef(null);\n const anchorProps = useClick(state, (_, e) => openMenu(!e.detail ? FocusPositions.FIRST : undefined));\n const handleClose = useCallback(e => {\n toggleMenu(false);\n if (e.key) buttonRef.current.focus();\n }, [toggleMenu]);\n const onKeyDown = e => {\n switch (e.key) {\n case Keys.UP:\n openMenu(FocusPositions.LAST);\n break;\n case Keys.DOWN:\n openMenu(FocusPositions.FIRST);\n break;\n default:\n return;\n }\n e.preventDefault();\n };\n const button = safeCall(menuButton, {\n open: isOpen\n });\n if (!button || !button.type) throw new Error('Menu requires a menuButton prop.');\n const buttonProps = {\n ref: useCombinedRef(button.ref, buttonRef),\n ...mergeProps({\n onKeyDown,\n ...anchorProps\n }, button.props)\n };\n if (getName(button.type) === 'MenuButton') {\n buttonProps.isOpen = isOpen;\n }\n const renderButton = /*#__PURE__*/cloneElement(button, buttonProps);\n useMenuChange(onMenuChange, isOpen);\n useImperativeHandle(instanceRef, () => ({\n openMenu,\n closeMenu: () => toggleMenu(false)\n }));\n return /*#__PURE__*/jsxs(Fragment, {\n children: [renderButton, /*#__PURE__*/jsx(ControlledMenu, {\n ...restProps,\n ...stateProps,\n \"aria-label\": ariaLabel || (typeof button.props.children === 'string' ? button.props.children : 'Menu'),\n anchorRef: buttonRef,\n ref: externalRef,\n onClose: handleClose\n })]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Menu.propTypes = {\n ...rootMenuPropTypes,\n ...uncontrolledMenuPropTypes,\n menuButton: oneOfType([element, func]).isRequired\n} : void 0;\n\nexport { Menu };\n","import { forwardRef, useRef, useContext, memo } from 'react';\nimport { HoverItemContext } from './constants.js';\nimport { jsx } from 'react/jsx-runtime';\n\nconst withHovering = (name, WrappedComponent) => {\n const Component = /*#__PURE__*/memo(WrappedComponent);\n const WithHovering = /*#__PURE__*/forwardRef((props, ref) => {\n const itemRef = useRef(null);\n return /*#__PURE__*/jsx(Component, {\n ...props,\n itemRef: itemRef,\n externalRef: ref,\n isHovering: useContext(HoverItemContext) === itemRef.current\n });\n });\n WithHovering.displayName = `WithHovering(${name})`;\n return WithHovering;\n};\n\nexport { withHovering };\n","import { useLayoutEffect as useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js';\n\nconst useItemEffect = (isDisabled, itemRef, updateItems) => {\n useIsomorphicLayoutEffect(() => {\n if (process.env.NODE_ENV !== 'production' && !updateItems) {\n throw new Error(`[React-Menu] This menu item or submenu should be rendered under a menu: ${itemRef.current.outerHTML}`);\n }\n if (isDisabled) return;\n const item = itemRef.current;\n updateItems(item, true);\n return () => {\n updateItems(item);\n };\n }, [isDisabled, itemRef, updateItems]);\n};\n\nexport { useItemEffect };\n","import { useContext, useRef, useState, useEffect, useImperativeHandle, useMemo } from 'react';\nimport { createPortal } from 'react-dom';\nimport { bool, oneOf, oneOfType, node, func, shape } from 'prop-types';\nimport { MenuList } from './MenuList.js';\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport { withHovering } from '../utils/withHovering.js';\nimport { menuPropTypes, uncontrolledMenuPropTypes, stylePropTypes } from '../utils/propTypes.js';\nimport { useMenuStateAndFocus } from '../hooks/useMenuStateAndFocus.js';\nimport { useItemEffect } from '../hooks/useItemEffect.js';\nimport { useMenuChange } from '../hooks/useMenuChange.js';\nimport { useBEM } from '../hooks/useBEM.js';\nimport { SettingsContext, MenuListContext, MenuListItemContext, menuClass, subMenuClass, roleNone, roleMenuitem, menuItemClass, HoverActionTypes, Keys, FocusPositions } from '../utils/constants.js';\nimport { useCombinedRef } from '../hooks/useCombinedRef.js';\nimport { mergeProps, commonProps, safeCall, isMenuOpen, batchedUpdates } from '../utils/utils.js';\n\nconst SubMenu = /*#__PURE__*/withHovering('SubMenu', function SubMenu({\n 'aria-label': ariaLabel,\n className,\n disabled,\n direction,\n label,\n openTrigger,\n onMenuChange,\n isHovering,\n instanceRef,\n itemRef,\n captureFocus: _1,\n repositionFlag: _2,\n itemProps = {},\n ...restProps\n}) {\n const settings = useContext(SettingsContext);\n const {\n rootMenuRef,\n submenuOpenDelay,\n submenuCloseDelay\n } = settings;\n const {\n parentMenuRef,\n parentDir,\n overflow: parentOverflow\n } = useContext(MenuListContext);\n const {\n isParentOpen,\n submenuCtx,\n dispatch,\n updateItems\n } = useContext(MenuListItemContext);\n const isPortal = parentOverflow !== 'visible';\n const [stateProps, toggleMenu, _openMenu] = useMenuStateAndFocus(settings);\n const {\n state\n } = stateProps;\n const isDisabled = !!disabled;\n const isOpen = isMenuOpen(state);\n const containerRef = useRef(null);\n const [timerId] = useState({\n v: 0\n });\n const stopTimer = () => {\n submenuCtx.off();\n if (timerId.v) {\n clearTimeout(timerId.v);\n timerId.v = 0;\n }\n };\n const openMenu = (...args) => {\n stopTimer();\n setHover();\n !isDisabled && _openMenu(...args);\n };\n const setHover = () => !isHovering && !isDisabled && dispatch(HoverActionTypes.SET, itemRef.current);\n const delayOpen = delay => {\n setHover();\n if (!openTrigger) timerId.v = setTimeout(() => batchedUpdates(openMenu), Math.max(delay, 0));\n };\n const onPointerMove = e => {\n if (isDisabled) return;\n e.stopPropagation();\n if (timerId.v || isOpen) return;\n submenuCtx.on(submenuCloseDelay, () => delayOpen(submenuOpenDelay - submenuCloseDelay), () => delayOpen(submenuOpenDelay));\n };\n const onPointerLeave = () => {\n stopTimer();\n if (!isOpen) dispatch(HoverActionTypes.UNSET, itemRef.current);\n };\n const onKeyDown = e => {\n if (!isHovering) return;\n switch (e.key) {\n case Keys.ENTER:\n e.preventDefault();\n case Keys.SPACE:\n case Keys.RIGHT:\n openTrigger !== 'none' && openMenu(FocusPositions.FIRST);\n }\n };\n const onKeyDownOfRoot = e => {\n let handled = false;\n switch (e.key) {\n case Keys.LEFT:\n if (isOpen) {\n itemRef.current.focus();\n toggleMenu(false);\n handled = true;\n }\n break;\n case Keys.RIGHT:\n if (!isOpen) handled = true;\n break;\n }\n if (handled) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n useItemEffect(isDisabled, itemRef, updateItems);\n useMenuChange(onMenuChange, isOpen);\n useEffect(() => submenuCtx.toggle(isOpen), [submenuCtx, isOpen]);\n useEffect(() => () => clearTimeout(timerId.v), [timerId]);\n useEffect(() => {\n if (isHovering && isParentOpen) {\n itemRef.current.focus();\n } else {\n toggleMenu(false);\n }\n }, [isHovering, isParentOpen, toggleMenu, itemRef]);\n useImperativeHandle(instanceRef, () => ({\n openMenu: (...args) => {\n isParentOpen && openMenu(...args);\n },\n closeMenu: () => {\n if (isOpen) {\n itemRef.current.focus();\n toggleMenu(false);\n }\n }\n }));\n const modifiers = useMemo(() => ({\n open: isOpen,\n hover: isHovering,\n disabled: isDisabled,\n submenu: true\n }), [isOpen, isHovering, isDisabled]);\n const {\n ref: externalItemRef,\n className: itemClassName,\n ...restItemProps\n } = itemProps;\n const mergedItemProps = mergeProps({\n onPointerEnter: submenuCtx.off,\n onPointerMove,\n onPointerLeave,\n onKeyDown,\n onClick: () => openTrigger !== 'none' && openMenu()\n }, restItemProps);\n const getMenuList = () => {\n const menuList = /*#__PURE__*/jsx(MenuList, {\n ...restProps,\n ...stateProps,\n ariaLabel: ariaLabel || (typeof label === 'string' ? label : 'Submenu'),\n anchorRef: itemRef,\n containerRef: isPortal ? rootMenuRef : containerRef,\n direction: direction || (parentDir === 'right' || parentDir === 'left' ? parentDir : 'right'),\n parentScrollingRef: isPortal && parentMenuRef,\n isDisabled: isDisabled\n });\n const container = rootMenuRef.current;\n return isPortal && container ? /*#__PURE__*/createPortal(menuList, container) : menuList;\n };\n return /*#__PURE__*/jsxs(\"li\", {\n className: useBEM({\n block: menuClass,\n element: subMenuClass,\n className\n }),\n style: {\n position: 'relative'\n },\n role: roleNone,\n ref: containerRef,\n onKeyDown: onKeyDownOfRoot,\n children: [/*#__PURE__*/jsx(\"div\", {\n role: roleMenuitem,\n \"aria-haspopup\": true,\n \"aria-expanded\": isOpen,\n ...commonProps(isDisabled, isHovering),\n ...mergedItemProps,\n ref: useCombinedRef(externalItemRef, itemRef),\n className: useBEM({\n block: menuClass,\n element: menuItemClass,\n modifiers,\n className: itemClassName\n }),\n children: useMemo(() => safeCall(label, modifiers), [label, modifiers])\n }), state && getMenuList()]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? SubMenu.propTypes = {\n ...menuPropTypes,\n ...uncontrolledMenuPropTypes,\n disabled: bool,\n openTrigger: /*#__PURE__*/oneOf(['none', 'clickOnly']),\n label: /*#__PURE__*/oneOfType([node, func]),\n itemProps: /*#__PURE__*/shape({\n ...stylePropTypes()\n })\n} : void 0;\n\nexport { SubMenu };\n","import { useContext, useEffect } from 'react';\nimport { useItemEffect } from './useItemEffect.js';\nimport { SettingsContext, MenuListItemContext, HoverActionTypes } from '../utils/constants.js';\n\nconst useItemState = (itemRef, focusRef, isHovering, isDisabled) => {\n const {\n submenuCloseDelay\n } = useContext(SettingsContext);\n const {\n isParentOpen,\n submenuCtx,\n dispatch,\n updateItems\n } = useContext(MenuListItemContext);\n const setHover = () => {\n !isHovering && !isDisabled && dispatch(HoverActionTypes.SET, itemRef.current);\n };\n const unsetHover = () => {\n !isDisabled && dispatch(HoverActionTypes.UNSET, itemRef.current);\n };\n const onBlur = e => {\n if (isHovering && !e.currentTarget.contains(e.relatedTarget)) unsetHover();\n };\n const onPointerMove = e => {\n if (!isDisabled) {\n e.stopPropagation();\n submenuCtx.on(submenuCloseDelay, setHover, setHover);\n }\n };\n const onPointerLeave = (_, keepHover) => {\n submenuCtx.off();\n !keepHover && unsetHover();\n };\n useItemEffect(isDisabled, itemRef, updateItems);\n useEffect(() => {\n if (isHovering && isParentOpen) {\n focusRef.current && focusRef.current.focus();\n }\n }, [focusRef, isHovering, isParentOpen]);\n return {\n setHover,\n onBlur,\n onPointerMove,\n onPointerLeave\n };\n};\n\nexport { useItemState };\n","import { useContext, useMemo } from 'react';\nimport { any, string, oneOf, bool, oneOfType, node, func } from 'prop-types';\nimport { jsx } from 'react/jsx-runtime';\nimport { useItemState } from '../hooks/useItemState.js';\nimport { EventHandlersContext, RadioGroupContext, roleMenuitem, menuClass, menuItemClass, roleNone, Keys } from '../utils/constants.js';\nimport { useCombinedRef } from '../hooks/useCombinedRef.js';\nimport { useBEM } from '../hooks/useBEM.js';\nimport { withHovering } from '../utils/withHovering.js';\nimport { stylePropTypes } from '../utils/propTypes.js';\nimport { mergeProps, commonProps, safeCall } from '../utils/utils.js';\n\nconst MenuItem = /*#__PURE__*/withHovering('MenuItem', function MenuItem({\n className,\n value,\n href,\n type,\n checked,\n disabled,\n children,\n onClick,\n isHovering,\n itemRef,\n externalRef,\n ...restProps\n}) {\n const isDisabled = !!disabled;\n const {\n setHover,\n ...restStateProps\n } = useItemState(itemRef, itemRef, isHovering, isDisabled);\n const eventHandlers = useContext(EventHandlersContext);\n const radioGroup = useContext(RadioGroupContext);\n const isRadio = type === 'radio';\n const isCheckBox = type === 'checkbox';\n const isAnchor = !!href && !isDisabled && !isRadio && !isCheckBox;\n const isChecked = isRadio ? radioGroup.value === value : isCheckBox ? !!checked : false;\n const handleClick = e => {\n if (isDisabled) {\n e.stopPropagation();\n e.preventDefault();\n return;\n }\n const event = {\n value,\n syntheticEvent: e\n };\n if (e.key !== undefined) event.key = e.key;\n if (isCheckBox) event.checked = !isChecked;\n if (isRadio) event.name = radioGroup.name;\n safeCall(onClick, event);\n if (isRadio) safeCall(radioGroup.onRadioChange, event);\n eventHandlers.handleClick(event, isCheckBox || isRadio);\n };\n const handleKeyDown = e => {\n if (!isHovering) return;\n switch (e.key) {\n case Keys.ENTER:\n e.preventDefault();\n case Keys.SPACE:\n isAnchor ? itemRef.current.click() : handleClick(e);\n }\n };\n const modifiers = useMemo(() => ({\n type,\n disabled: isDisabled,\n hover: isHovering,\n checked: isChecked,\n anchor: isAnchor\n }), [type, isDisabled, isHovering, isChecked, isAnchor]);\n const mergedProps = mergeProps({\n ...restStateProps,\n onPointerDown: setHover,\n onKeyDown: handleKeyDown,\n onClick: handleClick\n }, restProps);\n const menuItemProps = {\n role: isRadio ? 'menuitemradio' : isCheckBox ? 'menuitemcheckbox' : roleMenuitem,\n 'aria-checked': isRadio || isCheckBox ? isChecked : undefined,\n ...commonProps(isDisabled, isHovering),\n ...mergedProps,\n ref: useCombinedRef(externalRef, itemRef),\n className: useBEM({\n block: menuClass,\n element: menuItemClass,\n modifiers,\n className\n }),\n children: useMemo(() => safeCall(children, modifiers), [children, modifiers])\n };\n return isAnchor ? /*#__PURE__*/jsx(\"li\", {\n role: roleNone,\n children: /*#__PURE__*/jsx(\"a\", {\n href: href,\n ...menuItemProps\n })\n }) : /*#__PURE__*/jsx(\"li\", {\n ...menuItemProps\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuItem.propTypes = {\n ...stylePropTypes(),\n value: any,\n href: string,\n type: /*#__PURE__*/oneOf(['checkbox', 'radio']),\n checked: bool,\n disabled: bool,\n children: /*#__PURE__*/oneOfType([node, func]),\n onClick: func\n} : void 0;\n\nexport { MenuItem };\n","import { useRef, useContext, useMemo } from 'react';\nimport { bool, func } from 'prop-types';\nimport { jsx } from 'react/jsx-runtime';\nimport { useItemState } from '../hooks/useItemState.js';\nimport { useCombinedRef } from '../hooks/useCombinedRef.js';\nimport { useBEM } from '../hooks/useBEM.js';\nimport { withHovering } from '../utils/withHovering.js';\nimport { stylePropTypes } from '../utils/propTypes.js';\nimport { EventHandlersContext, roleMenuitem, menuClass, menuItemClass } from '../utils/constants.js';\nimport { safeCall, mergeProps, commonProps } from '../utils/utils.js';\n\nconst FocusableItem = /*#__PURE__*/withHovering('FocusableItem', function FocusableItem({\n className,\n disabled,\n children,\n isHovering,\n itemRef,\n externalRef,\n ...restProps\n}) {\n const isDisabled = !!disabled;\n const ref = useRef(null);\n const {\n setHover,\n onPointerLeave,\n ...restStateProps\n } = useItemState(itemRef, ref, isHovering, isDisabled);\n const {\n handleClose\n } = useContext(EventHandlersContext);\n const modifiers = useMemo(() => ({\n disabled: isDisabled,\n hover: isHovering,\n focusable: true\n }), [isDisabled, isHovering]);\n const renderChildren = useMemo(() => safeCall(children, {\n ...modifiers,\n ref,\n closeMenu: handleClose\n }), [children, modifiers, handleClose]);\n const mergedProps = mergeProps({\n ...restStateProps,\n onPointerLeave: e => onPointerLeave(e, true),\n onFocus: setHover\n }, restProps);\n return /*#__PURE__*/jsx(\"li\", {\n role: roleMenuitem,\n ...commonProps(isDisabled),\n ...mergedProps,\n ref: useCombinedRef(externalRef, itemRef),\n className: useBEM({\n block: menuClass,\n element: menuItemClass,\n modifiers,\n className\n }),\n children: renderChildren\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? FocusableItem.propTypes = {\n ...stylePropTypes(),\n disabled: bool,\n children: func\n} : void 0;\n\nexport { FocusableItem };\n","import { memo, forwardRef } from 'react';\nimport { jsx } from 'react/jsx-runtime';\nimport { useBEM } from '../hooks/useBEM.js';\nimport { menuClass, menuDividerClass } from '../utils/constants.js';\nimport { stylePropTypes } from '../utils/propTypes.js';\n\nconst MenuDivider = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(function MenuDivider({\n className,\n ...restProps\n}, externalRef) {\n return /*#__PURE__*/jsx(\"li\", {\n role: \"separator\",\n ...restProps,\n ref: externalRef,\n className: useBEM({\n block: menuClass,\n element: menuDividerClass,\n className\n })\n });\n}));\nprocess.env.NODE_ENV !== \"production\" ? MenuDivider.propTypes = {\n ...stylePropTypes()\n} : void 0;\n\nexport { MenuDivider };\n","import { memo, forwardRef } from 'react';\nimport { jsx } from 'react/jsx-runtime';\nimport { useBEM } from '../hooks/useBEM.js';\nimport { roleNone, menuClass, menuHeaderClass } from '../utils/constants.js';\nimport { stylePropTypes } from '../utils/propTypes.js';\n\nconst MenuHeader = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(function MenuHeader({\n className,\n ...restProps\n}, externalRef) {\n return /*#__PURE__*/jsx(\"li\", {\n role: roleNone,\n ...restProps,\n ref: externalRef,\n className: useBEM({\n block: menuClass,\n element: menuHeaderClass,\n className\n })\n });\n}));\nprocess.env.NODE_ENV !== \"production\" ? MenuHeader.propTypes = {\n ...stylePropTypes()\n} : void 0;\n\nexport { MenuHeader };\n","import { forwardRef, useRef, useState, useContext } from 'react';\nimport { bool } from 'prop-types';\nimport { jsx } from 'react/jsx-runtime';\nimport { useLayoutEffect as useIsomorphicLayoutEffect } from '../hooks/useIsomorphicLayoutEffect.js';\nimport { getNormalizedClientRect } from '../positionUtils/getNormalizedClientRect.js';\nimport { useCombinedRef } from '../hooks/useCombinedRef.js';\nimport { useBEM } from '../hooks/useBEM.js';\nimport { MenuListContext, menuClass, menuGroupClass } from '../utils/constants.js';\nimport { stylePropTypes } from '../utils/propTypes.js';\n\nconst MenuGroup = /*#__PURE__*/forwardRef(function MenuGroup({\n className,\n style,\n takeOverflow,\n ...restProps\n}, externalRef) {\n const ref = useRef(null);\n const [overflowStyle, setOverflowStyle] = useState();\n const {\n overflow,\n overflowAmt\n } = useContext(MenuListContext);\n useIsomorphicLayoutEffect(() => {\n let maxHeight;\n if (takeOverflow && overflowAmt >= 0) {\n maxHeight = getNormalizedClientRect(ref.current).height - overflowAmt;\n if (maxHeight < 0) maxHeight = 0;\n }\n setOverflowStyle(maxHeight >= 0 ? {\n maxHeight,\n overflow\n } : undefined);\n }, [takeOverflow, overflow, overflowAmt]);\n useIsomorphicLayoutEffect(() => {\n if (overflowStyle) ref.current.scrollTop = 0;\n }, [overflowStyle]);\n return /*#__PURE__*/jsx(\"div\", {\n ...restProps,\n ref: useCombinedRef(externalRef, ref),\n className: useBEM({\n block: menuClass,\n element: menuGroupClass,\n className\n }),\n style: {\n ...style,\n ...overflowStyle\n }\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuGroup.propTypes = {\n ...stylePropTypes(),\n takeOverflow: bool\n} : void 0;\n\nexport { MenuGroup };\n","import './avatar.css';\n\nimport { useRef } from 'preact/hooks';\n\nimport mem from '../utils/mem';\n\nconst SIZES = {\n s: 16,\n m: 20,\n l: 24,\n xl: 32,\n xxl: 50,\n xxxl: 64,\n};\n\nconst alphaCache = {};\n\nconst canvas = window.OffscreenCanvas\n ? new OffscreenCanvas(1, 1)\n : document.createElement('canvas');\nconst ctx = canvas.getContext('2d', {\n willReadFrequently: true,\n});\nctx.imageSmoothingEnabled = false;\n\nfunction Avatar({ url, size, alt = '', squircle, ...props }) {\n size = SIZES[size] || size || SIZES.m;\n const avatarRef = useRef();\n const isMissing = /missing\\.png$/.test(url);\n return (\n \n {!!url && (\n {\n if (e.target.crossOrigin) {\n e.target.crossOrigin = null;\n e.target.src = url;\n }\n }}\n onLoad={(e) => {\n if (avatarRef.current) avatarRef.current.dataset.loaded = true;\n if (alphaCache[url] !== undefined) return;\n if (isMissing) return;\n setTimeout(() => {\n try {\n // Check if image has alpha channel\n const { width, height } = e.target;\n if (canvas.width !== width) canvas.width = width;\n if (canvas.height !== height) canvas.height = height;\n ctx.drawImage(e.target, 0, 0);\n const allPixels = ctx.getImageData(0, 0, width, height);\n // At least 10% of pixels have alpha <= 128\n const hasAlpha =\n allPixels.data.filter(\n (pixel, i) => i % 4 === 3 && pixel <= 128,\n ).length /\n (allPixels.data.length / 4) >\n 0.1;\n if (hasAlpha) {\n // console.log('hasAlpha', hasAlpha, allPixels.data);\n avatarRef.current.classList.add('has-alpha');\n }\n alphaCache[url] = hasAlpha;\n ctx.clearRect(0, 0, width, height);\n } catch (e) {\n // Silent fail\n alphaCache[url] = false;\n }\n }, 1);\n }}\n />\n )}\n \n );\n}\n\nexport default mem(Avatar);\n","import { forwardRef } from 'preact/compat';\nimport { useLocation } from 'react-router-dom';\n\nimport states from '../utils/states';\n\n/* NOTES\n =====\n Initially this uses from react-router-dom, but it doesn't work:\n 1. It interferes with nested inside and it's difficult to preventDefault/stopPropagation from the nested \n 2. isActive doesn't work properly with the weird routes that's set up in this app, due to the faux \"location\" to make the modals work and prevent unmounting\n 3. Not using because it modifies history.state that *persists* across page reloads. I don't need that, so using valtio's states instead.\n*/\n\nconst Link = forwardRef((props, ref) => {\n let routerLocation;\n try {\n routerLocation = useLocation();\n } catch (e) {}\n let hash = (location.hash || '').replace(/^#/, '').trim();\n if (hash === '') hash = '/';\n const { to, ...restProps } = props;\n\n // Handle encodeURIComponent of searchParams values\n if (!!hash && hash !== '/' && hash.includes('?')) {\n const parsedHash = URL.parse(hash, location.origin); // Fake base URL\n if (parsedHash?.searchParams?.size) {\n const searchParamsStr = Array.from(parsedHash.searchParams.entries())\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\n .join('&');\n hash = parsedHash.pathname + '?' + searchParamsStr;\n }\n }\n\n const isActive = hash === to || decodeURIComponent(hash) === to;\n return (\n {\n if (e.currentTarget?.parentNode?.closest('a')) {\n // If this is nested inside another \n e.stopPropagation();\n }\n if (routerLocation) states.prevLocation = routerLocation;\n props.onClick?.(e);\n }}\n />\n );\n});\n\nexport default Link;\n","let IS_RTL = false;\n\n// Use MutationObserver to detect RTL\nconst observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.type === 'attributes') {\n const { dir } = mutation.target;\n if (dir === 'rtl') {\n IS_RTL = true;\n } else {\n IS_RTL = false;\n }\n console.log({ IS_RTL });\n // Fire custom event 'dirchange' on document\n // document.dispatchEvent(new Event('dirchange'));\n }\n });\n});\nobserver.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['dir'],\n});\n\nexport default function isRTL() {\n return IS_RTL;\n // return document.documentElement.dir === 'rtl';\n}\n","const root = document.documentElement;\nconst style = getComputedStyle(root);\nconst defaultBoundingBoxPadding = 8;\n\nlet safeAreaInsets = [0, 0, 0, 0];\nfunction getSafeAreaInsets() {\n // Get safe area inset variables from root\n const safeAreaInsetTop = style.getPropertyValue('--sai-top');\n const safeAreaInsetRight = style.getPropertyValue('--sai-right');\n const safeAreaInsetBottom = style.getPropertyValue('--sai-bottom');\n const safeAreaInsetLeft = style.getPropertyValue('--sai-left');\n safeAreaInsets = [\n // top, right, bottom, left (clockwise)\n Math.max(0, parseInt(safeAreaInsetTop, 10)),\n Math.max(0, parseInt(safeAreaInsetRight, 10)),\n Math.max(0, parseInt(safeAreaInsetBottom, 10)),\n Math.max(0, parseInt(safeAreaInsetLeft, 10)),\n ];\n}\nrequestAnimationFrame(getSafeAreaInsets);\n\nfunction safeBoundingBoxPadding(paddings = []) {\n const str = safeAreaInsets\n .map((v, i) => (v || defaultBoundingBoxPadding) + (paddings[i] || 0))\n .join(' ');\n // console.log(str);\n return str;\n}\n\n// Update safe area insets when orientation or resize\nif (CSS.supports('top: env(safe-area-inset-top)')) {\n window.addEventListener('resize', getSafeAreaInsets, { passive: true });\n}\n\nexport default safeBoundingBoxPadding;\n","import { useLayoutEffect, useState } from 'preact/hooks';\n\nexport default function useWindowSize() {\n const [size, setSize] = useState({\n width: null,\n height: null,\n });\n\n useLayoutEffect(() => {\n const handleResize = () => {\n setSize({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n };\n\n handleResize();\n window.addEventListener('resize', handleResize, {\n passive: true,\n });\n\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n return size;\n}\n","import { Menu } from '@szhsin/react-menu';\nimport { useRef } from 'preact/hooks';\n\nimport isRTL from '../utils/is-rtl';\nimport safeBoundingBoxPadding from '../utils/safe-bounding-box-padding';\nimport useWindowSize from '../utils/useWindowSize';\n\n// It's like Menu but with sensible defaults, bug fixes and improvements.\nfunction Menu2(props) {\n const { containerProps, instanceRef: _instanceRef, align } = props;\n const size = useWindowSize();\n const instanceRef = _instanceRef?.current ? _instanceRef : useRef();\n\n // Values: start, end, center\n // Note: don't mess with 'center'\n const rtlAlign = isRTL()\n ? align === 'end'\n ? 'start'\n : align === 'start'\n ? 'end'\n : align\n : align;\n\n return (\n {\n if (e.target === e.currentTarget) {\n instanceRef.current?.closeMenu?.();\n }\n containerProps?.onClick?.(e);\n },\n ...containerProps,\n }}\n />\n );\n}\n\nexport default Menu2;\n","import { SubMenu } from '@szhsin/react-menu';\nimport { useRef } from 'preact/hooks';\n\nexport default function SubMenu2(props) {\n const menuRef = useRef();\n return (\n {\n if (e.pointerType === 'touch') {\n menuRef.current?.openMenu?.();\n }\n },\n onPointerLeave: (e) => {\n if (e.pointerType === 'touch') {\n menuRef.current?.openMenu?.();\n }\n },\n }}\n />\n );\n}\n","import { MenuItem } from '@szhsin/react-menu';\nimport { cloneElement } from 'preact';\n\nimport Menu2 from './menu2';\nimport SubMenu2 from './submenu2';\n\nfunction MenuConfirm({\n subMenu = false,\n confirm = true,\n confirmLabel,\n menuItemClassName,\n menuFooter,\n menuExtras,\n ...props\n}) {\n const { children, onClick, ...restProps } = props;\n if (!confirm) {\n if (subMenu) return ;\n if (onClick) {\n return cloneElement(children, {\n onClick,\n });\n }\n return children;\n }\n const Parent = subMenu ? SubMenu2 : Menu2;\n return (\n \n \n {confirmLabel}\n \n {menuExtras}\n {menuFooter}\n \n );\n}\n\nexport default MenuConfirm;\n","export default function CustomEmoji({ staticUrl, alt, url }) {\n return (\n \n {staticUrl && (\n \n )}\n \n \n );\n}\n","import { memo } from 'preact/compat';\n\nimport CustomEmoji from './custom-emoji';\n\nfunction EmojiText({ text, emojis }) {\n if (!text) return '';\n if (!emojis?.length) return text;\n if (text.indexOf(':') === -1) return text;\n const regex = new RegExp(\n `:(${emojis.map((e) => e.shortcode).join('|')}):`,\n 'g',\n );\n const elements = text.split(regex).map((word) => {\n const emoji = emojis.find((e) => e.shortcode === word);\n if (emoji) {\n const { url, staticUrl } = emoji;\n return ;\n }\n return word;\n });\n return elements;\n}\n\nexport default memo(\n EmojiText,\n (oldProps, newProps) =>\n oldProps.text === newProps.text &&\n oldProps.emojis?.length === newProps.emojis?.length,\n);\n","import './name-text.css';\n\nimport { memo } from 'preact/compat';\n\nimport { api } from '../utils/api';\nimport states from '../utils/states';\n\nimport Avatar from './avatar';\nimport EmojiText from './emoji-text';\n\nconst nameCollator = new Intl.Collator('en', {\n sensitivity: 'base',\n});\n\nfunction NameText({\n account,\n instance,\n showAvatar,\n showAcct,\n short,\n external,\n onClick,\n}) {\n const {\n acct,\n avatar,\n avatarStatic,\n id,\n url,\n displayName,\n emojis,\n bot,\n username,\n } = account;\n const [_, acct1, acct2] = acct.match(/([^@]+)(@.+)/i) || [, acct];\n\n if (!instance) instance = api().instance;\n\n const trimmedUsername = username.toLowerCase().trim();\n const trimmedDisplayName = (displayName || '').toLowerCase().trim();\n const shortenedDisplayName = trimmedDisplayName\n .replace(/(\\:(\\w|\\+|\\-)+\\:)(?=|[\\!\\.\\?]|$)/g, '') // Remove shortcodes, regex from https://regex101.com/r/iE9uV0/1\n .replace(/\\s+/g, ''); // E.g. \"My name\" === \"myname\"\n const shortenedAlphaNumericDisplayName = shortenedDisplayName.replace(\n /[^a-z0-9@\\.]/gi,\n '',\n ); // Remove non-alphanumeric characters\n\n const hideUsername =\n (!short &&\n (trimmedUsername === trimmedDisplayName ||\n trimmedUsername === shortenedDisplayName ||\n trimmedUsername === shortenedAlphaNumericDisplayName ||\n nameCollator.compare(trimmedUsername, shortenedDisplayName) === 0)) ||\n shortenedAlphaNumericDisplayName === acct.toLowerCase();\n\n return (\n {\n if (external) return;\n if (e.shiftKey) return; // Save link? 🤷♂️\n e.preventDefault();\n e.stopPropagation();\n if (onClick) return onClick(e);\n if (e.metaKey || e.ctrlKey || e.shiftKey || e.which === 2) {\n const internalURL = `#/${instance}/a/${id}`;\n window.open(internalURL, '_blank');\n return;\n }\n states.showAccount = {\n account,\n instance,\n };\n }}\n >\n {showAvatar && (\n <>\n {' '}\n >\n )}\n {displayName && !short ? (\n <>\n \n \n \n {!showAcct && !hideUsername && (\n <>\n {' '}\n @{username} \n >\n )}\n >\n ) : short ? (\n {username} \n ) : (\n {username} \n )}\n {showAcct && (\n <>\n \n \n {acct2 ? '' : '@'}\n {acct1}\n {!!acct2 && {acct2} }\n \n >\n )}\n \n );\n}\n\nexport default memo(NameText, (oldProps, newProps) => {\n // Only care about account.id, the other props usually don't change\n const { account } = oldProps;\n const { account: newAccount } = newProps;\n return account?.acct === newAccount?.acct;\n});\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)new n(e).valueOf()},n.prototype.isLessThan=function(e){return this.valueOf()-1))||(u=new o.a(r)[s]());if(\"days\"===s||\"years\"===s){var a=i[t][s];return e.format(a)}return i[t][s].replace(\"%d\",u)}(this)}}}])});","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_localizedFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"};return function(t,o,n){var r=o.prototype,i=r.format;n.en.formats=e,r.format=function(t){void 0===t&&(t=\"YYYY-MM-DDTHH:mm:ssZ\");var o=this.$locale().formats,n=function(t,o){return t.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var i=r&&r.toUpperCase();return n||o[r]||e[r]||o[i].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,o){return t||o.slice(1)}))}))}(t,void 0===o?{}:o);return i.call(this,n)}}}));","!function(r,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(r=\"undefined\"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){\"use strict\";return function(r,e,t){r=r||{};var n=e.prototype,o={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],m=h.length,c=0;c0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));","// Twitter-style relative time component\n// Seconds = 1s\n// Minutes = 1m\n// Hours = 1h\n// Days = 1d\n// After 7 days, use DD/MM/YYYY or MM/DD/YYYY\nimport dayjs from 'dayjs';\nimport dayjsTwitter from 'dayjs-twitter';\nimport localizedFormat from 'dayjs/plugin/localizedFormat';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport { useEffect, useMemo, useReducer } from 'preact/hooks';\n\ndayjs.extend(dayjsTwitter);\ndayjs.extend(localizedFormat);\ndayjs.extend(relativeTime);\n\nconst dtf = new Intl.DateTimeFormat();\n\nexport default function RelativeTime({ datetime, format }) {\n if (!datetime) return null;\n const [renderCount, rerender] = useReducer((x) => x + 1, 0);\n const date = useMemo(() => dayjs(datetime), [datetime]);\n const [dateStr, dt, title] = useMemo(() => {\n if (!date.isValid()) return ['' + datetime, '', ''];\n let str;\n if (format === 'micro') {\n // If date <= 1 day ago or day is within this year\n const now = dayjs();\n const dayDiff = now.diff(date, 'day');\n if (dayDiff <= 1 || now.year() === date.year()) {\n str = date.twitter();\n } else {\n str = dtf.format(date.toDate());\n }\n }\n if (!str) str = date.fromNow();\n return [str, date.toISOString(), date.format('LLLL')];\n }, [date, format, renderCount]);\n\n useEffect(() => {\n if (!date.isValid()) return;\n let timeout;\n let raf;\n function rafRerender() {\n raf = requestAnimationFrame(() => {\n rerender();\n scheduleRerender();\n });\n }\n function scheduleRerender() {\n // If less than 1 minute, rerender every 10s\n // If less than 1 hour rerender every 1m\n // Else, don't need to rerender\n if (date.diff(dayjs(), 'minute', true) < 1) {\n timeout = setTimeout(rafRerender, 10_000);\n } else if (date.diff(dayjs(), 'hour', true) < 1) {\n timeout = setTimeout(rafRerender, 60_000);\n }\n }\n scheduleRerender();\n return () => {\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n };\n }, []);\n\n return (\n \n {dateStr}\n \n );\n}\n","import { match } from '@formatjs/intl-localematcher';\n\nimport mem from './mem';\n\nfunction _localeMatch(...args) {\n // Wrap in try/catch because localeMatcher throws on invalid locales\n try {\n return match(...args);\n } catch (e) {\n const defaultLocale = args[2];\n return defaultLocale || false;\n }\n}\nconst localeMatch = mem(_localeMatch);\n\nexport default localeMatch;\n","import translationTargetLanguages from '../data/lingva-target-languages';\n\nimport localeMatch from './locale-match';\nimport states from './states';\n\nconst locales = [\n new Intl.DateTimeFormat().resolvedOptions().locale,\n ...navigator.languages,\n];\n\nconst localeTargetLanguages = localeMatch(\n locales,\n translationTargetLanguages.map((l) => l.code.replace('_', '-')), // The underscore will fail Intl.Locale inside `match`\n 'en',\n);\n\nfunction getTranslateTargetLanguage(fromSettings = false) {\n if (fromSettings) {\n const { contentTranslationTargetLanguage } = states.settings;\n if (contentTranslationTargetLanguage) {\n return contentTranslationTargetLanguage;\n }\n }\n return localeTargetLanguages;\n}\n\nexport default getTranslateTargetLanguage;\n","import mem from './mem';\n\nconst IntlDN = new Intl.DisplayNames(undefined, {\n type: 'language',\n});\n\nfunction _localeCode2Text(code) {\n try {\n return IntlDN.of(code);\n } catch (e) {\n console.error(e);\n return null;\n }\n}\n\nexport default mem(_localeCode2Text);\n","export const semver = /^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\-]+(?:\\.[\\da-z\\-]+)*))?(?:\\+[\\da-z\\-]+(?:\\.[\\da-z\\-]+)*)?)?)?$/i;\nexport const validateAndParse = (version) => {\n if (typeof version !== 'string') {\n throw new TypeError('Invalid argument expected string');\n }\n const match = version.match(semver);\n if (!match) {\n throw new Error(`Invalid argument not valid semver ('${version}' received)`);\n }\n match.shift();\n return match;\n};\nconst isWildcard = (s) => s === '*' || s === 'x' || s === 'X';\nconst tryParse = (v) => {\n const n = parseInt(v, 10);\n return isNaN(n) ? v : n;\n};\nconst forceType = (a, b) => typeof a !== typeof b ? [String(a), String(b)] : [a, b];\nconst compareStrings = (a, b) => {\n if (isWildcard(a) || isWildcard(b))\n return 0;\n const [ap, bp] = forceType(tryParse(a), tryParse(b));\n if (ap > bp)\n return 1;\n if (ap < bp)\n return -1;\n return 0;\n};\nexport const compareSegments = (a, b) => {\n for (let i = 0; i < Math.max(a.length, b.length); i++) {\n const r = compareStrings(a[i] || '0', b[i] || '0');\n if (r !== 0)\n return r;\n }\n return 0;\n};\n//# sourceMappingURL=utils.js.map","import { compareSegments, validateAndParse } from './utils.js';\n/**\n * Compare [semver](https://semver.org/) version strings to find greater, equal or lesser.\n * This library supports the full semver specification, including comparing versions with different number of digits like `1.0.0`, `1.0`, `1`, and pre-release versions like `1.0.0-alpha`.\n * @param v1 - First version to compare\n * @param v2 - Second version to compare\n * @returns Numeric value compatible with the [Array.sort(fn) interface](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#Parameters).\n */\nexport const compareVersions = (v1, v2) => {\n // validate input and split into segments\n const n1 = validateAndParse(v1);\n const n2 = validateAndParse(v2);\n // pop off the patch\n const p1 = n1.pop();\n const p2 = n2.pop();\n // validate numbers\n const r = compareSegments(n1, n2);\n if (r !== 0)\n return r;\n // validate pre-release\n if (p1 && p2) {\n return compareSegments(p1.split('.'), p2.split('.'));\n }\n else if (p1 || p2) {\n return p1 ? -1 : 1;\n }\n return 0;\n};\n//# sourceMappingURL=compareVersions.js.map","import { compareVersions } from './compareVersions.js';\n/**\n * Compare [semver](https://semver.org/) version strings using the specified operator.\n *\n * @param v1 First version to compare\n * @param v2 Second version to compare\n * @param operator Allowed arithmetic operator to use\n * @returns `true` if the comparison between the firstVersion and the secondVersion satisfies the operator, `false` otherwise.\n *\n * @example\n * ```\n * compare('10.1.8', '10.0.4', '>'); // return true\n * compare('10.0.1', '10.0.1', '='); // return true\n * compare('10.1.1', '10.2.2', '<'); // return true\n * compare('10.1.1', '10.2.2', '<='); // return true\n * compare('10.1.1', '10.2.2', '>='); // return false\n * ```\n */\nexport const compare = (v1, v2, operator) => {\n // validate input operator\n assertValidOperator(operator);\n // since result of compareVersions can only be -1 or 0 or 1\n // a simple map can be used to replace switch\n const res = compareVersions(v1, v2);\n return operatorResMap[operator].includes(res);\n};\nconst operatorResMap = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n '!=': [-1, 1],\n};\nconst allowedOperators = Object.keys(operatorResMap);\nconst assertValidOperator = (op) => {\n if (typeof op !== 'string') {\n throw new TypeError(`Invalid operator type, expected string but got ${typeof op}`);\n }\n if (allowedOperators.indexOf(op) === -1) {\n throw new Error(`Invalid operator, expected one of ${allowedOperators.join('|')}`);\n }\n};\n//# sourceMappingURL=compare.js.map","import { compare } from './compare.js';\nimport { compareSegments, validateAndParse } from './utils.js';\n/**\n * Match [npm semver](https://docs.npmjs.com/cli/v6/using-npm/semver) version range.\n *\n * @param version Version number to match\n * @param range Range pattern for version\n * @returns `true` if the version number is within the range, `false` otherwise.\n *\n * @example\n * ```\n * satisfies('1.1.0', '^1.0.0'); // return true\n * satisfies('1.1.0', '~1.0.0'); // return false\n * ```\n */\nexport const satisfies = (version, range) => {\n // clean input\n range = range.replace(/([><=]+)\\s+/g, '$1');\n // handle multiple comparators\n if (range.includes('||')) {\n return range.split('||').some((r) => satisfies(version, r));\n }\n else if (range.includes(' - ')) {\n const [a, b] = range.split(' - ', 2);\n return satisfies(version, `>=${a} <=${b}`);\n }\n else if (range.includes(' ')) {\n return range\n .trim()\n .replace(/\\s{2,}/g, ' ')\n .split(' ')\n .every((r) => satisfies(version, r));\n }\n // if no range operator then \"=\"\n const m = range.match(/^([<>=~^]+)/);\n const op = m ? m[1] : '=';\n // if gt/lt/eq then operator compare\n if (op !== '^' && op !== '~')\n return compare(version, range, op);\n // else range of either \"~\" or \"^\" is assumed\n const [v1, v2, v3, , vp] = validateAndParse(version);\n const [r1, r2, r3, , rp] = validateAndParse(range);\n const v = [v1, v2, v3];\n const r = [r1, r2 !== null && r2 !== void 0 ? r2 : 'x', r3 !== null && r3 !== void 0 ? r3 : 'x'];\n // validate pre-release\n if (rp) {\n if (!vp)\n return false;\n if (compareSegments(v, r) !== 0)\n return false;\n if (compareSegments(vp.split('.'), rp.split('.')) === -1)\n return false;\n }\n // first non-zero number\n const nonZero = r.findIndex((v) => v !== '0') + 1;\n // pointer to where segments can be >=\n const i = op === '~' ? 2 : nonZero > 1 ? nonZero : 1;\n // before pointer must be equal\n if (compareSegments(v.slice(0, i), r.slice(0, i)) !== 0)\n return false;\n // after pointer must be >=\n if (compareSegments(v.slice(i), r.slice(i)) === -1)\n return false;\n return true;\n};\n//# sourceMappingURL=satisfies.js.map","import { satisfies } from 'compare-versions';\n\nimport features from '../data/features.json';\n\nimport { getCurrentInstance } from './store-utils';\n\n// Non-semver(?) UA string detection\nconst containPixelfed = /pixelfed/i;\nconst notContainPixelfed = /^(?!.*pixelfed).*$/i;\nconst platformFeatures = {\n '@mastodon/lists': notContainPixelfed,\n '@mastodon/filters': notContainPixelfed,\n '@mastodon/mentions': notContainPixelfed,\n '@mastodon/trending-hashtags': notContainPixelfed,\n '@mastodon/trending-links': notContainPixelfed,\n '@mastodon/post-bookmark': notContainPixelfed,\n '@mastodon/post-edit': notContainPixelfed,\n '@mastodon/profile-edit': notContainPixelfed,\n '@mastodon/profile-private-note': notContainPixelfed,\n '@pixelfed/trending': containPixelfed,\n '@pixelfed/home-include-reblogs': containPixelfed,\n '@pixelfed/global-feed': containPixelfed,\n};\nconst supportsCache = {};\n\nfunction supports(feature) {\n try {\n const { version, domain } = getCurrentInstance();\n const key = `${domain}-${feature}`;\n if (supportsCache[key]) return supportsCache[key];\n\n if (platformFeatures[feature]) {\n return (supportsCache[key] = platformFeatures[feature].test(version));\n }\n\n const range = features[feature];\n if (!range) return false;\n return (supportsCache[key] = satisfies(version, range, {\n includePrerelease: true,\n loose: true,\n }));\n } catch (e) {\n return false;\n }\n}\n\nexport default supports;\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7F]/; // Note: U+007F DEL is excluded too.\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, callback) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = callback(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {String} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(domain, callback) {\n\tconst parts = domain.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tdomain = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tdomain = domain.replace(regexSeparators, '\\x2E');\n\tconst labels = domain.split('.');\n\tconst encoded = map(labels, callback).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = codePoints => String.fromCodePoint(...codePoints);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint >= 0x30 && codePoint < 0x3A) {\n\t\treturn 26 + (codePoint - 0x30);\n\t}\n\tif (codePoint >= 0x41 && codePoint < 0x5B) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint >= 0x61 && codePoint < 0x7B) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tconst oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\t\t\tif (digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tconst inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tconst basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue === n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.3.1',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","function emojifyText(text, emojis = []) {\n if (!text) return '';\n if (!emojis.length) return text;\n if (text.indexOf(':') === -1) return text;\n // Replace shortcodes in text with emoji\n // emojis = [{ shortcode: 'smile', url: 'https://example.com/emoji.png' }]\n emojis.forEach((emoji) => {\n const { shortcode, staticUrl, url } = emoji;\n text = text.replace(\n new RegExp(`:${shortcode}:`, 'g'),\n ` `,\n );\n });\n // console.log(text, emojis);\n return text;\n}\n\nexport default emojifyText;\n","import emojifyText from './emojify-text';\nimport mem from './mem';\n\nconst fauxDiv = document.createElement('div');\nconst whitelistLinkClasses = ['u-url', 'mention', 'hashtag'];\n\nfunction _enhanceContent(content, opts = {}) {\n const { emojis, postEnhanceDOM = () => {} } = opts;\n let enhancedContent = content;\n const dom = document.createElement('div');\n dom.innerHTML = enhancedContent;\n const hasLink = / {\n link.setAttribute('target', '_blank');\n });\n\n // Remove all classes except `u-url`, `mention`, `hashtag`\n const links = dom.querySelectorAll('a[class]');\n links.forEach((link) => {\n link.classList.forEach((c) => {\n if (!whitelistLinkClasses.includes(c)) {\n link.classList.remove(c);\n }\n });\n });\n }\n\n // Add 'has-url-text' to all links that contains a url\n if (hasLink) {\n const links = dom.querySelectorAll('a[href]');\n links.forEach((link) => {\n if (/^https?:\\/\\//i.test(link.textContent.trim())) {\n link.classList.add('has-url-text');\n shortenLink(link);\n }\n });\n }\n\n // Spanify un-spanned mentions\n if (hasLink) {\n const links = dom.querySelectorAll('a[href]');\n const usernames = [];\n links.forEach((link) => {\n const text = link.innerText.trim();\n const hasChildren = link.querySelector('*');\n // If text looks like @username@domain, then it's a mention\n if (/^@[^@]+(@[^@]+)?$/g.test(text)) {\n // Only show @username\n const [_, username, domain] = text.split('@');\n if (!hasChildren) {\n if (\n !usernames.some(([u]) => u === username) ||\n usernames.some(([u, d]) => u === username && d === domain)\n ) {\n link.innerHTML = `@${username} `;\n usernames.push([username, domain]);\n } else {\n link.innerHTML = `@${username}@${domain} `;\n }\n }\n link.classList.add('mention');\n }\n // If text looks like #hashtag, then it's a hashtag\n if (/^#[^#]+$/g.test(text)) {\n if (!hasChildren) link.innerHTML = `#${text.slice(1)} `;\n link.classList.add('mention', 'hashtag');\n }\n });\n }\n\n // EMOJIS\n // ======\n // Convert :shortcode: to \n let textNodes;\n if (enhancedContent.includes(':')) {\n textNodes = extractTextNodes(dom);\n textNodes.forEach((node) => {\n let html = node.nodeValue\n .replace(/&/g, '&')\n .replace(//g, '>');\n if (emojis) {\n html = emojifyText(html, emojis);\n }\n fauxDiv.innerHTML = html;\n // const nodes = [...fauxDiv.childNodes];\n node.replaceWith(...fauxDiv.childNodes);\n });\n }\n\n // CODE BLOCKS\n // ===========\n // Convert ```code``` to code \n if (hasCodeBlock) {\n const blocks = [...dom.querySelectorAll('p')].filter((p) =>\n /^```[^]+```$/g.test(p.innerText.trim()),\n );\n blocks.forEach((block) => {\n const pre = document.createElement('pre');\n // Replace with newlines\n block.querySelectorAll('br').forEach((br) => br.replaceWith('\\n'));\n pre.innerHTML = `${block.innerHTML.trim()}`;\n block.replaceWith(pre);\n });\n }\n\n // Convert multi-paragraph code blocks to code \n if (hasCodeBlock) {\n const paragraphs = [...dom.querySelectorAll('p')];\n // Filter out paragraphs with ``` in beginning only\n const codeBlocks = paragraphs.filter((p) => /^```/g.test(p.innerText));\n // For each codeBlocks, get all paragraphs until the last paragraph with ``` at the end only\n codeBlocks.forEach((block) => {\n const nextParagraphs = [block];\n let hasCodeBlock = false;\n let currentBlock = block;\n while (currentBlock.nextElementSibling) {\n const next = currentBlock.nextElementSibling;\n if (next && next.tagName === 'P') {\n if (/```$/g.test(next.innerText)) {\n nextParagraphs.push(next);\n hasCodeBlock = true;\n break;\n } else {\n nextParagraphs.push(next);\n }\n } else {\n break;\n }\n currentBlock = next;\n }\n if (hasCodeBlock) {\n const pre = document.createElement('pre');\n nextParagraphs.forEach((p) => {\n // Replace with newlines\n p.querySelectorAll('br').forEach((br) => br.replaceWith('\\n'));\n });\n const codeText = nextParagraphs.map((p) => p.innerHTML).join('\\n\\n');\n pre.innerHTML = `${codeText}`;\n block.replaceWith(pre);\n nextParagraphs.forEach((p) => p.remove());\n }\n });\n }\n\n // INLINE CODE\n // ===========\n // Convert `code` to code\n if (enhancedContent.includes('`')) {\n textNodes = extractTextNodes(dom);\n textNodes.forEach((node) => {\n let html = node.nodeValue\n .replace(/&/g, '&')\n .replace(//g, '>');\n if (/`[^`]+`/g.test(html)) {\n html = html.replaceAll(/(`[^]+?`)/g, '$1');\n }\n fauxDiv.innerHTML = html;\n // const nodes = [...fauxDiv.childNodes];\n node.replaceWith(...fauxDiv.childNodes);\n });\n }\n\n // TWITTER USERNAMES\n // =================\n // Convert @username@twitter.com to @username@twitter.com \n if (/twitter\\.com/i.test(enhancedContent)) {\n textNodes = extractTextNodes(dom, {\n rejectFilter: ['A'],\n });\n textNodes.forEach((node) => {\n let html = node.nodeValue\n .replace(/&/g, '&')\n .replace(//g, '>');\n if (/@[a-zA-Z0-9_]+@twitter\\.com/g.test(html)) {\n html = html.replaceAll(\n /(@([a-zA-Z0-9_]+)@twitter\\.com)/g,\n '$1 ',\n );\n }\n fauxDiv.innerHTML = html;\n // const nodes = [...fauxDiv.childNodes];\n node.replaceWith(...fauxDiv.childNodes);\n });\n }\n\n // HASHTAG STUFFING\n // ================\n // Get the that contains a lot of hashtags, add a class to it\n if (enhancedContent.includes('#')) {\n let prevIndex = null;\n const hashtagStuffedParagraphs = [...dom.querySelectorAll('p')].filter(\n (p, index) => {\n let hashtagCount = 0;\n for (let i = 0; i < p.childNodes.length; i++) {\n const node = p.childNodes[i];\n\n if (node.nodeType === Node.TEXT_NODE) {\n const text = node.textContent.trim();\n if (text !== '') {\n return false;\n }\n } else if (node.tagName === 'BR') {\n // Ignore \n } else if (node.tagName === 'A') {\n const linkText = node.textContent.trim();\n if (!linkText || !linkText.startsWith('#')) {\n return false;\n } else {\n hashtagCount++;\n }\n } else {\n return false;\n }\n }\n // Only consider \"stuffing\" if:\n // - there are more than 3 hashtags\n // - there are more than 1 hashtag in adjacent paragraphs\n if (hashtagCount > 3) {\n prevIndex = index;\n return true;\n }\n if (hashtagCount > 1 && prevIndex && index === prevIndex + 1) {\n prevIndex = index;\n return true;\n }\n },\n );\n if (hashtagStuffedParagraphs?.length) {\n hashtagStuffedParagraphs.forEach((p) => {\n p.classList.add('hashtag-stuffing');\n p.title = p.innerText;\n });\n }\n }\n\n // ADD ASPECT RATIO TO ALL IMAGES\n if (enhancedContent.includes(' {\n const width = img.getAttribute('width') || img.naturalWidth;\n const height = img.getAttribute('height') || img.naturalHeight;\n if (width && height) {\n img.style.setProperty('--original-aspect-ratio', `${width}/${height}`);\n }\n });\n }\n\n if (postEnhanceDOM) {\n queueMicrotask(() => postEnhanceDOM(dom));\n // postEnhanceDOM(dom); // mutate dom\n }\n\n enhancedContent = dom.innerHTML;\n\n return enhancedContent;\n}\nconst enhanceContent = mem(_enhanceContent);\n\nconst defaultRejectFilter = [\n // Document metadata\n 'STYLE',\n // Image and multimedia\n 'IMG',\n 'VIDEO',\n 'AUDIO',\n 'AREA',\n 'MAP',\n 'TRACK',\n // Embedded content\n 'EMBED',\n 'IFRAME',\n 'OBJECT',\n 'PICTURE',\n 'PORTAL',\n 'SOURCE',\n // SVG and MathML\n 'SVG',\n 'MATH',\n // Scripting\n 'CANVAS',\n 'NOSCRIPT',\n 'SCRIPT',\n // Forms\n 'INPUT',\n 'OPTION',\n 'TEXTAREA',\n // Web Components\n 'SLOT',\n 'TEMPLATE',\n];\nconst defaultRejectFilterMap = Object.fromEntries(\n defaultRejectFilter.map((nodeName) => [nodeName, true]),\n);\n\nconst URL_PREFIX_REGEX = /^(https?:\\/\\/(www\\.)?|xmpp:)/;\nconst URL_DISPLAY_LENGTH = 30;\n// Similar to https://github.com/mastodon/mastodon/blob/1666b1955992e16f4605b414c6563ca25b3a3f18/app/lib/text_formatter.rb#L54-L69\nfunction shortenLink(link) {\n if (!link || link.querySelector?.('*')) {\n return;\n }\n try {\n const url = link.innerText.trim();\n const prefix = (url.match(URL_PREFIX_REGEX) || [])[0] || '';\n if (!prefix) return;\n const displayURL = url.slice(\n prefix.length,\n prefix.length + URL_DISPLAY_LENGTH,\n );\n const suffix = url.slice(prefix.length + URL_DISPLAY_LENGTH);\n const cutoff = url.slice(prefix.length).length > URL_DISPLAY_LENGTH;\n link.innerHTML = `${prefix} ${displayURL} ${suffix} `;\n } catch (e) {}\n}\n\nfunction extractTextNodes(dom, opts = {}) {\n const textNodes = [];\n const rejectFilterMap = Object.assign(\n {},\n defaultRejectFilterMap,\n opts.rejectFilter?.reduce((acc, cur) => {\n acc[cur] = true;\n return acc;\n }, {}),\n );\n const walk = document.createTreeWalker(\n dom,\n NodeFilter.SHOW_TEXT,\n {\n acceptNode(node) {\n if (rejectFilterMap[node.parentNode.nodeName]) {\n return NodeFilter.FILTER_REJECT;\n }\n return NodeFilter.FILTER_ACCEPT;\n },\n },\n false,\n );\n let node;\n while ((node = walk.nextNode())) {\n textNodes.push(node);\n }\n return textNodes;\n}\n\nexport default enhanceContent;\n","import mem from './mem';\n\nconst div = document.createElement('div');\nfunction getHTMLText(html, opts) {\n if (!html) return '';\n const { preProcess } = opts || {};\n\n div.innerHTML = html\n .replace(/<\\/p>/g, '
\\n\\n')\n .replace(/<\\/li>/g, '\\n');\n div.querySelectorAll('br').forEach((br) => {\n br.replaceWith('\\n');\n });\n\n preProcess?.(div);\n\n // MASTODON-SPECIFIC classes\n // Remove .invisible\n div.querySelectorAll('.invisible').forEach((el) => {\n el.remove();\n });\n // Add … at end of .ellipsis\n div.querySelectorAll('.ellipsis').forEach((el) => {\n el.append('...');\n });\n\n return div.innerText.replace(/[\\r\\n]{3,}/g, '\\n\\n').trim();\n}\n\nexport default mem(getHTMLText);\n","import states from './states';\n\nfunction handleContentLinks(opts) {\n const { mentions = [], instance, previewMode, statusURL } = opts || {};\n return (e) => {\n let { target } = e;\n target = target.closest('a');\n if (!target) return;\n\n // If cmd/ctrl/shift/alt key is pressed or middle-click, let the browser handle it\n if (e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || e.which === 2) {\n return;\n }\n\n const prevText = target.previousSibling?.textContent;\n const textBeforeLinkIsAt = prevText?.endsWith('@');\n const textStartsWithAt = target.innerText.startsWith('@');\n if (\n ((target.classList.contains('u-url') ||\n target.classList.contains('mention')) &&\n textStartsWithAt) ||\n (textBeforeLinkIsAt && !textStartsWithAt)\n ) {\n const targetText = (\n target.querySelector('span') || target\n ).innerText.trim();\n const username = targetText.replace(/^@/, '');\n const url = target.getAttribute('href');\n // Only fallback to acct/username check if url doesn't match\n const mention =\n mentions.find((mention) => mention.url === url) ||\n mentions.find(\n (mention) =>\n mention.acct === username || mention.username === username,\n );\n console.warn('MENTION', mention, url);\n if (mention) {\n e.preventDefault();\n e.stopPropagation();\n states.showAccount = {\n account: mention.acct,\n instance,\n };\n } else if (!/^http/i.test(targetText)) {\n console.log('mention not found', targetText);\n e.preventDefault();\n e.stopPropagation();\n const href = target.getAttribute('href');\n states.showAccount = {\n account: href,\n instance,\n };\n }\n } else if (!previewMode) {\n const textBeforeLinkIsHash = prevText?.endsWith('#');\n if (target.classList.contains('hashtag') || textBeforeLinkIsHash) {\n e.preventDefault();\n e.stopPropagation();\n const tag = target.innerText.replace(/^#/, '').trim();\n const hashURL = instance ? `#/${instance}/t/${tag}` : `#/t/${tag}`;\n console.log({ hashURL });\n location.hash = hashURL;\n } else if (\n states.unfurledLinks[target.href]?.url &&\n statusURL !== target.href\n ) {\n // If unfurled AND not self-referential\n e.preventDefault();\n e.stopPropagation();\n states.prevLocation = {\n pathname: location.hash.replace(/^#/, ''),\n };\n location.hash = `#${states.unfurledLinks[target.href].url}`;\n }\n }\n };\n}\n\nexport default handleContentLinks;\n","import mem from './mem';\n\nconst { locale } = new Intl.DateTimeFormat().resolvedOptions();\n\nconst _DateTimeFormat = (opts) => {\n const { dateYear, hideTime, formatOpts } = opts || {};\n const currentYear = new Date().getFullYear();\n return Intl.DateTimeFormat(locale, {\n // Show year if not current year\n year: dateYear === currentYear ? undefined : 'numeric',\n month: 'short',\n day: 'numeric',\n // Hide time if requested\n hour: hideTime ? undefined : 'numeric',\n minute: hideTime ? undefined : 'numeric',\n ...formatOpts,\n });\n};\nconst DateTimeFormat = mem(_DateTimeFormat);\n\nfunction niceDateTime(date, dtfOpts) {\n if (!(date instanceof Date)) {\n date = new Date(date);\n }\n const DTF = DateTimeFormat({\n dateYear: date.getFullYear(),\n ...dtfOpts,\n });\n const dateText = DTF.format(date);\n return dateText;\n}\n\nexport default niceDateTime;\n","const { locale } = Intl.NumberFormat().resolvedOptions();\nconst shortenNumber = Intl.NumberFormat(locale, {\n notation: 'compact',\n roundingMode: 'floor',\n}).format;\nexport default shortenNumber;\n","import openOSK from './open-osk';\nimport showToast from './show-toast';\nimport states from './states';\n\nconst TOAST_DURATION = 5_000; // 5 seconds\n\nexport default function showCompose(opts) {\n if (!opts) opts = true;\n\n if (states.showCompose) {\n if (states.composerState.minimized) {\n showToast({\n duration: TOAST_DURATION,\n text: `A draft post is currently minimized. Post or discard it before creating a new one.`,\n });\n } else {\n showToast({\n duration: TOAST_DURATION,\n text: `A post is currently open. Post or discard it before creating a new one.`,\n });\n }\n return;\n }\n\n openOSK();\n states.showCompose = opts;\n}\n","import './account-block.css';\n\n// import { useNavigate } from 'react-router-dom';\nimport enhanceContent from '../utils/enhance-content';\nimport niceDateTime from '../utils/nice-date-time';\nimport shortenNumber from '../utils/shorten-number';\nimport states from '../utils/states';\n\nimport Avatar from './avatar';\nimport EmojiText from './emoji-text';\nimport Icon from './icon';\n\nfunction AccountBlock({\n skeleton,\n account,\n avatarSize = 'xl',\n useAvatarStatic = false,\n instance,\n external,\n internal,\n onClick,\n showActivity = false,\n showStats = false,\n accountInstance,\n hideDisplayName = false,\n relationship = {},\n excludeRelationshipAttrs = [],\n}) {\n if (skeleton) {\n return (\n \n
\n
\n ████████ \n \n ██████ \n \n
\n );\n }\n\n if (!account) {\n return null;\n }\n\n // const navigate = useNavigate();\n\n const {\n id,\n acct,\n avatar,\n avatarStatic,\n displayName,\n username,\n emojis,\n url,\n statusesCount,\n lastStatusAt,\n bot,\n fields,\n note,\n group,\n followersCount,\n createdAt,\n locked,\n } = account;\n let [_, acct1, acct2] = acct.match(/([^@]+)(@.+)/i) || [, acct];\n if (accountInstance) {\n acct2 = `@${accountInstance}`;\n }\n\n const verifiedField = fields?.find((f) => !!f.verifiedAt && !!f.value);\n\n const excludedRelationship = {};\n for (const r in relationship) {\n if (!excludeRelationshipAttrs.includes(r)) {\n excludedRelationship[r] = relationship[r];\n }\n }\n const hasRelationship =\n excludedRelationship.following ||\n excludedRelationship.followedBy ||\n excludedRelationship.requested;\n\n return (\n {\n if (external) return;\n e.preventDefault();\n if (onClick) return onClick(e);\n if (internal) {\n // navigate(`/${instance}/a/${id}`);\n location.hash = `/${instance}/a/${id}`;\n } else {\n states.showAccount = {\n account,\n instance,\n };\n }\n }}\n >\n \n \n {!hideDisplayName && (\n <>\n {displayName ? (\n \n \n \n ) : (\n {username} \n )}\n >\n )}{' '}\n \n {acct2 ? '' : '@'}\n {acct1}\n \n {acct2}\n {locked && (\n <>\n {' '}\n \n >\n )}\n \n {showActivity && (\n \n Posts: {shortenNumber(statusesCount)}\n {!!lastStatusAt && (\n <>\n {' '}\n · Last posted:{' '}\n {niceDateTime(lastStatusAt, {\n hideTime: true,\n })}\n >\n )}\n
\n )}\n {showStats && (\n \n {bot && (\n <>\n
\n Automated\n \n >\n )}\n {!!group && (\n <>\n
\n Group\n \n >\n )}\n {hasRelationship && (\n
\n
\n {excludedRelationship.following &&\n excludedRelationship.followedBy ? (\n Mutual \n ) : excludedRelationship.requested ? (\n Requested \n ) : excludedRelationship.following ? (\n Following \n ) : excludedRelationship.followedBy ? (\n Follows you \n ) : null}\n
\n
\n )}\n {!!followersCount && (\n
\n {shortenNumber(followersCount)}{' '}\n {followersCount === 1 ? 'follower' : 'followers'}\n \n )}\n {!!verifiedField && (\n
\n {' '}\n \n \n )}\n {!bot &&\n !group &&\n !hasRelationship &&\n !followersCount &&\n !verifiedField &&\n !!createdAt && (\n
\n Joined{' '}\n \n {niceDateTime(createdAt, {\n hideTime: true,\n })}\n \n \n )}\n
\n )}\n \n \n );\n}\n\nexport default AccountBlock;\n","import { FocusableItem } from '@szhsin/react-menu';\n\nimport Link from './link';\n\nfunction MenuLink(props) {\n const { className, disabled, ...restProps } = props;\n return (\n \n {({ ref, closeMenu }) => (\n \n closeMenu(detail === 0 ? 'Enter' : undefined)\n }\n />\n )}\n \n );\n}\n\nexport default MenuLink;\n","function RetryOperation(timeouts, options) {\n // Compatibility for the old (timeouts, retryForever) signature\n if (typeof options === 'boolean') {\n options = { forever: options };\n }\n\n this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n this._timeouts = timeouts;\n this._options = options || {};\n this._maxRetryTime = options && options.maxRetryTime || Infinity;\n this._fn = null;\n this._errors = [];\n this._attempts = 1;\n this._operationTimeout = null;\n this._operationTimeoutCb = null;\n this._timeout = null;\n this._operationStart = null;\n this._timer = null;\n\n if (this._options.forever) {\n this._cachedTimeouts = this._timeouts.slice(0);\n }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n this._attempts = 1;\n this._timeouts = this._originalTimeouts.slice(0);\n}\n\nRetryOperation.prototype.stop = function() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n this._timeouts = [];\n this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n if (!err) {\n return false;\n }\n var currentTime = new Date().getTime();\n if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n this._errors.push(err);\n this._errors.unshift(new Error('RetryOperation timeout occurred'));\n return false;\n }\n\n this._errors.push(err);\n\n var timeout = this._timeouts.shift();\n if (timeout === undefined) {\n if (this._cachedTimeouts) {\n // retry forever, only keep last error\n this._errors.splice(0, this._errors.length - 1);\n timeout = this._cachedTimeouts.slice(-1);\n } else {\n return false;\n }\n }\n\n var self = this;\n this._timer = setTimeout(function() {\n self._attempts++;\n\n if (self._operationTimeoutCb) {\n self._timeout = setTimeout(function() {\n self._operationTimeoutCb(self._attempts);\n }, self._operationTimeout);\n\n if (self._options.unref) {\n self._timeout.unref();\n }\n }\n\n self._fn(self._attempts);\n }, timeout);\n\n if (this._options.unref) {\n this._timer.unref();\n }\n\n return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n this._fn = fn;\n\n if (timeoutOps) {\n if (timeoutOps.timeout) {\n this._operationTimeout = timeoutOps.timeout;\n }\n if (timeoutOps.cb) {\n this._operationTimeoutCb = timeoutOps.cb;\n }\n }\n\n var self = this;\n if (this._operationTimeoutCb) {\n this._timeout = setTimeout(function() {\n self._operationTimeoutCb();\n }, self._operationTimeout);\n }\n\n this._operationStart = new Date().getTime();\n\n this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n console.log('Using RetryOperation.try() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n console.log('Using RetryOperation.start() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n if (this._errors.length === 0) {\n return null;\n }\n\n var counts = {};\n var mainError = null;\n var mainErrorCount = 0;\n\n for (var i = 0; i < this._errors.length; i++) {\n var error = this._errors[i];\n var message = error.message;\n var count = (counts[message] || 0) + 1;\n\n counts[message] = count;\n\n if (count >= mainErrorCount) {\n mainError = error;\n mainErrorCount = count;\n }\n }\n\n return mainError;\n};\n","var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n var timeouts = exports.timeouts(options);\n return new RetryOperation(timeouts, {\n forever: options && (options.forever || options.retries === Infinity),\n unref: options && options.unref,\n maxRetryTime: options && options.maxRetryTime\n });\n};\n\nexports.timeouts = function(options) {\n if (options instanceof Array) {\n return [].concat(options);\n }\n\n var opts = {\n retries: 10,\n factor: 2,\n minTimeout: 1 * 1000,\n maxTimeout: Infinity,\n randomize: false\n };\n for (var key in options) {\n opts[key] = options[key];\n }\n\n if (opts.minTimeout > opts.maxTimeout) {\n throw new Error('minTimeout is greater than maxTimeout');\n }\n\n var timeouts = [];\n for (var i = 0; i < opts.retries; i++) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n if (options && options.forever && !timeouts.length) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n // sort the array numerically ascending\n timeouts.sort(function(a,b) {\n return a - b;\n });\n\n return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n var random = (opts.randomize)\n ? (Math.random() + 1)\n : 1;\n\n var timeout = Math.round(random * Math.max(opts.minTimeout, 1) * Math.pow(opts.factor, attempt));\n timeout = Math.min(timeout, opts.maxTimeout);\n\n return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n if (options instanceof Array) {\n methods = options;\n options = null;\n }\n\n if (!methods) {\n methods = [];\n for (var key in obj) {\n if (typeof obj[key] === 'function') {\n methods.push(key);\n }\n }\n }\n\n for (var i = 0; i < methods.length; i++) {\n var method = methods[i];\n var original = obj[method];\n\n obj[method] = function retryWrapper(original) {\n var op = exports.operation(options);\n var args = Array.prototype.slice.call(arguments, 1);\n var callback = args.pop();\n\n args.push(function(err) {\n if (op.retry(err)) {\n return;\n }\n if (err) {\n arguments[0] = op.mainError();\n }\n callback.apply(this, arguments);\n });\n\n op.attempt(function() {\n original.apply(obj, args);\n });\n }.bind(obj, original);\n obj[method].options = options;\n }\n};\n","module.exports = require('./lib/retry');","const objectToString = Object.prototype.toString;\n\nconst isError = value => objectToString.call(value) === '[object Error]';\n\nconst errorMessages = new Set([\n\t'Failed to fetch', // Chrome\n\t'NetworkError when attempting to fetch resource.', // Firefox\n\t'The Internet connection appears to be offline.', // Safari 16\n\t'Load failed', // Safari 17+\n\t'Network request failed', // `cross-fetch`\n\t'fetch failed', // Undici (Node.js)\n]);\n\nexport default function isNetworkError(error) {\n\tconst isValid = error\n\t\t&& isError(error)\n\t\t&& error.name === 'TypeError'\n\t\t&& typeof error.message === 'string';\n\n\tif (!isValid) {\n\t\treturn false;\n\t}\n\n\t// We do an extra check for Safari 17+ as it has a very generic error message.\n\t// Network errors in Safari have no stack.\n\tif (error.message === 'Load failed') {\n\t\treturn error.stack === undefined;\n\t}\n\n\treturn errorMessages.has(error.message);\n}\n","import retry from 'retry';\nimport isNetworkError from 'is-network-error';\n\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\n\t\tif (message instanceof Error) {\n\t\t\tthis.originalError = message;\n\t\t\t({message} = message);\n\t\t} else {\n\t\t\tthis.originalError = new Error(message);\n\t\t\tthis.originalError.stack = this.stack;\n\t\t}\n\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\nconst decorateErrorWithCounts = (error, attemptNumber, options) => {\n\t// Minus 1 from attemptNumber because the first attempt does not count as a retry\n\tconst retriesLeft = options.retries - (attemptNumber - 1);\n\n\terror.attemptNumber = attemptNumber;\n\terror.retriesLeft = retriesLeft;\n\treturn error;\n};\n\nexport default async function pRetry(input, options) {\n\treturn new Promise((resolve, reject) => {\n\t\toptions = {\n\t\t\tonFailedAttempt() {},\n\t\t\tretries: 10,\n\t\t\tshouldRetry: () => true,\n\t\t\t...options,\n\t\t};\n\n\t\tconst operation = retry.operation(options);\n\n\t\tconst abortHandler = () => {\n\t\t\toperation.stop();\n\t\t\treject(options.signal?.reason);\n\t\t};\n\n\t\tif (options.signal && !options.signal.aborted) {\n\t\t\toptions.signal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\tconst cleanUp = () => {\n\t\t\toptions.signal?.removeEventListener('abort', abortHandler);\n\t\t\toperation.stop();\n\t\t};\n\n\t\toperation.attempt(async attemptNumber => {\n\t\t\ttry {\n\t\t\t\tconst result = await input(attemptNumber);\n\t\t\t\tcleanUp();\n\t\t\t\tresolve(result);\n\t\t\t} catch (error) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!(error instanceof Error)) {\n\t\t\t\t\t\tthrow new TypeError(`Non-error was thrown: \"${error}\". You should only throw errors.`);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof AbortError) {\n\t\t\t\t\t\tthrow error.originalError;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof TypeError && !isNetworkError(error)) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\n\t\t\t\t\tdecorateErrorWithCounts(error, attemptNumber, options);\n\n\t\t\t\t\tif (!(await options.shouldRetry(error))) {\n\t\t\t\t\t\toperation.stop();\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\n\t\t\t\t\tawait options.onFailedAttempt(error);\n\n\t\t\t\t\tif (!operation.retry(error)) {\n\t\t\t\t\t\tthrow operation.mainError();\n\t\t\t\t\t}\n\t\t\t\t} catch (finalError) {\n\t\t\t\t\tdecorateErrorWithCounts(finalError, attemptNumber, options);\n\t\t\t\t\tcleanUp();\n\t\t\t\t\treject(finalError);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n\n// src/InView.tsx\nimport * as React from \"react\";\n\n// src/observe.ts\nvar observerMap = /* @__PURE__ */ new Map();\nvar RootIds = /* @__PURE__ */ new WeakMap();\nvar rootId = 0;\nvar unsupportedValue = void 0;\nfunction defaultFallbackInView(inView) {\n unsupportedValue = inView;\n}\nfunction getRootId(root) {\n if (!root) return \"0\";\n if (RootIds.has(root)) return RootIds.get(root);\n rootId += 1;\n RootIds.set(root, rootId.toString());\n return RootIds.get(root);\n}\nfunction optionsToId(options) {\n return Object.keys(options).sort().filter(\n (key) => options[key] !== void 0\n ).map((key) => {\n return `${key}_${key === \"root\" ? getRootId(options.root) : options[key]}`;\n }).toString();\n}\nfunction createObserver(options) {\n const id = optionsToId(options);\n let instance = observerMap.get(id);\n if (!instance) {\n const elements = /* @__PURE__ */ new Map();\n let thresholds;\n const observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n var _a;\n const inView = entry.isIntersecting && thresholds.some((threshold) => entry.intersectionRatio >= threshold);\n if (options.trackVisibility && typeof entry.isVisible === \"undefined\") {\n entry.isVisible = inView;\n }\n (_a = elements.get(entry.target)) == null ? void 0 : _a.forEach((callback) => {\n callback(inView, entry);\n });\n });\n }, options);\n thresholds = observer.thresholds || (Array.isArray(options.threshold) ? options.threshold : [options.threshold || 0]);\n instance = {\n id,\n observer,\n elements\n };\n observerMap.set(id, instance);\n }\n return instance;\n}\nfunction observe(element, callback, options = {}, fallbackInView = unsupportedValue) {\n if (typeof window.IntersectionObserver === \"undefined\" && fallbackInView !== void 0) {\n const bounds = element.getBoundingClientRect();\n callback(fallbackInView, {\n isIntersecting: fallbackInView,\n target: element,\n intersectionRatio: typeof options.threshold === \"number\" ? options.threshold : 0,\n time: 0,\n boundingClientRect: bounds,\n intersectionRect: bounds,\n rootBounds: bounds\n });\n return () => {\n };\n }\n const { id, observer, elements } = createObserver(options);\n const callbacks = elements.get(element) || [];\n if (!elements.has(element)) {\n elements.set(element, callbacks);\n }\n callbacks.push(callback);\n observer.observe(element);\n return function unobserve() {\n callbacks.splice(callbacks.indexOf(callback), 1);\n if (callbacks.length === 0) {\n elements.delete(element);\n observer.unobserve(element);\n }\n if (elements.size === 0) {\n observer.disconnect();\n observerMap.delete(id);\n }\n };\n}\n\n// src/InView.tsx\nfunction isPlainChildren(props) {\n return typeof props.children !== \"function\";\n}\nvar InView = class extends React.Component {\n constructor(props) {\n super(props);\n __publicField(this, \"node\", null);\n __publicField(this, \"_unobserveCb\", null);\n __publicField(this, \"handleNode\", (node) => {\n if (this.node) {\n this.unobserve();\n if (!node && !this.props.triggerOnce && !this.props.skip) {\n this.setState({ inView: !!this.props.initialInView, entry: void 0 });\n }\n }\n this.node = node ? node : null;\n this.observeNode();\n });\n __publicField(this, \"handleChange\", (inView, entry) => {\n if (inView && this.props.triggerOnce) {\n this.unobserve();\n }\n if (!isPlainChildren(this.props)) {\n this.setState({ inView, entry });\n }\n if (this.props.onChange) {\n this.props.onChange(inView, entry);\n }\n });\n this.state = {\n inView: !!props.initialInView,\n entry: void 0\n };\n }\n componentDidMount() {\n this.unobserve();\n this.observeNode();\n }\n componentDidUpdate(prevProps) {\n if (prevProps.rootMargin !== this.props.rootMargin || prevProps.root !== this.props.root || prevProps.threshold !== this.props.threshold || prevProps.skip !== this.props.skip || prevProps.trackVisibility !== this.props.trackVisibility || prevProps.delay !== this.props.delay) {\n this.unobserve();\n this.observeNode();\n }\n }\n componentWillUnmount() {\n this.unobserve();\n }\n observeNode() {\n if (!this.node || this.props.skip) return;\n const {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n fallbackInView\n } = this.props;\n this._unobserveCb = observe(\n this.node,\n this.handleChange,\n {\n threshold,\n root,\n rootMargin,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay\n },\n fallbackInView\n );\n }\n unobserve() {\n if (this._unobserveCb) {\n this._unobserveCb();\n this._unobserveCb = null;\n }\n }\n render() {\n const { children } = this.props;\n if (typeof children === \"function\") {\n const { inView, entry } = this.state;\n return children({ inView, entry, ref: this.handleNode });\n }\n const {\n as,\n triggerOnce,\n threshold,\n root,\n rootMargin,\n onChange,\n skip,\n trackVisibility,\n delay,\n initialInView,\n fallbackInView,\n ...props\n } = this.props;\n return React.createElement(\n as || \"div\",\n { ref: this.handleNode, ...props },\n children\n );\n }\n};\n\n// src/useInView.tsx\nimport * as React2 from \"react\";\nfunction useInView({\n threshold,\n delay,\n trackVisibility,\n rootMargin,\n root,\n triggerOnce,\n skip,\n initialInView,\n fallbackInView,\n onChange\n} = {}) {\n var _a;\n const [ref, setRef] = React2.useState(null);\n const callback = React2.useRef();\n const [state, setState] = React2.useState({\n inView: !!initialInView,\n entry: void 0\n });\n callback.current = onChange;\n React2.useEffect(\n () => {\n if (skip || !ref) return;\n let unobserve;\n unobserve = observe(\n ref,\n (inView, entry) => {\n setState({\n inView,\n entry\n });\n if (callback.current) callback.current(inView, entry);\n if (entry.isIntersecting && triggerOnce && unobserve) {\n unobserve();\n unobserve = void 0;\n }\n },\n {\n root,\n rootMargin,\n threshold,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay\n },\n fallbackInView\n );\n return () => {\n if (unobserve) {\n unobserve();\n }\n };\n },\n // We break the rule here, because we aren't including the actual `threshold` variable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n // If the threshold is an array, convert it to a string, so it won't change between renders.\n Array.isArray(threshold) ? threshold.toString() : threshold,\n ref,\n root,\n rootMargin,\n triggerOnce,\n skip,\n trackVisibility,\n fallbackInView,\n delay\n ]\n );\n const entryTarget = (_a = state.entry) == null ? void 0 : _a.target;\n const previousEntryTarget = React2.useRef();\n if (!ref && entryTarget && !triggerOnce && !skip && previousEntryTarget.current !== entryTarget) {\n previousEntryTarget.current = entryTarget;\n setState({\n inView: !!initialInView,\n entry: void 0\n });\n }\n const result = [setRef, state.inView, state.entry];\n result.ref = result[0];\n result.inView = result[1];\n result.entry = result[2];\n return result;\n}\nexport {\n InView,\n defaultFallbackInView,\n observe,\n useInView\n};\n//# sourceMappingURL=index.mjs.map","/*\n Rendered but hidden. Only show when visible\n*/\nimport { useEffect, useRef, useState } from 'preact/hooks';\nimport { useInView } from 'react-intersection-observer';\n\n// The sticky header, usually at the top\nconst TOP = 48;\n\nconst shazamIDs = {};\n\nexport default function LazyShazam({ id, children }) {\n const containerRef = useRef();\n const hasID = !!shazamIDs[id];\n const [visible, setVisible] = useState(false);\n const [visibleStart, setVisibleStart] = useState(hasID || false);\n\n const { ref } = useInView({\n root: null,\n rootMargin: `-${TOP}px 0px 0px 0px`,\n trackVisibility: true,\n delay: 1000,\n onChange: (inView) => {\n if (inView) {\n setVisible(true);\n if (id) shazamIDs[id] = true;\n }\n },\n triggerOnce: true,\n skip: visibleStart || visible,\n });\n\n useEffect(() => {\n if (!containerRef.current) return;\n const rect = containerRef.current.getBoundingClientRect();\n if (rect.bottom > TOP) {\n if (rect.top < window.innerHeight) {\n setVisible(true);\n } else {\n setVisibleStart(true);\n }\n if (id) shazamIDs[id] = true;\n }\n }, []);\n\n if (visibleStart) return children;\n\n return (\n \n );\n}\n","import './translation-block.css';\n\nimport pRetry from 'p-retry';\nimport pThrottle from 'p-throttle';\nimport { useEffect, useRef, useState } from 'preact/hooks';\n\nimport sourceLanguages from '../data/lingva-source-languages';\nimport getTranslateTargetLanguage from '../utils/get-translate-target-language';\nimport localeCode2Text from '../utils/localeCode2Text';\nimport pmem from '../utils/pmem';\n\nimport Icon from './icon';\nimport LazyShazam from './lazy-shazam';\nimport Loader from './loader';\n\nconst { PHANPY_LINGVA_INSTANCES } = import.meta.env;\nconst LINGVA_INSTANCES = PHANPY_LINGVA_INSTANCES\n ? PHANPY_LINGVA_INSTANCES.split(/\\s+/)\n : [];\n\nconst throttle = pThrottle({\n limit: 1,\n interval: 2000,\n});\n\nlet currentLingvaInstance = 0;\n\nfunction _lingvaTranslate(text, source, target) {\n console.log('TRANSLATE', text, source, target);\n const fetchCall = () => {\n let instance = LINGVA_INSTANCES[currentLingvaInstance];\n return fetch(\n `https://${instance}/api/v1/${source}/${target}/${encodeURIComponent(\n text,\n )}`,\n )\n .then((res) => {\n if (!res.ok) throw new Error(res.statusText);\n return res.json();\n })\n .then((res) => {\n return {\n provider: 'lingva',\n content: res.translation,\n detectedSourceLanguage: res.info?.detectedSource,\n info: res.info,\n };\n });\n };\n return pRetry(fetchCall, {\n retries: 3,\n onFailedAttempt: (e) => {\n currentLingvaInstance =\n (currentLingvaInstance + 1) % LINGVA_INSTANCES.length;\n console.log(\n 'Retrying translation with another instance',\n currentLingvaInstance,\n );\n },\n });\n // return masto.v1.statuses.$select(id).translate({\n // lang: DEFAULT_LANG,\n // });\n}\nconst TRANSLATED_MAX_AGE = 1000 * 60 * 60; // 1 hour\nconst lingvaTranslate = pmem(_lingvaTranslate, {\n maxAge: TRANSLATED_MAX_AGE,\n});\nconst throttledLingvaTranslate = pmem(throttle(lingvaTranslate), {\n // I know, this is double-layered memoization\n maxAge: TRANSLATED_MAX_AGE,\n});\n\nfunction TranslationBlock({\n forceTranslate,\n sourceLanguage,\n onTranslate,\n text = '',\n mini,\n autoDetected,\n}) {\n const targetLang = getTranslateTargetLanguage(true);\n const [uiState, setUIState] = useState('default');\n const [pronunciationContent, setPronunciationContent] = useState(null);\n const [translatedContent, setTranslatedContent] = useState(null);\n const [detectedLang, setDetectedLang] = useState(null);\n const detailsRef = useRef();\n\n const sourceLangText = sourceLanguage\n ? localeCode2Text(sourceLanguage)\n : null;\n const targetLangText = localeCode2Text(targetLang);\n const apiSourceLang = useRef('auto');\n\n if (!onTranslate) {\n onTranslate = mini ? throttledLingvaTranslate : lingvaTranslate;\n }\n\n const translate = async () => {\n setUIState('loading');\n try {\n const { content, detectedSourceLanguage, provider, error, ...props } =\n await onTranslate(text, apiSourceLang.current, targetLang);\n if (content) {\n if (detectedSourceLanguage) {\n const detectedLangText = localeCode2Text(detectedSourceLanguage);\n setDetectedLang(detectedLangText);\n }\n if (provider === 'lingva') {\n const pronunciation = props?.info?.pronunciation?.query;\n if (pronunciation) {\n setPronunciationContent(pronunciation);\n }\n }\n setTranslatedContent(content);\n setUIState('default');\n if (!mini && content.trim() !== text.trim()) {\n detailsRef.current.open = true;\n detailsRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n }\n } else {\n if (error) console.error(error);\n setUIState('error');\n }\n } catch (e) {\n console.error(e);\n setUIState('error');\n }\n };\n\n useEffect(() => {\n if (forceTranslate) {\n translate();\n }\n }, [forceTranslate]);\n\n if (mini) {\n if (\n !!translatedContent &&\n translatedContent.trim() !== text.trim() &&\n detectedLang !== targetLangText\n ) {\n return (\n \n \n \n \n {translatedContent}\n \n
\n \n );\n }\n return null;\n }\n\n return (\n {\n e.preventDefault();\n }}\n >\n
\n \n {\n e.preventDefault();\n e.stopPropagation();\n detailsRef.current.open = !detailsRef.current.open;\n if (uiState === 'loading') return;\n if (!translatedContent) translate();\n }}\n >\n {' '}\n \n {uiState === 'loading'\n ? 'Translating…'\n : sourceLanguage && sourceLangText && !detectedLang\n ? autoDetected\n ? `Translate from ${sourceLangText} (auto-detected)`\n : `Translate from ${sourceLangText}`\n : `Translate`}\n \n \n \n \n
\n {\n apiSourceLang.current = e.target.value;\n translate();\n }}\n >\n {sourceLanguages.map((l) => (\n \n {l.code === 'auto' ? `Auto (${detectedLang ?? '…'})` : l.name}\n \n ))}\n {' '}\n → {targetLangText} \n \n
\n {uiState === 'error' ? (\n
Failed to translate
\n ) : (\n !!translatedContent && (\n <>\n
\n {translatedContent}\n \n {!!pronunciationContent && (\n
{\n e.target.classList.toggle('expand');\n }}\n >\n {pronunciationContent}\n \n )}\n >\n )\n )}\n
\n \n
\n );\n}\n\nexport default LINGVA_INSTANCES?.length ? TranslationBlock : () => null;\n","function promisifyRequest(request) {\n return new Promise((resolve, reject) => {\n // @ts-ignore - file size hacks\n request.oncomplete = request.onsuccess = () => resolve(request.result);\n // @ts-ignore - file size hacks\n request.onabort = request.onerror = () => reject(request.error);\n });\n}\nfunction createStore(dbName, storeName) {\n const request = indexedDB.open(dbName);\n request.onupgradeneeded = () => request.result.createObjectStore(storeName);\n const dbp = promisifyRequest(request);\n return (txMode, callback) => dbp.then((db) => callback(db.transaction(storeName, txMode).objectStore(storeName)));\n}\nlet defaultGetStoreFunc;\nfunction defaultGetStore() {\n if (!defaultGetStoreFunc) {\n defaultGetStoreFunc = createStore('keyval-store', 'keyval');\n }\n return defaultGetStoreFunc;\n}\n/**\n * Get a value by its key.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction get(key, customStore = defaultGetStore()) {\n return customStore('readonly', (store) => promisifyRequest(store.get(key)));\n}\n/**\n * Set a value with a key.\n *\n * @param key\n * @param value\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction set(key, value, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.put(value, key);\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Set multiple values at once. This is faster than calling set() multiple times.\n * It's also atomic – if one of the pairs can't be added, none will be added.\n *\n * @param entries Array of entries, where each entry is an array of `[key, value]`.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction setMany(entries, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n entries.forEach((entry) => store.put(entry[1], entry[0]));\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Get multiple values by their keys\n *\n * @param keys\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction getMany(keys, customStore = defaultGetStore()) {\n return customStore('readonly', (store) => Promise.all(keys.map((key) => promisifyRequest(store.get(key)))));\n}\n/**\n * Update a value. This lets you see the old value and update it as an atomic operation.\n *\n * @param key\n * @param updater A callback that takes the old value and returns a new value.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction update(key, updater, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => \n // Need to create the promise manually.\n // If I try to chain promises, the transaction closes in browsers\n // that use a promise polyfill (IE10/11).\n new Promise((resolve, reject) => {\n store.get(key).onsuccess = function () {\n try {\n store.put(updater(this.result), key);\n resolve(promisifyRequest(store.transaction));\n }\n catch (err) {\n reject(err);\n }\n };\n }));\n}\n/**\n * Delete a particular key from the store.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction del(key, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.delete(key);\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Delete multiple keys at once.\n *\n * @param keys List of keys to delete.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction delMany(keys, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n keys.forEach((key) => store.delete(key));\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Clear all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction clear(customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.clear();\n return promisifyRequest(store.transaction);\n });\n}\nfunction eachCursor(store, callback) {\n store.openCursor().onsuccess = function () {\n if (!this.result)\n return;\n callback(this.result);\n this.result.continue();\n };\n return promisifyRequest(store.transaction);\n}\n/**\n * Get all keys in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction keys(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n if (store.getAllKeys) {\n return promisifyRequest(store.getAllKeys());\n }\n const items = [];\n return eachCursor(store, (cursor) => items.push(cursor.key)).then(() => items);\n });\n}\n/**\n * Get all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction values(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n if (store.getAll) {\n return promisifyRequest(store.getAll());\n }\n const items = [];\n return eachCursor(store, (cursor) => items.push(cursor.value)).then(() => items);\n });\n}\n/**\n * Get all entries in the store. Each entry is an array of `[key, value]`.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction entries(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n // (although, hopefully we'll get a simpler path some day)\n if (store.getAll && store.getAllKeys) {\n return Promise.all([\n promisifyRequest(store.getAllKeys()),\n promisifyRequest(store.getAll()),\n ]).then(([keys, values]) => keys.map((key, i) => [key, values[i]]));\n }\n const items = [];\n return customStore('readonly', (store) => eachCursor(store, (cursor) => items.push([cursor.key, cursor.value])).then(() => items));\n });\n}\n\nexport { clear, createStore, del, delMany, entries, get, getMany, keys, promisifyRequest, set, setMany, update, values };\n","import {\n clear,\n createStore,\n del,\n delMany,\n get,\n getMany,\n keys,\n set,\n} from 'idb-keyval';\n\nfunction initDB(dbName, storeName) {\n const store = createStore(dbName, storeName);\n return {\n set: (key, val) => set(key, val, store),\n get: (key) => get(key, store),\n getMany: (keys) => getMany(keys, store),\n del: (key) => del(key, store),\n delMany: (keys) => delMany(keys, store),\n clear: () => clear(store),\n keys: () => keys(store),\n };\n}\n\nexport default {\n drafts: initDB('drafts-db', 'drafts-store'),\n catchup: initDB('catchup-db', 'catchup-store'),\n};\n","import { api } from './api';\nimport { getCurrentAccountID } from './store-utils';\n\nexport async function fetchRelationships(accounts, relationshipsMap = {}) {\n if (!accounts?.length) return;\n const { masto } = api();\n\n const currentAccount = getCurrentAccountID();\n const uniqueAccountIds = accounts.reduce((acc, a) => {\n // 1. Ignore duplicate accounts\n // 2. Ignore accounts that are already inside relationshipsMap\n // 3. Ignore currently logged in account\n if (\n !acc.includes(a.id) &&\n !relationshipsMap[a.id] &&\n a.id !== currentAccount\n ) {\n acc.push(a.id);\n }\n return acc;\n }, []);\n if (!uniqueAccountIds.length) return null;\n\n try {\n const relationships = await masto.v1.accounts.relationships.fetch({\n id: uniqueAccountIds,\n });\n const newRelationshipsMap = relationships.reduce((acc, r) => {\n acc[r.id] = r;\n return acc;\n }, {});\n return newRelationshipsMap;\n } catch (e) {\n console.error(e);\n // It's okay to fail\n return null;\n }\n}\n","export class LiteYTEmbed extends HTMLElement {\n constructor() {\n super();\n this.isIframeLoaded = false;\n this.setupDom();\n }\n static get observedAttributes() {\n return ['videoid', 'playlistid'];\n }\n connectedCallback() {\n this.addEventListener('pointerover', LiteYTEmbed.warmConnections, {\n once: true,\n });\n this.addEventListener('click', () => this.addIframe());\n }\n get videoId() {\n return encodeURIComponent(this.getAttribute('videoid') || '');\n }\n set videoId(id) {\n this.setAttribute('videoid', id);\n }\n get playlistId() {\n return encodeURIComponent(this.getAttribute('playlistid') || '');\n }\n set playlistId(id) {\n this.setAttribute('playlistid', id);\n }\n get videoTitle() {\n return this.getAttribute('videotitle') || 'Video';\n }\n set videoTitle(title) {\n this.setAttribute('videotitle', title);\n }\n get videoPlay() {\n return this.getAttribute('videoPlay') || 'Play';\n }\n set videoPlay(name) {\n this.setAttribute('videoPlay', name);\n }\n get videoStartAt() {\n return this.getAttribute('videoStartAt') || '0';\n }\n get autoLoad() {\n return this.hasAttribute('autoload');\n }\n get noCookie() {\n return this.hasAttribute('nocookie');\n }\n get posterQuality() {\n return this.getAttribute('posterquality') || 'hqdefault';\n }\n get posterLoading() {\n return (this.getAttribute('posterloading') ||\n 'lazy');\n }\n get params() {\n return `start=${this.videoStartAt}&${this.getAttribute('params')}`;\n }\n set params(opts) {\n this.setAttribute('params', opts);\n }\n setupDom() {\n const shadowDom = this.attachShadow({ mode: 'open' });\n let nonce = '';\n if (window.liteYouTubeNonce) {\n nonce = `nonce=\"${window.liteYouTubeNonce}\"`;\n }\n shadowDom.innerHTML = `\n \n \n
\n \n \n \n \n
\n
\n `;\n this.domRefFrame = shadowDom.querySelector('#frame');\n this.domRefImg = {\n fallback: shadowDom.querySelector('#fallbackPlaceholder'),\n webp: shadowDom.querySelector('#webpPlaceholder'),\n jpeg: shadowDom.querySelector('#jpegPlaceholder'),\n };\n this.domRefPlayButton = shadowDom.querySelector('#playButton');\n }\n setupComponent() {\n this.initImagePlaceholder();\n this.domRefPlayButton.setAttribute('aria-label', `${this.videoPlay}: ${this.videoTitle}`);\n this.setAttribute('title', `${this.videoPlay}: ${this.videoTitle}`);\n if (this.autoLoad || this.isYouTubeShort()) {\n this.initIntersectionObserver();\n }\n }\n attributeChangedCallback(name, oldVal, newVal) {\n switch (name) {\n case 'videoid':\n case 'playlistid':\n case 'videoTitle':\n case 'videoPlay': {\n if (oldVal !== newVal) {\n this.setupComponent();\n if (this.domRefFrame.classList.contains('activated')) {\n this.domRefFrame.classList.remove('activated');\n this.shadowRoot.querySelector('iframe').remove();\n this.isIframeLoaded = false;\n }\n }\n break;\n }\n default:\n break;\n }\n }\n addIframe(isIntersectionObserver = false) {\n if (!this.isIframeLoaded) {\n let autoplay = isIntersectionObserver ? 0 : 1;\n const wantsNoCookie = this.noCookie ? '-nocookie' : '';\n let embedTarget;\n if (this.playlistId) {\n embedTarget = `?listType=playlist&list=${this.playlistId}&`;\n }\n else {\n embedTarget = `${this.videoId}?`;\n }\n if (this.isYouTubeShort()) {\n this.params = `loop=1&mute=1&modestbranding=1&playsinline=1&rel=0&enablejsapi=1&playlist=${this.videoId}`;\n autoplay = 1;\n }\n const iframeHTML = `\n`;\n this.domRefFrame.insertAdjacentHTML('beforeend', iframeHTML);\n this.domRefFrame.classList.add('activated');\n this.isIframeLoaded = true;\n this.attemptShortAutoPlay();\n this.dispatchEvent(new CustomEvent('liteYoutubeIframeLoaded', {\n detail: {\n videoId: this.videoId,\n },\n bubbles: true,\n cancelable: true,\n }));\n }\n }\n initImagePlaceholder() {\n const posterUrlWebp = `https://i.ytimg.com/vi_webp/${this.videoId}/${this.posterQuality}.webp`;\n const posterUrlJpeg = `https://i.ytimg.com/vi/${this.videoId}/${this.posterQuality}.jpg`;\n this.domRefImg.fallback.loading = this.posterLoading;\n this.domRefImg.webp.srcset = posterUrlWebp;\n this.domRefImg.jpeg.srcset = posterUrlJpeg;\n this.domRefImg.fallback.src = posterUrlJpeg;\n this.domRefImg.fallback.setAttribute('aria-label', `${this.videoPlay}: ${this.videoTitle}`);\n this.domRefImg?.fallback?.setAttribute('alt', `${this.videoPlay}: ${this.videoTitle}`);\n }\n initIntersectionObserver() {\n const options = {\n root: null,\n rootMargin: '0px',\n threshold: 0,\n };\n const observer = new IntersectionObserver((entries, observer) => {\n entries.forEach(entry => {\n if (entry.isIntersecting && !this.isIframeLoaded) {\n LiteYTEmbed.warmConnections();\n this.addIframe(true);\n observer.unobserve(this);\n }\n });\n }, options);\n observer.observe(this);\n }\n attemptShortAutoPlay() {\n if (this.isYouTubeShort()) {\n setTimeout(() => {\n this.shadowRoot\n .querySelector('iframe')\n ?.contentWindow?.postMessage('{\"event\":\"command\",\"func\":\"' + 'playVideo' + '\",\"args\":\"\"}', '*');\n }, 2000);\n }\n }\n isYouTubeShort() {\n return (this.getAttribute('short') === '' &&\n window.matchMedia('(max-width: 40em)').matches);\n }\n static addPrefetch(kind, url) {\n const linkElem = document.createElement('link');\n linkElem.rel = kind;\n linkElem.href = url;\n linkElem.crossOrigin = 'true';\n document.head.append(linkElem);\n }\n static warmConnections() {\n if (LiteYTEmbed.isPreconnected || window.liteYouTubeIsPreconnected)\n return;\n LiteYTEmbed.addPrefetch('preconnect', 'https://i.ytimg.com/');\n LiteYTEmbed.addPrefetch('preconnect', 'https://s.ytimg.com');\n LiteYTEmbed.addPrefetch('preconnect', 'https://www.youtube.com');\n LiteYTEmbed.addPrefetch('preconnect', 'https://www.google.com');\n LiteYTEmbed.addPrefetch('preconnect', 'https://googleads.g.doubleclick.net');\n LiteYTEmbed.addPrefetch('preconnect', 'https://static.doubleclick.net');\n LiteYTEmbed.isPreconnected = true;\n window.liteYouTubeIsPreconnected = true;\n }\n}\nLiteYTEmbed.isPreconnected = false;\ncustomElements.define('lite-youtube', LiteYTEmbed);\n//# sourceMappingURL=lite-youtube.js.map","const digitLookup = new Uint8Array(128);\nfor (let i = 0; i < 83; i++) {\n digitLookup[\n '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz#$%*+,-.:;=?@[]^_{|}~'.charCodeAt(\n i,\n )\n ] = i;\n}\nconst decode83 = (str, start, end) => {\n let value = 0;\n while (start < end) {\n value *= 83;\n value += digitLookup[str.charCodeAt(start++)];\n }\n return value;\n};\n\nconst pow = Math.pow;\nconst PI = Math.PI;\nconst PI2 = PI * 2;\n\nconst d = 3294.6;\nconst e = 269.025;\nconst sRGBToLinear = (value) =>\n value > 10.31475 ? pow(value / e + 0.052132, 2.4) : value / d;\n\nconst linearTosRGB = (v) =>\n ~~(v > 0.00001227 ? e * pow(v, 0.416666) - 13.025 : v * d + 1);\n\nconst signSqr = (x) => (x < 0 ? -1 : 1) * x * x;\n\n/**\n * Fast approximate cosine implementation\n * Based on FTrig https://github.com/netcell/FTrig\n */\nconst fastCos = (x) => {\n x += PI / 2;\n while (x > PI) {\n x -= PI2;\n }\n const cos = 1.27323954 * x - 0.405284735 * signSqr(x);\n return 0.225 * (signSqr(cos) - cos) + cos;\n};\n\n/**\n * Extracts average color from BlurHash image\n * @param {string} blurHash BlurHash image string\n * @returns {[number, number, number]}\n */\nexport function getBlurHashAverageColor(blurHash) {\n const val = decode83(blurHash, 2, 6);\n return [val >> 16, (val >> 8) & 255, val & 255];\n}\n\n/**\n * Decodes BlurHash image\n * @param {string} blurHash BlurHash image string\n * @param {number} width Output image width\n * @param {number} height Output image height\n * @param {?number} punch\n * @returns {Uint8ClampedArray}\n */\nexport function decodeBlurHash(blurHash, width, height, punch) {\n const sizeFlag = decode83(blurHash, 0, 1);\n const numX = (sizeFlag % 9) + 1;\n const numY = ~~(sizeFlag / 9) + 1;\n const size = numX * numY;\n\n let i = 0,\n j = 0,\n x = 0,\n y = 0,\n r = 0,\n g = 0,\n b = 0,\n basis = 0,\n basisY = 0,\n colorIndex = 0,\n pixelIndex = 0,\n value = 0;\n\n const maximumValue = ((decode83(blurHash, 1, 2) + 1) / 13446) * (punch | 1);\n\n const colors = new Float64Array(size * 3);\n\n const averageColor = getBlurHashAverageColor(blurHash);\n for (i = 0; i < 3; i++) {\n colors[i] = sRGBToLinear(averageColor[i]);\n }\n\n for (i = 1; i < size; i++) {\n value = decode83(blurHash, 4 + i * 2, 6 + i * 2);\n colors[i * 3] = signSqr(~~(value / 361) - 9) * maximumValue;\n colors[i * 3 + 1] = signSqr((~~(value / 19) % 19) - 9) * maximumValue;\n colors[i * 3 + 2] = signSqr((value % 19) - 9) * maximumValue;\n }\n\n const cosinesY = new Float64Array(numY * height);\n const cosinesX = new Float64Array(numX * width);\n for (j = 0; j < numY; j++) {\n for (y = 0; y < height; y++) {\n cosinesY[j * height + y] = fastCos((PI * y * j) / height);\n }\n }\n for (i = 0; i < numX; i++) {\n for (x = 0; x < width; x++) {\n cosinesX[i * width + x] = fastCos((PI * x * i) / width);\n }\n }\n\n const bytesPerRow = width * 4;\n const pixels = new Uint8ClampedArray(bytesPerRow * height);\n\n for (y = 0; y < height; y++) {\n for (x = 0; x < width; x++) {\n r = g = b = 0;\n for (j = 0; j < numY; j++) {\n basisY = cosinesY[j * height + y];\n for (i = 0; i < numX; i++) {\n basis = cosinesX[i * width + x] * basisY;\n colorIndex = (i + j * numX) * 3;\n r += colors[colorIndex] * basis;\n g += colors[colorIndex + 1] * basis;\n b += colors[colorIndex + 2] * basis;\n }\n }\n\n pixelIndex = 4 * x + y * bytesPerRow;\n pixels[pixelIndex] = linearTosRGB(r);\n pixels[pixelIndex + 1] = linearTosRGB(g);\n pixels[pixelIndex + 2] = linearTosRGB(b);\n pixels[pixelIndex + 3] = 255; // alpha\n }\n }\n return pixels;\n}\n","/**\n * @param {string[]} splittedHtml\n * @param {{ char?: string; count?: number}} options\n * @returns {string}\n */\nconst addIndentation = (splittedHtml, options = {}) => {\n const char = options.char || ' '\n const count = options.count || 2\n\n let level = 0\n const opened = []\n\n return splittedHtml.reverse().reduce((indented, elTag) => {\n if (opened.length\n && level\n && opened[level]\n /* if current element tag is the same as previously opened one */\n && opened[level] === elTag.substring(1, opened[level].length + 1)\n ) {\n opened.splice(level, 1)\n level--\n }\n\n const indentation = char.repeat(level ? level * count : 0)\n\n const newIndented = [\n `${indentation}${elTag}`,\n ...indented,\n ]\n\n // if current element tag is closing tag\n // add it to opened elements\n if (elTag.substring(0, 2) === '') {\n level++\n opened[level] = elTag.substring(2, elTag.length - 1)\n }\n\n return newIndented\n }, []).join('\\n')\n}\n\nmodule.exports = addIndentation\n","/**\n * @param {string} nonFormattedString Any non formatted string\n * @returns {string[]} Array of strings separated on new lines\n */\nconst removeEmptyLines = (nonFormattedString) => (\n // Replace\n // - 1 or more spaces or tabs at the start of line\n // - 1 or more spaces or tabs at the end of line\n // - empty lines\n // with empty string\n nonFormattedString.trim().replace(/(^(\\s|\\t)+|(( |\\t)+)$)/gm, '')\n)\n\n/**\n * @param {string} markup\n * @returns {string[]} Array of strings splitted on new lines without empty lines\n */\nconst mergeAttributesWithElements = (markup) => {\n const splittedMarkup = removeEmptyLines(markup).split('\\n')\n\n const mergedLines = []\n let currentElement = ''\n for (let i = 0; i < splittedMarkup.length; i += 1) {\n const line = splittedMarkup[i]\n\n // If line is closing element/tag separate closing tag from rest of the line with space\n if (line.endsWith('/>')) {\n mergedLines.push(`${currentElement}${line.slice(0, -2)} />`)\n currentElement = ''\n // eslint-disable-next-line no-continue\n continue\n }\n\n if (line.endsWith('>')) {\n mergedLines.push(`${currentElement}${\n line.startsWith('>') || line.startsWith('<') ? '' : ' '\n }${line}`)\n currentElement = ''\n // eslint-disable-next-line no-continue\n continue\n }\n\n currentElement += currentElement.length ? ` ${line}` : line\n }\n\n return mergedLines\n}\n\nmodule.exports = {\n mergeAttributesWithElements,\n removeEmptyLines,\n}\n","const addIndentation = require('./utils/addIndentation')\nconst { mergeAttributesWithElements } = require('./utils/toLines')\n\n/**\n * @param {string} markup\n * @param {{ char?: string; count?: number }} options\n * @returns {string}\n */\nconst prettify = (markup, options = {}) => {\n const splitted = mergeAttributesWithElements(markup)\n\n return addIndentation(splitted, options)\n}\n\nmodule.exports = prettify\n","import { useRef as s, useCallback as h, useEffect as g } from \"react\";\nvar l = /* @__PURE__ */ ((e) => (e.Mouse = \"mouse\", e.Touch = \"touch\", e.Pointer = \"pointer\", e))(l || {}), d = /* @__PURE__ */ ((e) => (e.CancelledByMovement = \"cancelled-by-movement\", e.CancelledByRelease = \"cancelled-by-release\", e.CancelledOutsideElement = \"cancelled-outside-element\", e))(d || {});\nconst A = () => typeof window == \"object\" ? window?.PointerEvent ?? null : null, z = () => typeof window == \"object\" ? window?.TouchEvent ?? null : null;\nfunction U(e) {\n const { nativeEvent: t } = e, u = z();\n return u && t instanceof u || \"touches\" in e;\n}\nfunction X(e) {\n const t = A();\n return e.nativeEvent instanceof MouseEvent && !(t && e.nativeEvent instanceof t);\n}\nfunction Y(e) {\n const { nativeEvent: t } = e;\n if (!t)\n return !1;\n const u = A();\n return u && t instanceof u || \"pointerId\" in t;\n}\nfunction R(e) {\n return X(e) || U(e) || Y(e);\n}\nfunction j(e) {\n return U(e) ? {\n x: e.touches[0].pageX,\n y: e.touches[0].pageY\n } : X(e) || Y(e) ? {\n x: e.pageX,\n y: e.pageY\n } : null;\n}\nfunction G(e) {\n return {\n target: e.target,\n currentTarget: e.currentTarget,\n nativeEvent: e,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n persist: () => {\n }\n };\n}\nfunction J(e, {\n threshold: t = 400,\n captureEvent: u = !1,\n detect: y = l.Pointer,\n cancelOnMovement: w = !1,\n cancelOutsideElement: v = !0,\n filterEvents: p,\n onStart: M,\n onMove: C,\n onFinish: L,\n onCancel: b\n} = {}) {\n const P = s(!1), c = s(!1), I = s(), a = s(), T = s(e), f = s(null), E = h(\n (n) => (r) => {\n c.current || R(r) && (p !== void 0 && !p(r) || (u && r.persist(), M?.(r, { context: n }), f.current = j(r), c.current = !0, I.current = r.currentTarget, a.current = setTimeout(() => {\n T.current && (T.current(r, { context: n }), P.current = !0);\n }, t)));\n },\n [u, p, M, t]\n ), i = h(\n (n) => (r, o) => {\n R(r) && c.current && (f.current = null, u && r.persist(), P.current ? L?.(r, { context: n }) : c.current && b?.(r, { context: n, reason: o ?? d.CancelledByRelease }), P.current = !1, c.current = !1, a.current !== void 0 && clearTimeout(a.current));\n },\n [u, L, b]\n ), m = h(\n (n) => (r) => {\n if (C?.(r, { context: n }), w !== !1 && f.current) {\n const o = j(r);\n if (o) {\n const B = w === !0 ? 25 : w, D = {\n x: Math.abs(o.x - f.current.x),\n y: Math.abs(o.y - f.current.y)\n };\n (D.x > B || D.y > B) && i(n)(r, d.CancelledByMovement);\n }\n }\n },\n [i, w, C]\n ), q = h(\n (n) => {\n if (e === null)\n return {};\n switch (y) {\n case l.Mouse: {\n const r = {\n onMouseDown: E(n),\n onMouseMove: m(n),\n onMouseUp: i(n)\n };\n return v && (r.onMouseLeave = (o) => {\n i(n)(o, d.CancelledOutsideElement);\n }), r;\n }\n case l.Touch:\n return {\n onTouchStart: E(n),\n onTouchMove: m(n),\n onTouchEnd: i(n)\n };\n case l.Pointer: {\n const r = {\n onPointerDown: E(n),\n onPointerMove: m(n),\n onPointerUp: i(n)\n };\n return v && (r.onPointerLeave = (o) => i(n)(o, d.CancelledOutsideElement)), r;\n }\n }\n },\n [e, i, v, y, m, E]\n );\n return g(() => {\n if (!window)\n return;\n function n(r) {\n const o = G(r);\n i()(o);\n }\n return window.addEventListener(\"mouseup\", n), window.addEventListener(\"touchend\", n), window.addEventListener(\"pointerup\", n), () => {\n window.removeEventListener(\"mouseup\", n), window.removeEventListener(\"touchend\", n), window.removeEventListener(\"pointerup\", n);\n };\n }, [i]), g(\n () => () => {\n a.current !== void 0 && clearTimeout(a.current);\n },\n []\n ), g(() => {\n T.current = e;\n }, [e]), q;\n}\nexport {\n d as LongPressCallbackReason,\n l as LongPressEventType,\n J as useLongPress\n};\n","import { useState } from 'preact/hooks';\n\nimport shortenNumber from '../utils/shorten-number';\n\nimport EmojiText from './emoji-text';\nimport Icon from './icon';\nimport RelativeTime from './relative-time';\n\nexport default function Poll({\n poll,\n lang,\n readOnly,\n refresh = () => {},\n votePoll = () => {},\n}) {\n const [uiState, setUIState] = useState('default');\n const {\n expired,\n expiresAt,\n id,\n multiple,\n options,\n ownVotes,\n voted,\n votersCount,\n votesCount,\n emojis,\n } = poll;\n const expiresAtDate = !!expiresAt && new Date(expiresAt); // Update poll at point of expiry\n // NOTE: Disable this because setTimeout runs immediately if delay is too large\n // https://stackoverflow.com/a/56718027/20838\n // useEffect(() => {\n // let timeout;\n // if (!expired && expiresAtDate) {\n // const ms = expiresAtDate.getTime() - Date.now() + 1; // +1 to give it a little buffer\n // if (ms > 0) {\n // timeout = setTimeout(() => {\n // setUIState('loading');\n // (async () => {\n // // await refresh();\n // setUIState('default');\n // })();\n // }, ms);\n // }\n // }\n // return () => {\n // clearTimeout(timeout);\n // };\n // }, [expired, expiresAtDate]);\n\n const pollVotesCount = votersCount || votesCount;\n let roundPrecision = 0;\n\n if (pollVotesCount <= 1000) {\n roundPrecision = 0;\n } else if (pollVotesCount <= 10000) {\n roundPrecision = 1;\n } else if (pollVotesCount <= 100000) {\n roundPrecision = 2;\n }\n\n const [showResults, setShowResults] = useState(false);\n const optionsHaveVoteCounts = options.every((o) => o.votesCount !== null);\n\n return (\n \n {(showResults && optionsHaveVoteCounts) || voted || expired ? (\n <>\n
\n {options.map((option, i) => {\n const { title, votesCount: optionVotesCount } = option;\n const percentage = pollVotesCount\n ? ((optionVotesCount / pollVotesCount) * 100).toFixed(\n roundPrecision,\n )\n : 0; // check if current poll choice is the leading one\n\n const isLeading =\n optionVotesCount > 0 &&\n optionVotesCount ===\n Math.max(...options.map((o) => o.votesCount));\n return (\n
\n
\n \n \n \n {voted && ownVotes.includes(i) && (\n <>\n {' '}\n \n >\n )}\n
\n
\n {percentage}%\n
\n
\n );\n })}\n
\n {!expired && !voted && (\n
{\n e.preventDefault();\n setShowResults(false);\n }}\n >\n Hide results\n \n )}\n >\n ) : (\n
\n )}\n
\n {!expired && !readOnly && (\n {\n e.preventDefault();\n setUIState('loading');\n\n (async () => {\n await refresh();\n setUIState('default');\n })();\n }}\n title=\"Refresh\"\n >\n \n \n )}\n {!voted && !expired && !readOnly && optionsHaveVoteCounts && (\n {\n e.preventDefault();\n setShowResults(!showResults);\n }}\n title={showResults ? 'Hide results' : 'Show results'}\n >\n {' '}\n \n )}\n {!expired && !readOnly && ' '}\n {shortenNumber(votesCount)} vote\n {votesCount === 1 ? '' : 's'}\n {!!votersCount && votersCount !== votesCount && (\n <>\n {' '}\n • \n {shortenNumber(votersCount)}\n {' '}\n voter\n {votersCount === 1 ? '' : 's'}\n >\n )}{' '}\n • {expired ? 'Ended' : 'Ending'}{' '}\n {!!expiresAtDate && }\n
{' '}\n
\n );\n}\n","import { createContext } from 'preact';\n\nconst FilterContext = createContext();\nexport default FilterContext;\n","import mem from './mem';\nimport { getCurrentAccountID } from './store-utils';\n\nfunction _isFiltered(filtered, filterContext) {\n if (!filtered?.length) return false;\n const appliedFilters = filtered.filter((f) => {\n const { filter } = f;\n const hasContext = filter.context.includes(filterContext);\n if (!hasContext) return false;\n if (!filter.expiresAt) return hasContext;\n return new Date(filter.expiresAt) > new Date();\n });\n if (!appliedFilters.length) return false;\n const isHidden = appliedFilters.some((f) => f.filter.filterAction === 'hide');\n if (isHidden)\n return {\n action: 'hide',\n };\n const isWarn = appliedFilters.some((f) => f.filter.filterAction === 'warn');\n if (isWarn) {\n const filterTitles = appliedFilters.map((f) => f.filter.title);\n return {\n action: 'warn',\n titles: filterTitles,\n titlesStr: filterTitles.join(' • '),\n };\n }\n return false;\n}\nexport const isFiltered = mem(_isFiltered);\n\nexport function filteredItem(item, filterContext, currentAccountID) {\n const { filtered } = item;\n if (!filtered?.length) return true;\n const isSelf = currentAccountID && item.account?.id === currentAccountID;\n if (isSelf) return true;\n const filterState = isFiltered(filtered, filterContext);\n if (!filterState) return true;\n if (filterState.action === 'hide') return false;\n // item._filtered = filterState;\n return true;\n}\nexport function filteredItems(items, filterContext) {\n if (!items?.length) return [];\n if (!filterContext) return items;\n const currentAccountID = getCurrentAccountID();\n return items.filter((item) =>\n filteredItem(item, filterContext, currentAccountID),\n );\n}\n","const div = document.createElement('div');\nexport default function htmlContentLength(html) {\n if (!html) return 0;\n div.innerHTML = html;\n // .invisible spans for links\n // e.g. https:// mastodon.social\n div.querySelectorAll('.invisible').forEach((el) => {\n el.remove();\n });\n return div.innerText.length;\n}\n","export const supportsTTS = 'speechSynthesis' in window;\n\nexport function speak(text, lang) {\n if (!supportsTTS) return;\n try {\n if (speechSynthesis.speaking) {\n speechSynthesis.cancel();\n }\n const utterance = new SpeechSynthesisUtterance(text);\n if (lang) utterance.lang = lang;\n speechSynthesis.speak(utterance);\n } catch (e) {\n alert(e);\n }\n}\n","import getHTMLText from './getHTMLText';\n\nfunction statusPeek(status) {\n const { spoilerText, content, poll, mediaAttachments } = status;\n let text = '';\n if (spoilerText?.trim()) {\n text += spoilerText;\n } else {\n text += getHTMLText(content);\n }\n text = text.trim();\n if (poll?.options?.length) {\n text += `\\n\\n📊:\\n${poll.options\n .map((o) => `${poll.multiple ? '▪️' : '•'} ${o.title}`)\n .join('\\n')}`;\n }\n if (mediaAttachments?.length) {\n text +=\n ' ' +\n mediaAttachments\n .map(\n (m) =>\n ({\n image: '🖼️',\n gifv: '🎞️',\n video: '📹',\n audio: '🎵',\n unknown: '',\n }[m.type] || ''),\n )\n .join('');\n }\n return text;\n}\n\nexport default statusPeek;\n","import{useRef as r,useEffect as n,useMemo as t,useReducer as e,useCallback as u}from\"react\";function c(e,u,c){var i=this,a=r(null),o=r(0),f=r(null),l=r([]),v=r(),m=r(),d=r(e),g=r(!0);d.current=e;var p=\"undefined\"!=typeof window,w=!u&&0!==u&&p;if(\"function\"!=typeof e)throw new TypeError(\"Expected a function\");u=+u||0;var s=!!(c=c||{}).leading,x=!(\"trailing\"in c)||!!c.trailing,h=\"maxWait\"in c,y=\"debounceOnServer\"in c&&!!c.debounceOnServer,F=h?Math.max(+c.maxWait||0,u):null;n(function(){return g.current=!0,function(){g.current=!1}},[]);var A=t(function(){var r=function(r){var n=l.current,t=v.current;return l.current=v.current=null,o.current=r,m.current=d.current.apply(t,n)},n=function(r,n){w&&cancelAnimationFrame(f.current),f.current=w?requestAnimationFrame(r):setTimeout(r,n)},t=function(r){if(!g.current)return!1;var n=r-a.current;return!a.current||n>=u||n<0||h&&r-o.current>=F},e=function(n){return f.current=null,x&&l.current?r(n):(l.current=v.current=null,m.current)},c=function r(){var c=Date.now();if(t(c))return e(c);if(g.current){var i=u-(c-a.current),f=h?Math.min(i,F-(c-o.current)):i;n(r,f)}},A=function(){if(p||y){var e=Date.now(),d=t(e);if(l.current=[].slice.call(arguments),v.current=i,a.current=e,d){if(!f.current&&g.current)return o.current=a.current,n(c,u),s?r(a.current):m.current;if(h)return n(c,u),r(a.current)}return f.current||n(c,u),m.current}};return A.cancel=function(){f.current&&(w?cancelAnimationFrame(f.current):clearTimeout(f.current)),o.current=0,l.current=a.current=v.current=f.current=null},A.isPending=function(){return!!f.current},A.flush=function(){return f.current?e(Date.now()):m.current},A},[s,h,u,F,x,w,p,y]);return A}function i(r,n){return r===n}function a(r,n){return n}function o(n,t,o){var f=o&&o.equalityFn||i,l=e(a,n),v=l[0],m=l[1],d=c(u(function(r){return m(r)},[m]),t,o),g=r(n);return f(g.current,n)||(d(n),g.current=n),f(v,n)&&d.cancel(),[v,d]}function f(r,n,t){var e=void 0===t?{}:t,u=e.leading,i=e.trailing;return c(r,n,{maxWait:n,leading:void 0===u||u,trailing:void 0===i||i})}export{o as useDebounce,c as useDebouncedCallback,f as useThrottledCallback};\n//# sourceMappingURL=index.module.js.map\n","import { useRef, useEffect, useCallback, useState, useMemo } from 'react';\n\n// This could've been more streamlined with internal state instead of abusing\n// refs to such extent, but then composing hooks and components could not opt out of unnecessary renders.\nfunction useResolvedElement(subscriber, refOrElement) {\n var lastReportRef = useRef(null);\n var refOrElementRef = useRef(null);\n refOrElementRef.current = refOrElement;\n var cbElementRef = useRef(null); // Calling re-evaluation after each render without using a dep array,\n // as the ref object's current value could've changed since the last render.\n\n useEffect(function () {\n evaluateSubscription();\n });\n var evaluateSubscription = useCallback(function () {\n var cbElement = cbElementRef.current;\n var refOrElement = refOrElementRef.current; // Ugly ternary. But smaller than an if-else block.\n\n var element = cbElement ? cbElement : refOrElement ? refOrElement instanceof Element ? refOrElement : refOrElement.current : null;\n\n if (lastReportRef.current && lastReportRef.current.element === element && lastReportRef.current.subscriber === subscriber) {\n return;\n }\n\n if (lastReportRef.current && lastReportRef.current.cleanup) {\n lastReportRef.current.cleanup();\n }\n\n lastReportRef.current = {\n element: element,\n subscriber: subscriber,\n // Only calling the subscriber, if there's an actual element to report.\n // Setting cleanup to undefined unless a subscriber returns one, as an existing cleanup function would've been just called.\n cleanup: element ? subscriber(element) : undefined\n };\n }, [subscriber]); // making sure we call the cleanup function on unmount\n\n useEffect(function () {\n return function () {\n if (lastReportRef.current && lastReportRef.current.cleanup) {\n lastReportRef.current.cleanup();\n lastReportRef.current = null;\n }\n };\n }, []);\n return useCallback(function (element) {\n cbElementRef.current = element;\n evaluateSubscription();\n }, [evaluateSubscription]);\n}\n\n// We're only using the first element of the size sequences, until future versions of the spec solidify on how\n// exactly it'll be used for fragments in multi-column scenarios:\n// From the spec:\n// > The box size properties are exposed as FrozenArray in order to support elements that have multiple fragments,\n// > which occur in multi-column scenarios. However the current definitions of content rect and border box do not\n// > mention how those boxes are affected by multi-column layout. In this spec, there will only be a single\n// > ResizeObserverSize returned in the FrozenArray, which will correspond to the dimensions of the first column.\n// > A future version of this spec will extend the returned FrozenArray to contain the per-fragment size information.\n// (https://drafts.csswg.org/resize-observer/#resize-observer-entry-interface)\n//\n// Also, testing these new box options revealed that in both Chrome and FF everything is returned in the callback,\n// regardless of the \"box\" option.\n// The spec states the following on this:\n// > This does not have any impact on which box dimensions are returned to the defined callback when the event\n// > is fired, it solely defines which box the author wishes to observe layout changes on.\n// (https://drafts.csswg.org/resize-observer/#resize-observer-interface)\n// I'm not exactly clear on what this means, especially when you consider a later section stating the following:\n// > This section is non-normative. An author may desire to observe more than one CSS box.\n// > In this case, author will need to use multiple ResizeObservers.\n// (https://drafts.csswg.org/resize-observer/#resize-observer-interface)\n// Which is clearly not how current browser implementations behave, and seems to contradict the previous quote.\n// For this reason I decided to only return the requested size,\n// even though it seems we have access to results for all box types.\n// This also means that we get to keep the current api, being able to return a simple { width, height } pair,\n// regardless of box option.\nfunction extractSize(entry, boxProp, sizeType) {\n if (!entry[boxProp]) {\n if (boxProp === \"contentBoxSize\") {\n // The dimensions in `contentBoxSize` and `contentRect` are equivalent according to the spec.\n // See the 6th step in the description for the RO algorithm:\n // https://drafts.csswg.org/resize-observer/#create-and-populate-resizeobserverentry-h\n // > Set this.contentRect to logical this.contentBoxSize given target and observedBox of \"content-box\".\n // In real browser implementations of course these objects differ, but the width/height values should be equivalent.\n return entry.contentRect[sizeType === \"inlineSize\" ? \"width\" : \"height\"];\n }\n\n return undefined;\n } // A couple bytes smaller than calling Array.isArray() and just as effective here.\n\n\n return entry[boxProp][0] ? entry[boxProp][0][sizeType] : // TS complains about this, because the RO entry type follows the spec and does not reflect Firefox's current\n // behaviour of returning objects instead of arrays for `borderBoxSize` and `contentBoxSize`.\n // @ts-ignore\n entry[boxProp][sizeType];\n}\n\nfunction useResizeObserver(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n // Saving the callback as a ref. With this, I don't need to put onResize in the\n // effect dep array, and just passing in an anonymous function without memoising\n // will not reinstantiate the hook's ResizeObserver.\n var onResize = opts.onResize;\n var onResizeRef = useRef(undefined);\n onResizeRef.current = onResize;\n var round = opts.round || Math.round; // Using a single instance throughout the hook's lifetime\n\n var resizeObserverRef = useRef();\n\n var _useState = useState({\n width: undefined,\n height: undefined\n }),\n size = _useState[0],\n setSize = _useState[1]; // In certain edge cases the RO might want to report a size change just after\n // the component unmounted.\n\n\n var didUnmount = useRef(false);\n useEffect(function () {\n didUnmount.current = false;\n return function () {\n didUnmount.current = true;\n };\n }, []); // Using a ref to track the previous width / height to avoid unnecessary renders.\n\n var previous = useRef({\n width: undefined,\n height: undefined\n }); // This block is kinda like a useEffect, only it's called whenever a new\n // element could be resolved based on the ref option. It also has a cleanup\n // function.\n\n var refCallback = useResolvedElement(useCallback(function (element) {\n // We only use a single Resize Observer instance, and we're instantiating it on demand, only once there's something to observe.\n // This instance is also recreated when the `box` option changes, so that a new observation is fired if there was a previously observed element with a different box option.\n if (!resizeObserverRef.current || resizeObserverRef.current.box !== opts.box || resizeObserverRef.current.round !== round) {\n resizeObserverRef.current = {\n box: opts.box,\n round: round,\n instance: new ResizeObserver(function (entries) {\n var entry = entries[0];\n var boxProp = opts.box === \"border-box\" ? \"borderBoxSize\" : opts.box === \"device-pixel-content-box\" ? \"devicePixelContentBoxSize\" : \"contentBoxSize\";\n var reportedWidth = extractSize(entry, boxProp, \"inlineSize\");\n var reportedHeight = extractSize(entry, boxProp, \"blockSize\");\n var newWidth = reportedWidth ? round(reportedWidth) : undefined;\n var newHeight = reportedHeight ? round(reportedHeight) : undefined;\n\n if (previous.current.width !== newWidth || previous.current.height !== newHeight) {\n var newSize = {\n width: newWidth,\n height: newHeight\n };\n previous.current.width = newWidth;\n previous.current.height = newHeight;\n\n if (onResizeRef.current) {\n onResizeRef.current(newSize);\n } else {\n if (!didUnmount.current) {\n setSize(newSize);\n }\n }\n }\n })\n };\n }\n\n resizeObserverRef.current.instance.observe(element, {\n box: opts.box\n });\n return function () {\n if (resizeObserverRef.current) {\n resizeObserverRef.current.instance.unobserve(element);\n }\n };\n }, [opts.box, round]), opts.ref);\n return useMemo(function () {\n return {\n ref: refCallback,\n width: size.width,\n height: size.height\n };\n }, [refCallback, size.width, size.height]);\n}\n\nexport { useResizeObserver as default };\n","import { useRef } from 'preact/hooks';\nimport { useThrottledCallback } from 'use-debounce';\nimport useResizeObserver from 'use-resize-observer';\n\nexport default function useTruncated({ className = 'truncated' } = {}) {\n const ref = useRef();\n const onResize = useThrottledCallback(({ height }) => {\n if (ref.current) {\n const { scrollHeight } = ref.current;\n let truncated = scrollHeight > height;\n if (truncated) {\n const { height: _height, maxHeight } = getComputedStyle(ref.current);\n const computedHeight = parseInt(maxHeight || _height, 10);\n truncated = scrollHeight > computedHeight;\n }\n ref.current.classList.toggle(className, truncated);\n }\n }, 300);\n useResizeObserver({\n ref,\n box: 'border-box',\n onResize,\n });\n return ref;\n}\n","export default {\n public: 'earth',\n unlisted: 'group',\n private: 'lock',\n direct: 'message',\n};\n","export var styleRoot = 'kvfysmfp';\nexport var styleChild = 'ufhsfnkm';\nexport var styles = \".\".concat(styleRoot, \"{overflow:hidden;touch-action:none}.\").concat(styleChild, \"{transform-origin: 0 0}\");\n","var isSsr = typeof window === 'undefined';\nexport var isTouch = function () {\n return !isSsr && ('ontouchstart' in window || navigator.maxTouchPoints > 0);\n};\nexport var make2dTransformValue = function (_a) {\n var x = _a.x, y = _a.y, scale = _a.scale;\n return \"scale(\".concat(scale, \") translate(\").concat(x, \"px, \").concat(y, \"px)\");\n};\nexport var make3dTransformValue = function (_a) {\n var x = _a.x, y = _a.y, scale = _a.scale;\n return \"scale3d(\".concat(scale, \",\").concat(scale, \", 1) translate3d(\").concat(x, \"px, \").concat(y, \"px, 0)\");\n};\nexport var hasTranslate3DSupport = function () {\n var css = !isSsr && window.CSS;\n return css && css.supports && css.supports('transform', 'translate3d(0,0,0)');\n};\n","var min = Math.min, max = Math.max;\nexport function getOffsetBounds(_a) {\n var containerDimension = _a.containerDimension, childDimension = _a.childDimension, padding = _a.padding, centerContained = _a.centerContained;\n var diff = childDimension - containerDimension;\n if (diff + 2 * padding <= 0 && centerContained) {\n return [diff / 2, diff / 2];\n }\n else {\n return [min(diff + padding, 0) - padding, max(0, diff + padding)];\n }\n}\n","import { __assign, __extends } from \"tslib\";\nimport React, { Component, createRef, Children, cloneElement } from 'react';\nimport { styleRoot, styleChild, styles } from './styles.css';\nimport { isTouch } from '../utils';\nimport { getOffsetBounds } from './getOffsetBounds';\nvar classnames = function (base, other) {\n return other ? \"\".concat(base, \" \").concat(other) : base;\n};\nvar abs = Math.abs, min = Math.min, sqrt = Math.sqrt;\nvar isSsr = typeof window === 'undefined';\nvar isMac = isSsr ? false : /(Mac)/i.test(navigator.platform);\nvar isDragInteraction = function (i) { return i === 'drag'; };\nvar isZoomInteraction = function (i) { return i === 'zoom'; };\nvar isZoomGesture = function (wheelEvent) { return isMac && wheelEvent.ctrlKey; };\nvar cancelEvent = function (event) {\n event.stopPropagation();\n event.preventDefault();\n};\nvar getDistance = function (a, b) {\n var x = a.x - b.x;\n var y = a.y - b.y;\n return sqrt(x * x + y * y);\n};\nvar calculateScale = function (startTouches, endTouches) {\n var startDistance = getDistance(startTouches[0], startTouches[1]);\n var endDistance = getDistance(endTouches[0], endTouches[1]);\n return endDistance / startDistance;\n};\nvar isCloseTo = function (value, expected) {\n return value > expected - 0.01 && value < expected + 0.01;\n};\nvar swing = function (p) { return -Math.cos(p * Math.PI) / 2 + 0.5; };\nvar getPointByPageCoordinates = function (touch) { return ({\n x: touch.pageX,\n y: touch.pageY,\n}); };\nvar getPageCoordinatesByTouches = function (touches) {\n return Array.from(touches).map(getPointByPageCoordinates);\n};\nvar sum = function (a, b) { return a + b; };\nvar getVectorAvg = function (vectors) { return ({\n x: vectors.map(function (_a) {\n var x = _a.x;\n return x;\n }).reduce(sum, 0) / vectors.length,\n y: vectors.map(function (_a) {\n var y = _a.y;\n return y;\n }).reduce(sum, 0) / vectors.length,\n}); };\nvar clamp = function (min, max, value) {\n return value < min ? min : value > max ? max : value;\n};\nvar shouldInterceptWheel = function (event) {\n return !(event.ctrlKey || event.metaKey);\n};\nvar getElementSize = function (element) {\n if (element) {\n var offsetWidth = element.offsetWidth, offsetHeight = element.offsetHeight;\n // Any DOMElement\n if (offsetWidth && offsetHeight) {\n return { width: offsetWidth, height: offsetHeight };\n }\n // Svg support\n var style = getComputedStyle(element);\n var width = parseFloat(style.width);\n var height = parseFloat(style.height);\n if (height && width) {\n return { width: width, height: height };\n }\n }\n return { width: 0, height: 0 };\n};\nvar calculateVelocity = function (startPoint, endPoint) { return ({\n x: endPoint.x - startPoint.x,\n y: endPoint.y - startPoint.y,\n}); };\nvar comparePoints = function (p1, p2) { return p1.x === p2.x && p1.y === p2.y; };\nvar noup = function () { };\nvar zeroPoint = { x: 0, y: 0 };\nvar PinchZoom = /** @class */ (function (_super) {\n __extends(PinchZoom, _super);\n function PinchZoom() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._prevDragMovePoint = null;\n _this._containerObserver = null;\n _this._fingers = 0;\n _this._firstMove = true;\n _this._initialOffset = __assign({}, zeroPoint);\n _this._interaction = null;\n _this._isDoubleTap = false;\n _this._isOffsetsSet = false;\n _this._lastDragPosition = null;\n _this._lastScale = 1;\n _this._lastTouchStart = 0;\n _this._lastZoomCenter = null;\n _this._listenMouseMove = false;\n _this._nthZoom = 0;\n _this._offset = __assign({}, zeroPoint);\n _this._startOffset = __assign({}, zeroPoint);\n _this._startTouches = null;\n _this._updatePlaned = false;\n _this._wheelTimeOut = null;\n _this._zoomFactor = 1;\n _this._initialZoomFactor = 1;\n _this._draggingPoint = __assign({}, zeroPoint);\n // It help reduce behavior difference between touch and mouse events\n _this._ignoreNextClick = false;\n // @ts-ignore\n _this._containerRef = createRef();\n _this._handleClick = function (clickEvent) {\n if (_this._ignoreNextClick) {\n _this._ignoreNextClick = false;\n clickEvent.stopPropagation();\n }\n };\n _this._onResize = function () {\n var _a;\n if ((_a = _this._containerRef) === null || _a === void 0 ? void 0 : _a.current) {\n _this._updateInitialZoomFactor();\n _this._setupOffsets();\n _this._update();\n }\n };\n _this._handlerOnTouchEnd = _this._handlerIfEnable(function (touchEndEvent) {\n _this._fingers = touchEndEvent.touches.length;\n if (_this.props.shouldCancelHandledTouchEndEvents &&\n (isZoomInteraction(_this._interaction) ||\n (isDragInteraction(_this._interaction) &&\n (_this._startOffset.x !== _this._offset.x ||\n _this._startOffset.y !== _this._offset.y)))) {\n cancelEvent(touchEndEvent);\n }\n if (isDragInteraction(_this._interaction) && !_this._enoughToDrag()) {\n _this._handleClick(touchEndEvent);\n }\n _this._updateInteraction(touchEndEvent);\n });\n _this._handlerOnTouchStart = _this._handlerIfEnable(function (touchStartEvent) {\n _this._firstMove = true;\n _this._fingers = touchStartEvent.touches.length;\n _this._detectDoubleTap(touchStartEvent);\n });\n _this._handlerOnTouchMove = _this._handlerIfEnable(function (touchMoveEvent) {\n if (_this._isDoubleTap) {\n return;\n }\n _this._collectInertia(touchMoveEvent);\n if (_this._firstMove) {\n _this._updateInteraction(touchMoveEvent);\n if (_this._interaction) {\n cancelEvent(touchMoveEvent);\n }\n _this._startOffset = __assign({}, _this._offset);\n _this._startTouches = getPageCoordinatesByTouches(touchMoveEvent.touches);\n }\n else {\n if (isZoomInteraction(_this._interaction)) {\n if (_this._startTouches &&\n _this._startTouches.length === 2 &&\n touchMoveEvent.touches.length === 2) {\n _this._handleZoom(touchMoveEvent, calculateScale(_this._startTouches, getPageCoordinatesByTouches(touchMoveEvent.touches)));\n }\n }\n else if (isDragInteraction(_this._interaction)) {\n _this._handleDrag(touchMoveEvent);\n }\n if (_this._interaction) {\n cancelEvent(touchMoveEvent);\n _this._update();\n }\n }\n _this._firstMove = false;\n });\n _this._handlerWheel = function (wheelEvent) {\n if (_this.props.shouldInterceptWheel(wheelEvent)) {\n return;\n }\n cancelEvent(wheelEvent);\n var pageX = wheelEvent.pageX, pageY = wheelEvent.pageY, deltaY = wheelEvent.deltaY, deltaMode = wheelEvent.deltaMode;\n var scaleDelta = 1;\n if (isZoomGesture(wheelEvent) || deltaMode === 1) {\n scaleDelta = 15;\n }\n var likeTouchEvent = {\n touches: [\n // @ts-ignore\n { pageX: pageX, pageY: pageY },\n ],\n };\n var center = _this._getOffsetByFirstTouch(likeTouchEvent);\n var dScale = deltaY * scaleDelta;\n _this._stopAnimation();\n _this._scaleTo(_this._zoomFactor - dScale / _this.props.wheelScaleFactor, center);\n _this._update();\n clearTimeout(\n // @ts-ignore\n _this._wheelTimeOut);\n _this._wheelTimeOut = setTimeout(function () { return _this._sanitize(); }, 100);\n };\n // @ts-ignore\n _this._handlers = _this.props.isTouch()\n ? [\n ['touchstart', _this._handlerOnTouchStart],\n ['touchend', _this._handlerOnTouchEnd],\n ['touchmove', _this._handlerOnTouchMove],\n ]\n : [\n [\n 'mousemove',\n _this.simulate(_this._handlerOnTouchMove),\n _this.props._document,\n ],\n [\n 'mouseup',\n _this.simulate(_this._handlerOnTouchEnd),\n _this.props._document,\n ],\n ['mousedown', _this.simulate(_this._handlerOnTouchStart)],\n ['click', _this._handleClick],\n ['wheel', _this._handlerWheel],\n ];\n return _this;\n }\n PinchZoom.prototype._handleDragStart = function (event) {\n this._ignoreNextClick = true;\n this.props.onDragStart();\n this._stopAnimation();\n this._resetInertia();\n this._lastDragPosition = null;\n this._hasInteraction = true;\n this._draggingPoint = this._offset;\n this._handleDrag(event);\n };\n PinchZoom.prototype._handleDrag = function (event) {\n var touch = this._getOffsetByFirstTouch(event);\n if (this._enoughToDrag()) {\n this._drag(touch, this._lastDragPosition);\n }\n else {\n this._virtualDrag(touch, this._lastDragPosition);\n }\n this._offset = this._sanitizeOffset(this._offset);\n this._lastDragPosition = touch;\n };\n PinchZoom.prototype._resetInertia = function () {\n this._velocity = null;\n this._prevDragMovePoint = null;\n };\n PinchZoom.prototype._realizeInertia = function () {\n var _this = this;\n var _a = this.props, inertiaFriction = _a.inertiaFriction, inertia = _a.inertia;\n if (!inertia || !this._velocity) {\n return;\n }\n var _b = this._velocity, x = _b.x, y = _b.y;\n if (x || y) {\n this._stopAnimation();\n this._resetInertia();\n var renderFrame = function () {\n x *= inertiaFriction;\n y *= inertiaFriction;\n if (!x && !y) {\n return _this._stopAnimation();\n }\n var prevOffset = __assign({}, _this._offset);\n _this._addOffset({ x: x, y: y });\n _this._offset = _this._sanitizeOffset(_this._offset);\n if (comparePoints(prevOffset, _this._offset)) {\n return _this._stopAnimation();\n }\n _this._update({ isAnimation: true });\n };\n this._animate(renderFrame, { duration: 9999 });\n }\n };\n PinchZoom.prototype._collectInertia = function (_a) {\n var touches = _a.touches;\n if (!this.props.inertia) {\n return;\n }\n var currentCoordinates = getPageCoordinatesByTouches(touches)[0];\n var prevPoint = this._prevDragMovePoint;\n if (prevPoint) {\n this._velocity = calculateVelocity(currentCoordinates, prevPoint);\n }\n this._prevDragMovePoint = currentCoordinates;\n };\n PinchZoom.prototype._handleDragEnd = function () {\n this.props.onDragEnd();\n this._end();\n this._realizeInertia();\n };\n PinchZoom.prototype._handleZoomStart = function () {\n this.props.onZoomStart();\n this._stopAnimation();\n this._lastScale = 1;\n this._nthZoom = 0;\n this._lastZoomCenter = null;\n this._hasInteraction = true;\n };\n PinchZoom.prototype._handleZoom = function (event, newScale) {\n var touchCenter = getVectorAvg(this._getOffsetTouches(event));\n var scale = newScale / this._lastScale;\n this._lastScale = newScale;\n // The first touch events are thrown away since they are not precise\n this._nthZoom += 1;\n if (this._nthZoom > 3) {\n this._scale(scale, touchCenter);\n this._drag(touchCenter, this._lastZoomCenter);\n if (this.props.enforceBoundsDuringZoom) {\n this._offset = this._sanitizeOffset(this._offset);\n }\n }\n this._lastZoomCenter = touchCenter;\n };\n PinchZoom.prototype._handleZoomEnd = function () {\n this.props.onZoomEnd();\n this._end();\n };\n PinchZoom.prototype._handleDoubleTap = function (event) {\n var _this = this;\n if (this._hasInteraction || this.props.tapZoomFactor === 0) {\n return;\n }\n var needZoomOut = (this.props.doubleTapZoomOutOnMaxScale &&\n this._zoomFactor === this.props.maxZoom) ||\n (this.props.doubleTapToggleZoom && this._zoomFactor > 1);\n this.props.onDoubleTap();\n this._ignoreNextClick = true;\n var zoomFactor = this._zoomFactor + this.props.tapZoomFactor;\n var startZoomFactor = this._zoomFactor;\n var updateProgress = function (progress) {\n _this._scaleTo(startZoomFactor + progress * (zoomFactor - startZoomFactor), center);\n };\n var center = this._getOffsetByFirstTouch(event);\n this._isDoubleTap = true;\n if (startZoomFactor > zoomFactor) {\n center = this._getCurrentZoomCenter();\n }\n needZoomOut ? this._zoomOutAnimation() : this._animate(updateProgress);\n };\n PinchZoom.prototype._computeInitialOffset = function () {\n var rect = this._getContainerRect();\n var _a = this._getChildSize(), width = _a.width, height = _a.height;\n var x = -abs(width * this._getInitialZoomFactor() - rect.width) / 2;\n var y = -abs(height * this._getInitialZoomFactor() - rect.height) / 2;\n this._initialOffset = { x: x, y: y };\n };\n PinchZoom.prototype._resetOffset = function () {\n this._offset = __assign({}, this._initialOffset);\n };\n PinchZoom.prototype._setupOffsets = function () {\n if (this.props.setOffsetsOnce && this._isOffsetsSet) {\n return;\n }\n this._isOffsetsSet = true;\n this._computeInitialOffset();\n this._resetOffset();\n };\n PinchZoom.prototype._sanitizeOffset = function (offset) {\n var rect = this._getContainerRect();\n var _a = this._getChildSize(), width = _a.width, height = _a.height;\n var elWidth = width * this._getInitialZoomFactor() * this._zoomFactor;\n var elHeight = height * this._getInitialZoomFactor() * this._zoomFactor;\n var _b = getOffsetBounds({\n containerDimension: rect.width,\n childDimension: elWidth,\n padding: this.props.horizontalPadding,\n centerContained: this.props.centerContained,\n }), minOffsetX = _b[0], maxOffsetX = _b[1];\n var _c = getOffsetBounds({\n containerDimension: rect.height,\n childDimension: elHeight,\n padding: this.props.verticalPadding,\n centerContained: this.props.centerContained,\n }), minOffsetY = _c[0], maxOffsetY = _c[1];\n return {\n x: clamp(minOffsetX, maxOffsetX, offset.x),\n y: clamp(minOffsetY, maxOffsetY, offset.y),\n };\n };\n PinchZoom.prototype.alignCenter = function (options) {\n var _this = this;\n var _a = __assign({ duration: 250, animated: true }, options), __x = _a.x, __y = _a.y, scale = _a.scale, animated = _a.animated, duration = _a.duration;\n // Bug-Fix: https://github.com/retyui/react-quick-pinch-zoom/issues/58\n var x = __x * this._initialZoomFactor;\n var y = __y * this._initialZoomFactor;\n var startZoomFactor = this._zoomFactor;\n var startOffset = __assign({}, this._offset);\n var rect = this._getContainerRect();\n var containerCenter = { x: rect.width / 2, y: rect.height / 2 };\n this._zoomFactor = 1;\n this._offset = { x: -(containerCenter.x - x), y: -(containerCenter.y - y) };\n this._scaleTo(scale, containerCenter);\n this._stopAnimation();\n if (!animated) {\n return this._update();\n }\n var diffZoomFactor = this._zoomFactor - startZoomFactor;\n var diffOffset = {\n x: this._offset.x - startOffset.x,\n y: this._offset.y - startOffset.y,\n };\n this._zoomFactor = startZoomFactor;\n this._offset = __assign({}, startOffset);\n var updateFrame = function (progress) {\n var x = startOffset.x + diffOffset.x * progress;\n var y = startOffset.y + diffOffset.y * progress;\n _this._zoomFactor = startZoomFactor + diffZoomFactor * progress;\n _this._offset = _this._sanitizeOffset({ x: x, y: y });\n _this._update();\n };\n this._animate(updateFrame, {\n callback: function () { return _this._sanitize(); },\n duration: duration,\n });\n };\n PinchZoom.prototype.scaleTo = function (options) {\n var _this = this;\n var _a = __assign({ duration: 250, animated: true }, options), x = _a.x, y = _a.y, scale = _a.scale, animated = _a.animated, duration = _a.duration;\n var startZoomFactor = this._zoomFactor;\n var startOffset = __assign({}, this._offset);\n this._zoomFactor = 1;\n this._offset = { x: 0, y: 0 };\n this._scaleTo(scale, { x: x, y: y });\n this._stopAnimation();\n if (!animated) {\n return this._update();\n }\n var diffZoomFactor = this._zoomFactor - startZoomFactor;\n var diffOffset = {\n x: this._offset.x - startOffset.x,\n y: this._offset.y - startOffset.y,\n };\n this._zoomFactor = startZoomFactor;\n this._offset = __assign({}, startOffset);\n var updateFrame = function (progress) {\n var x = startOffset.x + diffOffset.x * progress;\n var y = startOffset.y + diffOffset.y * progress;\n _this._zoomFactor = startZoomFactor + diffZoomFactor * progress;\n _this._offset = { x: x, y: y };\n _this._update();\n };\n this._animate(updateFrame, { callback: function () { return _this._sanitize(); }, duration: duration });\n };\n PinchZoom.prototype._scaleTo = function (zoomFactor, center) {\n this._scale(zoomFactor / this._zoomFactor, center);\n this._offset = this._sanitizeOffset(this._offset);\n };\n PinchZoom.prototype._scale = function (scale, center) {\n scale = this._scaleZoomFactor(scale);\n this._addOffset({\n x: (scale - 1) * (center.x + this._offset.x),\n y: (scale - 1) * (center.y + this._offset.y),\n });\n this.props.onZoomUpdate();\n };\n PinchZoom.prototype._scaleZoomFactor = function (scale) {\n var originalZoomFactor = this._zoomFactor;\n this._zoomFactor *= scale;\n this._zoomFactor = clamp(this.props.minZoom, this.props.maxZoom, this._zoomFactor);\n return this._zoomFactor / originalZoomFactor;\n };\n PinchZoom.prototype._canDrag = function () {\n return this.props.draggableUnZoomed || !isCloseTo(this._zoomFactor, 1);\n };\n PinchZoom.prototype._drag = function (center, lastCenter) {\n if (lastCenter) {\n var y = -(center.y - lastCenter.y);\n var x = -(center.x - lastCenter.x);\n if (!this.props.lockDragAxis) {\n this._addOffset({\n x: x,\n y: y,\n });\n }\n else {\n // lock scroll to position that was changed the most\n if (abs(x) > abs(y)) {\n this._addOffset({\n x: x,\n y: 0,\n });\n }\n else {\n this._addOffset({\n y: y,\n x: 0,\n });\n }\n }\n this.props.onDragUpdate();\n }\n };\n PinchZoom.prototype._virtualDrag = function (center, lastCenter) {\n if (lastCenter) {\n var y = -(center.y - lastCenter.y);\n var x = -(center.x - lastCenter.x);\n this._draggingPoint = {\n x: x + this._draggingPoint.x,\n y: y + this._draggingPoint.y,\n };\n }\n };\n PinchZoom.prototype._addOffset = function (offset) {\n var _a = this._offset, x = _a.x, y = _a.y;\n this._offset = {\n x: x + offset.x,\n y: y + offset.y,\n };\n };\n PinchZoom.prototype._sanitize = function () {\n if (this._zoomFactor < this.props.zoomOutFactor) {\n this._resetInertia();\n this._zoomOutAnimation();\n }\n else if (this._isInsaneOffset()) {\n this._sanitizeOffsetAnimation();\n }\n };\n PinchZoom.prototype._isInsaneOffset = function () {\n var offset = this._offset;\n var sanitizedOffset = this._sanitizeOffset(offset);\n return sanitizedOffset.x !== offset.x || sanitizedOffset.y !== offset.y;\n };\n PinchZoom.prototype._sanitizeOffsetAnimation = function () {\n var _this = this;\n var targetOffset = this._sanitizeOffset(this._offset);\n var startOffset = __assign({}, this._offset);\n var updateProgress = function (progress) {\n var x = startOffset.x + progress * (targetOffset.x - startOffset.x);\n var y = startOffset.y + progress * (targetOffset.y - startOffset.y);\n _this._offset = { x: x, y: y };\n _this._update();\n };\n this._animate(updateProgress);\n };\n PinchZoom.prototype._zoomOutAnimation = function () {\n var _this = this;\n if (this._zoomFactor === 1) {\n return;\n }\n var startZoomFactor = this._zoomFactor;\n var zoomFactor = 1;\n var center = this._getCurrentZoomCenter();\n var updateProgress = function (progress) {\n var scaleFactor = startZoomFactor + progress * (zoomFactor - startZoomFactor);\n _this._scaleTo(scaleFactor, center);\n };\n this._animate(updateProgress);\n };\n PinchZoom.prototype._getInitialZoomFactor = function () {\n return this._initialZoomFactor;\n };\n PinchZoom.prototype._getCurrentZoomCenter = function () {\n var _a = this._offset, x = _a.x, y = _a.y;\n var offsetLeft = x - this._initialOffset.x;\n var offsetTop = y - this._initialOffset.y;\n return {\n x: -1 * x - offsetLeft / (1 / this._zoomFactor - 1),\n y: -1 * y - offsetTop / (1 / this._zoomFactor - 1),\n };\n };\n PinchZoom.prototype._getOffsetByFirstTouch = function (event) {\n return this._getOffsetTouches(event)[0];\n };\n PinchZoom.prototype._getOffsetTouches = function (event) {\n var _document = this.props._document;\n var _html = _document.documentElement;\n var _body = _document.body;\n var _a = this._getContainerRect(), top = _a.top, left = _a.left;\n var scrollTop = _html.scrollTop || _body.scrollTop;\n var scrollLeft = _html.scrollLeft || _body.scrollLeft;\n var posTop = top + scrollTop;\n var posLeft = left + scrollLeft;\n return getPageCoordinatesByTouches(event.touches).map(function (_a) {\n var x = _a.x, y = _a.y;\n return ({\n x: x - posLeft,\n y: y - posTop,\n });\n });\n };\n PinchZoom.prototype._animate = function (frameFn, options) {\n var _this = this;\n var startTime = new Date().getTime();\n var _a = __assign({ timeFn: swing, callback: function () { }, duration: this.props.animationDuration }, options), timeFn = _a.timeFn, callback = _a.callback, duration = _a.duration;\n var renderFrame = function () {\n if (!_this._inAnimation) {\n return;\n }\n var frameTime = new Date().getTime() - startTime;\n var progress = frameTime / duration;\n if (frameTime >= duration) {\n frameFn(1);\n _this._stopAnimation();\n callback();\n _this._update();\n }\n else {\n progress = timeFn(progress);\n frameFn(progress);\n _this._update({ isAnimation: true });\n requestAnimationFrame(renderFrame);\n }\n };\n this._inAnimation = true;\n requestAnimationFrame(renderFrame);\n };\n PinchZoom.prototype._stopAnimation = function () {\n this._inAnimation = false;\n };\n PinchZoom.prototype._end = function () {\n this._hasInteraction = false;\n this._sanitize();\n this._update();\n };\n PinchZoom.prototype._getContainerRect = function () {\n var div = this._containerRef.current;\n return div.getBoundingClientRect();\n };\n PinchZoom.prototype._getChildSize = function () {\n var div = this._containerRef.current;\n return getElementSize(div === null || div === void 0 ? void 0 : div.firstElementChild);\n };\n PinchZoom.prototype._updateInitialZoomFactor = function () {\n var rect = this._getContainerRect();\n var size = this._getChildSize();\n var xZoomFactor = rect.width / size.width;\n var yZoomFactor = rect.height / size.height;\n this._initialZoomFactor = min(xZoomFactor, yZoomFactor);\n };\n PinchZoom.prototype._bindEvents = function () {\n var _this = this;\n var div = this._containerRef.current;\n if (window.ResizeObserver) {\n this._containerObserver = new ResizeObserver(this._onResize);\n this._containerObserver.observe(div);\n }\n else {\n window.addEventListener('resize', this._onResize);\n }\n this._handlers.forEach(function (_a) {\n var eventName = _a[0], fn = _a[1], target = _a[2];\n (target || div).addEventListener(eventName, fn, true);\n });\n Array.from(div.querySelectorAll('img')).forEach(function (img) {\n return img.addEventListener('load', _this._onResize);\n });\n };\n PinchZoom.prototype._unSubscribe = function () {\n var _this = this;\n var div = this._containerRef.current;\n if (this._containerObserver) {\n this._containerObserver.disconnect();\n this._containerObserver = null;\n }\n window.removeEventListener('resize', this._onResize);\n this._handlers.forEach(function (_a) {\n var eventName = _a[0], fn = _a[1], target = _a[2];\n (target || div).removeEventListener(eventName, fn, true);\n });\n Array.from(div.querySelectorAll('img')).forEach(function (img) {\n return img.removeEventListener('load', _this._onResize);\n });\n };\n PinchZoom.prototype._update = function (options) {\n var _this = this;\n if (this._updatePlaned) {\n return;\n }\n var updateFrame = function () {\n var scale = _this._getInitialZoomFactor() * _this._zoomFactor;\n var x = -_this._offset.x / scale;\n var y = -_this._offset.y / scale;\n _this.props.onUpdate({ scale: scale, x: x, y: y });\n };\n if (options === null || options === void 0 ? void 0 : options.isAnimation) {\n return updateFrame();\n }\n this._updatePlaned = true;\n requestAnimationFrame(function () {\n _this._updatePlaned = false;\n updateFrame();\n });\n };\n PinchZoom.prototype._handlerIfEnable = function (fn) {\n var _this = this;\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (_this.props.enabled) {\n fn.apply(void 0, args);\n }\n };\n };\n PinchZoom.prototype._setInteraction = function (newInteraction, event) {\n var interaction = this._interaction;\n if (interaction !== newInteraction) {\n if (interaction && !newInteraction) {\n if (isZoomInteraction(interaction)) {\n this._handleZoomEnd();\n }\n else if (isDragInteraction(interaction)) {\n this._handleDragEnd();\n }\n }\n if (isZoomInteraction(newInteraction)) {\n this._handleZoomStart();\n }\n else if (isDragInteraction(newInteraction)) {\n this._handleDragStart(event);\n }\n }\n this._interaction = newInteraction;\n };\n PinchZoom.prototype._distanceBetweenNumbers = function (a, b) {\n return a > b ? a - b : b - a;\n };\n PinchZoom.prototype._enoughToDrag = function () {\n if (this._distanceBetweenNumbers(this._startOffset.x, this._draggingPoint.x) >\n 5 ||\n this._distanceBetweenNumbers(this._startOffset.y, this._draggingPoint.y) >\n 5)\n return true;\n return false;\n };\n PinchZoom.prototype._updateInteraction = function (event) {\n var fingers = this._fingers;\n if (fingers === 2) {\n return this._setInteraction('zoom', event);\n }\n if (fingers === 1 && this._canDrag()) {\n return this._setInteraction('drag', event);\n }\n this._setInteraction(null, event);\n };\n PinchZoom.prototype._detectDoubleTap = function (event) {\n var time = new Date().getTime();\n if (this._fingers > 1) {\n this._lastTouchStart = 0;\n }\n if (time - this._lastTouchStart < 300) {\n cancelEvent(event);\n this._handleDoubleTap(event);\n if (isZoomInteraction(this._interaction)) {\n this._handleZoomEnd();\n }\n else if (isDragInteraction(this._interaction)) {\n this._handleDragEnd();\n }\n }\n else {\n this._isDoubleTap = false;\n }\n if (this._fingers === 1) {\n this._lastTouchStart = time;\n }\n };\n PinchZoom.prototype.simulate = function (fn) {\n var _this = this;\n return function (mouseEvent) {\n var pageX = mouseEvent.pageX, pageY = mouseEvent.pageY, type = mouseEvent.type;\n var isEnd = type === 'mouseup';\n var isStart = type === 'mousedown';\n if (isStart) {\n mouseEvent.preventDefault();\n _this._listenMouseMove = true;\n }\n if (_this._listenMouseMove) {\n // @ts-ignore\n mouseEvent.touches = isEnd ? [] : [{ pageX: pageX, pageY: pageY }];\n fn(\n // @ts-ignore\n mouseEvent);\n }\n if (isEnd) {\n _this._listenMouseMove = false;\n }\n };\n };\n PinchZoom.prototype.componentDidMount = function () {\n this._bindEvents();\n this._update();\n };\n PinchZoom.prototype.componentWillUnmount = function () {\n this._stopAnimation();\n this._unSubscribe();\n };\n PinchZoom.prototype.render = function () {\n var _a = this.props, children = _a.children, containerProps = _a.containerProps;\n var child = Children.only(children);\n var props = containerProps || {};\n return (React.createElement(React.Fragment, null,\n React.createElement(\"style\", null, styles),\n React.createElement(\"div\", __assign({}, props, { ref: this._containerRef, className: classnames(styleRoot, props.className) }), cloneElement(child, {\n className: classnames(styleChild, child.props.className),\n }))));\n };\n PinchZoom.defaultProps = {\n animationDuration: 250,\n draggableUnZoomed: true,\n enforceBoundsDuringZoom: false,\n centerContained: false,\n enabled: true,\n inertia: true,\n inertiaFriction: 0.96,\n horizontalPadding: 0,\n isTouch: isTouch,\n lockDragAxis: false,\n maxZoom: 5,\n minZoom: 0.5,\n onDoubleTap: noup,\n onDragEnd: noup,\n onDragStart: noup,\n onDragUpdate: noup,\n onZoomEnd: noup,\n onZoomStart: noup,\n onZoomUpdate: noup,\n setOffsetsOnce: false,\n shouldInterceptWheel: shouldInterceptWheel,\n shouldCancelHandledTouchEndEvents: false,\n tapZoomFactor: 1,\n verticalPadding: 0,\n wheelScaleFactor: 1500,\n zoomOutFactor: 1.3,\n doubleTapZoomOutOnMaxScale: false,\n doubleTapToggleZoom: false,\n // @ts-expect-error\n _document: isSsr ? null : window.document,\n };\n return PinchZoom;\n}(Component));\nif (process.env.NODE_ENV !== 'production') {\n var _a = require('prop-types'), any = _a.any, element = _a.element, object = _a.object, number = _a.number, func = _a.func, bool = _a.bool;\n // @ts-ignore\n PinchZoom.propTypes = {\n children: element,\n containerProps: object,\n wheelScaleFactor: number,\n animationDuration: number,\n draggableUnZoomed: bool,\n enforceBoundsDuringZoom: bool,\n centerContained: bool,\n enabled: bool,\n horizontalPadding: number,\n lockDragAxis: bool,\n onUpdate: func.isRequired,\n maxZoom: number,\n minZoom: number,\n onDoubleTap: func,\n onDragEnd: func,\n onDragStart: func,\n onDragUpdate: func,\n onZoomEnd: func,\n onZoomStart: func,\n onZoomUpdate: func,\n setOffsetsOnce: bool,\n tapZoomFactor: number,\n verticalPadding: number,\n zoomOutFactor: number,\n doubleTapZoomOutOnMaxScale: bool,\n doubleTapToggleZoom: bool,\n isTouch: func,\n _document: any,\n };\n}\nexport default PinchZoom;\n","export default function formatDuration(time) {\n if (!time) return;\n let hours = Math.floor(time / 3600);\n let minutes = Math.floor((time % 3600) / 60);\n let seconds = Math.round(time % 60);\n\n if (hours === 0) {\n return `${minutes}:${seconds.toString().padStart(2, '0')}`;\n } else {\n return `${hours}:${minutes.toString().padStart(2, '0')}:${seconds\n .toString()\n .padStart(2, '0')}`;\n }\n}\n","import { getBlurHashAverageColor } from 'fast-blurhash';\nimport { Fragment } from 'preact';\nimport { memo } from 'preact/compat';\nimport {\n useCallback,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'preact/hooks';\nimport QuickPinchZoom, { make3dTransformValue } from 'react-quick-pinch-zoom';\n\nimport formatDuration from '../utils/format-duration';\nimport mem from '../utils/mem';\nimport states from '../utils/states';\n\nimport Icon from './icon';\nimport Link from './link';\n\nconst isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); // https://stackoverflow.com/a/23522755\n\n/*\nMedia type\n===\nunknown = unsupported or unrecognized file type\nimage = Static image\ngifv = Looping, soundless animation\nvideo = Video clip\naudio = Audio track\n*/\n\nconst dataAltLabel = 'ALT';\nconst AltBadge = (props) => {\n const { alt, lang, index, ...rest } = props;\n if (!alt || !alt.trim()) return null;\n return (\n {\n e.stopPropagation();\n e.preventDefault();\n states.showMediaAlt = {\n alt,\n lang,\n };\n }}\n title=\"Media description\"\n >\n {dataAltLabel}\n {!!index && {index} }\n \n );\n};\n\nconst MEDIA_CAPTION_LIMIT = 140;\nconst MEDIA_CAPTION_LIMIT_LONGER = 280;\nexport const isMediaCaptionLong = mem((caption) =>\n caption?.length\n ? caption.length > MEDIA_CAPTION_LIMIT ||\n /[\\n\\r].*[\\n\\r]/.test(caption.trim())\n : false,\n);\n\nfunction Media({\n class: className = '',\n media,\n to,\n lang,\n showOriginal,\n autoAnimate,\n showCaption,\n allowLongerCaption,\n altIndex,\n onClick = () => {},\n}) {\n let {\n blurhash,\n description,\n meta,\n previewRemoteUrl,\n previewUrl,\n remoteUrl,\n url,\n type,\n } = media;\n if (/no\\-preview\\./i.test(previewUrl)) {\n previewUrl = null;\n }\n const { original = {}, small, focus } = meta || {};\n\n const width = showOriginal\n ? original?.width\n : small?.width || original?.width;\n const height = showOriginal\n ? original?.height\n : small?.height || original?.height;\n const mediaURL = showOriginal ? url : previewUrl || url;\n const remoteMediaURL = showOriginal\n ? remoteUrl\n : previewRemoteUrl || remoteUrl;\n const hasDimensions = width && height;\n const orientation = hasDimensions\n ? width > height\n ? 'landscape'\n : 'portrait'\n : null;\n\n const rgbAverageColor = blurhash ? getBlurHashAverageColor(blurhash) : null;\n\n const videoRef = useRef();\n\n let focalPosition;\n if (focus) {\n // Convert focal point to CSS background position\n // Formula from jquery-focuspoint\n // x = -1, y = 1 => 0% 0%\n // x = 0, y = 0 => 50% 50%\n // x = 1, y = -1 => 100% 100%\n const x = ((focus.x + 1) / 2) * 100;\n const y = ((1 - focus.y) / 2) * 100;\n focalPosition = `${x.toFixed(0)}% ${y.toFixed(0)}%`;\n }\n\n const mediaRef = useRef();\n const onUpdate = useCallback(({ x, y, scale }) => {\n const { current: media } = mediaRef;\n\n if (media) {\n const value = make3dTransformValue({ x, y, scale });\n\n if (scale === 1) {\n media.style.removeProperty('transform');\n } else {\n media.style.setProperty('transform', value);\n }\n\n media.closest('.media-zoom').style.touchAction =\n scale <= 1.01 ? 'pan-x' : '';\n }\n }, []);\n\n const [pinchZoomEnabled, setPinchZoomEnabled] = useState(false);\n const quickPinchZoomProps = {\n enabled: pinchZoomEnabled,\n draggableUnZoomed: false,\n inertiaFriction: 0.9,\n tapZoomFactor: 2,\n doubleTapToggleZoom: true,\n containerProps: {\n className: 'media-zoom',\n style: {\n overflow: 'visible',\n // width: 'inherit',\n // height: 'inherit',\n // justifyContent: 'inherit',\n // alignItems: 'inherit',\n // display: 'inherit',\n },\n },\n onUpdate,\n };\n\n const Parent = useMemo(\n () => (to ? (props) => : 'div'),\n [to],\n );\n\n const remoteMediaURLObj = remoteMediaURL ? getURLObj(remoteMediaURL) : null;\n const isVideoMaybe =\n type === 'unknown' &&\n remoteMediaURLObj &&\n /\\.(mp4|m4r|m4v|mov|webm)$/i.test(remoteMediaURLObj.pathname);\n const isAudioMaybe =\n type === 'unknown' &&\n remoteMediaURLObj &&\n /\\.(mp3|ogg|wav|m4a|m4p|m4b)$/i.test(remoteMediaURLObj.pathname);\n const isImage =\n type === 'image' ||\n (type === 'unknown' && previewUrl && !isVideoMaybe && !isAudioMaybe);\n\n const parentRef = useRef();\n const [imageSmallerThanParent, setImageSmallerThanParent] = useState(false);\n useLayoutEffect(() => {\n if (!isImage) return;\n if (!showOriginal) return;\n if (!parentRef.current) return;\n const { offsetWidth, offsetHeight } = parentRef.current;\n const smaller = width < offsetWidth && height < offsetHeight;\n if (smaller) setImageSmallerThanParent(smaller);\n }, [width, height]);\n\n const maxAspectHeight =\n window.innerHeight * (orientation === 'portrait' ? 0.45 : 0.33);\n const maxHeight = orientation === 'portrait' ? 0 : 160;\n const averageColorStyle = {\n '--average-color': rgbAverageColor && `rgb(${rgbAverageColor.join(',')})`,\n };\n const mediaStyles =\n width && height\n ? {\n '--width': `${width}px`,\n '--height': `${height}px`,\n // Calculate '--aspectWidth' based on aspect ratio calculated from '--width' and '--height', max height has to be 160px\n '--aspectWidth': `${\n (width / height) * Math.max(maxHeight, maxAspectHeight)\n }px`,\n aspectRatio: `${width} / ${height}`,\n ...averageColorStyle,\n }\n : {\n ...averageColorStyle,\n };\n\n const longDesc = isMediaCaptionLong(description);\n let showInlineDesc =\n !!showCaption && !showOriginal && !!description && !longDesc;\n if (\n allowLongerCaption &&\n !showInlineDesc &&\n description?.length <= MEDIA_CAPTION_LIMIT_LONGER\n ) {\n showInlineDesc = true;\n }\n const Figure = !showInlineDesc\n ? Fragment\n : (props) => {\n const { children, ...restProps } = props;\n return (\n \n {children}\n {\n e.preventDefault();\n e.stopPropagation();\n states.showMediaAlt = {\n alt: description,\n lang,\n };\n }}\n >\n {description}\n \n \n );\n };\n\n const [hasNaturalAspectRatio, setHasNaturalAspectRatio] = useState(undefined);\n\n if (isImage) {\n // Note: type: unknown might not have width/height\n quickPinchZoomProps.containerProps.style.display = 'inherit';\n\n useLayoutEffect(() => {\n if (!isSafari) return;\n if (!showOriginal) return;\n (async () => {\n try {\n await fetch(mediaURL, { mode: 'no-cors' });\n mediaRef.current.src = mediaURL;\n } catch (e) {\n // Ignore\n }\n })();\n }, [mediaURL]);\n\n return (\n \n \n {showOriginal ? (\n \n {\n e.target.closest('.media-image').style.backgroundImage = '';\n e.target.closest('.media-zoom').style.display = '';\n setPinchZoomEnabled(true);\n }}\n onError={(e) => {\n const { src } = e.target;\n if (\n src === mediaURL &&\n remoteMediaURL &&\n mediaURL !== remoteMediaURL\n ) {\n e.target.src = remoteMediaURL;\n }\n }}\n />\n \n ) : (\n <>\n {\n // e.target.closest('.media-image').style.backgroundImage = '';\n e.target.dataset.loaded = true;\n const $media = e.target.closest('.media');\n if (!hasDimensions && $media) {\n const { naturalWidth, naturalHeight } = e.target;\n $media.dataset.orientation =\n naturalWidth > naturalHeight ? 'landscape' : 'portrait';\n $media.style.setProperty('--width', `${naturalWidth}px`);\n $media.style.setProperty('--height', `${naturalHeight}px`);\n $media.style.aspectRatio = `${naturalWidth}/${naturalHeight}`;\n }\n\n // Check natural aspect ratio vs display aspect ratio\n if ($media) {\n const {\n clientWidth,\n clientHeight,\n naturalWidth,\n naturalHeight,\n } = e.target;\n if (\n clientWidth &&\n clientHeight &&\n naturalWidth &&\n naturalHeight\n ) {\n const minDimension = 88;\n if (\n naturalWidth < minDimension ||\n naturalHeight < minDimension\n ) {\n $media.dataset.hasSmallDimension = true;\n } else {\n const displayNaturalHeight =\n (naturalHeight * clientWidth) / naturalWidth;\n const almostSimilarHeight =\n Math.abs(displayNaturalHeight - clientHeight) < 5;\n\n if (almostSimilarHeight) {\n setHasNaturalAspectRatio(true);\n }\n }\n }\n }\n }}\n onError={(e) => {\n const { src } = e.target;\n if (src === mediaURL && mediaURL !== remoteMediaURL) {\n e.target.src = remoteMediaURL;\n }\n }}\n />\n {!showInlineDesc && (\n \n )}\n >\n )}\n \n \n );\n } else if (type === 'gifv' || type === 'video' || isVideoMaybe) {\n const hasDuration = original.duration > 0;\n const shortDuration = original.duration < 31;\n const isGIF = type === 'gifv' && shortDuration;\n // If GIF is too long, treat it as a video\n const loopable = original.duration < 61;\n const formattedDuration = formatDuration(original.duration);\n const hoverAnimate = !showOriginal && !autoAnimate && isGIF;\n const autoGIFAnimate = !showOriginal && autoAnimate && isGIF;\n const showProgress = original.duration > 5;\n\n // This string is only for autoplay + muted to work on Mobile Safari\n const gifHTML = `\n \n `;\n\n const videoHTML = `\n \n `;\n\n return (\n \n {\n if (hoverAnimate) {\n try {\n videoRef.current.pause();\n } catch (e) {}\n }\n onClick(e);\n }}\n onMouseEnter={() => {\n if (hoverAnimate) {\n try {\n videoRef.current.play();\n } catch (e) {}\n }\n }}\n onMouseLeave={() => {\n if (hoverAnimate) {\n try {\n videoRef.current.pause();\n } catch (e) {}\n }\n }}\n onFocus={() => {\n if (hoverAnimate) {\n try {\n videoRef.current.play();\n } catch (e) {}\n }\n }}\n onBlur={() => {\n if (hoverAnimate) {\n try {\n videoRef.current.pause();\n } catch (e) {}\n }\n }}\n >\n {showOriginal || autoGIFAnimate ? (\n isGIF && showOriginal ? (\n \n
\n \n ) : isGIF ? (\n
\n ) : (\n
\n )\n ) : isGIF ? (\n {\n const { target } = e;\n const container = target?.closest('.media-gif');\n if (container) {\n const percentage =\n (target.currentTime / target.duration) * 100;\n container.style.setProperty(\n '--progress',\n `${percentage}%`,\n );\n }\n }\n : undefined\n }\n />\n ) : (\n <>\n {previewUrl ? (\n {\n if (!hasDimensions) {\n const $media = e.target.closest('.media');\n if ($media) {\n const { naturalHeight, naturalWidth } = e.target;\n $media.dataset.orientation =\n naturalWidth > naturalHeight\n ? 'landscape'\n : 'portrait';\n $media.style.setProperty(\n '--width',\n `${naturalWidth}px`,\n );\n $media.style.setProperty(\n '--height',\n `${naturalHeight}px`,\n );\n $media.style.aspectRatio = `${naturalWidth}/${naturalHeight}`;\n }\n }\n }}\n />\n ) : (\n {\n if (!hasDuration) {\n const { duration } = e.target;\n if (duration) {\n const formattedDuration = formatDuration(duration);\n const container = e.target.closest('.media-video');\n if (container) {\n container.dataset.formattedDuration =\n formattedDuration;\n }\n }\n }\n }}\n />\n )}\n \n \n
\n >\n )}\n {!showOriginal && !showInlineDesc && (\n \n )}\n \n \n );\n } else if (type === 'audio' || isAudioMaybe) {\n const formattedDuration = formatDuration(original.duration);\n return (\n \n \n {showOriginal ? (\n \n ) : previewUrl ? (\n {\n try {\n // Remove self if broken\n e.target?.remove?.();\n } catch (e) {}\n }}\n />\n ) : null}\n {!showOriginal && (\n <>\n \n \n
\n {!showInlineDesc && (\n \n )}\n >\n )}\n \n \n );\n }\n}\n\nfunction getURLObj(url) {\n // Fake base URL if url doesn't have https:// prefix\n return URL.parse(url, location.origin);\n}\n\nexport default memo(Media, (oldProps, newProps) => {\n const oldMedia = oldProps.media || {};\n const newMedia = newProps.media || {};\n\n return (\n oldMedia?.id === newMedia?.id &&\n oldMedia.url === newMedia.url &&\n oldProps.to === newProps.to &&\n oldProps.class === newProps.class\n );\n});\n","import './status.css';\nimport '@justinribeiro/lite-youtube';\n\nimport {\n ControlledMenu,\n Menu,\n MenuDivider,\n MenuHeader,\n MenuItem,\n} from '@szhsin/react-menu';\nimport { decodeBlurHash, getBlurHashAverageColor } from 'fast-blurhash';\nimport { shallowEqual } from 'fast-equals';\nimport prettify from 'html-prettify';\nimport pThrottle from 'p-throttle';\nimport { Fragment } from 'preact';\nimport { memo } from 'preact/compat';\nimport {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'preact/hooks';\nimport punycode from 'punycode/';\nimport { useHotkeys } from 'react-hotkeys-hook';\nimport { detectAll } from 'tinyld/light';\nimport { useLongPress } from 'use-long-press';\nimport { useSnapshot } from 'valtio';\n\nimport CustomEmoji from '../components/custom-emoji';\nimport EmojiText from '../components/emoji-text';\nimport LazyShazam from '../components/lazy-shazam';\nimport Loader from '../components/loader';\nimport MenuConfirm from '../components/menu-confirm';\nimport Menu2 from '../components/menu2';\nimport Modal from '../components/modal';\nimport NameText from '../components/name-text';\nimport Poll from '../components/poll';\nimport { api } from '../utils/api';\nimport emojifyText from '../utils/emojify-text';\nimport enhanceContent from '../utils/enhance-content';\nimport FilterContext from '../utils/filter-context';\nimport { isFiltered } from '../utils/filters';\nimport getTranslateTargetLanguage from '../utils/get-translate-target-language';\nimport getHTMLText from '../utils/getHTMLText';\nimport handleContentLinks from '../utils/handle-content-links';\nimport htmlContentLength from '../utils/html-content-length';\nimport isRTL from '../utils/is-rtl';\nimport isMastodonLinkMaybe from '../utils/isMastodonLinkMaybe';\nimport localeMatch from '../utils/locale-match';\nimport mem from '../utils/mem';\nimport niceDateTime from '../utils/nice-date-time';\nimport openCompose from '../utils/open-compose';\nimport pmem from '../utils/pmem';\nimport safeBoundingBoxPadding from '../utils/safe-bounding-box-padding';\nimport shortenNumber from '../utils/shorten-number';\nimport showCompose from '../utils/show-compose';\nimport showToast from '../utils/show-toast';\nimport { speak, supportsTTS } from '../utils/speech';\nimport states, { getStatus, saveStatus, statusKey } from '../utils/states';\nimport statusPeek from '../utils/status-peek';\nimport store from '../utils/store';\nimport { getCurrentAccountID } from '../utils/store-utils';\nimport supports from '../utils/supports';\nimport unfurlMastodonLink from '../utils/unfurl-link';\nimport useTruncated from '../utils/useTruncated';\nimport visibilityIconsMap from '../utils/visibility-icons-map';\n\nimport Avatar from './avatar';\nimport Icon from './icon';\nimport Link from './link';\nimport Media, { isMediaCaptionLong } from './media';\nimport MenuLink from './menu-link';\nimport RelativeTime from './relative-time';\nimport TranslationBlock from './translation-block';\n\nconst SHOW_COMMENT_COUNT_LIMIT = 280;\nconst INLINE_TRANSLATE_LIMIT = 140;\n\nconst throttle = pThrottle({\n limit: 1,\n interval: 1000,\n});\nfunction fetchAccount(id, masto) {\n return masto.v1.accounts.$select(id).fetch();\n}\nconst memFetchAccount = pmem(throttle(fetchAccount));\n\nconst visibilityText = {\n public: 'Public',\n unlisted: 'Unlisted',\n private: 'Followers only',\n direct: 'Private mention',\n};\n\nconst isIOS =\n window.ontouchstart !== undefined &&\n /iPad|iPhone|iPod/.test(navigator.userAgent);\n\nconst rtf = new Intl.RelativeTimeFormat();\n\nconst REACTIONS_LIMIT = 80;\n\nfunction getPollText(poll) {\n if (!poll?.options?.length) return '';\n return `📊:\\n${poll.options\n .map(\n (option) =>\n `- ${option.title}${\n option.votesCount >= 0 ? ` (${option.votesCount})` : ''\n }`,\n )\n .join('\\n')}`;\n}\nfunction getPostText(status) {\n const { spoilerText, content, poll } = status;\n return (\n (spoilerText ? `${spoilerText}\\n\\n` : '') +\n getHTMLText(content) +\n getPollText(poll)\n );\n}\n\nconst PostContent = memo(\n ({ post, instance, previewMode }) => {\n const { content, emojis, language, mentions, url } = post;\n return (\n {\n // Remove target=\"_blank\" from links\n dom.querySelectorAll('a.u-url[target=\"_blank\"]').forEach((a) => {\n if (!/http/i.test(a.innerText.trim())) {\n a.removeAttribute('target');\n }\n });\n },\n }),\n }}\n />\n );\n },\n (oldProps, newProps) => {\n const { post: oldPost } = oldProps;\n const { post: newPost } = newProps;\n return oldPost.content === newPost.content;\n },\n);\n\nconst SIZE_CLASS = {\n s: 'small',\n m: 'medium',\n l: 'large',\n};\n\nconst detectLang = mem((text) => {\n text = text?.trim();\n\n // Ref: https://github.com/komodojp/tinyld/blob/develop/docs/benchmark.md\n // 500 should be enough for now, also the default max chars for Mastodon\n if (text?.length > 500) {\n return null;\n }\n const langs = detectAll(text);\n const lang = langs[0];\n if (lang?.lang && lang?.accuracy > 0.5) {\n // If > 50% accurate, use it\n // It can be accurate if < 50% but better be safe\n // Though > 50% also can be inaccurate 🤷♂️\n return lang.lang;\n }\n return null;\n});\n\nfunction Status({\n statusID,\n status,\n instance: propInstance,\n size = 'm',\n contentTextWeight,\n readOnly,\n enableCommentHint,\n withinContext,\n skeleton,\n enableTranslate,\n forceTranslate: _forceTranslate,\n previewMode,\n // allowFilters,\n onMediaClick,\n quoted,\n onStatusLinkClick = () => {},\n showFollowedTags,\n allowContextMenu,\n showActionsBar,\n showReplyParent,\n mediaFirst,\n}) {\n if (skeleton) {\n return (\n
\n {!mediaFirst &&
}\n
\n
\n );\n }\n const { masto, instance, authenticated } = api({ instance: propInstance });\n const { instance: currentInstance } = api();\n const sameInstance = instance === currentInstance;\n\n let sKey = statusKey(statusID || status?.id, instance);\n const snapStates = useSnapshot(states);\n if (!status) {\n status = snapStates.statuses[sKey] || snapStates.statuses[statusID];\n sKey = statusKey(status?.id, instance);\n }\n if (!status) {\n return null;\n }\n\n const {\n account: {\n acct,\n avatar,\n avatarStatic,\n id: accountId,\n url: accountURL,\n displayName,\n username,\n emojis: accountEmojis,\n bot,\n group,\n },\n id,\n repliesCount,\n reblogged,\n reblogsCount,\n favourited,\n favouritesCount,\n bookmarked,\n poll,\n muted,\n sensitive,\n spoilerText,\n visibility, // public, unlisted, private, direct\n language: _language,\n editedAt,\n filtered,\n card,\n createdAt,\n inReplyToId,\n inReplyToAccountId,\n content,\n mentions,\n mediaAttachments,\n reblog,\n uri,\n url,\n emojis,\n tags,\n pinned,\n // Non-API props\n _deleted,\n _pinned,\n // _filtered,\n // Non-Mastodon\n emojiReactions,\n } = status;\n\n const [languageAutoDetected, setLanguageAutoDetected] = useState(null);\n useEffect(() => {\n if (!content) return;\n if (_language) return;\n let timer;\n timer = setTimeout(() => {\n let detected = detectLang(\n getHTMLText(content, {\n preProcess: (dom) => {\n // Remove anything that can skew the language detection\n\n // Remove .mention, .hashtag, pre, code, a:has(.invisible)\n dom\n .querySelectorAll(\n '.mention, .hashtag, pre, code, a:has(.invisible)',\n )\n .forEach((a) => {\n a.remove();\n });\n\n // Remove links that contains text that starts with https?://\n dom.querySelectorAll('a').forEach((a) => {\n const text = a.innerText.trim();\n if (text.startsWith('https://') || text.startsWith('http://')) {\n a.remove();\n }\n });\n },\n }),\n );\n setLanguageAutoDetected(detected);\n }, 1000);\n return () => clearTimeout(timer);\n }, [content, _language]);\n const language = _language || languageAutoDetected;\n\n // if (!mediaAttachments?.length) mediaFirst = false;\n const hasMediaAttachments = !!mediaAttachments?.length;\n if (mediaFirst && hasMediaAttachments) size = 's';\n\n const currentAccount = useMemo(() => {\n return getCurrentAccountID();\n }, []);\n const isSelf = useMemo(() => {\n return currentAccount && currentAccount === accountId;\n }, [accountId, currentAccount]);\n\n const filterContext = useContext(FilterContext);\n const filterInfo =\n !isSelf && !readOnly && !previewMode && isFiltered(filtered, filterContext);\n\n if (filterInfo?.action === 'hide') {\n return null;\n }\n\n console.debug('RENDER Status', id, status?.account.displayName, quoted);\n\n const debugHover = (e) => {\n if (e.shiftKey) {\n console.log({\n ...status,\n });\n }\n };\n\n if (/*allowFilters && */ size !== 'l' && filterInfo) {\n return (\n
\n );\n }\n\n const createdAtDate = new Date(createdAt);\n const editedAtDate = new Date(editedAt);\n\n let inReplyToAccountRef = mentions?.find(\n (mention) => mention.id === inReplyToAccountId,\n );\n if (!inReplyToAccountRef && inReplyToAccountId === id) {\n inReplyToAccountRef = { url: accountURL, username, displayName };\n }\n const [inReplyToAccount, setInReplyToAccount] = useState(inReplyToAccountRef);\n if (!withinContext && !inReplyToAccount && inReplyToAccountId) {\n const account = states.accounts[inReplyToAccountId];\n if (account) {\n setInReplyToAccount(account);\n } else {\n memFetchAccount(inReplyToAccountId, masto)\n .then((account) => {\n setInReplyToAccount(account);\n states.accounts[account.id] = account;\n })\n .catch((e) => {});\n }\n }\n const mentionSelf =\n inReplyToAccountId === currentAccount ||\n mentions?.find((mention) => mention.id === currentAccount);\n\n const readingExpandSpoilers = useMemo(() => {\n const prefs = store.account.get('preferences') || {};\n return !!prefs['reading:expand:spoilers'];\n }, []);\n const readingExpandMedia = useMemo(() => {\n // default | show_all | hide_all\n // Ignore hide_all because it means hide *ALL* media including non-sensitive ones\n const prefs = store.account.get('preferences') || {};\n return prefs['reading:expand:media']?.toLowerCase() || 'default';\n }, []);\n // FOR TESTING:\n // const readingExpandSpoilers = true;\n // const readingExpandMedia = 'show_all';\n const showSpoiler =\n previewMode || readingExpandSpoilers || !!snapStates.spoilers[id];\n const showSpoilerMedia =\n previewMode ||\n readingExpandMedia === 'show_all' ||\n !!snapStates.spoilersMedia[id];\n\n if (reblog) {\n // If has statusID, means useItemID (cached in states)\n\n if (group) {\n return (\n
\n );\n }\n\n return (\n
\n
\n {' '}\n {' '}\n boosted \n
\n
\n
\n );\n }\n\n // Check followedTags\n const FollowedTagsParent = useCallback(\n ({ children }) => (\n
\n ),\n [sKey, instance, snapStates.statusFollowedTags[sKey]],\n );\n const StatusParent =\n showFollowedTags && !!snapStates.statusFollowedTags[sKey]?.length\n ? FollowedTagsParent\n : Fragment;\n\n const isSizeLarge = size === 'l';\n\n const [forceTranslate, setForceTranslate] = useState(_forceTranslate);\n const targetLanguage = getTranslateTargetLanguage(true);\n const contentTranslationHideLanguages =\n snapStates.settings.contentTranslationHideLanguages || [];\n const { contentTranslation, contentTranslationAutoInline } =\n snapStates.settings;\n if (!contentTranslation) enableTranslate = false;\n const inlineTranslate = useMemo(() => {\n if (\n !contentTranslation ||\n !contentTranslationAutoInline ||\n readOnly ||\n (withinContext && !isSizeLarge) ||\n previewMode ||\n spoilerText ||\n sensitive ||\n poll ||\n card ||\n mediaAttachments?.length\n ) {\n return false;\n }\n const contentLength = htmlContentLength(content);\n return contentLength > 0 && contentLength <= INLINE_TRANSLATE_LIMIT;\n }, [\n contentTranslation,\n contentTranslationAutoInline,\n readOnly,\n withinContext,\n isSizeLarge,\n previewMode,\n spoilerText,\n sensitive,\n poll,\n card,\n mediaAttachments,\n content,\n ]);\n\n const [showEdited, setShowEdited] = useState(false);\n const [showEmbed, setShowEmbed] = useState(false);\n\n const spoilerContentRef = useTruncated();\n const contentRef = useTruncated();\n const mediaContainerRef = useTruncated();\n const readMoreText = 'Read more →';\n\n const statusRef = useRef(null);\n\n const unauthInteractionErrorMessage = `Sorry, your current logged-in instance can't interact with this post from another instance.`;\n\n const textWeight = useCallback(\n () =>\n Math.max(\n Math.round((spoilerText.length + htmlContentLength(content)) / 140) ||\n 1,\n 1,\n ),\n [spoilerText, content],\n );\n\n const createdDateText = niceDateTime(createdAtDate);\n const editedDateText = editedAt && niceDateTime(editedAtDate);\n\n // Can boost if:\n // - authenticated AND\n // - visibility != direct OR\n // - visibility = private AND isSelf\n let canBoost =\n authenticated && visibility !== 'direct' && visibility !== 'private';\n if (visibility === 'private' && isSelf) {\n canBoost = true;\n }\n\n const replyStatus = (e) => {\n if (!sameInstance || !authenticated) {\n return alert(unauthInteractionErrorMessage);\n }\n // syntheticEvent comes from MenuItem\n if (e?.shiftKey || e?.syntheticEvent?.shiftKey) {\n const newWin = openCompose({\n replyToStatus: status,\n });\n if (newWin) return;\n }\n showCompose({\n replyToStatus: status,\n });\n };\n\n // Check if media has no descriptions\n const mediaNoDesc = useMemo(() => {\n return mediaAttachments.some(\n (attachment) => !attachment.description?.trim?.(),\n );\n }, [mediaAttachments]);\n\n const statusMonthsAgo = useMemo(() => {\n return Math.floor(\n (new Date() - createdAtDate) / (1000 * 60 * 60 * 24 * 30),\n );\n }, [createdAtDate]);\n\n const boostStatus = async () => {\n if (!sameInstance || !authenticated) {\n alert(unauthInteractionErrorMessage);\n return false;\n }\n try {\n if (!reblogged) {\n let confirmText = 'Boost this post?';\n if (mediaNoDesc) {\n confirmText += '\\n\\n⚠️ Some media have no descriptions.';\n }\n const yes = confirm(confirmText);\n if (!yes) {\n return false;\n }\n }\n // Optimistic\n states.statuses[sKey] = {\n ...status,\n reblogged: !reblogged,\n reblogsCount: reblogsCount + (reblogged ? -1 : 1),\n };\n if (reblogged) {\n const newStatus = await masto.v1.statuses.$select(id).unreblog();\n saveStatus(newStatus, instance);\n return true;\n } else {\n const newStatus = await masto.v1.statuses.$select(id).reblog();\n saveStatus(newStatus, instance);\n return true;\n }\n } catch (e) {\n console.error(e);\n // Revert optimistism\n states.statuses[sKey] = status;\n return false;\n }\n };\n const confirmBoostStatus = async () => {\n if (!sameInstance || !authenticated) {\n alert(unauthInteractionErrorMessage);\n return false;\n }\n try {\n // Optimistic\n states.statuses[sKey] = {\n ...status,\n reblogged: !reblogged,\n reblogsCount: reblogsCount + (reblogged ? -1 : 1),\n };\n if (reblogged) {\n const newStatus = await masto.v1.statuses.$select(id).unreblog();\n saveStatus(newStatus, instance);\n } else {\n const newStatus = await masto.v1.statuses.$select(id).reblog();\n saveStatus(newStatus, instance);\n }\n return true;\n } catch (e) {\n console.error(e);\n // Revert optimistism\n states.statuses[sKey] = status;\n return false;\n }\n };\n\n const favouriteStatus = async () => {\n if (!sameInstance || !authenticated) {\n alert(unauthInteractionErrorMessage);\n return false;\n }\n try {\n // Optimistic\n states.statuses[sKey] = {\n ...status,\n favourited: !favourited,\n favouritesCount: favouritesCount + (favourited ? -1 : 1),\n };\n if (favourited) {\n const newStatus = await masto.v1.statuses.$select(id).unfavourite();\n saveStatus(newStatus, instance);\n } else {\n const newStatus = await masto.v1.statuses.$select(id).favourite();\n saveStatus(newStatus, instance);\n }\n return true;\n } catch (e) {\n console.error(e);\n // Revert optimistism\n states.statuses[sKey] = status;\n return false;\n }\n };\n const favouriteStatusNotify = async () => {\n try {\n const done = await favouriteStatus();\n if (!isSizeLarge && done) {\n showToast(\n favourited\n ? `Unliked @${username || acct}'s post`\n : `Liked @${username || acct}'s post`,\n );\n }\n } catch (e) {}\n };\n\n const bookmarkStatus = async () => {\n if (!supports('@mastodon/post-bookmark')) return;\n if (!sameInstance || !authenticated) {\n alert(unauthInteractionErrorMessage);\n return false;\n }\n try {\n // Optimistic\n states.statuses[sKey] = {\n ...status,\n bookmarked: !bookmarked,\n };\n if (bookmarked) {\n const newStatus = await masto.v1.statuses.$select(id).unbookmark();\n saveStatus(newStatus, instance);\n } else {\n const newStatus = await masto.v1.statuses.$select(id).bookmark();\n saveStatus(newStatus, instance);\n }\n return true;\n } catch (e) {\n console.error(e);\n // Revert optimistism\n states.statuses[sKey] = status;\n return false;\n }\n };\n const bookmarkStatusNotify = async () => {\n try {\n const done = await bookmarkStatus();\n if (!isSizeLarge && done) {\n showToast(\n bookmarked\n ? `Unbookmarked @${username || acct}'s post`\n : `Bookmarked @${username || acct}'s post`,\n );\n }\n } catch (e) {}\n };\n\n const differentLanguage =\n !!language &&\n language !== targetLanguage &&\n !localeMatch([language], [targetLanguage]) &&\n !contentTranslationHideLanguages.find(\n (l) => language === l || localeMatch([language], [l]),\n );\n\n const reblogIterator = useRef();\n const favouriteIterator = useRef();\n async function fetchBoostedLikedByAccounts(firstLoad) {\n if (firstLoad) {\n reblogIterator.current = masto.v1.statuses\n .$select(statusID)\n .rebloggedBy.list({\n limit: REACTIONS_LIMIT,\n });\n favouriteIterator.current = masto.v1.statuses\n .$select(statusID)\n .favouritedBy.list({\n limit: REACTIONS_LIMIT,\n });\n }\n const [{ value: reblogResults }, { value: favouriteResults }] =\n await Promise.allSettled([\n reblogIterator.current.next(),\n favouriteIterator.current.next(),\n ]);\n if (reblogResults.value?.length || favouriteResults.value?.length) {\n const accounts = [];\n if (reblogResults.value?.length) {\n accounts.push(\n ...reblogResults.value.map((a) => {\n a._types = ['reblog'];\n return a;\n }),\n );\n }\n if (favouriteResults.value?.length) {\n accounts.push(\n ...favouriteResults.value.map((a) => {\n a._types = ['favourite'];\n return a;\n }),\n );\n }\n return {\n value: accounts,\n done: reblogResults.done && favouriteResults.done,\n };\n }\n return {\n value: [],\n done: true,\n };\n }\n\n const actionsRef = useRef();\n const isPublic = ['public', 'unlisted'].includes(visibility);\n const isPinnable = ['public', 'unlisted', 'private'].includes(visibility);\n const StatusMenuItems = (\n <>\n {!isSizeLarge && sameInstance && (\n <>\n \n >\n )}\n {!isSizeLarge && sameInstance && (isSizeLarge || showActionsBar) && (\n
\n )}\n {(isSizeLarge || showActionsBar) && (\n <>\n
{\n states.showGenericAccounts = {\n heading: 'Boosted/Liked by…',\n fetchAccounts: fetchBoostedLikedByAccounts,\n instance,\n showReactions: true,\n postID: sKey,\n };\n }}\n >\n \n \n Boosted/Liked by… \n \n \n >\n )}\n {!mediaFirst && (\n <>\n {(enableTranslate || !language || differentLanguage) && (\n
\n )}\n {enableTranslate ? (\n
\n {\n setForceTranslate(true);\n }}\n >\n \n Translate \n \n {supportsTTS && (\n {\n const postText = getPostText(status);\n if (postText) {\n speak(postText, language);\n }\n }}\n >\n \n Speak \n \n )}\n
\n ) : (\n (!language || differentLanguage) && (\n
\n \n \n Translate \n \n {supportsTTS && (\n {\n const postText = getPostText(status);\n if (postText) {\n speak(postText, language);\n }\n }}\n >\n \n Speak \n \n )}\n
\n )\n )}\n >\n )}\n {((!isSizeLarge && sameInstance) ||\n enableTranslate ||\n !language ||\n differentLanguage) &&
}\n {!isSizeLarge && (\n <>\n
{\n onStatusLinkClick(e, status);\n }}\n >\n \n \n View post by @{username || acct}\n \n \n {visibilityText[visibility]} • {createdDateText}\n \n \n \n >\n )}\n {!!editedAt && (\n <>\n
{\n setShowEdited(id);\n }}\n >\n \n \n Show Edit History\n \n Edited: {editedDateText} \n \n \n >\n )}\n
\n \n \n \n \n {isPublic && isSizeLarge && (\n
{\n setShowEmbed(true);\n }}\n >\n \n Embed post \n \n )}\n {(isSelf || mentionSelf) &&
}\n {(isSelf || mentionSelf) && (\n
{\n try {\n const newStatus = await masto.v1.statuses\n .$select(id)\n [muted ? 'unmute' : 'mute']();\n saveStatus(newStatus, instance);\n showToast(muted ? 'Conversation unmuted' : 'Conversation muted');\n } catch (e) {\n console.error(e);\n showToast(\n muted\n ? 'Unable to unmute conversation'\n : 'Unable to mute conversation',\n );\n }\n }}\n >\n {muted ? (\n <>\n \n Unmute conversation \n >\n ) : (\n <>\n \n Mute conversation \n >\n )}\n \n )}\n {isSelf && isPinnable && (\n
{\n try {\n const newStatus = await masto.v1.statuses\n .$select(id)\n [pinned ? 'unpin' : 'pin']();\n saveStatus(newStatus, instance);\n showToast(\n pinned\n ? 'Post unpinned from profile'\n : 'Post pinned to profile',\n );\n } catch (e) {\n console.error(e);\n showToast(pinned ? 'Unable to unpin post' : 'Unable to pin post');\n }\n }}\n >\n {pinned ? (\n <>\n \n Unpin from profile \n >\n ) : (\n <>\n \n Pin to profile \n >\n )}\n \n )}\n {isSelf && (\n \n )}\n {!isSelf && isSizeLarge && (\n <>\n
\n
{\n states.showReportModal = {\n account: status.account,\n post: status,\n };\n }}\n >\n \n Report post… \n \n >\n )}\n >\n );\n\n const contextMenuRef = useRef();\n const [isContextMenuOpen, setIsContextMenuOpen] = useState(false);\n const [contextMenuProps, setContextMenuProps] = useState({});\n\n const showContextMenu =\n allowContextMenu || (!isSizeLarge && !previewMode && !_deleted && !quoted);\n\n // Only iOS/iPadOS browsers don't support contextmenu\n // Some comments report iPadOS might support contextmenu if a mouse is connected\n const bindLongPressContext = useLongPress(\n isIOS && showContextMenu\n ? (e) => {\n if (e.pointerType === 'mouse') return;\n // There's 'pen' too, but not sure if contextmenu event would trigger from a pen\n\n const { clientX, clientY } = e.touches?.[0] || e;\n // link detection copied from onContextMenu because here it works\n const link = e.target.closest('a');\n if (\n link &&\n statusRef.current.contains(link) &&\n !link.getAttribute('href').startsWith('#')\n )\n return;\n e.preventDefault();\n setContextMenuProps({\n anchorPoint: {\n x: clientX,\n y: clientY,\n },\n direction: 'right',\n });\n setIsContextMenuOpen(true);\n }\n : null,\n {\n threshold: 600,\n captureEvent: true,\n detect: 'touch',\n cancelOnMovement: 2, // true allows movement of up to 25 pixels\n },\n );\n\n const hotkeysEnabled = !readOnly && !previewMode && !quoted;\n const rRef = useHotkeys('r, shift+r', replyStatus, {\n enabled: hotkeysEnabled,\n });\n const fRef = useHotkeys('f, l', favouriteStatusNotify, {\n enabled: hotkeysEnabled,\n });\n const dRef = useHotkeys('d', bookmarkStatusNotify, {\n enabled: hotkeysEnabled,\n });\n const bRef = useHotkeys(\n 'shift+b',\n () => {\n (async () => {\n try {\n const done = await confirmBoostStatus();\n if (!isSizeLarge && done) {\n showToast(\n reblogged\n ? `Unboosted @${username || acct}'s post`\n : `Boosted @${username || acct}'s post`,\n );\n }\n } catch (e) {}\n })();\n },\n {\n enabled: hotkeysEnabled && canBoost,\n },\n );\n const xRef = useHotkeys('x', (e) => {\n const activeStatus = document.activeElement.closest(\n '.status-link, .status-focus',\n );\n if (activeStatus) {\n const spoilerButton = activeStatus.querySelector(\n '.spoiler-button:not(.spoiling)',\n );\n if (spoilerButton) {\n e.stopPropagation();\n spoilerButton.click();\n } else {\n const spoilerMediaButton = activeStatus.querySelector(\n '.spoiler-media-button:not(.spoiling)',\n );\n if (spoilerMediaButton) {\n e.stopPropagation();\n spoilerMediaButton.click();\n }\n }\n }\n });\n\n const displayedMediaAttachments = mediaAttachments.slice(\n 0,\n isSizeLarge ? undefined : 4,\n );\n const showMultipleMediaCaptions =\n mediaAttachments.length > 1 &&\n displayedMediaAttachments.some(\n (media) => !!media.description && !isMediaCaptionLong(media.description),\n );\n const captionChildren = useMemo(() => {\n if (!showMultipleMediaCaptions) return null;\n const attachments = [];\n displayedMediaAttachments.forEach((media, i) => {\n if (!media.description) return;\n const index = attachments.findIndex(\n (attachment) => attachment.media.description === media.description,\n );\n if (index === -1) {\n attachments.push({\n media,\n indices: [i],\n });\n } else {\n attachments[index].indices.push(i);\n }\n });\n return attachments.map(({ media, indices }) => (\n
i + 1).join(' ')}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n states.showMediaAlt = {\n alt: media.description,\n lang: language,\n };\n }}\n title={media.description}\n >\n {indices.map((i) => i + 1).join(' ')} {media.description}\n
\n ));\n\n // return displayedMediaAttachments.map(\n // (media, i) =>\n // !!media.description && (\n //
{\n // e.preventDefault();\n // e.stopPropagation();\n // states.showMediaAlt = {\n // alt: media.description,\n // lang: language,\n // };\n // }}\n // title={media.description}\n // >\n // {i + 1} {media.description}\n //
\n // ),\n // );\n }, [showMultipleMediaCaptions, displayedMediaAttachments, language]);\n\n const isThread = useMemo(() => {\n return (\n (!!inReplyToId && inReplyToAccountId === status.account?.id) ||\n !!snapStates.statusThreadNumber[sKey]\n );\n }, [\n inReplyToId,\n inReplyToAccountId,\n status.account?.id,\n snapStates.statusThreadNumber[sKey],\n ]);\n\n const showCommentHint = useMemo(() => {\n return (\n enableCommentHint &&\n !isThread &&\n !withinContext &&\n !inReplyToId &&\n visibility === 'public' &&\n repliesCount > 0\n );\n }, [\n enableCommentHint,\n isThread,\n withinContext,\n inReplyToId,\n repliesCount,\n visibility,\n ]);\n const showCommentCount = useMemo(() => {\n if (\n card ||\n poll ||\n sensitive ||\n spoilerText ||\n mediaAttachments?.length ||\n isThread ||\n withinContext ||\n inReplyToId ||\n repliesCount <= 0\n ) {\n return false;\n }\n const questionRegex = /[???︖❓❔⁇⁈⁉¿‽؟]/;\n const containsQuestion = questionRegex.test(content);\n if (!containsQuestion) return false;\n const contentLength = htmlContentLength(content);\n if (contentLength > 0 && contentLength <= SHOW_COMMENT_COUNT_LIMIT) {\n return true;\n }\n }, [\n card,\n poll,\n sensitive,\n spoilerText,\n mediaAttachments,\n reblog,\n isThread,\n withinContext,\n inReplyToId,\n repliesCount,\n content,\n ]);\n\n return (\n
\n {showReplyParent && !!(inReplyToId && inReplyToAccountId) && (\n \n )}\n {\n statusRef.current = node;\n // Use parent node if it's in focus\n // Use case: \n // When navigating (j/k), the is focused instead of \n // Hotkey binding doesn't bubble up thus this hack\n const nodeRef =\n node?.closest?.(\n '.timeline-item, .timeline-item-alt, .status-link, .status-focus',\n ) || node;\n rRef.current = nodeRef;\n fRef.current = nodeRef;\n dRef.current = nodeRef;\n bRef.current = nodeRef;\n xRef.current = nodeRef;\n }}\n tabindex=\"-1\"\n class={`status ${\n !withinContext && inReplyToId && inReplyToAccount\n ? 'status-reply-to'\n : ''\n } visibility-${visibility} ${_pinned ? 'status-pinned' : ''} ${\n SIZE_CLASS[size]\n } ${_deleted ? 'status-deleted' : ''} ${quoted ? 'status-card' : ''} ${\n isContextMenuOpen ? 'status-menu-open' : ''\n } ${mediaFirst && hasMediaAttachments ? 'status-media-first' : ''}`}\n onMouseEnter={debugHover}\n onContextMenu={(e) => {\n if (!showContextMenu) return;\n if (e.metaKey) return;\n // console.log('context menu', e);\n const link = e.target.closest('a');\n if (\n link &&\n statusRef.current.contains(link) &&\n !link.getAttribute('href').startsWith('#')\n )\n return;\n\n // If there's selected text, don't show custom context menu\n const selection = window.getSelection?.();\n if (selection.toString().length > 0) {\n const { anchorNode } = selection;\n if (statusRef.current?.contains(anchorNode)) {\n return;\n }\n }\n e.preventDefault();\n setContextMenuProps({\n anchorPoint: {\n x: e.clientX,\n y: e.clientY,\n },\n direction: 'right',\n });\n setIsContextMenuOpen(true);\n }}\n {...(showContextMenu ? bindLongPressContext() : {})}\n >\n {showContextMenu && (\n {\n setIsContextMenuOpen(false);\n // statusRef.current?.focus?.();\n if (e?.reason === 'click') {\n statusRef.current?.closest('[tabindex]')?.focus?.();\n }\n }}\n portal={{\n target: document.body,\n }}\n containerProps={{\n style: {\n // Higher than the backdrop\n zIndex: 1001,\n },\n onClick: () => {\n contextMenuRef.current?.closeMenu?.();\n },\n }}\n overflow=\"auto\"\n boundingBoxPadding={safeBoundingBoxPadding()}\n unmountOnClose\n >\n {StatusMenuItems}\n \n )}\n {showActionsBar &&\n size !== 'l' &&\n !previewMode &&\n !readOnly &&\n !_deleted &&\n !quoted && (\n \n \n \n {\n e.preventDefault();\n e.stopPropagation();\n setContextMenuProps({\n anchorRef: {\n current: e.currentTarget,\n },\n align: 'start',\n direction: 'left',\n gap: 0,\n shift: -8,\n });\n setIsContextMenuOpen('actions-bar');\n }}\n >\n \n \n
\n )}\n {size !== 'l' && (\n \n {reblogged && }\n {favourited && }\n {bookmarked && }\n {_pinned && }\n
\n )}\n {size !== 's' && (\n {\n e.preventDefault();\n e.stopPropagation();\n states.showAccount = {\n account: status.account,\n instance,\n };\n }}\n >\n \n \n )}\n \n
\n \n \n \n {/* {inReplyToAccount && !withinContext && size !== 's' && (\n <>\n {' '}\n \n {' '}\n \n \n >\n )} */}\n {/* */}{' '}\n {size !== 'l' &&\n (_deleted ? (\n Deleted \n ) : url && !previewMode && !readOnly && !quoted ? (\n {\n if (\n e.metaKey ||\n e.ctrlKey ||\n e.shiftKey ||\n e.altKey ||\n e.which === 2\n ) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n onStatusLinkClick?.(e, status);\n setContextMenuProps({\n anchorRef: {\n current: e.currentTarget,\n },\n align: 'end',\n direction: 'bottom',\n gap: 4,\n });\n setIsContextMenuOpen(true);\n }}\n class={`time ${\n isContextMenuOpen && contextMenuProps?.anchorRef\n ? 'is-open'\n : ''\n }`}\n >\n {showCommentHint && !showCommentCount ? (\n \n ) : (\n visibility !== 'public' &&\n visibility !== 'direct' && (\n \n )\n )}{' '}\n \n {!previewMode && !readOnly && (\n \n )}\n \n ) : (\n //
{\n // if (e.target === e.currentTarget)\n // menuInstanceRef.current?.closeMenu?.();\n // },\n // }}\n // align=\"end\"\n // gap={4}\n // overflow=\"auto\"\n // viewScroll=\"close\"\n // boundingBoxPadding=\"8 8 8 8\"\n // unmountOnClose\n // menuButton={({ open }) => (\n // {\n // e.preventDefault();\n // e.stopPropagation();\n // onStatusLinkClick?.(e, status);\n // }}\n // class={`time ${open ? 'is-open' : ''}`}\n // >\n // {' '}\n // \n // \n // )}\n // >\n // {StatusMenuItems}\n // \n \n {visibility !== 'public' && visibility !== 'direct' && (\n <>\n {' '}\n >\n )}\n \n \n ))}\n \n {visibility === 'direct' && (\n <>\n
Private mention
{' '}\n >\n )}\n {!withinContext && (\n <>\n {isThread ? (\n
\n \n Thread\n {snapStates.statusThreadNumber[sKey]\n ? ` ${snapStates.statusThreadNumber[sKey]}/X`\n : ''}\n
\n ) : (\n !!inReplyToId &&\n !!inReplyToAccount &&\n (!!spoilerText ||\n !mentions.find((mention) => {\n return mention.id === inReplyToAccountId;\n })) && (\n
\n {' '}\n \n
\n )\n )}\n >\n )}\n
\n {mediaFirst && hasMediaAttachments ? (\n <>\n {(!!spoilerText || !!sensitive) && !readingExpandSpoilers && (\n <>\n {!!spoilerText && (\n
\n {' '}\n \n )}\n
{\n e.preventDefault();\n e.stopPropagation();\n if (showSpoiler) {\n delete states.spoilers[id];\n if (!readingExpandSpoilers) {\n delete states.spoilersMedia[id];\n }\n } else {\n states.spoilers[id] = true;\n if (!readingExpandSpoilers) {\n states.spoilersMedia[id] = true;\n }\n }\n }}\n >\n {' '}\n {showSpoiler ? 'Show less' : 'Show content'}\n \n >\n )}\n
\n {!!content && (\n
\n )}\n >\n ) : (\n <>\n {!!spoilerText && (\n <>\n
\n {readingExpandSpoilers || previewMode ? (\n
\n Content warning\n
\n ) : (\n
{\n e.preventDefault();\n e.stopPropagation();\n if (showSpoiler) {\n delete states.spoilers[id];\n if (!readingExpandSpoilers) {\n delete states.spoilersMedia[id];\n }\n } else {\n states.spoilers[id] = true;\n if (!readingExpandSpoilers) {\n states.spoilersMedia[id] = true;\n }\n }\n }}\n >\n {' '}\n {showSpoiler ? 'Show less' : 'Show content'}\n \n )}\n >\n )}\n {!!content && (\n
\n )}\n {!!poll && (\n
{\n states.statuses[sKey].poll = newPoll;\n }}\n refresh={() => {\n return masto.v1.polls\n .$select(poll.id)\n .fetch()\n .then((pollResponse) => {\n states.statuses[sKey].poll = pollResponse;\n })\n .catch((e) => {}); // Silently fail\n }}\n votePoll={(choices) => {\n return masto.v1.polls\n .$select(poll.id)\n .votes.create({\n choices,\n })\n .then((pollResponse) => {\n states.statuses[sKey].poll = pollResponse;\n })\n .catch((e) => {}); // Silently fail\n }}\n />\n )}\n {(((enableTranslate || inlineTranslate) &&\n !!content.trim() &&\n !!getHTMLText(emojifyText(content, emojis)) &&\n differentLanguage) ||\n forceTranslate) && (\n \n )}\n {!previewMode &&\n sensitive &&\n !!mediaAttachments.length &&\n readingExpandMedia !== 'show_all' && (\n {\n e.preventDefault();\n e.stopPropagation();\n if (showSpoilerMedia) {\n delete states.spoilersMedia[id];\n } else {\n states.spoilersMedia[id] = true;\n }\n }}\n >\n {' '}\n {showSpoilerMedia ? 'Show less' : 'Show media'}\n \n )}\n {!!mediaAttachments.length &&\n (mediaAttachments.length > 1 &&\n (isSizeLarge || (withinContext && size === 'm')) ? (\n \n ) : (\n \n 2 ? 'media-gt2' : ''} ${\n mediaAttachments.length > 4 ? 'media-gt4' : ''\n }`}\n >\n {displayedMediaAttachments.map((media, i) => (\n {\n onMediaClick(e, i, media, status);\n }\n : undefined\n }\n />\n ))}\n
\n \n ))}\n {!!card &&\n /^https/i.test(card?.url) &&\n !sensitive &&\n !spoilerText &&\n !poll &&\n !mediaAttachments.length &&\n !snapStates.statusQuotes[sKey] && (\n \n )}\n >\n )}\n \n {!isSizeLarge && showCommentCount && (\n \n )}\n {isSizeLarge && (\n <>\n \n {!!emojiReactions?.length && (\n
\n {emojiReactions.map((emojiReaction) => {\n const { name, count, me, url, staticUrl } = emojiReaction;\n if (url) {\n // Some servers return url and staticUrl\n return (\n \n {' '}\n {count}\n \n );\n }\n const isShortCode = /^:.+?:$/.test(name);\n if (isShortCode) {\n const emoji = emojis.find(\n (e) =>\n e.shortcode ===\n name.replace(/^:/, '').replace(/:$/, ''),\n );\n if (emoji) {\n return (\n \n {' '}\n {count}\n \n );\n }\n }\n return (\n \n {name} {count}\n \n );\n })}\n
\n )}\n
\n
\n \n
\n {/*
\n \n
*/}\n
\n \n {reblogged ? 'Unboost' : 'Boost'} \n >\n }\n menuExtras={\n {\n showCompose({\n draftStatus: {\n status: `\\n${url}`,\n },\n });\n }}\n >\n \n Quote \n \n }\n menuFooter={\n mediaNoDesc &&\n !reblogged && (\n \n )\n }\n >\n \n \n
\n \n
\n \n
\n {supports('@mastodon/post-bookmark') && (\n
\n \n
\n )}\n
\n \n \n \n \n }\n >\n {StatusMenuItems}\n \n
\n >\n )}\n \n {!!showEdited && (\n {\n if (e.target === e.currentTarget) {\n setShowEdited(false);\n // statusRef.current?.focus();\n }\n }}\n >\n {\n return masto.v1.statuses.$select(showEdited).history.list();\n }}\n onClose={() => {\n setShowEdited(false);\n statusRef.current?.focus();\n }}\n />\n \n )}\n {!!showEmbed && (\n {\n if (e.target === e.currentTarget) {\n setShowEmbed(false);\n }\n }}\n >\n {\n setShowEmbed(false);\n }}\n />\n \n )}\n \n \n );\n}\n\nfunction MultipleMediaFigure(props) {\n const { enabled, children, lang, captionChildren } = props;\n if (!enabled || !captionChildren) return children;\n return (\n \n {children}\n \n {captionChildren}\n \n \n );\n}\n\nfunction MediaFirstContainer(props) {\n const { mediaAttachments, language, postID, instance } = props;\n const moreThanOne = mediaAttachments.length > 1;\n\n const carouselRef = useRef();\n const [currentIndex, setCurrentIndex] = useState(0);\n\n useEffect(() => {\n let handleScroll = () => {\n const { clientWidth, scrollLeft } = carouselRef.current;\n const index = Math.round(Math.abs(scrollLeft) / clientWidth);\n setCurrentIndex(index);\n };\n if (carouselRef.current) {\n carouselRef.current.addEventListener('scroll', handleScroll, {\n passive: true,\n });\n }\n return () => {\n if (carouselRef.current) {\n carouselRef.current.removeEventListener('scroll', handleScroll);\n }\n };\n }, []);\n\n return (\n <>\n \n {moreThanOne && (\n \n {mediaAttachments.map((media, i) => (\n \n ))}\n
\n )}\n >\n );\n}\n\nfunction getDomain(url) {\n return punycode.toUnicode(\n URL.parse(url)\n .hostname.replace(/^www\\./, '')\n .replace(/\\/$/, ''),\n );\n}\n\n// \"Post\": Quote post + card link preview combo\n// Assume all links from these domains are \"posts\"\n// Mastodon links are \"posts\" too but they are converted to real quote posts and there's too many domains to check\n// This is just \"Progressive Enhancement\"\nfunction isCardPost(domain) {\n return ['x.com', 'twitter.com', 'threads.net', 'bsky.app'].includes(domain);\n}\n\nfunction Card({ card, selfReferential, instance }) {\n const snapStates = useSnapshot(states);\n const {\n blurhash,\n title,\n description,\n html,\n providerName,\n providerUrl,\n authorName,\n authorUrl,\n width,\n height,\n image,\n imageDescription,\n url,\n type,\n embedUrl,\n language,\n publishedAt,\n } = card;\n\n /* type\n link = Link OEmbed\n photo = Photo OEmbed\n video = Video OEmbed\n rich = iframe OEmbed. Not currently accepted, so won’t show up in practice.\n */\n\n const hasText = title || providerName || authorName;\n const isLandscape = width / height >= 1.2;\n const size = isLandscape ? 'large' : '';\n\n const [cardStatusURL, setCardStatusURL] = useState(null);\n // const [cardStatusID, setCardStatusID] = useState(null);\n useEffect(() => {\n if (hasText && image && !selfReferential && isMastodonLinkMaybe(url)) {\n unfurlMastodonLink(instance, url).then((result) => {\n if (!result) return;\n const { id, url } = result;\n setCardStatusURL('#' + url);\n\n // NOTE: This is for quote post\n // (async () => {\n // const { masto } = api({ instance });\n // const status = await masto.v1.statuses.$select(id).fetch();\n // saveStatus(status, instance);\n // setCardStatusID(id);\n // })();\n });\n }\n }, [hasText, image, selfReferential]);\n\n // if (cardStatusID) {\n // return (\n // \n // );\n // }\n\n if (snapStates.unfurledLinks[url]) return null;\n\n const hasIframeHTML = /
-
-`).replace(/<\/li>/g,`
-`),zt.querySelectorAll("br").forEach(r=>{r.replaceWith(`
-`)}),n==null||n(zt),zt.querySelectorAll(".invisible").forEach(r=>{r.remove()}),zt.querySelectorAll(".ellipsis").forEach(r=>{r.append("...")}),zt.innerText.replace(/[\r\n]{3,}/g,`
-
-`).trim()}const hr=ut(Ml);function Sl(e){const{mentions:t=[],instance:n,previewMode:r,statusURL:o}=e||{};return i=>{var f,d;let{target:a}=i;if(a=a.closest("a"),!a||i.metaKey||i.ctrlKey||i.shiftKey||i.altKey||i.which===2)return;const l=(f=a.previousSibling)==null?void 0:f.textContent,c=l==null?void 0:l.endsWith("@"),u=a.innerText.startsWith("@");if((a.classList.contains("u-url")||a.classList.contains("mention"))&&u||c&&!u){const p=(a.querySelector("span")||a).innerText.trim(),m=p.replace(/^@/,""),h=a.getAttribute("href"),g=t.find(v=>v.url===h)||t.find(v=>v.acct===m||v.username===m);if(g)i.preventDefault(),i.stopPropagation(),W.showAccount={account:g.acct,instance:n};else if(!/^http/i.test(p)){i.preventDefault(),i.stopPropagation();const v=a.getAttribute("href");W.showAccount={account:v,instance:n}}}else if(!r){const p=l==null?void 0:l.endsWith("#");if(a.classList.contains("hashtag")||p){i.preventDefault(),i.stopPropagation();const m=a.innerText.replace(/^#/,"").trim(),h=n?`#/${n}/t/${m}`:`#/t/${m}`;location.hash=h}else(d=W.unfurledLinks[a.href])!=null&&d.url&&o!==a.href&&(i.preventDefault(),i.stopPropagation(),W.prevLocation={pathname:location.hash.replace(/^#/,"")},location.hash=`#${W.unfurledLinks[a.href].url}`)}}}const{locale:kl}=new Intl.DateTimeFormat().resolvedOptions(),Al=e=>{const{dateYear:t,hideTime:n,formatOpts:r}=e||{},o=new Date().getFullYear();return Intl.DateTimeFormat(kl,{year:t===o?void 0:"numeric",month:"short",day:"numeric",hour:n?void 0:"numeric",minute:n?void 0:"numeric",...r})},Il=ut(Al);function En(e,t){return e instanceof Date||(e=new Date(e)),Il({dateYear:e.getFullYear(),...t}).format(e)}const{locale:$l}=Intl.NumberFormat().resolvedOptions(),yt=Intl.NumberFormat($l,{notation:"compact",roundingMode:"floor"}).format,ci=5e3;function Un(e){if(e||(e=!0),W.showCompose){W.composerState.minimized?Ce({duration:ci,text:"A draft post is currently minimized. Post or discard it before creating a new one."}):Ce({duration:ci,text:"A post is currently open. Post or discard it before creating a new one."});return}Wa(),W.showCompose=e}function Mf({skeleton:e,account:t,avatarSize:n="xl",useAvatarStatic:r=!1,instance:o,external:i,internal:a,onClick:l,showActivity:c=!1,showStats:u=!1,accountInstance:f,hideDisplayName:d=!1,relationship:p={},excludeRelationshipAttrs:m=[]}){if(e)return s("div",{class:"account-block skeleton",children:[s(st,{size:n}),s("span",{children:[s("b",{children:"████████"}),s("br",{}),s("span",{class:"account-block-acct",children:"██████"})]})]});if(!t)return null;const{id:h,acct:g,avatar:v,avatarStatic:T,displayName:_,username:E,emojis:w,url:b,statusesCount:M,lastStatusAt:A,bot:O,fields:P,note:x,group:S,followersCount:V,createdAt:B,locked:D}=t;let[$,k,R]=g.match(/([^@]+)(@.+)/i)||[,g];f&&(R=`@${f}`);const L=P==null?void 0:P.find(C=>!!C.verifiedAt&&!!C.value),z={};for(const C in p)m.includes(C)||(z[C]=p[C]);const N=z.following||z.followedBy||z.requested;return s("a",{class:"account-block",href:b,target:i?"_blank":null,title:R?g:`@${g}`,onClick:C=>{if(!i){if(C.preventDefault(),l)return l(C);a?location.hash=`/${o}/a/${h}`:W.showAccount={account:t,instance:o}}},children:[s(st,{url:r?T:v||T,size:n,squircle:O}),s("span",{class:"account-block-content",children:[!d&&s(U,{children:_?s("b",{children:s(Yt,{text:_,emojis:w})}):s("b",{children:E})})," ",s("span",{class:"account-block-acct",children:[R?"":"@",k,s("wbr",{}),R,D&&s(U,{children:[" ",s(H,{icon:"lock",size:"s",alt:"Locked"})]})]}),c&&s("div",{class:"account-block-stats",children:["Posts: ",yt(M),!!A&&s(U,{children:[" ","· Last posted:"," ",En(A,{hideTime:!0})]})]}),u&&s("div",{class:"account-block-stats",children:[O&&s(U,{children:s("span",{class:"tag collapsed",children:[s(H,{icon:"bot"})," Automated"]})}),!!S&&s(U,{children:s("span",{class:"tag collapsed",children:[s(H,{icon:"group"})," Group"]})}),N&&s("div",{class:"shazam-container-horizontal",children:s("div",{class:"shazam-container-inner",children:z.following&&z.followedBy?s("span",{class:"tag minimal",children:"Mutual"}):z.requested?s("span",{class:"tag minimal",children:"Requested"}):z.following?s("span",{class:"tag minimal",children:"Following"}):z.followedBy?s("span",{class:"tag minimal",children:"Follows you"}):null})},p.id),!!V&&s("span",{class:"ib",children:[yt(V)," ",V===1?"follower":"followers"]}),!!L&&s("span",{class:"verified-field",children:[s(H,{icon:"check-circle",size:"s"})," ",s("span",{dangerouslySetInnerHTML:{__html:bs(L.value,{emojis:w})}})]}),!O&&!S&&!N&&!V&&!L&&!!B&&s("span",{class:"created-at",children:["Joined"," ",s("time",{datetime:B,children:En(B,{hideTime:!0})})]})]})]})]})}function li(e){const{className:t,disabled:n,...r}=e;return s(Cc,{className:t,disabled:n,children:({ref:o,closeMenu:i})=>s(Zt,{...r,ref:o,onClick:({detail:a})=>i(a===0?"Enter":void 0)})})}var ws={};function We(e,t){typeof t=="boolean"&&(t={forever:t}),this._originalTimeouts=JSON.parse(JSON.stringify(e)),this._timeouts=e,this._options=t||{},this._maxRetryTime=t&&t.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}var Ll=We;We.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts.slice(0)};We.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],this._cachedTimeouts=null};We.prototype.retry=function(e){if(this._timeout&&clearTimeout(this._timeout),!e)return!1;var t=new Date().getTime();if(e&&t-this._operationStart>=this._maxRetryTime)return this._errors.push(e),this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(e);var n=this._timeouts.shift();if(n===void 0)if(this._cachedTimeouts)this._errors.splice(0,this._errors.length-1),n=this._cachedTimeouts.slice(-1);else return!1;var r=this;return this._timer=setTimeout(function(){r._attempts++,r._operationTimeoutCb&&(r._timeout=setTimeout(function(){r._operationTimeoutCb(r._attempts)},r._operationTimeout),r._options.unref&&r._timeout.unref()),r._fn(r._attempts)},n),this._options.unref&&this._timer.unref(),!0};We.prototype.attempt=function(e,t){this._fn=e,t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var n=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){n._operationTimeoutCb()},n._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};We.prototype.try=function(e){console.log("Using RetryOperation.try() is deprecated"),this.attempt(e)};We.prototype.start=function(e){console.log("Using RetryOperation.start() is deprecated"),this.attempt(e)};We.prototype.start=We.prototype.try;We.prototype.errors=function(){return this._errors};We.prototype.attempts=function(){return this._attempts};We.prototype.mainError=function(){if(this._errors.length===0)return null;for(var e={},t=null,n=0,r=0;r=n&&(t=o,n=a)}return t};(function(e){var t=Ll;e.operation=function(n){var r=e.timeouts(n);return new t(r,{forever:n&&(n.forever||n.retries===1/0),unref:n&&n.unref,maxRetryTime:n&&n.maxRetryTime})},e.timeouts=function(n){if(n instanceof Array)return[].concat(n);var r={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var o in n)r[o]=n[o];if(r.minTimeout>r.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var i=[],a=0;aOl.call(e)==="[object Error]",Rl=new Set(["Failed to fetch","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Load failed","Network request failed","fetch failed"]);function Nl(e){return e&&Dl(e)&&e.name==="TypeError"&&typeof e.message=="string"?e.message==="Load failed"?e.stack===void 0:Rl.has(e.message):!1}class Fl extends Error{constructor(t){super(),t instanceof Error?(this.originalError=t,{message:t}=t):(this.originalError=new Error(t),this.originalError.stack=this.stack),this.name="AbortError",this.message=t}}const ui=(e,t,n)=>{const r=n.retries-(t-1);return e.attemptNumber=t,e.retriesLeft=r,e};async function zl(e,t){return new Promise((n,r)=>{t={onFailedAttempt(){},retries:10,shouldRetry:()=>!0,...t};const o=Pl.operation(t),i=()=>{var l;o.stop(),r((l=t.signal)==null?void 0:l.reason)};t.signal&&!t.signal.aborted&&t.signal.addEventListener("abort",i,{once:!0});const a=()=>{var l;(l=t.signal)==null||l.removeEventListener("abort",i),o.stop()};o.attempt(async l=>{try{const c=await e(l);a(),n(c)}catch(c){try{if(!(c instanceof Error))throw new TypeError(`Non-error was thrown: "${c}". You should only throw errors.`);if(c instanceof Fl)throw c.originalError;if(c instanceof TypeError&&!Nl(c))throw c;if(ui(c,l,t),await t.shouldRetry(c)||(o.stop(),r(c)),await t.onFailedAttempt(c),!o.retry(c))throw o.mainError()}catch(u){ui(u,l,t),a(),r(u)}}})})}const Hl=[{code:"auto",name:"Detect"},{code:"af",name:"Afrikaans"},{code:"sq",name:"Albanian"},{code:"am",name:"Amharic"},{code:"ar",name:"Arabic"},{code:"hy",name:"Armenian"},{code:"as",name:"Assamese"},{code:"ay",name:"Aymara"},{code:"az",name:"Azerbaijani"},{code:"bm",name:"Bambara"},{code:"eu",name:"Basque"},{code:"be",name:"Belarusian"},{code:"bn",name:"Bengali"},{code:"bho",name:"Bhojpuri"},{code:"bs",name:"Bosnian"},{code:"bg",name:"Bulgarian"},{code:"ca",name:"Catalan"},{code:"ceb",name:"Cebuano"},{code:"ny",name:"Chichewa"},{code:"zh",name:"Chinese"},{code:"co",name:"Corsican"},{code:"hr",name:"Croatian"},{code:"cs",name:"Czech"},{code:"da",name:"Danish"},{code:"dv",name:"Dhivehi"},{code:"doi",name:"Dogri"},{code:"nl",name:"Dutch"},{code:"en",name:"English"},{code:"eo",name:"Esperanto"},{code:"et",name:"Estonian"},{code:"ee",name:"Ewe"},{code:"tl",name:"Filipino"},{code:"fi",name:"Finnish"},{code:"fr",name:"French"},{code:"fy",name:"Frisian"},{code:"gl",name:"Galician"},{code:"ka",name:"Georgian"},{code:"de",name:"German"},{code:"el",name:"Greek"},{code:"gn",name:"Guarani"},{code:"gu",name:"Gujarati"},{code:"ht",name:"Haitian Creole"},{code:"ha",name:"Hausa"},{code:"haw",name:"Hawaiian"},{code:"iw",name:"Hebrew"},{code:"hi",name:"Hindi"},{code:"hmn",name:"Hmong"},{code:"hu",name:"Hungarian"},{code:"is",name:"Icelandic"},{code:"ig",name:"Igbo"},{code:"ilo",name:"Ilocano"},{code:"id",name:"Indonesian"},{code:"ga",name:"Irish"},{code:"it",name:"Italian"},{code:"ja",name:"Japanese"},{code:"jw",name:"Javanese"},{code:"kn",name:"Kannada"},{code:"kk",name:"Kazakh"},{code:"km",name:"Khmer"},{code:"rw",name:"Kinyarwanda"},{code:"gom",name:"Konkani"},{code:"ko",name:"Korean"},{code:"kri",name:"Krio"},{code:"ku",name:"Kurdish (Kurmanji)"},{code:"ckb",name:"Kurdish (Sorani)"},{code:"ky",name:"Kyrgyz"},{code:"lo",name:"Lao"},{code:"la",name:"Latin"},{code:"lv",name:"Latvian"},{code:"ln",name:"Lingala"},{code:"lt",name:"Lithuanian"},{code:"lg",name:"Luganda"},{code:"lb",name:"Luxembourgish"},{code:"mk",name:"Macedonian"},{code:"mai",name:"Maithili"},{code:"mg",name:"Malagasy"},{code:"ms",name:"Malay"},{code:"ml",name:"Malayalam"},{code:"mt",name:"Maltese"},{code:"mi",name:"Maori"},{code:"mr",name:"Marathi"},{code:"mni-Mtei",name:"Meiteilon (Manipuri)"},{code:"lus",name:"Mizo"},{code:"mn",name:"Mongolian"},{code:"my",name:"Myanmar (Burmese)"},{code:"ne",name:"Nepali"},{code:"no",name:"Norwegian"},{code:"or",name:"Odia (Oriya)"},{code:"om",name:"Oromo"},{code:"ps",name:"Pashto"},{code:"fa",name:"Persian"},{code:"pl",name:"Polish"},{code:"pt",name:"Portuguese"},{code:"pa",name:"Punjabi"},{code:"qu",name:"Quechua"},{code:"ro",name:"Romanian"},{code:"ru",name:"Russian"},{code:"sm",name:"Samoan"},{code:"sa",name:"Sanskrit"},{code:"gd",name:"Scots Gaelic"},{code:"nso",name:"Sepedi"},{code:"sr",name:"Serbian"},{code:"st",name:"Sesotho"},{code:"sn",name:"Shona"},{code:"sd",name:"Sindhi"},{code:"si",name:"Sinhala"},{code:"sk",name:"Slovak"},{code:"sl",name:"Slovenian"},{code:"so",name:"Somali"},{code:"es",name:"Spanish"},{code:"su",name:"Sundanese"},{code:"sw",name:"Swahili"},{code:"sv",name:"Swedish"},{code:"tg",name:"Tajik"},{code:"ta",name:"Tamil"},{code:"tt",name:"Tatar"},{code:"te",name:"Telugu"},{code:"th",name:"Thai"},{code:"ti",name:"Tigrinya"},{code:"ts",name:"Tsonga"},{code:"tr",name:"Turkish"},{code:"tk",name:"Turkmen"},{code:"ak",name:"Twi"},{code:"uk",name:"Ukrainian"},{code:"ur",name:"Urdu"},{code:"ug",name:"Uyghur"},{code:"uz",name:"Uzbek"},{code:"vi",name:"Vietnamese"},{code:"cy",name:"Welsh"},{code:"xh",name:"Xhosa"},{code:"yi",name:"Yiddish"},{code:"yo",name:"Yoruba"},{code:"zu",name:"Zulu"}];var Vl=Object.defineProperty,jl=(e,t,n)=>t in e?Vl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Wn=(e,t,n)=>jl(e,typeof t!="symbol"?t+"":t,n),ro=new Map,Kn=new WeakMap,di=0,Bl=void 0;function Ul(e){return e?(Kn.has(e)||(di+=1,Kn.set(e,di.toString())),Kn.get(e)):"0"}function Wl(e){return Object.keys(e).sort().filter(t=>e[t]!==void 0).map(t=>`${t}_${t==="root"?Ul(e.root):e[t]}`).toString()}function Kl(e){const t=Wl(e);let n=ro.get(t);if(!n){const r=new Map;let o;const i=new IntersectionObserver(a=>{a.forEach(l=>{var c;const u=l.isIntersecting&&o.some(f=>l.intersectionRatio>=f);e.trackVisibility&&typeof l.isVisible>"u"&&(l.isVisible=u),(c=r.get(l.target))==null||c.forEach(f=>{f(u,l)})})},e);o=i.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),n={id:t,observer:i,elements:r},ro.set(t,n)}return n}function Ts(e,t,n={},r=Bl){if(typeof window.IntersectionObserver>"u"&&r!==void 0){const c=e.getBoundingClientRect();return t(r,{isIntersecting:r,target:e,intersectionRatio:typeof n.threshold=="number"?n.threshold:0,time:0,boundingClientRect:c,intersectionRect:c,rootBounds:c}),()=>{}}const{id:o,observer:i,elements:a}=Kl(n),l=a.get(e)||[];return a.has(e)||a.set(e,l),l.push(t),i.observe(e),function(){l.splice(l.indexOf(t),1),l.length===0&&(a.delete(e),i.unobserve(e)),a.size===0&&(i.disconnect(),ro.delete(o))}}function Zl(e){return typeof e.children!="function"}var Sf=class extends Fi{constructor(e){super(e),Wn(this,"node",null),Wn(this,"_unobserveCb",null),Wn(this,"handleNode",t=>{this.node&&(this.unobserve(),!t&&!this.props.triggerOnce&&!this.props.skip&&this.setState({inView:!!this.props.initialInView,entry:void 0})),this.node=t||null,this.observeNode()}),Wn(this,"handleChange",(t,n)=>{t&&this.props.triggerOnce&&this.unobserve(),Zl(this.props)||this.setState({inView:t,entry:n}),this.props.onChange&&this.props.onChange(t,n)}),this.state={inView:!!e.initialInView,entry:void 0}}componentDidMount(){this.unobserve(),this.observeNode()}componentDidUpdate(e){(e.rootMargin!==this.props.rootMargin||e.root!==this.props.root||e.threshold!==this.props.threshold||e.skip!==this.props.skip||e.trackVisibility!==this.props.trackVisibility||e.delay!==this.props.delay)&&(this.unobserve(),this.observeNode())}componentWillUnmount(){this.unobserve()}observeNode(){if(!this.node||this.props.skip)return;const{threshold:e,root:t,rootMargin:n,trackVisibility:r,delay:o,fallbackInView:i}=this.props;this._unobserveCb=Ts(this.node,this.handleChange,{threshold:e,root:t,rootMargin:n,trackVisibility:r,delay:o},i)}unobserve(){this._unobserveCb&&(this._unobserveCb(),this._unobserveCb=null)}render(){const{children:e}=this.props;if(typeof e=="function"){const{inView:m,entry:h}=this.state;return e({inView:m,entry:h,ref:this.handleNode})}const{as:t,triggerOnce:n,threshold:r,root:o,rootMargin:i,onChange:a,skip:l,trackVisibility:c,delay:u,initialInView:f,fallbackInView:d,...p}=this.props;return ya(t||"div",{ref:this.handleNode,...p},e)}};function Yl({threshold:e,delay:t,trackVisibility:n,rootMargin:r,root:o,triggerOnce:i,skip:a,initialInView:l,fallbackInView:c,onChange:u}={}){var f;const[d,p]=ee(null),m=j(),[h,g]=ee({inView:!!l,entry:void 0});m.current=u,se(()=>{if(a||!d)return;let E;return E=Ts(d,(w,b)=>{g({inView:w,entry:b}),m.current&&m.current(w,b),b.isIntersecting&&i&&E&&(E(),E=void 0)},{root:o,rootMargin:r,threshold:e,trackVisibility:n,delay:t},c),()=>{E&&E()}},[Array.isArray(e)?e.toString():e,d,o,r,i,a,n,c,t]);const v=(f=h.entry)==null?void 0:f.target,T=j();!d&&v&&!i&&!a&&T.current!==v&&(T.current=v,g({inView:!!l,entry:void 0}));const _=[p,h.inView,h.entry];return _.ref=_[0],_.inView=_[1],_.entry=_[2],_}const fi=48,Fr={};function Es({id:e,children:t}){const n=j(),r=!!Fr[e],[o,i]=ee(!1),[a,l]=ee(r||!1),{ref:c}=Yl({root:null,rootMargin:`-${fi}px 0px 0px 0px`,trackVisibility:!0,delay:1e3,onChange:u=>{u&&(i(!0),e&&(Fr[e]=!0))},triggerOnce:!0,skip:a||o});return se(()=>{if(!n.current)return;const u=n.current.getBoundingClientRect();u.bottom>fi&&(u.top{let o=vn[zr];return fetch(`https://${o}/api/v1/${t}/${n}/${encodeURIComponent(e)}`).then(i=>{if(!i.ok)throw new Error(i.statusText);return i.json()}).then(i=>{var a;return{provider:"lingva",content:i.translation,detectedSourceLanguage:(a=i.info)==null?void 0:a.detectedSource,info:i.info}})},{retries:3,onFailedAttempt:o=>{zr=(zr+1)%vn.length}})}const xs=1e3*60*60,Ms=ho(Xl,{maxAge:xs}),Jl=ho(Gl(Ms),{maxAge:xs});function Ql({forceTranslate:e,sourceLanguage:t,onTranslate:n,text:r="",mini:o,autoDetected:i}){const a=ls(!0),[l,c]=ee("default"),[u,f]=ee(null),[d,p]=ee(null),[m,h]=ee(null),g=j(),v=t?Cr(t):null,T=Cr(a),_=j("auto");n||(n=o?Jl:Ms);const E=async()=>{var w,b;c("loading");try{const{content:M,detectedSourceLanguage:A,provider:O,error:P,...x}=await n(r,_.current,a);if(M){if(A){const S=Cr(A);h(S)}if(O==="lingva"){const S=(b=(w=x==null?void 0:x.info)==null?void 0:w.pronunciation)==null?void 0:b.query;S&&f(S)}p(M),c("default"),!o&&M.trim()!==r.trim()&&(g.current.open=!0,g.current.scrollIntoView({behavior:"smooth",block:"nearest"}))}else c("error")}catch{c("error")}};return se(()=>{e&&E()},[e]),o?d&&d.trim()!==r.trim()&&m!==T?s(Es,{children:s("div",{class:"status-translation-block-mini",children:[s(H,{icon:"translate",alt:`Auto-translated from ${v}`}),s("output",{lang:a,dir:"auto",title:u||"",children:d})]})}):null:s("div",{class:"status-translation-block",onClick:w=>{w.preventDefault()},children:s("details",{ref:g,children:[s("summary",{children:s("button",{type:"button",onClick:async w=>{w.preventDefault(),w.stopPropagation(),g.current.open=!g.current.open,l!=="loading"&&(d||E())},children:[s(H,{icon:"translate"})," ",s("span",{children:l==="loading"?"Translating…":t&&v&&!m?i?`Translate from ${v} (auto-detected)`:`Translate from ${v}`:"Translate"})]})}),s("div",{class:"translated-block",children:[s("div",{class:"translation-info insignificant",children:[s("select",{class:"translated-source-select",disabled:l==="loading",onChange:w=>{_.current=w.target.value,E()},children:Hl.map(w=>s("option",{value:w.code,children:w.code==="auto"?`Auto (${m??"…"})`:w.name}))})," ",s("span",{children:["→ ",T]}),s(Hi,{abrupt:!0,hidden:l!=="loading"})]}),l==="error"?s("p",{class:"ui-state",children:"Failed to translate"}):!!d&&s(U,{children:[s("output",{class:"translated-content",lang:a,dir:"auto",children:d}),!!u&&s("output",{class:"translated-pronunciation-content",tabIndex:-1,onClick:w=>{w.target.classList.toggle("expand")},children:u})]})]})]})})}const eu=vn!=null&&vn.length?Ql:()=>null;function dt(e){return new Promise((t,n)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>n(e.error)})}function Ss(e,t){const n=indexedDB.open(e);n.onupgradeneeded=()=>n.result.createObjectStore(t);const r=dt(n);return(o,i)=>r.then(a=>i(a.transaction(t,o).objectStore(t)))}let Hr;function Ct(){return Hr||(Hr=Ss("keyval-store","keyval")),Hr}function tu(e,t=Ct()){return t("readonly",n=>dt(n.get(e)))}function nu(e,t,n=Ct()){return n("readwrite",r=>(r.put(t,e),dt(r.transaction)))}function ru(e,t=Ct()){return t("readonly",n=>Promise.all(e.map(r=>dt(n.get(r)))))}function ou(e,t=Ct()){return t("readwrite",n=>(n.delete(e),dt(n.transaction)))}function iu(e,t=Ct()){return t("readwrite",n=>(e.forEach(r=>n.delete(r)),dt(n.transaction)))}function su(e=Ct()){return e("readwrite",t=>(t.clear(),dt(t.transaction)))}function au(e,t){return e.openCursor().onsuccess=function(){this.result&&(t(this.result),this.result.continue())},dt(e.transaction)}function cu(e=Ct()){return e("readonly",t=>{if(t.getAllKeys)return dt(t.getAllKeys());const n=[];return au(t,r=>n.push(r.key)).then(()=>n)})}function pi(e,t){const n=Ss(e,t);return{set:(r,o)=>nu(r,o,n),get:r=>tu(r,n),getMany:r=>ru(r,n),del:r=>ou(r,n),delMany:r=>iu(r,n),clear:()=>su(n),keys:()=>cu(n)}}const kf={drafts:pi("drafts-db","drafts-store"),catchup:pi("catchup-db","catchup-store")};async function Af(e,t={}){if(!(e!=null&&e.length))return;const{masto:n}=nr(),r=po(),o=e.reduce((i,a)=>(!i.includes(a.id)&&!t[a.id]&&a.id!==r&&i.push(a.id),i),[]);if(!o.length)return null;try{return(await n.v1.accounts.relationships.fetch({id:o})).reduce((l,c)=>(l[c.id]=c,l),{})}catch{return null}}class Be extends HTMLElement{constructor(){super(),this.isIframeLoaded=!1,this.setupDom()}static get observedAttributes(){return["videoid","playlistid"]}connectedCallback(){this.addEventListener("pointerover",Be.warmConnections,{once:!0}),this.addEventListener("click",()=>this.addIframe())}get videoId(){return encodeURIComponent(this.getAttribute("videoid")||"")}set videoId(t){this.setAttribute("videoid",t)}get playlistId(){return encodeURIComponent(this.getAttribute("playlistid")||"")}set playlistId(t){this.setAttribute("playlistid",t)}get videoTitle(){return this.getAttribute("videotitle")||"Video"}set videoTitle(t){this.setAttribute("videotitle",t)}get videoPlay(){return this.getAttribute("videoPlay")||"Play"}set videoPlay(t){this.setAttribute("videoPlay",t)}get videoStartAt(){return this.getAttribute("videoStartAt")||"0"}get autoLoad(){return this.hasAttribute("autoload")}get noCookie(){return this.hasAttribute("nocookie")}get posterQuality(){return this.getAttribute("posterquality")||"hqdefault"}get posterLoading(){return this.getAttribute("posterloading")||"lazy"}get params(){return`start=${this.videoStartAt}&${this.getAttribute("params")}`}set params(t){this.setAttribute("params",t)}setupDom(){const t=this.attachShadow({mode:"open"});let n="";window.liteYouTubeNonce&&(n=`nonce="${window.liteYouTubeNonce}"`),t.innerHTML=`
-
-
-
-
-
-
-
-
-
- `,this.domRefFrame=t.querySelector("#frame"),this.domRefImg={fallback:t.querySelector("#fallbackPlaceholder"),webp:t.querySelector("#webpPlaceholder"),jpeg:t.querySelector("#jpegPlaceholder")},this.domRefPlayButton=t.querySelector("#playButton")}setup