Files
phanpy-cz/assets/compose-6wkLWCrG.js.map
2026-02-07 19:49:28 +01:00

1 line
408 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"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","clampedPosition","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","isKeyItemEqual","cacheKeyArg","keyArg","expires","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","hasCustomEmojis","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","module","this","n","o","ir","or","ur","fr","u","a","f","s","c","l","d","p","g","v","h","m","y","b","A","T","I","P","S","O","w","U","C","E","R","k","N","F","L","j","G","M","D","B","z","H","V","W","K","X","J","Y","$","Z","Q","ee","te","ne","re","ie","oe","ue","ae","fe","se","ce","le","de","pe","ge","he","ve","me","ye","be","Te","Ae","xe","Ie","Pe","Se","Oe","we","Ue","Ce","Ee","Re","ke","Ne","Fe","Le","je","Ge","Me","_e","De","Be","ze","He","Ve","We","Ke","Xe","Je","Ye","qe","$e","Ze","Qe","et","tt","nt","rt","it","at","ot","ut","ft","st","ct","lt","dt","vt","gt","pt","ht","mt","yt","Tt","bt","xt","At","It","Pt","St","Ot","wt","Ut","Ct","Et","Rt","kt","Nt","Ft","jt","Lt","Gt","Mt","Dt","Bt","zt","Ht","Vt","Xt","Kt","Wt","Jt","Zt","qt","Yt","$t","Qt","un","en","nn","rn","tn","on","an","hn","sn","ln","dn","pn","gn","vn","cn","mn","yn","bn","Un","Fn","jn","wn","Ln","xn","An","Tn","In","Pn","Sn","On","En","Cn","Rn","kn","Nn","Gn","Mn","_n","Dn","Bn","zn","Hn","Vn","Xn","Wn","Kn","Jn","Yn","qn","$n","Zn","Qn","er","tr","nr","rr","require$$1","require$$3","ar","pr","gr","vr","hr","mr","yr","sr","cr","dr","lr","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,14],"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","../../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 clampedPosition = Math.min(position, this.input.value.length);\n const caretRect = new InputRange(this.input, clampedPosition).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 isMatchStillValid(match) {\n return match.position <= this.input.value.length;\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 || !this.isMatchStillValid(match)) {\n this.match = null;\n this.deactivate();\n return;\n }\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 isKeyItemEqual: (cacheKeyArg, keyArg) =>\n cacheKeyArg.instance === keyArg.instance,\n expires: 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 const hasCustomEmojis = !!customEmojis?.length;\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 {hasCustomEmojis && (\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 )}\n </header>\n <main ref={scrollableRef}>\n {hasCustomEmojis ? (\n <>\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 </>\n ) : (\n <div class=\"ui-state\">\n <p>\n <Trans>Custom emojis are not available on this server.</Trans>\n </p>\n </div>\n )}\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","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.ExifReader=t():e.ExifReader=t()}(Object(\"undefined\"!=typeof self?self:this),function(){return function(){\"use strict\";var e={d:function(t,n){for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:1,get:n[r]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r:function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:1})}},t={};function n(e,t,n){for(var r=[],o=0;o<n&&t+o<e.byteLength;o++)r.push(e.getUint8(t+o));return i(r)}function r(e,t){for(var n=[],r=0;t+r<e.byteLength;){var o=e.getUint8(t+r);if(0===o)break;n.push(o),r++}return i(n)}function i(e){return e.map(function(e){return String.fromCharCode(e)}).join(\"\")}function o(){for(var e=1;e<arguments.length;e++)for(var t in arguments[e])arguments[0][t]=arguments[e][t];return arguments[0]}e.r(t),e.d(t,{default:function(){return ir},errors:function(){return or},load:function(){return ur},loadView:function(){return fr}});var u=void 0;function a(e){return a=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},a(e)}function f(e){var t=function(e){if(\"object\"!=a(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,\"string\");if(\"object\"!=a(n))return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return e+\"\"}(e);return\"symbol\"==a(t)?t:t+\"\"}var s=function(){return e=function e(t){if(function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),function(e){return\"object\"!==a(e)||void 0===e.length||void 0===e.readUInt8||void 0===e.readUInt16LE||void 0===e.readUInt16BE||void 0===e.readUInt32LE||void 0===e.readUInt32BE||void 0===e.readInt32LE||void 0===e.readInt32BE}(t))throw Error(\"DataView: Passed buffer type is unsupported.\");this.buffer=t,this.byteLength=this.buffer.length},(t=[{key:\"getUint8\",value:function(e){return this.buffer.readUInt8(e)}},{key:\"getUint16\",value:function(e,t){return t?this.buffer.readUInt16LE(e):this.buffer.readUInt16BE(e)}},{key:\"getUint32\",value:function(e,t){return t?this.buffer.readUInt32LE(e):this.buffer.readUInt32BE(e)}},{key:\"getInt32\",value:function(e,t){return t?this.buffer.readInt32LE(e):this.buffer.readInt32BE(e)}}])&&function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||0,r.configurable=1,\"value\"in r&&(r.writable=1),Object.defineProperty(e,f(r.key),r)}}(e.prototype,t),Object.defineProperty(e,\"prototype\",{writable:0}),e;var e,t}(),c={USE_FILE:1,USE_JFIF:1,USE_PNG_FILE:1,USE_EXIF:1,USE_IPTC:1,USE_XMP:1,USE_ICC:1,USE_MPF:1,USE_PHOTOSHOP:1,USE_THUMBNAIL:1,USE_TIFF:1,USE_JPEG:1,USE_PNG:1,USE_HEIC:1,USE_AVIF:1,USE_WEBP:1,USE_GIF:1,USE_MAKER_NOTES:1};function l(e){return e[0][0]/e[0][1]+e[1][0]/e[1][1]/60+e[2][0]/e[2][1]/3600}var d=18761,p=19789,g=d,v=2,h=65496,m=2,y=4,b=2,x=10,A=18,T=33,I=79,P=65472,S=65474,O=65476,w=65499,U=65501,C=65498,E=65504,R=65505,k=65517,N=65519,F=65534,L=65535,j=\"Exif\",G=\"http://ns.adobe.com/xap/1.0/\\0\",M=\"http://ns.adobe.com/xmp/extension/\\0\",_=\"Photoshop 3.0\";function D(e,t){var r=j.length;return e.getUint16(t)===R&&n(e,t+y,r)===j&&0===e.getUint8(t+y+r)}function B(e,t){return e.getUint16(t)===R&&function(e,t){var r=G.length;return n(e,t+y,r)===G}(e,t)}function z(e,t){return e.getUint16(t)===R&&function(e,t){var r=M.length;return n(e,t+y,r)===M}(e,t)}function H(e,t){return{dataOffset:e+T,length:t-(T-b)}}function V(e,t){return{dataOffset:e+I,length:t-(I-b)}}function W(e,t){var r=_.length;return e.getUint16(t)===k&&n(e,t+y,r)===_&&0===e.getUint8(t+y+r)}function K(e,t){var n=e.getUint16(t);return n>=E&&n<=N||n===F||n===P||n===S||n===O||n===w||n===U||n===C}function X(e,t){return e.getUint16(t)===L}function J(e,t,n,r){var i=function(e,t,n){try{if(t+8>n)return;var r=e.getUint16(t+0),i=r===g;if(!i&&19789!==r)return;if(42!==e.getUint16(t+2,i))return;var o=t+e.getUint32(t+4,i);if(o+2>n)return;var u=e.getUint16(o,i);return{ifdEntries:u,isValid:o+(2+12*u+4)<=n&&u>0}}catch(e){return}}(e,r,t+b+n);if(!i)return 0;var o=Number.isInteger(i.ifdEntries)?i.ifdEntries:0;return(i.isValid?1e9:0)+1e6*o+n}var Y=\"‰PNG\\r\\n\u001a\\n\",q=4,$=4,Z=0,Q=q,ee=q+$,te=\"XML:com.adobe.xmp\\0\",ne=\"tEXt\",re=\"iTXt\",ie=\"zTXt\",oe=\"pHYs\",ue=\"tIME\",ae=\"eXIf\";function fe(e,t){return n(e,t+Q,$)===re&&n(e,t+ee,te.length)===te}function se(e,t,r){var i=n(e,t+Q,$);return i===ne||i===re||i===ie&&r}function ce(e,t){return n(e,t+Q,$)===ae}function le(e,t){var r=[oe,ue],i=n(e,t+Q,$);return r.includes(i)}function de(e,t){t+=ee+te.length+1+1;for(var n=0;n<2&&t<e.byteLength;)0===e.getUint8(t)&&n++,t++;if(!(n<2))return t}function pe(e,t,n,r,i,o,u,a){if(void 0===a)return[];for(var f=[],s=n.items,c=0;c<a;c++){var l={extents:[]};l.itemId=ge(e,s,t),s+=r.item.itemId,l.constructionMethod=1===t||2===t?15&e.getUint16(s):void 0,s+=r.item.constructionMethod,l.dataReferenceIndex=e.getUint16(s),s+=r.item.dataReferenceIndex,l.baseOffset=he(e,s,r.item.baseOffset),s+=r.item.baseOffset,l.extentCount=e.getUint16(s),s+=r.item.extentCount;for(var d=0;d<l.extentCount;d++){var p={};p.extentIndex=ve(e,t,s,u),s+=r.item.extent.extentIndex,p.extentOffset=he(e,s,i),s+=r.item.extent.extentOffset,p.extentLength=he(e,s,o),s+=r.item.extent.extentLength,l.extents.push(p)}f.push(l)}return f}function ge(e,t,n){return n<2?e.getUint16(t):2===n?e.getUint32(t):void 0}function ve(e,t,n,r){if((1===t||2===t)&&r>0)return he(e,n,r)}function he(e,t,n){return 4===n?e.getUint32(t):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(e,t){return e.getUint32(t+4)}(e,t)):0}var me=1165519206,ye=1835625829;function be(e,t){var i=function(e,t){var n=e.getUint32(t);return function(e){return 0===e}(n)?{length:e.byteLength-t,contentOffset:t+4+4}:function(e){return 1===e}(n)&&function(e,t){return 0===e.getUint32(t+8)}(e,t)?{length:e.getUint32(t+12),contentOffset:t+4+4+8}:{length:n,contentOffset:t+4+4}}(e,t),o=i.length,u=i.contentOffset;if(!(o<8)){var a=e.getUint32(t+4);if(1718909296===a)return function(e,t,r){return{type:\"ftyp\",majorBrand:n(e,t,4),length:r}}(e,u,o);if(1768977008===a)return function(e,t,n,r){return{type:\"iprp\",subBoxes:Te(e,n,r-(n-t)),length:r}}(e,t,u,o);if(1768973167===a)return function(e,t,n,r){return{type:\"ipco\",properties:Te(e,n,r-(n-t)),length:r}}(e,t,u,o);if(1668246642===a)return function(e,t,n){return{type:\"colr\",icc:Ae(e,t),length:n}}(e,u,o);var f=e.getUint8(u);return 1835365473===a?function(e,t,n,r){return{type:\"meta\",subBoxes:Te(e,n+3,r-(n+3-t)),length:r}}(e,t,u+1,o):1768714083===a?function(e,t,n,r){var i=function(e,t){var n={item:{dataReferenceIndex:2,extentCount:2,extent:{}}};e<2?(n.itemCount=2,n.item.itemId=2):2===e&&(n.itemCount=4,n.item.itemId=4),n.item.constructionMethod=1===e||2===e?2:0;var r={offsetSize:t,lengthSize:t,baseOffsetSize:t+1,indexSize:t+1};return r.itemCount=t+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}}(t,n+3),o=i.offsets,u=i.sizes,a=e.getUint8(o.offsetSize)>>4;u.item.extent.extentOffset=a;var f=15&e.getUint8(o.lengthSize);u.item.extent.extentLength=f;var s=e.getUint8(o.baseOffsetSize)>>4;u.item.baseOffset=s;var c=function(e,t,n){if(1===n||2===n)return 15&e.getUint8(t)}(e,o.indexSize,t);u.item.extent.extentIndex=void 0!==c?c:0;var l=function(e,t,n){return n<2?e.getUint16(t):2===n?e.getUint32(t):void 0}(e,o.itemCount,t);return{type:\"iloc\",items:pe(e,t,o,u,a,f,c,l),length:r}}(e,f,u+1,o):1768517222===a?function(e,t,n,r,i){var o=function(e,t){var n={entryCount:t+3},r={};return r.entryCount=0===e?2:4,n.itemInfos=n.entryCount+r.entryCount,{offsets:n}}(n,r),u=o.offsets;return{type:\"iinf\",itemInfos:Te(e,u.itemInfos,i-(u.itemInfos-t)),length:i}}(e,t,f,u+1,o):1768842853===a?function(e,t,n,i,o){i+=3;var u={type:\"infe\",length:o};return 0!==n&&1!==n||(u.itemId=e.getUint16(i),i+=2,u.itemProtectionIndex=e.getUint16(i),i+=2,u.itemName=r(e,i),i+=u.itemName.length+1),n>=2&&(2===n?(u.itemId=e.getUint16(i),i+=2):3===n&&(u.itemId=e.getUint32(i),i+=4),u.itemProtectionIndex=e.getUint16(i),i+=2,u.itemType=e.getUint32(i),i+=4,u.itemName=r(e,i),i+=u.itemName.length+1,u.itemType===ye?(u.contentType=r(e,i),t+o>(i+=u.contentType.length+1)&&(u.contentEncoding=r(e,i),i+=u.contentEncoding.length+1)):1970432288===u.itemType&&(u.itemUri=r(e,i),i+=u.itemUri.length+1)),u}(e,t,f,u+1,o):{type:void 0,length:o}}}function xe(e,t){return e.subBoxes.find(function(e){return\"iloc\"===e.type}).items.find(function(e){return e.itemId===t})}function Ae(e,t){var r=n(e,t,4);if(\"prof\"===r||\"rICC\"===r)return{offset:t+4,length:e.getUint32(t+4),chunkNumber:1,chunksTotal:1}}function Te(e,t,n){for(var r=[me,ye],i=[],o=t;o<t+n;){var u=be(e,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 Ie=0,Pe=\"<?xpacket begin\",Se={parseAppMarkers:function(e,t){if(function(e){return!!e&&e.byteLength>=v&&e.getUint16(0)===h}(e))return Oe(function(e){for(var t,n,r,i,o,u,a,f,s=m,c=0;s+y+5<=e.byteLength;){if(D(e,s)){t=e.getUint16(s+b),c++;var l=s+x;if(1===c)u=l,a=s,f=t;else if(2===c){o=J(e,a,f,u);var d=J(e,s,t,l);d>o&&(o=d,u=l,a=s,f=t)}else{var p=J(e,s,t,l);p>o&&(o=p,u=l,a=s,f=t)}n=u}else if(B(e,s))i||(i=[]),t=e.getUint16(s+b),i.push(H(s,t));else if(z(e,s))i||(i=[]),t=e.getUint16(s+b),i.push(V(s,t));else if(W(e,s))t=e.getUint16(s+b),r=s+A;else{if(!K(e,s)){if(X(e,s)){s++;continue}break}t=e.getUint16(s+b)}s+=b+t}return c>1&&function(e){\"undefined\"!=typeof console&&\"function\"==typeof console.warn&&console.warn(\"ExifReader: Found \".concat(e,\" Exif segments (APP1). \")+\"Will pick the best candidate segment.\")}(c),{hasAppMarkers:s>m,fileDataOffset:void 0,jfifDataOffset:void 0,tiffHeaderOffset:n,iptcDataOffset:r,xmpChunks:i,iccChunks:void 0,mpfDataOffset:void 0}}(e),\"jpeg\",\"JPEG\");if(function(e){return!!e&&n(e,0,Y.length)===Y}(e))return Oe(function(e,t){for(var r={hasAppMarkers:0},i=Y.length;i+q+$<=e.byteLength;){if(fe(e,i)){var o=de(e,i);void 0!==o&&(r.hasAppMarkers=1,r.xmpChunks=[{dataOffset:o,length:e.getUint32(i+Z)-(o-(i+ee))}])}else if(se(e,i,t)){r.hasAppMarkers=1;var u=n(e,i+Q,$);r.pngTextChunks||(r.pngTextChunks=[]),r.pngTextChunks.push({length:e.getUint32(i+Z),type:u,offset:i+ee})}else ce(e,i)?(r.hasAppMarkers=1,r.tiffHeaderOffset=i+ee):le(e,i)&&(r.hasAppMarkers=1,r.pngChunkOffsets||(r.pngChunkOffsets=[]),r.pngChunkOffsets.push(i+Z));i+=e.getUint32(i+Z)+q+$+4}return r}(e,t),\"png\",\"PNG\");if(function(e){if(!e)return 0;try{var t=be(e,0);return t&&-1!==[\"heic\",\"heix\",\"hevc\",\"hevx\",\"heim\",\"heis\",\"hevm\",\"hevs\",\"mif1\"].indexOf(t.majorBrand)}catch(e){return 0}}(e))return Oe(function(e){return function(e){var t={},n=function(e){for(var t=0;t+4+4<=e.byteLength;){var n=be(e,t);if(void 0===n)break;if(\"meta\"===n.type)return n;t+=n.length}}(e);return n?(t.tiffHeaderOffset=function(e,t){try{var n=function(e){return e.subBoxes.find(function(e){return\"iinf\"===e.type}).itemInfos.find(function(e){return e.itemType===me})}(t).itemId,r=xe(t,n);return function(e,t){return t+4+e.getUint32(t)}(e,r.baseOffset+r.extents[0].extentOffset)}catch(e){return}}(e,n),t.xmpChunks=function(e){try{var t=function(e){return e.subBoxes.find(function(e){return\"iinf\"===e.type}).itemInfos.find(function(e){return e.itemType===ye&&\"application/rdf+xml\"===e.contentType})}(e).itemId,n=xe(e,t),r=xe(e,t).extents[0];return[{dataOffset:n.baseOffset+r.extentOffset,length:r.extentLength}]}catch(e){return}}(n),t.hasAppMarkers=void 0!==t.tiffHeaderOffset||void 0!==t.xmpChunks||void 0!==t.iccChunks,t):{hasAppMarkers:0}}(e)}(e),\"heic\",\"HEIC\");if(function(e){return!!e&&\"RIFF\"===n(e,0,4)&&\"WEBP\"===n(e,8,4)}(e))return Oe(function(e){for(var t,r,i,o=12,u=0;o+8<e.byteLength;){var a=n(e,o,4),f=e.getUint32(o+4,1);\"EXIF\"===a?(u=1,t=\"Exif\\0\\0\"===n(e,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:t,xmpChunks:r,iccChunks:void 0,vp8xChunkOffset:i}}(e),\"webp\",\"WebP\");if(function(e){return!!e&&n(e,Ie,Pe.length)===Pe}(e))return Oe(function(e){var t=[];return t.push({dataOffset:Ie,length:e.byteLength}),{xmpChunks:t}}(e),\"xml\",\"XML\");throw Error(\"Invalid image format\")}};function Oe(e,t,n){return o({},e,{fileType:{value:t,description:n}})}var we={270:\"ImageDescription\",700:\"ApplicationNotes\",33723:\"IPTC-NAA\",34665:\"Exif IFD Pointer\"};function Ue(e){return Ue=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},Ue(e)}function Ce(e,t,n){return(t=function(e){var t=function(e){if(\"object\"!=Ue(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,\"string\");if(\"object\"!=Ue(n))return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return e+\"\"}(e);return\"symbol\"==Ue(t)?t:t+\"\"}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:1,configurable:1,writable:1}):e[t]=n,e}var Ee=o({},we,{}),Re=\"exif\",ke=\"interoperability\",Ne=\"pentax\",Fe=Ce(Ce(Ce(Ce(Ce(Ce(Ce(Ce({},\"0th\",Ee),\"1st\",we),Re,Ee),\"gps\",{}),ke,{}),\"mpf\",{}),\"canon\",{}),Ne,{}),Le={1:1,2:1,3:2,4:4,5:8,7:1,9:4,10:8,13:4},je={BYTE:1,ASCII:2,SHORT:3,LONG:4,RATIONAL:5,UNDEFINED:7,SLONG:9,SRATIONAL:10,IFD:13},Ge={getAsciiValue:function(e){return e.map(function(e){return String.fromCharCode(e)})},getByteAt:Me,getAsciiAt:function(e,t){return e.getUint8(t)},getShortAt:function(e,t,n){return e.getUint16(t,n===g)},getLongAt:_e,getRationalAt:function(e,t,n){return[_e(e,t,n),_e(e,t+4,n)]},getUndefinedAt:function(e,t){return Me(e,t)},getSlongAt:De,getSrationalAt:function(e,t,n){return[De(e,t,n),De(e,t+4,n)]},getIfdPointerAt:function(e,t,n){return _e(e,t,n)},typeSizes:Le,tagTypes:je,getTypeSize:function(e){if(void 0===je[e])throw Error(\"No such type found.\");return Le[je[e]]}};function Me(e,t){return e.getUint8(t)}function _e(e,t,n){return e.getUint32(t,n===g)}function De(e,t,n){return e.getInt32(t,n===g)}var Be={exif:1,iptc:1,photoshop:1,mpf:1,makerNotes:1},ze={exif:1,iptc:1,xmp:1,icc:1,photoshop:1,makerNotes:1,mpf:1,file:1,jfif:1,png:1,riff:1,gif:1,gps:1,composite:1,thumbnail:1},He={exifIfdPointer:\"Exif IFD Pointer\",gpsInfoIfdPointer:\"GPS Info IFD Pointer\",interoperabilityIfdPointer:\"Interoperability IFD Pointer\"},Ve={thumbnail:[\"JPEGInterchangeFormat\",\"JPEGInterchangeFormatLength\"],iptc:[\"IPTC-NAA\"],xmp:[\"ApplicationNotes\"],icc:[\"ICC_Profile\"],photoshop:[\"ImageSourceData\",\"PhotoshopSettings\"],makerNotes:[\"MakerNote\",\"Make\"],gps:[\"GPSLatitude\",\"GPSLatitudeRef\",\"GPSLongitude\",\"GPSLongitudeRef\",\"GPSAltitude\",\"GPSAltitudeRef\"]},We={file:[\"Image Width\",\"Image Height\"],exif:[\"FocalLength\",\"FocalPlaneXResolution\",\"FocalPlaneYResolution\",\"FocalPlaneResolutionUnit\",\"FocalLengthIn35mmFilm\"]};function Ke(e){return 1==e?1:Array.isArray(e)&&e.length>0}function Xe(){return{isActive:0,shouldReturnGroup:e,shouldParseGroup:e,shouldReturnTag:e,shouldParseTag:e};function e(){return 1}}var Je=Xe();function Ye(e){var t=e.groupKey,n=e.hasIncludeTags,r=e.hasIncludeEntry,i=e.includeTags,o=e.shouldParseExif,u=e.shouldParseFile;return n?r?\"thumbnail\"===t&&Array.isArray(i[t])?1:i[t]:\"exif\"===t&&o||\"file\"===t&&u?[]:void 0:1}function qe(e){var t=e.groupKey,n=e.hasIncludeTags,r=e.hasIncludeEntry,i=e.shouldParseExif,o=e.shouldParseFile,u=e.exifIncludeDependencies,a=e.fileIncludeDependencies;return n?\"exif\"===t&&(i||r&&Object.keys(u).length>0)?u:\"file\"===t&&o?a:Object.create(null):Object.create(null)}function $e(e,t){if(!e||!Object.prototype.hasOwnProperty.call(e,t))return 0;var n=e[t];return 1==n?1:Array.isArray(n)&&n.length>0}function Ze(e){return Array.isArray(e)&&0===e.length}function Qe(e){var t=e.groupKey,n=e.includeValue,r=e.excludeValue,i=e.extraIncludeNames,o=!!Be[t],u={includeAll:0,includeNames:void 0,includeIds:void 0,excludeAll:0,excludeNames:void 0,excludeIds:void 0};if(1==n)u.includeAll=1;else if(Array.isArray(n)){u.includeNames=Object.create(null),o&&(u.includeIds=Object.create(null));for(var a=0;a<n.length;a++)l(u,n[a]);for(var f in i)u.includeNames[f.toLowerCase()]=1}else if(i&&Object.keys(i).length>0)for(var s in u.includeNames=Object.create(null),i)u.includeNames[s.toLowerCase()]=1;if(1==r)return u.excludeAll=1,u;if(Array.isArray(r)){u.excludeNames=Object.create(null),o&&(u.excludeIds=Object.create(null));for(var c=0;c<r.length;c++)d(u,r[c])}return u;function l(e,t){\"number\"==typeof t&&e.includeIds?e.includeIds[t+\"\"]=1:\"string\"==typeof t&&(e.includeNames[t.toLowerCase()]=1)}function d(e,t){\"number\"==typeof t&&e.excludeIds?e.excludeIds[t+\"\"]=1:\"string\"==typeof t&&(e.excludeNames[t.toLowerCase()]=1)}}function et(e,t,n){return e.excludeAll?0:e.includeAll?!tt(e,t,n):e.includeNames||e.includeIds?function(e,t,n){return void 0!==n&&e.includeIds&&e.includeIds[n+\"\"]||t&&e.includeNames&&e.includeNames[(t+\"\").toLowerCase()]?1:0}(e,t,n)?!tt(e,t,n):0:!tt(e,t,n)}function tt(e,t,n){return void 0!==n&&e.excludeIds&&e.excludeIds[n+\"\"]||t&&e.excludeNames&&e.excludeNames[(t+\"\").toLowerCase()]?1:0}var nt={1:Ge.getByteAt,2:Ge.getAsciiAt,3:Ge.getShortAt,4:Ge.getLongAt,5:Ge.getRationalAt,7:Ge.getUndefinedAt,9:Ge.getSlongAt,10:Ge.getSrationalAt,13:Ge.getIfdPointerAt};function rt(e,t,n,r,i,o){var u=arguments.length>6&&void 0!==arguments[6]?arguments[6]:0,a=arguments.length>7&&void 0!==arguments[7]?arguments[7]:Je,f=arguments.length>8&&void 0!==arguments[8]?arguments[8]:\"exif\",s=Ge.getTypeSize(\"SHORT\"),c={},l=function(e,t,n){return t+Ge.getTypeSize(\"SHORT\")<=e.byteLength?Ge.getShortAt(e,t,n):0}(e,r,i);r+=s;for(var d=0;d<l&&!(r+12>e.byteLength);d++){var p=it(e,t,n,r,i,o,a,f);void 0!==p&&(c[p.name]={id:p.id,value:p.value,description:p.description},u&&(c[p.name].computed=at(p.tagType,p.value)),(\"MakerNote\"===p.name||t===Ne&&\"LevelInfo\"===p.name)&&(c[p.name].__offset=p.__offset)),r+=12}return c}function it(e,t,n,r,i){var o,u,a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,f=arguments.length>6&&void 0!==arguments[6]?arguments[6]:Je,s=arguments.length>7&&void 0!==arguments[7]?arguments[7]:\"exif\",c=Ge.getTypeSize(\"SHORT\"),l=c+Ge.getTypeSize(\"SHORT\"),d=l+Ge.getTypeSize(\"LONG\"),p=Ge.getShortAt(e,r,i),g=Ge.getShortAt(e,r+c,i),v=Ge.getLongAt(e,r+l,i);if(void 0!==Ge.typeSizes[g]&&(a||void 0!==Fe[t][p])){var h=function(e,t){if(void 0!==Fe[e][t]){if(\"string\"==typeof Fe[e][t])return Fe[e][t];if(Fe[e][t].name)return Fe[e][t].name}return\"undefined-\".concat(t)}(t,p);if(f.shouldParseTag(s,h,p)){o=function(e,t){return Ge.typeSizes[e]*t<=Ge.getTypeSize(\"LONG\")}(g,v)?ot(e,u=r+d,g,v,i):function(e,t,n,r,i){return t+n+Ge.typeSizes[r]*i<=e.byteLength}(e,n,u=Ge.getLongAt(e,r+d,i),g,v)?ot(e,n+u,g,v,i,33723===p):\"<faulty value>\",g===Ge.tagTypes.ASCII&&(o=function(e){try{return e.map(function(e){return decodeURIComponent(escape(e))})}catch(t){return e}}(o=function(e){for(var t=[],n=0,r=0;r<e.length;r++)\"\\0\"!==e[r]?(void 0===t[n]&&(t[n]=\"\"),t[n]+=e[r]):n++;return t}(o)));var m=o;if(void 0!==Fe[t][p])if(void 0!==Fe[t][p].name&&void 0!==Fe[t][p].description)try{m=Fe[t][p].description(o)}catch(e){m=ut(o)}else m=g===Ge.tagTypes.RATIONAL||g===Ge.tagTypes.SRATIONAL?\"\"+o[0]/o[1]:ut(o);return{id:p,name:h,value:o,description:m,tagType:g,__offset:u}}}}function ot(e,t,n,r,i){var o=[];arguments.length>5&&void 0!==arguments[5]&&arguments[5]&&(r*=Ge.typeSizes[n],n=Ge.tagTypes.BYTE);for(var u=0;u<r;u++)o.push(nt[n](e,t,i)),t+=Ge.typeSizes[n];return n===Ge.tagTypes.ASCII?o=Ge.getAsciiValue(o):1===o.length&&(o=o[0]),o}function ut(e){return e instanceof Array?e.join(\", \"):e}function at(e,t){return e===Ge.tagTypes.ASCII?Array.isArray(t)&&1===t.length?t[0]:t:e===Ge.tagTypes.RATIONAL||e===Ge.tagTypes.SRATIONAL?function(e){return Array.isArray(e)&&2===e.length?\"number\"==typeof e[0]&&\"number\"==typeof e[1]:0}(t)?ft(t):Array.isArray(t)?t.map(function(e){return ft(e)}):t:t}function ft(e){if(!Array.isArray(e)||2!==e.length)return e;var t=e[0],n=e[1];return Number.isFinite(t)&&Number.isFinite(n)?0===n?null:t/n:e}var st=\"Exif IFD Pointer\",ct=\"GPS Info IFD Pointer\",lt=\"Interoperability IFD Pointer\",dt={read:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0,o=function(e,t){if(e.getUint16(t)===d)return d;if(e.getUint16(t)===p)return p;throw Error(\"Illegal byte order value. Faulty image.\")}(e,t),u=function(e,t,n,r,i,o){return rt(e,\"0th\",t,function(e,t,n){return t+Ge.getLongAt(e,t+4,n)}(e,t,n),n,r,i,o,\"exif\")}(e,t,o,n,r,i);return{tags:u=vt(u=gt(u=pt(u,e,t,o,n,r,i),e,t,o,n,r,i),e,t,o,n,r,i),byteOrder:o}}};function pt(e,t,n,r,i,u,a){return void 0!==e[st]?o(e,rt(t,Re,n,n+e[st].value,r,i,u,a,\"exif\")):e}function gt(e,t,n,r,i,u,a){return void 0!==e[ct]?o(e,rt(t,\"gps\",n,n+e[ct].value,r,i,u,a,\"exif\")):e}function vt(e,t,n,r,i,u,a){return void 0!==e[lt]?o(e,rt(t,ke,n,n+e[lt].value,r,i,u,a,\"exif\")):e}var ht={iptc:{632:\"Caption/Abstract\"}},mt=function(e,t){var n=function(){if(\"undefined\"!=typeof TextDecoder)return TextDecoder}();if(\"undefined\"!=typeof n&&void 0!==e)try{return new n(e).decode(t instanceof DataView?t.buffer:Uint8Array.from(t))}catch(e){}return function(e){try{return decodeURIComponent(escape(e))}catch(t){return e}}(t.map(function(e){return String.fromCharCode(e)}).join(\"\"))},yt={read:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Je;try{if(Array.isArray(e))return Tt(new DataView(Uint8Array.from(e).buffer),{size:e.length},0,n,r);var i=function(e,t){for(;t+12<=e.byteLength;){var n=bt(e,t);if(xt(n))return{naaBlock:n,dataOffset:t+n.headerSize};t+=n.headerSize+n.size+At(n)}throw Error(\"No IPTC NAA resource block.\")}(e,t);return Tt(e,i.naaBlock,i.dataOffset,n,r)}catch(e){return{}}}};function bt(e,t){if(943868237!==e.getUint32(t,0))throw Error(\"Not an IPTC resource block.\");var n=e.getUint8(t+4+2),r=(n%2==0?n+1:n)+1;return{headerSize:6+r+4,type:e.getUint16(t+4),size:e.getUint32(t+4+2+r)}}function xt(e){return 1028===e.type}function At(e){return e.size%2!=0?1:0}function Tt(e,t,n,r,i){for(var o={},u=void 0,a=n+t.size;n<a&&n<e.byteLength;){var f=It(e,n,o,u,r,i),s=f.tag,c=f.tagSize;if(null===s)break;s&&(\"encoding\"in s&&(u=s.encoding),void 0===o[s.name]||void 0===s.repeatable?o[s.name]={id:s.id,value:s.value,description:s.description}:(o[s.name]instanceof Array||(o[s.name]=[{id:o[s.name].id,value:o[s.name].value,description:o[s.name].description}]),o[s.name].push({id:s.id,value:s.value,description:s.description}))),n+=5+c}return o}function It(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:Je;if(function(e,t){return 28!==e.getUint8(t)}(e,t))return{tag:null,tagSize:0};var u=e.getUint16(t+1),a=e.getUint16(t+3);if(!i&&!ht.iptc[u])return{tag:void 0,tagSize:a};if(!o.shouldParseTag(\"iptc\",function(e,t){var n=ht.iptc[e];return n?\"string\"==typeof n?n:n&&\"string\"==typeof n.name?n.name:void 0:t?\"undefined-\".concat(e):void 0}(u,i),u))return{tag:void 0,tagSize:a};var f=function(e,t,n){for(var r=[],i=0;i<n;i++)r.push(e.getUint8(t+i));return r}(e,t+5,a),s={id:u,name:Pt(ht.iptc[u],u,f),value:f,description:St(ht.iptc[u],f,n,r)};return function(e){return ht.iptc[e]&&ht.iptc[e].repeatable}(u)&&(s.repeatable=1),function(e){return ht.iptc[e]&&void 0!==ht.iptc[e].encoding_name}(u)&&(s.encoding=ht.iptc[u].encoding_name(f)),{tag:s,tagSize:a}}function Pt(e,t,n){return e?function(e){return\"string\"==typeof e}(e)?e:function(e){return\"function\"==typeof e.name}(e)?e.name(n):e.name:\"undefined-\".concat(t)}function St(e,t,n,r){if(function(e){return e&&void 0!==e.description}(e))try{return e.description(t,n)}catch(e){}return function(e,t){return e&&t instanceof Array}(e,t)?mt(r,t):t}var Ot=function(e){return Math.pow(Math.sqrt(2),e[0]/e[1]).toFixed(2)},wt=function(e){return\"f/\".concat(Number(e[0]/e[1]).toFixed(1))},Ut=function(e){return e[0]/e[1]+\" mm\"},Ct=function(e){var t=Math.pow(2,e[0]/e[1]);return t<=1?\"\".concat(Math.round(1/t)):\"1/\".concat(Math.round(t))},Et=function(e){return\"\"+Math.round(e[0]/e[1])},Rt=function(e){return\"\"+Math.round(e[0]/e[1])};function kt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var Nt={\"tiff:Orientation\":function(e){return\"1\"===e?\"Horizontal (normal)\":\"2\"===e?\"Mirror horizontal\":\"3\"===e?\"Rotate 180\":\"4\"===e?\"Mirror vertical\":\"5\"===e?\"Mirror horizontal and rotate 270 CW\":\"6\"===e?\"Rotate 90 CW\":\"7\"===e?\"Mirror horizontal and rotate 90 CW\":\"8\"===e?\"Rotate 270 CW\":e},\"tiff:ResolutionUnit\":function(e){return function(e){return 2===e?\"inches\":3===e?\"centimeters\":\"Unknown\"}(parseInt(e,10))},\"tiff:XResolution\":function(e){return Ft(Et,e)},\"tiff:YResolution\":function(e){return Ft(Rt,e)},\"exif:ApertureValue\":function(e){return Ft(Ot,e)},\"exif:GPSLatitude\":jt,\"exif:GPSLongitude\":jt,\"exif:FNumber\":function(e){return Ft(wt,e)},\"exif:FocalLength\":function(e){return Ft(Ut,e)},\"exif:FocalPlaneResolutionUnit\":function(e){return function(e){return 2===e?\"inches\":3===e?\"centimeters\":4===e?\"millimeters\":\"Unknown\"}(parseInt(e,10))},\"exif:ColorSpace\":function(e){return function(e){return 1===e?\"sRGB\":65535===e?\"Uncalibrated\":\"Unknown\"}(function(e){return\"0x\"===e.substring(0,2)?parseInt(e.substring(2),16):parseInt(e,10)}(e))},\"exif:ComponentsConfiguration\":function(e,t){return/^\\d, \\d, \\d, \\d$/.test(t)?function(e){return e.map(function(e){return 49===e?\"Y\":50===e?\"Cb\":51===e?\"Cr\":52===e?\"R\":53===e?\"G\":54===e?\"B\":void 0}).join(\"\")}(t.split(\", \").map(function(e){return e.charCodeAt(0)})):t},\"exif:Contrast\":function(e){return function(e){return 0===e?\"Normal\":1===e?\"Soft\":2===e?\"Hard\":\"Unknown\"}(parseInt(e,10))},\"exif:CustomRendered\":function(e){return function(e){return 0===e?\"Normal process\":1===e?\"Custom process\":\"Unknown\"}(parseInt(e,10))},\"exif:ExposureMode\":function(e){return function(e){return 0===e?\"Auto exposure\":1===e?\"Manual exposure\":2===e?\"Auto bracket\":\"Unknown\"}(parseInt(e,10))},\"exif:ExposureProgram\":function(e){return function(e){return 0===e?\"Undefined\":1===e?\"Manual\":2===e?\"Normal program\":3===e?\"Aperture priority\":4===e?\"Shutter priority\":5===e?\"Creative program\":6===e?\"Action program\":7===e?\"Portrait mode\":8===e?\"Landscape mode\":9===e?\"Bulb\":\"Unknown\"}(parseInt(e,10))},\"exif:ExposureTime\":function(e){return Lt(e)?function(e){if(e[0]/e[1]>.25){var t=e[0]/e[1];return Number.isInteger(t)?\"\"+t:t.toFixed(1)}return 0!==e[0]?\"1/\".concat(Math.round(e[1]/e[0])):\"0/\".concat(e[1])}(e.split(\"/\").map(function(e){return parseInt(e,10)})):e},\"exif:MeteringMode\":function(e){return function(e){return 1===e?\"Average\":2===e?\"CenterWeightedAverage\":3===e?\"Spot\":4===e?\"MultiSpot\":5===e?\"Pattern\":6===e?\"Partial\":255===e?\"Other\":\"Unknown\"}(parseInt(e,10))},\"exif:Saturation\":function(e){return function(e){return 0===e?\"Normal\":1===e?\"Low saturation\":2===e?\"High saturation\":\"Unknown\"}(parseInt(e,10))},\"exif:SceneCaptureType\":function(e){return function(e){return 0===e?\"Standard\":1===e?\"Landscape\":2===e?\"Portrait\":3===e?\"Night scene\":\"Unknown\"}(parseInt(e,10))},\"exif:Sharpness\":function(e){return function(e){return 0===e?\"Normal\":1===e?\"Soft\":2===e?\"Hard\":\"Unknown\"}(parseInt(e,10))},\"exif:ShutterSpeedValue\":function(e){return Ft(Ct,e)},\"exif:WhiteBalance\":function(e){return function(e){return 0===e?\"Auto white balance\":1===e?\"Manual white balance\":\"Unknown\"}(parseInt(e,10))}};function Ft(e,t){return Lt(t)?e(t.split(\"/\")):t}function Lt(e){return/^-?\\d+\\/-?\\d+$/.test(e)}function jt(e){var t,n=function(e){if(Array.isArray(e))return e}(t=e.split(\",\"))||function(e){var t=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=t){var n,r,i,o,u=[],a=1,f=0;try{for(i=(t=t.call(e)).next,!2;!(a=(n=i.call(t)).done)&&(u.push(n.value),2!==u.length);a=1);}catch(e){f=1,r=e}finally{try{if(!a&&null!=t.return&&(o=t.return(),Object(o)!==o))return}finally{if(f)throw r}}return u}}(t)||function(e){if(e){if(\"string\"==typeof e)return kt(e,2);var t={}.toString.call(e).slice(8,-1);return\"Object\"===t&&e.constructor&&(t=e.constructor.name),\"Map\"===t||\"Set\"===t?Array.from(e):\"Arguments\"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?kt(e,2):void 0}}(t)||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 e}var Gt={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 Mt(e){return Mt=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},Mt(e)}function _t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Dt(e){var t=\"function\"==typeof Map?new Map:void 0;return Dt=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf(\"[native code]\")}catch(t){return\"function\"==typeof e}}(e))return e;if(\"function\"!=typeof e)throw new TypeError(\"Super expression must either be null or a function\");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return function(e,t,n){if(Bt())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&zt(i,n.prototype),i}(e,arguments,Ht(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:0,writable:1,configurable:1}}),zt(n,e)},Dt(e)}function Bt(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(Bt=function(){return!!e})()}function zt(e,t){return zt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},zt(e,t)}function Ht(e){return Ht=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Ht(e)}var Vt={read:function(e,t,n){var r={};if(\"string\"==typeof e)return Xt(r,e,n),r;var i,o=(i=function(e,t){if(0===t.length)return[];var n=[Kt(e,t.slice(0,1))];return t.length>1&&n.push(Kt(e,t.slice(1))),n}(e,t),function(e){if(Array.isArray(e))return e}(i)||function(e){var t=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=t){var n,r,i,o,u=[],a=1,f=0;try{for(i=(t=t.call(e)).next,!2;!(a=(n=i.call(t)).done)&&(u.push(n.value),2!==u.length);a=1);}catch(e){f=1,r=e}finally{try{if(!a&&null!=t.return&&(o=t.return(),Object(o)!==o))return}finally{if(f)throw r}}return u}}(i)||function(e){if(e){if(\"string\"==typeof e)return _t(e,2);var t={}.toString.call(e).slice(8,-1);return\"Object\"===t&&e.constructor&&(t=e.constructor.name),\"Map\"===t||\"Set\"===t?Array.from(e):\"Arguments\"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_t(e,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=Xt(r,u,n);if(a){var s=Xt(r,a,n);f||s||(delete r._raw,Xt(r,Kt(e,t),n))}return r}},Wt=function(e){function t(e){var n;return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t),(n=function(e,t,n){return t=Ht(t),function(e,t){if(t&&(\"object\"==Mt(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}(e)}(e,Bt()?Reflect.construct(t,n||[],Ht(e).constructor):t.apply(e,n))}(this,t,[e])).name=\"ParseError\",n}return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:1,configurable:1}}),Object.defineProperty(e,\"prototype\",{writable:0}),t&&zt(e,t)}(t,e),Object.defineProperty(n=t,\"prototype\",{writable:0}),n;var n}(Dt(Error));function Kt(e,t){for(var n=t.reduce(function(e,t){return e+t.length},0),r=new Uint8Array(n),i=0,o=0;o<t.length;o++){var u=t[o],a=e.buffer.slice(u.dataOffset,u.dataOffset+u.length);r.set(new Uint8Array(a),i),i+=u.length}return new DataView(r.buffer)}function Xt(e,t,r){try{var i=function(e,t){var r=function(e){if(e)return e;if(\"undefined\"!=typeof DOMParser)return new DOMParser;try{var t=require(\"@xmldom/xmldom\");return new(0,t.DOMParser)({onError:t.onErrorStopParsing})}catch(e){return}}(t);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 e?e:n(e,0,e.byteLength);return{doc:Jt(r,i.replace(/^.+(<\\?xpacket begin)/,\"$1\").replace(/(<\\?xpacket end=\".*\"\\?>).+$/,\"$1\")),raw:i}}(t,r),u=i.doc,a=i.raw;return e._raw=(e._raw||\"\")+a,o(e,Zt(qt(Yt(u),1))),1}catch(e){return 0}}function Jt(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;try{var r=e.parseFromString(t,\"application/xml\"),i=r.getElementsByTagName(\"parsererror\");if(i.length>0)throw new Wt(i[0].textContent);return r}catch(r){if(\"ParseError\"===r.name&&function(e){for(var t=[\"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<t.length;n++)if(RegExp(t[n]).test(e.message))return 1;return 0}(r)&&!n)return Jt(e,function(e){var t=e.match(/<([A-Za-z_][A-Za-z0-9._-]*)([^>]*)>/);if(!t)return e;var n=t[1],r=function(e){for(var t,n=[],r=/xmlns:([\\w-]+)=[\"'][^\"']+[\"']/g;null!==(t=r.exec(e));)-1===n.indexOf(t[1])&&n.push(t[1]);return n}(e),i=function(e){for(var t,n=[],r=/\\b([A-Za-z_][A-Za-z0-9._-]*):[A-Za-z_][A-Za-z0-9._-]*\\b/g;null!==(t=r.exec(e));){var i=t[1];\"xmlns\"!==i&&\"xml\"!==i&&-1===n.indexOf(i)&&n.push(i)}return n}(e).filter(function(e){return-1===r.indexOf(e)});return 0===i.length?e:function(e,t,n){var r=RegExp(\"<\"+t+\"([^>]*)>\");return e.replace(r,\"<\"+t+\"$1\"+n+\">\")}(e,n,function(e){for(var t=[],n=0;n<e.length;n++){var r=e[n],i=Gt[r]||\"http://fallback.namespace/\"+r;t.push(\" xmlns:\"+r+'=\"'+i+'\"')}return t.join(\"\")}(i))}(t),1);throw r}}function Yt(e){for(var t=0;t<e.childNodes.length;t++){if(\"x:xmpmeta\"===e.childNodes[t].tagName)return Yt(e.childNodes[t]);if(\"rdf:RDF\"===e.childNodes[t].tagName)return e.childNodes[t]}throw Error()}function qt(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=function(e){for(var t=[],n=0;n<e.childNodes.length;n++)t.push(e.childNodes[n]);return t}(e);return 1===(t=r).length&&\"#text\"===t[0].nodeName?n?{}:function(e){return e.nodeValue}(r[0]):function(e){var t={};return e.forEach(function(e){if(function(e){return e.nodeName&&\"#text\"!==e.nodeName}(e)){var n=function(e){return{attributes:$t(e),value:qt(e)}}(e);void 0!==t[e.nodeName]?(Array.isArray(t[e.nodeName])||(t[e.nodeName]=[t[e.nodeName]]),t[e.nodeName].push(n)):t[e.nodeName]=n}}),t}(r)}function $t(e){for(var t={},n=0;n<e.attributes.length;n++)t[e.attributes[n].nodeName]=decodeURIComponent(escape(e.attributes[n].value));return t}function Zt(e){var t={};if(\"string\"==typeof e)return e;for(var n in e){var r=e[n];Array.isArray(r)||(r=[r]),r.forEach(function(e){o(t,Qt(e.attributes)),\"object\"===Mt(e.value)&&o(t,un(e.value))})}return t}function Qt(e){var t={};for(var n in e)try{en(n)&&(t[nn(n)]={value:e[n],attributes:{},description:rn(e[n],n)})}catch(e){}return t}function en(e){return\"rdf:parseType\"!==e&&!tn(e)}function tn(e){return\"xmlns\"===e.split(\":\")[0]}function nn(e){return/^MicrosoftPhoto(_\\d+_)?:Rating$/i.test(e)?\"RatingPercent\":e.split(\":\")[1]}function rn(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;if(Array.isArray(e)){var n=function(e){return e.map(function(e){return void 0!==e.value?rn(e.value):rn(e)}).join(\", \")}(e);return t&&\"function\"==typeof Nt[t]?Nt[t](e,n):n}if(\"object\"===Mt(e))return function(e){var t=[];for(var n in e)t.push(\"\".concat(on(n),\": \").concat(rn(e[n].value)));return t.join(\"; \")}(e);try{return t&&\"function\"==typeof Nt[t]?Nt[t](e):decodeURIComponent(escape(e))}catch(t){return e}}function on(e){return\"CiAdrCity\"===e?\"CreatorCity\":\"CiAdrCtry\"===e?\"CreatorCountry\":\"CiAdrExtadr\"===e?\"CreatorAddress\":\"CiAdrPcode\"===e?\"CreatorPostalCode\":\"CiAdrRegion\"===e?\"CreatorRegion\":\"CiEmailWork\"===e?\"CreatorWorkEmail\":\"CiTelWork\"===e?\"CreatorWorkPhone\":\"CiUrlWork\"===e?\"CreatorWorkUrl\":e}function un(e){var t={};for(var n in e)try{tn(n)||(t[nn(n)]=an(e[n],n))}catch(e){}return t}function an(e,t){return function(e){return Array.isArray(e)}(e)?function(e,t){return hn(e[e.length-1],t)}(e,t):function(e){return\"Resource\"===e.attributes[\"rdf:parseType\"]&&\"string\"==typeof e.value&&\"\"===e.value.trim()}(e)?{value:\"\",attributes:{},description:\"\"}:fn(e)?sn(e,t):ln(e)?dn(e,t):pn(e)?gn(e,t):function(e){return void 0!==vn(e.value)}(e)?function(e,t){var n=vn(e.value).value[\"rdf:li\"],r=cn(e),i=[];return void 0===n?n=[]:Array.isArray(n)||(n=[n]),n.forEach(function(e){i.push(function(e){return fn(e)?sn(e):ln(e)?dn(e).value:pn(e)?gn(e).value:hn(e)}(e))}),{value:i,attributes:r,description:rn(i,t)}}(e,t):hn(e,t)}function fn(e){return\"Resource\"===e.attributes[\"rdf:parseType\"]&&void 0!==e.value[\"rdf:value\"]||void 0!==e.value[\"rdf:Description\"]&&void 0!==e.value[\"rdf:Description\"].value[\"rdf:value\"]}function sn(e,t){var n=cn(e);void 0!==e.value[\"rdf:Description\"]&&(e=e.value[\"rdf:Description\"]),o(n,cn(e),function(e){var t={};for(var n in e.value)\"rdf:value\"===n||tn(n)||(t[nn(n)]=e.value[n].value);return t}(e));var r=function(e){return mn(e.value[\"rdf:value\"])||e.value[\"rdf:value\"].value}(e);return{value:r,attributes:n,description:rn(r,t)}}function cn(e){var t={};for(var n in e.attributes)\"rdf:parseType\"===n||\"rdf:resource\"===n||tn(n)||(t[nn(n)]=e.attributes[n]);return t}function ln(e){return\"Resource\"===e.attributes[\"rdf:parseType\"]||void 0!==e.value[\"rdf:Description\"]&&void 0===e.value[\"rdf:Description\"].value[\"rdf:value\"]}function dn(e,t){var n={value:{},attributes:{}};return void 0!==e.value[\"rdf:Description\"]&&(o(n.value,Qt(e.value[\"rdf:Description\"].attributes)),o(n.attributes,cn(e)),e=e.value[\"rdf:Description\"]),o(n.value,un(e.value)),n.description=rn(n.value,t),n}function pn(e){return 0===Object.keys(e.value).length&&void 0===e.attributes[\"xml:lang\"]&&void 0===e.attributes[\"rdf:resource\"]}function gn(e,t){var n=Qt(e.attributes);return{value:n,attributes:{},description:rn(n,t)}}function vn(e){return e[\"rdf:Bag\"]||e[\"rdf:Seq\"]||e[\"rdf:Alt\"]}function hn(e,t){var n=mn(e)||Zt(e.value);return{value:n,attributes:cn(e),description:rn(n,t)}}function mn(e){return e.attributes&&e.attributes[\"rdf:resource\"]}function yn(e){return yn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},yn(e)}var bn={read:function(e,t,n,r){for(var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:Je,u={},a=[],f=0;f<t.length;f++){var s=t[f],c=Un(e,s.offset,s.length,s.type,n);if(c instanceof Promise)a.push(c.then(function(e){var t,n,u,a=e.name,f=e.value,s=e.description;try{if(Fn(a,f))return o.shouldParseGroup(\"exif\")?{__exif:dt.read(jn(f),wn,r,i,o).tags}:{};if(Ln(a,f))return o.shouldParseGroup(\"iptc\")?{__iptc:yt.read(jn(f),0,r,o)}:{};if(a&&!Fn(a,f)&&!Ln(a,f))return o.shouldParseGroup(\"png\")?(t={},u={value:f,description:s},(n=function(e){var t=function(e){if(\"object\"!=yn(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,\"string\");if(\"object\"!=yn(n))return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return e+\"\"}(e);return\"symbol\"==yn(t)?t:t+\"\"}(n=a))in t?Object.defineProperty(t,n,{value:u,enumerable:1,configurable:1,writable:1}):t[n]=u,t):{}}catch(e){}return{}}));else{var l=c.name,d=c.value,p=c.description;l&&o.shouldParseGroup(\"png\")&&(u[l]={value:d,description:p})}}return{readTags:u,readTagsPromise:a.length>0?Promise.all(a):void 0}}},xn=\"STATE_KEYWORD\",An=\"STATE_COMPRESSION\",Tn=\"STATE_LANG\",In=\"STATE_TRANSLATED_KEYWORD\",Pn=\"STATE_TEXT\",Sn=1,On=1,wn=6;function Un(e,t,n,r,i){for(var o,a=[],f=[],s=[],c=xn,l=u,d=0;d<n&&t+d<e.byteLength;d++)if(c!==An){if(c===Pn){o=new DataView(e.buffer.slice(t+d,t+n));break}var p=e.getUint8(t+d);0===p?c=En(r,c):c===xn?a.push(p):c===Tn?f.push(p):c===In&&s.push(p)}else l=Cn({type:r,dataView:e,offset:t+d}),r===re&&(d+=Sn),c=En(r,c);if(l!==u&&!i)return{};var g=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"string\";if(0===t&&\"function\"==typeof DecompressionStream){var i=new DecompressionStream(\"deflate\"),o=new Blob([e]).stream().pipeThrough(i);return\"dataview\"===r?new Response(o).arrayBuffer().then(function(e){return new DataView(e)}):new Response(o).arrayBuffer().then(function(e){return new TextDecoder(n).decode(e)})}return void 0!==t?Promise.reject(\"Unknown compression method \".concat(t,\".\")):e}(o,l,function(e){return e===ne||e===ie?\"latin1\":\"utf-8\"}(r));return g instanceof Promise?g.then(function(e){return Rn(e,r,f,a)}).catch(function(){return Rn(\"<text using unknown compression>\".split(\"\"),r,f,a)}):Rn(g,r,f,a)}function Cn(e){var t=e.type,n=e.dataView,r=e.offset;if(t===re){if(n.getUint8(r)===On)return n.getUint8(r+1)}else if(t===ie)return n.getUint8(r);return u}function En(e,t){return t===xn&&[re,ie].includes(e)?An:t===An?e===re?Tn:Pn:t===Tn?In:Pn}function Rn(e,t,r,i){var o=function(e){return e instanceof DataView?n(e,0,e.byteLength):e}(e);return{name:kn(t,r,i),value:o,description:t===re?Nn(e):o}}function kn(e,t,n){var r=i(n);if(e===ne||0===t.length)return r;var o=i(t);return\"\".concat(r,\" (\").concat(o,\")\")}function Nn(e){return mt(\"UTF-8\",e)}function Fn(e,t){return\"raw profile type exif\"===e.toLowerCase()&&\"exif\"===t.substring(1,5)}function Ln(e,t){return\"raw profile type iptc\"===e.toLowerCase()&&\"iptc\"===t.substring(1,5)}function jn(e){return function(e){for(var t=new DataView(new ArrayBuffer(e.length/2)),n=0;n<e.length;n+=2)t.setUint8(n/2,parseInt(e.substring(n,n+2),16));return t}(e.match(/\\n(exif|iptc)\\n\\s*\\d+\\n([\\s\\S]*)$/)[2].replace(/\\n/g,\"\"))}var Gn={read:function(e,t){for(var r={},i=0;i<t.length;i++){var o=Ge.getLongAt(e,t[i]+Z),u=n(e,t[i]+Q,$);u===oe?(r[\"Pixels Per Unit X\"]=Mn(e,t[i],o),r[\"Pixels Per Unit Y\"]=_n(e,t[i],o),r[\"Pixel Units\"]=Dn(e,t[i],o)):u===ue&&(r[\"Modify Date\"]=Bn(e,t[i],o))}return r}};function Mn(e,t,n){if(zn(e,t,n,0,4)){var r=Ge.getLongAt(e,t+ee+0);return{value:r,description:\"\"+r}}}function _n(e,t,n){if(zn(e,t,n,4,4)){var r=Ge.getLongAt(e,t+ee+4);return{value:r,description:\"\"+r}}}function Dn(e,t,n){if(zn(e,t,n,8,1)){var r=Ge.getByteAt(e,t+ee+8);return{value:r,description:1===r?\"meters\":\"Unknown\"}}}function Bn(e,t,n){if(zn(e,t,n,0,7)){var r=Ge.getShortAt(e,t+ee),i=Ge.getByteAt(e,t+ee+2),o=Ge.getByteAt(e,t+ee+3),u=Ge.getByteAt(e,t+ee+4),a=Ge.getByteAt(e,t+ee+5),f=Ge.getByteAt(e,t+ee+6);return{value:[r,i,o,u,a,f],description:\"\".concat(Hn(r,4),\"-\").concat(Hn(i,2),\"-\").concat(Hn(o,2),\" \").concat(Hn(u,2),\":\").concat(Hn(a,2),\":\").concat(Hn(f,2))}}}function zn(e,t,n,r,i){return r+i<=n&&t+ee+r+i<=e.byteLength}function Hn(e,t){return\"\".concat(\"0\".repeat(t-(\"\"+e).length)).concat(e)}var Vn={read:function(e,t){var n={},r=Ge.getByteAt(e,t);return n.Alpha=function(e){var t=16&e;return{value:t?1:0,description:t?\"Yes\":\"No\"}}(r),n.Animation=function(e){var t=2&e;return{value:t?1:0,description:t?\"Yes\":\"No\"}}(r),n.ImageWidth=Xn(e,t+Wn),n.ImageHeight=Xn(e,t+Kn),n}},Wn=4,Kn=7;function Xn(e,t){var n=Ge.getByteAt(e,t)+256*Ge.getByteAt(e,t+1)+65536*Ge.getByteAt(e,t+2)+1;return{value:n,description:n+\"px\"}}var Jn=[6,7,99],Yn={get:function(e,t,n){if((f=t)&&(void 0===f.Compression||Jn.includes(f.Compression.value))&&f.JPEGInterchangeFormat&&f.JPEGInterchangeFormat.value&&f.JPEGInterchangeFormatLength&&f.JPEGInterchangeFormatLength.value){t.type=\"image/jpeg\";var r=n+t.JPEGInterchangeFormat.value;t.image=e.buffer.slice(r,r+t.JPEGInterchangeFormatLength.value),u=function(){return e=this.image,\"undefined\"!=typeof btoa?\"string\"==typeof e?btoa(e):btoa(Array.prototype.reduce.call(new Uint8Array(e),function(e,t){return e+String.fromCharCode(t)},\"\")):\"undefined\"!=typeof Buffer?\"undefined\"!=typeof Buffer.from?Buffer.from(e).toString(\"base64\"):new Buffer(e).toString(\"base64\"):void 0;var e},a=0,Object.defineProperty(i=t,o=\"base64\",{get:function(){return a||(a=1,Object.defineProperty(i,o,{configurable:1,enumerable:1,value:u.apply(i),writable:1})),i[o]},configurable:1,enumerable:1})}var i,o,u,a,f;return t}},qn={get:function(e,t){var n,r={},i=0,o=$n(e,\"exif\",\"FocalLength\",t),u=$n(e,\"exif\",\"FocalPlaneXResolution\",t),a=$n(e,\"exif\",\"FocalPlaneYResolution\",t),f=$n(e,\"exif\",\"FocalPlaneResolutionUnit\",t),s=$n(e,\"file\",\"Image Width\",t),c=$n(e,\"file\",\"Image Height\",t),l=$n(e,\"exif\",\"FocalLengthIn35mmFilm\",t)||function(e,t,n,r,i,o){if(e&&t&&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=e[0]/e[1]*u,f=i/(t[0]/t[1]*u),s=Math.sqrt(Math.pow(r/a,2)+Math.pow(f,2));return o[0]/o[1]*(43.27/s)}catch(e){}}(u,a,f,s,c,o);l&&(r.FocalLength35efl={value:l,description:(n=l,0===n?\"Unknown\":n+\" mm\")},i=1);var d=function(e,t){if(e&&t)try{var n=t/(e[0]/e[1]);return{value:n,description:n.toFixed(1)}}catch(e){}}(o,l);d&&(r.ScaleFactorTo35mmEquivalent=d,i=1);var p=function(e){if(e)try{var t=2*Math.atan(36/(2*e))*(180/Math.PI);return{value:t,description:t.toFixed(1)+\" deg\"}}catch(e){}}(l);if(p&&(r.FieldOfView=p,i=1),i)return r}};function $n(e,t,n,r){return r&&e[t]&&e[t][n]?e[t][n].value:!r&&e[n]?e[n].value:void 0}function Zn(e){for(var t=e.mergeSteps,n=e.deferredResults,r=e.parsedGroups,i=e.expanded,o=e.tagFilter,u=e.dataView,a=e.tiffHeaderOffset,f=e.fileType,s=e.pngTextChunks,c=e.pngTextIsAsync,l=e.thumbnailIfdTags,d=e.deps,p={},g=0;g<t.length;g++)p=Qn({step:t[g],deferredResults:n,parsedGroups:r,expanded:i,tagFilter:o,dataView:u,tiffHeaderOffset:a,fileType:f,thumbnailIfdTags:l,tags:p,deps:d});return i&&c&&o.shouldReturnGroup(\"png\")&&p.png&&(p.pngText=d.objectAssign({},p.png)),i&&o.shouldReturnGroup(\"png\")&&d.hasPngTextData(s)&&p.png&&!p.pngText&&(p.pngText=d.objectAssign({},p.png)),p}function Qn(e){var t=e.step,n=e.deferredResults,r=e.parsedGroups,i=e.expanded,o=e.tagFilter,u=e.dataView,a=e.tiffHeaderOffset,f=e.fileType,s=e.thumbnailIfdTags,c=e.tags,l=e.deps;if(\"mergeGroupAssign\"===t.type){var d=l.filterTagsForReturn(t.groupKey,t.parsedTags,o);return er(c,t.groupKey,d,i,l)}if(\"mergeGroupMerge\"===t.type){var p=l.filterTagsForReturn(t.groupKey,t.parsedTags,o);return function(e,t,n,r,i){return r?(e[t]?e[t]=i.objectAssign({},e[t],n):e[t]=n,e):i.objectAssign({},e,n)}(c,t.groupKey,p,i,l)}if(\"mergeXmpGroupAssign\"===t.type){var g=l.filterTagsForReturn(\"xmp\",t.parsedTags,o);if(i)return c.xmp=g,c;var v=l.objectAssign({},g);return delete v._raw,l.objectAssign({},c,v)}if(\"mergeIccDeferred\"===t.type){var h=n[t.deferredKey],m=l.filterTagsForParse(\"icc\",h,o);return r.icc=m,o.shouldReturnGroup(\"icc\")?er(c,\"icc\",l.filterTagsForReturn(\"icc\",m,o),i,l):c}if(\"mergePngFile\"===t.type){var y=l.filterTagsForReturn(\"png\",t.parsedTags,o);return o.shouldReturnGroup(\"png\")?i?(c.png=c.png?l.objectAssign({},c.png,y):y,c.pngFile=y,c):l.objectAssign({},c,y):c}if(\"mergePngChunk\"===t.type){var b=l.filterTagsForReturn(\"png\",t.parsedTags,o);return o.shouldReturnGroup(\"png\")?i?(c.png=c.png?l.objectAssign({},c.png,b):b,c):l.objectAssign({},c,b):c}if(\"processPngTextReadTags\"===t.type)return tr({readTags:t.readTags,parsedGroups:r,expanded:i,tagFilter:o,tags:c,deps:l});if(\"processPngTextReadTagsDeferredList\"===t.type){for(var x=n[t.deferredKey]||[],A=0;A<x.length;A++)c=tr({readTags:x[A],parsedGroups:r,expanded:i,tagFilter:o,tags:c,deps:l});return c}if(\"gps\"===t.type){if(i&&o.shouldReturnGroup(\"gps\")&&r.exif){var T=l.getGpsGroupFromExifTags(r.exif);if(T){var I=l.filterTagsForReturn(\"gps\",T,o);c.gps=I}}return c}if(\"composite\"===t.type){if(!o.shouldReturnGroup(\"composite\"))return c;var P=c,S=i;o.isActive&&(P={exif:r.exif,file:r.file},S=1);var O=l.Composite.get(P,S);return O?er(c,\"composite\",l.filterTagsForReturn(\"composite\",O,o),i,l):c}if(\"thumbnail\"===t.type){if(!o.shouldReturnGroup(\"thumbnail\")||!o.shouldReturnTag(\"thumbnail\",\"Thumbnail\"))return delete c.Thumbnail,c;if(!s)return c;var w=s?l.filterTagsForParse(\"thumbnail\",s,o):void 0;w&&(r.thumbnail=w);var U=(l.Constants.USE_JPEG||l.Constants.USE_WEBP)&&l.Constants.USE_EXIF&&l.Constants.USE_THUMBNAIL&&l.Thumbnail.get(u,w,a);return U?c.Thumbnail=U:delete c.Thumbnail,c}return\"fileType\"===t.type?(f&&o.shouldReturnGroup(\"file\")&&o.shouldReturnTag(\"file\",\"FileType\")&&(i?(c.file||(c.file={}),c.file.FileType=f):c.FileType=f),c):c}function er(e,t,n,r,i){return r?(e[t]=n,e):i.objectAssign({},e,n)}function tr(e){var t=e.readTags,n=e.parsedGroups,r=e.expanded,i=e.tagFilter,o=e.tags,u=e.deps,a=t.__exif,f=t.__iptc;if(delete t.__exif,delete t.__iptc,a){var s=u.filterTagsForParse(\"exif\",a,i);if(n.exif=n.exif?u.objectAssign({},n.exif,s):s,i.shouldReturnGroup(\"exif\")){var c=u.filterTagsForReturn(\"exif\",s,i);r?o.exif=o.exif?u.objectAssign({},o.exif,c):c:o=u.objectAssign({},o,c)}}if(f){var l=u.filterTagsForParse(\"iptc\",f,i);if(n.iptc=n.iptc?u.objectAssign({},n.iptc,l):l,i.shouldReturnGroup(\"iptc\")){var d=u.filterTagsForReturn(\"iptc\",l,i);r?o.iptc=o.iptc?u.objectAssign({},o.iptc,d):d:o=u.objectAssign({},o,d)}}if(i.shouldReturnGroup(\"png\")){var p=u.filterTagsForParse(\"png\",t,i),g=u.filterTagsForReturn(\"png\",p,i);n.pngText=p,r?(o.png=o.png?u.objectAssign({},o.png,g):g,g&&Object.keys(g).length>0&&(o.pngText=o.pngText?u.objectAssign({},o.pngText,g):g)):o=u.objectAssign({},o,g)}return o}function nr(e){this.name=\"MetadataMissingError\",this.message=e||\"No Exif data\",this.stack=Error().stack}nr.prototype=Error();var rr={MetadataMissingError:nr},ir={load:ur,loadView:fr,errors:rr},or=rr;function ur(e){var t,n,r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(function(e){return\"string\"==typeof e}(e)){if(i.async=1,\"undefined\"==typeof Promise)throw Error(\"Promise is required when async mode is enabled.\");return function(e,t){return/^\\w+:\\/\\//.test(e)?\"undefined\"!=typeof fetch?function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).length,n={method:\"GET\"};return Number.isInteger(t)&&t>=0&&(n.headers={range:\"bytes=0-\".concat(t-1)}),fetch(e,n).then(function(e){return e.arrayBuffer()})}(e,t):function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).length;return new Promise(function(n,r){var i={};Number.isInteger(t)&&t>=0&&(i.headers={range:\"bytes=0-\".concat(t-1)});var o=function(e){return/^https:\\/\\//.test(e)?require(\"https\").get:require(\"http\").get}(e);o(e,i,function(e){if(e.statusCode>=200&&e.statusCode<=299){var t=[];e.on(\"data\",function(e){return t.push(Buffer.from(e))}),e.on(\"error\",function(e){return r(e)}),e.on(\"end\",function(){return n(Buffer.concat(t))})}else r(\"Could not fetch file: \".concat(e.statusCode,\" \").concat(e.statusMessage)),e.resume()}).on(\"error\",function(e){return r(e)})})}(e,t):function(e){return/^data:[^;,]*(;base64)?,/.test(e)}(e)?Promise.resolve(function(e){var t=e.substring(e.indexOf(\",\")+1);if(-1!==e.indexOf(\";base64\")){if(\"undefined\"!=typeof atob)return Uint8Array.from(atob(t),function(e){return e.charCodeAt(0)}).buffer;if(\"undefined\"==typeof Buffer)return;return\"undefined\"!=typeof Buffer.from?Buffer.from(t,\"base64\"):new Buffer(t,\"base64\")}var n=decodeURIComponent(t);return\"undefined\"!=typeof Buffer?\"undefined\"!=typeof Buffer.from?Buffer.from(n):new Buffer(n):Uint8Array.from(n,function(e){return e.charCodeAt(0)}).buffer}(e)):function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).length;return new Promise(function(n,r){var i=function(){try{return require(\"fs\")}catch(e){return}}();i.open(e,function(o,u){o?r(o):i.stat(e,function(o,a){if(o)r(o);else{var f=Math.min(a.size,void 0!==t?t:a.size),s=Buffer.alloc(f),c={buffer:s,length:f};i.read(u,c,function(t){t?r(t):i.close(u,function(t){t&&console.warn(\"Could not close file \".concat(e,\":\"),t),n(s)})})}})})})}(e,t)}(e,i).then(function(e){return ar(e,i)})}if(function(e){return\"undefined\"!=typeof File&&e instanceof File}(e)){if(i.async=1,\"undefined\"==typeof Promise)throw Error(\"Promise is required when async mode is enabled.\");return(t=e,n=i,r=n.length,new Promise(function(e,n){var i=new FileReader;i.onload=function(t){return e(t.target.result)},i.onerror=function(){return n(i.error)},Number.isInteger(r)&&r>=0&&void 0!==t.slice?i.readAsArrayBuffer(t.slice(0,r)):i.readAsArrayBuffer(t)})).then(function(e){return ar(e,i)})}return ar(e,i)}function ar(e,t){return function(e){try{return Buffer.isBuffer(e)}catch(e){return 0}}(e)&&(e=new Uint8Array(e).buffer),fr(function(e){try{return new DataView(e)}catch(t){return new s(e)}}(e),t)}function fr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{expanded:0,async:0,computed:0,includeUnknown:0,domParser:void 0,includeTags:void 0,excludeTags:void 0},n=t.expanded,r=void 0===n?0:n,i=t.async,u=void 0===i?0:i,a=t.computed,f=void 0===a?0:a,s=t.includeUnknown,l=void 0===s?0:s,d=t.domParser,p=void 0===d?void 0:d,g=t.includeTags,v=void 0===g?void 0:g,h=t.excludeTags,m=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.includeTags,n=e.excludeTags,r=!!t,i=!!n,o=r||i,u=Object.create(null),a=Object.create(null),f=Object.create(null);if(!o)return Xe();var s=r&&($e(t,\"iptc\")||$e(t,\"xmp\")||$e(t,\"icc\")||$e(t,\"photoshop\")||$e(t,\"makerNotes\")||$e(t,\"thumbnail\")||$e(t,\"gps\")||$e(t,\"composite\")),c=r&&$e(t,\"composite\"),l=Object.create(null);r&&(l=function(e){var t=function(e){var t=Object.create(null);if(!e)return t;for(var n in Array.isArray(e.exif)&&e.exif.length>0&&(t[He.exifIfdPointer]=1,function(e,t){for(var n=0;n<t.length;n++){var r=t[n];if(\"string\"==typeof r){var i=r.toLowerCase();0===i.indexOf(\"gps\")&&(e[He.gpsInfoIfdPointer]=1),0!==i.indexOf(\"interoperability\")&&0!==i.indexOf(\"relatedimage\")||(e[He.interoperabilityIfdPointer]=1)}}}(t,e.exif)),Ve)if(Ke(e[n])){for(var r=Ve[n],i=0;i<r.length;i++)t[r[i]]=1;t[He.exifIfdPointer]=1}return Ke(e.gps)&&(t[He.gpsInfoIfdPointer]=1,t[He.exifIfdPointer]=1),t}(e);return $e(e,\"composite\")&&function(e,t){for(var n=0;n<t.length;n++)e[t[n]]=1}(t,We.exif),t}(t));var d=Object.create(null);for(var p in r&&c&&(d=function(e){for(var t=Object.create(null),n=0;n<e.length;n++)t[e[n].toLowerCase()]=1;return t}(We.file)),ze){var g=r&&Object.prototype.hasOwnProperty.call(t,p),v=void 0;i&&Object.prototype.hasOwnProperty.call(n,p)&&!g&&(v=n[p]);var h=Qe({groupKey:p,includeValue:g?t[p]:void 0,excludeValue:v,extraIncludeNames:Object.create(null)});u[p]=r?g:1,g&&Ze(t[p])&&(u[p]=0),h.excludeAll&&(u[p]=0),a[p]=h;var m=Qe({groupKey:p,includeValue:Ye({groupKey:p,hasIncludeTags:r,hasIncludeEntry:g,includeTags:t,shouldParseExif:s,shouldParseFile:c}),excludeValue:v,extraIncludeNames:qe({groupKey:p,hasIncludeTags:r,hasIncludeEntry:g,shouldParseExif:s,shouldParseFile:c,exifIncludeDependencies:l,fileIncludeDependencies:d})});f[p]=m}return{isActive:o,shouldReturnGroup:y,shouldParseGroup:b,shouldReturnTag:function(e,t,n){return ze[e]?y(e)?et(a[e],t,n):0:1},shouldParseTag:function(e,t,n){return ze[e]?b(e)?et(f[e],t,n):0:1}};function y(e){return ze[e]?!!u[e]:1}function b(e){return ze[e]?y(e)?1:\"exif\"===e?s:\"file\"===e?c:0:1}}({includeTags:v,excludeTags:void 0===h?void 0:h}),y=Object.create(null),b=[],x=Object.create(null),A=[],T=0,I=void 0,P=void 0,S=Se.parseAppMarkers(e,u),O=S.fileType,w=S.fileDataOffset,U=S.jfifDataOffset,C=S.tiffHeaderOffset,E=S.iptcDataOffset,R=S.xmpChunks,k=S.iccChunks,N=S.mpfDataOffset,F=S.pngHeaderOffset,L=S.pngTextChunks,j=S.pngChunkOffsets,G=S.vp8xChunkOffset,M=S.gifHeaderOffset,_=function(e){var t=e.iptcDataOffset,n=e.xmpChunks,r=e.pngTextChunks,i=e.pngChunkOffsets,o=e.vp8xChunkOffset;return!!e.fileType||pr(e.tiffHeaderOffset)||gr(t)||vr(n)||hr(r)||mr(i)||yr(o)||0}({fileType:O,fileDataOffset:w,jfifDataOffset:U,tiffHeaderOffset:C,iptcDataOffset:E,xmpChunks:R,iccChunks:k,mpfDataOffset:N,pngHeaderOffset:F,pngTextChunks:L,pngChunkOffsets:j,vp8xChunkOffset:G,gifHeaderOffset:M});if(pr(C)&&m.shouldParseGroup(\"exif\")){var D=dt.read(e,C,l,f,m),B=D.tags;D.byteOrder,B.Thumbnail&&(I=B.Thumbnail,delete B.Thumbnail);var z=sr(\"exif\",B,m);y.exif=z,z.MakerNote&&delete z.MakerNote.__offset,m.shouldReturnGroup(\"exif\")&&b.push({type:\"mergeGroupAssign\",groupKey:\"exif\",parsedTags:z}),!r&&P&&(b.push(P),P=void 0)}if(gr(E)&&m.shouldParseGroup(\"iptc\")){var H=sr(\"iptc\",yt.read(e,E,l,m),m);y.iptc=H,m.shouldReturnGroup(\"iptc\")&&b.push({type:\"mergeGroupAssign\",groupKey:\"iptc\",parsedTags:H})}if(vr(R)&&m.shouldParseGroup(\"xmp\")){var V=sr(\"xmp\",Vt.read(e,R,p),m);y.xmp=V,m.shouldReturnGroup(\"xmp\")&&b.push({type:\"mergeXmpGroupAssign\",parsedTags:V})}if(hr(L)&&(m.shouldParseGroup(\"png\")||m.shouldParseGroup(\"exif\")||m.shouldParseGroup(\"iptc\"))){var W=bn.read(e,L,u,l,f,m),K=W.readTags,X=W.readTagsPromise;T=!!X,b.push({type:\"processPngTextReadTags\",readTags:K}),X&&(A.push(X.then(function(e){x.pngTextTagList=e})),b.push({type:\"processPngTextReadTagsDeferredList\",deferredKey:\"pngTextTagList\"}))}if(mr(j)&&m.shouldParseGroup(\"png\")){var J=sr(\"png\",Gn.read(e,j),m);y.pngChunk=J,m.shouldReturnGroup(\"png\")&&b.push({type:\"mergePngChunk\",parsedTags:J})}if(yr(G)&&m.shouldParseGroup(\"riff\")){var Y=sr(\"riff\",Vn.read(e,G),m);y.riff=Y,m.shouldReturnGroup(\"riff\")&&b.push({type:\"mergeGroupMerge\",groupKey:\"riff\",parsedTags:Y})}if(b.push({type:\"gps\"}),b.push({type:\"composite\"}),b.push({type:\"thumbnail\"}),b.push({type:\"fileType\"}),!_)throw new rr.MetadataMissingError;var q={objectAssign:o,hasPngTextData:hr,filterTagsForParse:sr,filterTagsForReturn:cr,getGpsGroupFromExifTags:dr,Constants:c,Composite:qn,Thumbnail:Yn};if(u){if(\"undefined\"==typeof Promise)throw Error(\"Promise is required when async mode is enabled.\");return Promise.all(A).then(function(){return Zn({mergeSteps:b,deferredResults:x,parsedGroups:y,expanded:r,tagFilter:m,dataView:e,tiffHeaderOffset:C,fileType:O,pngTextChunks:L,pngTextIsAsync:T,thumbnailIfdTags:I,deps:q})})}return Zn({mergeSteps:b,deferredResults:x,parsedGroups:y,expanded:r,tagFilter:m,dataView:e,tiffHeaderOffset:C,fileType:O,pngTextChunks:L,pngTextIsAsync:T,thumbnailIfdTags:I,deps:q})}function sr(e,t,n){return n.isActive?lr(e,t,n.shouldParseTag):t}function cr(e,t,n){return n.isActive?lr(e,t,n.shouldReturnTag):t}function lr(e,t,n){if(!t)return t;var r={};for(var i in t){var o=t[i];n(e,i,u(o))&&(r[i]=o)}return r;function u(e){if(e){if(Array.isArray(e)){if(0===e.length)return;return e[0].id}return e.id}}}function dr(e){var t=void 0;if(e.GPSLatitude&&e.GPSLatitudeRef){t=t||{};try{t.Latitude=l(e.GPSLatitude.value),\"S\"===e.GPSLatitudeRef.value.join(\"\")&&(t.Latitude=-t.Latitude)}catch(e){}}if(e.GPSLongitude&&e.GPSLongitudeRef){t=t||{};try{t.Longitude=l(e.GPSLongitude.value),\"W\"===e.GPSLongitudeRef.value.join(\"\")&&(t.Longitude=-t.Longitude)}catch(e){}}if(e.GPSAltitude&&e.GPSAltitudeRef){t=t||{};try{t.Altitude=e.GPSAltitude.value[0]/e.GPSAltitude.value[1],1===e.GPSAltitudeRef.value&&(t.Altitude=-t.Altitude)}catch(e){}}if(t)return t}function pr(e){return void 0!==e}function gr(e){return void 0!==e}function vr(e){return Array.isArray(e)&&e.length>0}function hr(e){return Array.isArray(e)&&e.length>0}function mr(e){return void 0!==e}function yr(e){return void 0!==e}return t}()});\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 &rsquo;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 &rsquo;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 onKeyDown={(e) => {\n if (\n e.key === 'Enter' &&\n !e.ctrlKey &&\n !e.metaKey &&\n !e.isComposing\n ) {\n e.preventDefault();\n focusTextarea();\n }\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=\"alert\" /> <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 icon=\"alert\" alt={_(ADD_LABELS.sensitive)} />\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-6wkLWCrG.js"}