1 line
375 KiB
Plaintext
1 line
375 KiB
Plaintext
{"version":3,"mappings":"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","names":["segmenter","Intl","Segmenter","stringLength","string","length","_","segment","urlRegexObj","RegExp","urlRegex","source","flags","isMobileSafari","test","navigator","userAgent","CameraCaptureInput","hidden","disabled","supportedMimeTypes","setMediaAttachments","filteredSupportedMimeTypes","filter","mimeType","_jsx","type","accept","join","capture","onChange","e","files","target","mediaFile","Array","from","attachments","file","size","url","URL","createObjectURL","id","description","value","supportsCameraCapture","document","createElement","CharCountMeter","maxCharacters","charCount","useSnapshot","states","composerCharacterCount","leftChars","class","_jsxs","title","style","children","max","Combobox","input","list","tabInsertsSuggestions","defaultFirstOption","scrollIntoViewOptions","event","keyboardBindings","trackComposition","commitWithElement","_a","visible","indexDiff","focusEl","els","focusIndex","indexOfItem","newIndex","el","fireSelectEvent","combobox","commit","fireCommitEvent","detail","boundary","query","text","key","cursor","multiWord","lookBackIndex","lastMatchPosition","keyIndex","pre","InputStyleCloneUpdateEvent","CloneRegistry","InputStyleClone","#styleObserver","#updateStyles","#resizeObserver","#requestUpdateLayout","#inputRef","#container","#cloneElement","clone","#updateText","#onDocumentScrollOrResize","#onInput","#input","#usingInput","fn","#xOffset","#yOffset","#updateLayout","inputStyle","inputRect","cloneRect","#isLayoutUpdating","prop","propertiesToCopy","InputRange","#inputElement","#startOffset","#endOffset","element","startOffset","endOffset","selectionStart","selectionEnd","offset","#clampOffset","toStart","#createCloneRange","#styleClone","range","textNode","TextExpander$2","expander","match","menu","_b","position","caretRect","targetPosition","currentPosition","delta","currentStyle","item","beginning","remaining","suffix","found","providers","provide","result","changeEvent","x","TextExpanderElement","keysAttr","keys","multiWordAttr","globalMultiWord","state","TextExpander","_getCustomEmojis","instance","masto","visibleEmojis","v1","customEmojis","visibleInPicker","searcher","Fuse","findAllMatches","getCustomEmojis","pmem","matchesArg","cacheKeyArg","keyArg","maxAge","role","className","windowMargin","observer","IntersectionObserver","entries","forEach","entry","isIntersecting","left","width","boundingClientRect","innerWidth","window","insetInlineStart","isRTL","observe","encodeHTML","str","replace","char","charCodeAt","onTrigger","props","ref","t","_useLingui","textExpanderRef","useRef","api","searcherRef","textExpanderTextRef","hasTextExpanderRef","useImperativeHandle","setStyle","current","Object","assign","activated","useEffect","then","catch","console","textExpander","showMore","limit","results","html","emoji","shortcode","innerHTML","matched","resolve","searchResults","q","response","avatarStatic","name","displayName","username","acct","emojis","history","roles","accountInstance","displayNameWithEmoji","total","acc","cur","_t","error","more","continue","setTimeout","handleCommited","Event","handleActivate","handleDeactivate","handleChange","handleValue","addEventListener","removeEventListener","expiryOptions","i18nDuration","ComposePoll","lang","poll","onInput","maxOptions","maxExpiration","minExpiration","maxCharactersPerOption","options","expiresIn","multiple","map","option","i","required","maxlength","placeholder","values","0","spellCheck","autocomplete","dir","onClick","splice","push","checked","_Trans","label","USERNAME_RE","MENTION_RE","HASHTAG_RE","SHORTCODE_RE_FRAGMENT","SCAN_RE","highlightText","Infinity","withinLimitHTML","exceedLimitHTML","htmlSegments","index","escapeHTML","autoResizeTextarea","textarea","offsetHeight","scrollHeight","clientHeight","innerHeight","height","detectLangs","langDetector","langs","detect","slice","detectedLanguage","detectAll","__vitePreload","Textarea","forwardRef","setText","useState","textareaProps","useThrottledResizeObserver","onResize","getBoundingClientRect","minHeight","slowHighlightPerf","composeHighlightRef","throttleHighlightText","useThrottledCallback","cancel","start","end","Date","now","debouncedAutoDetectLanguage","useDebouncedCallback","dom","mark","querySelectorAll","remove","text2","languages","autoCapitalize","autoComplete","autoCorrect","rows","cols","hasTextExpander","lastLine","textBeforeCursor","bullet","newBullet","number","preSpaces","anything","preventDefault","pos","postSpaces","setRangeText","setSelectionRange","dispatchEvent","scrollTop","onScroll","pastedText","CUSTOM_EMOJIS_COUNT","EMOJI_SIZE_MIN","EMOJI_SIZE_MAX","EMOJI_SIZE_STEP","CustomEmojiButton","memo","showCode","addEdges","parent","currentTarget","closest","rect","selfRect","targetClassList","classList","buffer","add","right","undefined","onPointerEnter","onFocus","staticUrl","srcSet","media","src","alt","loading","decoding","_Fragment","CustomEmojisList","onSelect","i18n","setMax","CUSTOM_EMOJI_SIZE","CustomEmojisModal","onClose","defaultSearchTerm","uiState","setUIState","customEmojisList","setCustomEmojis","recentlyUsedCustomEmojis","useMemo","store","account","get","customEmojisCatList","emojisCat","othersCat","category","scrollableRef","setMatches","onEmojiSizeDecrease","useCallback","emojiSize","setEmojiSize","newSize","Math","local","del","onEmojiSizeIncrease","onFind","onSelectEmoji","queueMicrotask","recentlyUsedCustomEmojis2","findIndex","unshift","emoji2","inputRef","focus","Icon","Loader","autocorrect","autocapitalize","matches","icon","FilePickerInput","maxMediaAttachments","mediaAttachments","mediaFiles","poweredByGiphyURL","PHANPY_GIPHY_API_KEY","GIPHY_API_KEY","import","GIFS_PER_PAGE","GIFPickerModal","setResults","formRef","qRef","currentOffset","fetchGIFs","behavior","api_key","rating","locale","r","fetch","referrerPolicy","debouncedOnInput","onSubmit","enterKeyHint","abrupt","gif","alt_text","images","fixed_height","original","fixed_height_small","fixed_height_downsampled","webp","urlObj","parse","strippedWebP","strippedURL","origin","webpObj","url2","theURL","mp4","srcset","referrerpolicy","onLoad","backgroundColor","pagination","__viteBrowserExternal","module","this","n","o","Ln","Mn","Nn","Bn","u","a","f","c","s","l","d","p","v","g","h","m","y","b","A","S","w","U","I","O","C","T","P","E","k","L","M","N","R","B","j","D","z","F","G","H","V","W","X","Y","$","Z","K","J","Q","tt","et","nt","rt","it","ot","ut","at","ft","ct","lt","st","dt","pt","vt","mt","ht","gt","yt","bt","xt","At","St","wt","Ut","It","Ot","Ct","Tt","Pt","Et","kt","Lt","Mt","Nt","Rt","Bt","jt","Dt","zt","Ft","Gt","Ht","Vt","Wt","Xt","qt","$t","Yt","Zt","Kt","Jt","ne","Qt","te","ee","re","ie","oe","ue","ae","fe","ce","se","le","de","pe","ve","he","ge","me","ye","be","xe","Ae","Se","we","Ue","Ce","Oe","Ie","Te","Le","Ee","Pe","ke","Me","De","Ne","Be","_e","Re","je","ze","qe","Fe","Ge","Ve","We","Xe","Ye","$e","He","Ze","Ke","Je","vn","hn","an","gn","Qe","tn","en","nn","rn","on","un","sn","cn","ln","dn","pn","mn","yn","bn","xn","An","Sn","wn","Un","Cn","In","On","Tn","Pn","En","kn","require$$1","require$$3","Rn","TAG_NAMES","extractImageDescription","startsWith","tags","ExifReader","load","trim","PHANPY_IMG_ALT_API_URL","IMG_ALT_API_URL","scaleDimension","matrix","matrixLimit","scalingFactor","sqrt","newWidth","floor","newHeight","MediaAttachment","attachment","descriptionLimit","onDescriptionChange","onRemove","supportsEdit","supports","checkMaxError","imageSizeLimit","imageMatrixLimit","videoSizeLimit","videoMatrixLimit","videoFrameRateLimit","maxError","imageMatrix","setImageMatrix","setMaxError","details","videoMatrix","setVideoMatrix","setDescription","cancelled","extractedDescription","suffixType","subtype","suffixTypes","subTypeMap","debouncedOnDescriptionChange","has","showModal","setShowModal","timer","textareaRef","descTextarea","clearTimeout","toastRef","maxErrorText","err","type2","maxErrorToast","imageSize","imageMatrix2","imageMatrixLimit2","videoSize","videoSizeLimit2","videoMatrix2","videoMatrixLimit2","tabIndex","naturalWidth","naturalHeight","playsinline","muted","disablePictureInPicture","preload","onLoadedMetadata","videoWidth","videoHeight","controls","duration","Modal","Menu2","portal","body","containerProps","zIndex","align","overflow","menuButton","MenuItem","showToast","FormData","message","hideToast","params","localeCode2Text","MentionModal","accounts","setAccounts","relationshipsMap","setRelationshipsMap","selectedIndex","setSelectedIndex","loadRelationships","relationships","fetchRelationships","loadAccounts","term","search","debouncedLoadAccounts","useHotkeys","selectedAccount","selectAccount","enableOnFormTags","useKey","listRef","selectedItem","block","relationship","avatarSize","showStats","showActivity","QuoteSuggestion","quoteSuggestion","hasCurrentQuoteStatus","onAccept","onCancel","Status","status","readOnly","supportedLanguagesMap","supportedLanguages","reduce","code","common","native","expirySeconds","oneDay","expiresInFromExpiresAt","expiresAt","find","DEFAULT_LANG","localeMatch","getDtfLocale","usernameRegex","urlPlaceholder","countableText","inputText","LF","mem","ListFormat","ADD_LABELS","camera","customEmoji","sensitive","scheduledPost","DEFAULT_SCHEDULED_AT","MIN_SCHEDULED_AT","isMimeTypeSupported","fileType","includes","split","Compose","replyToStatus","replyMode","editStatus","draftStatus","quoteStatus","standalone","hasOpener","rtf","RTF","lf","UID","uid","currentAccount","currentAccountInfo","charactersReservedPerUrl","polls","supportedImagesVideosTypes","setQuoteApprovalPolicy","spoilerTextRef","visibility","setVisibility","quoteApprovalPolicy","prevLanguage","setSensitive","sensitiveMedia","setSensitiveMedia","language","setLanguage","scheduledAt","setScheduledAt","prefs","setQuoteSuggestion","currentQuoteStatus","setLocalQuoteStatus","checkQuoteEligibility","setQuoteCleared","getPreferences","quoteApproval","isSelf","isPublic","isMineAndPrivate","isQuoteAutomaticallyAccepted","isQuoteManuallyAccepted","handlePastedLink","supportsNativeQuote","unfurledData","unfurlMastodonLink","originalURL","focusTextarea","cursorPosition","targetElement","textBeforeInsert","spaceAfterInsert","textAfterInsert","lastFocusedFieldRef","spaceBeforeInsert","newText","focusLastFocusedField","handleFocus","composeContainerRef","lastFocusedEmojiFieldRef","composeContainer","isFormElement","spoilerText","visibility2","language2","sensitive2","mentions","authorMention","oninputTextarea","allMentions","otherMentions","composablePoll","statusSource","statuses","setPoll","postQuoteApprovalPolicy","alert","toLowerCase","policy","sensitiveMedia2","mediaAttachments2","scheduledAt2","quoteApprovalPolicy2","snapStates","beforeUnloadCopy","canClose","composerState","hasValue","hasMediaAttachments","hasOnlyAcct","confirmClose","hasIDMediaAttachments","handleBeforeUnload","sameWithSource","supportsCloseWatcher","escDownRef","yes","returnValue","hasModal","modals","hasOnlyComposer","getCharCount","useCloseWatcher","updateCharCount","draftKey","backgroundDraft","keyup","ns","deepEqual","prevBackgroundDraft","db","useInterval","saveUnsavedDraft","quote","_i18n","debug","drafts","unsupportedFiles","updatedAt","handleItems","querySelector","items","clipboardData","dataTransfer","allowedFiles","1","format","handleDragover","showMentionPicker","setShowMentionPicker","setShowEmoji2Picker","stopPropagation","autoDetectedLanguages","topSupportedLanguages","topLanguages","contentTranslationHideLanguages","restLanguages","codeA","commonA","codeB","commonB","replyToStatusMonthsAgo","onMinimize","cwButtonDisabled","onCWButtonClick","pollButtonDisabled","showGIFPicker","setAutoDetectedLanguages","highlightLanguageField","highlightVisibilityField","settings","showAddButton","BUTTON_WIDTH","addSubToolbarRef","scrollWidth","truncated","setShowAddButton","overTruncated","minimized","onScheduledAtClick","mediaButtonDisabled","showPollButton","onPollButtonClick","newWin","confirmText","passData","opener","__STATES__","showCompose","disableQuotePolicy","openCompose","scheduledAtButtonDisabled","AccountBlock","useAvatarStatic","__COMPOSE__","previewMode","formData","components","pointerEvents","opacity","cancelable","fromEntries","params2","res","mediaPromises","hasNoDescriptions","removeNullUndefined","v2","Promise","publishing","newStatus","reason","e2","quote_approval_policy","action","in_reply_to_id","saveStatus","skipThreading","i2","fileID","newAttachments","poll2","newPoll","ScheduledAtField","currentValue","pastedLinkPos","lastCursorPos","newValue","getLocalTimezoneName","open","hasCurrentQuote","MenuDivider","composerGIFPicker","setShowGIFPicker","showScheduledAt","quoteURL","currentText","quoteCleared","localQuoteStatus","linkPos","visibilityText","commonText","session","socialAddress","showCommon","showEmoji2Picker","emojiShortcode","insertTextAtCursor","newMediaAttachments","theToast","obj","log"],"ignoreList":[4,5,15],"sources":["../../src/utils/string-length.js","../../src/utils/url-regex.js","../../src/components/camera-capture-input.jsx","../../src/components/char-count-meter.jsx","../../node_modules/@github/combobox-nav/dist/index.js","../../node_modules/@github/text-expander-element/dist/index.js","../../src/utils/custom-emojis.js","../../src/components/text-expander.jsx","../../src/components/compose-poll.jsx","../../src/components/compose-textarea.jsx","../../src/components/custom-emojis-modal.jsx","../../src/components/file-picker-input.jsx","../../src/assets/powered-by-giphy.svg","../../src/components/gif-picker-modal.jsx","../../__vite-browser-external","../../node_modules/exifreader/dist/exif-reader.js","../../src/utils/extract-image-desc.js","../../src/components/media-attachment.jsx","../../src/components/mention-modal.jsx","../../src/components/quote-suggestion.jsx","../../src/components/compose.jsx"],"sourcesContent":["const segmenter = new Intl.Segmenter();\n\nexport default function stringLength(string) {\n if (string === '') return 0;\n let length = 0;\n for (const _ of segmenter.segment(string)) {\n length++;\n }\n return length;\n}\n","import urlRegex from '../data/url-regex';\n\nconst urlRegexObj = new RegExp(urlRegex.source, urlRegex.flags);\n\nexport default urlRegexObj;\n","const isMobileSafari =\n /iPad|iPhone|iPod/.test(navigator.userAgent) &&\n /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\nfunction CameraCaptureInput({\n hidden,\n disabled = false,\n supportedMimeTypes,\n setMediaAttachments,\n}) {\n // If not Mobile Safari, only apply image/*\n // Chrome Android doesn't show the camera if image and video combined\n // It also can't switch between photo and video mode like iOS/Safari\n const filteredSupportedMimeTypes = isMobileSafari\n ? supportedMimeTypes\n : supportedMimeTypes?.filter((mimeType) => !/^image\\//i.test(mimeType));\n\n return (\n <input\n type=\"file\"\n hidden={hidden}\n accept={filteredSupportedMimeTypes?.join(',')}\n capture=\"environment\"\n disabled={disabled}\n onChange={(e) => {\n const files = e.target.files;\n if (!files) return;\n const mediaFile = Array.from(files)[0];\n if (!mediaFile) return;\n setMediaAttachments((attachments) => [\n ...attachments,\n {\n file: mediaFile,\n type: mediaFile.type,\n size: mediaFile.size,\n url: URL.createObjectURL(mediaFile),\n id: null, // indicate uploaded state\n description: null,\n },\n ]);\n e.target.value = null;\n }}\n />\n );\n}\n\nexport const supportsCameraCapture = (() => {\n const input = document.createElement('input');\n return 'capture' in input;\n})();\n\nexport default CameraCaptureInput;\n","import { useSnapshot } from 'valtio';\n\nimport states from '../utils/states';\n\nfunction CharCountMeter({ maxCharacters = 500, hidden }) {\n const snapStates = useSnapshot(states);\n const charCount = snapStates.composerCharacterCount;\n const leftChars = maxCharacters - charCount;\n if (hidden) {\n return <span class=\"char-counter\" hidden />;\n }\n return (\n <span\n class=\"char-counter\"\n title={`${leftChars}/${maxCharacters}`}\n style={{\n '--percentage': (charCount / maxCharacters) * 100,\n }}\n >\n <meter\n class={`${\n leftChars <= -10\n ? 'explode'\n : leftChars <= 0\n ? 'danger'\n : leftChars <= 20\n ? 'warning'\n : ''\n }`}\n value={charCount}\n max={maxCharacters}\n />\n <span class=\"counter\">{leftChars}</span>\n </span>\n );\n}\n\nexport default CharCountMeter;\n","export default class Combobox {\n constructor(input, list, { tabInsertsSuggestions, defaultFirstOption, scrollIntoViewOptions } = {}) {\n this.input = input;\n this.list = list;\n this.tabInsertsSuggestions = tabInsertsSuggestions !== null && tabInsertsSuggestions !== void 0 ? tabInsertsSuggestions : true;\n this.defaultFirstOption = defaultFirstOption !== null && defaultFirstOption !== void 0 ? defaultFirstOption : false;\n this.scrollIntoViewOptions = scrollIntoViewOptions !== null && scrollIntoViewOptions !== void 0 ? scrollIntoViewOptions : { block: 'nearest', inline: 'nearest' };\n this.isComposing = false;\n if (!list.id) {\n list.id = `combobox-${Math.random().toString().slice(2, 6)}`;\n }\n this.ctrlBindings = !!navigator.userAgent.match(/Macintosh/);\n this.keyboardEventHandler = event => keyboardBindings(event, this);\n this.compositionEventHandler = event => trackComposition(event, this);\n this.inputHandler = this.clearSelection.bind(this);\n input.setAttribute('role', 'combobox');\n input.setAttribute('aria-controls', list.id);\n input.setAttribute('aria-expanded', 'false');\n input.setAttribute('aria-autocomplete', 'list');\n input.setAttribute('aria-haspopup', 'listbox');\n }\n destroy() {\n this.clearSelection();\n this.stop();\n this.input.removeAttribute('role');\n this.input.removeAttribute('aria-controls');\n this.input.removeAttribute('aria-expanded');\n this.input.removeAttribute('aria-autocomplete');\n this.input.removeAttribute('aria-haspopup');\n }\n start() {\n this.input.setAttribute('aria-expanded', 'true');\n this.input.addEventListener('compositionstart', this.compositionEventHandler);\n this.input.addEventListener('compositionend', this.compositionEventHandler);\n this.input.addEventListener('input', this.inputHandler);\n this.input.addEventListener('keydown', this.keyboardEventHandler);\n this.list.addEventListener('click', commitWithElement);\n this.indicateDefaultOption();\n }\n stop() {\n this.clearSelection();\n this.input.setAttribute('aria-expanded', 'false');\n this.input.removeEventListener('compositionstart', this.compositionEventHandler);\n this.input.removeEventListener('compositionend', this.compositionEventHandler);\n this.input.removeEventListener('input', this.inputHandler);\n this.input.removeEventListener('keydown', this.keyboardEventHandler);\n this.list.removeEventListener('click', commitWithElement);\n }\n indicateDefaultOption() {\n var _a;\n if (this.defaultFirstOption) {\n (_a = Array.from(this.list.querySelectorAll('[role=\"option\"]:not([aria-disabled=\"true\"])'))\n .filter(visible)[0]) === null || _a === void 0 ? void 0 : _a.setAttribute('data-combobox-option-default', 'true');\n }\n }\n navigate(indexDiff = 1) {\n const focusEl = Array.from(this.list.querySelectorAll('[aria-selected=\"true\"]')).filter(visible)[0];\n const els = Array.from(this.list.querySelectorAll('[role=\"option\"]')).filter(visible);\n const focusIndex = els.indexOf(focusEl);\n if ((focusIndex === els.length - 1 && indexDiff === 1) || (focusIndex === 0 && indexDiff === -1)) {\n this.clearSelection();\n this.input.focus();\n return;\n }\n let indexOfItem = indexDiff === 1 ? 0 : els.length - 1;\n if (focusEl && focusIndex >= 0) {\n const newIndex = focusIndex + indexDiff;\n if (newIndex >= 0 && newIndex < els.length)\n indexOfItem = newIndex;\n }\n const target = els[indexOfItem];\n if (!target)\n return;\n for (const el of els) {\n el.removeAttribute('data-combobox-option-default');\n if (target === el) {\n this.input.setAttribute('aria-activedescendant', target.id);\n target.setAttribute('aria-selected', 'true');\n fireSelectEvent(target);\n target.scrollIntoView(this.scrollIntoViewOptions);\n }\n else {\n el.removeAttribute('aria-selected');\n }\n }\n }\n clearSelection() {\n this.input.removeAttribute('aria-activedescendant');\n for (const el of this.list.querySelectorAll('[aria-selected=\"true\"]')) {\n el.removeAttribute('aria-selected');\n }\n this.indicateDefaultOption();\n }\n}\nfunction keyboardBindings(event, combobox) {\n if (event.shiftKey || event.metaKey || event.altKey)\n return;\n if (!combobox.ctrlBindings && event.ctrlKey)\n return;\n if (combobox.isComposing)\n return;\n switch (event.key) {\n case 'Enter':\n if (commit(combobox.input, combobox.list)) {\n event.preventDefault();\n }\n break;\n case 'Tab':\n if (combobox.tabInsertsSuggestions && commit(combobox.input, combobox.list)) {\n event.preventDefault();\n }\n break;\n case 'Escape':\n combobox.clearSelection();\n break;\n case 'ArrowDown':\n combobox.navigate(1);\n event.preventDefault();\n break;\n case 'ArrowUp':\n combobox.navigate(-1);\n event.preventDefault();\n break;\n case 'n':\n if (combobox.ctrlBindings && event.ctrlKey) {\n combobox.navigate(1);\n event.preventDefault();\n }\n break;\n case 'p':\n if (combobox.ctrlBindings && event.ctrlKey) {\n combobox.navigate(-1);\n event.preventDefault();\n }\n break;\n default:\n if (event.ctrlKey)\n break;\n combobox.clearSelection();\n }\n}\nfunction commitWithElement(event) {\n if (!(event.target instanceof Element))\n return;\n const target = event.target.closest('[role=\"option\"]');\n if (!target)\n return;\n if (target.getAttribute('aria-disabled') === 'true')\n return;\n fireCommitEvent(target, { event });\n}\nfunction commit(input, list) {\n const target = list.querySelector('[aria-selected=\"true\"], [data-combobox-option-default=\"true\"]');\n if (!target)\n return false;\n if (target.getAttribute('aria-disabled') === 'true')\n return true;\n target.click();\n return true;\n}\nfunction fireCommitEvent(target, detail) {\n target.dispatchEvent(new CustomEvent('combobox-commit', { bubbles: true, detail }));\n}\nfunction fireSelectEvent(target) {\n target.dispatchEvent(new Event('combobox-select', { bubbles: true }));\n}\nfunction visible(el) {\n return (!el.hidden &&\n !(el instanceof HTMLInputElement && el.type === 'hidden') &&\n (el.offsetWidth > 0 || el.offsetHeight > 0));\n}\nfunction trackComposition(event, combobox) {\n combobox.isComposing = event.type === 'compositionstart';\n const list = document.getElementById(combobox.input.getAttribute('aria-controls') || '');\n if (!list)\n return;\n combobox.clearSelection();\n}\n","import Combobox from '@github/combobox-nav';\n\nconst boundary = /\\s|\\(|\\[/;\nfunction query(text, key, cursor, { multiWord, lookBackIndex, lastMatchPosition } = {\n multiWord: false,\n lookBackIndex: 0,\n lastMatchPosition: null\n}) {\n let keyIndex = text.lastIndexOf(key, cursor - 1);\n if (keyIndex === -1)\n return;\n if (keyIndex < lookBackIndex)\n return;\n if (multiWord) {\n if (lastMatchPosition != null) {\n if (lastMatchPosition === keyIndex)\n return;\n keyIndex = lastMatchPosition - key.length;\n }\n const charAfterKey = text[keyIndex + 1];\n if (charAfterKey === ' ' && cursor >= keyIndex + key.length + 1)\n return;\n const newLineIndex = text.lastIndexOf('\\n', cursor - 1);\n if (newLineIndex > keyIndex)\n return;\n const dotIndex = text.lastIndexOf('.', cursor - 1);\n if (dotIndex > keyIndex)\n return;\n }\n else {\n const spaceIndex = text.lastIndexOf(' ', cursor - 1);\n if (spaceIndex > keyIndex)\n return;\n }\n const pre = text[keyIndex - 1];\n if (pre && !boundary.test(pre))\n return;\n const queryString = text.substring(keyIndex + key.length, cursor);\n return {\n text: queryString,\n position: keyIndex + key.length\n };\n}\n\nclass InputStyleCloneUpdateEvent extends Event {\n constructor() {\n super(\"update\");\n }\n}\nconst CloneRegistry = new WeakMap();\n/**\n * Creates an element that exactly matches an input pixel-for-pixel and automatically stays in sync with it. This\n * is a non-interactive overlay on to the input and can be used to affect the visual appearance of the input\n * without modifying its behavior. The clone element is hidden by default.\n *\n * This lower level API powers the `InputRange` but provides more advanced functionality including event updates.\n *\n * Emits `update` events whenever anything is recalculated: when the layout changes, when the user scrolls, when the\n * input is updated, etc. This event may be emitted more than once per change.\n *\n * @note There may be cases in which the clone cannot observe changes to the input and fails to automatically update.\n * For example, if the `value` property on the input is written to directly, no `input` event is emitted by the input\n * and the clone does not automatically update. In these cases, `forceUpdate` can be used to manually trigger an update.\n */\n// PRIOR ART: This approach was adapted from the following MIT-licensed sources:\n// - primer/react (Copyright (c) 2018 GitHub, Inc.): https://github.com/primer/react/blob/a0db832302702b869aa22b0c4049ad9305ef631f/src/drafts/utils/character-coordinates.ts\n// - component/textarea-caret-position (Copyright (c) 2015 Jonathan Ong me@jongleberry.com): https://github.com/component/textarea-caret-position/blob/b5db7a7e47dd149c2a66276183c69234e4dabe30/index.js\n// - koddsson/textarea-caret-position (Copyright (c) 2015 Jonathan Ong me@jongleberry.com): https://github.com/koddsson/textarea-caret-position/blob/eba40ec8488eed4d77815f109af22e1d9c0751d3/index.js\nclass InputStyleClone extends EventTarget {\n #styleObserver = new MutationObserver(() => this.#updateStyles());\n #resizeObserver = new ResizeObserver(() => this.#requestUpdateLayout());\n // This class is unique in that it will prevent itself from getting garbage collected because of the subscribed\n // observers (if never detached). Because of this, we want to avoid preventing the existence of this class from also\n // preventing the garbage collection of the associated input. This also allows us to automatically detach if the\n // input gets collected.\n #inputRef;\n #container = document.createElement(\"div\");\n #cloneElement = document.createElement(\"div\");\n /**\n * Get the clone for an input, reusing an existing one if available. This avoids creating unecessary clones, which\n * have a performance cost due to their high-frequency event-based updates. Because these elements are shared, they\n * should be mutated with caution. If you're planning to mutate the clone, consider constructing a new one instead.\n *\n * Upon initial creation the clone element will automatically be inserted into the DOM and begin observing the\n * linked input.\n * @param input The target input to clone.\n */\n static for(input) {\n let clone = CloneRegistry.get(input);\n if (!clone) {\n clone = new InputStyleClone(input);\n CloneRegistry.set(input, clone);\n }\n return clone;\n }\n /**\n * Connect this instance to a target input element and insert this instance into the DOM in the correct location.\n *\n * NOTE: calling the static `for` method is usually preferable as it will reuse an existing clone if available.\n * However, if reusing clones is problematic (ie, if the clone needs to be mutated), a clone can be constructed\n * directly with `new InputStyleClone(target)`.\n */\n constructor(input) {\n super();\n this.#inputRef = new WeakRef(input);\n // We want position:absolute so it doesn't take space in the layout, but that doesn't work with display:table-cell\n // used in the HTMLInputElement approach. So we need a wrapper.\n this.#container.style.position = \"absolute\";\n this.#container.style.pointerEvents = \"none\";\n this.#container.setAttribute(\"aria-hidden\", \"true\");\n this.#container.appendChild(this.#cloneElement);\n this.#cloneElement.style.pointerEvents = \"none\";\n this.#cloneElement.style.userSelect = \"none\";\n this.#cloneElement.style.overflow = \"hidden\";\n this.#cloneElement.style.display = \"block\";\n // Important not to use display:none which would not render the content at all\n this.#cloneElement.style.visibility = \"hidden\";\n if (input instanceof HTMLTextAreaElement) {\n this.#cloneElement.style.whiteSpace = \"pre-wrap\";\n this.#cloneElement.style.wordWrap = \"break-word\";\n }\n else {\n this.#cloneElement.style.whiteSpace = \"nowrap\";\n // text in single-line inputs is vertically centered\n this.#cloneElement.style.display = \"table-cell\";\n this.#cloneElement.style.verticalAlign = \"middle\";\n }\n input.after(this.#container);\n this.#updateStyles();\n this.#updateText();\n this.#styleObserver.observe(input, {\n attributeFilter: [\n \"style\",\n \"dir\", // users can right-click in some browsers to change the text direction dynamically\n ],\n });\n this.#resizeObserver.observe(input);\n document.addEventListener(\"scroll\", this.#onDocumentScrollOrResize, { capture: true });\n window.addEventListener(\"resize\", this.#onDocumentScrollOrResize, { capture: true });\n // capture so this happens first, so other things can respond to `input` events after this data updates\n input.addEventListener(\"input\", this.#onInput, { capture: true });\n }\n /** Get the clone element. */\n get element() {\n return this.#cloneElement;\n }\n /**\n * Force a recalculation. Will emit an `update` event. This is typically not needed unless the input has changed in\n * an unobservable way, eg by directly writing to the `value` property.\n */\n forceUpdate() {\n this.#updateStyles();\n this.#updateText();\n }\n disconnect() {\n this.#container?.remove();\n this.#styleObserver.disconnect();\n this.#resizeObserver.disconnect();\n document.removeEventListener(\"scroll\", this.#onDocumentScrollOrResize, { capture: true });\n window.removeEventListener(\"resize\", this.#onDocumentScrollOrResize, { capture: true });\n // Can't use `usingInput` here since that could infinitely recurse\n const input = this.#input;\n if (input) {\n input.removeEventListener(\"input\", this.#onInput, { capture: true });\n CloneRegistry.delete(input);\n }\n }\n // --- private ---\n get #input() {\n return this.#inputRef?.deref();\n }\n /** Perform `fn` using the `input` if it is still available. If not, clean up the clone instead. */\n #usingInput(fn) {\n const input = this.#input;\n if (!input)\n return this.disconnect();\n return fn(input);\n }\n /** Current relative x-adjustment in pixels, executed via CSS transform. */\n #xOffset = 0;\n /** Current relative y-adjustment in pixels, executed via CSS transform. */\n #yOffset = 0;\n /**\n * Update only geometric properties without recalculating styles. Typically call `#requestUpdateLayout` instead to\n * only update once per animation frame.\n */\n #updateLayout() {\n // This runs often, so keep it as fast as possible! Avoid all unecessary updates.\n this.#usingInput((input) => {\n const inputStyle = window.getComputedStyle(input);\n this.#cloneElement.style.height = inputStyle.height;\n this.#cloneElement.style.width = inputStyle.width;\n // Immediately re-adjust for browser inconsistencies in scrollbar handling, if necessary\n if (input.clientHeight !== this.#cloneElement.clientHeight)\n this.#cloneElement.style.height = `calc(${inputStyle.height} + ${input.clientHeight - this.#cloneElement.clientHeight}px)`;\n if (input.clientWidth !== this.#cloneElement.clientWidth)\n this.#cloneElement.style.width = `calc(${inputStyle.width} + ${input.clientWidth - this.#cloneElement.clientWidth}px)`;\n // Position on top of the input\n const inputRect = input.getBoundingClientRect();\n const cloneRect = this.#cloneElement.getBoundingClientRect();\n this.#xOffset = this.#xOffset + inputRect.left - cloneRect.left;\n this.#yOffset = this.#yOffset + inputRect.top - cloneRect.top;\n this.#cloneElement.style.transform = `translate(${this.#xOffset}px, ${this.#yOffset}px)`;\n this.#cloneElement.scrollTop = input.scrollTop;\n this.#cloneElement.scrollLeft = input.scrollLeft;\n this.dispatchEvent(new InputStyleCloneUpdateEvent());\n });\n }\n #isLayoutUpdating = false;\n /** Request a layout update. Will only happen once per animation frame, to avoid unecessary updates. */\n #requestUpdateLayout() {\n if (this.#isLayoutUpdating)\n return;\n this.#isLayoutUpdating = true;\n requestAnimationFrame(() => {\n this.#updateLayout();\n this.#isLayoutUpdating = false;\n });\n }\n /** Update the styles of the clone based on the styles of the input, then request a layout update. */\n #updateStyles() {\n this.#usingInput((input) => {\n const inputStyle = window.getComputedStyle(input);\n for (const prop of propertiesToCopy)\n this.#cloneElement.style[prop] = inputStyle[prop];\n this.#requestUpdateLayout();\n });\n }\n /**\n * Update the text content of the clone based on the text content of the input. Triggers a layout update in case the\n * text update caused scrolling.\n */\n #updateText() {\n this.#usingInput((input) => {\n this.#cloneElement.textContent = input.value;\n // This is often unecessary on a pure text update, but text updates could potentially cause layout updates like\n // scrolling or resizing. And we run the update on _every frame_ when scrolling, so this isn't that expensive.\n // We don't requestUpdateLayout here because this one should happen synchronously, so that clients can react\n // within their own `input` event handlers.\n this.#updateLayout();\n });\n }\n #onInput = () => this.#updateText();\n #onDocumentScrollOrResize = (event) => {\n this.#usingInput((input) => {\n if (event.target === document ||\n event.target === window ||\n (event.target instanceof Node && event.target.contains(input)))\n this.#requestUpdateLayout();\n });\n };\n}\n// Note that some browsers, such as Firefox, do not concatenate properties\n// into their shorthand (e.g. padding-top, padding-bottom etc. -> padding),\n// so we have to list every single property explicitly.\nconst propertiesToCopy = [\n // RTL / vertical writing modes support:\n \"direction\",\n \"writingMode\",\n \"unicodeBidi\",\n \"textOrientation\",\n \"boxSizing\",\n \"borderTopWidth\",\n \"borderRightWidth\",\n \"borderBottomWidth\",\n \"borderLeftWidth\",\n \"borderStyle\",\n \"paddingTop\",\n \"paddingRight\",\n \"paddingBottom\",\n \"paddingLeft\",\n // https://developer.mozilla.org/en-US/docs/Web/CSS/font\n \"fontStyle\",\n \"fontVariant\",\n \"fontWeight\",\n \"fontStretch\",\n \"fontSize\",\n \"fontSizeAdjust\",\n \"lineHeight\",\n \"fontFamily\",\n \"textAlign\",\n \"textTransform\",\n \"textIndent\",\n \"textDecoration\",\n \"letterSpacing\",\n \"wordSpacing\",\n \"tabSize\",\n \"MozTabSize\",\n];\n\nclass InputRange {\n #inputElement;\n #startOffset;\n #endOffset;\n /**\n * Construct a new `InputRange`.\n * @param element The target input element that contains the content for the range.\n * @param startOffset The inclusive 0-based start index for the range. Will be adjusted to fit in the input contents.\n * @param endOffset The exclusive 0-based end index for the range. Will be adjusted to fit in the input contents.\n */\n constructor(element, startOffset = 0, endOffset = startOffset) {\n this.#inputElement = element;\n this.#startOffset = startOffset;\n this.#endOffset = endOffset;\n }\n /**\n * Create a new range from the current user selection. If the input is not focused, the range will just be the start\n * of the input (offsets `0` to `0`).\n *\n * This can be used to get the caret coordinates: if the resulting range is `collapsed`, the location of the\n * `getBoundingClientRect` will be the location of the caret caret (note, however, that the width will be `0` in\n * this case).\n */\n static fromSelection(input) {\n const { selectionStart, selectionEnd } = input;\n return new InputRange(input, selectionStart ?? undefined, selectionEnd ?? undefined);\n }\n /** Returns true if the start is equal to the end of this range. */\n get collapsed() {\n return this.startOffset === this.endOffset;\n }\n /** Always returns the containing input element. */\n get commonAncestorContainer() {\n return this.#inputElement;\n }\n /** Always returns the containing input element. */\n get endContainer() {\n return this.#inputElement;\n }\n /** Always returns the containing input element. */\n get startContainer() {\n return this.#inputElement;\n }\n get startOffset() {\n return this.#startOffset;\n }\n get endOffset() {\n return this.#endOffset;\n }\n /** Update the inclusive start offset. Will be adjusted to fit within the content size. */\n setStartOffset(offset) {\n this.#startOffset = this.#clampOffset(offset);\n }\n /** Update the exclusive end offset. Will be adjusted to fit within the content size. */\n setEndOffset(offset) {\n this.#endOffset = this.#clampOffset(offset);\n }\n /**\n * Collapse this range to one side.\n * @param toStart If `true`, will collapse to the start side. Otherwise, will collapse to the end.\n */\n collapse(toStart = false) {\n if (toStart)\n this.setEndOffset(this.startOffset);\n else\n this.setStartOffset(this.endOffset);\n }\n /** Returns a `DocumentFragment` containing a new `Text` node containing the content in the range. */\n cloneContents() {\n return this.#createCloneRange().cloneContents();\n }\n /** Create a copy of this range. */\n cloneRange() {\n return new InputRange(this.#inputElement, this.startOffset, this.endOffset);\n }\n /**\n * Obtain one rect that contains the entire contents of the range. If the range spans multiple lines, this box will\n * contain all pieces of the range but may also contain some space outside the range.\n * @see https://iansan5653.github.io/dom-input-range/demos/playground/\n */\n getBoundingClientRect() {\n return this.#createCloneRange().getBoundingClientRect();\n }\n /**\n * Obtain the rects that contain contents of this range. If the range spans multiple lines, there will be multiple\n * bounding boxes. These boxes can be used, for example, to draw a highlight over the range.\n * @see https://iansan5653.github.io/dom-input-range/demos/playground/\n */\n getClientRects() {\n return this.#createCloneRange().getClientRects();\n }\n /** Get the contents of the range as a string. */\n toString() {\n return this.#createCloneRange().toString();\n }\n /**\n * Get the underlying `InputStyleClone` instance powering these calculations. This can be used to listen for\n * updates to trigger layout recalculation.\n */\n getStyleClone() {\n return this.#styleClone;\n }\n // --- private ---\n get #styleClone() {\n return InputStyleClone.for(this.#inputElement);\n }\n get #cloneElement() {\n return this.#styleClone;\n }\n #clampOffset(offset) {\n return Math.max(0, Math.min(offset, this.#inputElement.value.length));\n }\n #createCloneRange() {\n // It's tempting to create a single Range and reuse it across the lifetime of the class. However, this wouldn't be\n // accurate because the contents of the input can change and the contents of the range would become stale. So we\n // must create a new range every time we need it.\n const range = document.createRange();\n const textNode = this.#cloneElement.element.childNodes[0];\n if (textNode) {\n range.setStart(textNode, this.startOffset);\n range.setEnd(textNode, this.endOffset);\n }\n return range;\n }\n}\n\nconst states = new WeakMap();\nclass TextExpander {\n constructor(expander, input) {\n this.expander = expander;\n this.input = input;\n this.combobox = null;\n this.menu = null;\n this.match = null;\n this.justPasted = false;\n this.lookBackIndex = 0;\n this.oninput = this.onInput.bind(this);\n this.onpaste = this.onPaste.bind(this);\n this.onkeydown = this.onKeydown.bind(this);\n this.oncommit = this.onCommit.bind(this);\n this.onmousedown = this.onMousedown.bind(this);\n this.onblur = this.onBlur.bind(this);\n this.interactingWithList = false;\n input.addEventListener('paste', this.onpaste);\n input.addEventListener('input', this.oninput);\n input.addEventListener('keydown', this.onkeydown);\n input.addEventListener('blur', this.onblur);\n }\n destroy() {\n this.input.removeEventListener('paste', this.onpaste);\n this.input.removeEventListener('input', this.oninput);\n this.input.removeEventListener('keydown', this.onkeydown);\n this.input.removeEventListener('blur', this.onblur);\n }\n dismissMenu() {\n if (this.deactivate()) {\n this.lookBackIndex = this.input.selectionEnd || this.lookBackIndex;\n }\n }\n activate(match, menu) {\n var _a, _b;\n if (this.input !== document.activeElement && this.input !== ((_b = (_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.activeElement)) {\n return;\n }\n this.deactivate();\n this.menu = menu;\n if (!menu.id)\n menu.id = `text-expander-${Math.floor(Math.random() * 100000).toString()}`;\n this.expander.append(menu);\n this.combobox = new Combobox(this.input, menu);\n this.expander.dispatchEvent(new Event('text-expander-activate'));\n this.positionMenu(menu, match.position);\n this.combobox.start();\n menu.addEventListener('combobox-commit', this.oncommit);\n menu.addEventListener('mousedown', this.onmousedown);\n this.combobox.navigate(1);\n }\n positionMenu(menu, position) {\n const caretRect = new InputRange(this.input, position).getBoundingClientRect();\n const targetPosition = { left: caretRect.left, top: caretRect.top + caretRect.height };\n const currentPosition = menu.getBoundingClientRect();\n const delta = {\n left: targetPosition.left - currentPosition.left,\n top: targetPosition.top - currentPosition.top\n };\n if (delta.left !== 0 || delta.top !== 0) {\n const currentStyle = getComputedStyle(menu);\n menu.style.left = currentStyle.left ? `calc(${currentStyle.left} + ${delta.left}px)` : `${delta.left}px`;\n menu.style.top = currentStyle.top ? `calc(${currentStyle.top} + ${delta.top}px)` : `${delta.top}px`;\n }\n }\n deactivate() {\n const menu = this.menu;\n if (!menu || !this.combobox)\n return false;\n this.expander.dispatchEvent(new Event('text-expander-deactivate'));\n this.menu = null;\n menu.removeEventListener('combobox-commit', this.oncommit);\n menu.removeEventListener('mousedown', this.onmousedown);\n this.combobox.destroy();\n this.combobox = null;\n menu.remove();\n return true;\n }\n onCommit({ target }) {\n var _a;\n const item = target;\n if (!(item instanceof HTMLElement))\n return;\n if (!this.combobox)\n return;\n const match = this.match;\n if (!match)\n return;\n const beginning = this.input.value.substring(0, match.position - match.key.length);\n const remaining = this.input.value.substring(match.position + match.text.length);\n const detail = { item, key: match.key, value: null, continue: false };\n const canceled = !this.expander.dispatchEvent(new CustomEvent('text-expander-value', { cancelable: true, detail }));\n if (canceled)\n return;\n if (!detail.value)\n return;\n let suffix = (_a = this.expander.getAttribute('suffix')) !== null && _a !== void 0 ? _a : ' ';\n if (detail.continue) {\n suffix = '';\n }\n const value = `${detail.value}${suffix}`;\n this.input.value = beginning + value + remaining;\n const cursor = beginning.length + value.length;\n this.deactivate();\n this.input.focus({\n preventScroll: true\n });\n this.input.selectionStart = cursor;\n this.input.selectionEnd = cursor;\n if (!detail.continue) {\n this.lookBackIndex = cursor;\n this.match = null;\n }\n this.expander.dispatchEvent(new CustomEvent('text-expander-committed', { cancelable: false, detail: { input: this.input } }));\n }\n onBlur() {\n if (this.interactingWithList) {\n this.interactingWithList = false;\n return;\n }\n this.deactivate();\n }\n onPaste() {\n this.justPasted = true;\n }\n async onInput() {\n if (this.justPasted) {\n this.justPasted = false;\n return;\n }\n const match = this.findMatch();\n if (match) {\n this.match = match;\n const menu = await this.notifyProviders(match);\n if (!this.match)\n return;\n if (menu) {\n this.activate(match, menu);\n }\n else {\n this.deactivate();\n }\n }\n else {\n this.match = null;\n this.deactivate();\n }\n }\n findMatch() {\n const cursor = this.input.selectionEnd || 0;\n const text = this.input.value;\n if (cursor <= this.lookBackIndex) {\n this.lookBackIndex = cursor - 1;\n }\n for (const { key, multiWord } of this.expander.keys) {\n const found = query(text, key, cursor, {\n multiWord,\n lookBackIndex: this.lookBackIndex,\n lastMatchPosition: this.match ? this.match.position : null\n });\n if (found) {\n return { text: found.text, key, position: found.position };\n }\n }\n }\n async notifyProviders(match) {\n const providers = [];\n const provide = (result) => providers.push(result);\n const changeEvent = new CustomEvent('text-expander-change', {\n cancelable: true,\n detail: { provide, text: match.text, key: match.key }\n });\n const canceled = !this.expander.dispatchEvent(changeEvent);\n if (canceled)\n return;\n const all = await Promise.all(providers);\n const fragments = all.filter(x => x.matched).map(x => x.fragment);\n return fragments[0];\n }\n onMousedown() {\n this.interactingWithList = true;\n }\n onKeydown(event) {\n if (event.key === 'Escape') {\n this.match = null;\n if (this.deactivate()) {\n this.lookBackIndex = this.input.selectionEnd || this.lookBackIndex;\n event.stopImmediatePropagation();\n event.preventDefault();\n }\n }\n }\n}\nclass TextExpanderElement extends HTMLElement {\n get keys() {\n const keysAttr = this.getAttribute('keys');\n const keys = keysAttr ? keysAttr.split(' ') : [];\n const multiWordAttr = this.getAttribute('multiword');\n const multiWord = multiWordAttr ? multiWordAttr.split(' ') : [];\n const globalMultiWord = multiWord.length === 0 && this.hasAttribute('multiword');\n return keys.map(key => ({ key, multiWord: globalMultiWord || multiWord.includes(key) }));\n }\n set keys(value) {\n this.setAttribute('keys', value);\n }\n connectedCallback() {\n const input = this.querySelector('input[type=\"text\"], textarea');\n if (!(input instanceof HTMLInputElement || input instanceof HTMLTextAreaElement))\n return;\n const state = new TextExpander(this, input);\n states.set(this, state);\n }\n disconnectedCallback() {\n const state = states.get(this);\n if (!state)\n return;\n state.destroy();\n states.delete(this);\n }\n dismiss() {\n const state = states.get(this);\n if (!state)\n return;\n state.dismissMenu();\n }\n}\n\nif (!window.customElements.get('text-expander')) {\n window.TextExpanderElement = TextExpanderElement;\n window.customElements.define('text-expander', TextExpanderElement);\n}\n\nexport { TextExpanderElement as default };\n","import Fuse from 'fuse.js';\n\nimport pmem from './pmem';\n\nasync function _getCustomEmojis(instance, masto) {\n const emojis = await masto.v1.customEmojis.list();\n const visibleEmojis = emojis.filter((e) => e.visibleInPicker);\n const searcher = new Fuse(visibleEmojis, {\n keys: ['shortcode'],\n findAllMatches: true,\n });\n return [visibleEmojis, searcher];\n}\n\nconst getCustomEmojis = pmem(_getCustomEmojis, {\n // Limit by time to reduce memory usage\n // Cached by instance\n matchesArg: (cacheKeyArg, keyArg) => cacheKeyArg.instance === keyArg.instance,\n maxAge: 30 * 60 * 1000, // 30 minutes\n});\n\nexport { getCustomEmojis, _getCustomEmojis };\nexport default getCustomEmojis;\n","import '@github/text-expander-element';\n\nimport { useLingui } from '@lingui/react/macro';\nimport { forwardRef, useImperativeHandle } from 'preact/compat';\nimport { useEffect, useRef } from 'preact/hooks';\n\nimport { api } from '../utils/api';\nimport getCustomEmojis from '../utils/custom-emojis';\nimport emojifyText from '../utils/emojify-text';\nimport getDomain from '../utils/get-domain';\nimport isRTL from '../utils/is-rtl';\nimport shortenNumber from '../utils/shorten-number';\n\nconst menu = document.createElement('ul');\nmenu.role = 'listbox';\nmenu.className = 'text-expander-menu';\n\n// Set IntersectionObserver on menu, reposition it because text-expander doesn't handle it\nconst windowMargin = 16;\nconst observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const { left, width } = entry.boundingClientRect;\n const { innerWidth } = window;\n if (left + width > innerWidth) {\n const insetInlineStart = isRTL() ? 'right' : 'left';\n menu.style[insetInlineStart] = innerWidth - width - windowMargin + 'px';\n }\n }\n });\n});\nobserver.observe(menu);\n\nfunction encodeHTML(str) {\n return str.replace(/[&<>\"']/g, function (char) {\n return '&#' + char.charCodeAt(0) + ';';\n });\n}\n\nfunction TextExpander({ onTrigger = null, ...props }, ref) {\n const { t } = useLingui();\n const textExpanderRef = useRef();\n const { masto, instance } = api();\n const searcherRef = useRef();\n const textExpanderTextRef = useRef('');\n const hasTextExpanderRef = useRef(false);\n\n // Expose the activated state to parent components\n useImperativeHandle(ref, () => ({\n setStyle: (style) => {\n if (textExpanderRef.current) {\n Object.assign(textExpanderRef.current.style, style);\n }\n },\n activated: () => hasTextExpanderRef.current,\n }));\n\n // Setup emoji search if not already set up\n useEffect(() => {\n if (searcherRef.current) return; // Already set up\n\n getCustomEmojis(instance, masto)\n .then(([, searcher]) => {\n searcherRef.current = searcher;\n })\n .catch((e) => {\n console.error(e);\n });\n }, [instance, masto]);\n\n useEffect(() => {\n const textExpander = textExpanderRef.current;\n if (!textExpander) return;\n\n const handleChange = (e) => {\n const { key, provide, text } = e.detail;\n textExpanderTextRef.current = text;\n\n if (text === '') {\n provide(\n Promise.resolve({\n matched: false,\n }),\n );\n return;\n }\n\n if (key === ':') {\n const showMore = !!onTrigger;\n const results = searcherRef.current?.search(text, {\n limit: 5,\n });\n\n let html = '';\n results?.forEach(({ item: emoji }) => {\n const { shortcode, url } = emoji;\n html += `\n <li role=\"option\" data-value=\"${encodeHTML(shortcode)}\">\n <img src=\"${encodeHTML(\n url,\n )}\" width=\"16\" height=\"16\" alt=\"\" loading=\"lazy\" />\n ${encodeHTML(shortcode)}\n </li>`;\n });\n if (showMore) {\n html += `<li role=\"option\" data-value=\"\" data-more=\"${text}\">${'More…'}</li>`;\n }\n menu.innerHTML = html;\n\n provide(\n Promise.resolve({\n matched: (results?.length || 0) > 0,\n fragment: menu,\n }),\n );\n return;\n }\n\n // Handle @ mentions and # hashtags\n const type = {\n '@': 'accounts',\n '@': 'accounts',\n '#': 'hashtags',\n '#': 'hashtags',\n }[key];\n\n if (type) {\n provide(\n new Promise(async (resolve) => {\n try {\n let searchResults;\n if (type === 'accounts') {\n searchResults = await masto.v1.accounts.search.list({\n q: text,\n limit: 5,\n resolve: false,\n });\n } else {\n const response = await masto.v2.search.list({\n type,\n q: text,\n limit: 5,\n });\n searchResults = response[type] || response;\n }\n\n if (text !== textExpanderTextRef.current) {\n return;\n }\n\n const results = searchResults;\n let html = '';\n results.forEach((result) => {\n const {\n name,\n avatarStatic,\n displayName,\n username,\n acct,\n emojis,\n history,\n roles,\n url,\n } = result;\n const displayNameWithEmoji = emojifyText(displayName, emojis);\n const accountInstance = getDomain(url);\n\n if (acct) {\n html += `\n <li role=\"option\" data-value=\"${encodeHTML(acct)}\">\n <span class=\"avatar\">\n <img src=\"${encodeHTML(\n avatarStatic,\n )}\" width=\"16\" height=\"16\" alt=\"\" loading=\"lazy\" />\n </span>\n <span>\n <b>${displayNameWithEmoji || username}</b>\n <br><span class=\"bidi-isolate\">@${encodeHTML(\n acct,\n )}</span>\n ${\n roles?.map(\n (role) => ` <span class=\"tag collapsed\">\n ${role.name}\n ${\n !!accountInstance &&\n `<span class=\"more-insignificant\">\n ${accountInstance}\n </span>`\n }\n </span>`,\n ) || ''\n }\n </span>\n </li>\n `;\n } else {\n const total = history?.reduce?.(\n (acc, cur) => acc + +cur.uses,\n 0,\n );\n html += `\n <li role=\"option\" data-value=\"${encodeHTML(name)}\">\n <span class=\"grow\">#<b>${encodeHTML(name)}</b></span>\n ${\n total\n ? `<span class=\"count\">${shortenNumber(total)}</span>`\n : ''\n }\n </li>\n `;\n }\n });\n if (type === 'accounts') {\n html += `<li role=\"option\" data-value=\"\" data-more=\"${text}\">${t`More…`}</li>`;\n }\n menu.innerHTML = html;\n resolve({\n matched: results.length > 0,\n fragment: menu,\n });\n } catch (error) {\n console.error('Search error:', error);\n resolve({\n matched: false,\n });\n }\n }),\n );\n return;\n }\n\n // No other keys supported\n provide(\n Promise.resolve({\n matched: false,\n }),\n );\n };\n\n const handleValue = (e) => {\n const { key, item } = e.detail;\n const { value, more } = item.dataset;\n\n if (key === ':') {\n e.detail.value = value ? `:${value}:` : ''; // zero-width space\n if (more) {\n // Prevent adding space after the above value\n e.detail.continue = true;\n\n setTimeout(() => {\n // Trigger custom emoji picker modal for more options\n onTrigger?.({\n name: 'custom-emojis',\n defaultSearchTerm: more,\n });\n }, 300);\n }\n } else if (key === '@') {\n e.detail.value = value ? `@${value}` : ''; // zero-width space\n if (more) {\n e.detail.continue = true;\n setTimeout(() => {\n onTrigger?.({\n name: 'mention',\n defaultSearchTerm: more,\n });\n }, 300);\n }\n } else {\n e.detail.value = `${key}${value}`;\n }\n };\n\n const handleCommited = (e) => {\n const { input } = e.detail;\n\n if (input) {\n const event = new Event('input', { bubbles: true });\n input.dispatchEvent(event);\n }\n };\n\n const handleActivate = () => {\n hasTextExpanderRef.current = true;\n };\n\n const handleDeactivate = () => {\n hasTextExpanderRef.current = false;\n };\n\n textExpander.addEventListener('text-expander-change', handleChange);\n textExpander.addEventListener('text-expander-value', handleValue);\n textExpander.addEventListener('text-expander-committed', handleCommited);\n textExpander.addEventListener('text-expander-activate', handleActivate);\n textExpander.addEventListener('text-expander-deactivate', handleDeactivate);\n\n return () => {\n textExpander.removeEventListener('text-expander-change', handleChange);\n textExpander.removeEventListener('text-expander-value', handleValue);\n textExpander.removeEventListener(\n 'text-expander-committed',\n handleCommited,\n );\n textExpander.removeEventListener(\n 'text-expander-activate',\n handleActivate,\n );\n textExpander.removeEventListener(\n 'text-expander-deactivate',\n handleDeactivate,\n );\n };\n }, [searcherRef.current, onTrigger, t, masto]);\n\n return <text-expander ref={textExpanderRef} {...props} />;\n}\n\nexport default forwardRef(TextExpander);\n","import { Trans, useLingui } from '@lingui/react/macro';\n\nimport i18nDuration from '../utils/i18n-duration';\n\nimport Icon from './icon';\nimport TextExpander from './text-expander';\n\nexport const expiryOptions = {\n 300: i18nDuration(5, 'minute'),\n 1_800: i18nDuration(30, 'minute'),\n 3_600: i18nDuration(1, 'hour'),\n 21_600: i18nDuration(6, 'hour'),\n 86_400: i18nDuration(1, 'day'),\n 259_200: i18nDuration(3, 'day'),\n 604_800: i18nDuration(1, 'week'),\n};\n\nfunction ComposePoll({\n lang,\n poll,\n disabled,\n onInput = () => {},\n maxOptions,\n maxExpiration,\n minExpiration,\n maxCharactersPerOption,\n}) {\n const { t } = useLingui();\n const { options, expiresIn, multiple } = poll;\n\n return (\n <div class={`poll ${multiple ? 'multiple' : ''}`}>\n <div class=\"poll-choices\">\n {options.map((option, i) => (\n <div class=\"poll-choice\" key={i}>\n <TextExpander keys=\":\" class=\"poll-field-container\">\n <input\n required\n type=\"text\"\n value={option}\n disabled={disabled}\n maxlength={maxCharactersPerOption}\n placeholder={t`Choice ${i + 1}`}\n lang={lang}\n spellCheck=\"true\"\n autocomplete=\"off\"\n dir=\"auto\"\n data-allow-custom-emoji=\"true\"\n onInput={(e) => {\n const { value } = e.target;\n options[i] = value;\n onInput(poll);\n }}\n />\n </TextExpander>\n <button\n type=\"button\"\n class=\"plain4 poll-button\"\n disabled={disabled || options.length <= 1}\n onClick={() => {\n options.splice(i, 1);\n onInput(poll);\n }}\n title={t`Remove`}\n >\n −\n </button>\n </div>\n ))}\n </div>\n <div class=\"poll-toolbar\">\n <button\n type=\"button\"\n class=\"plain2 poll-button\"\n disabled={disabled || options.length >= maxOptions}\n onClick={() => {\n options.push('');\n onInput(poll);\n }}\n title={t`Add`}\n >\n +\n </button>{' '}\n <div class=\"poll-config\">\n <label class=\"multiple-choices\">\n <input\n type=\"checkbox\"\n checked={multiple}\n disabled={disabled}\n onChange={(e) => {\n const { checked } = e.target;\n poll.multiple = checked;\n onInput(poll);\n }}\n />{' '}\n <Trans>Multiple choice</Trans>\n </label>\n <label class=\"expires-in\">\n <Trans>Duration</Trans>{' '}\n <select\n value={expiresIn}\n disabled={disabled}\n onChange={(e) => {\n const { value } = e.target;\n poll.expiresIn = value;\n onInput(poll);\n }}\n >\n {Object.entries(expiryOptions)\n .filter(([value]) => {\n return value >= minExpiration && value <= maxExpiration;\n })\n .map(([value, label]) => (\n <option value={value} key={value}>\n {label()}\n </option>\n ))}\n </select>\n </label>\n <div class=\"spacer\" />\n <button\n type=\"button\"\n class=\"light danger small\"\n disabled={disabled}\n onClick={() => {\n onInput(null);\n }}\n >\n <Trans>Remove poll</Trans>\n </button>\n </div>\n </div>\n </div>\n );\n}\n\nexport default ComposePoll;\n","import { forwardRef } from 'preact/compat';\nimport { useEffect, useRef, useState } from 'preact/hooks';\nimport { useDebouncedCallback, useThrottledCallback } from 'use-debounce';\n\nimport { langDetector } from '../utils/browser-translator';\nimport escapeHTML from '../utils/escape-html';\nimport states from '../utils/states';\nimport urlRegexObj from '../utils/url-regex';\nimport useThrottledResizeObserver from '../utils/useThrottledResizeObserver';\n\nimport TextExpander from './text-expander';\n\n// https://github.com/mastodon/mastodon/blob/c03bd2a238741a012aa4b98dc4902d6cf948ab63/app/models/account.rb#L69\nconst USERNAME_RE = /[a-z0-9_]+([a-z0-9_.-]+[a-z0-9_]+)?/i;\nconst MENTION_RE = new RegExp(\n `(^|[^=\\\\/\\\\w])([@@]${USERNAME_RE.source}(?:@[\\\\p{L}\\\\w.-]+[\\\\w]+)?)`,\n 'uig',\n);\n\n// AI-generated, all other regexes are too complicated\nconst HASHTAG_RE = new RegExp(\n `(^|[^=\\\\/\\\\w])([##][\\\\p{L}\\\\p{N}_]+([\\\\p{L}\\\\p{N}_.]+[\\\\p{L}\\\\p{N}_]+)?)(?![\\\\/\\\\w])`,\n 'iug',\n);\n\n// https://github.com/mastodon/mastodon/blob/23e32a4b3031d1da8b911e0145d61b4dd47c4f96/app/models/custom_emoji.rb#L31\nconst SHORTCODE_RE_FRAGMENT = '[a-zA-Z0-9_]{2,}';\nconst SCAN_RE = new RegExp(\n `(^|[^=\\\\/\\\\w])(:${SHORTCODE_RE_FRAGMENT}:)(?=[^A-Za-z0-9_:]|$)`,\n 'g',\n);\n\nconst segmenter = new Intl.Segmenter();\n\nfunction highlightText(text, { maxCharacters = Infinity }) {\n // Exceeded characters limit\n const { composerCharacterCount } = states;\n if (composerCharacterCount > maxCharacters) {\n // Highlight exceeded characters\n let withinLimitHTML = '',\n exceedLimitHTML = '';\n const htmlSegments = segmenter.segment(text);\n for (const { segment, index } of htmlSegments) {\n if (index < maxCharacters) {\n withinLimitHTML += segment;\n } else {\n exceedLimitHTML += segment;\n }\n }\n if (exceedLimitHTML) {\n exceedLimitHTML =\n '<mark class=\"compose-highlight-exceeded\">' +\n escapeHTML(exceedLimitHTML) +\n '</mark>';\n }\n return escapeHTML(withinLimitHTML) + exceedLimitHTML;\n }\n\n return escapeHTML(text)\n .replace(urlRegexObj, '$2<mark class=\"compose-highlight-url\">$3</mark>') // URLs\n .replace(MENTION_RE, '$1<mark class=\"compose-highlight-mention\">$2</mark>') // Mentions\n .replace(HASHTAG_RE, '$1<mark class=\"compose-highlight-hashtag\">$2</mark>') // Hashtags\n .replace(\n SCAN_RE,\n '$1<mark class=\"compose-highlight-emoji-shortcode\">$2</mark>',\n ); // Emoji shortcodes\n}\n\nfunction autoResizeTextarea(textarea) {\n if (!textarea) return;\n const { value, offsetHeight, scrollHeight, clientHeight } = textarea;\n if (offsetHeight < window.innerHeight) {\n // NOTE: This check is needed because the offsetHeight return 50000 (really large number) on first render\n // No idea why it does that, will re-investigate in far future\n const offset = offsetHeight - clientHeight;\n const height = value ? scrollHeight + offset + 'px' : null;\n textarea.style.height = height;\n }\n}\n\nconst detectLangs = async (text) => {\n if (langDetector) {\n const langs = await langDetector.detect(text);\n if (langs?.length) {\n return langs.slice(0, 2).map((lang) => lang.detectedLanguage);\n }\n }\n const { detectAll } = await import('tinyld/light');\n const langs = detectAll(text);\n if (langs?.length) {\n // return max 2\n return langs.slice(0, 2).map((lang) => lang.lang);\n }\n return null;\n};\n\nconst Textarea = forwardRef((props, ref) => {\n const [text, setText] = useState(ref.current?.value || '');\n const { maxCharacters, onTrigger = null, ...textareaProps } = props;\n\n const textExpanderRef = useRef();\n\n useThrottledResizeObserver({\n ref,\n onResize: () => {\n // Get height of textarea, set height to textExpander\n if (textExpanderRef.current && ref.current) {\n const { height } = ref.current.getBoundingClientRect();\n if (height) {\n textExpanderRef.current.setStyle({ minHeight: height + 'px' });\n }\n }\n },\n });\n\n const slowHighlightPerf = useRef(0); // increment if slow\n const composeHighlightRef = useRef();\n const throttleHighlightText = useThrottledCallback((text) => {\n if (!composeHighlightRef.current) return;\n if (slowHighlightPerf.current > 3) {\n // After 3 times of lag, disable highlighting\n composeHighlightRef.current.innerHTML = '';\n composeHighlightRef.current = null; // Destroy the whole thing\n throttleHighlightText?.cancel?.();\n return;\n }\n let start;\n let end;\n if (slowHighlightPerf.current <= 3) start = Date.now();\n composeHighlightRef.current.innerHTML =\n highlightText(text, {\n maxCharacters,\n }) + '\\n';\n if (slowHighlightPerf.current <= 3) end = Date.now();\n console.debug('HIGHLIGHT PERF', { start, end, diff: end - start });\n if (start && end && end - start > 50) {\n // if slow, increment\n slowHighlightPerf.current++;\n }\n // Newline to prevent multiple line breaks at the end from being collapsed, no idea why\n }, 500);\n\n const debouncedAutoDetectLanguage = useDebouncedCallback(() => {\n // Make use of the highlightRef to get the DOM\n // Clone the dom\n const dom = composeHighlightRef.current?.cloneNode(true);\n if (!dom) return;\n // Remove mark\n dom.querySelectorAll('mark').forEach((mark) => {\n mark.remove();\n });\n const text = dom.innerText?.trim();\n if (!text) return;\n (async () => {\n const langs = await detectLangs(text);\n if (langs?.length) {\n onTrigger?.({\n name: 'auto-detect-language',\n languages: langs,\n });\n }\n })();\n }, 2000);\n\n return (\n <TextExpander\n ref={textExpanderRef}\n keys=\"@ @ : # #\"\n class=\"compose-field-container\"\n onTrigger={onTrigger}\n >\n <textarea\n class=\"compose-field\"\n autoCapitalize=\"sentences\"\n autoComplete=\"on\"\n autoCorrect=\"on\"\n spellCheck=\"true\"\n dir=\"auto\"\n rows=\"6\"\n cols=\"50\"\n {...textareaProps}\n ref={ref}\n name=\"status\"\n value={text}\n onKeyDown={(e) => {\n // Get line before cursor position after pressing 'Enter'\n const { key, target } = e;\n const hasTextExpander = textExpanderRef.current?.activated();\n if (\n key === 'Enter' &&\n !(e.ctrlKey || e.metaKey || hasTextExpander) &&\n !e.isComposing\n ) {\n try {\n const { value, selectionStart } = target;\n const textBeforeCursor = value.slice(0, selectionStart);\n const lastLine = textBeforeCursor.split('\\n').slice(-1)[0];\n if (lastLine) {\n // If line starts with \"- \" or \"12. \"\n if (/^\\s*(-|\\d+\\.)\\s/.test(lastLine)) {\n // insert \"- \" at cursor position\n const [_, preSpaces, bullet, postSpaces, anything] =\n lastLine.match(/^(\\s*)(-|\\d+\\.)(\\s+)(.+)?/) || [];\n if (anything) {\n e.preventDefault();\n const [number] = bullet.match(/\\d+/) || [];\n const newBullet = number ? `${+number + 1}.` : '-';\n const text = `\\n${preSpaces}${newBullet}${postSpaces}`;\n target.setRangeText(text, selectionStart, selectionStart);\n const pos = selectionStart + text.length;\n target.setSelectionRange(pos, pos);\n } else {\n // trim the line before the cursor, then insert new line\n const pos = selectionStart - lastLine.length;\n target.setRangeText('', pos, selectionStart);\n }\n autoResizeTextarea(target);\n target.dispatchEvent(new Event('input'));\n }\n }\n } catch (e) {\n // silent fail\n console.error(e);\n }\n }\n if (composeHighlightRef.current) {\n composeHighlightRef.current.scrollTop = target.scrollTop;\n }\n }}\n onInput={(e) => {\n const { target } = e;\n const text = target.value;\n setText(text);\n autoResizeTextarea(target);\n props.onInput?.(e);\n throttleHighlightText(text);\n debouncedAutoDetectLanguage();\n }}\n onScroll={(e) => {\n if (composeHighlightRef.current) {\n const { scrollTop } = e.target;\n composeHighlightRef.current.scrollTop = scrollTop;\n }\n }}\n onPaste={(e) => {\n try {\n const pastedText = e.clipboardData.getData('text').trim();\n if (pastedText) {\n onTrigger?.({\n name: 'pasted-link',\n url: pastedText,\n });\n }\n } catch (error) {\n console.error(error);\n }\n }}\n />\n <div\n ref={composeHighlightRef}\n class=\"compose-highlight\"\n aria-hidden=\"true\"\n />\n </TextExpander>\n );\n});\n\nexport default Textarea;\n","import './custom-emojis-modal.css';\n\nimport { Trans, useLingui } from '@lingui/react/macro';\nimport { memo } from 'preact/compat';\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'preact/hooks';\n\nimport getCustomEmojis from '../utils/custom-emojis';\nimport store from '../utils/store';\n\nimport Icon from './icon';\nimport Loader from './loader';\n\nconst CUSTOM_EMOJIS_COUNT = 100;\nconst EMOJI_SIZE_MIN = 1;\nconst EMOJI_SIZE_MAX = 2;\nconst EMOJI_SIZE_STEP = 0.5;\n\nconst CustomEmojiButton = memo(({ emoji, onClick, showCode }) => {\n const addEdges = (e) => {\n // Add edge-left or edge-right class based on self position relative to scrollable parent\n // If near left edge, add edge-left, if near right edge, add edge-right\n const buffer = 88;\n const parent = e.currentTarget.closest('main');\n if (parent) {\n const rect = parent.getBoundingClientRect();\n const selfRect = e.currentTarget.getBoundingClientRect();\n const targetClassList = e.currentTarget.classList;\n if (selfRect.left < rect.left + buffer) {\n targetClassList.add('edge-left');\n targetClassList.remove('edge-right');\n } else if (selfRect.right > rect.right - buffer) {\n targetClassList.add('edge-right');\n targetClassList.remove('edge-left');\n } else {\n targetClassList.remove('edge-left', 'edge-right');\n }\n }\n };\n\n return (\n <button\n type=\"button\"\n className=\"plain4\"\n onClick={onClick}\n data-title={showCode ? undefined : emoji.shortcode}\n onPointerEnter={addEdges}\n onFocus={addEdges}\n >\n <picture>\n {!!emoji.staticUrl && (\n <source\n srcSet={emoji.staticUrl}\n media=\"(prefers-reduced-motion: reduce)\"\n />\n )}\n <img\n className=\"shortcode-emoji\"\n src={emoji.url || emoji.staticUrl}\n alt={emoji.shortcode}\n width=\"24\"\n height=\"24\"\n loading=\"lazy\"\n decoding=\"async\"\n />\n </picture>\n {showCode && (\n <>\n {' '}\n <code>{emoji.shortcode}</code>\n </>\n )}\n </button>\n );\n});\n\nconst CustomEmojisList = memo(({ emojis, onSelect }) => {\n const { i18n } = useLingui();\n const [max, setMax] = useState(CUSTOM_EMOJIS_COUNT);\n const showMore = emojis.length > max;\n return (\n <section>\n {emojis.slice(0, max).map((emoji) => (\n <CustomEmojiButton\n key={emoji.shortcode}\n emoji={emoji}\n onClick={() => {\n onSelect(`:${emoji.shortcode}:`);\n }}\n />\n ))}\n {showMore && (\n <button\n type=\"button\"\n class=\"plain small\"\n onClick={() => setMax(max + CUSTOM_EMOJIS_COUNT)}\n >\n <Trans>{i18n.number(emojis.length - max)} more…</Trans>\n </button>\n )}\n </section>\n );\n});\n\nconst CUSTOM_EMOJI_SIZE = 'composer-customEmojiSize';\n\nfunction CustomEmojisModal({\n masto,\n instance,\n onClose = () => {},\n onSelect = () => {},\n defaultSearchTerm,\n}) {\n const { t } = useLingui();\n const [uiState, setUIState] = useState('default');\n const customEmojisList = useRef([]);\n const [customEmojis, setCustomEmojis] = useState([]);\n const recentlyUsedCustomEmojis = useMemo(\n () => store.account.get('recentlyUsedCustomEmojis') || [],\n );\n const searcherRef = useRef();\n useEffect(() => {\n setUIState('loading');\n (async () => {\n try {\n const [emojis, searcher] = await getCustomEmojis(instance, masto);\n console.log('emojis', emojis);\n searcherRef.current = searcher;\n setCustomEmojis(emojis);\n setUIState('default');\n } catch (e) {\n setUIState('error');\n console.error(e);\n }\n })();\n }, []);\n\n const customEmojisCatList = useMemo(() => {\n // Group emojis by category\n const emojisCat = {\n '--recent--': recentlyUsedCustomEmojis.filter((emoji) =>\n customEmojis.find((e) => e.shortcode === emoji.shortcode),\n ),\n };\n const othersCat = [];\n customEmojis.forEach((emoji) => {\n customEmojisList.current?.push?.(emoji);\n if (!emoji.category) {\n othersCat.push(emoji);\n return;\n }\n if (!emojisCat[emoji.category]) {\n emojisCat[emoji.category] = [];\n }\n emojisCat[emoji.category].push(emoji);\n });\n if (othersCat.length) {\n emojisCat['--others--'] = othersCat;\n }\n return emojisCat;\n }, [customEmojis]);\n\n const scrollableRef = useRef();\n const [matches, setMatches] = useState(null);\n const [emojiSize, setEmojiSize] = useState(\n store.local.get(CUSTOM_EMOJI_SIZE) || EMOJI_SIZE_MIN,\n );\n const onEmojiSizeDecrease = useCallback(() => {\n const newSize = Math.max(EMOJI_SIZE_MIN, emojiSize - EMOJI_SIZE_STEP);\n setEmojiSize(newSize);\n if (newSize === EMOJI_SIZE_MIN) {\n store.local.del(CUSTOM_EMOJI_SIZE);\n } else {\n store.local.set(CUSTOM_EMOJI_SIZE, newSize);\n }\n }, [emojiSize]);\n\n const onEmojiSizeIncrease = useCallback(() => {\n const newSize = Math.min(EMOJI_SIZE_MAX, emojiSize + EMOJI_SIZE_STEP);\n setEmojiSize(newSize);\n if (newSize === EMOJI_SIZE_MIN) {\n store.local.del(CUSTOM_EMOJI_SIZE);\n } else {\n store.local.set(CUSTOM_EMOJI_SIZE, newSize);\n }\n }, [emojiSize]);\n\n const onFind = useCallback(\n (e) => {\n const { value } = e.target;\n if (value) {\n const results = searcherRef.current?.search(value, {\n limit: CUSTOM_EMOJIS_COUNT,\n });\n setMatches(results.map((r) => r.item));\n scrollableRef.current?.scrollTo?.(0, 0);\n } else {\n setMatches(null);\n }\n },\n [customEmojis],\n );\n useEffect(() => {\n if (defaultSearchTerm && customEmojis?.length) {\n onFind({ target: { value: defaultSearchTerm } });\n }\n }, [defaultSearchTerm, onFind, customEmojis]);\n\n const onSelectEmoji = useCallback(\n (emoji) => {\n onSelect?.(emoji);\n onClose?.();\n\n queueMicrotask(() => {\n let recentlyUsedCustomEmojis =\n store.account.get('recentlyUsedCustomEmojis') || [];\n const recentlyUsedEmojiIndex = recentlyUsedCustomEmojis.findIndex(\n (e) => e.shortcode === emoji.shortcode,\n );\n if (recentlyUsedEmojiIndex !== -1) {\n // Move emoji to index 0\n recentlyUsedCustomEmojis.splice(recentlyUsedEmojiIndex, 1);\n recentlyUsedCustomEmojis.unshift(emoji);\n } else {\n recentlyUsedCustomEmojis.unshift(emoji);\n // Remove unavailable ones\n recentlyUsedCustomEmojis = recentlyUsedCustomEmojis.filter((e) =>\n customEmojisList.current?.find?.(\n (emoji) => emoji.shortcode === e.shortcode,\n ),\n );\n // Limit to 10\n recentlyUsedCustomEmojis = recentlyUsedCustomEmojis.slice(0, 10);\n }\n\n // Store back\n store.account.set('recentlyUsedCustomEmojis', recentlyUsedCustomEmojis);\n });\n },\n [onSelect],\n );\n\n const inputRef = useRef();\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.focus();\n // Put cursor at the end\n if (inputRef.current.value) {\n inputRef.current.selectionStart = inputRef.current.value.length;\n inputRef.current.selectionEnd = inputRef.current.value.length;\n }\n }\n }, []);\n\n return (\n <div\n id=\"custom-emojis-sheet\"\n class=\"sheet\"\n style={{\n '--custom-emoji-size': emojiSize,\n }}\n >\n {!!onClose && (\n <button type=\"button\" class=\"sheet-close\" onClick={onClose}>\n <Icon icon=\"x\" alt={t`Close`} />\n </button>\n )}\n <header>\n <div>\n <b>\n <Trans>Custom emojis</Trans>\n </b>{' '}\n {uiState === 'loading' ? (\n <Loader />\n ) : (\n <small class=\"insignificant\"> • {instance}</small>\n )}\n </div>\n <form\n onSubmit={(e) => {\n e.preventDefault();\n const emoji = matches[0];\n if (emoji) {\n onSelectEmoji(`:${emoji.shortcode}:`);\n }\n }}\n >\n <input\n ref={inputRef}\n type=\"search\"\n placeholder={t`Search emoji`}\n onInput={onFind}\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellCheck=\"false\"\n dir=\"auto\"\n enterKeyHint=\"search\"\n defaultValue={defaultSearchTerm || ''}\n />\n </form>\n </header>\n <main ref={scrollableRef}>\n {matches !== null ? (\n <ul class=\"custom-emojis-matches custom-emojis-list\">\n {matches.map((emoji) => (\n <li key={emoji.shortcode} class=\"custom-emojis-match\">\n <CustomEmojiButton\n emoji={emoji}\n onClick={() => {\n onSelectEmoji(`:${emoji.shortcode}:`);\n }}\n showCode\n />\n </li>\n ))}\n </ul>\n ) : (\n <div class=\"custom-emojis-list\">\n {uiState === 'error' && (\n <div class=\"ui-state\">\n <p>\n <Trans>Error loading custom emojis</Trans>\n </p>\n </div>\n )}\n {uiState === 'default' &&\n Object.entries(customEmojisCatList).map(\n ([category, emojis]) =>\n !!emojis?.length && (\n <div class=\"section-container\">\n <div class=\"section-header\">\n {{\n '--recent--': t`Recently used`,\n '--others--': t`Others`,\n }[category] || category}\n </div>\n <CustomEmojisList\n emojis={emojis}\n onSelect={onSelectEmoji}\n />\n </div>\n ),\n )}\n </div>\n )}\n <div class=\"size-range\">\n <button\n type=\"button\"\n class=\"plain4\"\n onClick={onEmojiSizeDecrease}\n disabled={emojiSize <= EMOJI_SIZE_MIN}\n >\n <Icon icon=\"zoom-out\" size=\"l\" alt={t`Zoom out`} />\n </button>\n <button\n type=\"button\"\n class=\"plain4\"\n onClick={onEmojiSizeIncrease}\n disabled={emojiSize >= EMOJI_SIZE_MAX}\n >\n <Icon icon=\"zoom-in\" size=\"l\" alt={t`Zoom in`} />\n </button>\n </div>\n </main>\n </div>\n );\n}\n\nexport default CustomEmojisModal;\n","import { plural } from '@lingui/core/macro';\n\nfunction FilePickerInput({\n hidden,\n supportedMimeTypes,\n maxMediaAttachments,\n mediaAttachments,\n disabled = false,\n setMediaAttachments,\n}) {\n return (\n <input\n type=\"file\"\n hidden={hidden}\n accept={supportedMimeTypes?.join(',')}\n multiple={\n maxMediaAttachments === undefined ||\n maxMediaAttachments - mediaAttachments >= 2\n }\n disabled={disabled}\n onChange={(e) => {\n const files = e.target.files;\n if (!files) return;\n\n const mediaFiles = Array.from(files).map((file) => ({\n file,\n type: file.type,\n size: file.size,\n url: URL.createObjectURL(file),\n id: null, // indicate uploaded state\n description: null,\n }));\n console.log('MEDIA ATTACHMENTS', files, mediaFiles);\n\n // Validate max media attachments\n if (mediaAttachments.length + mediaFiles.length > maxMediaAttachments) {\n alert(\n plural(maxMediaAttachments, {\n one: 'You can only attach up to 1 file.',\n other: 'You can only attach up to # files.',\n }),\n );\n } else {\n setMediaAttachments((attachments) => {\n return attachments.concat(mediaFiles);\n });\n }\n // Reset\n e.target.value = '';\n }}\n />\n );\n}\n\nexport default FilePickerInput;\n","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20version='1.0'%20viewBox='0%200%20641%20223'%3e%3cpath%20fill='%23aaa'%20d='M86%20214c-9-1-17-4-24-8l-6-3-5-5-5-4-4-6-4-6-3-8-2-8v-27l2-9%203-9%204-6%204-6%205-5%205-5%207-3%206-4%207-2%207-2%2012-1h12l7%201%208%202%207%204%207%203%205%205%205%204-10%2010-10%209-4-3-10-5-5-1H88l-5%202-6%203-3%204-4%204-2%205-2%206v6l-1%207%201%207%202%207%203%205%202%204%204%203%204%203%205%202%206%202h9l10-1%205-2%206-3v-16H91v-27h59v54l-1%203-2%203-5%204-4%204-5%203-5%202-8%202-8%202-10%201H92l-6-1zm266-62V91h34v46h44V91h34v121h-34v-46h-44v46h-34v-61zm-182-1V90h34v121h-34v-60zm59-1V90h35l36%201%205%202c3%200%208%202%2010%204l5%202%204%205%205%204%203%207%203%207%201%2013v13l-4%206-3%207-4%204-5%205-5%202-5%203-6%202-5%201-18%201h-18v32h-34v-61zm67-2%203-2%202-4%202-5v-5l-2-4-2-4-3-2-3-3h-30v31h30l3-2zm226%2039v-24l-8-12-18-28a1751%201751%200%200%200-20-31v-2h39l7%2012%2012%2021%206%209%2013-21%2013-21h38v2l-41%2061-7%2010v48h-34v-24zM109%2066l-4-1-5-5-5-4-1-5-3-9v-5l1-5c2-7%203-10%208-15l4-4%207-2%207-2h7l6%201%205%202%205%202%203%204%204%203%202%206%202%205v13l-2%205-2%206-4%204-3%203-5%202-4%202-9%201h-9l-5-2zm22-11%204-2%203-4%202-5V34l-2-4-2-4-3-2-4-3-5-1h-6l-4%202-5%202-2%204-3%205-1%203v4l1%205%202%205%202%202%205%203%204%202h10l4-2zM37%2039V11h33l3%201%203%202%204%203%203%203%201%205%201%204v5l-1%204-3%204-3%205-4%201-3%202-11%201H49v16H37V39zm31%200%203-2%201-2%201-2v-4l-1-3-3-2-2-2H49v18h15l4-1zm107%2025a512%20512%200%200%200-19-53h14l4%2014%206%2019%201%204%201-1%207-19%205-17h9l6%2019%207%2018v-1l2-6%205-17%204-13h14v1l-4%2012-16%2041v2h-5l-5-1-6-15-6-15-1%201-3%207-6%2015-2%208h-11l-1-3zm74-25V11h42v11h-29v2l-1%205v4h29v11h-28v11h2l15%201h13v11h-43V39zm55%200V11h33l5%203%205%202%202%204%202%205v10l-2%203-1%204-5%203-5%203%205%205%208%2010%203%204h-14l-7-9-8-10h-9v19h-12V39zm33-3%202-3v-6l-3-3-2-3h-18v16h1v1h17l2-2zm26%203V11h42v11h-29l-1%206v5h29v11h-28v5l-1%205%201%201v1h30v11h-43V39zm54%200V11h17l18%201%204%202%205%203%202%204%203%204%202%206%201%206v5c-1%206-3%2012-6%2015l-3%204-5%203-5%202-17%201h-16V39zm33%2014%205-5%202-3v-6l-1-6-1-3-1-3-4-3-3-2h-5l-6-1-3%201h-3v34h9l8-1%203-2zm50-14V11h34l5%202%204%202%202%203%202%203v9l-2%202-3%204-1%201%203%203%203%204%201%203%201%204-1%204-1%204-3%203-3%203-5%201-5%201h-31V39zm34%2015%202-1v-6l-2-2-2-2h-20v13h20l2-2zm-3-22%204-2v-6l-2-1-2-2h-19v12h16l4-1zm42%2024V45l-6-9-11-17-5-8h15l4%208%207%2011%202%203%207-11%207-11h14l-11%2016-11%2017v23h-12V56z'/%3e%3c/svg%3e\"","import { Trans, useLingui } from '@lingui/react/macro';\nimport { useEffect, useRef, useState } from 'preact/hooks';\nimport { useDebouncedCallback } from 'use-debounce';\n\nimport poweredByGiphyURL from '../assets/powered-by-giphy.svg';\n\nimport Icon from './icon';\nimport Loader from './loader';\n\nconst { PHANPY_GIPHY_API_KEY: GIPHY_API_KEY } = import.meta.env;\n\nconst GIFS_PER_PAGE = 20;\n\nfunction GIFPickerModal({ onClose = () => {}, onSelect = () => {} }) {\n const { i18n, t } = useLingui();\n const [uiState, setUIState] = useState('default');\n const [results, setResults] = useState([]);\n const formRef = useRef(null);\n const qRef = useRef(null);\n const currentOffset = useRef(0);\n const scrollableRef = useRef(null);\n\n function fetchGIFs({ offset }) {\n console.log('fetchGIFs', { offset });\n if (!qRef.current?.value) return;\n setUIState('loading');\n scrollableRef.current?.scrollTo?.({\n top: 0,\n left: 0,\n behavior: 'smooth',\n });\n (async () => {\n try {\n const query = {\n api_key: GIPHY_API_KEY,\n q: qRef.current.value,\n rating: 'g',\n limit: GIFS_PER_PAGE,\n bundle: 'messaging_non_clips',\n offset,\n lang: i18n.locale || 'en',\n };\n const response = await fetch(\n 'https://api.giphy.com/v1/gifs/search?' + new URLSearchParams(query),\n {\n referrerPolicy: 'no-referrer',\n },\n ).then((r) => r.json());\n currentOffset.current = response.pagination?.offset || 0;\n setResults(response);\n setUIState('results');\n } catch (e) {\n setUIState('error');\n console.error(e);\n }\n })();\n }\n\n useEffect(() => {\n qRef.current?.focus();\n }, []);\n\n const debouncedOnInput = useDebouncedCallback(() => {\n fetchGIFs({ offset: 0 });\n }, 1000);\n\n return (\n <div id=\"gif-picker-sheet\" class=\"sheet\">\n {!!onClose && (\n <button type=\"button\" class=\"sheet-close\" onClick={onClose}>\n <Icon icon=\"x\" alt={t`Close`} />\n </button>\n )}\n <header>\n <form\n ref={formRef}\n onSubmit={(e) => {\n e.preventDefault();\n fetchGIFs({ offset: 0 });\n }}\n >\n <input\n ref={qRef}\n type=\"search\"\n name=\"q\"\n placeholder={t`Search GIFs`}\n required\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellCheck=\"false\"\n dir=\"auto\"\n enterKeyHint=\"search\"\n onInput={debouncedOnInput}\n />\n <input\n type=\"image\"\n class=\"powered-button\"\n src={poweredByGiphyURL}\n width=\"86\"\n height=\"30\"\n alt={t`Powered by GIPHY`}\n />\n </form>\n </header>\n <main ref={scrollableRef} class={uiState === 'loading' ? 'loading' : ''}>\n {uiState === 'default' && (\n <div class=\"ui-state\">\n <p class=\"insignificant\">\n <Trans>Type to search GIFs</Trans>\n </p>\n </div>\n )}\n {uiState === 'loading' && !results?.data?.length && (\n <div class=\"ui-state\">\n <Loader abrupt />\n </div>\n )}\n {results?.data?.length > 0 ? (\n <>\n <ul>\n {results.data.map((gif) => {\n const { id, images, title, alt_text } = gif;\n const {\n fixed_height_small,\n fixed_height_downsampled,\n fixed_height,\n original,\n } = images;\n const theImage = fixed_height_small?.url\n ? fixed_height_small\n : fixed_height_downsampled?.url\n ? fixed_height_downsampled\n : fixed_height;\n let { url, webp, width, height } = theImage;\n if (+height > 100) {\n width = (width / height) * 100;\n height = 100;\n }\n const urlObj = URL.parse(url);\n const strippedURL = urlObj.origin + urlObj.pathname;\n let strippedWebP;\n if (webp) {\n const webpObj = URL.parse(webp);\n strippedWebP = webpObj.origin + webpObj.pathname;\n }\n return (\n <li key={id}>\n <button\n type=\"button\"\n onClick={() => {\n const { mp4, url } = original;\n const theURL = mp4 || url;\n const urlObj = URL.parse(theURL);\n const strippedURL = urlObj.origin + urlObj.pathname;\n onClose();\n onSelect({\n url: strippedURL,\n type: mp4 ? 'video/mp4' : 'image/gif',\n alt_text: alt_text || title,\n });\n }}\n >\n <figure\n style={{\n '--figure-width': width + 'px',\n // width: width + 'px'\n }}\n >\n <picture>\n {strippedWebP && (\n <source srcset={strippedWebP} type=\"image/webp\" />\n )}\n <img\n src={strippedURL}\n width={width}\n height={height}\n loading=\"lazy\"\n decoding=\"async\"\n alt={alt_text}\n referrerpolicy=\"no-referrer\"\n onLoad={(e) => {\n e.target.style.backgroundColor = 'transparent';\n }}\n />\n </picture>\n <figcaption>{alt_text || title}</figcaption>\n </figure>\n </button>\n </li>\n );\n })}\n </ul>\n <p class=\"pagination\">\n {results.pagination?.offset > 0 && (\n <button\n type=\"button\"\n class=\"light small\"\n disabled={uiState === 'loading'}\n onClick={() => {\n fetchGIFs({\n offset: results.pagination?.offset - GIFS_PER_PAGE,\n });\n }}\n >\n <Icon icon=\"chevron-left\" />\n <span>\n <Trans>Previous</Trans>\n </span>\n </button>\n )}\n <span />\n {results.pagination?.offset + results.pagination?.count <\n results.pagination?.total_count && (\n <button\n type=\"button\"\n class=\"light small\"\n disabled={uiState === 'loading'}\n onClick={() => {\n fetchGIFs({\n offset: results.pagination?.offset + GIFS_PER_PAGE,\n });\n }}\n >\n <span>\n <Trans>Next</Trans>\n </span>{' '}\n <Icon icon=\"chevron-right\" />\n </button>\n )}\n </p>\n </>\n ) : (\n uiState === 'results' && (\n <div class=\"ui-state\">\n <p>No results</p>\n </div>\n )\n )}\n {uiState === 'error' && (\n <div class=\"ui-state\">\n <p>\n <Trans>Error loading GIFs</Trans>\n </p>\n </div>\n )}\n </main>\n </div>\n );\n}\n\nexport default GIFPickerModal;\n","export default {}","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.ExifReader=e():t.ExifReader=e()}(\"undefined\"!=typeof self?self:this,function(){return function(){\"use strict\";var t={d:function(e,n){for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:1,get:n[r]})},o:function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r:function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:1})}},e={};function n(t,e,n){for(var r=[],o=0;o<n&&e+o<t.byteLength;o++)r.push(t.getUint8(e+o));return i(r)}function r(t,e){for(var n=[],r=0;e+r<t.byteLength;){var o=t.getUint8(e+r);if(0===o)break;n.push(o),r++}return i(n)}function i(t){return t.map(function(t){return String.fromCharCode(t)}).join(\"\")}function o(){for(var t=1;t<arguments.length;t++)for(var e in arguments[t])arguments[0][e]=arguments[t][e];return arguments[0]}t.r(e),t.d(e,{default:function(){return Ln},errors:function(){return Mn},load:function(){return Nn},loadView:function(){return Bn}});var u=void 0;function a(t){return a=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},a(t)}function f(t){var e=function(t){if(\"object\"!=a(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,\"string\");if(\"object\"!=a(n))return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return t+\"\"}(t);return\"symbol\"==a(e)?e:e+\"\"}var c=function(){return t=function t(e){if(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),function(t){return\"object\"!==a(t)||void 0===t.length||void 0===t.readUInt8||void 0===t.readUInt16LE||void 0===t.readUInt16BE||void 0===t.readUInt32LE||void 0===t.readUInt32BE||void 0===t.readInt32LE||void 0===t.readInt32BE}(e))throw Error(\"DataView: Passed buffer type is unsupported.\");this.buffer=e,this.byteLength=this.buffer.length},(e=[{key:\"getUint8\",value:function(t){return this.buffer.readUInt8(t)}},{key:\"getUint16\",value:function(t,e){return e?this.buffer.readUInt16LE(t):this.buffer.readUInt16BE(t)}},{key:\"getUint32\",value:function(t,e){return e?this.buffer.readUInt32LE(t):this.buffer.readUInt32BE(t)}},{key:\"getInt32\",value:function(t,e){return e?this.buffer.readInt32LE(t):this.buffer.readInt32BE(t)}}])&&function(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||0,r.configurable=1,\"value\"in r&&(r.writable=1),Object.defineProperty(t,f(r.key),r)}}(t.prototype,e),Object.defineProperty(t,\"prototype\",{writable:0}),t;var t,e}();function s(t){return t[0][0]/t[0][1]+t[1][0]/t[1][1]/60+t[2][0]/t[2][1]/3600}var l=2,d=65496,p=2,v=4,g=2,h=10,m=18,y=33,b=79,x=65472,A=65474,S=65476,w=65499,U=65501,I=65498,O=65504,C=65505,T=65517,P=65519,E=65534,k=65535,L=\"Exif\",M=\"http://ns.adobe.com/xap/1.0/\\0\",N=\"http://ns.adobe.com/xmp/extension/\\0\",R=\"Photoshop 3.0\";function B(t,e){var r=L.length;return t.getUint16(e)===C&&n(t,e+v,r)===L&&0===t.getUint8(e+v+r)}function _(t,e){return t.getUint16(e)===C&&function(t,e){var r=M.length;return n(t,e+v,r)===M}(t,e)}function j(t,e){return t.getUint16(e)===C&&function(t,e){var r=N.length;return n(t,e+v,r)===N}(t,e)}function D(t,e){return{dataOffset:t+y,length:e-(y-g)}}function z(t,e){return{dataOffset:t+b,length:e-(b-g)}}function F(t,e){var r=R.length;return t.getUint16(e)===T&&n(t,e+v,r)===R&&0===t.getUint8(e+v+r)}function G(t,e){var n=t.getUint16(e);return n>=O&&n<=P||n===E||n===x||n===A||n===S||n===w||n===U||n===I}function H(t,e){return t.getUint16(e)===k}var V=\"PNG\\r\\n\u001a\\n\",W=4,X=4,Y=0,$=W,q=W+X,Z=\"XML:com.adobe.xmp\\0\",K=\"tEXt\",J=\"iTXt\",Q=\"zTXt\",tt=\"pHYs\",et=\"tIME\",nt=\"eXIf\";function rt(t,e){return n(t,e+$,X)===J&&n(t,e+q,Z.length)===Z}function it(t,e,r){var i=n(t,e+$,X);return i===K||i===J||i===Q&&r}function ot(t,e){return n(t,e+$,X)===nt}function ut(t,e){var r=[tt,et],i=n(t,e+$,X);return r.includes(i)}function at(t,e){e+=q+Z.length+1+1;for(var n=0;n<2&&e<t.byteLength;)0===t.getUint8(e)&&n++,e++;if(!(n<2))return e}function ft(t,e,n,r,i,o,u,a){if(void 0===a)return[];for(var f=[],c=n.items,s=0;s<a;s++){var l={extents:[]};l.itemId=ct(t,c,e),c+=r.item.itemId,l.constructionMethod=1===e||2===e?15&t.getUint16(c):void 0,c+=r.item.constructionMethod,l.dataReferenceIndex=t.getUint16(c),c+=r.item.dataReferenceIndex,l.baseOffset=lt(t,c,r.item.baseOffset),c+=r.item.baseOffset,l.extentCount=t.getUint16(c),c+=r.item.extentCount;for(var d=0;d<l.extentCount;d++){var p={};p.extentIndex=st(t,e,c,u),c+=r.item.extent.extentIndex,p.extentOffset=lt(t,c,i),c+=r.item.extent.extentOffset,p.extentLength=lt(t,c,o),c+=r.item.extent.extentLength,l.extents.push(p)}f.push(l)}return f}function ct(t,e,n){return n<2?t.getUint16(e):2===n?t.getUint32(e):void 0}function st(t,e,n,r){if((1===e||2===e)&&r>0)return lt(t,n,r)}function lt(t,e,n){return 4===n?t.getUint32(e):8===n?(console.warn(\"This file uses an 8-bit offset which is currently not supported by ExifReader. Contact the maintainer to get it fixed.\"),function(t,e){return t.getUint32(e+4)}(t,e)):0}var dt=1165519206,pt=1835625829;function vt(t,e){var i=function(t,e){var n=t.getUint32(e);return function(t){return 0===t}(n)?{length:t.byteLength-e,contentOffset:e+4+4}:function(t){return 1===t}(n)&&function(t,e){return 0===t.getUint32(e+8)}(t,e)?{length:t.getUint32(e+12),contentOffset:e+4+4+8}:{length:n,contentOffset:e+4+4}}(t,e),o=i.length,u=i.contentOffset;if(!(o<8)){var a=t.getUint32(e+4);if(1718909296===a)return function(t,e,r){return{type:\"ftyp\",majorBrand:n(t,e,4),length:r}}(t,u,o);if(1768977008===a)return function(t,e,n,r){return{type:\"iprp\",subBoxes:mt(t,n,r-(n-e)),length:r}}(t,e,u,o);if(1768973167===a)return function(t,e,n,r){return{type:\"ipco\",properties:mt(t,n,r-(n-e)),length:r}}(t,e,u,o);if(1668246642===a)return function(t,e,n){return{type:\"colr\",icc:ht(t,e),length:n}}(t,u,o);var f=t.getUint8(u);return 1835365473===a?function(t,e,n,r){return{type:\"meta\",subBoxes:mt(t,n+3,r-(n+3-e)),length:r}}(t,e,u+1,o):1768714083===a?function(t,e,n,r){var i=function(t,e){var n={item:{dataReferenceIndex:2,extentCount:2,extent:{}}};t<2?(n.itemCount=2,n.item.itemId=2):2===t&&(n.itemCount=4,n.item.itemId=4),n.item.constructionMethod=1===t||2===t?2:0;var r={offsetSize:e,lengthSize:e,baseOffsetSize:e+1,indexSize:e+1};return r.itemCount=e+2,r.items=r.itemCount+n.itemCount,r.item={itemId:0},r.item.constructionMethod=r.item.itemId+n.item.itemId,r.item.dataReferenceIndex=r.item.constructionMethod+n.item.constructionMethod,{offsets:r,sizes:n}}(e,n+3),o=i.offsets,u=i.sizes,a=t.getUint8(o.offsetSize)>>4;u.item.extent.extentOffset=a;var f=15&t.getUint8(o.lengthSize);u.item.extent.extentLength=f;var c=t.getUint8(o.baseOffsetSize)>>4;u.item.baseOffset=c;var s=function(t,e,n){if(1===n||2===n)return 15&t.getUint8(e)}(t,o.indexSize,e);u.item.extent.extentIndex=void 0!==s?s:0;var l=function(t,e,n){return n<2?t.getUint16(e):2===n?t.getUint32(e):void 0}(t,o.itemCount,e);return{type:\"iloc\",items:ft(t,e,o,u,a,f,s,l),length:r}}(t,f,u+1,o):1768517222===a?function(t,e,n,r,i){var o=function(t,e){var n={entryCount:e+3},r={};return r.entryCount=0===t?2:4,n.itemInfos=n.entryCount+r.entryCount,{offsets:n}}(n,r),u=o.offsets;return{type:\"iinf\",itemInfos:mt(t,u.itemInfos,i-(u.itemInfos-e)),length:i}}(t,e,f,u+1,o):1768842853===a?function(t,e,n,i,o){i+=3;var u={type:\"infe\",length:o};return 0!==n&&1!==n||(u.itemId=t.getUint16(i),i+=2,u.itemProtectionIndex=t.getUint16(i),i+=2,u.itemName=r(t,i),i+=u.itemName.length+1),n>=2&&(2===n?(u.itemId=t.getUint16(i),i+=2):3===n&&(u.itemId=t.getUint32(i),i+=4),u.itemProtectionIndex=t.getUint16(i),i+=2,u.itemType=t.getUint32(i),i+=4,u.itemName=r(t,i),i+=u.itemName.length+1,u.itemType===pt?(u.contentType=r(t,i),e+o>(i+=u.contentType.length+1)&&(u.contentEncoding=r(t,i),i+=u.contentEncoding.length+1)):1970432288===u.itemType&&(u.itemUri=r(t,i),i+=u.itemUri.length+1)),u}(t,e,f,u+1,o):{type:void 0,length:o}}}function gt(t,e){return t.subBoxes.find(function(t){return\"iloc\"===t.type}).items.find(function(t){return t.itemId===e})}function ht(t,e){var r=n(t,e,4);if(\"prof\"===r||\"rICC\"===r)return{offset:e+4,length:t.getUint32(e+4),chunkNumber:1,chunksTotal:1}}function mt(t,e,n){for(var r=[dt,pt],i=[],o=e;o<e+n;){var u=vt(t,o);if(void 0===u)break;void 0===u.type||void 0!==u.itemType&&-1===r.indexOf(u.itemType)||i.push(u),o+=u.length}return i}var yt=0,bt=\"<?xpacket begin\",xt={parseAppMarkers:function(t,e){if(function(t){return!!t&&t.byteLength>=l&&t.getUint16(0)===d}(t))return At(function(t){for(var e,n,r,i,o=p;o+v+5<=t.byteLength;){if(B(t,o))e=t.getUint16(o+g),n=o+h;else if(_(t,o))i||(i=[]),e=t.getUint16(o+g),i.push(D(o,e));else if(j(t,o))i||(i=[]),e=t.getUint16(o+g),i.push(z(o,e));else if(F(t,o))e=t.getUint16(o+g),r=o+m;else{if(!G(t,o)){if(H(t,o)){o++;continue}break}e=t.getUint16(o+g)}o+=g+e}return{hasAppMarkers:o>p,fileDataOffset:void 0,jfifDataOffset:void 0,tiffHeaderOffset:n,iptcDataOffset:r,xmpChunks:i,iccChunks:void 0,mpfDataOffset:void 0}}(t),\"jpeg\",\"JPEG\");if(function(t){return!!t&&n(t,0,V.length)===V}(t))return At(function(t,e){for(var r={hasAppMarkers:0},i=V.length;i+W+X<=t.byteLength;){if(rt(t,i)){var o=at(t,i);void 0!==o&&(r.hasAppMarkers=1,r.xmpChunks=[{dataOffset:o,length:t.getUint32(i+Y)-(o-(i+q))}])}else if(it(t,i,e)){r.hasAppMarkers=1;var u=n(t,i+$,X);r.pngTextChunks||(r.pngTextChunks=[]),r.pngTextChunks.push({length:t.getUint32(i+Y),type:u,offset:i+q})}else ot(t,i)?(r.hasAppMarkers=1,r.tiffHeaderOffset=i+q):ut(t,i)&&(r.hasAppMarkers=1,r.pngChunkOffsets||(r.pngChunkOffsets=[]),r.pngChunkOffsets.push(i+Y));i+=t.getUint32(i+Y)+W+X+4}return r}(t,e),\"png\",\"PNG\");if(function(t){if(!t)return 0;try{var e=vt(t,0);return e&&-1!==[\"heic\",\"heix\",\"hevc\",\"hevx\",\"heim\",\"heis\",\"hevm\",\"hevs\",\"mif1\"].indexOf(e.majorBrand)}catch(t){return 0}}(t))return At(function(t){return function(t){var e={},n=function(t){for(var e=0;e+4+4<=t.byteLength;){var n=vt(t,e);if(void 0===n)break;if(\"meta\"===n.type)return n;e+=n.length}}(t);return n?(e.tiffHeaderOffset=function(t,e){try{var n=function(t){return t.subBoxes.find(function(t){return\"iinf\"===t.type}).itemInfos.find(function(t){return t.itemType===dt})}(e).itemId,r=gt(e,n);return function(t,e){return e+4+t.getUint32(e)}(t,r.baseOffset+r.extents[0].extentOffset)}catch(t){return}}(t,n),e.xmpChunks=function(t){try{var e=function(t){return t.subBoxes.find(function(t){return\"iinf\"===t.type}).itemInfos.find(function(t){return t.itemType===pt&&\"application/rdf+xml\"===t.contentType})}(t).itemId,n=gt(t,e),r=gt(t,e).extents[0];return[{dataOffset:n.baseOffset+r.extentOffset,length:r.extentLength}]}catch(t){return}}(n),e.hasAppMarkers=void 0!==e.tiffHeaderOffset||void 0!==e.xmpChunks||void 0!==e.iccChunks,e):{hasAppMarkers:0}}(t)}(t),\"heic\",\"HEIC\");if(function(t){return!!t&&\"RIFF\"===n(t,0,4)&&\"WEBP\"===n(t,8,4)}(t))return At(function(t){for(var e,r,i,o=12,u=0;o+8<t.byteLength;){var a=n(t,o,4),f=t.getUint32(o+4,1);\"EXIF\"===a?(u=1,e=\"Exif\\0\\0\"===n(t,o+8,6)?o+8+6:o+8):\"XMP \"===a?(u=1,r=[{dataOffset:o+8,length:f}]):\"VP8X\"===a&&(u=1,i=o+8),o+=8+(f%2==0?f:f+1)}return{hasAppMarkers:u,tiffHeaderOffset:e,xmpChunks:r,iccChunks:void 0,vp8xChunkOffset:i}}(t),\"webp\",\"WebP\");if(function(t){return!!t&&n(t,yt,bt.length)===bt}(t))return At(function(t){var e=[];return e.push({dataOffset:yt,length:t.byteLength}),{xmpChunks:e}}(t),\"xml\",\"XML\");throw Error(\"Invalid image format\")}};function At(t,e,n){return o({},t,{fileType:{value:e,description:n}})}var St=18761,wt=St,Ut={270:\"ImageDescription\",700:\"ApplicationNotes\",33723:\"IPTC-NAA\",34665:\"Exif IFD Pointer\"};function It(t){return It=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},It(t)}function Ot(t,e,n){return(e=function(t){var e=function(t){if(\"object\"!=It(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,\"string\");if(\"object\"!=It(n))return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return t+\"\"}(t);return\"symbol\"==It(e)?e:e+\"\"}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:1,configurable:1,writable:1}):t[e]=n,t}var Ct=o({},Ut,{}),Tt=\"exif\",Pt=\"interoperability\",Et=\"pentax\",kt=Ot(Ot(Ot(Ot(Ot(Ot(Ot(Ot({},\"0th\",Ct),\"1st\",Ut),Tt,Ct),\"gps\",{}),Pt,{}),\"mpf\",{}),\"canon\",{}),Et,{}),Lt={1:1,2:1,3:2,4:4,5:8,7:1,9:4,10:8,13:4},Mt={BYTE:1,ASCII:2,SHORT:3,LONG:4,RATIONAL:5,UNDEFINED:7,SLONG:9,SRATIONAL:10,IFD:13},Nt={getAsciiValue:function(t){return t.map(function(t){return String.fromCharCode(t)})},getByteAt:Rt,getAsciiAt:function(t,e){return t.getUint8(e)},getShortAt:function(t,e,n){return t.getUint16(e,n===wt)},getLongAt:Bt,getRationalAt:function(t,e,n){return[Bt(t,e,n),Bt(t,e+4,n)]},getUndefinedAt:function(t,e){return Rt(t,e)},getSlongAt:_t,getSrationalAt:function(t,e,n){return[_t(t,e,n),_t(t,e+4,n)]},getIfdPointerAt:function(t,e,n){return Bt(t,e,n)},typeSizes:Lt,tagTypes:Mt,getTypeSize:function(t){if(void 0===Mt[t])throw Error(\"No such type found.\");return Lt[Mt[t]]}};function Rt(t,e){return t.getUint8(e)}function Bt(t,e,n){return t.getUint32(e,n===wt)}function _t(t,e,n){return t.getInt32(e,n===wt)}var jt={1:Nt.getByteAt,2:Nt.getAsciiAt,3:Nt.getShortAt,4:Nt.getLongAt,5:Nt.getRationalAt,7:Nt.getUndefinedAt,9:Nt.getSlongAt,10:Nt.getSrationalAt,13:Nt.getIfdPointerAt};function Dt(t,e,n,r,i,o){var u=Nt.getTypeSize(\"SHORT\"),a={},f=function(t,e,n){return e+Nt.getTypeSize(\"SHORT\")<=t.byteLength?Nt.getShortAt(t,e,n):0}(t,r,i);r+=u;for(var c=0;c<f&&!(r+12>t.byteLength);c++){var s=zt(t,e,n,r,i,o);void 0!==s&&(a[s.name]={id:s.id,value:s.value,description:s.description},(\"MakerNote\"===s.name||e===Et&&\"LevelInfo\"===s.name)&&(a[s.name].__offset=s.__offset)),r+=12}return a}function zt(t,e,n,r,i,o){var u,a,f=Nt.getTypeSize(\"SHORT\"),c=f+Nt.getTypeSize(\"SHORT\"),s=c+Nt.getTypeSize(\"LONG\"),l=Nt.getShortAt(t,r,i),d=Nt.getShortAt(t,r+f,i),p=Nt.getLongAt(t,r+c,i);if(void 0!==Nt.typeSizes[d]&&(o||void 0!==kt[e][l])){u=function(t,e){return Nt.typeSizes[t]*e<=Nt.getTypeSize(\"LONG\")}(d,p)?Ft(t,a=r+s,d,p,i):function(t,e,n,r,i){return e+n+Nt.typeSizes[r]*i<=t.byteLength}(t,n,a=Nt.getLongAt(t,r+s,i),d,p)?Ft(t,n+a,d,p,i,33723===l):\"<faulty value>\",d===Nt.tagTypes.ASCII&&(u=function(t){try{return t.map(function(t){return decodeURIComponent(escape(t))})}catch(e){return t}}(u=function(t){for(var e=[],n=0,r=0;r<t.length;r++)\"\\0\"!==t[r]?(void 0===e[n]&&(e[n]=\"\"),e[n]+=t[r]):n++;return e}(u)));var v=\"undefined-\".concat(l),g=u;if(void 0!==kt[e][l])if(void 0!==kt[e][l].name&&void 0!==kt[e][l].description){v=kt[e][l].name;try{g=kt[e][l].description(u)}catch(t){g=Gt(u)}}else d===Nt.tagTypes.RATIONAL||d===Nt.tagTypes.SRATIONAL?(v=kt[e][l],g=\"\"+u[0]/u[1]):(v=kt[e][l],g=Gt(u));return{id:l,name:v,value:u,description:g,__offset:a}}}function Ft(t,e,n,r,i){var o=[];arguments.length>5&&void 0!==arguments[5]&&arguments[5]&&(r*=Nt.typeSizes[n],n=Nt.tagTypes.BYTE);for(var u=0;u<r;u++)o.push(jt[n](t,e,i)),e+=Nt.typeSizes[n];return n===Nt.tagTypes.ASCII?o=Nt.getAsciiValue(o):1===o.length&&(o=o[0]),o}function Gt(t){return t instanceof Array?t.join(\", \"):t}var Ht=\"Exif IFD Pointer\",Vt=\"GPS Info IFD Pointer\",Wt=\"Interoperability IFD Pointer\",Xt={read:function(t,e,n){var r=function(t,e){if(t.getUint16(e)===St)return St;if(19789===t.getUint16(e))return 19789;throw Error(\"Illegal byte order value. Faulty image.\")}(t,e),i=function(t,e,n,r){return Dt(t,\"0th\",e,function(t,e,n){return e+Nt.getLongAt(t,e+4,n)}(t,e,n),n,r)}(t,e,r,n);return{tags:i=qt(i=$t(i=Yt(i,t,e,r,n),t,e,r,n),t,e,r,n),byteOrder:r}}};function Yt(t,e,n,r,i){return void 0!==t[Ht]?o(t,Dt(e,Tt,n,n+t[Ht].value,r,i)):t}function $t(t,e,n,r,i){return void 0!==t[Vt]?o(t,Dt(e,\"gps\",n,n+t[Vt].value,r,i)):t}function qt(t,e,n,r,i){return void 0!==t[Wt]?o(t,Dt(e,Pt,n,n+t[Wt].value,r,i)):t}var Zt={iptc:{632:\"Caption/Abstract\"}},Kt=function(t,e){var n=function(){if(\"undefined\"!=typeof TextDecoder)return TextDecoder}();if(\"undefined\"!=typeof n&&void 0!==t)try{return new n(t).decode(e instanceof DataView?e.buffer:Uint8Array.from(e))}catch(t){}return function(t){try{return decodeURIComponent(escape(t))}catch(e){return t}}(e.map(function(t){return String.fromCharCode(t)}).join(\"\"))},Jt={read:function(t,e,n){try{if(Array.isArray(t))return ne(new DataView(Uint8Array.from(t).buffer),{size:t.length},0,n);var r=function(t,e){for(;e+12<=t.byteLength;){var n=Qt(t,e);if(te(n))return{naaBlock:n,dataOffset:e+n.headerSize};e+=n.headerSize+n.size+ee(n)}throw Error(\"No IPTC NAA resource block.\")}(t,e);return ne(t,r.naaBlock,r.dataOffset,n)}catch(t){return{}}}};function Qt(t,e){if(943868237!==t.getUint32(e,0))throw Error(\"Not an IPTC resource block.\");var n=t.getUint8(e+4+2),r=(n%2==0?n+1:n)+1;return{headerSize:6+r+4,type:t.getUint16(e+4),size:t.getUint32(e+4+2+r)}}function te(t){return 1028===t.type}function ee(t){return t.size%2!=0?1:0}function ne(t,e,n,r){for(var i={},o=void 0,u=n+e.size;n<u&&n<t.byteLength;){var a=re(t,n,i,o,r),f=a.tag,c=a.tagSize;if(null===f)break;f&&(\"encoding\"in f&&(o=f.encoding),void 0===i[f.name]||void 0===f.repeatable?i[f.name]={id:f.id,value:f.value,description:f.description}:(i[f.name]instanceof Array||(i[f.name]=[{id:i[f.name].id,value:i[f.name].value,description:i[f.name].description}]),i[f.name].push({id:f.id,value:f.value,description:f.description}))),n+=5+c}return i}function re(t,e,n,r,i){if(function(t,e){return 28!==t.getUint8(e)}(t,e))return{tag:null,tagSize:0};var o=t.getUint16(e+1),u=t.getUint16(e+3);if(!i&&!Zt.iptc[o])return{tag:void 0,tagSize:u};var a=function(t,e,n){for(var r=[],i=0;i<n;i++)r.push(t.getUint8(e+i));return r}(t,e+5,u),f={id:o,name:ie(Zt.iptc[o],o,a),value:a,description:oe(Zt.iptc[o],a,n,r)};return function(t){return Zt.iptc[t]&&Zt.iptc[t].repeatable}(o)&&(f.repeatable=1),function(t){return Zt.iptc[t]&&void 0!==Zt.iptc[t].encoding_name}(o)&&(f.encoding=Zt.iptc[o].encoding_name(a)),{tag:f,tagSize:u}}function ie(t,e,n){return t?function(t){return\"string\"==typeof t}(t)?t:function(t){return\"function\"==typeof t.name}(t)?t.name(n):t.name:\"undefined-\".concat(e)}function oe(t,e,n,r){if(function(t){return t&&void 0!==t.description}(t))try{return t.description(e,n)}catch(t){}return function(t,e){return t&&e instanceof Array}(t,e)?Kt(r,e):e}var ue=function(t){return Math.pow(Math.sqrt(2),t[0]/t[1]).toFixed(2)},ae=function(t){return\"f/\".concat(Number(t[0]/t[1]).toFixed(1))},fe=function(t){return t[0]/t[1]+\" mm\"},ce=function(t){var e=Math.pow(2,t[0]/t[1]);return e<=1?\"\".concat(Math.round(1/e)):\"1/\".concat(Math.round(e))},se=function(t){return\"\"+Math.round(t[0]/t[1])},le=function(t){return\"\"+Math.round(t[0]/t[1])};function de(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}var pe={\"tiff:Orientation\":function(t){return\"1\"===t?\"Horizontal (normal)\":\"2\"===t?\"Mirror horizontal\":\"3\"===t?\"Rotate 180\":\"4\"===t?\"Mirror vertical\":\"5\"===t?\"Mirror horizontal and rotate 270 CW\":\"6\"===t?\"Rotate 90 CW\":\"7\"===t?\"Mirror horizontal and rotate 90 CW\":\"8\"===t?\"Rotate 270 CW\":t},\"tiff:ResolutionUnit\":function(t){return function(t){return 2===t?\"inches\":3===t?\"centimeters\":\"Unknown\"}(parseInt(t,10))},\"tiff:XResolution\":function(t){return ve(se,t)},\"tiff:YResolution\":function(t){return ve(le,t)},\"exif:ApertureValue\":function(t){return ve(ue,t)},\"exif:GPSLatitude\":he,\"exif:GPSLongitude\":he,\"exif:FNumber\":function(t){return ve(ae,t)},\"exif:FocalLength\":function(t){return ve(fe,t)},\"exif:FocalPlaneResolutionUnit\":function(t){return function(t){return 2===t?\"inches\":3===t?\"centimeters\":4===t?\"millimeters\":\"Unknown\"}(parseInt(t,10))},\"exif:ColorSpace\":function(t){return function(t){return 1===t?\"sRGB\":65535===t?\"Uncalibrated\":\"Unknown\"}(function(t){return\"0x\"===t.substring(0,2)?parseInt(t.substring(2),16):parseInt(t,10)}(t))},\"exif:ComponentsConfiguration\":function(t,e){return/^\\d, \\d, \\d, \\d$/.test(e)?function(t){return t.map(function(t){return 49===t?\"Y\":50===t?\"Cb\":51===t?\"Cr\":52===t?\"R\":53===t?\"G\":54===t?\"B\":void 0}).join(\"\")}(e.split(\", \").map(function(t){return t.charCodeAt(0)})):e},\"exif:Contrast\":function(t){return function(t){return 0===t?\"Normal\":1===t?\"Soft\":2===t?\"Hard\":\"Unknown\"}(parseInt(t,10))},\"exif:CustomRendered\":function(t){return function(t){return 0===t?\"Normal process\":1===t?\"Custom process\":\"Unknown\"}(parseInt(t,10))},\"exif:ExposureMode\":function(t){return function(t){return 0===t?\"Auto exposure\":1===t?\"Manual exposure\":2===t?\"Auto bracket\":\"Unknown\"}(parseInt(t,10))},\"exif:ExposureProgram\":function(t){return function(t){return 0===t?\"Undefined\":1===t?\"Manual\":2===t?\"Normal program\":3===t?\"Aperture priority\":4===t?\"Shutter priority\":5===t?\"Creative program\":6===t?\"Action program\":7===t?\"Portrait mode\":8===t?\"Landscape mode\":9===t?\"Bulb\":\"Unknown\"}(parseInt(t,10))},\"exif:ExposureTime\":function(t){return ge(t)?function(t){if(t[0]/t[1]>.25){var e=t[0]/t[1];return Number.isInteger(e)?\"\"+e:e.toFixed(1)}return 0!==t[0]?\"1/\".concat(Math.round(t[1]/t[0])):\"0/\".concat(t[1])}(t.split(\"/\").map(function(t){return parseInt(t,10)})):t},\"exif:MeteringMode\":function(t){return function(t){return 1===t?\"Average\":2===t?\"CenterWeightedAverage\":3===t?\"Spot\":4===t?\"MultiSpot\":5===t?\"Pattern\":6===t?\"Partial\":255===t?\"Other\":\"Unknown\"}(parseInt(t,10))},\"exif:Saturation\":function(t){return function(t){return 0===t?\"Normal\":1===t?\"Low saturation\":2===t?\"High saturation\":\"Unknown\"}(parseInt(t,10))},\"exif:SceneCaptureType\":function(t){return function(t){return 0===t?\"Standard\":1===t?\"Landscape\":2===t?\"Portrait\":3===t?\"Night scene\":\"Unknown\"}(parseInt(t,10))},\"exif:Sharpness\":function(t){return function(t){return 0===t?\"Normal\":1===t?\"Soft\":2===t?\"Hard\":\"Unknown\"}(parseInt(t,10))},\"exif:ShutterSpeedValue\":function(t){return ve(ce,t)},\"exif:WhiteBalance\":function(t){return function(t){return 0===t?\"Auto white balance\":1===t?\"Manual white balance\":\"Unknown\"}(parseInt(t,10))}};function ve(t,e){return ge(e)?t(e.split(\"/\")):e}function ge(t){return/^-?\\d+\\/-?\\d+$/.test(t)}function he(t){var e,n=function(t){if(Array.isArray(t))return t}(e=t.split(\",\"))||function(t){var e=null==t?null:\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(null!=e){var n,r,i,o,u=[],a=1,f=0;try{for(i=(e=e.call(t)).next,!2;!(a=(n=i.call(e)).done)&&(u.push(n.value),2!==u.length);a=1);}catch(t){f=1,r=t}finally{try{if(!a&&null!=e.return&&(o=e.return(),Object(o)!==o))return}finally{if(f)throw r}}return u}}(e)||function(t){if(t){if(\"string\"==typeof t)return de(t,2);var e={}.toString.call(t).slice(8,-1);return\"Object\"===e&&t.constructor&&(e=t.constructor.name),\"Map\"===e||\"Set\"===e?Array.from(t):\"Arguments\"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?de(t,2):void 0}}(e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}(),r=n[0],i=n[1];if(void 0!==r&&void 0!==i){var o=parseFloat(r),u=parseFloat(i),a=i.charAt(i.length-1);if(!Number.isNaN(o)&&!Number.isNaN(u))return\"\"+(o+u/60)+a}return t}var me={xmp:\"http://ns.adobe.com/xap/1.0/\",tiff:\"http://ns.adobe.com/tiff/1.0/\",exif:\"http://ns.adobe.com/exif/1.0/\",dc:\"http://purl.org/dc/elements/1.1/\",xmpMM:\"http://ns.adobe.com/xap/1.0/mm/\",stEvt:\"http://ns.adobe.com/xap/1.0/sType/ResourceEvent#\",stRef:\"http://ns.adobe.com/xap/1.0/sType/ResourceRef#\",photoshop:\"http://ns.adobe.com/photoshop/1.0/\"};function ye(t){return ye=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},ye(t)}function be(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function xe(t){var e=\"function\"==typeof Map?new Map:void 0;return xe=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf(\"[native code]\")}catch(e){return\"function\"==typeof t}}(t))return t;if(\"function\"!=typeof t)throw new TypeError(\"Super expression must either be null or a function\");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(Ae())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var i=new(t.bind.apply(t,r));return n&&Se(i,n.prototype),i}(t,arguments,we(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:0,writable:1,configurable:1}}),Se(n,t)},xe(t)}function Ae(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(Ae=function(){return!!t})()}function Se(t,e){return Se=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},Se(t,e)}function we(t){return we=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},we(t)}var Ue={read:function(t,e,n){var r={};if(\"string\"==typeof t)return Ce(r,t,n),r;var i,o=(i=function(t,e){if(0===e.length)return[];var n=[Oe(t,e.slice(0,1))];return e.length>1&&n.push(Oe(t,e.slice(1))),n}(t,e),function(t){if(Array.isArray(t))return t}(i)||function(t){var e=null==t?null:\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(null!=e){var n,r,i,o,u=[],a=1,f=0;try{for(i=(e=e.call(t)).next,!2;!(a=(n=i.call(e)).done)&&(u.push(n.value),2!==u.length);a=1);}catch(t){f=1,r=t}finally{try{if(!a&&null!=e.return&&(o=e.return(),Object(o)!==o))return}finally{if(f)throw r}}return u}}(i)||function(t){if(t){if(\"string\"==typeof t)return be(t,2);var e={}.toString.call(t).slice(8,-1);return\"Object\"===e&&t.constructor&&(e=t.constructor.name),\"Map\"===e||\"Set\"===e?Array.from(t):\"Arguments\"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?be(t,2):void 0}}(i)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()),u=o[0],a=o[1],f=Ce(r,u,n);if(a){var c=Ce(r,a,n);f||c||(delete r._raw,Ce(r,Oe(t,e),n))}return r}},Ie=function(t){function e(t){var n;return function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e),(n=function(t,e,n){return e=we(e),function(t,e){if(e&&(\"object\"==ye(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\");return function(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}(t)}(t,Ae()?Reflect.construct(e,n||[],we(t).constructor):e.apply(t,n))}(this,e,[t])).name=\"ParseError\",n}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:1,configurable:1}}),Object.defineProperty(t,\"prototype\",{writable:0}),e&&Se(t,e)}(e,t),Object.defineProperty(n=e,\"prototype\",{writable:0}),n;var n}(xe(Error));function Oe(t,e){for(var n=e.reduce(function(t,e){return t+e.length},0),r=new Uint8Array(n),i=0,o=0;o<e.length;o++){var u=e[o],a=t.buffer.slice(u.dataOffset,u.dataOffset+u.length);r.set(new Uint8Array(a),i),i+=u.length}return new DataView(r.buffer)}function Ce(t,e,r){try{var i=function(t,e){var r=function(t){if(t)return t;if(\"undefined\"!=typeof DOMParser)return new DOMParser;try{var e=require(\"@xmldom/xmldom\");return new(0,e.DOMParser)({onError:e.onErrorStopParsing})}catch(t){return}}(e);if(!r)throw console.warn(\"Warning: DOMParser is not available. It is needed to be able to parse XMP tags.\"),Error();var i=\"string\"==typeof t?t:n(t,0,t.byteLength);return{doc:Te(r,i.replace(/^.+(<\\?xpacket begin)/,\"$1\").replace(/(<\\?xpacket end=\".*\"\\?>).+$/,\"$1\")),raw:i}}(e,r),u=i.doc,a=i.raw;return t._raw=(t._raw||\"\")+a,o(t,Le(Ee(Pe(u),1))),1}catch(t){return 0}}function Te(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;try{var r=t.parseFromString(e,\"application/xml\"),i=r.getElementsByTagName(\"parsererror\");if(i.length>0)throw new Ie(i[0].textContent);return r}catch(r){if(\"ParseError\"===r.name&&function(t){for(var e=[\"prefix is non-null and namespace is null\",\"prefix not bound to a namespace\",\"prefix inte bundet till en namnrymd\",/Namespace prefix .+ is not defined/],n=0;n<e.length;n++)if(RegExp(e[n]).test(t.message))return 1;return 0}(r)&&!n)return Te(t,function(t){var e=t.match(/<([A-Za-z_][A-Za-z0-9._-]*)([^>]*)>/);if(!e)return t;var n=e[1],r=function(t){for(var e,n=[],r=/xmlns:([\\w-]+)=[\"'][^\"']+[\"']/g;null!==(e=r.exec(t));)-1===n.indexOf(e[1])&&n.push(e[1]);return n}(t),i=function(t){for(var e,n=[],r=/\\b([A-Za-z_][A-Za-z0-9._-]*):[A-Za-z_][A-Za-z0-9._-]*\\b/g;null!==(e=r.exec(t));){var i=e[1];\"xmlns\"!==i&&\"xml\"!==i&&-1===n.indexOf(i)&&n.push(i)}return n}(t).filter(function(t){return-1===r.indexOf(t)});return 0===i.length?t:function(t,e,n){var r=RegExp(\"<\"+e+\"([^>]*)>\");return t.replace(r,\"<\"+e+\"$1\"+n+\">\")}(t,n,function(t){for(var e=[],n=0;n<t.length;n++){var r=t[n],i=me[r]||\"http://fallback.namespace/\"+r;e.push(\" xmlns:\"+r+'=\"'+i+'\"')}return e.join(\"\")}(i))}(e),1);throw r}}function Pe(t){for(var e=0;e<t.childNodes.length;e++){if(\"x:xmpmeta\"===t.childNodes[e].tagName)return Pe(t.childNodes[e]);if(\"rdf:RDF\"===t.childNodes[e].tagName)return t.childNodes[e]}throw Error()}function Ee(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=function(t){for(var e=[],n=0;n<t.childNodes.length;n++)e.push(t.childNodes[n]);return e}(t);return 1===(e=r).length&&\"#text\"===e[0].nodeName?n?{}:function(t){return t.nodeValue}(r[0]):function(t){var e={};return t.forEach(function(t){if(function(t){return t.nodeName&&\"#text\"!==t.nodeName}(t)){var n=function(t){return{attributes:ke(t),value:Ee(t)}}(t);void 0!==e[t.nodeName]?(Array.isArray(e[t.nodeName])||(e[t.nodeName]=[e[t.nodeName]]),e[t.nodeName].push(n)):e[t.nodeName]=n}}),e}(r)}function ke(t){for(var e={},n=0;n<t.attributes.length;n++)e[t.attributes[n].nodeName]=decodeURIComponent(escape(t.attributes[n].value));return e}function Le(t){var e={};if(\"string\"==typeof t)return t;for(var n in t){var r=t[n];Array.isArray(r)||(r=[r]),r.forEach(function(t){o(e,Me(t.attributes)),\"object\"===ye(t.value)&&o(e,De(t.value))})}return e}function Me(t){var e={};for(var n in t)try{Ne(n)&&(e[Be(n)]={value:t[n],attributes:{},description:_e(t[n],n)})}catch(t){}return e}function Ne(t){return\"rdf:parseType\"!==t&&!Re(t)}function Re(t){return\"xmlns\"===t.split(\":\")[0]}function Be(t){return/^MicrosoftPhoto(_\\d+_)?:Rating$/i.test(t)?\"RatingPercent\":t.split(\":\")[1]}function _e(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;if(Array.isArray(t)){var n=function(t){return t.map(function(t){return void 0!==t.value?_e(t.value):_e(t)}).join(\", \")}(t);return e&&\"function\"==typeof pe[e]?pe[e](t,n):n}if(\"object\"===ye(t))return function(t){var e=[];for(var n in t)e.push(\"\".concat(je(n),\": \").concat(_e(t[n].value)));return e.join(\"; \")}(t);try{return e&&\"function\"==typeof pe[e]?pe[e](t):decodeURIComponent(escape(t))}catch(e){return t}}function je(t){return\"CiAdrCity\"===t?\"CreatorCity\":\"CiAdrCtry\"===t?\"CreatorCountry\":\"CiAdrExtadr\"===t?\"CreatorAddress\":\"CiAdrPcode\"===t?\"CreatorPostalCode\":\"CiAdrRegion\"===t?\"CreatorRegion\":\"CiEmailWork\"===t?\"CreatorWorkEmail\":\"CiTelWork\"===t?\"CreatorWorkPhone\":\"CiUrlWork\"===t?\"CreatorWorkUrl\":t}function De(t){var e={};for(var n in t)try{Re(n)||(e[Be(n)]=ze(t[n],n))}catch(t){}return e}function ze(t,e){return function(t){return Array.isArray(t)}(t)?function(t,e){return qe(t[t.length-1],e)}(t,e):function(t){return\"Resource\"===t.attributes[\"rdf:parseType\"]&&\"string\"==typeof t.value&&\"\"===t.value.trim()}(t)?{value:\"\",attributes:{},description:\"\"}:Fe(t)?Ge(t,e):Ve(t)?We(t,e):Xe(t)?Ye(t,e):function(t){return void 0!==$e(t.value)}(t)?function(t,e){var n=$e(t.value).value[\"rdf:li\"],r=He(t),i=[];return void 0===n?n=[]:Array.isArray(n)||(n=[n]),n.forEach(function(t){i.push(function(t){return Fe(t)?Ge(t):Ve(t)?We(t).value:Xe(t)?Ye(t).value:qe(t)}(t))}),{value:i,attributes:r,description:_e(i,e)}}(t,e):qe(t,e)}function Fe(t){return\"Resource\"===t.attributes[\"rdf:parseType\"]&&void 0!==t.value[\"rdf:value\"]||void 0!==t.value[\"rdf:Description\"]&&void 0!==t.value[\"rdf:Description\"].value[\"rdf:value\"]}function Ge(t,e){var n=He(t);void 0!==t.value[\"rdf:Description\"]&&(t=t.value[\"rdf:Description\"]),o(n,He(t),function(t){var e={};for(var n in t.value)\"rdf:value\"===n||Re(n)||(e[Be(n)]=t.value[n].value);return e}(t));var r=function(t){return Ze(t.value[\"rdf:value\"])||t.value[\"rdf:value\"].value}(t);return{value:r,attributes:n,description:_e(r,e)}}function He(t){var e={};for(var n in t.attributes)\"rdf:parseType\"===n||\"rdf:resource\"===n||Re(n)||(e[Be(n)]=t.attributes[n]);return e}function Ve(t){return\"Resource\"===t.attributes[\"rdf:parseType\"]||void 0!==t.value[\"rdf:Description\"]&&void 0===t.value[\"rdf:Description\"].value[\"rdf:value\"]}function We(t,e){var n={value:{},attributes:{}};return void 0!==t.value[\"rdf:Description\"]&&(o(n.value,Me(t.value[\"rdf:Description\"].attributes)),o(n.attributes,He(t)),t=t.value[\"rdf:Description\"]),o(n.value,De(t.value)),n.description=_e(n.value,e),n}function Xe(t){return 0===Object.keys(t.value).length&&void 0===t.attributes[\"xml:lang\"]&&void 0===t.attributes[\"rdf:resource\"]}function Ye(t,e){var n=Me(t.attributes);return{value:n,attributes:{},description:_e(n,e)}}function $e(t){return t[\"rdf:Bag\"]||t[\"rdf:Seq\"]||t[\"rdf:Alt\"]}function qe(t,e){var n=Ze(t)||Le(t.value);return{value:n,attributes:He(t),description:_e(n,e)}}function Ze(t){return t.attributes&&t.attributes[\"rdf:resource\"]}function Ke(t){return Ke=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},Ke(t)}var Je={read:function(t,e,n,r){for(var i={},o=[],u=0;u<e.length;u++){var a=e[u],f=fn(t,a.offset,a.length,a.type,n);if(f instanceof Promise)o.push(f.then(function(t){var e,n,i,o=t.name,u=t.value,a=t.description;try{if(vn(o,u))return{__exif:Xt.read(hn(u),an,r).tags};if(gn(o,u))return{__iptc:Jt.read(hn(u),0,r)};if(o&&!vn(o,u)&&!gn(o,u))return e={},i={value:u,description:a},(n=function(t){var e=function(t){if(\"object\"!=Ke(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,\"string\");if(\"object\"!=Ke(n))return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return t+\"\"}(t);return\"symbol\"==Ke(e)?e:e+\"\"}(n=o))in e?Object.defineProperty(e,n,{value:i,enumerable:1,configurable:1,writable:1}):e[n]=i,e}catch(t){}return{}}));else{var c=f.name,s=f.value,l=f.description;c&&(i[c]={value:s,description:l})}}return{readTags:i,readTagsPromise:o.length>0?Promise.all(o):void 0}}},Qe=\"STATE_KEYWORD\",tn=\"STATE_COMPRESSION\",en=\"STATE_LANG\",nn=\"STATE_TRANSLATED_KEYWORD\",rn=\"STATE_TEXT\",on=1,un=1,an=6;function fn(t,e,n,r,i){for(var o,a=[],f=[],c=[],s=Qe,l=u,d=0;d<n&&e+d<t.byteLength;d++)if(s!==tn){if(s===rn){o=new DataView(t.buffer.slice(e+d,e+n));break}var p=t.getUint8(e+d);0===p?s=sn(r,s):s===Qe?a.push(p):s===en?f.push(p):s===nn&&c.push(p)}else l=cn({type:r,dataView:t,offset:e+d}),r===J&&(d+=on),s=sn(r,s);if(l!==u&&!i)return{};var v=function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"string\";if(0===e&&\"function\"==typeof DecompressionStream){var i=new DecompressionStream(\"deflate\"),o=new Blob([t]).stream().pipeThrough(i);return\"dataview\"===r?new Response(o).arrayBuffer().then(function(t){return new DataView(t)}):new Response(o).arrayBuffer().then(function(t){return new TextDecoder(n).decode(t)})}return void 0!==e?Promise.reject(\"Unknown compression method \".concat(e,\".\")):t}(o,l,function(t){return t===K||t===Q?\"latin1\":\"utf-8\"}(r));return v instanceof Promise?v.then(function(t){return ln(t,r,f,a)}).catch(function(){return ln(\"<text using unknown compression>\".split(\"\"),r,f,a)}):ln(v,r,f,a)}function cn(t){var e=t.type,n=t.dataView,r=t.offset;if(e===J){if(n.getUint8(r)===un)return n.getUint8(r+1)}else if(e===Q)return n.getUint8(r);return u}function sn(t,e){return e===Qe&&[J,Q].includes(t)?tn:e===tn?t===J?en:rn:e===en?nn:rn}function ln(t,e,r,i){var o=function(t){return t instanceof DataView?n(t,0,t.byteLength):t}(t);return{name:dn(e,r,i),value:o,description:e===J?pn(t):o}}function dn(t,e,n){var r=i(n);if(t===K||0===e.length)return r;var o=i(e);return\"\".concat(r,\" (\").concat(o,\")\")}function pn(t){return Kt(\"UTF-8\",t)}function vn(t,e){return\"raw profile type exif\"===t.toLowerCase()&&\"exif\"===e.substring(1,5)}function gn(t,e){return\"raw profile type iptc\"===t.toLowerCase()&&\"iptc\"===e.substring(1,5)}function hn(t){return function(t){for(var e=new DataView(new ArrayBuffer(t.length/2)),n=0;n<t.length;n+=2)e.setUint8(n/2,parseInt(t.substring(n,n+2),16));return e}(t.match(/\\n(exif|iptc)\\n\\s*\\d+\\n([\\s\\S]*)$/)[2].replace(/\\n/g,\"\"))}var mn={read:function(t,e){for(var r={},i=0;i<e.length;i++){var o=Nt.getLongAt(t,e[i]+Y),u=n(t,e[i]+$,X);u===tt?(r[\"Pixels Per Unit X\"]=yn(t,e[i],o),r[\"Pixels Per Unit Y\"]=bn(t,e[i],o),r[\"Pixel Units\"]=xn(t,e[i],o)):u===et&&(r[\"Modify Date\"]=An(t,e[i],o))}return r}};function yn(t,e,n){if(Sn(t,e,n,0,4)){var r=Nt.getLongAt(t,e+q+0);return{value:r,description:\"\"+r}}}function bn(t,e,n){if(Sn(t,e,n,4,4)){var r=Nt.getLongAt(t,e+q+4);return{value:r,description:\"\"+r}}}function xn(t,e,n){if(Sn(t,e,n,8,1)){var r=Nt.getByteAt(t,e+q+8);return{value:r,description:1===r?\"meters\":\"Unknown\"}}}function An(t,e,n){if(Sn(t,e,n,0,7)){var r=Nt.getShortAt(t,e+q),i=Nt.getByteAt(t,e+q+2),o=Nt.getByteAt(t,e+q+3),u=Nt.getByteAt(t,e+q+4),a=Nt.getByteAt(t,e+q+5),f=Nt.getByteAt(t,e+q+6);return{value:[r,i,o,u,a,f],description:\"\".concat(wn(r,4),\"-\").concat(wn(i,2),\"-\").concat(wn(o,2),\" \").concat(wn(u,2),\":\").concat(wn(a,2),\":\").concat(wn(f,2))}}}function Sn(t,e,n,r,i){return r+i<=n&&e+q+r+i<=t.byteLength}function wn(t,e){return\"\".concat(\"0\".repeat(e-(\"\"+t).length)).concat(t)}var Un={read:function(t,e){var n={},r=Nt.getByteAt(t,e);return n.Alpha=function(t){var e=16&t;return{value:e?1:0,description:e?\"Yes\":\"No\"}}(r),n.Animation=function(t){var e=2&t;return{value:e?1:0,description:e?\"Yes\":\"No\"}}(r),n.ImageWidth=Cn(t,e+In),n.ImageHeight=Cn(t,e+On),n}},In=4,On=7;function Cn(t,e){var n=Nt.getByteAt(t,e)+256*Nt.getByteAt(t,e+1)+65536*Nt.getByteAt(t,e+2)+1;return{value:n,description:n+\"px\"}}var Tn={get:function(t,e){var n,r={},i=0,o=Pn(t,\"exif\",\"FocalLength\",e),u=Pn(t,\"exif\",\"FocalPlaneXResolution\",e),a=Pn(t,\"exif\",\"FocalPlaneYResolution\",e),f=Pn(t,\"exif\",\"FocalPlaneResolutionUnit\",e),c=Pn(t,\"file\",\"Image Width\",e),s=Pn(t,\"file\",\"Image Height\",e),l=Pn(t,\"exif\",\"FocalLengthIn35mmFilm\",e)||function(t,e,n,r,i,o){if(t&&e&&n&&r&&i&&o)try{var u;switch(n){case 2:u=25.4;break;case 3:u=10;break;case 4:u=1;break;default:return}var a=t[0]/t[1]*u,f=i/(e[0]/e[1]*u),c=Math.sqrt(Math.pow(r/a,2)+Math.pow(f,2));return o[0]/o[1]*(43.27/c)}catch(t){}}(u,a,f,c,s,o);l&&(r.FocalLength35efl={value:l,description:(n=l,0===n?\"Unknown\":n+\" mm\")},i=1);var d=function(t,e){if(t&&e)try{var n=e/(t[0]/t[1]);return{value:n,description:n.toFixed(1)}}catch(t){}}(o,l);d&&(r.ScaleFactorTo35mmEquivalent=d,i=1);var p=function(t){if(t)try{var e=2*Math.atan(36/(2*t))*(180/Math.PI);return{value:e,description:e.toFixed(1)+\" deg\"}}catch(t){}}(l);if(p&&(r.FieldOfView=p,i=1),i)return r}};function Pn(t,e,n,r){return r&&t[e]&&t[e][n]?t[e][n].value:!r&&t[n]?t[n].value:void 0}function En(t){this.name=\"MetadataMissingError\",this.message=t||\"No Exif data\",this.stack=Error().stack}En.prototype=Error();var kn={MetadataMissingError:En},Ln={load:Nn,loadView:Bn,errors:kn},Mn=kn;function Nn(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(t){return\"string\"==typeof t}(t)?(n.async=1,function(t,e){return/^\\w+:\\/\\//.test(t)?\"undefined\"!=typeof fetch?function(t){var e=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).length,n={method:\"GET\"};return Number.isInteger(e)&&e>=0&&(n.headers={range:\"bytes=0-\".concat(e-1)}),fetch(t,n).then(function(t){return t.arrayBuffer()})}(t,e):function(t){var e=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).length;return new Promise(function(n,r){var i={};Number.isInteger(e)&&e>=0&&(i.headers={range:\"bytes=0-\".concat(e-1)});var o=function(t){return/^https:\\/\\//.test(t)?require(\"https\").get:require(\"http\").get}(t);o(t,i,function(t){if(t.statusCode>=200&&t.statusCode<=299){var e=[];t.on(\"data\",function(t){return e.push(Buffer.from(t))}),t.on(\"error\",function(t){return r(t)}),t.on(\"end\",function(){return n(Buffer.concat(e))})}else r(\"Could not fetch file: \".concat(t.statusCode,\" \").concat(t.statusMessage)),t.resume()}).on(\"error\",function(t){return r(t)})})}(t,e):function(t){return/^data:[^;,]*(;base64)?,/.test(t)}(t)?Promise.resolve(function(t){var e=t.substring(t.indexOf(\",\")+1);if(-1!==t.indexOf(\";base64\")){if(\"undefined\"!=typeof atob)return Uint8Array.from(atob(e),function(t){return t.charCodeAt(0)}).buffer;if(\"undefined\"==typeof Buffer)return;return\"undefined\"!=typeof Buffer.from?Buffer.from(e,\"base64\"):new Buffer(e,\"base64\")}var n=decodeURIComponent(e);return\"undefined\"!=typeof Buffer?\"undefined\"!=typeof Buffer.from?Buffer.from(n):new Buffer(n):Uint8Array.from(n,function(t){return t.charCodeAt(0)}).buffer}(t)):function(t){var e=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).length;return new Promise(function(n,r){var i=function(){try{return require(\"fs\")}catch(t){return}}();i.open(t,function(o,u){o?r(o):i.stat(t,function(o,a){if(o)r(o);else{var f=Math.min(a.size,void 0!==e?e:a.size),c=Buffer.alloc(f),s={buffer:c,length:f};i.read(u,s,function(e){e?r(e):i.close(u,function(e){e&&console.warn(\"Could not close file \".concat(t,\":\"),e),n(c)})})}})})})}(t,e)}(t,n).then(function(t){return Rn(t,n)})):function(t){return\"undefined\"!=typeof File&&t instanceof File}(t)?(n.async=1,(e=t,new Promise(function(t,n){var r=new FileReader;r.onload=function(e){return t(e.target.result)},r.onerror=function(){return n(r.error)},r.readAsArrayBuffer(e)})).then(function(t){return Rn(t,n)})):Rn(t,n)}function Rn(t,e){return function(t){try{return Buffer.isBuffer(t)}catch(t){return 0}}(t)&&(t=new Uint8Array(t).buffer),Bn(function(t){try{return new DataView(t)}catch(e){return new c(t)}}(t),e)}function Bn(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{expanded:0,async:0,includeUnknown:0,domParser:void 0},n=e.expanded,r=void 0===n?0:n,i=e.async,u=void 0===i?0:i,a=e.includeUnknown,f=void 0===a?0:a,c=e.domParser,l=void 0===c?void 0:c,d=0,p={},v=[],g=xt.parseAppMarkers(t,u),h=g.fileType,m=(g.fileDataOffset,g.jfifDataOffset,g.tiffHeaderOffset),y=g.iptcDataOffset,b=g.xmpChunks,x=(g.iccChunks,g.mpfDataOffset,g.pngHeaderOffset,g.pngTextChunks),A=g.pngChunkOffsets,S=g.vp8xChunkOffset;if(g.gifHeaderOffset,function(t){return void 0!==t}(m)){d=1;var w=Xt.read(t,m,f),U=w.tags;w.byteOrder,U.Thumbnail&&(p.Thumbnail=U.Thumbnail,delete U.Thumbnail),r?(p.exif=U,function(t){if(t.exif){if(t.exif.GPSLatitude&&t.exif.GPSLatitudeRef)try{t.gps=t.gps||{},t.gps.Latitude=s(t.exif.GPSLatitude.value),\"S\"===t.exif.GPSLatitudeRef.value.join(\"\")&&(t.gps.Latitude=-t.gps.Latitude)}catch(t){}if(t.exif.GPSLongitude&&t.exif.GPSLongitudeRef)try{t.gps=t.gps||{},t.gps.Longitude=s(t.exif.GPSLongitude.value),\"W\"===t.exif.GPSLongitudeRef.value.join(\"\")&&(t.gps.Longitude=-t.gps.Longitude)}catch(t){}if(t.exif.GPSAltitude&&t.exif.GPSAltitudeRef)try{t.gps=t.gps||{},t.gps.Altitude=t.exif.GPSAltitude.value[0]/t.exif.GPSAltitude.value[1],1===t.exif.GPSAltitudeRef.value&&(t.gps.Altitude=-t.gps.Altitude)}catch(t){}}}(p)):p=o({},p,U),U.MakerNote&&delete U.MakerNote.__offset}if(function(t){return void 0!==t}(y)){d=1;var I=Jt.read(t,y,f);r?p.iptc=I:p=o({},p,I)}if(function(t){return Array.isArray(t)&&t.length>0}(b)){d=1;var O=Ue.read(t,b,l);r?p.xmp=O:(delete O._raw,p=o({},p,O))}if(function(t){return void 0!==t}(x)){d=1;var C=Je.read(t,x,u,f),T=C.readTags,P=C.readTagsPromise;M(T),P&&v.push(P.then(function(t){return t.forEach(M)}))}if(function(t){return void 0!==t}(A)){d=1;var E=mn.read(t,A);r?p.png=p.png?o({},p.png,E):E:p=o({},p,E)}if(function(t){return void 0!==t}(S)){d=1;var k=Un.read(t,S);r?p.riff=p.riff?o({},p.riff,k):k:p=o({},p,k)}var L=Tn.get(p,r);if(L&&(r?p.composite=L:p=o({},p,L)),delete p.Thumbnail,h&&(r?(p.file||(p.file={}),p.file.FileType=h):p.FileType=h,d=1),!d)throw new kn.MetadataMissingError;return u?Promise.all(v).then(function(){return p}):p;function M(t){if(r){for(var e=0,n=[\"exif\",\"iptc\"];e<n.length;e++){var i=n[e],u=\"__\".concat(i);t[u]&&(p[i]=p[i]?o({},p.exif,t[u]):t[u],delete t[u])}p.png=p.png?o({},p.png,t):t,p.pngText=p.pngText?o({},p.png,t):t}else delete(p=o({},p,t.__exif?t.__exif:{},t.__iptc?t.__iptc:{},t)).__exif,delete p.__iptc}}return e}()});\n//# sourceMappingURL=exif-reader.js.map","// Custom-built version of exifreader, config is in package.json\nimport ExifReader from 'exifreader/dist/exif-reader.js';\n\n// Tags from IPTC, XMP, EXIF\nconst TAG_NAMES = ['Caption/Abstract', 'Description', 'ImageDescription'];\n\nexport default async function extractImageDescription(file) {\n if (!file || !file.type?.startsWith?.('image/')) return null;\n\n try {\n const tags = await ExifReader.load(file);\n for (const name of TAG_NAMES) {\n if (tags[name]?.description) {\n return tags[name].description.trim();\n }\n }\n return null;\n } catch (error) {\n console.debug('Failed to extract image description:', error);\n return null;\n }\n}\n","import { Trans, useLingui } from '@lingui/react/macro';\nimport { MenuItem } from '@szhsin/react-menu';\nimport { useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { useDebouncedCallback } from 'use-debounce';\n\nimport extractImageDescription from '../utils/extract-image-desc';\nimport localeCode2Text from '../utils/localeCode2Text';\nimport prettyBytes from '../utils/pretty-bytes';\nimport showToast from '../utils/show-toast';\nimport states from '../utils/states';\nimport { getCurrentInstanceConfiguration } from '../utils/store-utils';\nimport supports from '../utils/supports';\n\nimport Icon from './icon';\nimport Menu2 from './menu2';\nimport Modal from './modal';\n\nconst { PHANPY_IMG_ALT_API_URL: IMG_ALT_API_URL } = import.meta.env;\n\nfunction scaleDimension(matrix, matrixLimit, width, height) {\n // matrix = number of pixels\n // matrixLimit = max number of pixels\n // Calculate new width and height, downsize to within the limit, preserve aspect ratio, no decimals\n const scalingFactor = Math.sqrt(matrixLimit / matrix);\n const newWidth = Math.floor(width * scalingFactor);\n const newHeight = Math.floor(height * scalingFactor);\n return { newWidth, newHeight };\n}\n\nfunction MediaAttachment({\n attachment,\n disabled,\n lang,\n supportedMimeTypes,\n descriptionLimit = 1500,\n onDescriptionChange = () => {},\n onRemove = () => {},\n}) {\n const { i18n, t } = useLingui();\n const [uiState, setUIState] = useState('default');\n const supportsEdit =\n supports('@mastodon') || supports('@gotosocial/edit-media-attributes');\n const { type, id, file } = attachment;\n const url = useMemo(\n () => (file ? URL.createObjectURL(file) : attachment.url),\n [file, attachment.url],\n );\n console.log({ attachment });\n\n const checkMaxError = !!file?.size;\n const configuration = checkMaxError ? getCurrentInstanceConfiguration() : {};\n const {\n mediaAttachments: {\n imageSizeLimit,\n imageMatrixLimit,\n videoSizeLimit,\n videoMatrixLimit,\n videoFrameRateLimit,\n } = {},\n } = configuration || {};\n\n const [maxError, setMaxError] = useState(() => {\n if (!checkMaxError) return null;\n if (\n type.startsWith('image') &&\n imageSizeLimit &&\n file.size > imageSizeLimit\n ) {\n return {\n type: 'imageSizeLimit',\n details: {\n imageSize: file.size,\n imageSizeLimit,\n },\n };\n } else if (\n type.startsWith('video') &&\n videoSizeLimit &&\n file.size > videoSizeLimit\n ) {\n return {\n type: 'videoSizeLimit',\n details: {\n videoSize: file.size,\n videoSizeLimit,\n },\n };\n }\n return null;\n });\n\n const [imageMatrix, setImageMatrix] = useState({});\n useEffect(() => {\n if (!checkMaxError || !imageMatrixLimit) return;\n if (imageMatrix?.matrix > imageMatrixLimit) {\n setMaxError({\n type: 'imageMatrixLimit',\n details: {\n imageMatrix: imageMatrix?.matrix,\n imageMatrixLimit,\n width: imageMatrix?.width,\n height: imageMatrix?.height,\n },\n });\n }\n }, [imageMatrix, imageMatrixLimit, checkMaxError]);\n\n const [videoMatrix, setVideoMatrix] = useState({});\n useEffect(() => {\n if (!checkMaxError || !videoMatrixLimit) return;\n if (videoMatrix?.matrix > videoMatrixLimit) {\n setMaxError({\n type: 'videoMatrixLimit',\n details: {\n videoMatrix: videoMatrix?.matrix,\n videoMatrixLimit,\n width: videoMatrix?.width,\n height: videoMatrix?.height,\n },\n });\n }\n }, [videoMatrix, videoMatrixLimit, checkMaxError]);\n\n const [description, setDescription] = useState(attachment.description);\n\n // Extract description from images that's not uploaded yet\n useEffect(() => {\n if (!file || !type.startsWith('image/') || id || attachment.description) {\n return;\n }\n\n let cancelled = false;\n\n (async () => {\n setUIState('loading');\n try {\n const extractedDescription = await extractImageDescription(file);\n if (!cancelled && extractedDescription) {\n setDescription(extractedDescription);\n }\n } catch (error) {\n console.debug('Failed to extract image metadata:', error);\n } finally {\n if (!cancelled) {\n setUIState('default');\n }\n }\n })();\n\n return () => {\n cancelled = true;\n };\n }, []);\n\n let [suffixType, subtype] = type.split('/');\n // If type is not supported, try to find a supported type with the same subtype\n // E.g. application/ogg -> audio/ogg\n const suffixTypes = new Set();\n const subTypeMap = {};\n if (supportedMimeTypes?.length) {\n supportedMimeTypes.forEach((mimeType) => {\n const [t, st] = mimeType.split('/');\n subTypeMap[st] = t;\n suffixTypes.add(t);\n });\n }\n if (subtype && !suffixTypes.has(suffixType) && subTypeMap[subtype]) {\n suffixType = subTypeMap[subtype];\n }\n\n const debouncedOnDescriptionChange = useDebouncedCallback(\n onDescriptionChange,\n 250,\n );\n useEffect(() => {\n debouncedOnDescriptionChange(description);\n }, [description, debouncedOnDescriptionChange]);\n\n const [showModal, setShowModal] = useState(false);\n const textareaRef = useRef(null);\n useEffect(() => {\n let timer;\n if (showModal && textareaRef.current) {\n timer = setTimeout(() => {\n textareaRef.current.focus();\n }, 100);\n }\n return () => {\n clearTimeout(timer);\n };\n }, [showModal]);\n\n const descTextarea = (\n <>\n {!!id && !supportsEdit ? (\n <div class=\"media-desc\">\n <span class=\"tag\">\n <Trans>Uploaded</Trans>\n </span>\n <p title={description}>\n {attachment.description || <i>No description</i>}\n </p>\n </div>\n ) : (\n <textarea\n ref={textareaRef}\n value={description || ''}\n lang={lang}\n placeholder={\n {\n image: t`Image description`,\n video: t`Video description`,\n gifv: t`Video description`,\n audio: t`Audio description`,\n }[suffixType]\n }\n autoCapitalize=\"sentences\"\n autoComplete=\"on\"\n autoCorrect=\"on\"\n spellCheck=\"true\"\n dir=\"auto\"\n disabled={disabled || uiState === 'loading'}\n class={uiState === 'loading' ? 'loading' : ''}\n maxlength={descriptionLimit} // Not unicode-aware :(\n onInput={(e) => {\n const { value } = e.target;\n setDescription(value);\n // debouncedOnDescriptionChange(value);\n }}\n ></textarea>\n )}\n </>\n );\n\n const toastRef = useRef(null);\n useEffect(() => {\n return () => {\n toastRef.current?.hideToast?.();\n };\n }, []);\n\n const maxErrorToast = useRef(null);\n\n const maxErrorText = (err) => {\n const { type, details } = err;\n switch (type) {\n case 'imageSizeLimit': {\n const { imageSize, imageSizeLimit } = details;\n return t`File size too large. Uploading might encounter issues. Try reduce the file size from ${prettyBytes(\n imageSize,\n )} to ${prettyBytes(imageSizeLimit)} or lower.`;\n }\n case 'imageMatrixLimit': {\n const { imageMatrix, imageMatrixLimit, width, height } = details;\n const { newWidth, newHeight } = scaleDimension(\n imageMatrix,\n imageMatrixLimit,\n width,\n height,\n );\n return t`Dimension too large. Uploading might encounter issues. Try reduce dimension from ${i18n.number(\n width,\n )}×${i18n.number(height)}px to ${i18n.number(newWidth)}×${i18n.number(\n newHeight,\n )}px.`;\n }\n case 'videoSizeLimit': {\n const { videoSize, videoSizeLimit } = details;\n return t`File size too large. Uploading might encounter issues. Try reduce the file size from ${prettyBytes(\n videoSize,\n )} to ${prettyBytes(videoSizeLimit)} or lower.`;\n }\n case 'videoMatrixLimit': {\n const { videoMatrix, videoMatrixLimit, width, height } = details;\n const { newWidth, newHeight } = scaleDimension(\n videoMatrix,\n videoMatrixLimit,\n width,\n height,\n );\n return t`Dimension too large. Uploading might encounter issues. Try reduce dimension from ${i18n.number(\n width,\n )}×${i18n.number(height)}px to ${i18n.number(newWidth)}×${i18n.number(\n newHeight,\n )}px.`;\n }\n case 'videoFrameRateLimit': {\n // Not possible to detect this on client-side for now\n return t`Frame rate too high. Uploading might encounter issues.`;\n }\n }\n };\n\n return (\n <>\n <div class=\"media-attachment\">\n <div\n class=\"media-preview\"\n tabIndex=\"0\"\n onClick={() => {\n setShowModal(true);\n }}\n >\n {suffixType === 'image' ? (\n <img\n src={url}\n alt=\"\"\n onLoad={(e) => {\n if (!checkMaxError) return;\n const { naturalWidth, naturalHeight } = e.target;\n setImageMatrix({\n matrix: naturalWidth * naturalHeight,\n width: naturalWidth,\n height: naturalHeight,\n });\n }}\n />\n ) : suffixType === 'video' || suffixType === 'gifv' ? (\n <video\n src={url + '#t=0.1'} // Make Safari show 1st-frame preview\n playsinline\n muted\n disablePictureInPicture\n preload=\"metadata\"\n onLoadedMetadata={(e) => {\n if (!checkMaxError) return;\n const { videoWidth, videoHeight } = e.target;\n if (videoWidth && videoHeight) {\n setVideoMatrix({\n matrix: videoWidth * videoHeight,\n width: videoWidth,\n height: videoHeight,\n });\n }\n }}\n />\n ) : suffixType === 'audio' ? (\n <audio src={url} controls />\n ) : null}\n </div>\n {descTextarea}\n <div class=\"media-aside\">\n <button\n type=\"button\"\n class=\"plain close-button\"\n disabled={disabled}\n onClick={onRemove}\n >\n <Icon icon=\"x\" alt={t`Remove`} />\n </button>\n {!!maxError && (\n <button\n type=\"button\"\n class=\"media-error\"\n title={maxErrorText(maxError)}\n onClick={() => {\n if (maxErrorToast.current) {\n maxErrorToast.current.hideToast();\n }\n maxErrorToast.current = showToast({\n text: maxErrorText(maxError),\n duration: 10_000,\n });\n }}\n >\n <Icon icon=\"alert\" alt={t`Error`} />\n </button>\n )}\n </div>\n </div>\n {showModal && (\n <Modal\n onClose={() => {\n setShowModal(false);\n }}\n >\n <div id=\"media-sheet\" class=\"sheet sheet-max\">\n <button\n type=\"button\"\n class=\"sheet-close\"\n onClick={() => {\n setShowModal(false);\n }}\n >\n <Icon icon=\"x\" alt={t`Close`} />\n </button>\n <header>\n <h2>\n {\n {\n image: t`Edit image description`,\n video: t`Edit video description`,\n gifv: t`Edit video description`,\n audio: t`Edit audio description`,\n }[suffixType]\n }\n </h2>\n </header>\n <main tabIndex=\"-1\">\n <div class=\"media-preview\">\n {suffixType === 'image' ? (\n <img src={url} alt=\"\" />\n ) : suffixType === 'video' || suffixType === 'gifv' ? (\n <video src={url} playsinline controls />\n ) : suffixType === 'audio' ? (\n <audio src={url} controls />\n ) : null}\n </div>\n <div class=\"media-form\">\n {descTextarea}\n <footer>\n {suffixType === 'image' &&\n /^(png|jpe?g|gif|webp)$/i.test(subtype) &&\n !!states.settings.mediaAltGenerator &&\n !!IMG_ALT_API_URL && (\n <Menu2\n portal={{\n target: document.body,\n }}\n containerProps={{\n style: {\n zIndex: 1001,\n },\n }}\n align=\"center\"\n position=\"anchor\"\n overflow=\"auto\"\n menuButton={\n <button type=\"button\" class=\"plain\">\n <Icon icon=\"more\" size=\"l\" alt={t`More`} />\n </button>\n }\n >\n <MenuItem\n disabled={uiState === 'loading'}\n onClick={() => {\n setUIState('loading');\n toastRef.current = showToast({\n text: t`Generating description. Please wait…`,\n duration: -1,\n });\n // POST with multipart\n (async function () {\n try {\n const body = new FormData();\n body.append('image', file);\n const response = await fetch(IMG_ALT_API_URL, {\n method: 'POST',\n body,\n }).then((r) => r.json());\n if (response.error) {\n throw new Error(response.error);\n }\n setDescription(response.description);\n } catch (e) {\n console.error(e);\n showToast(\n e.message\n ? t`Failed to generate description: ${e.message}`\n : t`Failed to generate description`,\n );\n } finally {\n setUIState('default');\n toastRef.current?.hideToast?.();\n }\n })();\n }}\n >\n <Icon icon=\"sparkles2\" />\n {lang && lang !== 'en' ? (\n <small>\n <Trans>Generate description…</Trans>\n <br />\n (English)\n </small>\n ) : (\n <span>\n <Trans>Generate description…</Trans>\n </span>\n )}\n </MenuItem>\n {!!lang && lang !== 'en' && (\n <MenuItem\n disabled={uiState === 'loading'}\n onClick={() => {\n setUIState('loading');\n toastRef.current = showToast({\n text: t`Generating description. Please wait…`,\n duration: -1,\n });\n // POST with multipart\n (async function () {\n try {\n const body = new FormData();\n body.append('image', file);\n const params = `?lang=${lang}`;\n const response = await fetch(\n IMG_ALT_API_URL + params,\n {\n method: 'POST',\n body,\n },\n ).then((r) => r.json());\n if (response.error) {\n throw new Error(response.error);\n }\n setDescription(response.description);\n } catch (e) {\n console.error(e);\n showToast(\n t`Failed to generate description${\n e?.message ? `: ${e.message}` : ''\n }`,\n );\n } finally {\n setUIState('default');\n toastRef.current?.hideToast?.();\n }\n })();\n }}\n >\n <Icon icon=\"sparkles2\" />\n <small>\n <Trans>Generate description…</Trans>\n <br />\n <Trans>\n ({localeCode2Text(lang)}){' '}\n <span class=\"more-insignificant\">\n — experimental\n </span>\n </Trans>\n </small>\n </MenuItem>\n )}\n </Menu2>\n )}\n <button\n type=\"button\"\n class=\"light block\"\n onClick={() => {\n setShowModal(false);\n }}\n disabled={uiState === 'loading'}\n >\n <Trans>Done</Trans>\n </button>\n </footer>\n </div>\n </main>\n </div>\n </Modal>\n )}\n </>\n );\n}\n\nexport default MediaAttachment;\n","import { Trans, useLingui } from '@lingui/react/macro';\nimport { useEffect, useRef, useState } from 'preact/hooks';\nimport { useHotkeys } from 'react-hotkeys-hook';\nimport { useDebouncedCallback } from 'use-debounce';\n\nimport { api } from '../utils/api';\nimport { fetchRelationships } from '../utils/relationships';\n\nimport AccountBlock from './account-block';\nimport Icon from './icon';\nimport Loader from './loader';\n\nfunction MentionModal({\n onClose = () => {},\n onSelect = () => {},\n defaultSearchTerm,\n}) {\n const { t } = useLingui();\n const { masto } = api();\n const [uiState, setUIState] = useState('default');\n const [accounts, setAccounts] = useState([]);\n const [relationshipsMap, setRelationshipsMap] = useState({});\n\n const [selectedIndex, setSelectedIndex] = useState(0);\n\n const loadRelationships = async (accounts) => {\n if (!accounts?.length) return;\n const relationships = await fetchRelationships(accounts, relationshipsMap);\n if (relationships) {\n setRelationshipsMap({\n ...relationshipsMap,\n ...relationships,\n });\n }\n };\n\n const loadAccounts = (term) => {\n if (!term) return;\n setUIState('loading');\n (async () => {\n try {\n const accounts = await masto.v1.accounts.search.list({\n q: term,\n limit: 40,\n resolve: false,\n });\n setAccounts(accounts);\n loadRelationships(accounts);\n setUIState('default');\n } catch (e) {\n setUIState('error');\n console.error(e);\n }\n })();\n };\n\n const debouncedLoadAccounts = useDebouncedCallback(loadAccounts, 1000);\n\n useEffect(() => {\n loadAccounts();\n }, [loadAccounts]);\n\n const inputRef = useRef();\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.focus();\n // Put cursor at the end\n if (inputRef.current.value) {\n inputRef.current.selectionStart = inputRef.current.value.length;\n inputRef.current.selectionEnd = inputRef.current.value.length;\n }\n }\n }, []);\n\n useEffect(() => {\n if (defaultSearchTerm) {\n loadAccounts(defaultSearchTerm);\n }\n }, [defaultSearchTerm]);\n\n const selectAccount = (account) => {\n const socialAddress = account.acct;\n onSelect(socialAddress);\n onClose();\n };\n\n useHotkeys(\n 'enter',\n () => {\n const selectedAccount = accounts[selectedIndex];\n if (selectedAccount) {\n selectAccount(selectedAccount);\n }\n },\n {\n preventDefault: true,\n enableOnFormTags: ['input'],\n useKey: true,\n ignoreEventWhen: (e) => e.metaKey || e.ctrlKey || e.altKey || e.shiftKey,\n },\n );\n\n const listRef = useRef();\n useHotkeys(\n 'down',\n () => {\n if (selectedIndex < accounts.length - 1) {\n setSelectedIndex(selectedIndex + 1);\n } else {\n setSelectedIndex(0);\n }\n setTimeout(() => {\n const selectedItem = listRef.current.querySelector('.selected');\n if (selectedItem) {\n selectedItem.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'center',\n });\n }\n }, 1);\n },\n {\n preventDefault: true,\n enableOnFormTags: ['input'],\n useKey: true,\n ignoreEventWhen: (e) => e.metaKey || e.ctrlKey || e.altKey || e.shiftKey,\n },\n );\n\n useHotkeys(\n 'up',\n () => {\n if (selectedIndex > 0) {\n setSelectedIndex(selectedIndex - 1);\n } else {\n setSelectedIndex(accounts.length - 1);\n }\n setTimeout(() => {\n const selectedItem = listRef.current.querySelector('.selected');\n if (selectedItem) {\n selectedItem.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'center',\n });\n }\n }, 1);\n },\n {\n preventDefault: true,\n enableOnFormTags: ['input'],\n useKey: true,\n ignoreEventWhen: (e) => e.metaKey || e.ctrlKey || e.altKey || e.shiftKey,\n },\n );\n\n return (\n <div id=\"mention-sheet\" class=\"sheet\">\n {!!onClose && (\n <button type=\"button\" class=\"sheet-close\" onClick={onClose}>\n <Icon icon=\"x\" alt={t`Close`} />\n </button>\n )}\n <header>\n <form\n onSubmit={(e) => {\n e.preventDefault();\n debouncedLoadAccounts.flush?.();\n // const searchTerm = inputRef.current.value;\n // debouncedLoadAccounts(searchTerm);\n }}\n >\n <input\n ref={inputRef}\n required\n type=\"search\"\n class=\"block\"\n placeholder={t`Search accounts`}\n onInput={(e) => {\n const { value } = e.target;\n debouncedLoadAccounts(value);\n }}\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellCheck=\"false\"\n dir=\"auto\"\n enterKeyHint=\"search\"\n defaultValue={defaultSearchTerm || ''}\n />\n </form>\n </header>\n <main>\n {accounts?.length > 0 ? (\n <ul\n ref={listRef}\n class={`accounts-list ${uiState === 'loading' ? 'loading' : ''}`}\n >\n {accounts.map((account, i) => {\n const relationship = relationshipsMap[account.id];\n return (\n <li\n key={account.id}\n class={i === selectedIndex ? 'selected' : ''}\n >\n <AccountBlock\n avatarSize=\"xxl\"\n account={account}\n relationship={relationship}\n showStats\n showActivity\n />\n <button\n type=\"button\"\n class=\"plain2\"\n onClick={() => {\n selectAccount(account);\n }}\n >\n <Icon icon=\"plus\" size=\"xl\" alt={t`Add`} />\n </button>\n </li>\n );\n })}\n </ul>\n ) : uiState === 'loading' ? (\n <div class=\"ui-state\">\n <Loader abrupt />\n </div>\n ) : uiState === 'error' ? (\n <div class=\"ui-state\">\n <p>\n <Trans>Error loading accounts</Trans>\n </p>\n </div>\n ) : null}\n </main>\n </div>\n );\n}\n\nexport default MentionModal;\n","import './quote-suggestion.css';\n\nimport { Trans } from '@lingui/react/macro';\n\nimport Status from './status';\n\nexport default function QuoteSuggestion({\n quoteSuggestion,\n hasCurrentQuoteStatus,\n onAccept,\n onCancel,\n}) {\n if (!quoteSuggestion) return null;\n\n return (\n <div class=\"quote-suggestion\">\n <div class=\"quote-suggestion-header\">\n <b>\n <Trans>Turn link into a quote?</Trans>\n </b>\n <div class=\"quote-suggestion-url\">{quoteSuggestion.url}</div>\n </div>\n <div class=\"quote-status\">\n <Status\n status={quoteSuggestion.status}\n instance={quoteSuggestion.instance}\n size=\"s\"\n readOnly\n />\n </div>\n <div class=\"quote-suggestion-actions\">\n <span class=\"spacer\" />\n <button type=\"button\" class=\"plain\" onClick={onCancel}>\n {hasCurrentQuoteStatus ? (\n <Trans>Cancel</Trans>\n ) : (\n <Trans>Keep as link</Trans>\n )}\n </button>\n <button type=\"button\" class=\"plain6\" onClick={onAccept}>\n {hasCurrentQuoteStatus ? (\n <Trans>Replace current quote</Trans>\n ) : (\n <Trans>Turn into quote</Trans>\n )}\n </button>\n </div>\n </div>\n );\n}\n","import './compose.css';\n\nimport { msg, plural } from '@lingui/core/macro';\nimport { Trans, useLingui } from '@lingui/react/macro';\nimport { MenuDivider, MenuItem } from '@szhsin/react-menu';\nimport { deepEqual } from 'fast-equals';\nimport { useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { useHotkeys } from 'react-hotkeys-hook';\nimport { uid } from 'uid/single';\nimport { useSnapshot } from 'valtio';\n\nimport supportedLanguages from '../data/status-supported-languages';\nimport { api, getPreferences } from '../utils/api';\nimport db from '../utils/db';\nimport { getDtfLocale } from '../utils/dtf-locale';\nimport localeMatch from '../utils/locale-match';\nimport localeCode2Text from '../utils/localeCode2Text';\nimport mem from '../utils/mem';\nimport openCompose from '../utils/open-compose';\nimport {\n getPostQuoteApprovalPolicy,\n supportsNativeQuote,\n} from '../utils/quote-utils';\nimport RTF from '../utils/relative-time-format';\nimport showToast from '../utils/show-toast';\nimport states, { saveStatus } from '../utils/states';\nimport store from '../utils/store';\nimport {\n getAPIVersions,\n getCurrentAccount,\n getCurrentAccountNS,\n getCurrentInstanceConfiguration,\n} from '../utils/store-utils';\nimport stringLength from '../utils/string-length';\nimport supports from '../utils/supports';\nimport unfurlMastodonLink from '../utils/unfurl-link';\nimport urlRegexObj from '../utils/url-regex';\nimport useCloseWatcher from '../utils/useCloseWatcher';\nimport useInterval from '../utils/useInterval';\nimport useThrottledResizeObserver from '../utils/useThrottledResizeObserver';\nimport visibilityIconsMap from '../utils/visibility-icons-map';\nimport visibilityText from '../utils/visibility-text';\n\nimport AccountBlock from './account-block';\n// import Avatar from './avatar';\nimport CameraCaptureInput, {\n supportsCameraCapture,\n} from './camera-capture-input';\nimport CharCountMeter from './char-count-meter';\nimport ComposePoll, { expiryOptions } from './compose-poll';\nimport Textarea from './compose-textarea';\nimport CustomEmojisModal from './custom-emojis-modal';\nimport FilePickerInput from './file-picker-input';\nimport GIFPickerModal from './gif-picker-modal';\nimport Icon from './icon';\nimport Loader from './loader';\nimport MediaAttachment from './media-attachment';\nimport MentionModal from './mention-modal';\nimport Menu2 from './menu2';\nimport Modal from './modal';\nimport QuoteSuggestion from './quote-suggestion';\nimport ScheduledAtField, {\n getLocalTimezoneName,\n MIN_SCHEDULED_AT,\n} from './ScheduledAtField';\nimport Status from './status';\nimport TextExpander from './text-expander';\n\nconst supportedLanguagesMap = supportedLanguages.reduce((acc, l) => {\n const [code, common, native] = l;\n acc[code] = {\n common,\n native,\n };\n return acc;\n}, {});\n\n/* NOTES:\n - Max character limit includes BOTH status text and Content Warning text\n*/\n\nconst expirySeconds = Object.keys(expiryOptions);\nconst oneDay = 24 * 60 * 60;\n\nconst expiresInFromExpiresAt = (expiresAt) => {\n if (!expiresAt) return oneDay;\n const delta = (Date.parse(expiresAt) - Date.now()) / 1000;\n return expirySeconds.find((s) => s >= delta) || oneDay;\n};\n\nconst DEFAULT_LANG = localeMatch(\n [getDtfLocale(), ...navigator.languages],\n supportedLanguages.map((l) => l[0]),\n 'en',\n);\n\n// https://github.com/mastodon/mastodon/blob/c4a429ed47e85a6bbf0d470a41cc2f64cf120c19/app/javascript/mastodon/features/compose/util/counter.js\nconst usernameRegex = /(^|[^\\/\\w])[@@](([a-z0-9_]+)@[a-z0-9\\.\\-]+[a-z0-9]+)/gi;\nconst urlPlaceholder = '$2xxxxxxxxxxxxxxxxxxxxxxx';\nfunction countableText(inputText) {\n return inputText\n .replace(urlRegexObj, urlPlaceholder)\n .replace(usernameRegex, '$1@$3');\n}\n\n// const rtf = new Intl.RelativeTimeFormat();\nconst LF = mem((locale) => new Intl.ListFormat(locale || undefined));\n\nconst ADD_LABELS = {\n camera: msg`Take photo or video`,\n media: msg`Add media`,\n customEmoji: msg`Add custom emoji`,\n gif: msg`Add GIF`,\n poll: msg`Add poll`,\n sensitive: msg`Add content warning`,\n scheduledPost: msg`Schedule post`,\n};\n\nconst DEFAULT_SCHEDULED_AT = Math.max(10 * 60 * 1000, MIN_SCHEDULED_AT); // 10 mins\n\nfunction isMimeTypeSupported(fileType, supportedMimeTypes) {\n if (!supportedMimeTypes) return true;\n if (supportedMimeTypes.includes(fileType)) return true;\n\n // If type is not supported, try to find a supported type with the same subtype\n // E.g. application/ogg -> audio/ogg\n const [suffixType, subtype] = fileType.split('/');\n const subTypeMap = {};\n supportedMimeTypes.forEach((mimeType) => {\n const [t, st] = mimeType.split('/');\n subTypeMap[st] = t;\n });\n\n return !!subTypeMap[subtype];\n}\n\nfunction Compose({\n onClose,\n replyToStatus,\n replyMode = 'all',\n editStatus,\n draftStatus,\n quoteStatus,\n standalone,\n hasOpener,\n}) {\n const { i18n, _, t } = useLingui();\n const rtf = RTF(i18n.locale);\n const lf = LF(i18n.locale);\n\n console.warn('RENDER COMPOSER');\n const { masto, instance } = api();\n const [uiState, setUIState] = useState('default');\n const UID = useRef(draftStatus?.uid || uid());\n console.log('Compose UID', UID.current);\n\n const currentAccount = useMemo(getCurrentAccount, []);\n const currentAccountInfo = currentAccount.info;\n\n const configuration = getCurrentInstanceConfiguration();\n console.log('⚙️ Configuration', configuration);\n\n const {\n statuses: {\n maxCharacters,\n maxMediaAttachments, // Beware: it can be undefined!\n charactersReservedPerUrl,\n } = {},\n mediaAttachments: {\n supportedMimeTypes,\n imageSizeLimit,\n imageMatrixLimit,\n videoSizeLimit,\n videoMatrixLimit,\n videoFrameRateLimit,\n descriptionLimit,\n } = {},\n polls: {\n maxOptions,\n maxCharactersPerOption,\n maxExpiration,\n minExpiration,\n } = {},\n } = configuration || {};\n const supportedImagesVideosTypes = supportedMimeTypes?.filter((mimeType) =>\n /^(image|video)/i.test(mimeType),\n );\n\n const textareaRef = useRef();\n const spoilerTextRef = useRef();\n\n const [visibility, setVisibility] = useState('public');\n const [quoteApprovalPolicy, setQuoteApprovalPolicy] = useState('public');\n const [sensitive, setSensitive] = useState(false);\n const [sensitiveMedia, setSensitiveMedia] = useState(false);\n const [language, setLanguage] = useState(\n store.session.get('currentLanguage') || DEFAULT_LANG,\n );\n const prevLanguage = useRef(language);\n const [mediaAttachments, setMediaAttachments] = useState([]);\n const [poll, setPoll] = useState(null);\n const [scheduledAt, setScheduledAt] = useState(null);\n const [quoteSuggestion, setQuoteSuggestion] = useState(null);\n const [localQuoteStatus, setLocalQuoteStatus] = useState(quoteStatus);\n const [quoteCleared, setQuoteCleared] = useState(false);\n\n const prefs = getPreferences();\n\n const currentQuoteStatus = quoteCleared\n ? null\n : localQuoteStatus || quoteStatus;\n\n // Quote eligibility logic duplicated from status.jsx\n const checkQuoteEligibility = (status) => {\n if (!supportsNativeQuote()) return false;\n\n const { visibility, quoteApproval, account } = status;\n const isSelf = currentAccountInfo && currentAccountInfo.id === account.id;\n const isPublic = ['public', 'unlisted'].includes(visibility);\n const isMineAndPrivate = isSelf && visibility === 'private';\n\n const isQuoteAutomaticallyAccepted =\n quoteApproval?.currentUser === 'automatic' &&\n (isPublic || isMineAndPrivate);\n const isQuoteManuallyAccepted =\n quoteApproval?.currentUser === 'manual' && (isPublic || isMineAndPrivate);\n\n if (!isPublic && !isSelf) {\n return false;\n } else if (isQuoteAutomaticallyAccepted) {\n return true;\n } else if (isQuoteManuallyAccepted) {\n return true;\n } else {\n return false;\n }\n };\n\n const handlePastedLink = async (url) => {\n // Handle QP links\n if (supportsNativeQuote()) {\n // Quotes cannot coexist with media attachments or polls\n if (mediaAttachments.length > 0 || poll) {\n return;\n }\n\n // Cannot add/remove/replace current quote when editing\n if (editStatus) {\n return;\n }\n\n // Don't show quote suggestion when visibility is 'direct'\n if (visibility === 'direct') {\n return;\n }\n\n try {\n const unfurledData = await unfurlMastodonLink(instance, url);\n if (unfurledData?.id) {\n const status =\n states.statuses[`${unfurledData.instance}/${unfurledData.id}`];\n if (status && checkQuoteEligibility(status)) {\n // Don't show suggestion if it's the same as current quote\n if (currentQuoteStatus?.id === status.id) {\n return;\n }\n\n setQuoteSuggestion({\n status,\n instance: unfurledData.instance,\n url: unfurledData.originalURL,\n });\n }\n }\n } catch (error) {\n console.error(error);\n }\n }\n };\n\n const oninputTextarea = () => {\n if (!textareaRef.current) return;\n textareaRef.current.dispatchEvent(new Event('input'));\n };\n const focusTextarea = (cursorPosition) => {\n setTimeout(() => {\n if (!textareaRef.current) return;\n // If cursor position is provided, set it\n if (cursorPosition !== undefined) {\n textareaRef.current.setSelectionRange(cursorPosition, cursorPosition);\n }\n console.debug('FOCUS textarea');\n textareaRef.current?.focus();\n }, 300);\n };\n const insertTextAtCursor = ({ targetElement, text }) => {\n if (!targetElement) return;\n\n const { selectionStart, selectionEnd, value } = targetElement;\n let textBeforeInsert = value.slice(0, selectionStart);\n\n // Remove zero-width space from end of text\n textBeforeInsert = textBeforeInsert.replace(/\\u200B$/, '');\n\n const spaceBeforeInsert = textBeforeInsert\n ? /[\\s\\t\\n\\r]$/.test(textBeforeInsert)\n ? ''\n : ' '\n : '';\n\n const textAfterInsert = value.slice(selectionEnd);\n const spaceAfterInsert = /^[\\s\\t\\n\\r]/.test(textAfterInsert) ? '' : ' ';\n\n const newText =\n textBeforeInsert +\n spaceBeforeInsert +\n text +\n spaceAfterInsert +\n textAfterInsert;\n\n targetElement.value = newText;\n targetElement.selectionStart = targetElement.selectionEnd =\n selectionEnd + text.length + spaceAfterInsert.length;\n targetElement.focus();\n targetElement.dispatchEvent(new Event('input'));\n };\n\n const lastFocusedFieldRef = useRef(null);\n const lastFocusedEmojiFieldRef = useRef(null);\n const focusLastFocusedField = () => {\n setTimeout(() => {\n if (!lastFocusedFieldRef.current) return;\n lastFocusedFieldRef.current.focus();\n }, 0);\n };\n const composeContainerRef = useRef(null);\n useEffect(() => {\n const handleFocus = (e) => {\n // Toggle focused if in or out if any fields are focused\n composeContainerRef.current.classList.toggle(\n 'focused',\n e.type === 'focusin',\n );\n\n const target = e.target;\n if (target.hasAttribute('data-allow-custom-emoji')) {\n lastFocusedEmojiFieldRef.current = target;\n }\n const isFormElement = ['INPUT', 'BUTTON', 'SELECT', 'TEXTAREA'].includes(\n target.tagName,\n );\n if (isFormElement) {\n lastFocusedFieldRef.current = target;\n }\n };\n\n const composeContainer = composeContainerRef.current;\n if (composeContainer) {\n composeContainer.addEventListener('focusin', handleFocus);\n composeContainer.addEventListener('focusout', handleFocus);\n }\n\n return () => {\n if (composeContainer) {\n composeContainer.removeEventListener('focusin', handleFocus);\n composeContainer.removeEventListener('focusout', handleFocus);\n }\n };\n }, []);\n\n useEffect(() => {\n if (replyToStatus) {\n const { spoilerText, visibility, language, sensitive } = replyToStatus;\n if (spoilerText && spoilerTextRef.current) {\n spoilerTextRef.current.value = spoilerText;\n }\n const mentions = new Set([\n replyToStatus.account.acct,\n ...replyToStatus.mentions.map((m) => m.acct),\n ]);\n const allMentions = [...mentions].filter(\n (m) => m !== currentAccountInfo.acct,\n );\n\n if (allMentions.length > 0) {\n const authorMention = `@${replyToStatus.account.acct}`;\n const otherMentions = allMentions\n .filter((m) => m !== replyToStatus.account.acct)\n .map((m) => `@${m}`);\n\n if (replyMode === 'author-only') {\n // Mode 1: Only mention the author\n textareaRef.current.value = `${authorMention} `;\n oninputTextarea();\n focusTextarea();\n } else if (replyMode === 'author-first') {\n // Mode 2: Mention author first, then others at the end after 2 newlines\n if (otherMentions.length > 0) {\n textareaRef.current.value = `${authorMention} \\n\\n${otherMentions.join(' ')}`;\n oninputTextarea();\n // Set cursor position after the author mention\n const cursorPosition = authorMention.length + 1; // +1 for the space\n focusTextarea(cursorPosition);\n } else {\n // If no other mentions, just mention the author\n textareaRef.current.value = `${authorMention} `;\n oninputTextarea();\n focusTextarea();\n }\n } else {\n // Mode 3 (default 'all'): All mentions at the beginning\n textareaRef.current.value = `${allMentions\n .map((m) => `@${m}`)\n .join(' ')} `;\n oninputTextarea();\n focusTextarea();\n }\n }\n setVisibility(\n visibility === 'public' && prefs['posting:default:visibility']\n ? prefs['posting:default:visibility'].toLowerCase()\n : visibility,\n );\n setLanguage(\n language ||\n prefs['posting:default:language']?.toLowerCase() ||\n DEFAULT_LANG,\n );\n setSensitive(!!spoilerText);\n } else if (editStatus) {\n const {\n visibility,\n language,\n sensitive,\n poll,\n mediaAttachments,\n quoteApproval,\n } = editStatus;\n const composablePoll = !!poll?.options && {\n ...poll,\n options: poll.options.map((o) => o?.title || o),\n expiresIn: poll?.expiresIn || expiresInFromExpiresAt(poll.expiresAt),\n };\n setUIState('loading');\n (async () => {\n try {\n const statusSource = await masto.v1.statuses\n .$select(editStatus.id)\n .source.fetch();\n console.log({ statusSource });\n const { text, spoilerText } = statusSource;\n textareaRef.current.value = text;\n textareaRef.current.dataset.source = text;\n oninputTextarea();\n focusTextarea();\n spoilerTextRef.current.value = spoilerText;\n setVisibility(visibility);\n setLanguage(\n language ||\n prefs['posting:default:language']?.toLowerCase() ||\n DEFAULT_LANG,\n );\n if (supportsNativeQuote()) {\n const postQuoteApprovalPolicy =\n getPostQuoteApprovalPolicy(quoteApproval);\n setQuoteApprovalPolicy(postQuoteApprovalPolicy);\n }\n setSensitive(sensitive);\n if (composablePoll) setPoll(composablePoll);\n setMediaAttachments(mediaAttachments);\n setUIState('default');\n } catch (e) {\n console.error(e);\n alert(e?.reason || e);\n setUIState('error');\n }\n })();\n } else {\n focusTextarea();\n console.log('Apply prefs', prefs);\n if (prefs['posting:default:visibility']) {\n setVisibility(prefs['posting:default:visibility'].toLowerCase());\n }\n if (prefs['posting:default:language']) {\n setLanguage(prefs['posting:default:language'].toLowerCase());\n }\n if (prefs['posting:default:sensitive']) {\n setSensitive(!!prefs['posting:default:sensitive']);\n }\n if (prefs['posting:default:quote_policy']) {\n let policy = prefs['posting:default:quote_policy'].toLowerCase();\n if (prefs['posting:default:visibility']) {\n const visibility = prefs['posting:default:visibility'].toLowerCase();\n if (visibility === 'private' || visibility === 'direct') {\n policy = 'nobody';\n }\n }\n setQuoteApprovalPolicy(policy);\n }\n }\n if (draftStatus) {\n const {\n status,\n spoilerText,\n visibility,\n language,\n sensitive,\n sensitiveMedia,\n poll,\n mediaAttachments,\n scheduledAt,\n quoteApprovalPolicy,\n } = draftStatus;\n const composablePoll = !!poll?.options && {\n ...poll,\n options: poll.options.map((o) => o?.title || o),\n expiresIn: poll?.expiresIn || expiresInFromExpiresAt(poll.expiresAt),\n };\n textareaRef.current.value = status;\n oninputTextarea();\n // status starts with newline or space, focus on first position\n const cursorPos = /^\\n|\\s/.test(status) ? 0 : undefined;\n focusTextarea(cursorPos);\n if (spoilerText) spoilerTextRef.current.value = spoilerText;\n if (visibility) setVisibility(visibility);\n setLanguage(\n language ||\n prefs['posting:default:language']?.toLowerCase() ||\n DEFAULT_LANG,\n );\n if (sensitiveMedia !== null) setSensitiveMedia(sensitiveMedia);\n if (sensitive !== null) setSensitive(sensitive);\n if (composablePoll) setPoll(composablePoll);\n if (mediaAttachments) setMediaAttachments(mediaAttachments);\n if (scheduledAt) setScheduledAt(scheduledAt);\n if (quoteApprovalPolicy) setQuoteApprovalPolicy(quoteApprovalPolicy);\n }\n }, [draftStatus, editStatus, replyToStatus, replyMode]);\n\n // focus textarea when state.composerState.minimized turns false\n const snapStates = useSnapshot(states);\n useEffect(() => {\n if (!snapStates.composerState.minimized) {\n focusTextarea();\n }\n }, [snapStates.composerState.minimized]);\n\n const formRef = useRef();\n\n const beforeUnloadCopy = t`You have unsaved changes. Discard this post?`;\n const canClose = () => {\n const { value, dataset } = textareaRef.current;\n\n // check if loading\n if (uiState === 'loading') {\n console.log('canClose', { uiState });\n return false;\n }\n\n // check for status and media attachments\n const hasValue = (value || '')\n .trim()\n .replace(/^\\p{White_Space}+|\\p{White_Space}+$/gu, '');\n const hasMediaAttachments = mediaAttachments.length > 0;\n if (!hasValue && !hasMediaAttachments) {\n console.log('canClose', { value, mediaAttachments });\n return true;\n }\n\n // check if all media attachments have IDs\n const hasIDMediaAttachments =\n mediaAttachments.length > 0 &&\n mediaAttachments.every((media) => media.id);\n if (hasIDMediaAttachments) {\n console.log('canClose', { hasIDMediaAttachments });\n return true;\n }\n\n // check if status contains only \"@acct\", if replying\n const isSelf = replyToStatus?.account.id === currentAccountInfo.id;\n const hasOnlyAcct =\n replyToStatus && value.trim() === `@${replyToStatus.account.acct}`;\n // TODO: check for mentions, or maybe just generic \"@username<space>\", including multiple mentions like \"@username1<space>@username2<space>\"\n if (!isSelf && hasOnlyAcct) {\n console.log('canClose', { isSelf, hasOnlyAcct });\n return true;\n }\n\n // check if status is same with source\n const sameWithSource = value === dataset?.source;\n if (sameWithSource) {\n console.log('canClose', { sameWithSource });\n return true;\n }\n\n console.log('canClose', {\n value,\n hasMediaAttachments,\n hasIDMediaAttachments,\n poll,\n isSelf,\n hasOnlyAcct,\n sameWithSource,\n uiState,\n });\n\n return false;\n };\n\n const confirmClose = () => {\n if (!canClose()) {\n const yes = confirm(beforeUnloadCopy);\n return yes;\n }\n return true;\n };\n\n useEffect(() => {\n // Show warning if user tries to close window with unsaved changes\n const handleBeforeUnload = (e) => {\n if (!canClose()) {\n e.preventDefault();\n e.returnValue = beforeUnloadCopy;\n }\n };\n window.addEventListener('beforeunload', handleBeforeUnload, {\n capture: true,\n });\n return () =>\n window.removeEventListener('beforeunload', handleBeforeUnload, {\n capture: true,\n });\n }, []);\n\n const getCharCount = () => {\n const { value } = textareaRef.current;\n const { value: spoilerText } = spoilerTextRef.current;\n return stringLength(countableText(value)) + stringLength(spoilerText);\n };\n const updateCharCount = () => {\n const count = getCharCount();\n states.composerCharacterCount = count;\n };\n useEffect(updateCharCount, []);\n\n const supportsCloseWatcher = window.CloseWatcher;\n const escDownRef = useRef(false);\n useHotkeys(\n 'esc',\n () => {\n escDownRef.current = true;\n // This won't be true if this event is already handled and not propagated 🤞\n },\n {\n enabled: !supportsCloseWatcher,\n enableOnFormTags: true,\n useKey: true,\n ignoreEventWhen: (e) => e.metaKey || e.ctrlKey || e.altKey || e.shiftKey,\n },\n );\n useHotkeys(\n 'esc',\n () => {\n if (!standalone && escDownRef.current && confirmClose()) {\n onClose();\n }\n escDownRef.current = false;\n },\n {\n enabled: !supportsCloseWatcher,\n enableOnFormTags: true,\n // Use keyup because Esc keydown will close the confirm dialog on Safari\n keyup: true,\n ignoreEventWhen: (e) => {\n const modals = document.querySelectorAll('#modal-container > *');\n const hasModal = !!modals;\n const hasOnlyComposer =\n modals.length === 1 && modals[0].querySelector('#compose-container');\n return (\n (hasModal && !hasOnlyComposer) ||\n e.metaKey ||\n e.ctrlKey ||\n e.altKey ||\n e.shiftKey\n );\n },\n useKey: true,\n },\n );\n useCloseWatcher(() => {\n if (!standalone && confirmClose()) {\n onClose();\n }\n }, []);\n\n const prevBackgroundDraft = useRef({});\n const draftKey = () => {\n const ns = getCurrentAccountNS();\n return `${ns}#${UID.current}`;\n };\n const saveUnsavedDraft = () => {\n // Not enabling this for editing status\n // I don't think this warrant a draft mode for a status that's already posted\n // Maybe it could be a big edit change but it should be rare\n if (editStatus) return;\n if (states.composerState.minimized) return;\n const key = draftKey();\n const backgroundDraft = {\n key,\n replyTo: replyToStatus\n ? {\n /* Smaller payload of replyToStatus. Reasons:\n - No point storing whole thing\n - Could have media attachments\n - Could be deleted/edited later\n */\n id: replyToStatus.id,\n account: {\n id: replyToStatus.account.id,\n username: replyToStatus.account.username,\n acct: replyToStatus.account.acct,\n },\n }\n : null,\n draftStatus: {\n uid: UID.current,\n status: textareaRef.current.value,\n spoilerText: spoilerTextRef.current.value,\n visibility,\n language,\n sensitive,\n sensitiveMedia,\n poll,\n mediaAttachments,\n scheduledAt,\n quoteApprovalPolicy,\n },\n quote: currentQuoteStatus?.id\n ? {\n // Smaller payload, same reason as replyTo\n id: currentQuoteStatus.id,\n }\n : null,\n };\n if (\n !deepEqual(backgroundDraft, prevBackgroundDraft.current) &&\n !canClose()\n ) {\n console.debug('not equal', backgroundDraft, prevBackgroundDraft.current);\n db.drafts\n .set(key, {\n ...backgroundDraft,\n state: 'unsaved',\n updatedAt: Date.now(),\n })\n .then(() => {\n console.debug('DRAFT saved', key, backgroundDraft);\n })\n .catch((e) => {\n console.error('DRAFT failed', key, e);\n });\n prevBackgroundDraft.current = structuredClone(backgroundDraft);\n }\n };\n useInterval(saveUnsavedDraft, 5000); // background save every 5s\n useEffect(() => {\n saveUnsavedDraft();\n // If unmounted, means user discarded the draft\n // Also means pop-out 🙈, but it's okay because the pop-out will persist the ID and re-create the draft\n return () => {\n db.drafts.del(draftKey());\n };\n }, []);\n\n useEffect(() => {\n const handleItems = (e) => {\n // Ignore drops when a sheet is open\n if (document.querySelector('.sheet')) return;\n\n const { items } = e.clipboardData || e.dataTransfer;\n const files = [];\n const unsupportedFiles = [];\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n if (item.kind === 'file') {\n const file = item.getAsFile();\n if (!isMimeTypeSupported(file.type, supportedMimeTypes)) {\n unsupportedFiles.push(file);\n } else {\n files.push(file);\n }\n }\n }\n if (unsupportedFiles.length > 0) {\n alert(\n plural(unsupportedFiles.length, {\n one: `File ${unsupportedFiles[0].name} is not supported.`,\n other: `Files ${lf.format(\n unsupportedFiles.map((f) => f.name),\n )} are not supported.`,\n }),\n );\n }\n if (files.length > 0 && mediaAttachments.length >= maxMediaAttachments) {\n alert(\n plural(maxMediaAttachments, {\n one: 'You can only attach up to 1 file.',\n other: 'You can only attach up to # files.',\n }),\n );\n return;\n }\n console.log({ files });\n if (files.length > 0) {\n e.preventDefault();\n e.stopPropagation();\n // Auto-cut-off files to avoid exceeding maxMediaAttachments\n let allowedFiles = files;\n if (maxMediaAttachments !== undefined) {\n const max = maxMediaAttachments - mediaAttachments.length;\n allowedFiles = allowedFiles.slice(0, max);\n if (allowedFiles.length <= 0) {\n alert(\n plural(maxMediaAttachments, {\n one: 'You can only attach up to 1 file.',\n other: 'You can only attach up to # files.',\n }),\n );\n return;\n }\n }\n const mediaFiles = allowedFiles.map((file) => ({\n file,\n type: file.type,\n size: file.size,\n url: URL.createObjectURL(file),\n id: null,\n description: null,\n }));\n setMediaAttachments([...mediaAttachments, ...mediaFiles]);\n }\n };\n window.addEventListener('paste', handleItems);\n const handleDragover = (e) => {\n // Prevent default if there's files\n if (e.dataTransfer.items.length > 0) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n window.addEventListener('dragover', handleDragover);\n window.addEventListener('drop', handleItems);\n return () => {\n window.removeEventListener('paste', handleItems);\n window.removeEventListener('dragover', handleDragover);\n window.removeEventListener('drop', handleItems);\n };\n }, [mediaAttachments]);\n\n const [showMentionPicker, setShowMentionPicker] = useState(false);\n const [showEmoji2Picker, setShowEmoji2Picker] = useState(false);\n const [showGIFPicker, setShowGIFPicker] = useState(false);\n\n const [autoDetectedLanguages, setAutoDetectedLanguages] = useState(null);\n const [topSupportedLanguages, restSupportedLanguages] = useMemo(() => {\n const topLanguages = [];\n const restLanguages = [];\n const { contentTranslationHideLanguages = [] } = states.settings;\n supportedLanguages.forEach((l) => {\n const [code] = l;\n if (\n code === language ||\n code === prevLanguage.current ||\n code === DEFAULT_LANG ||\n contentTranslationHideLanguages.includes(code) ||\n (autoDetectedLanguages?.length && autoDetectedLanguages.includes(code))\n ) {\n topLanguages.push(l);\n } else {\n restLanguages.push(l);\n }\n });\n topLanguages.sort(([codeA, commonA], [codeB, commonB]) => {\n if (codeA === language) return -1;\n if (codeB === language) return 1;\n return commonA.localeCompare(commonB);\n });\n restLanguages.sort(([codeA, commonA], [codeB, commonB]) =>\n commonA.localeCompare(commonB),\n );\n return [topLanguages, restLanguages];\n }, [language, autoDetectedLanguages]);\n\n const replyToStatusMonthsAgo = useMemo(\n () =>\n !!replyToStatus?.createdAt &&\n Math.floor(\n (Date.now() - Date.parse(replyToStatus.createdAt)) /\n (1000 * 60 * 60 * 24 * 30),\n ),\n [replyToStatus],\n );\n\n const onMinimize = () => {\n saveUnsavedDraft();\n states.composerState.minimized = true;\n };\n\n const mediaButtonDisabled =\n uiState === 'loading' ||\n (maxMediaAttachments !== undefined &&\n mediaAttachments.length >= maxMediaAttachments) ||\n !!poll; /* ||\n !!currentQuoteStatus?.id; */\n\n const cwButtonDisabled = uiState === 'loading' || !!sensitive;\n const onCWButtonClick = () => {\n setSensitive(true);\n setTimeout(() => {\n spoilerTextRef.current?.focus();\n }, 0);\n };\n\n // If maxOptions is not defined or defined and is greater than 1, show poll button\n const showPollButton = maxOptions == null || maxOptions > 1;\n const pollButtonDisabled =\n uiState === 'loading' || !!poll || !!mediaAttachments.length; /* ||\n !!currentQuoteStatus?.id; */\n const onPollButtonClick = () => {\n setPoll({\n options: ['', ''],\n expiresIn: 24 * 60 * 60, // 1 day\n multiple: false,\n });\n // Focus first choice field\n setTimeout(() => {\n composeContainerRef.current\n ?.querySelector('.poll-choice input[type=\"text\"]')\n ?.focus();\n }, 0);\n };\n\n const highlightLanguageField =\n language !== prevLanguage.current ||\n (autoDetectedLanguages?.length &&\n !autoDetectedLanguages.includes(language));\n const highlightVisibilityField = visibility !== 'public';\n\n const highlightQuoteApprovalPolicyField = quoteApprovalPolicy !== 'public';\n const disableQuotePolicy =\n visibility === 'private' || visibility === 'direct';\n\n const addSubToolbarRef = useRef();\n const [showAddButton, setShowAddButton] = useState(true);\n const BUTTON_WIDTH = 42; // roughly one button width\n useThrottledResizeObserver({\n ref: addSubToolbarRef,\n box: 'border-box',\n onResize: ({ width }) => {\n // If scrollable, it's truncated\n const { scrollWidth } = addSubToolbarRef.current;\n const truncated = scrollWidth > width;\n const overTruncated = width < BUTTON_WIDTH * 4;\n setShowAddButton(overTruncated || truncated);\n addSubToolbarRef.current.hidden = overTruncated;\n },\n });\n\n const showScheduledAt = !editStatus;\n const scheduledAtButtonDisabled = uiState === 'loading' || !!scheduledAt;\n const onScheduledAtClick = () => {\n const date = new Date(Date.now() + DEFAULT_SCHEDULED_AT);\n setScheduledAt(date);\n };\n\n return (\n <div id=\"compose-container-outer\" ref={composeContainerRef}>\n <div\n id=\"compose-container\"\n tabIndex={-1}\n class={standalone ? 'standalone' : ''}\n >\n <div class=\"compose-top\">\n {currentAccountInfo?.avatarStatic && (\n // <Avatar\n // url={currentAccountInfo.avatarStatic}\n // size=\"xl\"\n // alt={currentAccountInfo.username}\n // squircle={currentAccountInfo?.bot}\n // />\n <AccountBlock\n account={currentAccountInfo}\n accountInstance={currentAccount.instanceURL}\n hideDisplayName\n useAvatarStatic\n />\n )}\n {!standalone ? (\n <span class=\"compose-controls\">\n <button\n type=\"button\"\n class=\"plain4 pop-button\"\n disabled={uiState === 'loading'}\n onClick={() => {\n // If there are non-ID media attachments (not yet uploaded), show confirmation dialog because they are not going to be passed to the new window\n // const containNonIDMediaAttachments =\n // mediaAttachments.length > 0 &&\n // mediaAttachments.some((media) => !media.id);\n // if (containNonIDMediaAttachments) {\n // const yes = confirm(\n // 'You have media attachments that are not yet uploaded. Opening a new window will discard them and you will need to re-attach them. Are you sure you want to continue?',\n // );\n // if (!yes) {\n // return;\n // }\n // }\n\n // const mediaAttachmentsWithIDs = mediaAttachments.filter(\n // (media) => media.id,\n // );\n\n const newWin = openCompose({\n editStatus,\n replyToStatus,\n draftStatus: {\n uid: UID.current,\n status: textareaRef.current.value,\n spoilerText: spoilerTextRef.current.value,\n visibility,\n language,\n sensitive,\n poll,\n mediaAttachments,\n scheduledAt,\n },\n quoteStatus: currentQuoteStatus,\n });\n\n if (!newWin) {\n return;\n }\n\n onClose();\n }}\n >\n <Icon icon=\"popout\" alt={t`Pop out`} />\n </button>\n <button\n type=\"button\"\n class=\"plain4 min-button\"\n onClick={onMinimize}\n >\n <Icon icon=\"minimize\" alt={t`Minimize`} />\n </button>{' '}\n <button\n type=\"button\"\n class=\"plain4 close-button\"\n disabled={uiState === 'loading'}\n onClick={() => {\n if (confirmClose()) {\n onClose();\n }\n }}\n >\n <Icon icon=\"x\" alt={t`Close`} />\n </button>\n </span>\n ) : (\n hasOpener && (\n <button\n type=\"button\"\n class=\"light pop-button\"\n disabled={uiState === 'loading'}\n onClick={() => {\n // If there are non-ID media attachments (not yet uploaded), show confirmation dialog because they are not going to be passed to the new window\n // const containNonIDMediaAttachments =\n // mediaAttachments.length > 0 &&\n // mediaAttachments.some((media) => !media.id);\n // if (containNonIDMediaAttachments) {\n // const yes = confirm(\n // 'You have media attachments that are not yet uploaded. Opening a new window will discard them and you will need to re-attach them. Are you sure you want to continue?',\n // );\n // if (!yes) {\n // return;\n // }\n // }\n\n if (!window.opener) {\n alert(t`Looks like you closed the parent window.`);\n return;\n }\n\n if (window.opener.__STATES__.showCompose) {\n if (window.opener.__STATES__.composerState?.publishing) {\n alert(\n t`Looks like you already have a compose field open in the parent window and currently publishing. Please wait for it to be done and try again later.`,\n );\n return;\n }\n\n let confirmText = t`Looks like you already have a compose field open in the parent window. Popping in this window will discard the changes you made in the parent window. Continue?`;\n const yes = confirm(confirmText);\n if (!yes) return;\n }\n\n // const mediaAttachmentsWithIDs = mediaAttachments.filter(\n // (media) => media.id,\n // );\n\n onClose({\n fn: () => {\n const passData = {\n editStatus,\n replyToStatus,\n replyMode,\n draftStatus: {\n uid: UID.current,\n status: textareaRef.current.value,\n spoilerText: spoilerTextRef.current.value,\n visibility,\n language,\n sensitive,\n sensitiveMedia,\n poll,\n mediaAttachments,\n scheduledAt,\n },\n quoteStatus: currentQuoteStatus,\n };\n window.opener.__COMPOSE__ = passData; // Pass it here instead of `showCompose` due to some weird proxy issue again\n if (window.opener.__STATES__.showCompose) {\n window.opener.__STATES__.showCompose = false;\n setTimeout(() => {\n window.opener.__STATES__.showCompose = true;\n }, 10);\n } else {\n window.opener.__STATES__.showCompose = true;\n }\n if (window.opener.__STATES__.composerState.minimized) {\n // Maximize it\n window.opener.__STATES__.composerState.minimized = false;\n }\n },\n });\n }}\n >\n <Icon icon=\"popin\" alt={t`Pop in`} />\n </button>\n )\n )}\n </div>\n {!!replyToStatus && (\n <details class=\"status-preview\" open>\n <Status status={replyToStatus} size=\"s\" previewMode />\n <summary class=\"status-preview-legend reply-to\">\n {replyToStatusMonthsAgo > 0 ? (\n <Trans>\n Replying to @\n {replyToStatus.account.acct || replyToStatus.account.username}\n ’s post (\n <strong>\n {rtf.format(-replyToStatusMonthsAgo, 'month')}\n </strong>\n )\n </Trans>\n ) : (\n <Trans>\n Replying to @\n {replyToStatus.account.acct || replyToStatus.account.username}\n ’s post\n </Trans>\n )}\n </summary>\n </details>\n )}\n {!!editStatus && (\n <details class=\"status-preview\">\n <Status status={editStatus} size=\"s\" previewMode />\n <summary class=\"status-preview-legend\">\n <Trans>Editing source post</Trans>\n </summary>\n </details>\n )}\n <form\n ref={formRef}\n class={`form-visibility-${visibility}`}\n style={{\n pointerEvents: uiState === 'loading' ? 'none' : 'auto',\n opacity: uiState === 'loading' ? 0.5 : 1,\n }}\n onClick={() => {\n setTimeout(() => {\n if (!document.activeElement) {\n lastFocusedFieldRef.current?.focus?.();\n }\n }, 10);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' && (e.ctrlKey || e.metaKey)) {\n formRef.current.dispatchEvent(\n new Event('submit', { cancelable: true }),\n );\n }\n }}\n onSubmit={(e) => {\n e.preventDefault();\n\n const formData = new FormData(e.target);\n const entries = Object.fromEntries(formData.entries());\n console.log('ENTRIES', entries);\n let {\n status,\n visibility,\n sensitive,\n sensitiveMedia,\n spoilerText,\n scheduledAt,\n quoteApprovalPolicy,\n } = entries;\n\n // Pre-cleanup\n // checkboxes return \"on\" if checked\n sensitive = sensitive === 'on';\n sensitiveMedia = sensitiveMedia === 'on';\n\n // Convert datetime-local input value to RFC3339 Date string value\n scheduledAt = scheduledAt\n ? new Date(scheduledAt).toISOString()\n : undefined;\n\n // Validation\n /* Let the backend validate this\n if (stringLength(status) > maxCharacters) {\n alert(`Status is too long! Max characters: ${maxCharacters}`);\n return;\n }\n if (\n sensitive &&\n stringLength(status) + stringLength(spoilerText) > maxCharacters\n ) {\n alert(\n `Status and content warning is too long! Max characters: ${maxCharacters}`,\n );\n return;\n }\n */\n if (poll) {\n if (poll.options.length < 2) {\n alert(t`Poll must have at least 2 options`);\n return;\n }\n if (poll.options.some((option) => option === '')) {\n alert(t`Some poll choices are empty`);\n return;\n }\n }\n // TODO: check for URLs and use `charactersReservedPerUrl` to calculate max characters\n\n if (mediaAttachments.length > 0) {\n // If there are media attachments, check if they have no descriptions\n const hasNoDescriptions = mediaAttachments.some(\n (media) => !media.description?.trim?.(),\n );\n if (hasNoDescriptions) {\n const yes = confirm(\n t`Some media have no descriptions. Continue?`,\n );\n if (!yes) return;\n }\n }\n\n // Post-cleanup\n spoilerText = (sensitive && spoilerText) || undefined;\n status = status === '' ? undefined : status;\n\n // states.composerState.minimized = true;\n states.composerState.publishing = true;\n setUIState('loading');\n (async () => {\n try {\n console.log('MEDIA ATTACHMENTS', mediaAttachments);\n if (mediaAttachments.length > 0) {\n // Upload media attachments first\n const mediaPromises = mediaAttachments.map((attachment) => {\n const { file, description, id } = attachment;\n console.log('UPLOADING', attachment);\n if (id) {\n // If already uploaded\n return attachment;\n } else {\n const params = removeNullUndefined({\n file,\n description,\n });\n return masto.v2.media.create(params).then((res) => {\n if (res.id) {\n attachment.id = res.id;\n }\n return res;\n });\n }\n });\n const results = await Promise.allSettled(mediaPromises);\n\n // If any failed, return\n if (\n results.some((result) => {\n return result.status === 'rejected' || !result.value?.id;\n })\n ) {\n states.composerState.publishing = false;\n states.composerState.publishingError = true;\n setUIState('error');\n // Alert all the reasons\n results.forEach((result) => {\n if (result.status === 'rejected') {\n console.error(result);\n alert(result.reason || t`Attachment #${i} failed`);\n }\n });\n return;\n }\n\n console.log({ results, mediaAttachments });\n }\n\n /* NOTE:\n Using snakecase here because masto.js's `isObject` returns false for `params`, ONLY happens when opening in pop-out window. This is maybe due to `window.masto` variable being passed from the parent window. The check that failed is `x.constructor === Object`, so maybe the `Object` in new window is different than parent window's?\n Code: https://github.com/neet/masto.js/blob/dd0d649067b6a2b6e60fbb0a96597c373a255b00/src/serializers/is-object.ts#L2\n\n // TODO: Note above is no longer true in Masto.js v6. Revisit this.\n */\n let params = {\n status,\n // spoilerText,\n spoiler_text: spoilerText,\n language,\n sensitive: sensitive || sensitiveMedia,\n poll,\n // mediaIds: mediaAttachments.map((attachment) => attachment.id),\n media_ids: mediaAttachments.map(\n (attachment) => attachment.id,\n ),\n };\n if (editStatus) {\n if (supportsNativeQuote()) {\n params.quote_approval_policy = quoteApprovalPolicy;\n }\n if (\n supports('@mastodon') ||\n supports('@gotosocial/edit-media-attributes')\n ) {\n params.media_attributes = mediaAttachments.map(\n (attachment) => {\n return {\n id: attachment.id,\n description: attachment.description,\n // focus\n // thumbnail\n };\n },\n );\n }\n } else {\n if (supportsNativeQuote() && currentQuoteStatus?.id) {\n params.quoted_status_id = currentQuoteStatus.id;\n params.quote_approval_policy = quoteApprovalPolicy;\n }\n params.visibility = visibility;\n // params.inReplyToId = replyToStatus?.id || undefined;\n params.in_reply_to_id = replyToStatus?.id || undefined;\n params.scheduled_at = scheduledAt;\n }\n params = removeNullUndefined(params);\n console.log('POST', params);\n\n let newStatus;\n if (editStatus) {\n newStatus = await masto.v1.statuses\n .$select(editStatus.id)\n .update(params);\n saveStatus(newStatus, instance, {\n skipThreading: true,\n });\n } else {\n try {\n newStatus = await masto.v1.statuses.create(params, {\n requestInit: {\n headers: {\n 'Idempotency-Key': UID.current,\n },\n },\n });\n } catch (_) {\n // If idempotency key fails, try again without it\n newStatus = await masto.v1.statuses.create(params);\n }\n }\n states.composerState.minimized = false;\n states.composerState.publishing = false;\n setUIState('default');\n\n // Close\n onClose({\n // type: post, reply, edit\n type: editStatus ? 'edit' : replyToStatus ? 'reply' : 'post',\n newStatus,\n instance,\n scheduledAt,\n });\n } catch (e) {\n states.composerState.publishing = false;\n states.composerState.publishingError = true;\n console.error(e);\n alert(e?.reason || e);\n setUIState('error');\n }\n })();\n }}\n >\n <div>\n <div class={`compose-cw-container ${sensitive ? '' : 'collapsed'}`}>\n <input\n type=\"hidden\"\n name=\"sensitive\"\n value={sensitive ? 'on' : 'off'}\n />\n {/* mimic the old checkbox */}\n <TextExpander\n keys=\":\"\n class=\"spoiler-text-field-container\"\n onTrigger={(action) => {\n if (action?.name === 'custom-emojis') {\n setShowEmoji2Picker({\n targetElement: spoilerTextRef,\n defaultSearchTerm: action?.defaultSearchTerm || null,\n });\n }\n }}\n >\n <input\n ref={spoilerTextRef}\n type=\"text\"\n name=\"spoilerText\"\n placeholder={t`Content warning`}\n data-allow-custom-emoji=\"true\"\n disabled={uiState === 'loading'}\n class=\"spoiler-text-field\"\n lang={language}\n spellCheck=\"true\"\n autocomplete=\"off\"\n dir=\"auto\"\n onInput={() => {\n updateCharCount();\n }}\n />\n </TextExpander>\n <button\n type=\"button\"\n class=\"close-button plain4 small\"\n onClick={() => {\n setSensitive(false);\n textareaRef.current.focus();\n }}\n >\n <Icon icon=\"x\" alt={t`Cancel`} />\n </button>\n </div>\n <Textarea\n ref={textareaRef}\n data-allow-custom-emoji=\"true\"\n placeholder={\n replyToStatus\n ? t`Post your reply`\n : editStatus\n ? t`Edit your post`\n : !!poll\n ? t`Ask a question`\n : t`What are you doing?`\n }\n required={mediaAttachments?.length === 0}\n disabled={uiState === 'loading'}\n lang={language}\n onInput={() => {\n updateCharCount();\n }}\n maxCharacters={maxCharacters}\n onTrigger={(action) => {\n if (action?.name === 'custom-emojis') {\n setShowEmoji2Picker({\n targetElement: lastFocusedEmojiFieldRef,\n defaultSearchTerm: action?.defaultSearchTerm || null,\n });\n } else if (action?.name === 'mention') {\n setShowMentionPicker({\n defaultSearchTerm: action?.defaultSearchTerm || null,\n });\n } else if (\n action?.name === 'auto-detect-language' &&\n action?.languages\n ) {\n setAutoDetectedLanguages(action.languages);\n } else if (action?.name === 'pasted-link' && action?.url) {\n handlePastedLink(action.url);\n }\n }}\n />\n </div>\n {mediaAttachments?.length > 0 && (\n <div class=\"media-attachments\">\n {mediaAttachments.map((attachment, i) => {\n const { id, file } = attachment;\n const fileID = file?.size + file?.type + file?.name;\n return (\n <MediaAttachment\n key={id || fileID || i}\n attachment={attachment}\n disabled={uiState === 'loading'}\n lang={language}\n supportedMimeTypes={supportedMimeTypes}\n descriptionLimit={descriptionLimit}\n onDescriptionChange={(value) => {\n setMediaAttachments((attachments) => {\n const newAttachments = [...attachments];\n newAttachments[i] = {\n ...newAttachments[i],\n description: value,\n };\n return newAttachments;\n });\n }}\n onRemove={() => {\n setMediaAttachments((attachments) => {\n return attachments.filter((_, j) => j !== i);\n });\n }}\n />\n );\n })}\n <label class=\"media-sensitive\">\n <input\n name=\"sensitiveMedia\"\n type=\"checkbox\"\n checked={sensitiveMedia}\n disabled={uiState === 'loading'}\n onChange={(e) => {\n const sensitiveMedia = e.target.checked;\n setSensitiveMedia(sensitiveMedia);\n }}\n />{' '}\n <span>\n <Trans>Mark media as sensitive</Trans>\n </span>{' '}\n <Icon icon={`eye-${sensitiveMedia ? 'close' : 'open'}`} />\n </label>\n </div>\n )}\n {!!poll && (\n <ComposePoll\n lang={language}\n maxOptions={maxOptions}\n maxExpiration={maxExpiration}\n minExpiration={minExpiration}\n maxCharactersPerOption={maxCharactersPerOption}\n poll={poll}\n disabled={uiState === 'loading'}\n onInput={(poll) => {\n if (poll) {\n const newPoll = { ...poll };\n setPoll(newPoll);\n } else {\n setPoll(null);\n focusLastFocusedField();\n }\n }}\n />\n )}\n {!!currentQuoteStatus?.id && (\n <div class=\"quote-status\">\n <Status\n status={currentQuoteStatus}\n instance={instance}\n size=\"s\"\n readOnly\n />\n </div>\n )}\n {scheduledAt && (\n <div class=\"toolbar scheduled-at\">\n <span>\n <label>\n <Trans>\n Posting on{' '}\n <ScheduledAtField\n scheduledAt={scheduledAt}\n setScheduledAt={setScheduledAt}\n />\n </Trans>\n </label>{' '}\n <small class=\"tag insignificant\">\n {getLocalTimezoneName()}\n </small>\n </span>\n <button\n type=\"button\"\n class=\"plain4 close-button small\"\n onClick={() => {\n setScheduledAt(null);\n focusLastFocusedField();\n }}\n >\n <Icon icon=\"x\" alt={t`Cancel`} />\n </button>\n </div>\n )}\n <QuoteSuggestion\n quoteSuggestion={quoteSuggestion}\n hasCurrentQuoteStatus={!!currentQuoteStatus?.id}\n onAccept={() => {\n const { status } = quoteSuggestion;\n\n // Remove the pasted link from textarea\n const currentValue = textareaRef.current?.value || '';\n // Find pasted link nearest to last cursor position\n const lastCursorPos = textareaRef.current?.selectionStart || 0;\n const pastedLinkPos = currentValue.lastIndexOf(\n quoteSuggestion.url,\n lastCursorPos,\n );\n const newValue =\n currentValue.slice(0, pastedLinkPos) +\n currentValue.slice(pastedLinkPos + quoteSuggestion.url.length);\n if (textareaRef.current) {\n textareaRef.current.value = newValue;\n textareaRef.current.dispatchEvent(new Event('input'));\n }\n\n const hasCurrentQuote = !!currentQuoteStatus?.id;\n if (hasCurrentQuote) {\n // If there's already a quote, replacement doesn't need transition\n setQuoteSuggestion(null);\n setLocalQuoteStatus(status);\n } else {\n // Transition the unfurled quote to the quote preview\n if (document.startViewTransition) {\n document.startViewTransition(() => {\n setQuoteSuggestion(null);\n setLocalQuoteStatus(status);\n });\n } else {\n setQuoteSuggestion(null);\n setLocalQuoteStatus(status);\n }\n }\n focusTextarea();\n }}\n onCancel={() => setQuoteSuggestion(null)}\n />\n <div class=\"toolbar compose-footer\">\n <span class=\"add-toolbar-button-group spacer\">\n {showAddButton && (\n <Menu2\n portal={{\n target: document.body,\n }}\n containerProps={{\n style: {\n zIndex: 1001,\n },\n }}\n menuButton={({ open }) => (\n <button\n type=\"button\"\n class={`toolbar-button add-button ${\n open ? 'active' : ''\n }`}\n >\n <Icon icon=\"plus\" title={t`Add`} />\n </button>\n )}\n >\n {supportsCameraCapture && (\n <MenuItem\n disabled={mediaButtonDisabled}\n className=\"compose-menu-add-media\"\n >\n <label class=\"compose-menu-add-media-field\">\n <CameraCaptureInput\n hidden\n supportedMimeTypes={supportedImagesVideosTypes}\n disabled={mediaButtonDisabled}\n setMediaAttachments={setMediaAttachments}\n />\n </label>\n <Icon icon=\"camera\" /> <span>{_(ADD_LABELS.camera)}</span>\n </MenuItem>\n )}\n <MenuItem\n disabled={mediaButtonDisabled}\n className=\"compose-menu-add-media\"\n >\n <label class=\"compose-menu-add-media-field\">\n <FilePickerInput\n hidden\n supportedMimeTypes={supportedMimeTypes}\n maxMediaAttachments={maxMediaAttachments}\n mediaAttachments={mediaAttachments}\n disabled={mediaButtonDisabled}\n setMediaAttachments={setMediaAttachments}\n />\n </label>\n <Icon icon=\"media\" /> <span>{_(ADD_LABELS.media)}</span>\n </MenuItem>\n <MenuItem\n disabled={cwButtonDisabled}\n onClick={onCWButtonClick}\n >\n <Icon icon={`eye-${sensitive ? 'close' : 'open'}`} />{' '}\n <span>{_(ADD_LABELS.sensitive)}</span>\n </MenuItem>\n {showPollButton && (\n <MenuItem\n disabled={pollButtonDisabled}\n onClick={onPollButtonClick}\n >\n <Icon icon=\"poll\" /> <span>{_(ADD_LABELS.poll)}</span>\n </MenuItem>\n )}\n <MenuDivider />\n <MenuItem\n onClick={() => {\n setShowEmoji2Picker({\n targetElement: lastFocusedEmojiFieldRef,\n });\n }}\n >\n <Icon icon=\"emoji2\" />{' '}\n <span>{_(ADD_LABELS.customEmoji)}</span>\n </MenuItem>\n {!!states.settings.composerGIFPicker && (\n <MenuItem\n disabled={mediaButtonDisabled}\n onClick={() => {\n setShowGIFPicker(true);\n }}\n >\n <span class=\"icon icon-gif\" role=\"img\" />\n <span>{_(ADD_LABELS.gif)}</span>\n </MenuItem>\n )}\n {showScheduledAt && (\n <>\n <MenuDivider />\n <MenuItem\n disabled={scheduledAtButtonDisabled}\n onClick={onScheduledAtClick}\n >\n <Icon icon=\"schedule\" />{' '}\n <span>{_(ADD_LABELS.scheduledPost)}</span>\n </MenuItem>\n </>\n )}\n </Menu2>\n )}\n <span\n class=\"add-sub-toolbar-button-group\"\n ref={addSubToolbarRef}\n hidden\n >\n {supportsCameraCapture && (\n <label class=\"toolbar-button\">\n <CameraCaptureInput\n supportedMimeTypes={supportedImagesVideosTypes}\n mediaAttachments={mediaAttachments}\n disabled={mediaButtonDisabled}\n setMediaAttachments={setMediaAttachments}\n />\n <Icon icon=\"camera\" alt={_(ADD_LABELS.camera)} />\n </label>\n )}\n <label class=\"toolbar-button\">\n <FilePickerInput\n supportedMimeTypes={supportedMimeTypes}\n maxMediaAttachments={maxMediaAttachments}\n mediaAttachments={mediaAttachments}\n disabled={mediaButtonDisabled}\n setMediaAttachments={setMediaAttachments}\n />\n <Icon icon=\"media\" alt={_(ADD_LABELS.media)} />\n </label>\n <button\n type=\"button\"\n class=\"toolbar-button\"\n disabled={cwButtonDisabled}\n onClick={onCWButtonClick}\n >\n <Icon\n icon={`eye-${sensitive ? 'close' : 'open'}`}\n alt={_(ADD_LABELS.sensitive)}\n />\n </button>\n {showPollButton && (\n <button\n type=\"button\"\n class=\"toolbar-button\"\n disabled={pollButtonDisabled}\n onClick={onPollButtonClick}\n >\n <Icon icon=\"poll\" alt={_(ADD_LABELS.poll)} />\n </button>\n )}\n <div class=\"toolbar-divider\" />\n {/* <button\n type=\"button\"\n class=\"toolbar-button\"\n disabled={uiState === 'loading'}\n onClick={() => {\n setShowMentionPicker(true);\n }}\n >\n <Icon icon=\"at\" />\n </button> */}\n <button\n type=\"button\"\n class=\"toolbar-button\"\n disabled={uiState === 'loading'}\n onClick={() => {\n setShowEmoji2Picker({\n targetElement: lastFocusedEmojiFieldRef,\n });\n }}\n >\n <Icon icon=\"emoji2\" alt={_(ADD_LABELS.customEmoji)} />\n </button>\n {!!states.settings.composerGIFPicker && (\n <button\n type=\"button\"\n class=\"toolbar-button gif-picker-button\"\n disabled={mediaButtonDisabled}\n onClick={() => {\n setShowGIFPicker(true);\n }}\n >\n <span\n class=\"icon icon-gif\"\n aria-label={_(ADD_LABELS.gif)}\n />\n </button>\n )}\n {showScheduledAt && (\n <>\n <div class=\"toolbar-divider\" />\n <button\n type=\"button\"\n class={`toolbar-button ${scheduledAt ? 'highlight' : ''}`}\n disabled={scheduledAtButtonDisabled}\n onClick={onScheduledAtClick}\n >\n <Icon icon=\"schedule\" alt={_(ADD_LABELS.scheduledPost)} />\n </button>\n </>\n )}\n </span>\n </span>\n {uiState === 'loading' ? (\n <Loader abrupt />\n ) : (\n <CharCountMeter\n maxCharacters={maxCharacters}\n hidden={uiState === 'loading'}\n />\n )}\n {supportsNativeQuote() && (\n <label\n class={`toolbar-button ${highlightQuoteApprovalPolicyField ? 'highlight' : ''}`}\n >\n <Icon icon=\"quote2\" alt=\"Quote settings\" />\n {quoteApprovalPolicy === 'followers' && (\n <Icon icon=\"group\" class=\"insignificant\" />\n )}\n {quoteApprovalPolicy === 'nobody' && (\n <Icon icon=\"block\" class=\"insignificant\" />\n )}\n <select\n name=\"quoteApprovalPolicy\"\n value={quoteApprovalPolicy}\n onChange={(e) => {\n setQuoteApprovalPolicy(e.target.value);\n }}\n disabled={uiState === 'loading'}\n dir=\"auto\"\n >\n <option value=\"public\" disabled={disableQuotePolicy}>\n <Trans>Anyone can quote</Trans>\n </option>\n <option value=\"followers\" disabled={disableQuotePolicy}>\n <Trans>Your followers can quote</Trans>\n </option>\n <option value=\"nobody\">\n <Trans>Only you can quote</Trans>\n </option>\n </select>\n </label>\n )}\n <label\n class={`toolbar-button ${highlightVisibilityField ? 'highlight' : ''}`}\n title={_(visibilityText[visibility])}\n >\n {visibility === 'public' || visibility === 'direct' ? (\n <Icon\n icon={visibilityIconsMap[visibility]}\n alt={_(visibilityText[visibility])}\n />\n ) : (\n <span class=\"icon-text\">{_(visibilityText[visibility])}</span>\n )}\n <select\n name=\"visibility\"\n value={visibility}\n onChange={(e) => {\n setVisibility(e.target.value);\n if (\n e.target.value === 'private' ||\n e.target.value === 'direct'\n ) {\n setQuoteApprovalPolicy('nobody');\n }\n\n if (e.target.value === 'direct' && currentQuoteStatus?.id) {\n const quoteURL = currentQuoteStatus.url;\n if (quoteURL) {\n const currentText = textareaRef.current.value;\n if (!currentText.includes(quoteURL)) {\n textareaRef.current.value =\n currentText + (currentText ? '\\n' : '') + quoteURL;\n oninputTextarea();\n }\n }\n setQuoteCleared(true);\n showToast(t`Quotes can't be embedded in private mentions.`);\n } else if (e.target.value !== 'direct' && quoteCleared) {\n const quoteURL = (localQuoteStatus || quoteStatus)?.url;\n if (quoteURL && textareaRef.current) {\n const currentValue = textareaRef.current.value;\n const linkPos = currentValue.indexOf(quoteURL);\n if (linkPos !== -1) {\n let newValue =\n currentValue.slice(0, linkPos) +\n currentValue.slice(linkPos + quoteURL.length);\n newValue = newValue.replace(/\\n+$/, '');\n textareaRef.current.value = newValue;\n oninputTextarea();\n }\n }\n setQuoteCleared(false);\n }\n }}\n disabled={uiState === 'loading' || !!editStatus}\n dir=\"auto\"\n >\n <option value=\"public\">\n <Trans>Public</Trans>\n </option>\n {(supports('@pleroma/local-visibility-post') ||\n supports('@akkoma/local-visibility-post')) && (\n <option value=\"local\">\n <Trans>Local</Trans>\n </option>\n )}\n <option value=\"unlisted\">\n <Trans>Quiet public</Trans>\n </option>\n <option value=\"private\">\n <Trans>Followers</Trans>\n </option>\n <option value=\"direct\">\n <Trans>Private mention</Trans>\n </option>\n </select>\n </label>{' '}\n <label\n class={`toolbar-button ${\n highlightLanguageField ? 'highlight' : ''\n }`}\n >\n <span class=\"icon-text\">\n {supportedLanguagesMap[language]?.native}\n </span>\n <select\n name=\"language\"\n value={language}\n onChange={(e) => {\n const { value } = e.target;\n setLanguage(value || DEFAULT_LANG);\n store.session.set('currentLanguage', value || DEFAULT_LANG);\n }}\n disabled={uiState === 'loading'}\n dir=\"auto\"\n >\n {topSupportedLanguages.map(([code, common, native]) => {\n const commonText = localeCode2Text({\n code,\n fallback: common,\n });\n const showCommon = commonText !== native;\n return (\n <option value={code} key={code}>\n {showCommon ? `${native} - ${commonText}` : commonText}\n </option>\n );\n })}\n <hr />\n {restSupportedLanguages.map(([code, common, native]) => {\n const commonText = localeCode2Text({\n code,\n fallback: common,\n });\n const showCommon = commonText !== native;\n return (\n <option value={code} key={code}>\n {showCommon ? `${native} - ${commonText}` : commonText}\n </option>\n );\n })}\n </select>\n </label>{' '}\n <button type=\"submit\" disabled={uiState === 'loading'}>\n {scheduledAt\n ? t`Schedule`\n : replyToStatus\n ? t`Reply`\n : editStatus\n ? t`Update`\n : t({\n message: 'Post',\n context: 'Submit button in composer',\n })}\n </button>\n </div>\n </form>\n </div>\n {showMentionPicker && (\n <Modal\n onClose={() => {\n setShowMentionPicker(false);\n focusLastFocusedField();\n }}\n >\n <MentionModal\n masto={masto}\n instance={instance}\n onClose={() => {\n setShowMentionPicker(false);\n }}\n defaultSearchTerm={showMentionPicker?.defaultSearchTerm}\n onSelect={(socialAddress) => {\n const textarea = textareaRef.current;\n if (textarea) {\n insertTextAtCursor({\n targetElement: textarea,\n text: '@' + socialAddress,\n });\n }\n }}\n />\n </Modal>\n )}\n {showEmoji2Picker && (\n <Modal\n onClose={() => {\n setShowEmoji2Picker(false);\n focusLastFocusedField();\n }}\n >\n <CustomEmojisModal\n masto={masto}\n instance={instance}\n onClose={() => {\n setShowEmoji2Picker(false);\n }}\n defaultSearchTerm={showEmoji2Picker?.defaultSearchTerm}\n onSelect={(emojiShortcode) => {\n const targetElement =\n showEmoji2Picker?.targetElement?.current || textareaRef.current;\n if (targetElement) {\n insertTextAtCursor({ targetElement, text: emojiShortcode });\n }\n }}\n />\n </Modal>\n )}\n {showGIFPicker && (\n <Modal\n onClose={() => {\n setShowGIFPicker(false);\n focusLastFocusedField();\n }}\n >\n <GIFPickerModal\n onClose={() => setShowGIFPicker(false)}\n onSelect={({ url, type, alt_text }) => {\n console.log('GIF URL', url);\n if (mediaAttachments.length >= maxMediaAttachments) {\n alert(\n plural(maxMediaAttachments, {\n one: 'You can only attach up to 1 file.',\n other: 'You can only attach up to # files.',\n }),\n );\n return;\n }\n // Download the GIF and insert it as media attachment\n (async () => {\n let theToast;\n try {\n theToast = showToast({\n text: t`Downloading GIF…`,\n duration: -1,\n });\n const blob = await fetch(url, {\n referrerPolicy: 'no-referrer',\n }).then((res) => res.blob());\n const file = new File(\n [blob],\n type === 'video/mp4' ? 'video.mp4' : 'image.gif',\n {\n type,\n },\n );\n const newMediaAttachments = [\n ...mediaAttachments,\n {\n file,\n type,\n size: file.size,\n id: null,\n description: alt_text || '',\n },\n ];\n setMediaAttachments(newMediaAttachments);\n theToast?.hideToast?.();\n } catch (err) {\n console.error(err);\n theToast?.hideToast?.();\n showToast(t`Failed to download GIF`);\n }\n })();\n }}\n />\n </Modal>\n )}\n </div>\n );\n}\n\nfunction removeNullUndefined(obj) {\n for (let key in obj) {\n if (obj[key] === null || obj[key] === undefined) {\n delete obj[key];\n }\n }\n return obj;\n}\n\nexport default Compose;\n"],"file":"compose-BwjAeSSY.js"} |