{"version":3,"mappings":"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","names":["t","e","s","o","n$7","r","n","i","S","c","h","a","l","p","d","u","f","y","b$1","_a","b","v","_","m","g","$","x","w","T","A","E","C","P","V","k","H","I","R","N","_b","S$1","M","L","M$1","R$1","k$1","I$1","L$1","z","Z","j","s$4","sharedStyles","css","registerServiceWorkerWithWorkbox","path","wb","Workbox","shuffleArray","arr","copy","pickRandomItems","pickRandomItem","paginateItems","items","callback","pageSize","parallel","pageItems","item","parseSectionsInText","text","sections","lines","line","END_MARKER","regex","matches","match","_c","parts","unquotify","removeEndPunctuation","pairs","pair","countMatches","unmarkdownify","pascalToKebabCase","str","commaListifyText","lastSeparator","len","uppercaseFirstLetter","hasValue","sanitizeHTML","highlightText","query","isHTML","removeSpecialCharacters","truncateString","maxLength","separator","firstPart","lastPart","needle","joinSentences","sentences","filteredSentences","sentence","extractEmojisFromText","emojiRegex","emojis","cleanedText","extractElementsFromText","newText","details","part","images","alt","src","toBinaryStr","charCodes","fromBinaryStr","binaryStr","decoder","char","COLOR_WHITE","COLOR_BLACK","COLOR_WHITE_DIRTY","COLOR_WHITE_DIRTIER","COLOR_BLACK_DIRTY","COLOR_DARK","COLOR_LIGHT","MS_TEAMS_BACKGROUND_LIGHT","MS_TEAMS_BACKGROUND_DARK","STRIBES_DARK","STRIBES_LIGHT","COLOR_LIGHT_RED","COLOR_RED","COLOR_PINK","COLOR_PURPLE","COLOR_OCEAN_BLUE","COLOR_BLUE","COLOR_TURQUOISE","COLOR_GREEN","COLOR_DEEP_GREEN","COLOR_LIME_GREEN","COLOR_LIME_YELLOW","COLOR_YELLOW","COLOR_ORANGE","COLOR_BROWN","COLOR_GREY","COLOR_SHADE","COLOR_SHADE_DARK_MODE","COLOR_SHADE_CONTRAST_MODE","COLOR_MODE_COLORS","PALETTE","QUICK_COLORS","getRandomMindmapPaletteColorIndex","getRandomColor","palette","variants","colors","color","variant","getContrastColor","hex","isHex","crypto","uuidv4","seed","djb2Hash","input","hash","makeId","isId","id","takeId","ref","cmpIds","refA","refB","isModel","sleep","ms","resolve","debounceMap","throttleMap","clearDebounce","debounce","cb","options","throttle","last","now","emojiToUnicode","emojiToUnicodeRaw","val","MAX_FILE_SIZE_MB","MAX_FILE_SIZE_BYTES","emojiMediaUrl","baseUrl","emoji","kind","unicode","defaultUserAvatarUrl","mediaUrl","media","WorkspaceAccessRankKind","WORKSPACE_ACCESS_RANKS","RoomAccessRoleKind","ROOM_ACCESS_ROLES","DEFAULT_REACTIONS","DEFAULT_AI_CONTENT_LENGTH","DEFAULT_AI_ACTION_ATTRIBUTE","DEFAULT_LANGUAGE_CODE","canEditIdea","room","idea","sessionUser","canFacilitateRoom","getSessionUserIdCookieName","env","parseAIActionOutput","rawOutput","outputKind","parseAIActionResultAsText","parseAIActionResultAsList","parseAIActionResultsAsSections","parseAIActionResultsAsMindmap","LIST_ITEM_PREFIX_REGEX","hasListItemPrefix","parseAIActionResultListItem","sectionsWithListItems","title","content","rootNodes","nodeStack","prevWasEmptyLevel","isLastLine","level","newNode","LANGUAGE_CODES","getLanguageEmoji","language","languageCodeToISO","languageCode","findBestLanguageCode","locale","code","cleanEventName","name","errorToEventName","error","aiActionKindToEventName","EVENT_IDEA_CREATE","EVENT_IDEA_REMOVE","EVENT_IDEA_COLLAPSE","EVENT_IDEA_EXPAND","EVENT_IDEA_COLOR_UPDATE","EVENT_IDEA_UPLOAD_SKETCH","EVENT_IDEA_UPLOAD_ATTACHMENT","EVENT_IDEA_SHARE","EVENT_IDEA_COPY","EVENT_IDEA_DETACH","EVENT_IDEA_GROUP_ON","EVENT_IDEA_GROUP_OFF","EVENT_IDEA_TURN_INTO_ROOM","EVENT_IDEA_FOLD","EVENT_IDEA_UNFOLD","EVENT_ROOM_CREATE","EVENT_ROOM_UPDATE","EVENT_ROOM_REMOVE","EVENT_ROOM_JOIN","EVENT_ROOM_LEAVE","EVENT_ROOM_SHARE_OPEN","EVENT_ROOM_SHARE_OPTION_OPEN","EVENT_ROOM_DETAILS_OPEN","EVENT_ROOM_EDIT_OPEN","EVENT_ROOM_EXPORT_IDEAS_OPEN","EVENT_ROOM_MANAGE_PARTICIPANTS_OPEN","EVENT_USER_CREATE","EVENT_USER_UPDATE","EVENT_USER_REMOVE","EVENT_USER_SIGN_UP","EVENT_USER_SIGN_IN","EVENT_GUEST_SIGN_UP","EVENT_GUEST_SIGN_IN","EVENT_USER_DELETE_ACCOUNT","EVENT_CTA_GET_STARTED_CLICK","EVENT_CTA_SAVE_IDEAS_CLICK","EVENT_CTA_BRAINSTORM_CLICK","EVENT_LANDING_ROOM_CREATE","EVENT_LANDING_ROOM_ERROR","EVENT_WORKSPACE_CREATE","EVENT_WORKSPACE_DELETE","EVENT_UNHANDLED_ERROR","err","EVENT_TEAMS_AUTH_TOKEN_ERROR","EVENT_AI_USE","EVENT_AI_ERROR","EVENT_AI_CONTENT_FILTER_TRIGGERED","EVENT_POLL_CREATE","EVENT_POLL_REMOVE","EVENT_FEATURE_OVERVIEW_OPEN","feature","EVENT_FEATURE_WALL_OPEN","EVENT_PLAN_SELECTION_OPEN","EVENT_PLAN_OPEN","plan","EVENT_TIMER_START","EVENT_TIMER_STOP","EVENT_TIMER_PAUSE","EVENT_GAME_OPEN","game","EVENT_GAME_START","EVENT_GAME_FINISH","EVENT_TOOLBOX_OPEN","EVENT_MUSIC_PLAY","EVENT_RATE_LIMITED_OPEN","EVENT_ONBOARDING_FINISH","EVENT_LIGHT_BOX_OPEN","EVENT_MANAGE_OPEN","tab","EVENT_SEARCH_OPEN","EVENT_TOOL_OPEN","tool","EVENT_SURVEY_OPEN","EVENT_UPSELL_OPEN","EVENT_CHANGELOG_OPEN","EVENT_LIVECHAT_OPEN","EVENT_CONTACT_SALES_OPEN","EVENT_VERSION_HISTORY_OPEN","EVENT_RESTORE_VERSION","BUILT_IN_AI_ACTION_KIND_TO_ID_MAP","builtInAIActionKindToId","builtInActionIdToKind","actionId","API_ERROR_KINDS","API_ERROR_STATUS_CODES","APIError","message","includeStack","obj","stack","apiError","statusCode","isAPIError","DEFAULT_MINDMAP_LAYOUT_KIND","DEFAULT_MINDMAP_PALETTE_KIND","setItem","key","value","parser","getItem","data","removeItem","isMobile","selectTextInInput","$input","trimText","length","isEmoji","getInitials","maxLettersCount","word","stopEvent","getRandomHexColor","wait","promisifyAnimation","animation","res","rej","roundToNearest","number","nearest","round","num","leadingZero","isNumber","capitalizeFirstLetter","string","attachOutsideClickListener","$elem","isActive","capture","prevent","listener","didClickSameElementType","elem","removeListener","createRange","from","to","removeUndefinedProperties","newObj","waitForNextAnimationFrame","checkBounds","justify","align","padding","$container","containerLeft","containerTop","containerRight","containerBottom","rect","isWithinBounds","availableSize","findFirstScrollableParent","closeAllDialogs","$dialog","getAppHeight","loadScript","defer","appendTo","script","IS_LOCAL_HOST","ENVIRONMENT","APP_BUILD_DATE","STATIC_ASSETS_PATH","getVersionTag","TEAMS_APP_ID","SERVICE_WORKER_ENABLED","IS_DEBUGGING","DPO_EMAIL","SUPPORT_EMAIL","SERVICE_WORKER_PATH","SENTRY_KEY","SENTRY_PROJECT_ID","SESSION_ID","UMAMI_PLAYGROUND_ID","UMAMI_LANDING_ID","UMAMI_WEBAPP_ID","IDEA_WIDGET_IDS","SURVEY_USER_CREATED_AT_THRESHOLD_DAYS","SURVEY_ALERT_INTERVAL_DAYS","SURVEY_CHANCE","UPSELL_USER_CREATED_AT_THRESHOLD_DAYS","UPSELL_ALERT_INTERVAL_DAYS","UPSELL_ALERT_CHANCE","ROUTES","section","slug","accessCode","DEFAULT_AVATAR_SIZE","QUERY_PARAMS","UTM_MEDIUM_PWA","MS_TEAMS_ENTITY_IDS","ROUTE_CHANGED_EVENT","MAX_IDEA_TEXT_LINES_BEFORE_TRUNCATE","MAX_IDEA_TEXT_CHARS_BEFORE_TRUNCATE","ASSETS_PATHS","MAX_ROOM_COVER_COUNT","DEFAULT_ROOM_COVER_URL","getCover","DEFAULT_ROBOT_AVATAR_URL","STORAGE_KEYS","roomId","DEFAULT_COLOR_MODE","MAX_VISIBLE_USERS_IN_ROOM","MAX_VISIBLE_USERS_IN_ROOM_CARD","API_BASE_URL","API_BASE_WS_URL","VOTING_RANK_SYMBOLS","UNNAMED_USER_NAME","POSITIVE_REACTIONS","EMOJI_FONT_NAME","DEFAULT_TIMER_MINUTES","DEFAULT_TIMER_SECONDS","DEFAULT_VOTING_SYMBOL","VOTING_SYMBOLS","DEFAULT_GROUP_STICKER","getRandomCover","getIsMenuOpenFromStorage","AI_ACTION_CONTAINER_GROUPS","getPlanEmojiPath","gif","DEFAULT_CURRENCY","DEVICE_PIXEL_RATIO","INTERCOM_APP_ID","DEFAULT_MAX_FILE_SIZE_BYTES","extendStatics","__extends","__","__awaiter","thisArg","_arguments","generator","adopt","reject","fulfilled","step","rejected","result","__generator","body","verb","op","__values","__read","ar","__spreadArray","pack","__await","__asyncGenerator","q","resume","settle","fulfill","__asyncValues","isFunction","createErrorClass","createImpl","_super","instance","ctorFunc","UnsubscriptionError","errors","arrRemove","index","Subscription","initialTeardown","e_1","e_2","_parentage","_parentage_1","_parentage_1_1","parent_1","e_1_1","initialFinalizer","_finalizers","_finalizers_1","_finalizers_1_1","finalizer","execFinalizer","e_2_1","teardown","parent","empty","EMPTY_SUBSCRIPTION","isSubscription","config","timeoutProvider","handler","timeout","args","_i","handle","delegate","reportUnhandledError","noop","errorContext","Subscriber","destination","_this","EMPTY_OBSERVER","next","complete","SafeSubscriber","_bind","bind","fn","ConsumerObserver","partialObserver","handleUnhandledError","observerOrNext","context_1","defaultErrorHandler","observable","identity","pipeFromArray","fns","prev","Observable","subscribe","operator","subscriber","isSubscriber","source","sink","promiseCtor","getPromiseCtor","Symbol_observable","operations","isObserver","hasLift","operate","init","liftedSource","createOperatorSubscriber","onNext","onComplete","onError","onFinalize","OperatorSubscriber","shouldUnsubscribe","closed_1","ObjectUnsubscribedError","Subject","subject","AnonymousSubject","observer","observers","hasError","isStopped","thrownError","BehaviorSubject","_value","subscription","dateTimestampProvider","ReplaySubject","_bufferSize","_windowTime","_timestampProvider","_buffer","_infiniteTimeWindow","adjustedBufferSize","EMPTY","isScheduler","popResultSelector","popScheduler","popNumber","defaultValue","isArrayLike","isPromise","isInteropObservable","isAsyncIterable","createInvalidObservableTypeError","getSymbolIterator","iterator","isIterable","Symbol_iterator","readableStreamLikeToAsyncGenerator","readableStream","reader","done","isReadableStreamLike","innerFrom","fromInteropObservable","fromArrayLike","fromPromise","fromAsyncIterable","fromIterable","fromReadableStreamLike","obs","array","promise","iterable","iterable_1","iterable_1_1","asyncIterable","process","asyncIterable_1","asyncIterable_1_1","executeSchedule","parentSubscription","scheduler","work","delay","repeat","scheduleSubscription","observeOn","subscribeOn","scheduleObservable","schedulePromise","scheduleArray","scheduleIterable","scheduleAsyncIterable","scheduleReadableStreamLike","scheduled","EmptyError","firstValueFrom","hasConfig","map","project","isArray","callOrApply","mapOneOrManyArgs","getPrototypeOf","objectProto","getKeys","argsArgArrayOrObject","first_1","isPOJO","keys","createObject","values","combineLatest","resultSelector","observables","combineLatestInit","valueTransform","maybeSchedule","active","remainingFirstValues","_loop_1","hasFirstValue","execute","mergeInternals","concurrent","onBeforeNext","expand","innerSubScheduler","additionalFinalizer","buffer","isComplete","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","bufferedValue","mergeMap","ii","mergeAll","merge","sources","filter","predicate","scanInternals","accumulator","hasSeed","emitOnNext","emitBeforeComplete","hasState","state","defaultIfEmpty","take","count","seen","distinctUntilChanged","comparator","keySelector","defaultCompare","previousKey","first","currentKey","scan","share","connector","resetOnError","resetOnComplete","_d","resetOnRefCountZero","wrapperSource","connection","resetConnection","refCount","hasCompleted","hasErrored","cancelReset","reset","resetAndUnsubscribe","conn","dest","handleReset","on","onSubscriber","shareReplay","configOrBufferSize","windowTime","bufferSize","switchMap","innerSubscriber","innerIndex","outerIndex","tap","tapObserver","isUnsub","Store","sub","GlobalStore","filterMetaValue","meta","metaValue","action","subSuccessActionValue","ActionSubject","ActionSubjectCached","isAction","runAction","loading$","combinedLoading$","loading","errorAction","meta$","success$","appAction","setIsSandbox","setIsMobile","setIsMenuOpen","setIsPwa","define_process_env_default","getJoinWorkspaceUrl","link","getJoinRoomUrl","getRoomEmbedCode","isTextEmail","TeamsService","app","authentication","validMessageOrigins","success","theme","people","sharing","teamsService","url","entityId","entityLabel","appId","context","pages","validity","width","height","submitHandler","dialog","deeplink","profile","calendar","teamsAction","initializeTeams","getTeamsAuthToken","setTeamsContext","TeamsStore","token","teamsStore","sessionAction","takeFirst","ModelStore","callbacks","seenRefs","newObject","model","existing$","existingModel","nextModel","mergeNested","ids","list","idMap","modelObservables","mutate","newModel","obs$","patch","modelStore","model$","inputs","id$","modelList$","currentMeta","ids$","acc","models","uniqueIdList","list$","transformData","transform","hydrateGQLResult","dataToTransform","makeGQLQueryFromShapeAndArgs","rootKey","resultShape","opName","isMutation","gqlQueryShape","variables","makeGQLQueryFromShape","varArgParts","shapeArgParts","varType","varName","shape","buildShape","opts","queryParts","indent","gqlUnionSymbol","entries","aliasKey","namePart","gqlFunctionSymbol","argKey","argValue","resultPart","getSessionUserIdCookieValue","readCookie","signedCookie","getInitialSessionState","initialSessionUserId","initialSessionUser","initialSessionState","SessionStore","user","session","sessionStore","AppStore","initialized","isTeamsInitialized","isPwa","hasSession","appStore","getJoinRoomAccessCode","setHash","silent","pushState","replace","prevHref","dispatchRouteChangedEvent","addRouteChangedListener","addHashChangedListener","removeRouteChangedListener","getQueryParam","reloadApp","queryParams","Controller","host","store","updateMap","previousValues","isSettingUp","update","activityAction","caughtError","receiveActivity","activity","activity$","activityKind","mapCb","filterCb","activityCreate$","modelKind","activityRemove$","queryShadowRoot","root","skipNode","isMatch","maxDepth","depth","traverseSlot","$slot","assignedNodes","node","children","$child","isHidden","isDisabled","isFocusable","timeouts","template","FocusTrap","shadow","trapToEnd","focusableChildren","getDialogCount","setDialogCount","traverseActiveElements","activeElement","styles","WebDialog","newValue","oldValue","openDialog","$content","center","initialize","resolver","BsProgressSpinner","LitElement","html","__decorateClass","customElement","BsFormItem","props","resetMs","resetCustomValidity","$slottedInput","property","i$3","e$4","t$3","BsIcon","svg","when","unsafeSVG","ICON_NOTHING","ICON_TIME","ICON_WIZARD_HAT","ICON_SETTINGS","ICON_ZOOM_IN","ICON_ZOOM_OUT","ICON_FIT_VIEW","ICON_HAPPY","ICON_ADD_REACTION","ICON_WAND","ICON_SPARKS","ICON_CRYSTAL_BALL","ICON_PLUS","ICON_MINUS","ICON_PLUS_SQUARE","ICON_MORE","ICON_MORE_VERTICAL","ICON_MORE_CIRCLE","ICON_RATE","ICON_PLAY_CIRCLE","ICON_STOP_CIRCLE","ICON_PAUSE_CIRCLE","ICON_GRIP_LINES","ICON_CHEVRON_DOWN","ICON_CHEVRON_UP","ICON_INFO","ICON_TRASH","ICON_EDIT","ICON_TEXT","ICON_CLEAN","ICON_CLOSE","ICON_PLUS_CIRCLE","ICON_MINUS_CIRCLE","ICON_IMPORT","ICON_DOWNLOAD","ICON_CHEVRON_LEFT","ICON_CHEVRON_RIGHT","ICON_GROUPS","ICON_IDEA","ICON_QUESTION_MARK","ICON_COLLAPSE","ICON_QUESTION","ICON_SUCCESS_CIRCLE","ICON_SCHEDULE","ICON_GRID_VIEW","ICON_LIST_VIEW","ICON_BRAIN","ICON_TUNE","ICON_SHIELD","ICON_NOTIFICATION","ICON_WAVING_HAND","ICON_FOLLOW","ICON_COMMENT","ICON_UNFOLLOW","ICON_SEND","ICON_APPS","ICON_LINK","ICON_MENU","ICON_ERROR","ICON_BRUSH","ICON_REFRESH","ICON_IMAGE","ICON_POSTER","ICON_QR","ICON_USERS","ICON_CALENDAR","ICON_CODE","ICON_EMAIL","ICON_SMS","ICON_OFFICE","ICON_COPY","ICON_MANAGE_PEOPLE","ICON_ACCOUNT","ICON_GLOBE","ICON_LOCK","ICON_DISABLED","ICON_SPARK","ICON_THINKING","ICON_SUN","ICON_ELEVATOR","ICON_SCAMPER","ICON_SWOT","ICON_BUSINESS_MODEL_CANVAS","ICON_DASHBOARD","ICON_WARNING","ICON_SHAPES","ICON_BUNNY","ICON_THEATER","ICON_MEDIA","ICON_ATTACHMENT","ICON_UPLOAD_FILE","ICON_AUDIO","ICON_VIDEO","ICON_DOCUMENT","ICON_FILE_ERROR","ICON_DETACH","ICON_VOICE_RECORD","ICON_REDO","ICON_UNDO","ICON_MAGIC_LIGHTBULB","ICON_QUESTIONS","ICON_CLOSE_MENU","ICON_OPEN_MENU","ICON_HOME","ICON_UPGRADE","ICON_SHARE","ICON_START","ICON_SEARCH","ICON_EXPAND","ICON_UPDATE_AVAILABLE","ICON_LABEL","ICON_ARROW_DOWN","ICON_LIGHTNING","ICON_AGENDA","ICON_GOAL","ICON_MUSIC","ICON_ANALYTICS","ICON_CONCLUSION","ICON_GROW","ICON_TRIANGLE_DOWN","ICON_NEW_TAB","ICON_TOOLBOX","ICON_STORAGE_BOX","ICON_EXTRACT_IDEAS","ICON_STORAGE_SPREADSHEET","ICON_WORD_DOCUMENT","ICON_LOGOUT","ICON_MAINTENANCE","ICON_CHAT","ICON_FULLSCREEN","ICON_MINIMIZE","ICON_DONE","ICON_CARD","ICON_HAND","ICON_EXPERIMENT","ICON_UNICORN","ICON_LOCATION","ICON_FACTORY","ICON_MEGAPHONE","ICON_GAME","ICON_MERGE","ICON_TRANSFORM","ICON_REVERSE","ICON_HEADLINE","ICON_RIGHT_CIRCLE","ICON_ZOOM_TO_SELECTION","ICON_UNFOLD","ICON_FOLD","ICON_STICKER","ICON_STYLE","ICON_EXPAND_IDEA","ICON_MINDMAP","ICON_BUTTERFLY","BsDialogCloseButton","prepareDialogForWrapper","$d","BsDialogWrapper","LANG_CHANGED_EVENT","interpolate","extract","lookup","defaultTranslateConfig","translateConfig","registerTranslateConfig","dispatchLangChanged","detail","updateLang","newLang","newStrings","listenForLangChanged","use","lang","strings","get","translation","i$2","B","c$1","LangChangedDirectiveBase","AsyncDirective","getValue","TranslateDirective","translate","directive","getBestName","initialsLength","defaultName","nameLessThanMaxLength","getFriendlyUserGreeting","currentTime","includeName","getFriendlyUserMessage","messages","getFriendlyUserGreetingEmoji","workspaceAction","WorkspaceStore","workspace","workspaceId","workspaceStore","getColorModeColors","mode","saveColorMode","getColorModeFromStorage","isColorModeDark","$template","WebDialogWithClose","IDEA_WIDGET_URL","openAlert","render","openConfirmDelete","confirmText","cancelText","openConfirm","isDestructive","isHtml","maxWidth","unsafeCSS","unsafeHTML","openAwesomeDialog","icon","img","buttonText","__vitePreload","ifDefined","openPrompt","placeholder","required","openReportFeedback","debug","openIdeanoteWidget","openSurveyAlert","openSurvey","defaultValues","colorMode","params","SCRAMBLED_PATHS","scramblePath","getPageViewData","previousHref","EventService","tracker","trackers","debounceMs","eventService","setPaletteCSSProperties","setThemeColorCSSProperties","setThemeColorCSSProperty","cssVarName","setColorModeColors","themeAction","setColorMode","ThemeStore","themeStore","guessIsTeamsContext","getTeamsOrganizationName","ensureExternalLinkDialog","$anchor","href","openExternalLinkWithConfirm","openExternalLink","deferredPrompt","showInstallPrompt","canShowInstallPrompt","captureInstallPromptEvent","TOAST_CONTAINER_ID","getToastContainer","countToastsWithId","hideToastWithId","$existingToast","showToast","duration","buttons","label","$toast","BsToast","close","cancelAnimation","onClick","important","entityToNameWithCount","entityToName","singular","robotGroupKindToName","colorModeToName","authKindToName","continueWithAuthKindText","authName","roomAccessRoleToText","copilotStateKindToText","workspaceRankToName","rank","votingTypeToName","type","getDefaultVotingText","ideaKindToText","errorToText","booleanToText","exportKindToText","getPlanIntervalText","interval","getAIModelKindText","sensitivityKindToText","getAIActionAttributeText","getAIActionContentLengthText","getAIActionFormItemKindText","getTimeFormatText","unit","getMindmapLayoutName","workspaceKindToName","getBestBrowserLanguageCode","getAnonymousUserName","stabilityStylePresetToText","MAX_LATEST_EVENTS_TRACKED","DebugService","debugService","UmamiService","pageData","baseData","eventData","platform","website","umamiData","umamiService","roomAction","MINDMAP_SPACING_TINY","MINDMAP_SPACING_SMALL","MINDMAP_SPACING_MEDIUM","MINDMAP_SPACING_LARGE","MINDMAP_COLOR_WHITE","MINDMAP_COLOR_BLACK","MINDMAP_COLOR_WHITE_DIRTY","MINDMAP_COLOR_BLACK_DIRTY","MINDMAP_COLOR_SHADOW","MINDMAP_COLOR_TURQUOISE","loadCustomFonts","fonts","loadCustomFont","font","family","loadedFont","$style","BASE_URL","DEFAULT_FONTS","DEFAULT_MINDMAP_FONT","loadDefaultFonts","getFontMetrics","DEFAULT_PALETTE_COLOR","MINDMAP_THEME_PALETTE_COLORS_ENERGY","MINDMAP_THEME_PALETTE_COLORS_PASTEL","THEME_PALETTE_COLORS_CANDY","MINDMAP_THEME_PALETTE_COLORS_RUST","MINDMAP_THEME_PALETTE_COLORS_BRIGHT","MINDMAP_THEME_PALETTE_COLORS_FOREST","MINDMAP_THEME_PALETTE_COLORS_WAVES","MINDMAP_THEME_PALETTE_COLORS_NATURE","MINDMAP_THEME_PALETTE_COLORS_NOSTALGIA","MINDMAP_THEME_PALETTE_COLORS_GLOW","MINDMAP_THEME_PALETTE_COLORS_MURKY","MINDMAP_THEME_PALETTE_COLORS_FIRE","MINDMAP_THEME_PALETTE_COLORS_VACATION","MINDMAP_PREVIEW_MEDIA_URLS_LIGHT","MINDMAP_PREVIEW_MEDIA_URLS_DARK","DEFAULT_MINDMAP_PALETTE_LIGHT","DEFAULT_MINDMAP_PALETTE_DARK","DEFAULT_MINDMAP_LAYOUT","DEFAULT_MINDMAP_THEME_LIGHT","DEFAULT_MINDMAP_THEME_DARK","PREMIUM_MINDMAP_PALETTE_KINDS","MINDMAP_PALETTES","isDark","PREMIUM_MINDMAP_LAYOUT_KINDS","MINDMAP_LAYOUTS","createMindmapTheme","paletteKind","layoutKind","layout","PACKET_TYPES","PACKET_TYPES_REVERSE","ERROR_PACKET","withNativeBlob","withNativeArrayBuffer","isView","encodePacket","supportsBinary","encodeBlobAsBase64","fileReader","toArray","TEXT_ENCODER","encodePacketToBinary","packet","encoded","chars","decode","base64","bufferLength","encoded1","encoded2","encoded3","encoded4","arraybuffer","bytes","decodePacket","encodedPacket","binaryType","mapBinary","decodeBase64Packet","decoded","SEPARATOR","encodePayload","packets","encodedPackets","decodePayload","encodedPayload","decodedPacket","createPacketEncoderStream","controller","payloadLength","header","view","TEXT_DECODER","totalLength","chunks","chunk","concatChunks","size","createPacketDecoderStream","maxPayload","expectedLength","isBinary","headerArray","protocol","Emitter","mixin","event","globalThisShim","pick","attr","NATIVE_SET_TIMEOUT","globalThis","NATIVE_CLEAR_TIMEOUT","installTimerFunctions","BASE64_OVERHEAD","byteLength","utf8Length","encode","qs","qry","TransportError","reason","description","Transport","onPause","schema","hostname","encodedQuery","alphabet","yeast","hasCORS","XHR","xdomain","hasXHR2","XMLHttpRequest","Polling","isSSL","port","forceBase64","pause","total","Request","req","xhrStatus","uri","xhr","fromError","unloadHandler","terminationEvent","nextTick","setTimeoutFn","WebSocket","usingBrowserWebSocket","defaultBinaryType","isReactNative","WS","protocols","closeEvent","ev","lastPacket","WT","stream","decoderStream","encoderStream","read","transports","re","parse","pathNames","queryKey","regx","names","$0","$1","$2","Socket","transport","failed","onTransportOpen","msg","cleanup","freezeTransport","onerror","onTransportClose","onclose","onupgrade","payloadSize","cleanupAndClose","waitForUpgrade","upgrades","filteredUpgrades","loc","toString","withNativeFile","hasBinary","toJSON","deconstructPacket","buffers","packetData","_deconstructPacket","newData","reconstructPacket","_reconstructPacket","RESERVED_EVENTS","PacketType","Encoder","replacer","deconstruction","isObject","Decoder","reviver","isBinaryEvent","BinaryReconstructor","start","buf","payload","binData","io","nsp","ack","isTransportWritable","timer","withErr","arg1","arg2","responseArgs","force","listeners","self","sent","pid","subDestroy","compress","Backoff","rand","deviation","min","max","jitter","Manager","_parser","Engine","socket","openSubDestroy","errorSub","nsps","attempt","cache","parsed","sameNamespace","newConnection","RoomSocket","cursor","roomSocket","languageAction","setLanguage","LanguageStore","languageStore","ApiBase","fetchOptions","hydratedResult","response","parsedError","headers","roomStore","json","gqlError","queryName","exception","_e","GQL_ID_SHAPE","GQL_MODEL_SHAPE","GQL_MEDIA_SHAPE","GQL_AUTH_TOKEN","GQL_AUTH_USER_INFO_TOKEN","GQL_ROBOT_SHAPE","GQL_USER_SHAPE","GQL_SESSION_SHAPE","GQL_ROOM_ACCESS_SHAPE","GQL_IDEA_METADATA_SHAPE","GQL_IDEA_SHAPE","GQL_LINK_SHAPE","GQL_COPILOT_SHAPE","GQL_CHAT_MESSAGE_SHAPE","GQL_WORKSPACE_SHAPE","GQL_WORKSPACE_ACCESS_SHAPE","GQL_POLL_SHAPE","GQL_ROOM_SNAPSHOT","GQL_ROOM_SHAPE","GQL_PLAN_PRICE_SHAPE","GQL_PLAN_SHAPE","GQL_SUBSCRIPTION_SHAPE","GQL_AI_ACTION_SHAPE","GQL_IDEA_CLUSTER_SHAPE","GQL_UNFURLED_URL_SHAPE","openAcceptTerms","refreshSessionUser","api","signup","credentials","login","logout","withoutNavigation","openWindow","top","left","openAuthWindow","authWindow","didReceiveMessage","eventHandler","setCredentials","loginOrSignup","authToken","openOAuthFlow","openAppleOAuthFlow","receivedState","firstName","lastName","Api","refreshToken","userId","listAll","domain","poll","pollFilter","pollId","abortSignal","ideaIds","includeChildren","ideaClusters","ideaId","reaction","locked","copilot","fileName","signedUrl","file","prompt","initImage","style","sensitivity","intent","roomSnapshot","results","mediaId","formData","aiActionId","aiActionContext","email","queryOrPageId","IdeaStore","startTime","localIdeaTimestamp","localIdea","ideaStore","mindmapAction","mindmapSelectIdeas","ideas","fitViewPort","executeMindmapAction","getAvailablePositionInMindmap","position","ideaAction","clearIdeas","listIdeasInRoom","listIdeasInPoll","listIdeasForComparison","updateIdea","unfurled","bulkUpdateIdeasWithData","getData","bulkUpdateIdeas","entry","detachIdeaFromParent","bulkDeleteIdeasWithConfirm","isSingular","bulkDeleteIdeas","removedIds","createIdea","parentId","createIdeaWithParent","startEditing","lockIdea","transformIdeasWithAIAction","groupIdeas","parentIdea","updateChildIdeasData","parentIdeaData","groupIdeasWithAIAction","getParentIdeaData","visualizeIdeas","image","removeMediaFromIdeaWithConfirm","yes","createIdeasFromMindmapComponentSources","components","nodeMeta","componentIdToIdeaMap","mindmapComponentNodeSourceToIdeaData","component","createIdeasRecursive","nextComponents","rootComponents","RoomStore","newActiveUsers","saveAffiliateCode","affiliateCode","referralId","consumeAffiliateReferralId","API_ERRORS_WITHOUT_TOAST","setupApp","lineNumber","colno","internetToastId","updateAppHeight","medium","reloadToastId","openRateLimited","openUpdatingServer","checkServerStatus","debugInformation","sentryService","AppPageStore","BsApp","FrameContexts","joinRoomPath","currentWorkspace","currentRoom","appContext","pathname","pathnameParts"],"sources":["../../../../node_modules/.pnpm/@lit+reactive-element@2.0.3/node_modules/@lit/reactive-element/css-tag.js","../../../../node_modules/.pnpm/@lit+reactive-element@2.0.3/node_modules/@lit/reactive-element/reactive-element.js","../../../../node_modules/.pnpm/lit-html@3.1.1/node_modules/lit-html/lit-html.js","../../../../node_modules/.pnpm/lit-element@4.0.3/node_modules/lit-element/lit-element.js","../../../../node_modules/.pnpm/@lit+reactive-element@2.0.3/node_modules/@lit/reactive-element/decorators/custom-element.js","../../src/styles/shared.ts","../../../../node_modules/.pnpm/workbox-window@6.6.0/node_modules/workbox-window/build/workbox-window.prod.es5.mjs","../../src/util/sw-util.ts","../../../shared/src/util/array-util.ts","../../../shared/src/util/text-util.ts","../../../shared/src/constants/palette-constants.ts","../../../shared/src/util/color-util.ts","../../../shared/src/util/hash-util.ts","../../../shared/src/util/model-util.ts","../../../shared/src/util/sleep.ts","../../../shared/src/util/debounce.ts","../../../shared/src/util/emoji-to-unicode.ts","../../../shared/src/util/media-util.ts","../../../shared/src/model/workspace-access.ts","../../../shared/src/model/room-access.ts","../../../shared/src/constants/constants.ts","../../../shared/src/util/room-access-util.ts","../../../shared/src/util/auth-util.ts","../../../shared/src/util/ai-action-output-util.ts","../../../shared/src/types/language.ts","../../../shared/src/util/translate-util.ts","../../../shared/src/constants/tracking-events-constants.ts","../../../shared/src/model/ai-action.ts","../../../shared/src/types/api-error.ts","../../../shared/src/types/mindmap-layout-kind.ts","../../../shared/src/types/mindmap-palette-kind.ts","../../src/util/local-storage.ts","../../src/util/util.ts","../../src/config.ts","../../../../node_modules/.pnpm/tslib@2.6.1/node_modules/tslib/tslib.es6.mjs","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/Subscription.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/config.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/noop.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/errorContext.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/Subscriber.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/symbol/observable.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/identity.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/pipe.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/Observable.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/lift.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/Subject.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/ReplaySubject.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/observable/empty.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/args.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/isPromise.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/isIterable.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/operators/observeOn.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/observable/from.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/EmptyError.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/firstValueFrom.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/operators/map.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/argsArgArrayOrObject.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/util/createObject.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/observable/merge.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/operators/filter.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/operators/scanInternals.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/operators/take.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/operators/scan.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/operators/share.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/operators/shareReplay.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/operators/switchMap.js","../../../../node_modules/.pnpm/rxjs@7.8.1/node_modules/rxjs/dist/esm5/internal/operators/tap.js","../../src/state/store.ts","../../src/state/action.ts","../../src/state/app/app-action.ts","../../../../node_modules/.pnpm/@microsoft+teams-js@2.20.0/node_modules/@microsoft/teams-js/dist/MicrosoftTeams.min.js","../../src/util/share-util.ts","../../src/services/teams-service.ts","../../src/state/teams/teams-action.ts","../../src/state/teams/teams-store.ts","../../src/state/session/session-action.ts","../../src/util/observable-util.ts","../../src/state/model/model-store.ts","../../src/state/model/model-list.ts","../../src/api/gql/gql-util.ts","../../src/util/auth-util.ts","../../src/state/session/session-store.ts","../../src/state/app/app-store.ts","../../src/util/route-util.ts","../../src/state/controller.ts","../../src/state/activity/activity-action.ts","../../../../node_modules/.pnpm/@a11y+focus-trap@1.0.5/node_modules/@a11y/focus-trap/shadow.js","../../../../node_modules/.pnpm/@a11y+focus-trap@1.0.5/node_modules/@a11y/focus-trap/focusable.js","../../../../node_modules/.pnpm/@a11y+focus-trap@1.0.5/node_modules/@a11y/focus-trap/debounce.js","../../../../node_modules/.pnpm/@a11y+focus-trap@1.0.5/node_modules/@a11y/focus-trap/focus-trap.js","../../../../node_modules/.pnpm/web-dialog@0.0.11/node_modules/web-dialog/util.js","../../../../node_modules/.pnpm/web-dialog@0.0.11/node_modules/web-dialog/web-dialog.js","../../../../node_modules/.pnpm/web-dialog@0.0.11/node_modules/web-dialog/open-dialog.js","../../../../node_modules/.pnpm/lit-html@3.1.1/node_modules/lit-html/directives/if-defined.js","../../../../node_modules/.pnpm/@lit+reactive-element@2.0.3/node_modules/@lit/reactive-element/decorators/property.js","../../src/atoms/progress-spinner.ts","../../src/atoms/form-item.ts","../../../../node_modules/.pnpm/lit-html@3.1.1/node_modules/lit-html/directive.js","../../../../node_modules/.pnpm/lit-html@3.1.1/node_modules/lit-html/directives/unsafe-html.js","../../../../node_modules/.pnpm/lit-html@3.1.1/node_modules/lit-html/directives/unsafe-svg.js","../../../../node_modules/.pnpm/lit-html@3.1.1/node_modules/lit-html/directives/when.js","../../src/atoms/icon.ts","../../icons.ts","../../src/atoms/dialog-close-button.ts","../../src/atoms/dialog-wrapper.ts","../../../../node_modules/.pnpm/lit-translate@2.0.1/node_modules/lit-translate/config.js","../../../../node_modules/.pnpm/lit-translate@2.0.1/node_modules/lit-translate/helpers.js","../../../../node_modules/.pnpm/lit-translate@2.0.1/node_modules/lit-translate/util.js","../../../../node_modules/.pnpm/lit-html@2.8.0/node_modules/lit-html/directive.js","../../../../node_modules/.pnpm/lit-html@2.8.0/node_modules/lit-html/lit-html.js","../../../../node_modules/.pnpm/lit-html@2.8.0/node_modules/lit-html/directive-helpers.js","../../../../node_modules/.pnpm/lit-html@2.8.0/node_modules/lit-html/async-directive.js","../../../../node_modules/.pnpm/lit-translate@2.0.1/node_modules/lit-translate/directives/lang-changed-base.js","../../../../node_modules/.pnpm/lit-translate@2.0.1/node_modules/lit-translate/directives/translate.js","../../../../node_modules/.pnpm/lit-html@2.8.0/node_modules/lit-html/directives/unsafe-html.js","../../src/util/user-greeting.ts","../../src/state/workspace/workspace-action.ts","../../src/state/workspace/workspace-store.ts","../../src/util/color-mode-util.ts","../../src/atoms/web-dialog-with-close.ts","../../src/util/dialog-helper.ts","../../src/services/event-service.ts","../../src/util/color-util.ts","../../src/state/theme/theme-action.ts","../../src/state/theme/theme-store.ts","../../src/util/teams-util.ts","../../src/util/install-prompt.ts","../../../../node_modules/.pnpm/lit-html@3.1.1/node_modules/lit-html/directive-helpers.js","../../../../node_modules/.pnpm/lit-html@3.1.1/node_modules/lit-html/directives/repeat.js","../../src/atoms/toast.ts","../../src/util/translate-util.ts","../../src/services/trackers/debug-service.ts","../../src/services/trackers/umami-service.ts","../../src/state/room/room-action.ts","../../../mindmap/src/theme/theme-constants.ts","../../../mindmap/src/util/load-custom-font.ts","../../../mindmap/src/theme/font.ts","../../../mindmap/src/theme/palette-colors.ts","../../../mindmap/src/theme/palette.ts","../../../mindmap/src/theme/layout.ts","../../../mindmap/src/theme/default-theme.ts","../../src/molecules/mindmap/mindmap-palettes.ts","../../src/molecules/mindmap/mindmap-layouts.ts","../../src/molecules/mindmap/mindmap-theme.ts","../../../../node_modules/.pnpm/engine.io-parser@5.2.1/node_modules/engine.io-parser/build/esm/commons.js","../../../../node_modules/.pnpm/engine.io-parser@5.2.1/node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../../../../node_modules/.pnpm/engine.io-parser@5.2.1/node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","../../../../node_modules/.pnpm/engine.io-parser@5.2.1/node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../../../../node_modules/.pnpm/engine.io-parser@5.2.1/node_modules/engine.io-parser/build/esm/index.js","../../../../node_modules/.pnpm/@socket.io+component-emitter@3.1.0/node_modules/@socket.io/component-emitter/index.mjs","../../../../node_modules/.pnpm/engine.io-client@6.5.2/node_modules/engine.io-client/build/esm/globalThis.browser.js","../../../../node_modules/.pnpm/engine.io-client@6.5.2/node_modules/engine.io-client/build/esm/util.js","../../../../node_modules/.pnpm/engine.io-client@6.5.2/node_modules/engine.io-client/build/esm/contrib/parseqs.js","../../../../node_modules/.pnpm/engine.io-client@6.5.2/node_modules/engine.io-client/build/esm/transport.js","../../../../node_modules/.pnpm/engine.io-client@6.5.2/node_modules/engine.io-client/build/esm/contrib/yeast.js","../../../../node_modules/.pnpm/engine.io-client@6.5.2/node_modules/engine.io-client/build/esm/contrib/has-cors.js","../../../../node_modules/.pnpm/engine.io-client@6.5.2/node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js","../../../../node_modules/.pnpm/engine.io-client@6.5.2/node_modules/engine.io-client/build/esm/transports/polling.js","../../../../node_modules/.pnpm/engine.io-client@6.5.2/node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js","../../../../node_modules/.pnpm/engine.io-client@6.5.2/node_modules/engine.io-client/build/esm/transports/websocket.js","../../../../node_modules/.pnpm/engine.io-client@6.5.2/node_modules/engine.io-client/build/esm/transports/webtransport.js","../../../../node_modules/.pnpm/engine.io-client@6.5.2/node_modules/engine.io-client/build/esm/transports/index.js","../../../../node_modules/.pnpm/engine.io-client@6.5.2/node_modules/engine.io-client/build/esm/contrib/parseuri.js","../../../../node_modules/.pnpm/engine.io-client@6.5.2/node_modules/engine.io-client/build/esm/socket.js","../../../../node_modules/.pnpm/socket.io-client@4.7.1/node_modules/socket.io-client/build/esm/url.js","../../../../node_modules/.pnpm/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/esm/is-binary.js","../../../../node_modules/.pnpm/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/esm/binary.js","../../../../node_modules/.pnpm/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/esm/index.js","../../../../node_modules/.pnpm/socket.io-client@4.7.1/node_modules/socket.io-client/build/esm/on.js","../../../../node_modules/.pnpm/socket.io-client@4.7.1/node_modules/socket.io-client/build/esm/socket.js","../../../../node_modules/.pnpm/socket.io-client@4.7.1/node_modules/socket.io-client/build/esm/contrib/backo2.js","../../../../node_modules/.pnpm/socket.io-client@4.7.1/node_modules/socket.io-client/build/esm/manager.js","../../../../node_modules/.pnpm/socket.io-client@4.7.1/node_modules/socket.io-client/build/esm/index.js","../../src/socket/socket.ts","../../src/socket/room-socket.ts","../../src/state/language/language-action.ts","../../src/state/language/language-store.ts","../../src/api/api-base.ts","../../src/api/gql/gql-shape.ts","../../src/dialogs/open-accept-terms.ts","../../src/util/dom-util.ts","../../src/state/session/session-ac.ts","../../src/api/api.ts","../../src/state/idea/idea-store.ts","../../src/molecules/mindmap/mindmap-action.ts","../../src/state/idea/idea-action.ts","../../src/state/room/room-store.ts","../../src/util/affiliate-util.ts","../../src/pages/app-page.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:r,getOwnPropertyNames:h,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),y={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e(this.prototype,t,r)}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...h(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$Eg=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$ES(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$E_??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$E_?.delete(t)}_$ES(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$E_?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$E_?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$EO(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f)(this[t],s))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$Eg=this._$EP())}C(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$ET??=new Set).add(t)}async _$EP(){this.isUpdatePending=!0;try{await this._$Eg}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.C(s,this[s],i)}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$E_?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$Ej()}catch(s){throw t=!1,this._$Ej(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$E_?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ej(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$Eg}shouldUpdate(t){return!0}update(t){this._$ET&&=this._$ET.forEach((t=>this._$EO(t,this[t]))),this._$Ej()}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:\"open\"},b[d(\"elementProperties\")]=new Map,b[d(\"finalized\")]=new Map,p?.({ReactiveElement:b}),(a.reactiveElementVersions??=[]).push(\"2.0.3\");export{b as ReactiveElement,u as defaultConverter,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=\"$lit$\",h=`lit$${(Math.random()+\"\").slice(9)}$`,o=\"?\"+h,n=`<${o}>`,r=document,l=()=>r.createComment(\"\"),c=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,a=Array.isArray,u=t=>a(t)||\"function\"==typeof t?.[Symbol.iterator],d=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\\\s\"'>=/]+)(${d}*=${d}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),p=/'/g,g=/\"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),b=y(2),w=Symbol.for(\"lit-noChange\"),T=Symbol.for(\"lit-nothing\"),A=new WeakMap,E=r.createTreeWalker(r,129);function C(t,i){if(!Array.isArray(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==s?s.createHTML(i):i}const P=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?\"\":\"\",c=f;for(let i=0;i\"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'\"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===f?s+n:d>=0?(o.push(a),s.slice(0,d)+e+s.slice(d)+h+x):s+h+(-2===d?i:x)}return[C(t,l+(t[s]||\"\")+(2===i?\"\":\"\")),o]};class V{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=P(t,s);if(this.el=V.createElement(f,n),E.currentNode=this.el.content,2===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=E.nextNode())&&d.length0){r.textContent=i?i.emptyScript:\"\";for(let i=0;i2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=T}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=N(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==w,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new M(i.insertBefore(l(),t),t,void 0,s??{})}return h._$AI(t),h};export{z as _$LH,x as html,w as noChange,T as nothing,j as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as i}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class s extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const i=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(i,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return i}}s._$litElement$=!0,s[(\"finalized\",\"finalized\")]=!0,globalThis.litElementHydrateSupport?.({LitElement:s});const r=globalThis.litElementPolyfillSupport;r?.({LitElement:s});const o={_$AK:(t,e,i)=>{t._$AK(e,i)},_$AL:t=>t._$AL};(globalThis.litElementVersions??=[]).push(\"4.0.3\");export{s as LitElement,o as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import { css } from \"lit\";\n\nexport const sharedStyles = css`\n\t* {\n\t\tbox-sizing: border-box;\n\t\t-webkit-tap-highlight-color: transparent;\n\t}\n\n\tinput[type=\"color\"]::-webkit-color-swatch-wrapper {\n\t\tpadding: 0;\n\t}\n\n\tinput[type=\"color\"]::-webkit-color-swatch {\n\t\tborder: none;\n\t}\n\n\t::-webkit-file-upload-button {\n\t\tdisplay: none;\n\t\tborder: none;\n\t\tbackground: none;\n\t}\n\n\tinput[type=\"range\"]::-webkit-slider-thumb {\n\t\tcursor: ew-resize;\n\t}\n`;\n","try{self[\"workbox:window:6.5.4\"]&&_()}catch(n){}function n(n,t){return new Promise((function(r){var e=new MessageChannel;e.port1.onmessage=function(n){r(n.data)},n.postMessage(t,[e.port2])}))}function t(n,t){for(var r=0;rn.length)&&(t=n.length);for(var r=0,e=new Array(t);r=n.length?{done:!0}:{done:!1,value:n[i++]}}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}return(e=n[Symbol.iterator]()).next.bind(e)}try{self[\"workbox:core:6.5.4\"]&&_()}catch(n){}var i=function(){var n=this;this.promise=new Promise((function(t,r){n.resolve=t,n.reject=r}))};function o(n,t){var r=location.href;return new URL(n,r).href===new URL(t,r).href}var u=function(n,t){this.type=n,Object.assign(this,t)};function a(n,t,r){return r?t?t(n):n:(n&&n.then||(n=Promise.resolve(n)),t?n.then(t):n)}function c(){}var f={type:\"SKIP_WAITING\"};function s(n,t){if(!t)return n&&n.then?n.then(c):Promise.resolve()}var v=function(r){var e,c;function v(n,t){var e,c;return void 0===t&&(t={}),(e=r.call(this)||this).nn={},e.tn=0,e.rn=new i,e.en=new i,e.on=new i,e.un=0,e.an=new Set,e.cn=function(){var n=e.fn,t=n.installing;e.tn>0||!o(t.scriptURL,e.sn.toString())||performance.now()>e.un+6e4?(e.vn=t,n.removeEventListener(\"updatefound\",e.cn)):(e.hn=t,e.an.add(t),e.rn.resolve(t)),++e.tn,t.addEventListener(\"statechange\",e.ln)},e.ln=function(n){var t=e.fn,r=n.target,i=r.state,o=r===e.vn,a={sw:r,isExternal:o,originalEvent:n};!o&&e.mn&&(a.isUpdate=!0),e.dispatchEvent(new u(i,a)),\"installed\"===i?e.wn=self.setTimeout((function(){\"installed\"===i&&t.waiting===r&&e.dispatchEvent(new u(\"waiting\",a))}),200):\"activating\"===i&&(clearTimeout(e.wn),o||e.en.resolve(r))},e.dn=function(n){var t=e.hn,r=t!==navigator.serviceWorker.controller;e.dispatchEvent(new u(\"controlling\",{isExternal:r,originalEvent:n,sw:t,isUpdate:e.mn})),r||e.on.resolve(t)},e.gn=(c=function(n){var t=n.data,r=n.ports,i=n.source;return a(e.getSW(),(function(){e.an.has(i)&&e.dispatchEvent(new u(\"message\",{data:t,originalEvent:n,ports:r,sw:i}))}))},function(){for(var n=[],t=0;t {\n\treturn new Promise(async (res) => {\n\t\tawait showToast(\"A new update is available. Do you want to update now?\", {\n\t\t\tduration: 10 * 1000,\n\t\t\ticon: ICON_DOWNLOAD,\n\t\t\tbuttons: [\n\t\t\t\t{\n\t\t\t\t\ttext: \"Later\",\n\t\t\t\t\tonClick: () => res(false)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: \"Update now\",\n\t\t\t\t\timportant: true,\n\t\t\t\t\tonClick: () => res(true)\n\t\t\t\t}\n\t\t\t]\n\t\t});\n\n\t\tres(false);\n\t});\n}*/\n\n/**\n * Uses the workbox window library to load a service worker.\n * @param path\n */\nexport async function registerServiceWorkerWithWorkbox(path: string) {\n\tif (\"serviceWorker\" in navigator) {\n\t\tconst wb = new Workbox(path);\n\n\t\t// Add an event listener to detect when the registered\n\t\t// service worker has installed but is waiting to activate.\n\t\twb.addEventListener(\"waiting\", (e) => {\n\t\t\twb.messageSkipWaiting();\n\t\t});\n\n\t\twb.register();\n\t}\n}\n","/**\n * Shuffles an array using the Fisher-Yates shuffle algorithm.\n * @param arr\n */\nexport function shuffleArray(arr: T[]): T[] {\n\t// Copy the original array to avoid modifying it\n\tconst copy = [...arr];\n\n\t// Shuffle the copy using the Fisher-Yates shuffle algorithm\n\tfor (let i = copy.length - 1; i > 0; i--) {\n\t\tconst j = Math.floor(Math.random() * (i + 1));\n\t\t[copy[i], copy[j]] = [copy[j], copy[i]];\n\t}\n\n\treturn copy;\n}\n\n/**\n * Picks x random items from an array.\n * @param arr\n * @param n\n */\nexport function pickRandomItems(arr: T[], n: number): T[] {\n\treturn shuffleArray(arr).slice(0, n);\n}\n\n/**\n * Picks a random item from an array.\n * @param arr\n */\nexport function pickRandomItem(arr: T[] | readonly T[]): T {\n\tif (!arr.length) throw new Error(\"Cannot pick a random item from an empty array.\");\n\treturn arr[Math.floor(Math.random() * arr.length)];\n}\n\nexport function firstInArray(arr: T[] | T): T {\n\treturn Array.isArray(arr) ? arr[0] : arr;\n}\n\nexport function pickRandomWeightedItem(arr: [T, number][]): T {\n\tif (arr.length === 0) throw new Error(\"Cannot pick a random item from an empty array.\");\n\n\tconst totalWeight = arr.reduce((acc, [_, weight]) => acc + weight, 0);\n\tconst random = Math.random() * totalWeight;\n\n\tlet currentWeight = 0;\n\n\tfor (const [item, weight] of arr) {\n\t\tcurrentWeight += weight;\n\t\tif (random <= currentWeight) return item;\n\t}\n\n\tthrow new Error(\"Unexpected error while picking a random weighted item.\");\n}\n\nexport function filterUndefinedFromArray(arr: (T | undefined | null)[]): T[] {\n\treturn arr.filter((v): v is T => v != null);\n}\n\nexport async function paginateItems(\n\titems: T[],\n\tcallback: (item: T) => Promise,\n\t{ pageSize, parallel }: { pageSize: number; parallel: boolean }\n) {\n\titems = [...items];\n\twhile (items.length > 0) {\n\t\tconst pageItems = items.splice(0, pageSize);\n\t\tif (parallel) {\n\t\t\tawait Promise.all(pageItems.map(callback));\n\t\t} else {\n\t\t\tfor (const item of pageItems) {\n\t\t\t\tawait callback(item);\n\t\t\t}\n\t\t}\n\t}\n}\n","import { pickRandomItems } from \"./array-util\";\n\nexport function parseSectionsInText(text: string): Record | undefined {\n\ttext = text.trim();\n\n\tconst sections: Record = {};\n\n\t/* First, try parse this case (sections without multilines)\n\t# Title 1: Idea 1, Idea 2\n # Title 2: Idea 1, Idea 2\n\n\t */\n\n\tconst lines = text.split(\"\\n\").map((line) => line.trim());\n\n\tif (!lines.some((line) => !line.startsWith(\"# \"))) {\n\t\t// All lines start with \"# \"\n\t\tfor (const line of lines) {\n\t\t\t// Split \":\"\n\t\t\tconst parts = line.split(\":\").map((line) => unquotify(line.trim())) as [string, string];\n\t\t\tif (parts.length !== 2) return undefined;\n\t\t\tsections[parts[0].replace(\"# \", \"\")] = parts[1];\n\t\t}\n\t} else {\n\t\t/* Second, try parse this case (sections with multilines)\n\t\t# Title 1\n\t\t- Idea 1\n\t\t- Idea 2\n\t\t# Title 2\n\t\t- Idea 1\n\t\t- Idea 2\n\t\t */\n\n\t\tconst END_MARKER = \"!!END!!\"; // Js regex doesn't support \\z so we use custom !!END!! marker instead\n\t\tconst regex = /^(#\\s*[*\\s]*(?.+?)[*\\s:]*)\\n(?[\\s\\S]+?)(?=(\\n#)|\\*\\*|!!END!!)/gm;\n\t\t//const regex = /(#\\s*(?.+?):?|\\*\\*(?.+?)\\*\\*)\\n(?[\\s\\S]+?)(?=(\\n#)|\\*\\*|$)/g;\n\n\t\tconst matches = [...(text + END_MARKER).matchAll(regex)];\n\n\t\tif (matches.length === 0) return undefined;\n\n\t\tfor (const match of matches) {\n\t\t\tsections[match.groups?.title1 ?? match.groups?.title2 ?? \"\"] = (match.groups?.content ?? \"\").replace(\n\t\t\t\tEND_MARKER,\n\t\t\t\t\"\"\n\t\t\t);\n\t\t}\n\t}\n\n\treturn sections;\n}\n\n/**\n * Extracts a JSON object from a string.\n * @param text\n */\nexport function parseJSONInText(text: string) {\n\t// Find the start and end indexes of the JSON string\n\tconst startIndex = text.indexOf(\"{\");\n\tconst endIndex = text.lastIndexOf(\"}\") + 1;\n\n\t// Extract the JSON string from the text\n\tlet jsonString = text.substring(startIndex, endIndex);\n\n\t// Parse the JSON string and return the resulting object\n\tlet json: any;\n\ttry {\n\t\tjson = JSON.parse(jsonString);\n\t} catch (e) {\n\t\tconsole.error(e);\n\n\t\t// Fix potential errors in the JSON so it can parse\n\t\tjsonString = jsonString.replace(/(\\w+):/g, '\"$1\":');\n\n\t\tjson = JSON.parse(jsonString);\n\t}\n\n\t// Convert all values in the JSON to arrays\n\tfor (const key in json) {\n\t\tjson[key] = Array.isArray(json[key]) ? json[key] : [json[key]];\n\t}\n\n\treturn json;\n}\n\nexport function quotify(text: string): string {\n\treturn `\"${text}\"`;\n}\n\nexport function removeEndPunctuation(text: string): string {\n\t// If the only punctuation is in the end, remove it\n\tif (text.endsWith(\".\") && text.split(\".\").length === 2) {\n\t\treturn text.substring(0, text.length - 1);\n\t}\n\n\treturn text;\n}\n\nexport function unquotify(text: string): string {\n\tconst pairs = [`\"`, `'`, \"`\"];\n\n\tfor (const pair of pairs) {\n\t\t//const quotesInTextCount = countMatches(text, pair);\n\n\t\t// Remove quotes if there are two quotes in the beginning and end (eg. '\"Idea 1\"')\n\t\tif (text.startsWith(pair) && text.endsWith(pair)) {\n\t\t\ttext = text.substring(1);\n\t\t\ttext = text.substring(0, text.length - 1);\n\t\t}\n\n\t\tif (text.startsWith(pair)) {\n\t\t\t// Remove quote if there is only one quote, and the text starts with it (eg. '\"Idea 1')\n\t\t\tif (countMatches(text, pair) === 1) {\n\t\t\t\ttext = text.substring(1);\n\t\t\t}\n\n\t\t\t// Remove quotes if there are two quotes but the text doesn't end with it (eg. '\"Idea 1\": Test')\n\t\t\tif (!text.endsWith(pair)) {\n\t\t\t\ttext = text.replace(new RegExp(`^${pair}(.*?)${pair}`), \"$1\");\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove quote if there is only one quote, and the text starts with it\n\t// if (text.startsWith(`\"`) && text.lastIndexOf(`\"`) === 0) {\n\t// \treturn text.replace(/^\"(.*)\"$/, \"$1\");\n\t// }\n\n\treturn text;\n}\n\nexport function unmarkdownify(text: string): string {\n\t// Remove:\n\t// - \"**\"\n\t// - \"__\"\n\treturn text.replace(/(\\*\\*|__)/g, \"\");\n}\n\n/**\n * Turns a string into kebab case.\n * @param str\n */\nexport function pascalToKebabCase(str: string): string {\n\treturn str.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\n\n/**\n * Turns string parts into a numbered list.\n * @param parts\n */\nexport function listifyText(parts: string[]): string {\n\treturn parts.map((part, index) => `${index + 1}. ${part}`).join(\"\\n\");\n}\n\n/**\n * Adds commands between parts and ends with \"and\" before last item if there are more than one.\n * @param parts\n * @param lastSeparator\n */\nexport function commaListifyText(parts: string[], lastSeparator = \"and\"): string {\n\tconst len = parts.length;\n\n\tif (len > 1) {\n\t\tconst allButLast = parts.slice(0, -1).join(\", \");\n\t\treturn `${allButLast} ${lastSeparator} ${parts[len - 1]}`;\n\t}\n\n\treturn parts.join(\", \");\n}\n\n/**\n * Uppercases the first letter of a string.\n * @param str\n */\nexport function uppercaseFirstLetter(str: string): string {\n\treturn str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n/**\n * Returns a random character.\n */\nexport function randomLetter() {\n\treturn String.fromCharCode(Math.floor(Math.random() * 26) + 97);\n}\n\n/**\n * Determines if a string is empty.\n * @param text\n */\nexport function hasValue(text: string | undefined | null): text is string {\n\treturn text != null && text.trim().length > 0;\n}\n\n/**\n * Sanitizes HTML.\n * @param str\n */\nexport function sanitizeHTML(str: string) {\n\treturn str.replace(//g, \">\");\n}\n\n/**\n * Highlights a text by adding element around.\n * @param text\n * @param query\n * @param isMarkdown\n */\nexport function highlightText({ text, query, isHTML }: { text?: string; query?: string; isHTML?: boolean }): string {\n\tif (isHTML) {\n\t\ttext = sanitizeHTML(text ?? \"\");\n\t}\n\n\tif (text == null || text.length === 0 || query == null || query.length === 0) return text ?? \"\";\n\tif (query == null || query.length === 0) return text;\n\tquery = removeSpecialCharacters(query);\n\treturn text.replaceAll(\n\t\tnew RegExp(\n\t\t\t`(${query\n\t\t\t\t?.split(\" \")\n\t\t\t\t.filter((t) => t.length > 0)\n\t\t\t\t.join(\"|\")})`,\n\t\t\t\"gi\"\n\t\t),\n\t\t(match: string) => (isHTML ? `${match}` : `==${match}==`)\n\t);\n}\n\n/**\n * Removes regex characters and markdown characters from text.\n * @param text\n */\nexport function removeSpecialCharacters(text: string) {\n\treturn text.replaceAll(/([.*+?^=!:${}()|[\\]/\\\\]<>#*_-`)/gi, \"\\\\$1\");\n}\n\n/**\n * Truncates a string to a given length from the middle.\n * @param str\n * @param maxLength\n * @param separator\n */\nexport function truncateString(str: string, maxLength: number, separator = \"...\"): string {\n\tif (str.length <= maxLength) {\n\t\treturn str;\n\t}\n\n\t// Prioritize the last part of the string\n\tconst firstPart = str.substring(0, maxLength / 3).split(\" \");\n\tconst lastPart = str.substring(str.length - maxLength / 1.5).split(\" \");\n\n\treturn [\n\t\t...(firstPart.length > 1 ? firstPart.slice(0, firstPart.length - 1) : firstPart),\n\t\tseparator,\n\t\t...(lastPart.length > 1 ? lastPart.slice(1) : lastPart)\n\t].join(\" \");\n}\n\nexport type TruncateLengthKind = \"short\" | \"medium\" | \"long\" | \"none\";\n\n/**\n * Truncates AI user input.\n * @param text\n * @param length\n */\nexport function truncateAIUserInput(\n\ttext?: T,\n\tlength: TruncateLengthKind = \"medium\"\n): T | undefined {\n\tif (text == null) return undefined;\n\tif (typeof text !== \"string\") return text;\n\n\tswitch (length) {\n\t\tcase \"short\":\n\t\t\treturn truncateString(text, 500) as T;\n\t\tcase \"medium\":\n\t\t\treturn truncateString(text, 1000) as T;\n\t\tcase \"long\":\n\t\t\treturn truncateString(text, 2000) as T;\n\t\tdefault:\n\t\t\t// return truncateString(text, 400000) as T;\n\t\t\t// Limit set based on: This model's maximum context length is 16385 tokens. However, you requested 18586 tokens (15586 in the messages, 3000 in the completion). Please reduce the length of the messages or completion.\n\t\t\treturn truncateString(text, 35000) as T;\n\t}\n}\n\n/**\n * Counts the number of matches in a string.\n * @param text\n * @param needle\n */\nexport function countMatches(text: string, needle: string) {\n\treturn text.split(needle).length - 1;\n}\n\n/**\n * Joins text parts with a separator and filters out the empty ones.\n */\nexport function joinSentences(sentences: (string | undefined | null)[]) {\n\tconst filteredSentences = sentences.map((sentence) => sentence?.trim()).filter(hasValue) as string[];\n\n\tif (filteredSentences.length === 0) return \"\";\n\n\treturn filteredSentences\n\t\t.map(\n\t\t\t(sentence, i) => sentence + (sentence.endsWith(\".\") ? \"\" : \".\") + (i === filteredSentences.length - 1 ? \"\" : \" \")\n\t\t)\n\t\t.join(\"\");\n}\n\n/**\n * Returns a random letter.\n * @param count\n * @param alphabet\n */\nexport function getRandomLetters(count: number, alphabet: string = \"abcdefghijklmnopqrstuvwxyz\"): string[] {\n\treturn pickRandomItems(alphabet.split(\"\"), count);\n}\n\n/**\n * Extracts emojis from text.\n * @param text\n */\nexport function extractEmojisFromText(text: string): { emojis: string[]; text: string } {\n\t// Regex to match Unicode emojis\n\t//const emojiRegex = /([\\u{1F600}-\\u{1F64F}]|[\\u{1F300}-\\u{1F5FF}]|[\\u{1F680}-\\u{1F6FF}]|[\\u{1F700}-\\u{1F77F}]|[\\u{1F780}-\\u{1F7FF}]|[\\u{1F800}-\\u{1F8FF}]|[\\u{1F900}-\\u{1F9FF}]|[\\u{1FA00}-\\u{1FA6F}]|[\\u{1FA70}-\\u{1FAFF}]|[\\u{2600}-\\u{26FF}]|[\\u{2700}-\\u{27BF}]|[\\u{1F1E0}-\\u{1F1FF}]|[\\u{1F201}-\\u{1F2FF}]|[\\u{2300}-\\u{23FF}]|[\\u{FE0F}])/gu;\n\tconst emojiRegex = /(\\p{Emoji}\\uFE0F|\\p{Emoji_Presentation}|\\p{Extended_Pictographic})/gu;\n\n\t// Extract emojis\n\tlet emojis = text.match(emojiRegex) || [];\n\n\t// Remove emojis from text\n\tlet cleanedText = text.replace(emojiRegex, \"\").trim();\n\n\treturn {\n\t\temojis: emojis,\n\t\ttext: cleanedText\n\t};\n}\n\nexport function getFirstAndLastName(name: string): [string, string] | [string] {\n\tconst parts = name.split(/\\s+/g).filter((part) => part?.length);\n\n\tif (parts.length === 0) return [name];\n\tif (parts.length <= 2) return parts as ReturnType;\n\n\treturn [parts[0], parts[parts.length - 1]];\n}\n\nexport function extractElementsFromText(text: string): {\n\tnewText: string;\n\tdetails?: string;\n\timages: string[];\n} {\n\t// Example text: Hello [World](https://world.com) and ![Image](https://image.com) || These are details\n\n\t// Get the details\n\tlet [newText, details] = text.split(\"||\").map((part) => part.trim());\n\n\t// Get all images from newText and replace them in newText\n\tconst images: string[] = [];\n\tnewText = newText.replace(/!\\[([^\\]]+)\\]\\(([^)]+)\\)/g, (match, alt, src) => {\n\t\timages.push(src);\n\t\treturn \"\";\n\t});\n\n\treturn {\n\t\tnewText: newText.trim(),\n\t\t//newText: text,\n\t\tdetails: details?.trim(),\n\t\timages\n\t};\n}\n\nexport function toBinaryStr(str: string) {\n\tconst encoder = new TextEncoder();\n\tconst charCodes = encoder.encode(str);\n\treturn String.fromCharCode(...charCodes);\n}\n\nexport function fromBinaryStr(binaryStr: string) {\n\tconst decoder = new TextDecoder();\n\tconst charCodes = new Uint8Array([...binaryStr].map((char) => char.charCodeAt(0)));\n\treturn decoder.decode(charCodes);\n}\n","import { ColorMode, ColorModeColors, HexColor, Palette, ThemeColor } from \"../types/color-model\";\n\nexport const COLOR_WHITE = \"#FFFFFF\";\nexport const COLOR_BLACK = \"#000000\";\nexport const COLOR_WHITE_DIRTY = \"#eeeeee\";\nexport const COLOR_WHITE_DIRTIER = \"#cecece\";\nexport const COLOR_BLACK_DIRTY = \"#0B0B19\";\n\nexport const COLOR_DARK = COLOR_BLACK_DIRTY;\nexport const COLOR_LIGHT = COLOR_WHITE_DIRTY;\n\nexport const TRANSPARENT_COLOR = \"#FFFFFF00\";\n\nexport const MS_TEAMS_BACKGROUND_LIGHT = \"#f5f5f5\";\nexport const MS_TEAMS_BACKGROUND_DARK = \"#1f1f1f\";\n\nexport const STRIBES_DARK = `repeating-linear-gradient(45deg, rgba(0, 0, 0, 1), rgba(0, 0, 0, 1) 5px, rgba(0, 0, 0, 0.1) 5px, rgba(0, 0, 0, 0.1) 10px)`;\nexport const STRIBES_LIGHT = `repeating-linear-gradient(45deg, rgba(255, 255, 255, 1), rgba(255, 255, 255, 1) 5px, rgba(255, 255, 255, 0.1) 5px, rgba(255, 255, 255, 0.1) 10px)`;\n\nconst COLOR_LIGHT_RED = {\n\tdarker: \"#760016\",\n\tdark: \"#A9363D\",\n\tnormal: \"#E57373\",\n\tlight: \"#FEBBBC\",\n\tlighter: \"#FFE0E0\",\n\tcontrast: {\n\t\tdarker: COLOR_WHITE,\n\t\tdark: COLOR_WHITE,\n\t\tnormal: COLOR_BLACK,\n\t\tlight: COLOR_BLACK,\n\t\tlighter: COLOR_BLACK\n\t}\n};\n\nconst COLOR_RED = {\n\tdarker: \"#7C0000\",\n\tdark: \"#B3002B\",\n\tnormal: \"#F43F5E\",\n\tlight: \"#FFB9C8\",\n\tlighter: \"#FFE0E6\",\n\tcontrast: {\n\t\tdarker: COLOR_WHITE,\n\t\tdark: COLOR_WHITE,\n\t\tnormal: COLOR_WHITE,\n\t\tlight: COLOR_BLACK,\n\t\tlighter: COLOR_BLACK\n\t}\n};\n\nconst COLOR_PINK = {\n\tdarker: \"#520064\",\n\tdark: \"#812C91\",\n\tnormal: \"#BA68C8\",\n\tlight: \"#E8BDEF\",\n\tlighter: \"#F7E0FA\",\n\tcontrast: {\n\t\tdarker: COLOR_WHITE,\n\t\tdark: COLOR_WHITE,\n\t\tnormal: COLOR_BLACK,\n\t\tlight: COLOR_BLACK,\n\t\tlighter: COLOR_BLACK\n\t}\n};\n\nconst COLOR_PURPLE = {\n\tdarker: \"#2B156A\",\n\tdark: \"#5B3F97\",\n\tnormal: \"#9575CD\",\n\tlight: \"#D5C4F3\",\n\tlighter: \"#ECE3FC\",\n\tcontrast: {\n\t\tdarker: COLOR_WHITE,\n\t\tdark: COLOR_WHITE,\n\t\tnormal: COLOR_WHITE,\n\t\tlight: COLOR_BLACK,\n\t\tlighter: COLOR_BLACK\n\t}\n};\n\nconst COLOR_OCEAN_BLUE = {\n\tdarker: \"#002E91\",\n\tdark: \"#3B56C0\",\n\tnormal: \"#818CF8\",\n\tlight: \"#C0C8FF\",\n\tlighter: \"#E2E6FF\",\n\tcontrast: {\n\t\tdarker: COLOR_WHITE,\n\t\tdark: COLOR_WHITE,\n\t\tnormal: COLOR_BLACK,\n\t\tlight: COLOR_BLACK,\n\t\tlighter: COLOR_BLACK\n\t}\n};\n\nconst COLOR_BLUE = {\n\tdarker: \"#004494\",\n\tdark: \"#006EC3\",\n\tnormal: \"#60A5FA\",\n\tlight: \"#9BD2FF\",\n\tlighter: \"#CFEBFF\",\n\tcontrast: {\n\t\tdarker: COLOR_WHITE,\n\t\tdark: COLOR_WHITE,\n\t\tnormal: COLOR_BLACK,\n\t\tlight: COLOR_BLACK,\n\t\tlighter: COLOR_BLACK\n\t}\n};\n\nconst COLOR_TURQUOISE = {\n\tdarker: \"#00687C\",\n\tdark: \"#0096A9\",\n\tnormal: \"#4DD0E1\",\n\tlight: \"#10E0F5\",\n\tlighter: \"#96F7FF\",\n\tcontrast: {\n\t\tdarker: COLOR_WHITE,\n\t\tdark: COLOR_WHITE,\n\t\tnormal: COLOR_BLACK,\n\t\tlight: COLOR_BLACK,\n\t\tlighter: COLOR_BLACK\n\t}\n};\n\nconst COLOR_GREEN = {\n\tdarker: \"#006933\",\n\tdark: \"#00985F\",\n\tnormal: \"#2bc28c\",\n\tlight: \"#45f3b7\",\n\tlighter: \"#A0F9DB\",\n\tcontrast: {\n\t\tdarker: COLOR_WHITE,\n\t\tdark: COLOR_WHITE,\n\t\tnormal: COLOR_WHITE,\n\t\tlight: COLOR_BLACK,\n\t\tlighter: COLOR_BLACK\n\t}\n};\n\nconst COLOR_DEEP_GREEN = {\n\tdarker: \"#003309\",\n\tdark: \"#005F33\",\n\tnormal: \"#059669\",\n\tlight: \"#96D9C3\",\n\tlighter: \"#CBEFE4\",\n\tcontrast: {\n\t\tdarker: COLOR_WHITE,\n\t\tdark: COLOR_WHITE,\n\t\tnormal: COLOR_WHITE,\n\t\tlight: COLOR_BLACK,\n\t\tlighter: COLOR_BLACK\n\t}\n};\n\nconst COLOR_LIME_GREEN = {\n\tdarker: \"#416D13\",\n\tdark: \"#719B44\",\n\tnormal: \"#AED581\",\n\tlight: \"#ABDA77\",\n\tlighter: \"#CDF4A1\",\n\tcontrast: {\n\t\tdarker: COLOR_WHITE,\n\t\tdark: COLOR_BLACK,\n\t\tnormal: COLOR_BLACK,\n\t\tlight: COLOR_BLACK,\n\t\tlighter: COLOR_BLACK\n\t}\n};\n\nconst COLOR_LIME_YELLOW = {\n\tdarker: \"#707700\",\n\tdark: \"#A3A50E\",\n\tnormal: \"#E2E05D\",\n\tlight: \"#D2D148\",\n\tlighter: \"#EFEE5C\",\n\tcontrast: {\n\t\tdarker: COLOR_WHITE,\n\t\tdark: COLOR_BLACK,\n\t\tnormal: COLOR_BLACK,\n\t\tlight: COLOR_BLACK,\n\t\tlighter: COLOR_BLACK\n\t}\n};\n\nconst COLOR_YELLOW = {\n\tdarker: \"#876B00\",\n\tdark: \"#BB9900\",\n\tnormal: \"#FCD34D\",\n\tlight: \"#E9CA3A\",\n\tlighter: \"#f1df8c\",\n\tcontrast: {\n\t\tdarker: COLOR_WHITE,\n\t\tdark: COLOR_BLACK,\n\t\tnormal: COLOR_BLACK,\n\t\tlight: COLOR_BLACK,\n\t\tlighter: COLOR_BLACK\n\t}\n};\n\nconst COLOR_ORANGE = {\n\tdarker: \"#893F00\",\n\tdark: \"#BD6C00\",\n\tnormal: \"#FFA500\",\n\tlight: \"#FFC240\",\n\tlighter: \"#FFE59D\",\n\tcontrast: {\n\t\tdarker: COLOR_WHITE,\n\t\tdark: COLOR_WHITE,\n\t\tnormal: COLOR_BLACK,\n\t\tlight: COLOR_BLACK,\n\t\tlighter: COLOR_BLACK\n\t}\n};\n\nconst COLOR_BROWN = {\n\tdarker: \"#430000\",\n\tdark: \"#680000\",\n\tnormal: \"#A52A2A\",\n\tlight: \"#EBC1C3\",\n\tlighter: \"#F7E2E2\",\n\tcontrast: {\n\t\tdarker: COLOR_WHITE,\n\t\tdark: COLOR_WHITE,\n\t\tnormal: COLOR_WHITE,\n\t\tlight: COLOR_BLACK,\n\t\tlighter: COLOR_BLACK\n\t}\n};\n\nexport const COLOR_GREY: ThemeColor = {\n\tdarker: \"#5B5B5B\",\n\tdark: \"#B8B8B8\",\n\tnormal: \"#E0E0E0\",\n\tlight: \"#F2F2F2\",\n\tlighter: \"#FFFFFF\",\n\tcontrast: {\n\t\tdarker: COLOR_WHITE,\n\t\tdark: COLOR_WHITE,\n\t\tnormal: COLOR_BLACK,\n\t\tlight: COLOR_BLACK,\n\t\tlighter: COLOR_BLACK\n\t}\n};\n\nexport const COLOR_LIGHT_GREY: ThemeColor = {\n\tdarker: \"#3C4A4E\",\n\tdark: \"#67787F\",\n\tnormal: \"#90A4AE\",\n\tlight: \"#B4C2CB\",\n\tlighter: \"#E2E8F0\",\n\tcontrast: {\n\t\tdarker: COLOR_WHITE,\n\t\tdark: COLOR_WHITE,\n\t\tnormal: COLOR_WHITE,\n\t\tlight: COLOR_BLACK,\n\t\tlighter: COLOR_BLACK\n\t}\n};\n\nexport const COLOR_SHADE: ThemeColor = {\n\tdarker: COLOR_DARK,\n\tdark: \"#6a6e72\",\n\tnormal: \"#D1D5DB\",\n\tlight: \"#ECEDF0\",\n\tlighter: COLOR_LIGHT,\n\tcontrast: {\n\t\tdarker: COLOR_WHITE,\n\t\tdark: COLOR_WHITE,\n\t\tnormal: COLOR_BLACK,\n\t\tlight: COLOR_BLACK,\n\t\tlighter: COLOR_BLACK\n\t}\n};\n\nexport const COLOR_SHADE_DARK_MODE: ThemeColor = {\n\tlighter: \"#18191A\", //\"#15202B\",\n\tlight: \"#242526\", //\"#192734\",\n\tnormal: \"#424344\", //\"#22303C\",\n\tdark: \"#444849\",\n\tdarker: \"#808183\",\n\tcontrast: {\n\t\tdarker: COLOR_BLACK,\n\t\tdark: COLOR_WHITE,\n\t\tnormal: COLOR_WHITE,\n\t\tlight: COLOR_WHITE,\n\t\tlighter: COLOR_WHITE\n\t}\n};\n\nexport const COLOR_SHADE_CONTRAST_MODE: ThemeColor = {\n\tlighter: COLOR_BLACK,\n\tlight: COLOR_BLACK,\n\tnormal: COLOR_WHITE,\n\tdark: COLOR_WHITE,\n\tdarker: COLOR_WHITE,\n\tcontrast: {\n\t\tdarker: COLOR_BLACK,\n\t\tdark: COLOR_BLACK,\n\t\tnormal: COLOR_BLACK,\n\t\tlight: COLOR_WHITE,\n\t\tlighter: COLOR_WHITE\n\t}\n};\n\nexport const COLOR_SHADE_INVERSE: ThemeColor = {\n\tlighter: COLOR_SHADE.darker,\n\tlight: COLOR_SHADE.dark,\n\tnormal: COLOR_SHADE.normal,\n\tdark: COLOR_SHADE.light,\n\tdarker: COLOR_SHADE.lighter,\n\tcontrast: {\n\t\tlighter: COLOR_SHADE.contrast.darker,\n\t\tlight: COLOR_SHADE.contrast.dark,\n\t\tnormal: COLOR_SHADE.contrast.normal,\n\t\tdark: COLOR_SHADE.contrast.light,\n\t\tdarker: COLOR_SHADE.contrast.lighter\n\t}\n};\n\nexport const COLOR_MODE_COLORS: Record = {\n\tlight: {\n\t\tappForeground: COLOR_BLACK_DIRTY,\n\t\t//appBackground: COLOR_SHADE.light,\n\t\tappBackground: `linear-gradient(0deg, ${COLOR_SHADE.light} 60%, ${COLOR_SHADE.lighter})`,\n\n\t\tbackground: COLOR_WHITE,\n\t\tforeground: COLOR_BLACK_DIRTY,\n\n\t\tlight: COLOR_WHITE_DIRTY,\n\t\tdark: COLOR_BLACK_DIRTY,\n\n\t\tshadow: \"rgba(0, 0, 0, 0.1)\", //;COLOR_BLACK_DIRTY,\n\t\tshade: COLOR_SHADE,\n\t\trgb: \"255, 255, 255\",\n\t\tborder: \"unset\"\n\t},\n\tdark: {\n\t\tappForeground: COLOR_WHITE_DIRTIER,\n\t\t//appBackground: \"#0e0e0e\", //\"#101010\", //\"#292929\", //\"#121212\",\n\t\tappBackground: `linear-gradient(0deg, #0e0e0e 60%, #1e1e1e)`,\n\n\t\tbackground: \"#19191c\",\n\t\tforeground: COLOR_WHITE_DIRTIER,\n\n\t\tdark: \"#19191c\",\n\t\tlight: COLOR_WHITE_DIRTIER,\n\n\t\tshadow: \"rgba(0, 0, 0, 0.1)\", //;COLOR_BLACK\n\t\tshade: COLOR_SHADE_DARK_MODE,\n\t\trgb: \"25, 25, 28\",\n\t\tborder: `1px solid ${COLOR_SHADE_DARK_MODE.dark}`,\n\t\tisDark: true\n\t},\n\tcontrast: {\n\t\tappForeground: COLOR_WHITE,\n\t\tappBackground: COLOR_BLACK,\n\n\t\tbackground: COLOR_BLACK_DIRTY,\n\t\tforeground: COLOR_YELLOW.lighter,\n\t\t//foreground: COLOR_WHITE,\n\n\t\tlight: COLOR_BLACK,\n\t\tdark: COLOR_WHITE,\n\n\t\tshadow: COLOR_BLACK,\n\t\tshade: COLOR_SHADE_CONTRAST_MODE,\n\t\trgb: \"0, 0, 0\",\n\t\tborder: `1px solid ${COLOR_WHITE_DIRTY}`,\n\t\t//border: `1px solid ${COLOR_YELLOW.lighter}`,\n\t\tisDark: true\n\t}\n};\n\n// All colors\nexport const PALETTE: Palette = {\n\tprimary: COLOR_GREEN,\n\taccent: COLOR_PURPLE,\n\tsuccess: COLOR_GREEN,\n\twarn: COLOR_ORANGE,\n\terror: COLOR_RED,\n\thighlight: COLOR_YELLOW,\n\t/*focus: COLOR_RED,\n\tselect: COLOR_BLUE,*/\n\n\tlightRed: COLOR_LIGHT_RED,\n\tred: COLOR_RED,\n\tpink: COLOR_PINK,\n\tpurple: COLOR_PURPLE,\n\toceanBlue: COLOR_OCEAN_BLUE,\n\tblue: COLOR_BLUE,\n\tturquoise: COLOR_TURQUOISE,\n\tgreen: COLOR_GREEN,\n\tdeepGreen: COLOR_DEEP_GREEN,\n\tlimeGreen: COLOR_LIME_GREEN,\n\tlimeYellow: COLOR_LIME_YELLOW,\n\tyellow: COLOR_YELLOW,\n\torange: COLOR_ORANGE,\n\tbrown: COLOR_BROWN,\n\tgrey: COLOR_GREY\n};\n\nexport const QUICK_COLORS: HexColor[] = [\n\tCOLOR_LIGHT_RED.normal,\n\t//COLOR_RED.normal,\n\tCOLOR_PINK.normal,\n\tCOLOR_PURPLE.normal,\n\tCOLOR_OCEAN_BLUE.normal,\n\tCOLOR_BLUE.normal,\n\tCOLOR_TURQUOISE.normal,\n\tCOLOR_GREEN.normal,\n\tCOLOR_DEEP_GREEN.normal,\n\tCOLOR_LIME_GREEN.normal,\n\tCOLOR_LIME_YELLOW.normal,\n\tCOLOR_YELLOW.normal,\n\tCOLOR_ORANGE.normal,\n\tCOLOR_BROWN.normal,\n\tCOLOR_SHADE.light\n];\n","import { HexColor, Palette, ThemeColor } from \"../types/color-model\";\nimport { pickRandomItem } from \"./array-util\";\nimport { COLOR_BLACK_DIRTY, COLOR_WHITE_DIRTY, PALETTE } from \"../constants/palette-constants\";\n\n/**\n * Gets a random light color from a palette.\n * @param palette\n */\nexport function getRandomLightColor(palette: Palette) {\n\treturn getRandomColor(palette, [\"light\", \"lighter\"]);\n}\n\n/**\n * Gets a random dark color from a palette.\n * @param palette\n */\nexport function getRandomDarkColor(palette: Palette) {\n\treturn getRandomColor(palette, [\"dark\", \"darker\"]);\n}\n\nexport function getRandomMindmapPaletteColorIndex() {\n\treturn String(Math.floor(Math.random() * 1000));\n}\n\n/**\n * Gets a random color from a palette.\n * @param palette\n * @param variants\n */\nexport function getRandomColor(\n\tpalette: Palette = PALETTE,\n\tvariants: (keyof ThemeColor)[] = [\"darker\", \"dark\", \"normal\", \"light\", \"lighter\"]\n) {\n\tconst colors = Object.values(palette);\n\tconst color = pickRandomItem(colors);\n\tconst variant = pickRandomItem(variants);\n\treturn color[variant] as HexColor;\n}\n\n/**\n * Returns a contrast color based on a hex.\n * @param hex\n */\nexport function getContrastColor(hex: HexColor) {\n\t// If a leading # is provided, remove it\n\tif (hex.slice(0, 1) === \"#\") {\n\t\thex = hex.slice(1);\n\t}\n\n\t// Convert to RGB value\n\tconst r = parseInt(hex.substring(0, 2), 16);\n\tconst g = parseInt(hex.substring(2, 4), 16);\n\tconst b = parseInt(hex.substring(4, 6), 16);\n\n\t// Get YIQ ratio\n\tconst yiq = (r * 299 + g * 587 + b * 114) / 1000;\n\n\t// Check contrast\n\treturn yiq >= 128 ? COLOR_BLACK_DIRTY : COLOR_WHITE_DIRTY;\n}\n\nexport function isHex(hex: string) {\n\treturn /^#[0-9A-F]{6}$/i.test(hex);\n}\n\n/**\n * Lightens or darkens a hex color.\n * @param hex - the hex color string (e.g. \"#RRGGBB\")\n * @param factor - the amount to lighten or darken the color (0 = no change, 1 = lighter, -1 = darker)\n * @returns the modified hex color string\n */\n/*export function modifyColor(hex: string, factor: number = 0): string {\n\t// Parse the hex color string to an integer value\n\tconst intValue = parseInt(hex.substring(1), 16);\n\n\t// Get the red, green, and blue components of the color\n\tconst red = (intValue >> 16) & 255;\n\tconst green = (intValue >> 8) & 255;\n\tconst blue = intValue & 255;\n\n\t// Modify the color components based on the factor\n\tconst modifier = factor < 0 ? 0 : 255;\n\tconst delta = Math.round(Math.abs(factor) * modifier);\n\n\tconst newRed = Math.max(Math.min(red + delta * factor, 255), 0);\n\tconst newGreen = Math.max(Math.min(green + delta * factor, 255), 0);\n\tconst newBlue = Math.max(Math.min(blue + delta * factor, 255), 0);\n\n\t// Convert the modified color components back to a hex color string\n\tconst newIntValue = (newRed << 16) + (newGreen << 8) + newBlue;\n\treturn `#${newIntValue.toString(16).padStart(6, \"0\")}`;\n}*/\n\n// /**\n// * Lightens or darkens a hex color while preserving some hue.\n// * @param hex - the hex color string (e.g. \"#RRGGBB\")\n// * @param factor - the amount to lighten or darken the color (0 = no change, 1 = lighter, -1 = darker)\n// * @param hue - the hue of the modified color (0 to 360)\n// * @returns the modified hex color string\n// */\n// export function modifyColor(hex: string, factor: number = 0, hue: number = 0): string {\n// \t// Convert hex color to RGB color\n// \tconst r = parseInt(hex.substring(1, 3), 16);\n// \tconst g = parseInt(hex.substring(3, 5), 16);\n// \tconst b = parseInt(hex.substring(5, 7), 16);\n//\n// \t// Convert RGB color to HSL color\n// \tconst hsl = rgbToHsl(r, g, b);\n//\n// \t// Modify the lightness component of the HSL color based on the factor\n// \tconst newL = Math.max(Math.min(hsl.l + factor * 100, 100), 0);\n//\n// \t// Set the hue component of the HSL color based on the given hue\n// \tconst newHsl = { h: hue, s: hsl.s, l: newL };\n//\n// \t// Convert the modified HSL color to RGB color\n// \tconst rgb = hslToRgb(newHsl.h, newHsl.s, newHsl.l);\n//\n// \t// Convert the modified RGB color to hex color\n// \treturn rgbToHex(rgb.r, rgb.g, rgb.b);\n// }\n//\n// /**\n// * Converts an RGB color to an HSL color.\n// * @param r - the red component (0 to 255)\n// * @param g - the green component (0 to 255)\n// * @param b - the blue component (0 to 255)\n// * @returns an object containing the HSL components (h: 0 to 360, s: 0 to 1, l: 0 to 1)\n// */\n// export function rgbToHsl(r: number, g: number, b: number): { h: number; s: number; l: number } {\n// \tr /= 255;\n// \tg /= 255;\n// \tb /= 255;\n//\n// \tconst max = Math.max(r, g, b);\n// \tconst min = Math.min(r, g, b);\n// \tlet h = 0;\n// \tlet s = 0;\n// \tlet l = (max + min) / 2;\n//\n// \tif (max !== min) {\n// \t\tconst d = max - min;\n// \t\ts = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n// \t\tswitch (max) {\n// \t\t\tcase r:\n// \t\t\t\th = (g - b) / d + (g < b ? 6 : 0);\n// \t\t\t\tbreak;\n// \t\t\tcase g:\n// \t\t\t\th = (b - r) / d + 2;\n// \t\t\t\tbreak;\n// \t\t\tcase b:\n// \t\t\t\th = (r - g) / d + 4;\n// \t\t\t\tbreak;\n// \t\t}\n// \t\th /= 6;\n// \t}\n//\n// \treturn { h: Math.round(h * 360), s, l };\n// }\n//\n// /**\n//\n// Converts an HSL color to an RGB color.\n// @param h - the hue component (0 to 360)\n// @param s - the saturation component (0 to 1)\n// @param l - the lightness component (0 to 1)\n// @returns an object containing the RGB components (r: 0 to 255, g: 0 to 255, b: 0 to 255)\n// */\n// export function hslToRgb(h: number, s: number, l: number): { r: number; g: number; b: number } {\n// \tlet r, g, b;\n// \tif (s === 0) {\n// \t\tr = g = b = l;\n// \t} else {\n// \t\tconst hue2rgb = function hue2rgb(p: number, q: number, t: number) {\n// \t\t\tif (t < 0) t += 1;\n// \t\t\tif (t > 1) t -= 1;\n// \t\t\tif (t < 1 / 6) return p + (q - p) * 6 * t;\n// \t\t\tif (t < 1 / 2) return q;\n// \t\t\tif (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n// \t\t\treturn p;\n// \t\t};\n// \t\tconst q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n// \t\tconst p = 2 * l - q;\n// \t\tr = hue2rgb(p, q, h + 1 / 3);\n// \t\tg = hue2rgb(p, q, h);\n// \t\tb = hue2rgb(p, q, h - 1 / 3);\n// \t}\n// \treturn { r: Math.round(r * 255), g: Math.round(g * 255), b: Math.round(b * 255) };\n// }\n//\n// /**\n//\n// Converts an RGB color to a hex color.\n// @param r - the red component (0 to 255)\n// @param g - the green component (0 to 255)\n// @param b - the blue component (0 to 255)\n// @returns the hex color string (e.g. \"#RRGGBB\")\n// */\n// export function rgbToHex(r: number, g: number, b: number): string {\n// \treturn `#${r.toString(16).padStart(2, \"0\")}${g.toString(16).padStart(2, \"0\")}${b.toString(16).padStart(2, \"0\")}`;\n// }\n","const crypto = globalThis.crypto ?? (globalThis as unknown as { msCrypto: Crypto }).msCrypto;\nconst subtle = crypto.subtle ?? (crypto as unknown as { webkitSubtle: SubtleCrypto }).webkitSubtle;\n\nexport async function sha256(buf: string | ArrayBuffer): Promise {\n\tif (typeof buf === \"string\") buf = strToBuf(buf);\n\n\t// Browsers throw if they lack support for an algorithm.\n\t// Promise will be rejected on non-secure origins. (http://goo.gl/lq4gCo)\n\tconst hash = await subtle.digest({ name: \"sha-256\" }, buf);\n\treturn hex(new Uint8Array(hash));\n}\n\nfunction strToBuf(str: string): ArrayBuffer {\n\tconst len = str.length;\n\tconst buf = new Uint8Array(len);\n\tfor (let i = 0; i < len; i++) {\n\t\tbuf[i] = str.charCodeAt(i);\n\t}\n\treturn buf;\n}\n\nfunction hex(buf: Uint8Array): string {\n\tconst len = buf.length;\n\tconst chars = [];\n\tfor (let i = 0; i < len; i++) {\n\t\tconst byte = buf[i];\n\t\tchars.push((byte >>> 4).toString(16));\n\t\tchars.push((byte & 0x0f).toString(16));\n\t}\n\treturn chars.join(\"\");\n}\n\nexport function uuidv4(seed?: number) {\n\tif (seed != null) {\n\t\treturn (\n\t\t\t\"0\".repeat(8) +\n\t\t\t\"-\" +\n\t\t\t\"0\".repeat(4) +\n\t\t\t\"-\" +\n\t\t\t\"0\".repeat(4) +\n\t\t\t\"-\" +\n\t\t\t\"0\".repeat(4) +\n\t\t\t\"-\" +\n\t\t\tseed.toString(16).padStart(12, \"0\")\n\t\t);\n\t}\n\n\tif (crypto.randomUUID != null) {\n\t\treturn crypto.randomUUID();\n\t}\n\n\t// @ts-ignore\n\treturn ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) =>\n\t\t(c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16)\n\t);\n}\n\nexport function makeFriendlyId(len: number) {\n\tlet id = \"\";\n\n\twhile (id.length < len) {\n\t\tid += Math.random().toString(36).slice(2);\n\t}\n\n\treturn id.slice(0, len);\n}\n\n/**\n * Hashes a string using the DJB2 algorithm.\n * @param input - The string to hash.\n * @returns The hash of the string.\n */\nexport function djb2Hash(input: string): string {\n\tlet hash = 5381;\n\tfor (let i = 0; i < input.length; i++) {\n\t\thash = (hash * 33) ^ input.charCodeAt(i);\n\t}\n\treturn String(hash >>> 0); // Ensure the hash is a positive integer.\n}\n","import { Id, Model, Ref } from \"../model/model\";\nimport { uuidv4 } from \"./hash-util\";\n\nexport type PartialModel = { id: Id } & Partial;\n\nexport function makeId(seed?: number) {\n\treturn uuidv4(seed) as Id;\n}\n\nexport function isId(id: any): id is Id {\n\treturn typeof id === \"string\" && /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(id);\n}\n\nexport function takeId(ref: Ref): Id;\nexport function takeId(ref: Ref | undefined): Id | undefined;\nexport function takeId(ref: Ref | null): Id | null;\nexport function takeId(ref: Ref | null | undefined): Id | null | undefined;\nexport function takeId(ref: Ref | null | undefined): Id | null | undefined {\n\tif (ref == null) {\n\t\treturn ref;\n\t}\n\n\treturn typeof ref !== \"object\" ? ref : \"id\" in ref && typeof ref.id === \"string\" ? ref.id : undefined;\n}\n\nexport function takeModel(ref: Ref | undefined): M | undefined {\n\tif (ref == null || typeof ref !== \"object\") {\n\t\treturn undefined;\n\t}\n\n\treturn ref;\n}\n\nexport function takeModels(refs: Ref[]): M[] {\n\treturn refs.map((ref) => takeModel(ref)).filter((item): item is NonNullable => item != null);\n}\n\nexport function cmpIds(refA: Ref | undefined | null, refB: Ref | undefined | null) {\n\tif (refA == null || refB == null) return refA === refB;\n\n\treturn takeId(refA) === takeId(refB);\n}\n\nexport function isModel(ref: any): ref is Model {\n\treturn ref != null && typeof ref === \"object\" && \"id\" in ref && \"createdAt\" in ref && \"updatedAt\" in ref;\n}\n\nexport function convertRefsToIds(model: any): T {\n\tfunction inner(m: any): any {\n\t\tif (model == null) {\n\t\t\treturn model;\n\t\t} else if (Array.isArray(model)) {\n\t\t\treturn model.map(inner);\n\t\t} else if (model instanceof Date) {\n\t\t\treturn model;\n\t\t} else if (typeof model === \"object\") {\n\t\t\treturn Object.entries(model).reduce((acc: any, [key, value]) => {\n\t\t\t\tacc[key] = isModel(value) ? model.id : convertRefsToIds(value);\n\t\t\t\treturn acc;\n\t\t\t}, {} as any);\n\t\t}\n\t}\n\n\treturn inner(model) as T;\n}\n","export function sleep(ms: number) {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n","const debounceMap = new Map();\nconst throttleMap = new Map();\n\n/**\n * Clears a debounced function.\n * @param id\n */\nexport function clearDebounce(id: any) {\n\tconst match = debounceMap.get(id);\n\tif (match != null) clearTimeout(match.timeout);\n\tdebounceMap.delete(id);\n}\n\n/**\n * Debounces a function.\n * @param cb\n * @param id\n * @param ms\n * @param options\n */\nexport function debounce(cb: Function, id: any, ms: number = 200, options: { forceMs?: number } = {}) {\n\tconst match = debounceMap.get(id);\n\tif (match != null) clearTimeout(match.timeout);\n\n\tif (match != null && match.forceMs != null && Date.now() - match.date.getTime() >= match.forceMs) {\n\t\tdebounceMap.delete(id);\n\t\tcb();\n\t\treturn;\n\t}\n\n\tdebounceMap.set(id, {\n\t\ttimeout: setTimeout(() => {\n\t\t\tcb();\n\t\t\tdebounceMap.delete(id);\n\t\t}, ms),\n\t\tdate: match?.date || new Date(),\n\t\tforceMs: options.forceMs\n\t});\n}\n\nexport function throttle(cb: Function, id: any, ms: number = 200) {\n\tconst last = throttleMap.get(id);\n\tconst now = Date.now();\n\tif (last != null && now - last < ms) return;\n\tthrottleMap.set(id, now);\n\tcb();\n}\n","export function emojiToUnicode(input: string): string {\n\treturn emojiToUnicodeRaw(input)\n\t\t.split(\" \")\n\t\t.map((val) => parseInt(val, 10).toString(16).padStart(4, \"0\"))\n\t\t.filter((val) => val !== \"fe0f\") // remove variation selector-16\n\t\t.join(\" \");\n}\n\nfunction emojiToUnicodeRaw(input: string): string {\n\tif (input.length === 1) {\n\t\treturn input.charCodeAt(0).toString();\n\t} else if (input.length > 1) {\n\t\tconst pairs: number[] = [];\n\t\tfor (let i = 0; i < input.length; i++) {\n\t\t\tif (\n\t\t\t\t// high surrogate\n\t\t\t\tinput.charCodeAt(i) >= 0xd800 &&\n\t\t\t\tinput.charCodeAt(i) <= 0xdbff\n\t\t\t) {\n\t\t\t\tif (input.charCodeAt(i + 1) >= 0xdc00 && input.charCodeAt(i + 1) <= 0xdfff) {\n\t\t\t\t\t// low surrogate\n\t\t\t\t\tpairs.push((input.charCodeAt(i) - 0xd800) * 0x400 + (input.charCodeAt(i + 1) - 0xdc00) + 0x10000);\n\t\t\t\t}\n\t\t\t} else if (input.charCodeAt(i) < 0xd800 || input.charCodeAt(i) > 0xdfff) {\n\t\t\t\t// modifiers and joiners\n\t\t\t\tpairs.push(input.charCodeAt(i));\n\t\t\t}\n\t\t}\n\t\treturn pairs.join(\" \");\n\t}\n\n\treturn \"\";\n}\n","import { Media, MediaTransformationKind } from \"../model/media\";\nimport { emojiToUnicode } from \"./emoji-to-unicode\";\nimport { HexColor } from \"../types/color-model\";\nimport { Ref } from \"../model/model\";\nimport { Nullable } from \"../types/type-util\";\nimport { takeId } from \"./model-util\";\n\n// Remember to also update imgproxy \"maxSrcResolution\"! (https://github.com/imgproxy/imgproxy/issues/96)\nconst MAX_FILE_SIZE_MB = 20;\n\nexport const MAX_FILE_SIZE_BYTES = MAX_FILE_SIZE_MB * 1024 * 1024;\n\nexport function emojiMediaUrl(baseUrl: string, emoji: string, kind: MediaTransformationKind) {\n\tconst unicode = emoji.toLowerCase().startsWith(\"u\") ? emoji : \"u\" + emojiToUnicode(emoji).replaceAll(\" \", \"_\");\n\treturn `${baseUrl}/icons/${unicode.toLowerCase()}/${kind}`;\n}\n\nexport function defaultUserAvatarUrl(\n\tbaseUrl: string,\n\t{\n\t\tid,\n\t\tcolor,\n\t\tkind\n\t}: {\n\t\tid: string;\n\t\tcolor?: HexColor;\n\t\tkind: MediaTransformationKind;\n\t}\n) {\n\treturn `${baseUrl}/avatar/${id}/${encodeURIComponent(color ?? \"black\")}/${kind}`;\n}\n\nexport function mediaUrl(baseUrl: string, media: Ref, kind: MediaTransformationKind): string;\nexport function mediaUrl(\n\tbaseUrl: string,\n\tmedia: Nullable>,\n\tkind: MediaTransformationKind\n): string | undefined;\nexport function mediaUrl(\n\tbaseUrl: string,\n\tmedia: Nullable>,\n\tkind: MediaTransformationKind\n): string | undefined {\n\tif (media == null) return undefined;\n\treturn `${baseUrl}/media/${takeId(media)}/${kind}`;\n}\n","import { Id, Model, Ref } from \"./model\";\nimport { User, UserBase, UserDAO } from \"./user\";\nimport { Workspace, WorkspaceBase, WorkspaceDAO } from \"./workspace\";\n\nexport enum WorkspaceAccessRankKind {\n\tGUEST = 1000,\n\tMEMBER = 2000,\n\tOWNER = 3000\n}\n\nexport const DEFAULT_WORKSPACE_ACCESS_RANK: WorkspaceAccessRankKind = WorkspaceAccessRankKind.GUEST;\n\nexport const WORKSPACE_ACCESS_RANKS = [\n\tWorkspaceAccessRankKind.GUEST,\n\tWorkspaceAccessRankKind.MEMBER,\n\tWorkspaceAccessRankKind.OWNER\n] as const;\n\nexport interface WorkspaceAccessBase extends Model {\n\t__entity?: \"WorkspaceAccess\";\n\n\trank: WorkspaceAccessRankKind;\n\tworkspace: Ref;\n\tuser: Ref;\n}\n\nexport interface WorkspaceAccess extends WorkspaceAccessBase {\n\tworkspace: Ref;\n\tuser: Ref;\n}\n\nexport interface WorkspaceAccessDAO extends WorkspaceAccessBase {\n\tworkspace: Id;\n\tuser: Id;\n}\n","import { Id, Model, Ref } from \"./model\";\nimport { User, UserBase, UserDAO } from \"./user\";\nimport { Room, RoomBase, RoomDAO } from \"./room\";\nimport { Workspace, WorkspaceBase, WorkspaceDAO } from \"./workspace\";\n\nexport enum RoomAccessRoleKind {\n\tNO_ACCESS = 0,\n\tPARTICIPANT = 1000,\n\tFACILITATOR = 2000\n}\n\nexport const DEFAULT_ROOM_ACCESS_ROLE: RoomAccessRoleKind = RoomAccessRoleKind.PARTICIPANT;\n\nexport const ROOM_ACCESS_ROLES = [RoomAccessRoleKind.PARTICIPANT, RoomAccessRoleKind.FACILITATOR] as const;\n\nexport type RoomAccessKind = \"user\" | \"workspace\";\n\nexport interface RoomAccessBase extends Model {\n\t__entity?: \"RoomAccess\";\n\n\trole: RoomAccessRoleKind;\n\troom: Ref;\n\n\tkind: RoomAccessKind;\n\tuser?: Ref;\n\tworkspace?: Ref;\n}\n\nexport interface RoomAccess extends RoomAccessBase {\n\troom: Ref;\n\n\tuser?: Ref;\n\tworkspace?: Ref;\n}\n\nexport interface RoomAccessDAO extends RoomAccessBase {\n\troom: Id;\n\n\tuser?: Id;\n\tworkspace?: Id;\n}\n","import { AIActionAttributeKind, AIActionContentLengthKind } from \"../types/ai-action-context\";\nimport { LanguageCode } from \"../types/language\";\nimport { PlanCurrencyKind } from \"../types/plan\";\n\nexport const DEFAULT_REACTIONS = [\"😃\", \"❤️\", \"😂\", \"🔥\", \"💩\"];\nexport const DEFAULT_AI_CONTENT_LENGTH: AIActionContentLengthKind = \"short\";\nexport const DEFAULT_AI_ACTION_ATTRIBUTE: AIActionAttributeKind = \"original\";\nexport const DEFAULT_LANGUAGE_CODE: LanguageCode = \"en-US\";\nexport const DEFAULT_CURRENCY: PlanCurrencyKind = \"usd\";\n","import { Room } from \"../model/room\";\nimport { RoomAccessRoleKind } from \"../model/room-access\";\nimport { cmpIds } from \"./model-util\";\nimport { Idea } from \"../model/idea\";\nimport { User } from \"../model/user\";\nimport { DEFAULT_REACTIONS } from \"../constants/constants\";\n\nexport function canEditIdea({\n\troom,\n\tidea,\n\tsessionUser\n}: {\n\troom?: Room | null;\n\tidea?: Idea;\n\tsessionUser?: User | null;\n}) {\n\treturn canFacilitateRoom(room) || cmpIds(idea?.createdBy, sessionUser);\n}\n\nexport function canUseReactions({ room, idea }: { room?: Room | null; idea?: Idea }) {\n\treturn (room?.reactions ?? DEFAULT_REACTIONS).length > 0 && !idea?.isCollapsed;\n}\n\nexport function canFacilitateRoom(room?: Room | null) {\n\treturn room?.role === RoomAccessRoleKind.FACILITATOR;\n}\n","export function getSessionTokenCookieName (env: string) {\n\treturn env === \"production\" ? \"ideamapSessionToken\" : `${env}IdeamapSessionToken`;\n}\n\nexport function getSessionUserIdCookieName (env: string) {\n\treturn env === \"production\" ? \"ideamapSessionUser\" : `${env}IdeamapSessionUser`;\n}\n","import { AIActionOutputKind } from \"../types/ai-action-recipe\";\nimport { hasValue, parseSectionsInText, removeEndPunctuation, unmarkdownify, unquotify } from \"./text-util\";\n\nexport type AIActionParsedOutputText = string;\nexport type AIActionParsedOutputList = string[];\nexport type AIActionParsedOutputSections = Record;\nexport interface AIActionParsedOutputMindmapNode {\n\ttext: string;\n\tchildren: AIActionParsedOutputMindmapNode[];\n}\nexport interface AIActionParsedOutputMindmap {\n\tnodes: AIActionParsedOutputMindmapNode[];\n}\n\nexport type AIActionParsedOutput =\n\t| AIActionParsedOutputText\n\t| AIActionParsedOutputList\n\t| AIActionParsedOutputSections\n\t| AIActionParsedOutputMindmap;\n\nexport function parseAIActionOutput(rawOutput: string, outputKind: \"text\"): AIActionParsedOutputText;\nexport function parseAIActionOutput(rawOutput: string, outputKind: \"list\"): AIActionParsedOutputList;\nexport function parseAIActionOutput(rawOutput: string, outputKind: \"sections\"): AIActionParsedOutputSections;\nexport function parseAIActionOutput(rawOutput: string, outputKind: \"mindmap\"): AIActionParsedOutputMindmap;\nexport function parseAIActionOutput(rawOutput: string, outputKind: AIActionOutputKind): AIActionParsedOutput;\nexport function parseAIActionOutput(rawOutput: string, outputKind: AIActionOutputKind): AIActionParsedOutput {\n\tswitch (outputKind) {\n\t\tcase \"text\":\n\t\t\treturn parseAIActionResultAsText(rawOutput);\n\t\tcase \"list\":\n\t\t\treturn parseAIActionResultAsList(rawOutput);\n\t\tcase \"sections\":\n\t\t\treturn parseAIActionResultsAsSections(rawOutput);\n\t\tcase \"mindmap\":\n\t\t\treturn parseAIActionResultsAsMindmap(rawOutput);\n\t}\n}\n\nfunction parseAIActionResultAsText(text: string): AIActionParsedOutputText {\n\treturn unquotify(text.trim());\n}\n\nconst LIST_ITEM_PREFIX_REGEX = /^([\\d\\s-]+\\.|-(?=[A-Z])|[-*]\\s+|[>\\s]+)/i;\n\n/**\n * Parses list items in text.\n * If the lines is a list item, parse them and clean them. Otherwise just return the lines.\n * @param text\n */\nfunction parseAIActionResultAsList(text: string): AIActionParsedOutputList {\n\t// Split the text into lines and clean the lines\n\tconst lines = unmarkdownify(text.trim())\n\t\t.split(/\\n/)\n\t\t.map((line) => line.trim());\n\n\tconst hasListItemPrefix = lines.some((line) => LIST_ITEM_PREFIX_REGEX.test(line));\n\n\treturn lines\n\t\t.map((line) => {\n\t\t\tif (hasListItemPrefix && !LIST_ITEM_PREFIX_REGEX.test(line)) return null;\n\t\t\treturn parseAIActionResultListItem(line);\n\t\t})\n\t\t.filter(hasValue);\n}\n\nfunction parseAIActionResultListItem(text: string): string {\n\ttext = text.replace(LIST_ITEM_PREFIX_REGEX, \"\");\n\treturn removeEndPunctuation(unquotify(text.trim()));\n}\n\nfunction parseAIActionResultsAsSections(text: string): AIActionParsedOutputSections {\n\tconst sections = parseSectionsInText(text);\n\n\tif (sections == null) return {};\n\n\tconst sectionsWithListItems: Record = {};\n\tfor (const [title, content] of Object.entries(sections)) {\n\t\tsectionsWithListItems[title] = parseAIActionResultAsList(content);\n\t}\n\n\treturn sectionsWithListItems;\n}\n\n/**\n * Parse the AI action results as a mindmap.\n * Example input:\n * >Level 1\n * >>Level 2\n * >>>Level 3\n * >>Level 2\n * @param text\n */\nfunction parseAIActionResultsAsMindmap(text: string): AIActionParsedOutputMindmap {\n\tconst lines = unmarkdownify(text.trim())\n\t\t.split(/\\n/)\n\t\t.map((line) => line.trim());\n\n\tconst rootNodes: AIActionParsedOutputMindmapNode[] = [];\n\tlet nodeStack: AIActionParsedOutputMindmapNode[] = [];\n\n\tlet prevWasEmptyLevel = false;\n\tfor (let i = 0; i < lines.length; i++) {\n\t\tconst line = lines[i];\n\t\tconst isLastLine = i === lines.length - 1;\n\n\t\tif (line.length === 0) continue;\n\n\t\tlet level = line.match(/^[>#]+/)?.[0]?.length;\n\t\tif (level == null) {\n\t\t\tif (nodeStack.length > 0 && !isLastLine) {\n\t\t\t\t// If the line is not a mindmap node, but there are nodes in the stack, add the line as a child to the last node\n\t\t\t\tlevel = nodeStack.length + (prevWasEmptyLevel ? 0 : 1);\n\t\t\t} else {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tprevWasEmptyLevel = true;\n\t\t} else {\n\t\t\tprevWasEmptyLevel = false;\n\t\t}\n\n\t\tconst text = parseAIActionResultListItem(line.replace(/^[>#-]+\\s*/, \"\").trim());\n\n\t\tconst newNode: AIActionParsedOutputMindmapNode = { text, children: [] };\n\n\t\tif (level <= nodeStack.length) {\n\t\t\t// Make sure that the node stack is on correct level\n\t\t\twhile (nodeStack.length > level - 1) {\n\t\t\t\tnodeStack.pop();\n\t\t\t}\n\t\t}\n\n\t\tif (level <= 1 || nodeStack.length === 0) {\n\t\t\t// Add a new root node\n\t\t\trootNodes.push(newNode);\n\t\t\t// Reset node stack\n\t\t\tnodeStack = [newNode];\n\t\t} else {\n\t\t\t// Add child to parent (current node in top of the node stack)\n\t\t\tconst parent = nodeStack[nodeStack.length - 1];\n\t\t\tparent.children.push(newNode);\n\t\t\tnodeStack.push(newNode);\n\t\t}\n\t}\n\n\treturn {\n\t\tnodes: rootNodes\n\t};\n}\n","// Language Tags (BCP 47) (https://www.techonthenet.com/js/language_tags.php)\n// https://simplelocalize.io/data/locales/\nexport const LANGUAGE_CODES = [\"en-US\", \"pt-BR\", \"de-DE\", \"da-DK\", \"fr-FR\"] as const;\n// export const LANGUAGE_CODES = [\"en-US\", \"da-DK\"] as const;\n\nexport type LanguageCode = (typeof LANGUAGE_CODES)[number];\n\nexport function getLanguageEmoji(language: LanguageCode) {\n\tswitch (language) {\n\t\tcase \"en-US\":\n\t\t\treturn \"🇺🇸\";\n\t\tcase \"da-DK\":\n\t\t\treturn \"🇩🇰\";\n\t\tcase \"pt-BR\":\n\t\t\treturn \"🇧🇷\";\n\t\tcase \"de-DE\":\n\t\t\treturn \"🇩🇪\";\n\t\tcase \"fr-FR\":\n\t\t\treturn \"🇫🇷\";\n\t}\n}\n","import { LANGUAGE_CODES, LanguageCode } from \"../types/language\";\nimport { PlanCurrencyKind } from \"../types/plan\";\nimport { DEFAULT_CURRENCY } from \"../constants/constants\";\n\nexport function languageCodeToISO(languageCode: LanguageCode) {\n\treturn languageCode.split(\"-\")[0].toLowerCase();\n}\n\n/**\n * Finds the best match for a language code (eg. da-DK, da and da-dk)\n * @param locale\n */\nexport function findBestLanguageCode(locale: string): LanguageCode | undefined {\n\tfor (const code of LANGUAGE_CODES) {\n\t\tif (locale.toLowerCase() === code.toLowerCase()) {\n\t\t\treturn code;\n\t\t}\n\t}\n\n\t// If we cant find a match with the exact language code, try to just match the language without the region\n\tconst [language] = locale.split(\"-\") as [string, string | undefined];\n\treturn LANGUAGE_CODES.find((code) => code.startsWith(language.toLowerCase()));\n}\n\n/*\nEUR\nDKK\nBRL\n\nPLN\nTRY\nNOK\nSEK\n\nAUD\nCAD\nGBP\nJPY\n\n */\nexport function languageCodeToCurrency(languageCode: LanguageCode): PlanCurrencyKind {\n\tswitch (languageCodeToISO(languageCode)) {\n\t\tcase \"da\":\n\t\t\treturn \"dkk\";\n\t\tcase \"pt\":\n\t\t\treturn \"brl\";\n\t\tcase \"pl\":\n\t\t\treturn \"pln\";\n\t\tcase \"tr\":\n\t\t\treturn \"try\";\n\t\tcase \"no\":\n\t\t\treturn \"nok\";\n\t\tcase \"sv\":\n\t\t\treturn \"sek\";\n\t\tcase \"au\":\n\t\t\treturn \"aud\";\n\t\tcase \"ca\":\n\t\t\treturn \"cad\";\n\t\tcase \"gb\":\n\t\t\treturn \"gbp\";\n\t\tcase \"ja\":\n\t\t\treturn \"jpy\";\n\t\tcase \"de\":\n\t\tcase \"es\":\n\t\tcase \"fr\":\n\t\tcase \"it\":\n\t\tcase \"nl\":\n\t\t\treturn \"eur\";\n\t\tdefault:\n\t\t\treturn DEFAULT_CURRENCY;\n\t}\n}\n","// Idea\nimport { APIError } from \"../types/api-error\";\nimport { PollKind } from \"../model/poll\";\nimport { PlanKind } from \"../types/plan\";\n\nfunction cleanEventName(name: string) {\n\treturn name\n\t\t?.slice(0, 30)\n\t\t?.replace(/[ -]+/g, \"_\")\n\t\t?.replace(/[^a-zA-Z_]/g, \"\")\n\t\t?.toLowerCase();\n}\n\nfunction errorToEventName(error: Error) {\n\treturn cleanEventName(error.message ?? error.name ?? \"unknown\");\n}\n\nfunction aiActionKindToEventName(kind: string) {\n\treturn cleanEventName(`${kind.replace(/([A-Z])/g, \".$1\").toLowerCase()}`);\n}\n\nexport const EVENT_IDEA_CREATE = \"idea.create\";\nexport const EVENT_IDEA_REMOVE = \"idea.remove\";\nexport const EVENT_IDEA_COLLAPSE = \"idea.collapse\";\nexport const EVENT_IDEA_EXPAND = \"idea.expand\";\nexport const EVENT_IDEA_COLOR_UPDATE = \"idea.color.update\";\nexport const EVENT_IDEA_REACT = (reaction: string) => `idea.react.${reaction}`;\nexport const EVENT_IDEA_UPLOAD_SKETCH = \"idea.upload.sketch\";\nexport const EVENT_IDEA_UPLOAD_ATTACHMENT = \"idea.upload.attachment\";\nexport const EVENT_IDEA_SHARE = \"idea.share\";\nexport const EVENT_IDEA_COPY = \"idea.copy\";\nexport const EVENT_IDEA_INSPIRE_OPEN = \"idea.inspire.open\";\nexport const EVENT_IDEA_DETACH = \"idea.detach\";\nexport const EVENT_IDEA_ATTACH = \"idea.attach\";\nexport const EVENT_IDEA_GROUP_ON = \"idea.group.on\";\nexport const EVENT_IDEA_GROUP_OFF = \"idea.group.off\";\nexport const EVENT_IDEA_TURN_INTO_ROOM = \"idea.turn_into_room\";\nexport const EVENT_IDEA_FOLD = \"idea.fold\";\nexport const EVENT_IDEA_UNFOLD = \"idea.unfold\";\n\n// Room\nexport const EVENT_ROOM_CREATE = \"room.create\";\nexport const EVENT_ROOM_UPDATE = \"room.update\";\nexport const EVENT_ROOM_REMOVE = \"room.remove\";\nexport const EVENT_ROOM_JOIN = \"room.join\";\nexport const EVENT_ROOM_LEAVE = \"room.leave\";\nexport const EVENT_ROOM_SHARE_OPEN = \"room.share.open\";\nexport const EVENT_ROOM_SHARE_OPTION_OPEN = (kind: string) => `room.share.option_${cleanEventName(kind)}.open`;\nexport const EVENT_ROOM_DETAILS_OPEN = \"room.details.open\";\nexport const EVENT_ROOM_EDIT_OPEN = \"room.edit.open\";\nexport const EVENT_ROOM_EXPORT_IDEAS_OPEN = \"room.export_ideas.open\";\nexport const EVENT_ROOM_MANAGE_PARTICIPANTS_OPEN = \"room.manage.participants.open\";\n\n// User\nexport const EVENT_USER_CREATE = \"user.create\";\nexport const EVENT_USER_UPDATE = \"user.update\";\nexport const EVENT_USER_REMOVE = \"user.remove\";\nexport const EVENT_USER_SIGN_UP = \"user.sign_up\";\nexport const EVENT_USER_SIGN_IN = \"user.sign_in\";\nexport const EVENT_GUEST_SIGN_UP = \"guest.sign_up\";\nexport const EVENT_GUEST_SIGN_IN = \"guest.sign_in\";\nexport const EVENT_USER_DELETE_ACCOUNT = \"user.delete_account\";\n\n// Cta\nexport const EVENT_CTA_GET_STARTED_CLICK = `cta.get_started.click`;\nexport const EVENT_CTA_SAVE_IDEAS_CLICK = `cta.save_ideas.click`;\nexport const EVENT_CTA_BRAINSTORM_CLICK = `cta.brainstorm.click`;\nexport const EVENT_CTA_BRAINSTORM_ERROR = `cta.brainstorm.error`;\nexport const EVENT_LANDING_ROOM_CREATE = `landing_room.create`;\nexport const EVENT_LANDING_ROOM_ERROR = `landing_room.error`;\n\n// Workspace\nexport const EVENT_WORKSPACE_CREATE = \"workspace.create\";\nexport const EVENT_WORKSPACE_DELETE = \"workspace.delete_account\";\n\n// Error\nexport const EVENT_UNHANDLED_ERROR = (err: Error | APIError) => `unhandled_error.${errorToEventName(err)}`;\nexport const EVENT_TEAMS_AUTH_TOKEN_ERROR = (err: Error) => `teams_auth_token_error.${errorToEventName(err)}`;\n\n// AI\nexport const EVENT_AI_USE = (kind: string) => `ai_${aiActionKindToEventName(kind)}.use`;\nexport const EVENT_AI_ERROR = (kind: string) => `ai_${aiActionKindToEventName(kind)}.error`;\nexport const EVENT_AI_CONTENT_FILTER_TRIGGERED = (kind: string) =>\n\t`ai_${aiActionKindToEventName(kind)}.content_filter_triggered`;\n\n// Poll\nexport const EVENT_POLL_CREATE = (kind: PollKind) => `poll.${kind}.create`;\nexport const EVENT_POLL_REMOVE = `poll.remove`;\n\n// Billing and upgrade stuff\nexport const EVENT_FEATURE_OVERVIEW_OPEN = (feature?: string) =>\n\t`feature_overview${feature != null ? `.${feature}.` : \"\"}open`;\nexport const EVENT_FEATURE_WALL_OPEN = (feature?: string) =>\n\t`feature_wall${feature != null ? `.${cleanEventName(feature)}.` : \"\"}open`;\nexport const EVENT_PLAN_SELECTION_OPEN = `plan_selection.open`;\nexport const EVENT_PLAN_OPEN = (plan: PlanKind) => `plan.${plan}.open`;\n\n// Timers\nexport const EVENT_TIMER_START = \"tool.timer.start\";\nexport const EVENT_TIMER_STOP = \"tool.timer.stop\";\nexport const EVENT_TIMER_PAUSE = \"tool.timer.pause\";\n\n// Games\nexport const EVENT_GAME_OPEN = (game: string) => `game_${cleanEventName(game)}.open`;\nexport const EVENT_GAME_START = (game: string) => `game_${cleanEventName(game)}.start`;\nexport const EVENT_GAME_FINISH = (game: string) => `game_${cleanEventName(game)}.finish`;\n\n// Toolbox\nexport const EVENT_TOOLBOX_OPEN = (id?: string) => `toolbox${id != null ? `_${cleanEventName(id)}` : \"\"}.open`;\n\n// Music\nexport const EVENT_MUSIC_PLAY = (id: string) => `music.${cleanEventName(id)}.play`;\n\n// Misc\nexport const EVENT_RATE_LIMITED_OPEN = \"rate_limited.open\";\nexport const EVENT_BOARD_CLEAN_UP = \"board.clean_up\";\nexport const EVENT_ONBOARDING_FINISH = \"onboarding.finish\";\nexport const EVENT_LIGHT_BOX_OPEN = \"lightbox.open\";\nexport const EVENT_MANAGE_OPEN = (tab?: string) => `manage${tab != null ? `.${cleanEventName(tab)}` : \"\"}.open`;\nexport const EVENT_SEARCH_OPEN = \"search.open\";\nexport const EVENT_TOOL_OPEN = (tool: string) => `tool.${tool}.open`;\nexport const EVENT_SURVEY_OPEN = \"survey.open\";\nexport const EVENT_UPSELL_OPEN = \"upsell.open\";\nexport const EVENT_CHANGELOG_OPEN = \"changelog.open\";\nexport const EVENT_LIVECHAT_OPEN = \"livechat.open\";\nexport const EVENT_KEYBOARD_SHORTCUTS_OPEN = \"keyboard_shortcuts.open\";\nexport const EVENT_CONTACT_SALES_OPEN = \"contact_sales.open\";\n\n// Version history\nexport const EVENT_VERSION_HISTORY_OPEN = \"version_history.open\";\nexport const EVENT_RESTORE_VERSION = \"version_history.restore\";\n","import { AIActionRecipe } from \"../types/ai-action-recipe\";\nimport { Id, Model, Ref } from \"./model\";\nimport { User, UserBase, UserDAO } from \"./user\";\nimport { Workspace, WorkspaceBase, WorkspaceDAO } from \"./workspace\";\nimport { cmpIds, makeId } from \"../util/model-util\";\nimport { Media, MediaBase, MediaDAO } from \"./media\";\nimport { EntityKind } from \"./entity-kind\";\n\nexport interface AIActionMetadata {\n\tname?: string;\n\tdescription?: string;\n\tentityKind?: EntityKind;\n\tstate?: {\n\t\tstart?: string;\n\t\tactive?: string;\n\t\tsuccess?: string;\n\t\terror?: string;\n\t};\n\ttechnique?: {\n\t\tdescription: string;\n\t\tname?: string;\n\t\ttoolboxId?: string;\n\t\tsticker?: string;\n\t};\n}\n\nexport interface AIActionBase extends Model {\n\t__entity?: \"AIAction\";\n\n\ticon?: Ref;\n\tmetadata?: AIActionMetadata;\n\n\trecipe: AIActionRecipe;\n\n\tcreatedBy?: Ref;\n\tworkspace?: Ref;\n}\n\nexport interface AIAction extends AIActionBase {\n\ticon?: Ref;\n\tcreatedBy?: Ref;\n\tworkspace?: Ref;\n}\n\nexport interface AIActionDAO extends AIActionBase {\n\ticon?: Ref;\n\tcreatedBy?: Id;\n\tworkspace?: Id;\n}\n\nexport type BuiltInAIActionKind =\n\t| \"scamper\"\n\t| \"swot\"\n\t| \"valuePropositionCanvas\"\n\t| \"sixThinkingHats\"\n\t| \"disneyMethod\"\n\t| \"grow\"\n\t| \"customGrow\"\n\t| \"wordAssociation\"\n\t| \"mindsetShifting\"\n\t| \"roleStorming\"\n\t| \"elevatorPitch\"\n\t| \"feedback\"\n\t| \"fiveWhy\"\n\t| \"businessModelCanvas\"\n\t| \"extractCompanyGoals\"\n\t| \"extractMindmap\"\n\t| \"ideas\"\n\t| \"finetune\"\n\t| \"inspiration\"\n\t| \"icebreakers\"\n\t| \"topics\"\n\t| \"challenges\"\n\t| \"chat\"\n\t| \"challengeBrief\"\n\t| \"imagePrompt\"\n\t| \"expand\"\n\t| \"shorten\"\n\t| \"customModifyIdea\"\n\t| \"conclusion\"\n\t| \"customIdeas\"\n\t| \"suggestPersona\"\n\t| \"selectIdeas\"\n\t| \"combineIdeas\"\n\t| \"synthesizeIdeas\"\n\t| \"topicForIdeas\"\n\t| \"oppositeIdeas\"\n\t| \"prosAndCons\"\n\t| \"ideaTitle\"\n\t| \"sixThinkingHatsQuestions\"\n\t| \"scamperQuestions\"\n\t| \"reverseThinkingQuestions\"\n\t| \"whyQuestion\"\n\t| \"rapidIdeationInspiration\"\n\t| \"crazyEightsQuestions\"\n\t| \"wordPairAssociations\"\n\t| \"brainstorm\"\n\t| \"brainstormGrow\";\n\nconst BUILT_IN_AI_ACTION_KIND_TO_ID_MAP: Record> = {\n\tscamper: makeId(1),\n\tswot: makeId(2),\n\tvaluePropositionCanvas: makeId(3),\n\tsixThinkingHats: makeId(4),\n\tdisneyMethod: makeId(5),\n\tgrow: makeId(6),\n\twordAssociation: makeId(7),\n\tmindsetShifting: makeId(8),\n\troleStorming: makeId(9),\n\televatorPitch: makeId(10),\n\tfeedback: makeId(11),\n\tfiveWhy: makeId(13),\n\tbusinessModelCanvas: makeId(14),\n\textractCompanyGoals: makeId(15),\n\textractMindmap: makeId(16),\n\tideas: makeId(17),\n\tfinetune: makeId(18),\n\tinspiration: makeId(19),\n\ticebreakers: makeId(20),\n\ttopics: makeId(21),\n\tchallenges: makeId(22),\n\tchat: makeId(24),\n\tchallengeBrief: makeId(28),\n\timagePrompt: makeId(29),\n\texpand: makeId(30),\n\tconclusion: makeId(31),\n\tcustomIdeas: makeId(32),\n\tshorten: makeId(33),\n\tsuggestPersona: makeId(34),\n\tselectIdeas: makeId(35),\n\tcombineIdeas: makeId(36),\n\tideaTitle: makeId(37),\n\twordPairAssociations: makeId(38),\n\ttopicForIdeas: makeId(39),\n\tsixThinkingHatsQuestions: makeId(40),\n\tscamperQuestions: makeId(41),\n\twhyQuestion: makeId(42),\n\treverseThinkingQuestions: makeId(43),\n\trapidIdeationInspiration: makeId(44),\n\tcrazyEightsQuestions: makeId(45),\n\tsynthesizeIdeas: makeId(46),\n\toppositeIdeas: makeId(47),\n\tbrainstorm: makeId(48),\n\tcustomGrow: makeId(49),\n\tcustomModifyIdea: makeId(50),\n\tbrainstormGrow: makeId(51),\n\tprosAndCons: makeId(52)\n};\n\nexport function builtInAIActionKindToId(kind: BuiltInAIActionKind): Id {\n\treturn BUILT_IN_AI_ACTION_KIND_TO_ID_MAP[kind];\n}\n\nexport function builtInActionIdToKind(id: Id): BuiltInAIActionKind | undefined {\n\treturn Object.entries(BUILT_IN_AI_ACTION_KIND_TO_ID_MAP).find(([, actionId]) => cmpIds(actionId, id))?.[0] as\n\t\t| BuiltInAIActionKind\n\t\t| undefined;\n}\n","export const API_ERROR_KINDS = [\n\t\"notFound\",\n\t\"unauthorized\",\n\t\"forbidden\",\n\t\"internalServerError\",\n\t\"badRequest\",\n\t\"invitationConsumed\",\n\t\"unknown\",\n\t\"contentFilterTriggered\",\n\t\"timeout\",\n\t\"rateLimitExceeded\",\n\t\"noAccountFound\",\n\t\"notEnoughContent\",\n\t\"aiActionError\"\n] as const;\n\nexport type APIErrorKind = (typeof API_ERROR_KINDS)[number];\n\nexport const API_ERROR_STATUS_CODES: Partial> = {\n\t// General\n\tbadRequest: 400,\n\tunauthorized: 401,\n\tforbidden: 403,\n\tnotFound: 404,\n\ttimeout: 408,\n\trateLimitExceeded: 429,\n\tinternalServerError: 500,\n\tunknown: 500,\n\t// Specific\n\tnotEnoughContent: 400,\n\tcontentFilterTriggered: 400,\n\taiActionError: 400,\n\tinvitationConsumed: 404,\n\tnoAccountFound: 404\n};\n\nexport class APIError extends Error {\n\tconstructor(public kind: APIErrorKind, message?: string) {\n\t\tsuper(message);\n\t\tthis.name = `APIError:${kind}`;\n\t}\n\n\ttoObject(includeStack: boolean = false) {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tkind: this.kind,\n\t\t\tmessage: this.message,\n\t\t\tstack: includeStack ? this.stack : undefined\n\t\t};\n\t}\n\n\tstatic fromObject(obj: any) {\n\t\tif (!(obj instanceof Object)) return undefined;\n\n\t\tconst { kind, message, stack, name } = obj as any;\n\t\tif (kind == null) return undefined;\n\n\t\tconst apiError = new APIError(kind, message);\n\t\tif (stack != null) apiError.stack = stack;\n\t\tif (name != null) apiError.name = name;\n\t\treturn apiError;\n\t}\n\n\tstatic fromStatusCode(statusCode: number, message?: string) {\n\t\tconst kind = Object.entries(API_ERROR_STATUS_CODES).find(([_, code]) => code === statusCode)?.[0] as\n\t\t\t| APIErrorKind\n\t\t\t| undefined;\n\n\t\tif (kind == null) return new APIError(\"unknown\", message);\n\n\t\treturn new APIError(kind, message);\n\t}\n}\n\nexport function isAPIError(error: any): error is APIError {\n\treturn error instanceof APIError || (error.kind != null && API_ERROR_KINDS.includes(error.kind));\n}\n","export const MINDMAP_LAYOUT_KINDS = [\"default\", \"compact\", \"flat\", \"dash\", \"solid\", \"invert\", \"draw\"] as const;\nexport type MindmapLayoutKind = (typeof MINDMAP_LAYOUT_KINDS)[number];\n\nexport const DEFAULT_MINDMAP_LAYOUT_KIND: MindmapLayoutKind = \"default\";\n","const MINDMAP_PALETTE_KINDS = [\n\t\"energy\",\n\t\"rust\",\n\t\"candy\",\n\t\"pastel\",\n\t\"mono\",\n\t\"bright\",\n\t\"forest\",\n\t\"waves\",\n\t\"nature\",\n\t\"nostalgia\",\n\t\"glow\",\n\t\"murky\",\n\t\"fire\",\n\t\"vacation\"\n] as const;\nexport type MindmapPaletteKind = (typeof MINDMAP_PALETTE_KINDS)[number];\n\nexport const DEFAULT_MINDMAP_PALETTE_KIND: MindmapPaletteKind = \"energy\";\n","export function setItem(key: string, value: T, parser: (v: T) => string = JSON.stringify) {\n\ttry {\n\t\tlocalStorage.setItem(key, parser(value));\n\t} catch (err) {\n\t\tconsole.error(err);\n\t}\n}\n\nexport function getItem(key: string, parser: (v: string) => T = JSON.parse): T | undefined {\n\ttry {\n\t\tconst data = localStorage.getItem(key);\n\t\tif (data != null) {\n\t\t\treturn parser(data) as T;\n\t\t}\n\n\t\treturn undefined;\n\t} catch (err) {\n\t\tconsole.error(err);\n\t\treturn undefined;\n\t}\n}\n\nexport function removeItem(key: string) {\n\tlocalStorage.removeItem(key);\n}\n","import { pickRandomItem, QUICK_COLORS } from \"shared\";\nimport { TooltipCorrectionPriority } from \"./tooltip-correction-util\";\nimport { WebDialog } from \"web-dialog\";\n\nexport function isMobile() {\n\treturn window.innerWidth <= 800;\n}\n\nexport function isTouch() {\n\t// return !hasFinePointer();\n\treturn window.matchMedia(\"(any-hover: none)\").matches;\n}\n\n/**\n * Matches the media query @media (pointer: fine)\n */\nexport function hasFinePointer() {\n\treturn window.matchMedia(\"(pointer: fine)\").matches;\n}\n\n/**\n * Selects all text in an input\n * @param $input\n */\nexport function selectTextInInput($input: HTMLInputElement | HTMLTextAreaElement) {\n\t$input.focus();\n\trequestAnimationFrame(() => {\n\t\t$input.setSelectionRange(0, $input.value.length);\n\t});\n}\n\nexport function trimText(text: string, length: number) {\n\tif (text.length <= length) return text;\n\treturn `${text.slice(0, length)}...`;\n}\n\nexport function isEmoji(text: string) {\n\treturn /^[/\\p{Emoji}|❤️]+$/u.test(text);\n}\n\nexport function getInitials(name: string, maxLettersCount = 2) {\n\treturn name\n\t\t.split(\" \")\n\t\t.slice(0, maxLettersCount)\n\t\t.map((word) => word[0])\n\t\t.join(\"\")\n\t\t.toUpperCase();\n}\n\nexport function stopEvent(e: Event) {\n\te.preventDefault();\n\te.stopPropagation();\n}\n\nexport function getRandomHexColor() {\n\treturn pickRandomItem(QUICK_COLORS);\n}\n\nexport function redispatchEvent($target: EventTarget, e: Event | CustomEvent, type = e.type) {\n\tstopEvent(e);\n\t$target.dispatchEvent(\n\t\tnew CustomEvent(type, {\n\t\t\tbubbles: e.bubbles,\n\t\t\tcancelable: e.cancelable,\n\t\t\tcomposed: e.composed,\n\t\t\tdetail: \"detail\" in e ? e.detail : undefined\n\t\t})\n\t);\n}\n\n/**\n * Waits x ms.\n * @param ms\n */\nexport function wait(ms: number) {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Promisifies an animation.\n * @param animation\n */\nexport function promisifyAnimation(animation: Animation): Promise {\n\treturn new Promise((res, rej) => {\n\t\tanimation.onfinish = ((e: AnimationPlaybackEvent) => res(e)) as any;\n\t\tanimation.oncancel = rej;\n\t});\n}\n\nexport function roundToNearest(number: number, nearest = 10) {\n\treturn Math.floor(number / nearest) * nearest;\n}\n\n/**\n * Rounds a number to 2 decimals.\n * https://stackoverflow.com/questions/11832914/how-to-round-to-at-most-2-decimal-places-if-necessary\n * @param num\n */\nexport function round(num: number) {\n\treturn Math.round(num * 100) / 100;\n}\n\nexport function leadingZero(value: number, length = 2) {\n\treturn value.toString().padStart(length, \"0\");\n}\n\nexport function isNumber(value: string | number): boolean {\n\treturn !isNaN(Number(value.toString()));\n}\n\n/**\n * Capitalizes the first letter.\n * @param string\n */\nexport function capitalizeFirstLetter(string: string) {\n\treturn string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n/**\n * Attaches an outside click listener.\n * @param $elem\n * @param isActive\n * @param cb\n * @param capture\n * @param prevent\n */\nexport function attachOutsideClickListener({\n\t$elem,\n\tisActive,\n\tcb,\n\tcapture = true,\n\tprevent = true\n}: {\n\t$elem: HTMLElement;\n\tisActive: () => boolean;\n\tcb: (e: MouseEvent, didClickSameElementType: boolean) => void;\n\tcapture?: boolean;\n\tprevent?: boolean;\n}) {\n\tconst listener = (e: MouseEvent) => {\n\t\tif (isActive() && !e.composedPath().includes($elem)) {\n\t\t\t// If another element with the same tagname is clicked, allow it to open immediately by not preventing the event.\n\t\t\t// This allows the user to for example click on many menu dropdowns without having to close the current one first.\n\t\t\tconst didClickSameElementType = e\n\t\t\t\t.composedPath()\n\t\t\t\t.map((elem) => (elem as HTMLElement).tagName)\n\t\t\t\t.includes($elem.tagName);\n\n\t\t\tif (prevent && !didClickSameElementType) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\n\t\t\tcb(e, didClickSameElementType);\n\t\t}\n\t};\n\n\tconst removeListener = () => window.removeEventListener(\"pointerdown\", listener, { capture });\n\n\twindow.addEventListener(\"pointerdown\", listener, { capture });\n\treturn removeListener;\n}\n\n/**\n * Creates a range of numbers.\n * @param from\n * @param to\n */\nexport function createRange(from: number, to: number) {\n\treturn Array.from({ length: to - from + 1 }, (_, i) => from + i);\n}\n\nexport function removeUndefinedProperties>(obj: T): T {\n\tconst newObj: any = {};\n\tfor (const key in obj) {\n\t\tif (obj[key] !== undefined) newObj[key] = obj[key];\n\t}\n\treturn newObj;\n}\n\nexport function waitForNextAnimationFrame() {\n\treturn new Promise((resolve) => requestAnimationFrame(resolve));\n}\n\nexport interface BoundsResult {\n\tisWithinBounds: boolean;\n\tavailableSize: { height: number; width: number };\n}\n\n/**\n * Returns true if the element is within the bounds.\n * !!! Expensive to run !!!\n * @param $elem\n * @param justify\n * @param align\n * @param padding\n * @param $container\n */\nexport function checkBounds(\n\t$elem: HTMLElement,\n\t{\n\t\tjustify,\n\t\talign,\n\t\tpadding,\n\t\t$container\n\t}: TooltipCorrectionPriority & { padding?: number; $container?: HTMLElement | Window }\n): BoundsResult {\n\t// Find the bounds\n\tconst {\n\t\tleft: containerLeft,\n\t\ttop: containerTop,\n\t\tright: containerRight,\n\t\tbottom: containerBottom\n\t} = $container == null || $container == window\n\t\t? {\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0,\n\t\t\t\tright: window.innerWidth,\n\t\t\t\tbottom: window.innerHeight\n\t\t\t}\n\t\t: ($container as HTMLElement).getBoundingClientRect();\n\n\tconst rect = $elem.getBoundingClientRect();\n\n\tconst isWithinBounds =\n\t\trect.left >= containerLeft &&\n\t\trect.top >= containerTop &&\n\t\trect.right <= containerRight &&\n\t\trect.bottom <= containerBottom;\n\n\tconst availableSize = {\n\t\theight:\n\t\t\t(align === \"top\" ? containerTop : containerBottom) - (align === \"top\" ? -rect.bottom : rect.top) - (padding ?? 0),\n\t\twidth:\n\t\t\t(justify === \"left\" ? containerLeft : containerRight) -\n\t\t\t(justify === \"left\" ? -rect.right : rect.left) -\n\t\t\t(padding ?? 0)\n\t};\n\n\treturn {\n\t\tisWithinBounds,\n\t\tavailableSize\n\t};\n}\n\n/**\n * Finds the first scrollable parent (also pierces through shadow roots).\n * @param $elem\n */\nexport function findFirstScrollableParent($elem?: HTMLElement | null): HTMLElement | Window {\n\tif ($elem == null) return window;\n\tif ($elem.scrollHeight > $elem.clientHeight) return $elem;\n\treturn findFirstScrollableParent($elem.parentElement ?? ($elem.getRootNode() as any)?.host);\n}\n\n/**\n * Closes all webdialogs.\n */\nexport function closeAllDialogs() {\n\tconst $dialogs = document.querySelectorAll(\"web-dialog\");\n\t$dialogs.forEach(($dialog) => ($dialog as WebDialog).close());\n}\n\n/**\n * Returns the height of the app and is iOS safe.\n */\nexport function getAppHeight() {\n\treturn Math.min(window.innerHeight, window.visualViewport?.height ?? Infinity);\n}\n\n/**\n * Loads a script\n *\n * @param src\n * @param options\n */\nexport function loadScript(\n\tsrc: string,\n\t{ defer = true, id, appendTo = \"head\" }: Partial<{ id: string; defer: boolean; appendTo: \"head\" | \"body\" }> = {}\n) {\n\treturn new Promise((res, rej) => {\n\t\tconst script = document.createElement(\"script\");\n\t\tscript.src = src;\n\t\tscript.type = \"text/javascript\";\n\t\tif (defer) {\n\t\t\tscript.defer = true;\n\t\t}\n\n\t\tif (id != null) {\n\t\t\tscript.setAttribute(\"id\", id);\n\t\t}\n\n\t\tscript.onload = res;\n\n\t\tdocument.getElementsByTagName(appendTo)[0].appendChild(script);\n\t});\n}\n","/// \nimport { ColorMode, LanguageCode, makeId, PlanCurrencyKind } from \"shared\";\nimport { getItem } from \"./util/local-storage\";\nimport { isMobile } from \"./util/util\";\n\nexport const IS_LOCAL_HOST = location.host.startsWith(\"localhost\") || location.hostname === \"ideanote-teams.test\";\nexport type Environment = \"local\" | \"production\" | \"staging\" | \"development\";\n// TODO: use \"env.devserver\" instead of this solution\nexport const ENVIRONMENT: Environment = IS_LOCAL_HOST\n\t? \"local\"\n\t: ((import.meta.env.MODE ?? \"development\") as Environment);\nexport const APP_BUILD_DATE = new Date(Number(import.meta.env.WEBAPP_BUILD_TIMESTAMP) || Date.now());\nexport const STATIC_ASSETS_PATH = \"https://storage.googleapis.com/ideamap/static\"; // TODO: Move to .env\n// TODO: Remove getVerisonTag()\nexport function getVersionTag() {\n\treturn `${APP_BUILD_DATE.toLocaleString()}`;\n}\nexport const TEAMS_APP_ID = \"da0ceaa6-d4a5-4982-a67f-2557630c02e5\";\nexport const SERVICE_WORKER_ENABLED = !IS_LOCAL_HOST;\nexport const IS_DEBUGGING = ENVIRONMENT !== \"production\";\nexport const DPO_EMAIL = \"dpo@ideamap.ai\";\nexport const SUPPORT_EMAIL = \"hello@ideamap.ai\";\nexport const SERVICE_WORKER_PATH = \"/sw.js\";\nexport const SENTRY_KEY = \"9b521590bff9b83f035fa7e51cdf6441@o702376\";\nexport const SENTRY_PROJECT_ID = \"4505912745394176\";\nexport const SESSION_ID = makeId();\n\n// TODO: Move these to .env\nexport const UMAMI_PLAYGROUND_ID = \"44b19fe9-731b-4071-b97f-8e934a87831e\";\nexport const UMAMI_LANDING_ID = \"702927fc-cc98-40f9-b95b-3dc4dd4a703f\";\nexport const UMAMI_WEBAPP_ID = \"300adf5b-8200-464b-b230-25515bbc1a0d\";\n\nexport const IDEA_WIDGET_IDS = {\n\tsurvey: \"e9af2c36b9\",\n\tfeedback: \"a66e46f8af\"\n};\n\nexport const SURVEY_USER_CREATED_AT_THRESHOLD_DAYS = 30;\nexport const SURVEY_ALERT_INTERVAL_DAYS = 60;\nexport const SURVEY_CHANCE = 0.1;\n\nexport const UPSELL_USER_CREATED_AT_THRESHOLD_DAYS = 14;\nexport const UPSELL_ALERT_INTERVAL_DAYS = 30;\nexport const UPSELL_ALERT_CHANCE = 0.4;\n\nexport const ROUTES = {\n\tindex: \"/\",\n\thome: \"/home\",\n\tsitemap: \"/sitemap\",\n\ttoolbox: (id?: string) => `/toolbox${id ? `/${id}` : \"\"}`,\n\taffiliate: \"/affiliate\",\n\tcreateRoom: \"/create\",\n\thelp: (section?: string, content?: string) => `/help${section ? `/${section}${content ? `/${content}` : \"\"}` : \"\"}`,\n\tcreateWorkspace: \"/setup\",\n\tdebugMindmap: \"/debug/mindmap\",\n\tdebugUI: \"/debug/ui\",\n\tposter: \"/poster\",\n\tpdf: \"/pdf\",\n\tlegal: \"/legal\",\n\tblog: (id?: string) => `/blog${id ? `/${id}` : \"\"}`,\n\tgetStarted: \"/get-started\",\n\tcontactSales: \"/contact-sales\",\n\tfeatures: (id?: string) => `/features${id ? `/${id}` : \"\"}`,\n\tbrainstormEmbed: \"/brainstorm/embed\",\n\tmindmapEmbed: \"/mindmap/embed\",\n\tbrainstorm: \"/brainstorm\",\n\tgenerateMindmap: \"/generate-ai-mindmap\",\n\tsetupTab: \"/setup-tab\",\n\troom: (slug: string) => `/room/${slug}`,\n\tjoinRoom: (accessCode: string) => `/join/${accessCode}`,\n\tjoinWorkspace: (accessCode: string) => `/invitation/${accessCode}`,\n\tpricing: \"/pricing\",\n\tgift: `/gift`,\n\tenterprise: `/enterprise`\n};\n\nexport const DEFAULT_AVATAR_SIZE = 32;\n\nexport const QUERY_PARAMS = {\n\tembed: \"embed\",\n\tcontinue: \"continue\",\n\tutmMedium: \"utm_medium\",\n\twelcome: \"welcome\",\n\n\t// The \"via\" thing is required by promotokit\n\taffiliateVia: \"via\"\n};\n\nexport const UTM_MEDIUM_PWA = \"pwa\";\n\nexport const MS_TEAMS_ENTITY_IDS = {\n\thome: \"home\"\n};\n\nexport const ROUTE_CHANGED_EVENT = \"route-changed\";\n\nexport const MAX_IDEA_TEXT_LINES_BEFORE_TRUNCATE = 1;\nexport const MAX_IDEA_TEXT_CHARS_BEFORE_TRUNCATE = 400;\n\n// Env.gcloudAssetPath\n\nexport const ASSETS_PATHS = {\n\tbase: \"/assets\",\n\tlegal: \"/assets/legal\",\n\tcover: \"/assets/cover\",\n\tcopilots: \"/assets/copilots\",\n\tbrand: \"/assets/brand\",\n\thelpDocs: (code: LanguageCode) => `/i18n/${code}/help-docs`,\n\ttoolbox: (code: LanguageCode) => `/i18n/${code}/toolbox`,\n\temojis: \"/assets/emojis\",\n\taiModels: \"/assets/ai-models\",\n\tblog: `${STATIC_ASSETS_PATH}/blog`,\n\tmusic: `${STATIC_ASSETS_PATH}/music`\n};\nexport const MAX_ROOM_COVER_COUNT = 17;\nexport const DEFAULT_ROOM_COVER_URL = getCover(0);\nexport const DEFAULT_ROBOT_AVATAR_URL = `${ASSETS_PATHS.copilots}/default.jpg`;\n\nexport const STORAGE_KEYS = {\n\tuser: (roomId: string) => `user-${roomId}`,\n\troomConclusion: (roomId: string) => `room-conclusion-${roomId}`,\n\tisMenuOpen: \"is-menu-open\",\n\tsessionUser: \"session-user\",\n\tcolorMode: \"color-mode\",\n\tcurrentWorkspace: \"current-workspace\",\n\tlastExportedPDFElements: \"last-exported-pdf-elements\",\n\taskedSurveyDate: \"survey-date\",\n\taffiliateReferralId: \"affiliate-referral-id\",\n\tlanguage: \"language\"\n};\n\nexport const DEFAULT_COLOR_MODE: ColorMode = \"light\";\n\nexport const MAX_VISIBLE_USERS_IN_ROOM = 6;\n\nexport const MAX_VISIBLE_USERS_IN_ROOM_CARD = 3;\n\nexport const API_BASE_URL =\n\tlocation.hostname === \"localhost\" || location.hostname.startsWith(\"192.\") || location.hostname.includes(\".ngrok\")\n\t\t? `/api`\n\t\t: import.meta.env.SHARED_API_EXTERNAL_ORIGIN;\n\nexport const API_BASE_WS_URL =\n\tlocation.hostname === \"localhost\" || location.hostname.startsWith(\"192.\") || location.hostname.includes(\".ngrok\")\n\t\t? `wss://${location.host}`\n\t\t: import.meta.env.SHARED_API_WS_EXTERNAL_ORIGIN;\n\nexport const VOTING_RANK_SYMBOLS = [\"👑\", \"🥈\", \"🥉\"];\n\nexport const UNNAMED_USER_NAME = \"Unnamed\";\nexport const THUMBS_REACTIONS = [\"👍\", \"👎\"];\nexport const YES_NO_REACTIONS = [\"✅\", \"⚠️\", \"❌\"];\nexport const COLORED_HEARTS_REACTIONS = [\"❤️\", \"💛\", \"💚\", \"💙\", \"💜\", \"🖤\"];\nexport const EMOJI_FACE_REACTIONS = [\"😃\", \"😂\", \"😍\", \"😬\", \"🤓\", \"😎\", \"🥳\", \"😭\", \"😱\", \"🤑\"];\nexport const SWOT_REACTIONS = [\"💪\", \"💔\", \"🔍\", \"🚩\"];\nexport const RANKING_REACTIONS = [\"🥇\", \"🥈\", \"🥉\"];\nexport const HEATMAP_REACTIONS = [\"🔥\", \"❄️\"];\nexport const DOT_REACTIONS = [\"🔴\", \"🟠\", \"🟡\", \"🟢\", \"🔵\", \"🟣\"];\nexport const POSITIVE_REACTIONS = [\n\t\"👍\",\n\t\"❤️\",\n\t\"😃\",\n\t\"😂\",\n\t\"🔥\",\n\t\"👑\",\n\t\"🌟\",\n\t\"🎉\",\n\t\"🎯\",\n\t\"🏆\",\n\t\"😍\",\n\t\"🤯\",\n\t\"👏\",\n\t\"🚀\",\n\t\"💯\",\n\t\"🌈\",\n\t\"💎\"\n];\n\nexport const EMOJI_FONT_NAME = \"Noto Color Emoji\";\nexport const DEFAULT_FONT_NAME = \"Lato\";\n\nexport const DEFAULT_TIMER_MINUTES = 2;\nexport const DEFAULT_TIMER_SECONDS = 0;\n\nexport const DEFAULT_VOTING_SYMBOL = \"⭐️\";\n\nexport const VOTING_SYMBOLS = [\n\t\"⭐\",\n\t\"👍\",\n\t\"❤️\",\n\t\"🟢\",\n\t\"🟡\",\n\t\"🔵\",\n\t\"🟣\",\n\t\"🟠\",\n\t\"💡\",\n\t\"👏\",\n\t\"🚀\",\n\t\"💯\",\n\t\"🌈\",\n\t\"🔥\",\n\t\"🎯\",\n\t\"💎\",\n\t\"🏆\",\n\t\"😍\",\n\t\"👀\",\n\t\"🤯\",\n\t\"🎉\",\n\t\"👎\"\n];\n\nexport const DEFAULT_GROUP_STICKER = \"📁\";\n\nexport const REALTIME_USER_STATE_UPDATE_INTERVAL = 400;\n\nexport function getCover(n: number) {\n\treturn `${ASSETS_PATHS.cover}/cover-${n}.jpg`;\n}\n\nexport function getRandomCover() {\n\treturn getCover(Math.floor(Math.random() * (MAX_ROOM_COVER_COUNT - 1)));\n}\n\nexport function getIsMenuOpenFromStorage() {\n\tconst val = getItem(STORAGE_KEYS.isMenuOpen);\n\treturn val == null ? !isMobile() : Boolean(getItem(STORAGE_KEYS.isMenuOpen));\n}\n\nexport const AI_ACTION_CONTAINER_GROUPS = {\n\troom: \"room\"\n};\n\nexport function getPlanEmojiPath({ name, gif }: { name: string; gif?: boolean }) {\n\treturn `${ASSETS_PATHS.emojis}/${name}.${gif ? \"gif\" : \"svg\"}`;\n}\n\nexport const DEFAULT_CURRENCY: PlanCurrencyKind = \"usd\";\n\nexport const DEVICE_PIXEL_RATIO = typeof devicePixelRatio === \"undefined\" ? 1 : devicePixelRatio;\nexport const INTERCOM_APP_ID = \"k2jnel0b\";\n\nexport const DEFAULT_MAX_FILE_SIZE_BYTES = 1024 * 1024 * 20; // 20 MB\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function () {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar BehaviorSubject = (function (_super) {\n __extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: false,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, (this._value = value));\n };\n return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map","export var dateTimestampProvider = {\n now: function () {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar ReplaySubject = (function (_super) {\n __extends(ReplaySubject, _super);\n function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {\n if (_bufferSize === void 0) { _bufferSize = Infinity; }\n if (_windowTime === void 0) { _windowTime = Infinity; }\n if (_timestampProvider === void 0) { _timestampProvider = dateTimestampProvider; }\n var _this = _super.call(this) || this;\n _this._bufferSize = _bufferSize;\n _this._windowTime = _windowTime;\n _this._timestampProvider = _timestampProvider;\n _this._buffer = [];\n _this._infiniteTimeWindow = true;\n _this._infiniteTimeWindow = _windowTime === Infinity;\n _this._bufferSize = Math.max(1, _bufferSize);\n _this._windowTime = Math.max(1, _windowTime);\n return _this;\n }\n ReplaySubject.prototype.next = function (value) {\n var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n var subscription = this._innerSubscribe(subscriber);\n var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;\n var copy = _buffer.slice();\n for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n };\n ReplaySubject.prototype._trimBuffer = function () {\n var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;\n var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n var now = _timestampProvider.now();\n var last = 0;\n for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n };\n return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\n//# sourceMappingURL=ReplaySubject.js.map","import { Observable } from '../Observable';\nexport var EMPTY = new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.js.map","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n//# sourceMappingURL=args.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=innerFrom.js.map","export function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n if (delay === void 0) { delay = 0; }\n if (repeat === void 0) { repeat = false; }\n var scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\n//# sourceMappingURL=executeSchedule.js.map","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));\n });\n}\n//# sourceMappingURL=observeOn.js.map","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n });\n}\n//# sourceMappingURL=subscribeOn.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=scheduleObservable.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=schedulePromise.js.map","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n//# sourceMappingURL=scheduleArray.js.map","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable(function (subscriber) {\n var iterator;\n executeSchedule(subscriber, scheduler, function () {\n iterator = input[Symbol_iterator]();\n executeSchedule(subscriber, scheduler, function () {\n var _a;\n var value;\n var done;\n try {\n (_a = iterator.next(), value = _a.value, done = _a.done);\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return function () { return isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n executeSchedule(subscriber, scheduler, function () {\n var iterator = input[Symbol.asyncIterator]();\n executeSchedule(subscriber, scheduler, function () {\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\n//# sourceMappingURL=scheduleAsyncIterable.js.map","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n//# sourceMappingURL=scheduled.js.map","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n//# sourceMappingURL=from.js.map","import { createErrorClass } from './createErrorClass';\nexport var EmptyError = createErrorClass(function (_super) { return function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n}; });\n//# sourceMappingURL=EmptyError.js.map","import { EmptyError } from './util/EmptyError';\nimport { SafeSubscriber } from './Subscriber';\nexport function firstValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n resolve(value);\n subscriber.unsubscribe();\n },\n error: reject,\n complete: function () {\n if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError());\n }\n },\n });\n source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=firstValueFrom.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n//# sourceMappingURL=map.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { map } from \"../operators/map\";\nvar isArray = Array.isArray;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n return map(function (args) { return callOrApply(fn, args); });\n}\n//# sourceMappingURL=mapOneOrManyArgs.js.map","var isArray = Array.isArray;\nvar getPrototypeOf = Object.getPrototypeOf, objectProto = Object.prototype, getKeys = Object.keys;\nexport function argsArgArrayOrObject(args) {\n if (args.length === 1) {\n var first_1 = args[0];\n if (isArray(first_1)) {\n return { args: first_1, keys: null };\n }\n if (isPOJO(first_1)) {\n var keys = getKeys(first_1);\n return {\n args: keys.map(function (key) { return first_1[key]; }),\n keys: keys,\n };\n }\n }\n return { args: args, keys: null };\n}\nfunction isPOJO(obj) {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n//# sourceMappingURL=argsArgArrayOrObject.js.map","export function createObject(keys, values) {\n return keys.reduce(function (result, key, i) { return ((result[key] = values[i]), result); }, {});\n}\n//# sourceMappingURL=createObject.js.map","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { from } from './from';\nimport { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { popResultSelector, popScheduler } from '../util/args';\nimport { createObject } from '../util/createObject';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function combineLatest() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var resultSelector = popResultSelector(args);\n var _a = argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys;\n if (observables.length === 0) {\n return from([], scheduler);\n }\n var result = new Observable(combineLatestInit(observables, scheduler, keys\n ?\n function (values) { return createObject(keys, values); }\n :\n identity));\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\nexport function combineLatestInit(observables, scheduler, valueTransform) {\n if (valueTransform === void 0) { valueTransform = identity; }\n return function (subscriber) {\n maybeSchedule(scheduler, function () {\n var length = observables.length;\n var values = new Array(length);\n var active = length;\n var remainingFirstValues = length;\n var _loop_1 = function (i) {\n maybeSchedule(scheduler, function () {\n var source = from(observables[i], scheduler);\n var hasFirstValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n values[i] = value;\n if (!hasFirstValue) {\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n subscriber.next(valueTransform(values.slice()));\n }\n }, function () {\n if (!--active) {\n subscriber.complete();\n }\n }));\n }, subscriber);\n };\n for (var i = 0; i < length; i++) {\n _loop_1(i);\n }\n }, subscriber);\n };\n}\nfunction maybeSchedule(scheduler, execute, subscription) {\n if (scheduler) {\n executeSchedule(subscription, scheduler, execute);\n }\n else {\n execute();\n }\n}\n//# sourceMappingURL=combineLatest.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n var buffer = [];\n var active = 0;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };\n var doInnerSub = function (value) {\n expand && subscriber.next(value);\n active++;\n var innerComplete = false;\n innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, function (innerValue) {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n if (expand) {\n outerNext(innerValue);\n }\n else {\n subscriber.next(innerValue);\n }\n }, function () {\n innerComplete = true;\n }, undefined, function () {\n if (innerComplete) {\n try {\n active--;\n var _loop_1 = function () {\n var bufferedValue = buffer.shift();\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });\n }\n else {\n doInnerSub(bufferedValue);\n }\n };\n while (buffer.length && active < concurrent) {\n _loop_1();\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(createOperatorSubscriber(subscriber, outerNext, function () {\n isComplete = true;\n checkComplete();\n }));\n return function () {\n additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n };\n}\n//# sourceMappingURL=mergeInternals.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction(resultSelector)) {\n return mergeMap(function (a, i) { return map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom(project(a, i))); }, concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return operate(function (source, subscriber) { return mergeInternals(source, subscriber, project, concurrent); });\n}\n//# sourceMappingURL=mergeMap.js.map","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n var sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(from(sources, scheduler));\n}\n//# sourceMappingURL=merge.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=filter.js.map","import { createOperatorSubscriber } from './OperatorSubscriber';\nexport function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {\n return function (source, subscriber) {\n var hasState = hasSeed;\n var state = seed;\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var i = index++;\n state = hasState\n ?\n accumulator(state, value, i)\n :\n ((hasState = true), value);\n emitOnNext && subscriber.next(state);\n }, emitBeforeComplete &&\n (function () {\n hasState && subscriber.next(state);\n subscriber.complete();\n })));\n };\n}\n//# sourceMappingURL=scanInternals.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function defaultIfEmpty(defaultValue) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n subscriber.next(value);\n }, function () {\n if (!hasValue) {\n subscriber.next(defaultValue);\n }\n subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=defaultIfEmpty.js.map","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n return count <= 0\n ?\n function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var seen = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n//# sourceMappingURL=take.js.map","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function distinctUntilChanged(comparator, keySelector) {\n if (keySelector === void 0) { keySelector = identity; }\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return operate(function (source, subscriber) {\n var previousKey;\n var first = true;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var currentKey = keySelector(value);\n if (first || !comparator(previousKey, currentKey)) {\n first = false;\n previousKey = currentKey;\n subscriber.next(value);\n }\n }));\n });\n}\nfunction defaultCompare(a, b) {\n return a === b;\n}\n//# sourceMappingURL=distinctUntilChanged.js.map","import { operate } from '../util/lift';\nimport { scanInternals } from './scanInternals';\nexport function scan(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, true));\n}\n//# sourceMappingURL=scan.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options) {\n if (options === void 0) { options = {}; }\n var _a = options.connector, connector = _a === void 0 ? function () { return new Subject(); } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d;\n return function (wrapperSource) {\n var connection;\n var resetConnection;\n var subject;\n var refCount = 0;\n var hasCompleted = false;\n var hasErrored = false;\n var cancelReset = function () {\n resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n resetConnection = undefined;\n };\n var reset = function () {\n cancelReset();\n connection = subject = undefined;\n hasCompleted = hasErrored = false;\n };\n var resetAndUnsubscribe = function () {\n var conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n return operate(function (source, subscriber) {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n var dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n subscriber.add(function () {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n if (!connection &&\n refCount > 0) {\n connection = new SafeSubscriber({\n next: function (value) { return dest.next(value); },\n error: function (err) {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: function () {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n innerFrom(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nfunction handleReset(reset, on) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (on === true) {\n reset();\n return;\n }\n if (on === false) {\n return;\n }\n var onSubscriber = new SafeSubscriber({\n next: function () {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n return innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);\n}\n//# sourceMappingURL=share.js.map","import { ReplaySubject } from '../ReplaySubject';\nimport { share } from './share';\nexport function shareReplay(configOrBufferSize, windowTime, scheduler) {\n var _a, _b, _c;\n var bufferSize;\n var refCount = false;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n (_a = configOrBufferSize.bufferSize, bufferSize = _a === void 0 ? Infinity : _a, _b = configOrBufferSize.windowTime, windowTime = _b === void 0 ? Infinity : _b, _c = configOrBufferSize.refCount, refCount = _c === void 0 ? false : _c, scheduler = configOrBufferSize.scheduler);\n }\n else {\n bufferSize = (configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity);\n }\n return share({\n connector: function () { return new ReplaySubject(bufferSize, windowTime, scheduler); },\n resetOnError: true,\n resetOnComplete: false,\n resetOnRefCountZero: refCount,\n });\n}\n//# sourceMappingURL=shareReplay.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n return operate(function (source, subscriber) {\n var innerSubscriber = null;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); };\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n var innerIndex = 0;\n var outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () {\n innerSubscriber = null;\n checkComplete();\n })));\n }, function () {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n//# sourceMappingURL=switchMap.js.map","import { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nexport function tap(observerOrNext, error, complete) {\n var tapObserver = isFunction(observerOrNext) || error || complete\n ?\n { next: observerOrNext, error: error, complete: complete }\n : observerOrNext;\n return tapObserver\n ? operate(function (source, subscriber) {\n var _a;\n (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n var isUnsub = true;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var _a;\n (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n subscriber.next(value);\n }, function () {\n var _a;\n isUnsub = false;\n (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n subscriber.complete();\n }, function (err) {\n var _a;\n isUnsub = false;\n (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n subscriber.error(err);\n }, function () {\n var _a, _b;\n if (isUnsub) {\n (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n }\n (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n }));\n })\n :\n identity;\n}\n//# sourceMappingURL=tap.js.map","import { filter, Observable, ReplaySubject, Subject, Subscription, switchMap } from \"rxjs\";\nimport { Action } from \"./action\";\n\nexport type UnpackObservables = {\n\t[K in keyof T]: T[K] extends ReplaySubject ? U : T[K] extends Observable ? U | undefined : unknown;\n};\n\nexport type StoreModel = UnpackObservables;\n\nexport abstract class Store {\n\tabstract model$: any;\n\tprotected subscriptions?(): Subscription[];\n\n\tprotected _subscriptions: Subscription[] = [];\n\tprotected subCount = 0;\n\n\taddSubscription() {\n\t\tif (this.subCount === 0) {\n\t\t\tthis._subscriptions = this.subscriptions?.() || [];\n\t\t}\n\n\t\tthis.subCount++;\n\n\t\t// console.log(`${this.constructor.name}: add: ${this.subCount}`);\n\t}\n\n\tremoveSubscription() {\n\t\tthis.subCount--;\n\n\t\t// console.log(`${this.constructor.name}: remove: ${this.subCount}`);\n\n\t\tif (this.subCount === 0) {\n\t\t\tthis._subscriptions.forEach((sub) => sub.unsubscribe());\n\t\t}\n\t}\n}\n\nexport abstract class GlobalStore extends Store {\n\tconstructor() {\n\t\tsuper();\n\n\t\t// (async () => this.addSubscription())();\n\t\tsetTimeout(() => this.addSubscription(), 1);\n\t}\n}\n\nexport function filterMetaValue(obs: Observable>, meta?: Observable) {\n\tif (!meta) return obs;\n\treturn meta.pipe(switchMap((metaValue) => obs.pipe(filter((action) => action.meta === metaValue))));\n}\n\nexport function subSuccessActionValue(\n\taction: Subject>,\n\tcb: (value: TValue, meta: TMeta) => void,\n\tmeta?: Observable\n) {\n\treturn filterMetaValue(action, meta).subscribe((action) => {\n\t\tif (action.kind === \"success\") cb(action.value, action.meta);\n\t});\n}\n\nexport function subscribeSuccessActionValueDirectly(\n\taction: Observable>,\n\tsub: Subject,\n\tmeta?: Observable\n) {\n\treturn filterMetaValue(action, meta).subscribe((action) => {\n\t\tif (action.kind === \"success\") {\n\t\t\tsub.next(action.value);\n\t\t}\n\t});\n}\n\nexport function subscribeSuccessActionDirectly(\n\taction: Subject>,\n\tsub: Subject>,\n\tmeta?: Observable\n) {\n\treturn filterMetaValue(action, meta).subscribe((action) => {\n\t\tsub.next(action);\n\t});\n}\n","import { combineLatest, filter, map, merge, Observable, ReplaySubject, Subject, switchMap } from \"rxjs\";\nimport { cmpIds, Model } from \"shared\";\n\nexport type ActionKind = \"success\" | \"start\" | \"error\";\n\nexport interface ActionBase {\n\tkind: ActionKind;\n\tmeta?: TMeta;\n}\n\nexport interface SuccessAction extends ActionBase {\n\tkind: \"success\";\n\tvalue: TValue;\n}\n\nexport interface StartAction extends ActionBase {\n\tkind: \"start\";\n}\n\nexport interface ErrorAction extends ActionBase {\n\tkind: \"error\";\n\terror: Error;\n}\n\nexport type Action = SuccessAction | StartAction | ErrorAction;\n\nexport class ActionSubject extends Subject> {}\n\nexport class ActionSubjectCached extends ReplaySubject> {\n\tconstructor() {\n\t\tsuper(1);\n\t}\n}\n\nexport type ActionObservable = Observable>;\n\nexport function isAction(action: unknown): action is Action {\n\treturn (\n\t\taction != null &&\n\t\ttypeof action === \"object\" &&\n\t\t\"kind\" in action &&\n\t\ttypeof action.kind === \"string\" &&\n\t\t[\"success\", \"start\", \"error\"].includes(action.kind)\n\t);\n}\n\nexport async function runAction(\n\taction: ActionSubject,\n\tcb: () => Promise | TValue\n): Promise;\nexport async function runAction(\n\taction: ActionSubject,\n\tcb: () => Promise | TValue,\n\tmeta: TMeta\n): Promise;\nexport async function runAction(\n\taction: ActionSubject,\n\tcb: () => Promise | TValue,\n\tmeta?: TMeta\n) {\n\ttry {\n\t\taction.next({ kind: \"start\", meta });\n\t\tconst value = await cb();\n\t\taction.next({ kind: \"success\", value, meta });\n\t\treturn value;\n\t} catch (error) {\n\t\taction.next({ kind: \"error\", error, meta });\n\t\tthrow error;\n\t}\n}\n\nexport interface Loading {\n\tloading: boolean;\n\terror?: Error;\n\tstart?: boolean;\n\tsuccess?: boolean;\n}\n\nexport function loading$(...action: ActionObservable[]): Observable {\n\treturn merge(...action).pipe(\n\t\tmap((action) => {\n\t\t\tswitch (action.kind) {\n\t\t\t\tcase \"start\":\n\t\t\t\t\treturn { loading: true, start: true };\n\t\t\t\tcase \"success\":\n\t\t\t\t\treturn { loading: false, success: true };\n\t\t\t\tcase \"error\":\n\t\t\t\t\treturn { loading: false, error: action.error };\n\t\t\t}\n\t\t})\n\t);\n}\n\nexport function combinedLoading$(...action: ActionObservable[]): Observable {\n\treturn combineLatest(action).pipe(\n\t\tmap(([...loading]) => {\n\t\t\tif (loading.some((action) => action.kind === \"start\")) {\n\t\t\t\treturn { loading: true, start: true };\n\t\t\t}\n\n\t\t\tconst errorAction = loading.find((action) => action.kind === \"error\") as ErrorAction | undefined;\n\t\t\tif (errorAction) {\n\t\t\t\treturn { loading: false, error: errorAction.error };\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tloading: false,\n\t\t\t\tsuccess: true\n\t\t\t};\n\t\t})\n\t);\n}\n\nexport function meta$(\n\taction: ActionObservable,\n\tmeta?: TMeta | Observable\n): ActionObservable {\n\tif (meta === undefined) {\n\t\treturn action;\n\t}\n\n\tif (meta != null && meta instanceof Observable) {\n\t\treturn meta.pipe(switchMap((meta) => meta$(action, meta)));\n\t} else {\n\t}\n\n\treturn action.pipe(\n\t\tfilter((action) => {\n\t\t\treturn action.meta === meta || cmpIds(action.meta as Model, meta as Model);\n\t\t})\n\t) as ActionObservable;\n}\n\nexport function success$(\n\taction: ActionObservable,\n\tmeta?: TMeta | Observable\n): Observable {\n\treturn meta$(action, meta).pipe(\n\t\tfilter((action) => action.kind === \"success\"),\n\t\tmap((action) => {\n\t\t\tif (action.kind !== \"success\") throw new Error(\"Kind is not 'success'!\");\n\t\t\treturn action.value;\n\t\t})\n\t) as Observable;\n}\n\nexport function start$(action: ActionObservable): Observable> {\n\treturn action.pipe(filter((action) => action.kind === \"start\")) as Observable>;\n}\n","import { ActionSubjectCached, runAction } from \"../action\";\n\nexport const appAction = {\n\tsetIsSandbox: new ActionSubjectCached(),\n\tsetIsMobile: new ActionSubjectCached(),\n\tsetIsMenuOpen: new ActionSubjectCached(),\n\tsetIsPwa: new ActionSubjectCached()\n};\n\nexport const setIsSandbox = (val: boolean) => runAction(appAction.setIsSandbox, () => val);\nexport const setIsMobile = (val: boolean) => runAction(appAction.setIsMobile, () => val);\nexport const setIsMenuOpen = (val: boolean) => runAction(appAction.setIsMenuOpen, () => val);\nexport const setIsPwa = (val: boolean) => runAction(appAction.setIsPwa, () => val);\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"microsoftTeams\",[],t):\"object\"==typeof exports?exports.microsoftTeams=t():e.microsoftTeams=t()}(\"undefined\"!=typeof self?self:this,(()=>(()=>{var e={302:(e,t,n)=>{t.formatArgs=function(t){if(t[0]=(this.useColors?\"%c\":\"\")+this.namespace+(this.useColors?\" %c\":\" \")+t[0]+(this.useColors?\"%c \":\" \")+\"+\"+e.exports.humanize(this.diff),!this.useColors)return;const n=\"color: \"+this.color;t.splice(1,0,n,\"color: inherit\");let i=0,o=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{\"%%\"!==e&&(i++,\"%c\"===e&&(o=i))})),t.splice(o,0,n)},t.save=function(e){try{e?t.storage.setItem(\"debug\",e):t.storage.removeItem(\"debug\")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem(\"debug\")}catch(e){}!e&&\"undefined\"!=typeof process&&\"env\"in process&&(e=process.env.DEBUG);return e},t.useColors=function(){if(\"undefined\"!=typeof window&&window.process&&(\"renderer\"===window.process.type||window.process.__nwjs))return!0;if(\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/))return!1;return\"undefined\"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||\"undefined\"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)&&parseInt(RegExp.$1,10)>=31||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn(\"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.\"))}})(),t.colors=[\"#0000CC\",\"#0000FF\",\"#0033CC\",\"#0033FF\",\"#0066CC\",\"#0066FF\",\"#0099CC\",\"#0099FF\",\"#00CC00\",\"#00CC33\",\"#00CC66\",\"#00CC99\",\"#00CCCC\",\"#00CCFF\",\"#3300CC\",\"#3300FF\",\"#3333CC\",\"#3333FF\",\"#3366CC\",\"#3366FF\",\"#3399CC\",\"#3399FF\",\"#33CC00\",\"#33CC33\",\"#33CC66\",\"#33CC99\",\"#33CCCC\",\"#33CCFF\",\"#6600CC\",\"#6600FF\",\"#6633CC\",\"#6633FF\",\"#66CC00\",\"#66CC33\",\"#9900CC\",\"#9900FF\",\"#9933CC\",\"#9933FF\",\"#99CC00\",\"#99CC33\",\"#CC0000\",\"#CC0033\",\"#CC0066\",\"#CC0099\",\"#CC00CC\",\"#CC00FF\",\"#CC3300\",\"#CC3333\",\"#CC3366\",\"#CC3399\",\"#CC33CC\",\"#CC33FF\",\"#CC6600\",\"#CC6633\",\"#CC9900\",\"#CC9933\",\"#CCCC00\",\"#CCCC33\",\"#FF0000\",\"#FF0033\",\"#FF0066\",\"#FF0099\",\"#FF00CC\",\"#FF00FF\",\"#FF3300\",\"#FF3333\",\"#FF3366\",\"#FF3399\",\"#FF33CC\",\"#FF33FF\",\"#FF6600\",\"#FF6633\",\"#FF9900\",\"#FF9933\",\"#FFCC00\",\"#FFCC33\"],t.log=console.debug||console.log||(()=>{}),e.exports=n(65)(t);const{formatters:i}=e.exports;i.j=function(e){try{return JSON.stringify(e)}catch(e){return\"[UnexpectedJSONParseError]: \"+e.message}}},65:(e,t,n)=>{e.exports=function(e){function t(e){let n,o,r,a=null;function s(...e){if(!s.enabled)return;const i=s,o=Number(new Date),r=o-(n||o);i.diff=r,i.prev=n,i.curr=o,n=o,e[0]=t.coerce(e[0]),\"string\"!=typeof e[0]&&e.unshift(\"%O\");let a=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((n,o)=>{if(\"%%\"===n)return\"%\";a++;const r=t.formatters[o];if(\"function\"==typeof r){const t=e[a];n=r.call(i,t),e.splice(a,1),a--}return n})),t.formatArgs.call(i,e);(i.log||t.log).apply(i,e)}return s.namespace=e,s.useColors=t.useColors(),s.color=t.selectColor(e),s.extend=i,s.destroy=t.destroy,Object.defineProperty(s,\"enabled\",{enumerable:!0,configurable:!1,get:()=>null!==a?a:(o!==t.namespaces&&(o=t.namespaces,r=t.enabled(e)),r),set:e=>{a=e}}),\"function\"==typeof t.init&&t.init(s),s}function i(e,n){const i=t(this.namespace+(void 0===n?\":\":n)+e);return i.log=this.log,i}function o(e){return e.toString().substring(2,e.toString().length-2).replace(/\\.\\*\\?$/,\"*\")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(o),...t.skips.map(o).map((e=>\"-\"+e))].join(\",\");return t.enable(\"\"),e},t.enable=function(e){let n;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const i=(\"string\"==typeof e?e:\"\").split(/[\\s,]+/),o=i.length;for(n=0;n{t[n]=e[n]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let n=0;for(let t=0;t{var t=1e3,n=60*t,i=60*n,o=24*i;function r(e){if(!((e=String(e)).length>100)){var r=/^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(r){var a=parseFloat(r[1]);switch((r[2]||\"ms\").toLowerCase()){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return 315576e5*a;case\"weeks\":case\"week\":case\"w\":return 6048e5*a;case\"days\":case\"day\":case\"d\":return a*o;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return a*i;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return a*n;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return a*t;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return a;default:return}}}}function a(e){var r=Math.abs(e);return r>=o?Math.round(e/o)+\"d\":r>=i?Math.round(e/i)+\"h\":r>=n?Math.round(e/n)+\"m\":r>=t?Math.round(e/t)+\"s\":e+\"ms\"}function s(e){var r=Math.abs(e);return r>=o?l(e,r,o,\"day\"):r>=i?l(e,r,i,\"hour\"):r>=n?l(e,r,n,\"minute\"):r>=t?l(e,r,t,\"second\"):e+\" ms\"}function l(e,t,n,i){var o=t>=1.5*n;return Math.round(e/n)+\" \"+i+(o?\"s\":\"\")}e.exports=function(e,t){t=t||{};var n=typeof e;if(\"string\"===n&&e.length>0)return r(e);if(\"number\"===n&&isFinite(e))return t.long?s(e):a(e);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(e))}}},t={};function n(i){var o=t[i];if(void 0!==o)return o.exports;var r=t[i]={exports:{}};return e[i](r,r.exports,n),r.exports}(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;n.t=function(i,o){if(1&o&&(i=this(i)),8&o)return i;if(\"object\"==typeof i&&i){if(4&o&&i.__esModule)return i;if(16&o&&\"function\"==typeof i.then)return i}var r=Object.create(null);n.r(r);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&o&&i;\"object\"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>i[e]));return a.default=()=>i,n.d(r,a),r}})(),(()=>{n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})}})(),(()=>{n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{n.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})}})();var i={};return(()=>{\"use strict\";n.r(i),n.d(i,{ActionObjectType:()=>A,ChannelType:()=>B,ChildAppWindow:()=>ji,DialogDimension:()=>x,ErrorCode:()=>O,FileOpenPreference:()=>F,FrameContexts:()=>L,HostClientType:()=>V,HostName:()=>N,LiveShareHost:()=>Or,NotificationTypes:()=>ti,ParentAppWindow:()=>$i,SecondaryM365ContentIdName:()=>M,TaskModuleDimension:()=>W,TeamType:()=>D,UserSettingTypes:()=>ii,UserTeamRole:()=>U,ViewerActionTypes:()=>ni,app:()=>vt,appEntity:()=>la,appInitialization:()=>Qo,appInstallDialog:()=>wi,authentication:()=>Ze,barCode:()=>Ni,calendar:()=>ro,call:()=>Jo,chat:()=>Di,clipboard:()=>Bi,conversations:()=>fi,dialog:()=>it,enablePrintCapability:()=>tr,executeDeepLink:()=>Cr,externalAppAuthentication:()=>Kr,externalAppCardActions:()=>Qr,files:()=>Xr,geoLocation:()=>Gi,getAdaptiveCardSchemaVersion:()=>zi,getContext:()=>ir,getMruTabInstances:()=>mr,getTabInstances:()=>gr,initialize:()=>er,initializeWithFrameContext:()=>wr,liveShare:()=>Mr,location:()=>Zi,logs:()=>ei,mail:()=>so,marketplace:()=>Jr,media:()=>_i,meeting:()=>eo,meetingRoom:()=>ea,menus:()=>rt,messageChannels:()=>ta,monetization:()=>io,navigateBack:()=>br,navigateCrossDomain:()=>Pr,navigateToTab:()=>_r,notifications:()=>oa,openFilePreview:()=>di,pages:()=>Ot,people:()=>fo,print:()=>nr,profile:()=>ho,registerAppButtonClickHandler:()=>ar,registerAppButtonHoverEnterHandler:()=>sr,registerAppButtonHoverLeaveHandler:()=>lr,registerBackButtonHandler:()=>cr,registerBeforeUnloadHandler:()=>ur,registerChangeSettingsHandler:()=>pr,registerCustomHandler:()=>li,registerFocusEnterHandler:()=>fr,registerFullScreenHandler:()=>rr,registerOnLoadHandler:()=>dr,registerOnThemeChangeHandler:()=>or,registerUserSettingsChangeHandler:()=>ci,remoteCamera:()=>aa,returnFocus:()=>yr,search:()=>Uo,secondaryBrowser:()=>Ki,sendCustomEvent:()=>si,sendCustomMessage:()=>ai,setFrameContext:()=>vr,settings:()=>Ir,shareDeepLink:()=>hr,sharing:()=>xo,stageView:()=>Wo,tasks:()=>Fr,teams:()=>da,teamsCore:()=>lo,thirdPartyCloudStorage:()=>Xo,uploadCustomApp:()=>ri,version:()=>Me,videoEffects:()=>Lo,videoEffectsEx:()=>pa,visualMedia:()=>qo,webStorage:()=>jo});const e=(0,n(302).debug)(\"teamsJs\");function t(t){return e.extend(t)}function o(e,t){return`${e}_${t}`}function r(e){return/^v\\d+_[\\w.]+$/.test(e)}var a,s;!function(e){e.V_0=\"v0\",e.V_1=\"v1\",e.V_2=\"v2\",e.V_3=\"v3\"}(a||(a={})),function(e){e.App_GetContext=\"app.getContext\",e.App_Initialize=\"app.initialize\",e.App_NotifyAppLoaded=\"app.notifyAppLoaded\",e.App_NotifyExpectedFailure=\"app.notifyExpectedFailure\",e.App_NotifyFailure=\"app.notifyFailure\",e.App_NotifySuccess=\"app.notifySuccess\",e.App_OpenLink=\"app.openLink\",e.App_RegisterOnThemeChangeHandler=\"app.registerOnThemeChangeHandler\",e.AppInitialization_NotifyAppLoaded=\"appInitialization.notifyAppLoaded\",e.AppInitialization_NotifyExpectedFailure=\"appInitialization.notifyExpectedFailure\",e.AppInitialization_NotifyFailure=\"appInitialization.notifyFailure\",e.AppInitialization_NotifySuccess=\"appInitialization.notifySuccess\",e.AppEntity_SelectAppEntity=\"appEntity.selectAppEntity\",e.AppInstallDialog_OpenAppInstallDialog=\"appInstallDialog.openAppInstallDialog\",e.AppWindow_ChildAppWindow_AddEventListener=\"appWindow.childAppWindow.addEventListener\",e.AppWindow_ChildAppWindow_PostMessage=\"appWindow.childAppWindow.postMessage\",e.AppWindow_ParentAppWindow_AddEventListener=\"appWindow.parentAppWindow.addEventListener\",e.AppWindow_ParentAppWindow_PostMessage=\"appWindow.parentAppWindow.postMessage\",e.BarCode_HasPermission=\"barCode.hasPermission\",e.BarCode_RequestPermission=\"barCode.requestPermission\",e.BarCode_ScanBarCode=\"barCode.scanBarCode\",e.Calendar_ComposeMeeting=\"calendar.composeMeeting\",e.Calendar_OpenCalendarItem=\"calendar.openCalendarItem\",e.Call_StartCall=\"call.startCall\",e.Chat_OpenChat=\"chat.openChat\",e.Chat_OpenGroupChat=\"chat.openGroupChat\",e.Clipboard_Read=\"clipboard.read\",e.Clipboard_Write=\"clipboard.write\",e.Conversations_CloseConversation=\"conversations.closeConversation\",e.Conversations_GetChatMember=\"conversations.getChatMember\",e.Conversations_OpenConversation=\"conversations.openConversation\",e.Conversations_RegisterCloseConversationHandler=\"conversations.registerCloseConversationHandler\",e.Conversations_RegisterStartConversationHandler=\"conversations.registerStartConversationHandler\",e.Dialog_AdaptiveCard_Bot_Open=\"dialog.adaptiveCard.bot.open\",e.Dialog_AdaptiveCard_Open=\"dialog.adaptiveCard.open\",e.Dialog_Update_Resize=\"dialog.update.resize\",e.Dialog_Url_Bot_Open=\"dialog.url.bot.open\",e.Dialog_Url_Open=\"dialog.url.open\",e.Dialog_Url_Submit=\"dialog.url.submit\",e.Dialog_Url_ParentCommunication_SendMessageToParentFromDialog=\"dialog.url.parentCommunication.sendMessageToParentFromDialog\",e.Dialog_Url_ParentCommunication_SendMessageToDialog=\"dialog.url.parentCommunication.sendMessageToDialog\",e.Files_AddCloudStorageFolder=\"files.addCloudStorageFolder\",e.Files_AddCloudStorageProvider=\"files.addCloudStorageProvider\",e.Files_AddCloudStorageProviderFile=\"files.addCloudStorageProviderFile\",e.Files_CopyMoveFiles=\"files.copyMoveFiles\",e.Files_DeleteCloudStorageFolder=\"files.deleteCloudStorageFolder\",e.Files_DeleteCloudStorageProviderFile=\"files.deleteCloudStorageProviderFile\",e.Files_DownloadCloudStorageProviderFile=\"files.downloadCloudStorageProviderFile\",e.Files_GetCloudStorageFolderContents=\"files.getCloudStorageFolderContents\",e.Files_GetCloudStorageFolders=\"files.getCloudStorageFolders\",e.Files_GetExternalProviders=\"files.getExternalProviders\",e.Files_GetFileDownloads=\"files.getFileDownloads\",e.Files_OpenCloudStorageFile=\"files.openCloudStorageFile\",e.Files_OpenDownloadFolder=\"files.openDownloadFolder\",e.Files_RegisterCloudStorageProviderContentChangeHandler=\"files.registerCloudStorageProviderContentChangeHandler\",e.Files_RegisterCloudStorageProviderListChangeHandler=\"files.registerCloudStorageProviderListChangeHandler\",e.Files_RemoveCloudStorageProvider=\"files.removeCloudStorageProvider\",e.Files_RenameCloudStorageProviderFile=\"files.renameCloudStorageProviderFile\",e.Files_UploadCloudStorageProviderFile=\"files.uploadCloudStorageProviderFile\",e.GeoLocation_GetCurrentLocation=\"geoLocation.getCurrentLocation\",e.GeoLocation_HasPermission=\"geoLocation.hasPermission\",e.GeoLocation_Map_ChooseLocation=\"geoLocation.map.chooseLocation\",e.GeoLocation_RequestPermission=\"geoLocation.requestPermission\",e.GeoLocation_ShowLocation=\"geoLocation.showLocation\",e.Interactive_GetClientInfo=\"interactive.getClientInfo\",e.Interactive_GetClientRoles=\"interactive.getClientRoles\",e.Interactive_GetFluidContainerId=\"interactive.getFluidContainerId\",e.Interactive_GetFluidTenantInfo=\"interactive.getFluidTenantInfo\",e.Interactive_GetFluidToken=\"interactive.getFluidToken\",e.Interactive_GetNtpTime=\"interactive.getNtpTime\",e.Interactive_RegisterClientId=\"interactive.registerClientId\",e.Interactive_SetFluidContainerId=\"interactive.setFluidContainerId\",e.Location_GetLocation=\"location.getLocation\",e.Location_ShowLocation=\"location.showLocation\",e.Logs_Receive=\"log.receive\",e.Logs_RegisterLogRequestHandler=\"log.request\",e.Mail_ComposeMail=\"mail.composeMail\",e.Mail_OpenMailItem=\"mail.openMailItem\",e.Marketplace_AddOrUpdateCartItems=\"marketplace.addOrUpdateCartItems\",e.Marketplace_GetCart=\"marketplace.getCart\",e.Marketplace_RemoveCardItems=\"marketplace.removeCartItems\",e.Marketplace_UpdateCartStatus=\"marketplace.updateCartStatus\",e.Media_CaptureImage=\"media.captureImage\",e.Media_Controller=\"media.controller\",e.Media_GetMedia=\"media.getMedia\",e.Media_HasPermission=\"media.hasPermission\",e.Media_RequestPermission=\"media.requestPermission\",e.Media_ScanBarCode=\"media.scanBarCode\",e.Media_SelectMedia=\"media.selectMedia\",e.Media_ViewImages=\"media.viewImages\",e.Meeting_AppShareButton_SetOptions=\"meeting.appShareButton.setOptions\",e.Meeting_GetAppContentStageSharingCapabilities=\"meeting.getAppContentStageSharingCapabilities\",e.Meeting_GetAppContentStageSharingState=\"meeting.getAppContentStageSharingState\",e.Meeting_GetAuthenticationTokenForAnonymousUser=\"meeting.getAuthenticationTokenForAnonymousUser\",e.Meeting_GetIncomingClientAudioState=\"meeting.getIncomingClientAudioState\",e.Meeting_GetLiveStreamState=\"meeting.getLiveStreamState\",e.Meeting_GetMeetingDetails=\"meeting.getMeetingDetails\",e.Meeting_RegisterAudioDeviceSelectionChangedHandler=\"meeting.registerAudioDeviceSelectionChangedHandler\",e.Meeting_RegisterLiveStreamChangedHandler=\"meeting.registerLiveStreamChangedHandler\",e.Meeting_RegisterMeetingReactionReceivedHandler=\"meeting.registerMeetingReactionReceivedHandler\",e.Meeting_RegisterMicStateChangeHandler=\"meeting.registerMicStateChangeHandler\",e.Meeting_RegisterRaiseHandStateChangedHandler=\"meeting.registerRaiseHandStateChangedHandler\",e.Meeting_RegisterSpeakingStateChangeHandler=\"meeting.registerSpeakingStateChangeHandler\",e.Meeting_RequestAppAudioHandling=\"meeting.requestAppAudioHandling\",e.Meeting_RequestStartLiveStreaming=\"meeting.requestStartLiveStreaming\",e.Meeting_RequestStopLiveStreaming=\"meeting.requestStopLiveStreaming\",e.Meeting_SetMicStateWithReason=\"meeting.setMicStateWithReason\",e.Meeting_ShareAppContentToStage=\"meeting.shareAppContentToStage\",e.Meeting_StopSharingAppContentToStage=\"meeting.stopSharingAppContentToStage\",e.Meeting_ToggleIncomingClientAudio=\"meeting.toggleIncomingClientAudio\",e.MeetingRoom_GetPairedMeetingRoomInfo=\"meetingRoom.getPairedMeetingRoomInfo\",e.MeetingRoom_RegisterMeetingRoomCapabilitiesUpdateHandler=\"meetingRoom.registerMeetingRoomCapabilitiesUpdateHandler\",e.MeetingRoom_RegisterMeetingRoomStatesUpdateHandler=\"meetingRoom.registerMeetingRoomStatesUpdateHandler\",e.MeetingRoom_SendCommandToPairedMeetingRoom=\"meetingRoom.sendCommandToPairedMeetingRoom\",e.Menus_HandleActionMenuItemPress=\"menus.handleActionMenuItemPress\",e.Menus_HandleNavBarMenuItemPress=\"menus.handleNavBarMenuItemPress\",e.Menus_HandleViewConfigItemPress=\"menus.handleViewConfigItemPress\",e.Menus_RegisterActionMenuItemPressHandler=\"menus.registerActionMenuItemPressHandler\",e.Menus_RegisterNavBarMenuItemPressHandler=\"menus.registerNavBarMenuItemPressHandler\",e.Menus_RegisterSetModuleViewHandler=\"menus.registerSetModuleViewHandler\",e.Menus_SetNavBarMenu=\"menus.setNavBarMenu\",e.Menus_SetUpViews=\"menus.setUpViews\",e.Menus_ShowActionMenu=\"menus.showActionMenu\",e.MessageChannels_GetTelemetryPort=\"messageChannels.getTelemetryPort\",e.Monetization_OpenPurchaseExperience=\"monetization.openPurchaseExperience\",e.Navigation_NavigateBack=\"navigation.navigateBack\",e.Navigation_NavigateCrossDomain=\"navigation.navigateCrossDomain\",e.Navigation_NavigateToTab=\"navigation.navigateToTab\",e.Navigation_ReturnFocus=\"navigation.returnFocus\",e.Notifications_ShowNotification=\"notifications.showNotification\",e.Pages_AppButton_OnClick=\"pages.appButton.onClick\",e.Pages_AppButton_OnHoverEnter=\"pages.appButton.onHoverEnter\",e.Pages_AppButton_OnHoverLeave=\"pages.appButton.onHoverLeave\",e.Pages_BackStack_NavigateBack=\"pages.backStack.navigateBack\",e.Pages_BackStack_RegisterBackButtonHandler=\"pages.backStack.registerBackButtonHandler\",e.Pages_Config_RegisterChangeConfigHandler=\"pages.config.registerChangeConfigHandler\",e.Pages_Config_RegisterOnRemoveHandler=\"pages.config.registerOnRemoveHandler\",e.Pages_Config_RegisterOnSaveHandler=\"pages.config.registerOnSaveHandler\",e.Pages_Config_SetConfig=\"pages.config.setConfig\",e.Pages_Config_SetValidityState=\"pages.config.setValidityState\",e.Pages_CurrentApp_NavigateTo=\"pages.currentApp.navigateTo\",e.Pages_CurrentApp_NavigateToDefaultPage=\"pages.currentApp.navigateToDefaultPage\",e.Pages_FullTrust_EnterFullscreen=\"pages.fullTrust.enterFullscreen\",e.Pages_FullTrust_ExitFullscreen=\"pages.fullTrust.exitFullscreen\",e.Pages_GetConfig=\"pages.getConfig.\",e.Pages_NavigateCrossDomain=\"pages.navigateCrossDomain\",e.Pages_NavigateToApp=\"pages.navigateToApp\",e.Pages_RegisterFocusEnterHandler=\"pages.registerFocusEnterHandler\",e.Pages_RegisterFullScreenHandler=\"pages.registerFullScreenHandler\",e.Pages_RemoveEvent_NotifyFailure=\"pages.removeEvent.notifyFailure\",e.Pages_RemoveEvent_NotifySuccess=\"pages.removeEvent.notifySuccess\",e.Pages_ReturnFocus=\"pages.returnFocus\",e.Pages_SaveEvent_NotifyFailure=\"pages.saveEvent.notifyFailure\",e.Pages_SaveEvent_NotifySuccess=\"pages.saveEvent.notifySuccess\",e.Pages_SetCurrentFrame=\"pages.setCurrentFrame\",e.Pages_ShareDeepLink=\"pages.shareDeepLink\",e.Pages_Tabs_GetMruTabInstances=\"pages.tabs.getMruTabInstances\",e.Pages_Tabs_GetTabInstances=\"pages.tabs.getTabInstances\",e.Pages_Tabs_NavigateToTab=\"pages.tabs.navigateToTab\",e.People_SelectPeople=\"people.selectPeople\",e.PrivateAPIs_OpenFilePreview=\"openFilePreview\",e.PrivateAPIs_RegisterCustomHandler=\"registerCustomHandler\",e.PrivateAPIs_RegisterUserSettingsChangeHandler=\"registerUserSettingsChangeHandler\",e.PrivateAPIs_SendCustomMessage=\"sendCustomMessage\",e.PrivateAPIs_UploadCustomApp=\"uploadCustomApp\",e.Profile_ShowProfile=\"profile.showProfile\",e.PublicAPIs_ExecuteDeepLink=\"executeDeepLink\",e.PublicAPIs_GetContext=\"getContext\",e.PublicAPIs_GetMruTabInstances=\"getMruTabInstances\",e.PublicAPIs_GetTabInstances=\"getTabInstances\",e.PublicAPIs_Initialize=\"initialize\",e.PublicAPIs_RegisterAppButtonClickHandler=\"registerAppButtonClickHandler\",e.PublicAPIs_RegisterAppButtonHoverEnterHandler=\"registerAppButtonHoverEnterHandler\",e.PublicAPIs_RegisterAppButtonHoverLeaveHandler=\"registerAppButtonHoverLeaveHandler\",e.PublicAPIs_RegisterBackButtonHandler=\"registerBackButtonHandler\",e.PublicAPIs_RegisterChangeSettingsHandler=\"registerChangeSettingsHandler\",e.PublicAPIs_RegisterFocusEnterHandler=\"registerFocusEnterHandler\",e.PublicAPIs_RegisterFullScreenHandler=\"registerFullScreenHandler\",e.PublicAPIs_RegisterOnLoadHandler=\"registerOnLoadHandler\",e.PublicAPIs_RegisterOnThemeChangeHandlerHelper=\"registerOnThemeChangeHandlerHelper\",e.PublicAPIs_SetFrameContext=\"setFrameContext\",e.PublicAPIs_ShareDeepLink=\"shareDeepLink\",e.RegisterHandler=\"registerHandler\",e.RegisterBeforeUnloadHandler=\"registerBeforeUnloadHandler\",e.RegisterLoadHandler=\"registerLoadHandler\",e.RegisterOnThemeChangeHandler=\"registerOnThemeChangeHandler\",e.RemoteCamera_GetCapableParticipants=\"remoteCamera.getCapableParticipants\",e.RemoteCamera_RegisterOnCapableParticipantsChangeHandler=\"remoteCamera.registerOnCapableParticipantsChangeHandler\",e.RemoteCamera_RegisterOnDeviceStateChangeHandler=\"remoteCamera.registerOnDeviceStateChangeHandler\",e.RemoteCamera_RegisterOnErrorHandler=\"remoteCamera.registerOnErrorHandler\",e.RemoteCamera_RegisterOnSessionStatusChangeHandler=\"remoteCamera.registerOnSessionStatusChangeHandler\",e.RemoteCamera_RequestControl=\"remoteCamera.requestControl\",e.RemoteCamera_SendControlCommand=\"remoteCamera.sendControlCommand\",e.RemoteCamera_TerminateSession=\"remoteCamera.terminateSession\",e.Search_CloseSearch=\"search.closeSearch\",e.Search_RegisterOnChangeHandler=\"search.registerOnChangeHandler\",e.Search_RegisterOnClosedHandler=\"search.registerOnClosedHandler\",e.Search_RegisterOnExecutedHandler=\"search.registerOnExecutedHandler\",e.Search_UnregisterHandlers=\"search.unregisterHandlers\",e.SecondaryBrowser_OpenUrl=\"secondaryBrowser.openUrl\",e.Settings_GetSettings=\"settings.getSettings\",e.Settings_RegisterOnRemoveHandler=\"settings.registerOnRemoveHandler\",e.Settings_RegisterOnSaveHandler=\"settings.registerOnSaveHandler\",e.Settings_Remove_Failure=\"settings.remove.failure\",e.Settings_Remove_Success=\"settings.remove.success\",e.Settings_Save_Failure=\"settings.save.failure\",e.Settings_Save_Success=\"settings.save.success\",e.Settings_SetSettings=\"settings.setSettings\",e.Settings_SetValidityState=\"settings.setValidityState\",e.StageView_Open=\"stageView.open\",e.Tasks_StartTask=\"tasks.startTask\",e.Tasks_SubmitTask=\"tasks.submitTask\",e.Tasks_UpdateTask=\"tasks.updateTask\",e.Teams_FullTrust_GetConfigSetting=\"teams.fullTrust.getConfigSetting\",e.Teams_FullTrust_JoinedTeams_GetUserJoinedTeams=\"teams.fullTrust.joinedTeams.getUserJoinedTeams\",e.Teams_GetTeamChannels=\"teams.getTeamChannels\",e.Teams_RefreshSiteUrl=\"teams.refreshSiteUrl\",e.VideoEffects_MediaStream_RegisterForVideoFrame=\"videoEffects.mediaStream.registerForVideoFrame\",e.VideoEffects_NotifySelectedVideoEffectChanged=\"videoEffects.notifySelectedVideoEffectChanged\",e.VideoEffects_NotifyError=\"videoEffects.notifyError\",e.VideoEffects_NotifyVideoFrameProcessed=\"videoEffects.notifyVideoFrameProcessed\",e.VideoEffects_RegisterEffectParameterChangeHandler=\"videoEffects.registerEffectParameterChangeHandler\",e.VideoEffects_RegisterForVideoEffect=\"videoEffects.registerForVideoEffect\",e.VideoEffects_RegisterForVideoFrame=\"videoEffects.registerForVideoFrame\",e.VideoEffects_RegisterSetFrameProcessTimeLimitHandler=\"videoEffects.setFrameProcessTimeLimitHandler\",e.VideoEffects_RegisterStartVideoExtensibilityVideoStreamHandler=\"videoEffects.startVideoExtensibilityVideoStreamHandler\",e.VideoEffects_RegisterForVideoBufferHandler=\"videoEffects.registerForVideoBufferHandler\",e.VideoEffectsEx_MediaStream_RegisterForVideoFrame=\"videoEffectsEX.mediaStream.registerForVideoFrame\",e.VideoEffectsEx_NotifyError=\"videoEffectsEx.notifyError\",e.VideoEffectsEx_NotifySelectedVideoEffectChanged=\"videoEffectsEx.notifySelectedVideoEffectChanged\",e.VideoEffectsEx_NotifyVideoFrameProcessed=\"videoEffectsEx.notifyVideoFrameProcessed\",e.VideoEffectsEx_RegisterEffectParameterChangeHandler=\"videoEffectsEx.registerEffectParamterChangeHandler\",e.VideoEffectsEx_RegisterForVideoEffect=\"videoEffectsEx.registerForVideoEffect\",e.VideoEffectsEx_RegisterForVideoFrame=\"videoEffectsEx.registerForVideoFrame\",e.VideoEffectsEx_RegisterNewVideoFrameHandler=\"videoEffectsEx.registerNewVideoFrameHandler\",e.VideoEffectsEx_RegisterSetFrameProcessTimeLimitHandler=\"videoEffectsEX.registerSetFrameProcessTimeLimitHandler\",e.VideoEffectsEx_RegisterStartVideoExtensibilityVideoStreamHandler=\"videoEffectsEX.registerStartVideoExtensibilityVideoStreamHandler\",e.VideoEffectsEx_UpdatePersonalizedEffects=\"videoEffectsEx.updatePersonalizedEffects\",e.VideoEffectsUtils_EffectFailure=\"videoEffectsUtils.effectFailure\",e.VideoEffectsUtils_ReportVideoEffectChanged=\"videoEffectsUtils.reportVideoEffectChanged\",e.VideoEffectsUtils_TransformerWithMetadata_Constructor=\"videoEffectsUtils.transformerWithMetadata.constructor\",e.VideoPerformanceMonitor_Constructor=\"videoPerformanceMonitor.performanceDataGenerated\",e.VideoPerformanceMonitor_ReportFrameProcessed=\"videoPerformanceMonitor.reportFrameProcessed\",e.VideoPerformanceMonitor_ReportTextureStreamAcquired=\"videoPerformanceMonitor.reportTextureStreamAcquired\",e.VideoPerformanceMonitor_StartMonitorSlowFrameProcessing=\"videoPerformanceMonitor.startMonitorSlowFrameProcessing\",e.VisualMedia_HasPermission=\"visualMedia.hasPermission\",e.VisualMedia_Image_CaptureImages=\"visualMedia.image.captureImages\",e.VisualMedia_Image_RetrieveImages=\"visualMedia.image.retrieveImages\",e.VisualMedia_RequestPermission=\"visualMedia.requestPermission\"}(s||(s={}));const l=JSON.parse('{\"validOrigins\":[\"teams.microsoft.com\",\"teams.microsoft.us\",\"gov.teams.microsoft.us\",\"dod.teams.microsoft.us\",\"int.teams.microsoft.com\",\"*.teams.microsoft.com\",\"outlook.office.com\",\"outlook-sdf.office.com\",\"outlook.office365.com\",\"outlook-sdf.office365.com\",\"outlook.live.com\",\"outlook-sdf.live.com\",\"teams.live.com\",\"local.teams.live.com\",\"local.teams.live.com:8080\",\"local.teams.office.com\",\"local.teams.office.com:8080\",\"devspaces.skype.com\",\"ssauth.skype.com\",\"*.www.office.com\",\"www.office.com\",\"word.office.com\",\"excel.office.com\",\"powerpoint.office.com\",\"www.officeppe.com\",\"*.www.microsoft365.com\",\"www.microsoft365.com\",\"bing.com\",\"edgeservices.bing.com\",\"www.bing.com\",\"www.staging-bing-int.com\",\"teams.cloud.microsoft\",\"outlook.cloud.microsoft\",\"m365.cloud.microsoft\",\"copilot.microsoft.com\",\"windows.msn.com\"]}');const c=\"2.0.1\",d=\"2.0.3\",u=\"1.9.0\",f=\"1.8.0\",p=n.t(l,2).validOrigins,g=new URL(\"https://res.cdn.office.net/teams-js/validDomains/json/validDomains.json\"),m=/^https:\\/\\//,h=\"https\",C=\"teams.microsoft.com\",v=\"The library has not yet been initialized\",w=\"The runtime has not yet been initialized\",S=\"The runtime version is not supported\";class y{}y.initializeCalled=!1,y.initializeCompleted=!1,y.additionalValidOrigins=[],y.initializePromise=void 0,y.isFramelessWindow=!1,y.frameContext=void 0,y.hostClientType=void 0,y.printCapabilityEnabled=!1;const _={randomUUID:\"undefined\"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};let P;const b=new Uint8Array(16);function E(){if(!P&&(P=\"undefined\"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!P))throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");return P(b)}const I=[];for(let e=0;e<256;++e)I.push((e+256).toString(16).slice(1));function R(e,t=0){return(I[e[t+0]]+I[e[t+1]]+I[e[t+2]]+I[e[t+3]]+\"-\"+I[e[t+4]]+I[e[t+5]]+\"-\"+I[e[t+6]]+I[e[t+7]]+\"-\"+I[e[t+8]]+I[e[t+9]]+\"-\"+I[e[t+10]]+I[e[t+11]]+I[e[t+12]]+I[e[t+13]]+I[e[t+14]]+I[e[t+15]]).toLowerCase()}const T=function(e,t,n){if(_.randomUUID&&!t&&!e)return _.randomUUID();const i=(e=e||{}).random||(e.rng||E)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=i[e];return t}return R(i)};var F,A,M,O,k,H,V,N,L,D,U,x;!function(e){e.Inline=\"inline\",e.Desktop=\"desktop\",e.Web=\"web\"}(F||(F={})),function(e){e.M365Content=\"m365content\"}(A||(A={})),function(e){e.DriveId=\"driveId\",e.GroupId=\"groupId\",e.SiteId=\"siteId\",e.UserId=\"userId\"}(M||(M={})),function(e){e[e.NOT_SUPPORTED_ON_PLATFORM=100]=\"NOT_SUPPORTED_ON_PLATFORM\",e[e.INTERNAL_ERROR=500]=\"INTERNAL_ERROR\",e[e.NOT_SUPPORTED_IN_CURRENT_CONTEXT=501]=\"NOT_SUPPORTED_IN_CURRENT_CONTEXT\",e[e.PERMISSION_DENIED=1e3]=\"PERMISSION_DENIED\",e[e.NETWORK_ERROR=2e3]=\"NETWORK_ERROR\",e[e.NO_HW_SUPPORT=3e3]=\"NO_HW_SUPPORT\",e[e.INVALID_ARGUMENTS=4e3]=\"INVALID_ARGUMENTS\",e[e.UNAUTHORIZED_USER_OPERATION=5e3]=\"UNAUTHORIZED_USER_OPERATION\",e[e.INSUFFICIENT_RESOURCES=6e3]=\"INSUFFICIENT_RESOURCES\",e[e.THROTTLE=7e3]=\"THROTTLE\",e[e.USER_ABORT=8e3]=\"USER_ABORT\",e[e.OPERATION_TIMED_OUT=8001]=\"OPERATION_TIMED_OUT\",e[e.OLD_PLATFORM=9e3]=\"OLD_PLATFORM\",e[e.FILE_NOT_FOUND=404]=\"FILE_NOT_FOUND\",e[e.SIZE_EXCEEDED=1e4]=\"SIZE_EXCEEDED\"}(O||(O={})),function(e){e.GeoLocation=\"geolocation\",e.Media=\"media\"}(k||(k={})),function(e){e.TextPlain=\"text/plain\",e.TextHtml=\"text/html\",e.ImagePNG=\"image/png\",e.ImageJPEG=\"image/jpeg\"}(H||(H={})),function(e){e.desktop=\"desktop\",e.web=\"web\",e.android=\"android\",e.ios=\"ios\",e.ipados=\"ipados\",e.macos=\"macos\",e.rigel=\"rigel\",e.surfaceHub=\"surfaceHub\",e.teamsRoomsWindows=\"teamsRoomsWindows\",e.teamsRoomsAndroid=\"teamsRoomsAndroid\",e.teamsPhones=\"teamsPhones\",e.teamsDisplays=\"teamsDisplays\"}(V||(V={})),function(e){e.office=\"Office\",e.outlook=\"Outlook\",e.outlookWin32=\"OutlookWin32\",e.orange=\"Orange\",e.places=\"Places\",e.teams=\"Teams\",e.teamsModern=\"TeamsModern\"}(N||(N={})),function(e){e.settings=\"settings\",e.content=\"content\",e.authentication=\"authentication\",e.remove=\"remove\",e.task=\"task\",e.sidePanel=\"sidePanel\",e.stage=\"stage\",e.meetingStage=\"meetingStage\"}(L||(L={})),function(e){e[e.Standard=0]=\"Standard\",e[e.Edu=1]=\"Edu\",e[e.Class=2]=\"Class\",e[e.Plc=3]=\"Plc\",e[e.Staff=4]=\"Staff\"}(D||(D={})),function(e){e[e.Admin=0]=\"Admin\",e[e.User=1]=\"User\",e[e.Guest=2]=\"Guest\"}(U||(U={})),function(e){e.Large=\"large\",e.Medium=\"medium\",e.Small=\"small\"}(x||(x={}));var B,W=x;!function(e){e.Regular=\"Regular\",e.Private=\"Private\",e.Shared=\"Shared\"}(B||(B={}));const G={errorCode:O.NOT_SUPPORTED_ON_PLATFORM},z=1,q=5,j={adaptiveCardSchemaVersion:{majorVersion:1,minorVersion:5}},$=new Error(\"Invalid input count: Must supply a valid image count (limit of 10).\"),J=new Error(\"Invalid response: Received more images than the specified max limit in the response.\");function K(e){return(t,n)=>{if(!t)throw new Error(e||n)}}function Q(e,t){if(\"string\"!=typeof e||\"string\"!=typeof t)return NaN;const n=e.split(\".\"),i=t.split(\".\");function o(e){return/^\\d+$/.test(e)}if(!n.every(o)||!i.every(o))return NaN;for(;n.lengthNumber(i[e])?1:-1;return 0}function Z(){return T()}function X(e){return Object.keys(e).forEach((t=>{\"object\"==typeof e[t]&&X(e[t])})),Object.freeze(e)}function Y(e,t,...n){const i=e(...n);return i.then((e=>{t&&t(void 0,e)})).catch((e=>{t&&t(e)})),i}function ee(e,t,...n){const i=e(...n);return i.then((()=>{t&&t(null)})).catch((e=>{t&&t(e)})),i}function te(e,t,...n){const i=e(...n);return i.then((e=>{t&&t(null,e)})).catch((e=>{t&&t(e,null)})),i}function ne(e,t,n){return new Promise(((i,o)=>{const r=setTimeout(o,t,n);e().then((e=>{clearTimeout(r),i(e)})).catch((e=>{clearTimeout(r),o(e)}))}))}function ie(e){const t=new URL(\"https://teams.microsoft.com/l/entity/\"+encodeURIComponent(e.appId)+\"/\"+encodeURIComponent(e.pageId));return e.webUrl&&t.searchParams.append(\"webUrl\",e.webUrl),(e.channelId||e.subPageId)&&t.searchParams.append(\"context\",JSON.stringify({channelId:e.channelId,subEntityId:e.subPageId})),t.toString()}function oe(e){return!(Q(`${e.majorVersion}.${e.minorVersion}`,`${z}.${q}`)>=0)}function re(e){return\"https:\"===e.protocol}function ae(e,t){return new Promise(((n,i)=>{e||i(\"MimeType cannot be null or empty.\"),t||i(\"Base64 string cannot be null or empty.\");const o=atob(t);if(e.startsWith(\"image/\")){const t=new Uint8Array(o.length);for(let e=0;e{0===e.size&&n(new Error(\"Blob cannot be empty.\"));const i=new FileReader;i.onloadend=()=>{i.result?t(i.result.toString().split(\",\")[1]):n(new Error(\"Failed to read the blob\"))},i.onerror=()=>{n(i.error)},i.readAsDataURL(e)}))}function le(){if(ce())throw new Error(\"window object undefined at SSR check\");return window}function ce(){return\"undefined\"==typeof window}const de=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function ue(e){if(!de.test(e))throw new Error(\"App ID is not valid. Must be GUID format. App ID: \"+e)}var fe=function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols){var o=0;for(i=Object.getOwnPropertySymbols(e);o{t.apiVersion===e.versionToUpgradeFrom&&(t=e.upgradeToNextVersion(t))})),me(t))return t;throw new Error(\"Received a runtime that could not be upgraded to the latest version\")}const be=[{versionToUpgradeFrom:1,upgradeToNextVersion:e=>{var t;return{apiVersion:2,hostVersionsInfo:void 0,isLegacyTeams:e.isLegacyTeams,supports:Object.assign(Object.assign({},e.supports),{dialog:e.supports.dialog?{card:void 0,url:e.supports.dialog,update:null===(t=e.supports.dialog)||void 0===t?void 0:t.update}:void 0})}}},{versionToUpgradeFrom:2,upgradeToNextVersion:e=>{const t=e.supports,{appNotification:n}=t,i=fe(t,[\"appNotification\"]);return Object.assign(Object.assign({},e),{apiVersion:3,supports:i})}},{versionToUpgradeFrom:3,upgradeToNextVersion:e=>{var t,n,i,o,r;return{apiVersion:4,hostVersionsInfo:e.hostVersionsInfo,isLegacyTeams:e.isLegacyTeams,supports:Object.assign(Object.assign({},e.supports),{dialog:e.supports.dialog?{card:null===(t=e.supports.dialog)||void 0===t?void 0:t.card,url:{bot:null===(i=null===(n=e.supports.dialog)||void 0===n?void 0:n.url)||void 0===i?void 0:i.bot,parentCommunication:(null===(o=e.supports.dialog)||void 0===o?void 0:o.url)?{}:void 0},update:null===(r=e.supports.dialog)||void 0===r?void 0:r.update}:void 0})}}}],Ee={\"1.0.0\":[{capability:{pages:{appButton:{},tabs:{}},stageView:{}},hostClientTypes:Se}],\"1.9.0\":[{capability:{location:{}},hostClientTypes:_e}],\"2.0.0\":[{capability:{people:{}},hostClientTypes:_e},{capability:{sharing:{}},hostClientTypes:[V.desktop,V.web]}],\"2.0.1\":[{capability:{teams:{fullTrust:{joinedTeams:{}}}},hostClientTypes:[V.android,V.desktop,V.ios,V.teamsRoomsAndroid,V.teamsPhones,V.teamsDisplays,V.web]},{capability:{webStorage:{}},hostClientTypes:[V.desktop]}],\"2.0.5\":[{capability:{webStorage:{}},hostClientTypes:[V.android,V.ios]}],\"2.0.8\":[{capability:{sharing:{}},hostClientTypes:[V.android,V.ios]}]},Ie=pe.extend(\"generateBackCompatRuntimeConfig\");function Re(e,t){const n=Object.assign({},e);for(const i in t)Object.prototype.hasOwnProperty.call(t,i)&&(\"object\"!=typeof t[i]||Array.isArray(t[i])?i in e||(n[i]=t[i]):n[i]=Re(e[i]||{},t[i]));return n}function Te(e,t,n){Ie(\"generating back compat runtime config for %s\",e);let i=Object.assign({},t.supports);Ie(\"Supported capabilities in config before updating based on highestSupportedVersion: %o\",i),Object.keys(n).forEach((t=>{Q(e,t)>=0&&n[t].forEach((e=>{void 0!==y.hostClientType&&e.hostClientTypes.includes(y.hostClientType)&&(i=Re(i,e.capability))}))}));const o={apiVersion:ge,hostVersionsInfo:j,isLegacyTeams:!0,supports:i};return Ie(\"Runtime config after updating based on highestSupportedVersion: %o\",o),o}const Fe=pe.extend(\"applyRuntimeConfig\");function Ae(e){\"string\"==typeof e.apiVersion&&(Fe(\"Trying to apply runtime with string apiVersion, processing as v1: %o\",e),e=Object.assign(Object.assign({},e),{apiVersion:1})),Fe(\"Fast-forwarding runtime %o\",e);const t=Pe(e);Fe(\"Applying runtime %o\",t),ve=X(t)}const Me=\"2.20.0\",Oe=t(\"internal\"),ke=Oe.extend(\"ensureInitializeCalled\"),He=Oe.extend(\"ensureInitialized\");function Ve(){if(!y.initializeCalled)throw ke(v),new Error(v)}function Ne(e,...t){if(!y.initializeCompleted)throw He(\"%s. initializeCalled: %s\",v,y.initializeCalled.toString()),new Error(v);if(t&&t.length>0){let e=!1;for(let n=0;n=0}function De(){return y.hostClientType==V.android||y.hostClientType==V.ios||y.hostClientType==V.ipados}function Ue(e=c){if(!De()){throw{errorCode:O.NOT_SUPPORTED_ON_PLATFORM}}if(!Le(e)){throw{errorCode:O.OLD_PLATFORM}}}function xe(e){let t=y.additionalValidOrigins.concat(e.filter((e=>\"string\"==typeof e&&m.test(e))));const n={};t=t.filter((e=>!n[e]&&(n[e]=!0,!0))),y.additionalValidOrigins=t}function Be(e){return null==e}var We=function(e,t,n,i){function o(e){return e instanceof n?e:new n((function(t){t(e)}))}return new(n||(n=Promise))((function(n,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){e.done?n(e.value):o(e.value).then(a,s)}l((i=i.apply(e,t||[])).next())}))};let Ge=[];const ze=t(\"validateOrigin\");function qe(){return We(this,void 0,void 0,(function*(){yield $e()}))}function je(){return 0!==Ge.length}function $e(){return We(this,void 0,void 0,(function*(){return je()?Ge:ce()?(Ge=p,p):fetch(g).then((e=>{if(!e.ok)throw new Error(\"Invalid Response from Fetch Call\");return e.json().then((e=>{if(Je(JSON.stringify(e)))return Ge=e.validOrigins,Ge;throw new Error(\"Valid Origins List Is Invalid\")}))})).catch((e=>(ze(\"validOrigins fetch call to CDN failed with error: %s. Defaulting to fallback list\",e),Ge=p,Ge)))}))}function Je(e){let t=JSON.parse(e);try{t=JSON.parse(e)}catch(e){return!1}if(!t.validOrigins)return!1;for(const e of t.validOrigins)try{new URL(\"https://\"+e)}catch(t){return ze(\"isValidOriginsFromCDN call failed to validate origin: %s\",e),!1}return!0}function Ke(e,t){if(\"*.\"===e.substring(0,2)){const n=e.substring(1);if(t.length>n.length&&t.split(\".\").length===n.split(\".\").length&&t.substring(t.length-n.length)===n)return!0}else if(e===t)return!0;return!1}function Qe(e){return $e().then((t=>{if(!re(e))return ze(\"Origin %s is invalid because it is not using https protocol. Protocol being used: %s\",e,e.protocol),!1;const n=e.host;if(t.some((e=>Ke(e,n))))return!0;for(const e of y.additionalValidOrigins){if(Ke(\"https://\"===e.substring(0,8)?e.substring(8):e,n))return!0}return ze(\"Origin %s is invalid because it is not an origin approved by this library or included in the call to app.initialize.\\nOrigins approved by this library: %o\\nOrigins included in app.initialize: %o\",e,t,y.additionalValidOrigins),!1}))}var Ze;!function(e){let t,n,i,o;function r(e){return new Promise(((n,i)=>{if(y.hostClientType===V.desktop||y.hostClientType===V.android||y.hostClientType===V.ios||y.hostClientType===V.ipados||y.hostClientType===V.macos||y.hostClientType===V.rigel||y.hostClientType===V.teamsRoomsWindows||y.hostClientType===V.teamsRoomsAndroid||y.hostClientType===V.teamsPhones||y.hostClientType===V.teamsDisplays||y.hostClientType===V.surfaceHub){const t=document.createElement(\"a\");t.href=e.url,n(Cn(\"authentication.authenticate\",[t.href,e.width,e.height,e.isExternal]).then((([e,t])=>{if(e)return t;throw new Error(t)})))}else t={success:n,fail:i},c(e)}))}function a(e){return new Promise((t=>{t(Cn(\"authentication.getAuthToken\",[null==e?void 0:e.resources,null==e?void 0:e.claims,null==e?void 0:e.silent,null==e?void 0:e.tenantId]))})).then((([e,t])=>{if(e)return t;throw new Error(t)}))}function s(){return new Promise((e=>{e(Cn(\"authentication.getUser\"))})).then((([e,t])=>{if(e)return t;throw new Error(t)}))}function l(){d();try{sn.childWindow&&sn.childWindow.close()}finally{sn.childWindow=null,sn.childOrigin=null}}function c(e){l();let t=e.width||600,n=e.height||400;t=Math.min(t,sn.currentWindow.outerWidth-400),n=Math.min(n,sn.currentWindow.outerHeight-200);const i=document.createElement(\"a\");i.href=e.url.replace(\"{oauthRedirectMethod}\",\"web\");let o=void 0!==sn.currentWindow.screenLeft?sn.currentWindow.screenLeft:sn.currentWindow.screenX,r=void 0!==sn.currentWindow.screenTop?sn.currentWindow.screenTop:sn.currentWindow.screenY;o+=sn.currentWindow.outerWidth/2-t/2,r+=sn.currentWindow.outerHeight/2-n/2,sn.childWindow=sn.currentWindow.open(i.href,\"_blank\",\"toolbar=no, location=yes, status=no, menubar=no, scrollbars=yes, top=\"+r+\", left=\"+o+\", width=\"+t+\", height=\"+n),sn.childWindow?u():p(\"FailedToOpenWindow\")}function d(){n&&(clearInterval(n),n=0),Bt(\"initialize\"),Bt(\"navigateCrossDomain\")}function u(){d(),n=sn.currentWindow.setInterval((()=>{if(!sn.childWindow||sn.childWindow.closed)p(\"CancelledByUser\");else{const e=sn.childOrigin;try{sn.childOrigin=\"*\",Jn(\"ping\")}finally{sn.childOrigin=e}}}),100),xt(\"initialize\",(()=>[L.authentication,y.hostClientType])),xt(\"navigateCrossDomain\",(()=>!1))}function f(e){try{t&&t.success(e)}finally{t=void 0,l()}}function p(e){try{t&&t.fail(new Error(e))}finally{t=void 0,l()}}e.initialize=function(){xt(\"authentication.authenticate.success\",f,!1),xt(\"authentication.authenticate.failure\",p,!1)},e.registerAuthenticationHandlers=function(e){i=e},e.authenticate=function(e){const t=void 0!==e,n=t?e:i;if(!n)throw new Error(\"No parameters are provided for authentication\");return Ne(ve,L.content,L.sidePanel,L.settings,L.remove,L.task,L.stage,L.meetingStage),r(n).then((e=>{try{return n&&n.successCallback?(n.successCallback(e),\"\"):e}finally{t||(i=void 0)}})).catch((e=>{try{if(n&&n.failureCallback)return n.failureCallback(e.message),\"\";throw e}finally{t||(i=void 0)}}))},e.getAuthToken=function(e){return Ve(),a(e).then((t=>e&&e.successCallback?(e.successCallback(t),\"\"):t)).catch((t=>{if(e&&e.failureCallback)return e.failureCallback(t.message),\"\";throw t}))},e.getUser=function(e){return Ve(),s().then((t=>e&&e.successCallback?(e.successCallback(t),null):t)).catch((t=>{if(e&&e.failureCallback)return e.failureCallback(t.message),null;throw t}))},e.notifySuccess=function(e,t){Ne(ve,L.authentication),_n(\"authentication.authenticate.success\",[e]),jn(sn.parentWindow,(()=>setTimeout((()=>sn.currentWindow.close()),200)))},e.notifyFailure=function(e,t){Ne(ve,L.authentication),_n(\"authentication.authenticate.failure\",[e]),jn(sn.parentWindow,(()=>setTimeout((()=>sn.currentWindow.close()),200)))},function(e){e.Public=\"public\",e.EUDB=\"eudb\",e.Other=\"other\"}(o=e.DataResidency||(e.DataResidency={}))}(Ze||(Ze={}));const Xe=a.V_2;function Ye(e,t){if(Ne(ve,L.content,L.sidePanel,L.task,L.meetingStage),!it.update.isSupported())throw G;yn(e,\"tasks.updateTask\",[t])}function et(e,t,n,i){if(Ne(ve,L.content,L.sidePanel,L.meetingStage),!it.url.isSupported())throw G;i&&xt(\"messageForParent\",i);yn(e,\"tasks.startTask\",[it.url.getDialogInfoFromUrlDialogInfo(t)],((e,t)=>{null==n||n({err:e,result:t}),Bt(\"messageForParent\")}))}function tt(e,t,n,i){if(Ne(ve,L.content,L.sidePanel,L.meetingStage),!it.url.bot.isSupported())throw G;i&&xt(\"messageForParent\",i);yn(e,\"tasks.startTask\",[it.url.getDialogInfoFromBotUrlDialogInfo(t)],((e,t)=>{null==n||n({err:e,result:t}),Bt(\"messageForParent\")}))}function nt(e,t,n){if(Ne(ve,L.content,L.task),!it.url.isSupported())throw G;yn(e,\"tasks.completeTask\",[t,n?Array.isArray(n)?n:[n]:[]])}var it;!function(e){const t=[];function n(e){y.frameContext&&(y.frameContext===L.task?t.push(e):Bt(\"messageForChild\"))}let i,r,a;e.initialize=function(){xt(\"messageForChild\",n,!1)},function(e){let n,i;function r(e){return{url:e.url,height:e.size?e.size.height:x.Small,width:e.size?e.size.width:x.Small,title:e.title,fallbackUrl:e.fallbackUrl}}e.open=function(e,t,n){et(o(Xe,s.Dialog_Url_Open),e,t,n)},e.submit=function(e,t){nt(o(Xe,s.Dialog_Url_Submit),e,t)},function(e){function n(){var e,t;return Ne(ve)&&!!(null===(t=null===(e=ve.supports.dialog)||void 0===e?void 0:e.url)||void 0===t?void 0:t.parentCommunication)}e.sendMessageToParentFromDialog=function(e){if(Ne(ve,L.task),!n())throw G;yn(o(Xe,s.Dialog_Url_ParentCommunication_SendMessageToParentFromDialog),\"messageForParent\",[e])},e.sendMessageToDialog=function(e){if(Ne(ve,L.content,L.sidePanel,L.meetingStage),!n())throw G;yn(o(Xe,s.Dialog_Url_ParentCommunication_SendMessageToDialog),\"messageForChild\",[e])},e.registerOnMessageFromParent=function(e){if(Ne(ve,L.task),!n())throw G;for(Bt(\"messageForChild\"),xt(\"messageForChild\",e),t.reverse();t.length>0;){e(t.pop())}},e.isSupported=n}(n=e.parentCommunication||(e.parentCommunication={})),e.isSupported=function(){return Ne(ve)&&void 0!==(ve.supports.dialog&&ve.supports.dialog.url)},function(e){e.open=function(e,t,n){tt(o(Xe,s.Dialog_Url_Bot_Open),e,t,n)},e.isSupported=function(){return Ne(ve)&&void 0!==(ve.supports.dialog&&ve.supports.dialog.url&&ve.supports.dialog.url.bot)}}(i=e.bot||(e.bot={})),e.getDialogInfoFromUrlDialogInfo=r,e.getDialogInfoFromBotUrlDialogInfo=function(e){const t=r(e);return t.completionBotId=e.completionBotId,t}}(i=e.url||(e.url={})),e.isSupported=function(){return!(!Ne(ve)||!ve.supports.dialog)},function(e){e.resize=function(e){Ye(o(Xe,s.Dialog_Update_Resize),e)},e.isSupported=function(){return!(!Ne(ve)||!ve.supports.dialog)&&!!ve.supports.dialog.update}}(r=e.update||(e.update={})),function(e){function t(){const e=ve.hostVersionsInfo&&ve.hostVersionsInfo.adaptiveCardSchemaVersion&&!oe(ve.hostVersionsInfo.adaptiveCardSchemaVersion);return Ne(ve)&&void 0!==(e&&ve.supports.dialog&&ve.supports.dialog.card)}let n;function i(e){return{card:e.card,height:e.size?e.size.height:x.Small,width:e.size?e.size.width:x.Small,title:e.title}}function r(e){const t=i(e);return t.completionBotId=e.completionBotId,t}e.open=function(e,n){if(Ne(ve,L.content,L.sidePanel,L.meetingStage),!t())throw G;const r=i(e);yn(o(Xe,s.Dialog_AdaptiveCard_Open),\"tasks.startTask\",[r],((e,t)=>{null==n||n({err:e,result:t})}))},e.isSupported=t,function(e){function t(){const e=ve.hostVersionsInfo&&ve.hostVersionsInfo.adaptiveCardSchemaVersion&&!oe(ve.hostVersionsInfo.adaptiveCardSchemaVersion);return Ne(ve)&&void 0!==(e&&ve.supports.dialog&&ve.supports.dialog.card&&ve.supports.dialog.card.bot)}e.open=function(e,n){if(Ne(ve,L.content,L.sidePanel,L.meetingStage),!t())throw G;const i=r(e);yn(o(Xe,s.Dialog_AdaptiveCard_Bot_Open),\"tasks.startTask\",[i],((e,t)=>{null==n||n({err:e,result:t})}))},e.isSupported=t}(n=e.bot||(e.bot={}))}(a=e.adaptiveCard||(e.adaptiveCard={}))}(it||(it={}));const ot=a.V_2;var rt;!function(e){let t,n,i,r,a;!function(e){e[e.ifRoom=0]=\"ifRoom\",e[e.overflowOnly=1]=\"overflowOnly\"}(t=e.DisplayMode||(e.DisplayMode={}));function l(e){a&&a(e)||(Ne(ve),yn(o(ot,s.Menus_HandleViewConfigItemPress),\"viewConfigItemPress\",[e]))}function c(e){i&&i(e)||(Ne(ve),yn(o(ot,s.Menus_HandleNavBarMenuItemPress),\"handleNavBarMenuItemPress\",[e]))}function d(e){r&&r(e)||(Ne(ve),yn(o(ot,s.Menus_HandleActionMenuItemPress),\"handleActionMenuItemPress\",[e]))}function u(){return!(!Ne(ve)||!ve.supports.menus)}e.MenuItem=class{constructor(){this.enabled=!0,this.selected=!1}},function(e){e.dropDown=\"dropDown\",e.popOver=\"popOver\"}(n=e.MenuListType||(e.MenuListType={})),e.initialize=function(){Ut(o(ot,s.Menus_RegisterNavBarMenuItemPressHandler),\"navBarMenuItemPress\",c,!1),Ut(o(ot,s.Menus_RegisterActionMenuItemPressHandler),\"actionMenuItemPress\",d,!1),Ut(o(ot,s.Menus_RegisterSetModuleViewHandler),\"setModuleView\",l,!1)},e.setUpViews=function(e,t){if(Ne(ve),!u())throw G;a=t,yn(o(ot,s.Menus_SetUpViews),\"setUpViews\",[e])},e.setNavBarMenu=function(e,t){if(Ne(ve),!u())throw G;i=t,yn(o(ot,s.Menus_SetNavBarMenu),\"setNavBarMenu\",[e])},e.showActionMenu=function(e,t){if(Ne(ve),!u())throw G;r=t,yn(o(ot,s.Menus_ShowActionMenu),\"showActionMenu\",[e])},e.isSupported=u}(rt||(rt={}));const at=a.V_2,st=5e3,lt=t(\"app\");function ct(e,t){if(ce()){return lt.extend(\"initialize\")(\"window object undefined at initialization\"),Promise.resolve()}return ne((()=>mt(e,t)),st,new Error(\"SDK initialization timed out.\"))}function dt(e){yn(e,vt.Messages.AppLoaded,[Me])}function ut(e,t){yn(e,vt.Messages.ExpectedFailure,[t.reason,t.message])}function ft(e,t){yn(e,vt.Messages.Failure,[t.reason,t.message])}function pt(e){yn(e,vt.Messages.Success,[Me])}const gt=lt.extend(\"initializeHelper\");function mt(e,t){return new Promise((n=>{y.initializeCalled||(y.initializeCalled=!0,Vt(),y.initializePromise=cn(t,e).then((({context:e,clientType:t,runtimeConfig:n,clientSupportedSDKVersion:i=c})=>{y.frameContext=e,y.hostClientType=t,y.clientSupportedSDKVersion=i;try{gt(\"Parsing %s\",n);const e=JSON.parse(n);if(gt(\"Checking if %o is a valid runtime object\",null!=e?e:\"null\"),!e||!e.apiVersion)throw new Error(\"Received runtime config is invalid\");n&&Ae(e)}catch(e){if(!(e instanceof SyntaxError))throw e;try{gt(\"Attempting to parse %s as an SDK version\",n),isNaN(Q(n,c))||(y.clientSupportedSDKVersion=n);const e=JSON.parse(i);if(gt(\"givenRuntimeConfig parsed to %o\",null!=e?e:\"null\"),!e)throw new Error(\"givenRuntimeConfig string was successfully parsed. However, it parsed to value of null\");Ae(e)}catch(e){if(!(e instanceof SyntaxError))throw e;Ae(Te(y.clientSupportedSDKVersion,we,Ee))}}y.initializeCompleted=!0})),Ze.initialize(),rt.initialize(),Ot.config.initialize(),it.initialize()),Array.isArray(t)&&xe(t),void 0!==y.initializePromise?n(y.initializePromise):gt(\"GlobalVars.initializePromise is unexpectedly undefined\")}))}function ht(e,t){!Be(t)&&Ve(),zt(e,t)}function Ct(e,t){return new Promise((n=>{Ne(ve,L.content,L.sidePanel,L.settings,L.task,L.stage,L.meetingStage),n(fn(e,\"executeDeepLink\",t))}))}var vt;function wt(e){var t;return{actionInfo:e.actionInfo,app:{locale:e.locale,sessionId:e.appSessionId?e.appSessionId:\"\",theme:e.theme?e.theme:\"default\",iconPositionVertical:e.appIconPosition,osLocaleInfo:e.osLocaleInfo,parentMessageId:e.parentMessageId,userClickTime:e.userClickTime,userFileOpenPreference:e.userFileOpenPreference,host:{name:e.hostName?e.hostName:N.teams,clientType:e.hostClientType?e.hostClientType:V.web,sessionId:e.sessionId?e.sessionId:\"\",ringId:e.ringId},appLaunchId:e.appLaunchId},page:{id:e.entityId,frameContext:e.frameContext?e.frameContext:y.frameContext,subPageId:e.subEntityId,isFullScreen:e.isFullScreen,isMultiWindow:e.isMultiWindow,sourceOrigin:e.sourceOrigin},user:{id:null!==(t=e.userObjectId)&&void 0!==t?t:\"\",displayName:e.userDisplayName,isCallingAllowed:e.isCallingAllowed,isPSTNCallingAllowed:e.isPSTNCallingAllowed,licenseType:e.userLicenseType,loginHint:e.loginHint,userPrincipalName:e.userPrincipalName,tenant:e.tid?{id:e.tid,teamsSku:e.tenantSKU}:void 0},channel:e.channelId?{id:e.channelId,displayName:e.channelName,relativeUrl:e.channelRelativeUrl,membershipType:e.channelType,defaultOneNoteSectionId:e.defaultOneNoteSectionId,ownerGroupId:e.hostTeamGroupId,ownerTenantId:e.hostTeamTenantId}:void 0,chat:e.chatId?{id:e.chatId}:void 0,meeting:e.meetingId?{id:e.meetingId}:void 0,sharepoint:e.sharepoint,team:e.teamId?{internalId:e.teamId,displayName:e.teamName,type:e.teamType,groupId:e.groupId,templateId:e.teamTemplateId,isArchived:e.isTeamArchived,userRole:e.userTeamRole}:void 0,sharePointSite:e.teamSiteUrl||e.teamSiteDomain||e.teamSitePath||e.mySitePath||e.mySiteDomain?{teamSiteUrl:e.teamSiteUrl,teamSiteDomain:e.teamSiteDomain,teamSitePath:e.teamSitePath,teamSiteId:e.teamSiteId,mySitePath:e.mySitePath,mySiteDomain:e.mySiteDomain}:void 0}}!function(e){const n=t(\"app\");let i,r,a;e.Messages={AppLoaded:\"appInitialization.appLoaded\",Success:\"appInitialization.success\",Failure:\"appInitialization.failure\",ExpectedFailure:\"appInitialization.expectedFailure\"},function(e){e.AuthFailed=\"AuthFailed\",e.Timeout=\"Timeout\",e.Other=\"Other\"}(i=e.FailedReason||(e.FailedReason={})),function(e){e.PermissionError=\"PermissionError\",e.NotFound=\"NotFound\",e.Throttling=\"Throttling\",e.Offline=\"Offline\",e.Other=\"Other\"}(r=e.ExpectedFailureReason||(e.ExpectedFailureReason={})),e.isInitialized=function(){return y.initializeCompleted},e.getFrameContext=function(){return y.frameContext},function(){if(ce())return;const e=document.getElementsByTagName(\"script\"),t=e&&e[e.length-1]&&e[e.length-1].src,i=\"Today, teamsjs can only be used from a single script or you may see undefined behavior. This log line is used to help detect cases where teamsjs is loaded multiple times -- it is always written. The presence of the log itself does not indicate a multi-load situation, but multiples of these log lines will. If you would like to use teamjs from more than one script at the same time, please open an issue at https://github.com/OfficeDev/microsoft-teams-library-js/issues\";t&&0!==t.length?n(\"teamsjs is being used from %s. %s\",t,i):n(\"teamsjs is being used from a script tag embedded directly in your html. %s\",i)}(),e.initialize=function(e){return qe(),ct(o(at,s.App_Initialize),e)},e._initialize=function(e){sn.currentWindow=e},e._uninitialize=function(){y.initializeCalled&&(Nt(),y.initializeCalled=!1,y.initializeCompleted=!1,y.initializePromise=void 0,y.additionalValidOrigins=[],y.frameContext=void 0,y.hostClientType=void 0,y.isFramelessWindow=!1,dn())},e.getContext=function(){return new Promise((e=>{Ve(),e(un(o(at,s.App_GetContext),\"getContext\"))})).then((e=>wt(e)))},e.notifyAppLoaded=function(){Ve(),dt(o(at,s.App_NotifyAppLoaded))},e.notifySuccess=function(){Ve(),pt(o(at,s.App_NotifySuccess))},e.notifyFailure=function(e){Ve(),ft(o(at,s.App_NotifyFailure),e)},e.notifyExpectedFailure=function(e){Ve(),ut(o(at,s.App_NotifyExpectedFailure),e)},e.registerOnThemeChangeHandler=function(e){ht(o(at,s.App_RegisterOnThemeChangeHandler),e)},e.openLink=function(e){return Ct(o(at,s.App_OpenLink),e)},function(e){e.registerBeforeSuspendOrTerminateHandler=function(e){if(!e)throw new Error(\"[app.lifecycle.registerBeforeSuspendOrTerminateHandler] Handler cannot be null\");Ne(ve),Qt(e)},e.registerOnResumeHandler=function(e){if(!e)throw new Error(\"[app.lifecycle.registerOnResumeHandler] Handler cannot be null\");Ne(ve),Zt(e)}}(a=e.lifecycle||(e.lifecycle={}))}(vt||(vt={}));const St=a.V_2;function yt(e,t){return new Promise((n=>{if(Ne(ve,L.content,L.sidePanel,L.settings,L.remove,L.task,L.stage,L.meetingStage),!Ot.isSupported())throw G;n(pn(e,\"navigateCrossDomain\",\"Cross-origin navigation is only supported for URLs matching the pattern registered in the manifest.\",t))}))}function _t(e){return new Promise((t=>{if(Ne(ve),!Ot.backStack.isSupported())throw G;t(pn(e,\"navigateBack\",\"Back navigation is not supported in the current client or context.\"))}))}function Pt(e,t){return new Promise((n=>{if(Ne(ve),!Ot.tabs.isSupported())throw G;n(pn(e,\"navigateToTab\",\"Invalid internalTabInstanceId and/or channelId were/was provided\",t))}))}function bt(e,t){if(Ne(ve),!Ot.isSupported())throw G;yn(e,\"returnFocus\",[t])}function Et(e,t){return new Promise((n=>{if(Ne(ve),!Ot.tabs.isSupported())throw G;n(un(e,\"getTabInstances\",t))}))}function It(e,t){return new Promise((n=>{if(Ne(ve),!Ot.tabs.isSupported())throw G;n(un(e,\"getMruTabInstances\",t))}))}function Rt(e,t){if(Ne(ve,L.content,L.sidePanel,L.meetingStage),!Ot.isSupported())throw G;yn(e,\"shareDeepLink\",[t.subPageId,t.subPageLabel,t.subPageWebUrl])}function Tt(e,t){if(Ne(ve,L.content),!Ot.isSupported())throw G;yn(e,\"setFrameContext\",[t])}function Ft(e,t){if(Ne(ve,L.settings,L.remove),!Ot.config.isSupported())throw G;yn(e,\"settings.setValidityState\",[t])}function At(e){return new Promise((t=>{if(Ne(ve,L.content,L.settings,L.remove,L.sidePanel),!Ot.isSupported())throw G;t(un(e,\"settings.getSettings\"))}))}function Mt(e,t){return new Promise((n=>{if(Ne(ve,L.content,L.settings,L.sidePanel),!Ot.config.isSupported())throw G;n(fn(e,\"settings.setSettings\",t))}))}var Ot;!function(e){function t(e){Tt(o(St,s.Pages_SetCurrentFrame),e)}function n(){return!(!Ne(ve)||!ve.supports.pages)}let i,r,a,l,c,d;e.returnFocus=function(e){bt(o(St,s.Pages_ReturnFocus),e)},e.registerFocusEnterHandler=function(e){Gt(o(St,s.Pages_RegisterFocusEnterHandler),\"focusEnter\",e,[],(()=>{if(!n())throw G}))},e.setCurrentFrame=t,e.initializeWithFrameContext=function(e,n,i){vt.initialize(i).then((()=>n&&n())),t(e)},e.getConfig=function(){return At(o(St,s.Pages_GetConfig))},e.navigateCrossDomain=function(e){return yt(o(St,s.Pages_NavigateCrossDomain),e)},e.navigateToApp=function(e){return new Promise((t=>{if(Ne(ve,L.content,L.sidePanel,L.settings,L.task,L.stage,L.meetingStage),!n())throw G;const i=o(St,s.Pages_NavigateCrossDomain);ve.isLegacyTeams?t(fn(i,\"executeDeepLink\",ie(e))):t(fn(i,\"pages.navigateToApp\",e))}))},e.shareDeepLink=function(e){return Rt(o(St,s.Pages_ShareDeepLink),e)},e.registerFullScreenHandler=function(e){Gt(o(St,s.Pages_RegisterFullScreenHandler),\"fullScreenChange\",e,[],(()=>{if(!Be(e)&&!n())throw G}))},e.isSupported=n,function(e){e.navigateToTab=function(e){return Pt(o(St,s.Pages_Tabs_NavigateToTab),e)},e.getTabInstances=function(e){return Et(o(St,s.Pages_Tabs_GetTabInstances),e)},e.getMruTabInstances=function(e){return It(o(St,s.Pages_Tabs_GetMruTabInstances),e)},e.isSupported=function(){return!(!Ne(ve)||!ve.supports.pages)&&!!ve.supports.pages.tabs}}(i=e.tabs||(e.tabs={})),function(e){let t,n;function i(e,n,i){!Be(n)&&Ne(ve,L.settings),i&&i(),t=n,!Be(n)&&yn(e,\"registerHandler\",[\"save\"])}function r(e,t,i){!Be(t)&&Ne(ve,L.remove,L.settings),i&&i(),n=t,!Be(t)&&yn(e,\"registerHandler\",[\"remove\"])}function a(e){const n=new l(e);t?t(n):sn.childWindow?Jn(\"settings.save\",[e]):n.notifySuccess()}e.initialize=function(){xt(\"settings.save\",a,!1),xt(\"settings.remove\",c,!1)},e.setValidityState=function(e){return Ft(o(St,s.Pages_Config_SetValidityState),e)},e.setConfig=function(e){return Mt(o(St,s.Pages_Config_SetConfig),e)},e.registerOnSaveHandler=function(e){i(o(St,s.Pages_Config_RegisterOnSaveHandler),e,(()=>{if(!Be(e)&&!u())throw G}))},e.registerOnSaveHandlerHelper=i,e.registerOnRemoveHandler=function(e){r(o(St,s.Pages_Config_RegisterOnRemoveHandler),e,(()=>{if(!Be(e)&&!u())throw G}))},e.registerOnRemoveHandlerHelper=r,e.registerChangeConfigHandler=function(e){Gt(o(St,s.Pages_Config_RegisterChangeConfigHandler),\"changeSettings\",e,[L.content],(()=>{if(!u())throw G}))};class l{constructor(e){this.notified=!1,this.result=e||{}}notifySuccess(){this.ensureNotNotified(),yn(o(St,s.Pages_SaveEvent_NotifySuccess),\"settings.save.success\"),this.notified=!0}notifyFailure(e){this.ensureNotNotified(),yn(o(St,s.Pages_SaveEvent_NotifyFailure),\"settings.save.failure\",[e]),this.notified=!0}ensureNotNotified(){if(this.notified)throw new Error(\"The SaveEvent may only notify success or failure once.\")}}function c(){const e=new d;n?n(e):sn.childWindow?Jn(\"settings.remove\",[]):e.notifySuccess()}class d{constructor(){this.notified=!1}notifySuccess(){this.ensureNotNotified(),yn(o(St,s.Pages_RemoveEvent_NotifySuccess),\"settings.remove.success\"),this.notified=!0}notifyFailure(e){this.ensureNotNotified(),yn(o(St,s.Pages_RemoveEvent_NotifyFailure),\"settings.remove.failure\",[e]),this.notified=!0}ensureNotNotified(){if(this.notified)throw new Error(\"The removeEventType may only notify success or failure once.\")}}function u(){return!(!Ne(ve)||!ve.supports.pages)&&!!ve.supports.pages.config}e.isSupported=u}(r=e.config||(e.config={})),function(e){let t;function n(){return _t(o(St,s.Pages_BackStack_NavigateBack))}function i(e,n,i){!Be(n)&&Ne(ve),i&&i(),t=n,!Be(n)&&yn(e,\"registerHandler\",[\"backButton\"])}function r(){t&&t()||(sn.childWindow?Jn(\"backButtonPress\",[]):n())}function a(){return!(!Ne(ve)||!ve.supports.pages)&&!!ve.supports.pages.backStack}e._initialize=function(){xt(\"backButtonPress\",r,!1)},e.navigateBack=n,e.registerBackButtonHandler=function(e){i(o(St,s.Pages_BackStack_RegisterBackButtonHandler),e,(()=>{if(!Be(e)&&!a())throw G}))},e.registerBackButtonHandlerHelper=i,e.isSupported=a}(a=e.backStack||(e.backStack={})),function(e){function t(){return!(!Ne(ve)||!ve.supports.pages)&&!!ve.supports.pages.fullTrust}e.enterFullscreen=function(){if(Ne(ve,L.content),!t())throw G;yn(o(St,s.Pages_FullTrust_EnterFullscreen),\"enterFullscreen\",[])},e.exitFullscreen=function(){if(Ne(ve,L.content),!t())throw G;yn(o(St,s.Pages_FullTrust_ExitFullscreen),\"exitFullscreen\",[])},e.isSupported=t}(l=e.fullTrust||(e.fullTrust={})),function(e){function t(){return!(!Ne(ve)||!ve.supports.pages)&&!!ve.supports.pages.appButton}e.onClick=function(e){Gt(o(St,s.Pages_AppButton_OnClick),\"appButtonClick\",e,[L.content],(()=>{if(!t())throw G}))},e.onHoverEnter=function(e){Gt(o(St,s.Pages_AppButton_OnHoverEnter),\"appButtonHoverEnter\",e,[L.content],(()=>{if(!t())throw G}))},e.onHoverLeave=function(e){Gt(o(St,s.Pages_AppButton_OnHoverLeave),\"appButtonHoverLeave\",e,[L.content],(()=>{if(!t())throw G}))},e.isSupported=t}(c=e.appButton||(e.appButton={})),function(e){function t(){return!(!Ne(ve)||!ve.supports.pages)&&!!ve.supports.pages.currentApp}e.navigateTo=function(e){return new Promise((n=>{if(Ne(ve,L.content,L.sidePanel,L.settings,L.task,L.stage,L.meetingStage),!t())throw G;n(gn(o(St,s.Pages_CurrentApp_NavigateTo),\"pages.currentApp.navigateTo\",e))}))},e.navigateToDefaultPage=function(){return new Promise((e=>{if(Ne(ve,L.content,L.sidePanel,L.settings,L.task,L.stage,L.meetingStage),!t())throw G;e(gn(o(St,s.Pages_CurrentApp_NavigateToDefaultPage),\"pages.currentApp.navigateToDefaultPage\"))}))},e.isSupported=t}(d=e.currentApp||(e.currentApp={}))}(Ot||(Ot={}));const kt=t(\"handlers\");class Ht{static initializeHandlers(){Ht.handlers.themeChange=qt,Ht.handlers.load=$t,Ht.handlers.beforeUnload=Kt,Ot.backStack._initialize()}static uninitializeHandlers(){Ht.handlers={},Ht.themeChangeHandler=null,Ht.loadHandler=null,Ht.beforeUnloadHandler=null,Ht.beforeSuspendOrTerminateHandler=null,Ht.resumeHandler=null}}function Vt(){Ht.initializeHandlers()}function Nt(){Ht.uninitializeHandlers()}Ht.handlers={},Ht.themeChangeHandler=null,Ht.loadHandler=null,Ht.beforeUnloadHandler=null,Ht.beforeSuspendOrTerminateHandler=null,Ht.resumeHandler=null;const Lt=kt.extend(\"callHandler\");function Dt(e,t){const n=Ht.handlers[e];if(n){Lt(\"Invoking the registered handler for message %s with arguments %o\",e,t);return[!0,n.apply(this,t)]}return sn.childWindow?(Jn(e,t),[!1,void 0]):(Lt(\"Handler for action message %s not found.\",e),[!1,void 0])}function Ut(e,t,n,i=!0,o=[]){n?(Ht.handlers[t]=n,i&&yn(e,\"registerHandler\",[t,...o])):delete Ht.handlers[t]}function xt(e,t,n=!0,i=[]){t?(Ht.handlers[e]=t,n&&yn(o(a.V_0,s.RegisterHandler),\"registerHandler\",[e,...i])):delete Ht.handlers[e]}function Bt(e){delete Ht.handlers[e]}function Wt(e){return null!=Ht.handlers[e]}function Gt(e,t,n,i,o){n&&Ne(ve,...i),o&&o(),xt(t,n)}function zt(e,t){Ht.themeChangeHandler=t,!Be(t)&&yn(e,\"registerHandler\",[\"themeChange\"])}function qt(e){Ht.themeChangeHandler&&Ht.themeChangeHandler(e),sn.childWindow&&Jn(\"themeChange\",[e])}function jt(e){Ht.loadHandler=e,!Be(e)&&yn(o(a.V_2,s.RegisterHandler),\"registerHandler\",[\"load\"])}function $t(e){Ht.resumeHandler?Ht.resumeHandler(e):Ht.loadHandler&&Ht.loadHandler(e),sn.childWindow&&Jn(\"load\",[e])}function Jt(e){Ht.beforeUnloadHandler=e,!Be(e)&&yn(o(a.V_2,s.RegisterHandler),\"registerHandler\",[\"beforeUnload\"])}function Kt(){const e=()=>{_n(\"readyToUnload\",[])};Ht.beforeSuspendOrTerminateHandler?(Ht.beforeSuspendOrTerminateHandler(),sn.childWindow?Jn(\"beforeUnload\"):e()):Ht.beforeUnloadHandler&&Ht.beforeUnloadHandler(e)||(sn.childWindow?Jn(\"beforeUnload\"):e())}function Qt(e){Ht.beforeSuspendOrTerminateHandler=e,!Be(e)&&yn(o(a.V_2,s.RegisterBeforeUnloadHandler),\"registerHandler\",[\"beforeUnload\"])}function Zt(e){Ht.resumeHandler=e,!Be(e)&&yn(o(a.V_2,s.RegisterLoadHandler),\"registerHandler\",[\"load\"])}const Xt=t(\"nestedAppAuth\"),Yt=Xt.extend(\"tryPolyfillWithNestedAppAuthBridge\");var en;function tn(e,t,n){var i;const o=Yt;if(y.isFramelessWindow)return void o(\"Cannot polyfill nestedAppAuthBridge as current window is frameless\");if(!t)return void o(\"Cannot polyfill nestedAppAuthBridge as current window does not exist\");const r=(()=>{try{return JSON.parse(e)}catch(e){return null}})();if(!r||!(null===(i=r.supports)||void 0===i?void 0:i.nestedAppAuth))return void o(\"Cannot polyfill nestedAppAuthBridge as current hub does not support nested app auth\");const a=t;if(a.nestedAppAuthBridge)return void o(\"nestedAppAuthBridge already exists on current window, skipping polyfill\");const s=on(a,n);s&&(a.nestedAppAuthBridge=s)}!function(e){e.Request=\"NestedAppAuthRequest\",e.Response=\"NestedAppAuthResponse\"}(en||(en={}));const nn=Xt.extend(\"createNestedAppAuthBridge\");function on(e,t){const n=nn;if(!e)return n(\"nestedAppAuthBridge cannot be created as current window does not exist\"),null;const{onMessage:i,sendPostMessage:o}=t,r=e=>t=>i(t,e);return{addEventListener:(t,i)=>{\"message\"===t?e.addEventListener(t,r(i)):n(`Event ${t} is not supported by nestedAppAuthBridge`)},postMessage:e=>{const t=(()=>{try{return JSON.parse(e)}catch(e){return null}})();t&&\"object\"==typeof t&&t.messageType===en.Request?o(e):n(\"Unrecognized data format received by app, message being ignored. Message: %o\",e)},removeEventListener:(t,n)=>{e.removeEventListener(t,r(n))}}}var rn=function(e,t,n,i){function o(e){return e instanceof n?e:new n((function(t){t(e)}))}return new(n||(n=Promise))((function(n,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){e.done?n(e.value):o(e.value).then(a,s)}l((i=i.apply(e,t||[])).next())}))};const an=t(\"communication\");class sn{}class ln{}function cn(e,t){if(ln.messageListener=e=>rn(this,void 0,void 0,(function*(){return yield An(e)})),sn.currentWindow=sn.currentWindow||le(),sn.parentWindow=sn.currentWindow.parent!==sn.currentWindow.self?sn.currentWindow.parent:sn.currentWindow.opener,sn.topWindow=sn.currentWindow.top,(sn.parentWindow||e)&&sn.currentWindow.addEventListener(\"message\",ln.messageListener,!1),!sn.parentWindow){const e=sn.currentWindow;if(!e.nativeInterface)return Promise.reject(new Error(\"Initialization Failed. No Parent window found.\"));y.isFramelessWindow=!0,e.onNativeMessage=Ln}try{return sn.parentOrigin=\"*\",hn(t,\"initialize\",[Me,ge]).then((([e,t,n,i])=>(tn(i,sn.currentWindow,{onMessage:On,sendPostMessage:bn}),{context:e,clientType:t,runtimeConfig:n,clientSupportedSDKVersion:i})))}finally{sn.parentOrigin=null}}function dn(){sn.currentWindow&&sn.currentWindow.removeEventListener(\"message\",ln.messageListener,!1),sn.currentWindow=null,sn.parentWindow=null,sn.parentOrigin=null,sn.childWindow=null,sn.childOrigin=null,ln.parentMessageQueue=[],ln.childMessageQueue=[],ln.nextMessageId=0,ln.callbacks={},ln.promiseCallbacks={},ln.portCallbacks={}}function un(e,t,...n){return hn(e,t,n).then((([e])=>e))}function fn(e,t,...n){return hn(e,t,n).then((([e,t])=>{if(!e)throw new Error(t)}))}function pn(e,t,n,...i){return hn(e,t,i).then((([e,t])=>{if(!e)throw new Error(t||n)}))}function gn(e,t,...n){return hn(e,t,n).then((([e,t])=>{if(e)throw e;return t}))}function mn(e,...t){return Cn(e,t).then((([e,t])=>{if(e)throw e;return t}))}function hn(e,t,n=void 0){if(!r(e))throw Error(`apiVersionTag: ${e} passed in doesn't follow the pattern starting with 'v' followed by digits, then underscore with words, please check.`);return new Promise((i=>{i(Sn(Tn(e,t,n).id))}))}function Cn(e,t=void 0){return new Promise((n=>{n(Sn(Tn(o(a.V_0,\"testing\"),e,t).id))}))}function vn(e,t,n=void 0){if(!r(e))throw Error(`apiVersionTag: ${e} passed in doesn't follow the pattern starting with 'v' followed by digits, then underscore with words, please check.`);return wn(Tn(e,t,n).id)}function wn(e){return new Promise(((t,n)=>{ln.portCallbacks[e]=(e,i)=>{e instanceof MessagePort?t(e):n(i&&i.length>0?i[0]:new Error(\"Host responded without port or error details.\"))}}))}function Sn(e){return new Promise((t=>{ln.promiseCallbacks[e]=t}))}function yn(e,t,n,i){let o;if(n instanceof Function?i=n:n instanceof Array&&(o=n),!r(e))throw Error(`apiVersionTag: ${e} passed in doesn't follow the pattern starting with 'v' followed by digits, then underscore with words, please check.`);const a=Tn(e,t,o);i&&(ln.callbacks[a.id]=i)}function _n(e,t,n){let i;t instanceof Function?n=t:t instanceof Array&&(i=t);const r=Tn(o(a.V_0,\"testing\"),e,i);n&&(ln.callbacks[r.id]=n)}ln.parentMessageQueue=[],ln.childMessageQueue=[],ln.topMessageQueue=[],ln.nextMessageId=0,ln.callbacks={},ln.promiseCallbacks={},ln.portCallbacks={};const Pn=an.extend(\"sendNestedAuthRequestToTopWindow\");function bn(e){const t=Pn,n=sn.topWindow,i=Qn(e);return t(\"Message %i information: %o\",i.id,{actionName:i.func}),In(n,i)}const En=an.extend(\"sendRequestToTargetWindowHelper\");function In(e,t){const n=En,i=Gn(e);if(y.isFramelessWindow)sn.currentWindow&&sn.currentWindow.nativeInterface&&(n(`Sending message %i to ${i} via framelessPostMessage interface`,t.id),sn.currentWindow.nativeInterface.framelessPostMessage(JSON.stringify(t)));else{const o=Wn(e);e&&o?(n(`Sending message %i to ${i} via postMessage`,t.id),e.postMessage(t,o)):(n(`Adding message %i to ${i} message queue`,t.id),Bn(e).push(t))}return t}const Rn=an.extend(\"sendMessageToParentHelper\");function Tn(e,t,n){const i=Rn,o=sn.parentWindow,r=Kn(e,t,n);return i(\"Message %i information: %o\",r.id,{actionName:t,args:n}),In(o,r)}const Fn=an.extend(\"processMessage\");function An(e){return rn(this,void 0,void 0,(function*(){if(!e||!e.data||\"object\"!=typeof e.data)return void Fn(\"Unrecognized message format received by app, message being ignored. Message: %o\",e);const t=e.source||e.originalEvent&&e.originalEvent.source,n=e.origin||e.originalEvent&&e.originalEvent.origin;return Hn(t,n).then((i=>{i?(Vn(t,n),t===sn.parentWindow?Ln(e):t===sn.childWindow&&Un(e)):Fn(\"Message being ignored by app because it is either coming from the current window or a different window with an invalid origin\")}))}))}const Mn=an.extend(\"processAuthBridgeMessage\");function On(e,t){var n,i;const o=Mn;if(!e||!e.data||\"object\"!=typeof e.data)return void o(\"Unrecognized message format received by app, message being ignored. Message: %o\",e);const{args:r}=e.data,[,a]=null!=r?r:[],s=(()=>{try{return JSON.parse(a)}catch(e){return null}})();if(!s||\"object\"!=typeof s||s.messageType!==en.Response)return void o(\"Unrecognized data format received by app, message being ignored. Message: %o\",e);const l=e.source||(null===(n=null==e?void 0:e.originalEvent)||void 0===n?void 0:n.source),c=e.origin||(null===(i=null==e?void 0:e.originalEvent)||void 0===i?void 0:i.origin);l?Hn(l,c)?(sn.topWindow&&!sn.topWindow.closed&&l!==sn.topWindow||(sn.topWindow=l,sn.topOrigin=c),sn.topWindow&&sn.topWindow.closed&&(sn.topWindow=null,sn.topOrigin=null),qn(sn.topWindow),t(a)):o(\"Message being ignored by app because it is either coming from the current window or a different window with an invalid origin\"):o(\"Message being ignored by app because it is coming for a target that is null\")}const kn=an.extend(\"shouldProcessMessage\");function Hn(e,t){return rn(this,void 0,void 0,(function*(){if(sn.currentWindow&&e===sn.currentWindow)return kn(\"Should not process message because it is coming from the current window\"),!1;if(sn.currentWindow&&sn.currentWindow.location&&t&&t===sn.currentWindow.location.origin)return!0;{const e=yield Qe(new URL(t));return e||kn(\"Message has an invalid origin of %s\",t),e}}))}function Vn(e,t){y.isFramelessWindow||sn.parentWindow&&!sn.parentWindow.closed&&e!==sn.parentWindow?sn.childWindow&&!sn.childWindow.closed&&e!==sn.childWindow||(sn.childWindow=e,sn.childOrigin=t):(sn.parentWindow=e,sn.parentOrigin=t),sn.parentWindow&&sn.parentWindow.closed&&(sn.parentWindow=null,sn.parentOrigin=null),sn.childWindow&&sn.childWindow.closed&&(sn.childWindow=null,sn.childOrigin=null),qn(sn.parentWindow),qn(sn.childWindow)}const Nn=an.extend(\"handleParentMessage\");function Ln(e){const t=Nn;if(\"id\"in e.data&&\"number\"==typeof e.data.id){const n=e.data,i=ln.callbacks[n.id];t(\"Received a response from parent for message %i\",n.id),i&&(t(\"Invoking the registered callback for message %i with arguments %o\",n.id,n.args),i.apply(null,[...n.args,n.isPartialResponse]),Dn(e)||(t(\"Removing registered callback for message %i\",n.id),delete ln.callbacks[n.id]));const o=ln.promiseCallbacks[n.id];o&&(t(\"Invoking the registered promise callback for message %i with arguments %o\",n.id,n.args),o(n.args),t(\"Removing registered promise callback for message %i\",n.id),delete ln.promiseCallbacks[n.id]);const r=ln.portCallbacks[n.id];if(r){let i;t(\"Invoking the registered port callback for message %i with arguments %o\",n.id,n.args),e.ports&&e.ports[0]instanceof MessagePort&&(i=e.ports[0]),r(i,n.args),t(\"Removing registered port callback for message %i\",n.id),delete ln.portCallbacks[n.id]}}else if(\"func\"in e.data&&\"string\"==typeof e.data.func){const n=e.data;t(\"Received an action message %s from parent\",n.func),Dt(n.func,n.args)}else t(\"Received an unknown message: %O\",e)}function Dn(e){return!0===e.data.isPartialResponse}function Un(e){if(\"id\"in e.data&&\"func\"in e.data){const t=e.data,[n,i]=Dt(t.func,t.args);n&&void 0!==i?$n(t.id,Array.isArray(i)?i:[i]):_n(t.func,t.args,((...e)=>{if(sn.childWindow){const n=e.pop();$n(t.id,e,n)}}))}}function xn(){return sn.topWindow!==sn.parentWindow}function Bn(e){return e===sn.topWindow&&xn()?ln.topMessageQueue:e===sn.parentWindow?ln.parentMessageQueue:e===sn.childWindow?ln.childMessageQueue:[]}function Wn(e){return e===sn.topWindow&&xn()?sn.topOrigin:e===sn.parentWindow?sn.parentOrigin:e===sn.childWindow?sn.childOrigin:null}function Gn(e){return e===sn.topWindow&&xn()?\"top\":e===sn.parentWindow?\"parent\":e===sn.childWindow?\"child\":null}const zn=an.extend(\"flushMessageQueue\");function qn(e){const t=Wn(e),n=Bn(e),i=Gn(e);for(;e&&t&&n.length>0;){const o=n.shift();zn(\"Flushing message %i from \"+i+\" message queue via postMessage.\",null==o?void 0:o.id),e.postMessage(o,t)}}function jn(e,t){let n;n=sn.currentWindow.setInterval((()=>{0===Bn(e).length&&(clearInterval(n),t())}),100)}function $n(e,t,n){const i=sn.childWindow,o=Zn(e,t,n),r=Wn(i);i&&r&&i.postMessage(o,r)}function Jn(e,t){const n=sn.childWindow,i=Xn(e,t),o=Wn(n);n&&o?n.postMessage(i,o):Bn(n).push(i)}function Kn(e,t,n){return{id:ln.nextMessageId++,func:t,timestamp:Date.now(),args:n||[],apiversiontag:e}}function Qn(e){return{id:ln.nextMessageId++,func:\"nestedAppAuth.execute\",timestamp:Date.now(),args:[],data:e}}function Zn(e,t,n){return{id:e,args:t||[],isPartialResponse:n}}function Xn(e,t){return{func:e,args:t||[]}}const Yn=a.V_1;var ei,ti,ni,ii;!function(e){function t(){return!(!Ne(ve)||!ve.supports.logs)}e.registerGetLogHandler=function(e){if(!Be(e)&&Ne(ve),!Be(e)&&!t())throw G;e?Ut(o(Yn,s.Logs_RegisterLogRequestHandler),\"log.request\",(()=>{const t=e();yn(o(Yn,s.Logs_Receive),\"log.receive\",[t])})):Bt(\"log.request\")},e.isSupported=t}(ei||(ei={})),function(e){e.fileDownloadStart=\"fileDownloadStart\",e.fileDownloadComplete=\"fileDownloadComplete\"}(ti||(ti={})),function(e){e.view=\"view\",e.edit=\"edit\",e.editNew=\"editNew\"}(ni||(ni={})),function(e){e.fileOpenPreference=\"fileOpenPreference\",e.theme=\"theme\"}(ii||(ii={}));const oi=a.V_1;function ri(e,t){Ne(ve),yn(o(oi,s.PrivateAPIs_UploadCustomApp),\"uploadCustomApp\",[e],t||K())}function ai(e,t,n){Ne(ve),yn(o(oi,s.PrivateAPIs_SendCustomMessage),e,t,n)}function si(e,t){if(Ne(ve),!sn.childWindow)throw new Error(\"The child window has not yet been initialized or is not present\");Jn(e,t)}function li(e,t){Ne(ve),Ut(o(oi,s.PrivateAPIs_RegisterCustomHandler),e,((...e)=>t.apply(this,e)))}function ci(e,t){Ne(ve),Ut(o(oi,s.PrivateAPIs_RegisterUserSettingsChangeHandler),\"userSettingsChange\",t,!0,[e])}function di(e){Ne(ve,L.content,L.task);const t=[e.entityId,e.title,e.description,e.type,e.objectUrl,e.downloadUrl,e.webPreviewUrl,e.webEditUrl,e.baseUrl,e.editFile,e.subEntityId,e.viewerAction,e.fileOpenPreference,e.conversationId,e.sizeInBytes];yn(o(oi,s.PrivateAPIs_OpenFilePreview),\"openFilePreview\",t)}const ui=a.V_1;var fi;!function(e){function t(){return!(!Ne(ve)||!ve.supports.conversations)}e.openConversation=function(e){return new Promise((n=>{if(Ne(ve,L.content),!t())throw G;const i=fn(o(ui,s.Conversations_OpenConversation),\"conversations.openConversation\",{title:e.title,subEntityId:e.subEntityId,conversationId:e.conversationId,channelId:e.channelId,entityId:e.entityId});e.onStartConversation&&Ut(o(ui,s.Conversations_RegisterStartConversationHandler),\"startConversation\",((t,n,i,o)=>{var r;return null===(r=e.onStartConversation)||void 0===r?void 0:r.call(e,{subEntityId:t,conversationId:n,channelId:i,entityId:o})})),e.onCloseConversation&&Ut(o(ui,s.Conversations_RegisterCloseConversationHandler),\"closeConversation\",((t,n,i,o)=>{var r;return null===(r=e.onCloseConversation)||void 0===r?void 0:r.call(e,{subEntityId:t,conversationId:n,channelId:i,entityId:o})})),n(i)}))},e.closeConversation=function(){if(Ne(ve,L.content),!t())throw G;yn(o(ui,s.Conversations_CloseConversation),\"conversations.closeConversation\"),Bt(\"startConversation\"),Bt(\"closeConversation\")},e.getChatMembers=function(){return new Promise((e=>{if(Ne(ve),!t())throw G;e(un(o(ui,s.Conversations_GetChatMember),\"getChatMembers\"))}))},e.isSupported=t}(fi||(fi={}));const pi=\"users\";function gi(e,t,n){if(0===e.length)throw new Error(\"Must have at least one user when creating a chat deep link\");const i=`${pi}=`+e.map((e=>encodeURIComponent(e))).join(\",\"),o=void 0===t?\"\":`&topicName=${encodeURIComponent(t)}`,r=void 0===n?\"\":`&message=${encodeURIComponent(n)}`;return`${h}://${C}/l/chat/0/0?${i}${o}${r}`}function mi(e,t,n){if(0===e.length)throw new Error(\"Must have at least one target when creating a call deep link\");const i=`${pi}=`+e.map((e=>encodeURIComponent(e))).join(\",\"),o=void 0===t?\"\":`&withVideo=${encodeURIComponent(t)}`,r=void 0===n?\"\":`&source=${encodeURIComponent(n)}`;return`${h}://${C}/l/call/0/0?${i}${o}${r}`}function hi(e,t,n,i,o){const r=void 0===e?\"\":\"attendees=\"+e.map((e=>encodeURIComponent(e))).join(\",\"),a=void 0===t?\"\":`&startTime=${encodeURIComponent(t)}`,s=void 0===n?\"\":`&endTime=${encodeURIComponent(n)}`,l=void 0===i?\"\":`&subject=${encodeURIComponent(i)}`,c=void 0===o?\"\":`&content=${encodeURIComponent(o)}`;return`${h}://${C}/l/meeting/new?${r}${a}${s}${l}${c}`}function Ci(e){if(!e)throw new Error(\"App ID must be set when creating an app install dialog deep link\");return`${h}://${C}/l/app/${encodeURIComponent(e)}`}const vi=a.V_1;var wi;!function(e){function t(){return!(!Ne(ve)||!ve.supports.appInstallDialog)}e.openAppInstallDialog=function(e){return new Promise((n=>{if(Ne(ve,L.content,L.sidePanel,L.settings,L.task,L.stage,L.meetingStage),!t())throw new Error(\"Not supported\");const i=o(vi,s.AppInstallDialog_OpenAppInstallDialog);ve.isLegacyTeams?n(fn(i,\"executeDeepLink\",Ci(e.appId))):(yn(i,\"appInstallDialog.openAppInstallDialog\",[e]),n())}))},e.isSupported=t}(wi||(wi={}));const Si=a.V_1,yi=t(\"media\");var _i;function Pi(e,t){if(null==e||null==t||e.length<=0)return null;let n=null,i=1;return e.sort(((e,t)=>e.sequence>t.sequence?1:-1)),e.forEach((e=>{e.sequence==i&&(n=n?new Blob([n,e.file],{type:t}):new Blob([e.file],{type:t}),i++)})),n}function bi(e,t){if(null==e||null==t)return null;const n=atob(e.chunk),i=new Array(n.length);for(let e=0;e10)}function Ti(e){var t;return!((null==e?void 0:e.mediaType)!=_i.MediaType.Image||!(null===(t=null==e?void 0:e.imageProps)||void 0===t?void 0:t.imageOutputFormats))}function Fi(e){return!(!e||e.mediaType!=_i.MediaType.VideoAndImage&&!e.videoAndImageProps)}function Ai(e){return!(!e||e.mediaType!=_i.MediaType.Video||!e.videoProps||e.videoProps.isFullScreenMode)}function Mi(e,t,n){return null!=e&&null!=t&&t==_i.FileFormat.ID&&null!=n}function Oi(e){return!(null==e||e.length<=0||e.length>10)}function ki(e){return!e||!(null===e.timeOutIntervalInSec||null!=e.timeOutIntervalInSec&&e.timeOutIntervalInSec<=0||null!=e.timeOutIntervalInSec&&e.timeOutIntervalInSec>60)}function Hi(e){if(e){if(e.title&&\"string\"!=typeof e.title)return!1;if(e.setSelected&&\"object\"!=typeof e.setSelected)return!1;if(e.openOrgWideSearchInChatOrChannel&&\"boolean\"!=typeof e.openOrgWideSearchInChatOrChannel)return!1;if(e.singleSelect&&\"boolean\"!=typeof e.singleSelect)return!1}return!0}!function(e){let t,n,i,r,a,l,c;!function(e){e.Base64=\"base64\",e.ID=\"id\"}(t=e.FileFormat||(e.FileFormat={}));class u{}function p(){return!(!Ne(ve)||!ve.supports.permissions)}e.File=u,e.captureImage=function(e){if(!e)throw new Error(\"[captureImage] Callback cannot be null\");if(Ne(ve,L.content,L.task),y.isFramelessWindow)if(Le(\"1.7.0\"))yn(o(Si,s.Media_CaptureImage),\"captureImage\",e);else{e({errorCode:O.OLD_PLATFORM},[])}else{e({errorCode:O.NOT_SUPPORTED_ON_PLATFORM},[])}},e.hasPermission=function(){if(Ne(ve,L.content,L.task),!p())throw G;const e=k.Media;return new Promise((t=>{t(gn(o(Si,s.Media_HasPermission),\"permissions.has\",e))}))},e.requestPermission=function(){if(Ne(ve,L.content,L.task),!p())throw G;const e=k.Media;return new Promise((t=>{t(gn(o(Si,s.Media_RequestPermission),\"permissions.request\",e))}))};class g extends u{constructor(e){super(),e&&(this.content=e.content,this.format=e.format,this.mimeType=e.mimeType,this.name=e.name,this.preview=e.preview,this.size=e.size)}getMedia(e){if(!e)throw new Error(\"[get Media] Callback cannot be null\");if(Ne(ve,L.content,L.task),Le(f))if(Mi(this.mimeType,this.format,this.content))Le(\"2.0.0\")?this.getMediaViaCallback(e):this.getMediaViaHandler(e);else{e({errorCode:O.INVALID_ARGUMENTS},new Blob)}else{e({errorCode:O.OLD_PLATFORM},new Blob)}}getMediaViaCallback(e){const t={mediaMimeType:this.mimeType,assembleAttachment:[]},n=[this.content];yn(o(Si,s.Media_GetMedia),\"getMedia\",n,(function(n){if(e)if(n&&n.error)e(n.error,new Blob);else if(n&&n.mediaChunk)if(n.mediaChunk.chunkSequence<=0){const i=Pi(t.assembleAttachment,t.mediaMimeType);e(n.error,null!=i?i:new Blob)}else{const e=bi(n.mediaChunk,t.mediaMimeType);e?t.assembleAttachment.push(e):yi(`Received a null assemble attachment for when decoding chunk sequence ${n.mediaChunk.chunkSequence}; not including the chunk in the assembled file.`)}else e({errorCode:O.INTERNAL_ERROR,message:\"data received is null\"},new Blob)}))}getMediaViaHandler(e){const t=Z(),n={mediaMimeType:this.mimeType,assembleAttachment:[]},i=[t,this.content];this.content&&!Be(e)&&yn(o(Si,s.Media_GetMedia),\"getMedia\",i),xt(\"getMedia\"+t,(function(i){if(e){const o=JSON.parse(i);if(o.error)e(o.error,new Blob),Bt(\"getMedia\"+t);else if(o.mediaChunk)if(o.mediaChunk.chunkSequence<=0){const i=Pi(n.assembleAttachment,n.mediaMimeType);e(o.error,null!=i?i:new Blob),Bt(\"getMedia\"+t)}else{const e=bi(o.mediaChunk,n.mediaMimeType);e&&n.assembleAttachment.push(e)}else e({errorCode:O.INTERNAL_ERROR,message:\"data received is null\"},new Blob),Bt(\"getMedia\"+t)}}))}}e.Media=g;class m{constructor(e){this.controllerCallback=e}notifyEventToHost(e,t){Ne(ve,L.content,L.task);try{Ue(d)}catch(e){return void(t&&t(e))}const n={mediaType:this.getMediaType(),mediaControllerEvent:e};yn(o(Si,s.Media_Controller),\"media.controller\",[n],(e=>{t&&t(e)}))}stop(e){this.notifyEventToHost(n.StopRecording,e)}}e.VideoController=class extends m{getMediaType(){return a.Video}notifyEventToApp(e){if(this.controllerCallback)switch(e){case n.StartRecording:if(this.controllerCallback.onRecordingStarted){this.controllerCallback.onRecordingStarted();break}}}},function(e){e[e.StartRecording=1]=\"StartRecording\",e[e.StopRecording=2]=\"StopRecording\"}(n=e.MediaControllerEvent||(e.MediaControllerEvent={})),function(e){e[e.Photo=1]=\"Photo\",e[e.Document=2]=\"Document\",e[e.Whiteboard=3]=\"Whiteboard\",e[e.BusinessCard=4]=\"BusinessCard\"}(i=e.CameraStartMode||(e.CameraStartMode={})),function(e){e[e.Camera=1]=\"Camera\",e[e.Gallery=2]=\"Gallery\"}(r=e.Source||(e.Source={})),function(e){e[e.Image=1]=\"Image\",e[e.Video=2]=\"Video\",e[e.VideoAndImage=3]=\"VideoAndImage\",e[e.Audio=4]=\"Audio\"}(a=e.MediaType||(e.MediaType={})),function(e){e[e.ID=1]=\"ID\",e[e.URL=2]=\"URL\"}(l=e.ImageUriType||(e.ImageUriType={})),function(e){e[e.IMAGE=1]=\"IMAGE\",e[e.PDF=2]=\"PDF\"}(c=e.ImageOutputFormats||(e.ImageOutputFormats={})),e.selectMedia=function(e,t){if(!t)throw new Error(\"[select Media] Callback cannot be null\");if(Ne(ve,L.content,L.task),!Le(f)){const e={errorCode:O.OLD_PLATFORM};return void t(e,[])}try{Ei(e)}catch(e){return void t(e,[])}if(!Ri(e)){const e={errorCode:O.INVALID_ARGUMENTS};return void t(e,[])}const n=[e];yn(o(Si,s.Media_SelectMedia),\"selectMedia\",n,((n,i,o)=>{var r,a;if(o)return void(Ii(e)&&(null===(a=null===(r=null==e?void 0:e.videoProps)||void 0===r?void 0:r.videoController)||void 0===a||a.notifyEventToApp(o)));if(!i)return void t(n,[]);const s=[];for(const e of i)s.push(new g(e));t(n,s)}))},e.viewImages=function(e,t){if(!t)throw new Error(\"[view images] Callback cannot be null\");if(Ne(ve,L.content,L.task),!Le(f)){return void t({errorCode:O.OLD_PLATFORM})}if(!Oi(e)){return void t({errorCode:O.INVALID_ARGUMENTS})}const n=[e];yn(o(Si,s.Media_ViewImages),\"viewImages\",n,t)},e.scanBarCode=function(e,t){if(!e)throw new Error(\"[media.scanBarCode] Callback cannot be null\");if(Ne(ve,L.content,L.task),y.hostClientType!==V.desktop&&y.hostClientType!==V.web&&y.hostClientType!==V.rigel&&y.hostClientType!==V.teamsRoomsWindows&&y.hostClientType!==V.teamsRoomsAndroid&&y.hostClientType!==V.teamsPhones&&y.hostClientType!==V.teamsDisplays)if(Le(\"1.9.0\"))if(ki(t))yn(o(Si,s.Media_ScanBarCode),\"media.scanBarCode\",[t],e);else{e({errorCode:O.INVALID_ARGUMENTS},\"\")}else{e({errorCode:O.OLD_PLATFORM},\"\")}else{e({errorCode:O.NOT_SUPPORTED_ON_PLATFORM},\"\")}}}(_i||(_i={}));const Vi=a.V_2;var Ni;!function(e){function t(){return!!(Ne(ve)&&ve.supports.barCode&&ve.supports.permissions)}e.scanBarCode=function(e){return new Promise((n=>{if(Ne(ve,L.content,L.task),!t())throw G;if(!ki(e))throw{errorCode:O.INVALID_ARGUMENTS};n(gn(o(Vi,s.BarCode_ScanBarCode),\"media.scanBarCode\",e))}))},e.hasPermission=function(){if(Ne(ve,L.content,L.task),!t())throw G;const e=k.Media;return new Promise((t=>{t(gn(o(Vi,s.BarCode_HasPermission),\"permissions.has\",e))}))},e.requestPermission=function(){if(Ne(ve,L.content,L.task),!t())throw G;const e=k.Media;return new Promise((t=>{t(gn(o(Vi,s.BarCode_RequestPermission),\"permissions.request\",e))}))},e.isSupported=t}(Ni||(Ni={}));const Li=a.V_2;var Di;!function(e){function t(e,t){return new Promise((i=>{if(Ne(ve,L.content,L.task),!n())throw G;if(ve.isLegacyTeams)i(fn(e,\"executeDeepLink\",gi([t.user],void 0,t.message)));else{i(fn(e,\"chat.openChat\",{members:[t.user],message:t.message}))}}))}function n(){return!(!Ne(ve)||!ve.supports.chat)}e.openChat=function(e){return t(o(Li,s.Chat_OpenChat),e)},e.openGroupChat=function(e){const i=o(Li,s.Chat_OpenGroupChat);return new Promise((o=>{if(e.users.length<1)throw Error(\"OpenGroupChat Failed: No users specified\");if(1===e.users.length){const n={user:e.users[0],message:e.message};o(t(i,n))}else{if(Ne(ve,L.content,L.task),!n())throw G;if(ve.isLegacyTeams)o(fn(i,\"executeDeepLink\",gi(e.users,e.topic,e.message)));else{o(fn(i,\"chat.openChat\",{members:e.users,message:e.message,topic:e.topic}))}}}))},e.isSupported=n}(Di||(Di={}));var Ui=function(e,t,n,i){function o(e){return e instanceof n?e:new n((function(t){t(e)}))}return new(n||(n=Promise))((function(n,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){e.done?n(e.value):o(e.value).then(a,s)}l((i=i.apply(e,t||[])).next())}))};const xi=a.V_2;var Bi;!function(e){function t(){return!!(Ne(ve)&&navigator&&navigator.clipboard&&ve.supports.clipboard)}e.write=function(e){return Ui(this,void 0,void 0,(function*(){if(Ne(ve,L.content,L.meetingStage,L.task,L.settings,L.stage,L.sidePanel),!t())throw G;if(!e.type||!Object.values(H).includes(e.type))throw new Error(`Blob type ${e.type} is not supported. Supported blob types are ${Object.values(H)}`);const n=yield se(e),i={mimeType:e.type,content:n};return gn(o(xi,s.Clipboard_Write),\"clipboard.writeToClipboard\",i)}))},e.read=function(){return Ui(this,void 0,void 0,(function*(){if(Ne(ve,L.content,L.meetingStage,L.task,L.settings,L.stage,L.sidePanel),!t())throw G;if(De()||y.hostClientType===V.macos){const e=JSON.parse(yield mn(\"clipboard.readFromClipboard\"));return ae(e.mimeType,e.content)}return gn(o(xi,s.Clipboard_Read),\"clipboard.readFromClipboard\")}))},e.isSupported=t}(Bi||(Bi={}));const Wi=a.V_2;var Gi;function zi(){return ve.hostVersionsInfo?ve.hostVersionsInfo.adaptiveCardSchemaVersion:void 0}!function(e){function t(){return!!(Ne(ve)&&ve.supports.geoLocation&&ve.supports.permissions)}let n;e.getCurrentLocation=function(){if(Ne(ve,L.content,L.task),!t())throw G;return gn(o(Wi,s.GeoLocation_GetCurrentLocation),\"location.getLocation\",{allowChooseLocation:!1,showMap:!1})},e.hasPermission=function(){if(Ne(ve,L.content,L.task),!t())throw G;const e=k.GeoLocation;return new Promise((t=>{t(gn(o(Wi,s.GeoLocation_HasPermission),\"permissions.has\",e))}))},e.requestPermission=function(){if(Ne(ve,L.content,L.task),!t())throw G;const e=k.GeoLocation;return new Promise((t=>{t(gn(o(Wi,s.GeoLocation_RequestPermission),\"permissions.request\",e))}))},e.isSupported=t,function(e){function t(){return!!(Ne(ve)&&ve.supports.geoLocation&&ve.supports.geoLocation.map&&ve.supports.permissions)}e.chooseLocation=function(){if(Ne(ve,L.content,L.task),!t())throw G;return gn(o(Wi,s.GeoLocation_Map_ChooseLocation),\"location.getLocation\",{allowChooseLocation:!0,showMap:!0})},e.showLocation=function(e){if(Ne(ve,L.content,L.task),!t())throw G;if(!e)throw{errorCode:O.INVALID_ARGUMENTS};return gn(o(Wi,s.GeoLocation_ShowLocation),\"location.showLocation\",e)},e.isSupported=t}(n=e.map||(e.map={}))}(Gi||(Gi={}));const qi=a.V_1;class ji{postMessage(e,t){Ne(ve),yn(o(qi,s.AppWindow_ChildAppWindow_PostMessage),\"messageForChild\",[e],t||K())}addEventListener(e,t){Ne(ve),\"message\"===e&&Ut(o(qi,s.AppWindow_ChildAppWindow_AddEventListener),\"messageForParent\",t)}}class $i{static get Instance(){return this._instance||(this._instance=new this)}postMessage(e,t){Ne(ve,L.task),yn(o(qi,s.AppWindow_ParentAppWindow_PostMessage),\"messageForParent\",[e],t||K())}addEventListener(e,t){Ne(ve,L.task),\"message\"===e&&Ut(o(qi,s.AppWindow_ParentAppWindow_AddEventListener),\"messageForChild\",t)}}const Ji=a.V_2;var Ki;!function(e){function t(){return!(!Ne(ve)||!ve.supports.secondaryBrowser)}e.open=function(e){if(Ne(ve,L.content),!t())throw G;if(!e||!re(e))throw{errorCode:O.INVALID_ARGUMENTS,message:\"Invalid Url: Only https URL is allowed\"};return gn(o(Ji,s.SecondaryBrowser_OpenUrl),\"secondaryBrowser.open\",e.toString())},e.isSupported=t}(Ki||(Ki={}));const Qi=a.V_1;var Zi;!function(e){function t(){return!(!Ne(ve)||!ve.supports.location)}e.getLocation=function(e,n){if(!n)throw new Error(\"[location.getLocation] Callback cannot be null\");if(Ne(ve,L.content,L.task),!Le(u))throw{errorCode:O.OLD_PLATFORM};if(!e)throw{errorCode:O.INVALID_ARGUMENTS};if(!t())throw G;yn(o(Qi,s.Location_GetLocation),\"location.getLocation\",[e],n)},e.showLocation=function(e,n){if(!n)throw new Error(\"[location.showLocation] Callback cannot be null\");if(Ne(ve,L.content,L.task),!Le(u))throw{errorCode:O.OLD_PLATFORM};if(!e)throw{errorCode:O.INVALID_ARGUMENTS};if(!t())throw G;yn(o(Qi,s.Location_ShowLocation),\"location.showLocation\",[e],n)},e.isSupported=t}(Zi||(Zi={}));var Xi=function(e,t,n,i){function o(e){return e instanceof n?e:new n((function(t){t(e)}))}return new(n||(n=Promise))((function(n,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){e.done?n(e.value):o(e.value).then(a,s)}l((i=i.apply(e,t||[])).next())}))};const Yi=a.V_1;var eo;!function(e){let t,n,i,r,a,l;function c(e,n){yn(o(Yi,s.Meeting_RequestAppAudioHandling),\"meeting.requestAppAudioHandling\",[e.isAppHandlingAudio],((i,r)=>{if(i&&null!=r)throw new Error(\"[requestAppAudioHandling] Callback response - both parameters cannot be set\");if(i)throw new Error(`[requestAppAudioHandling] Callback response - SDK error ${i.errorCode} ${i.message}`);if(\"boolean\"!=typeof r)throw new Error(\"[requestAppAudioHandling] Callback response - isHostAudioless must be a boolean\");Ut(o(Yi,s.Meeting_RegisterMicStateChangeHandler),\"meeting.micStateChanged\",(n=>Xi(this,void 0,void 0,(function*(){try{const i=yield e.micMuteStateChangedCallback(n);u(i,i.isMicMuted===n.isMicMuted?t.HostInitiated:t.AppDeclinedToChange)}catch(e){u(n,t.AppFailedToChange)}}))));Ut(o(Yi,s.Meeting_RegisterAudioDeviceSelectionChangedHandler),\"meeting.audioDeviceSelectionChanged\",(t=>{var n;null===(n=e.audioDeviceSelectionChangedCallback)||void 0===n||n.call(e,t)})),n(r)}))}function d(e,t){yn(o(Yi,s.Meeting_RequestAppAudioHandling),\"meeting.requestAppAudioHandling\",[e.isAppHandlingAudio],((e,n)=>{if(e&&null!=n)throw new Error(\"[requestAppAudioHandling] Callback response - both parameters cannot be set\");if(e)throw new Error(`[requestAppAudioHandling] Callback response - SDK error ${e.errorCode} ${e.message}`);if(\"boolean\"!=typeof n)throw new Error(\"[requestAppAudioHandling] Callback response - isHostAudioless must be a boolean\");Wt(\"meeting.micStateChanged\")&&Bt(\"meeting.micStateChanged\"),Wt(\"meeting.audioDeviceSelectionChanged\")&&Bt(\"meeting.audioDeviceSelectionChanged\"),t(n)}))}function u(e,t){Ne(ve,L.sidePanel,L.meetingStage),yn(o(Yi,s.Meeting_SetMicStateWithReason),\"meeting.updateMicState\",[e,t])}!function(e){e[e.HostInitiated=0]=\"HostInitiated\",e[e.AppInitiated=1]=\"AppInitiated\",e[e.AppDeclinedToChange=2]=\"AppDeclinedToChange\",e[e.AppFailedToChange=3]=\"AppFailedToChange\"}(t||(t={})),function(e){e.like=\"like\",e.heart=\"heart\",e.laugh=\"laugh\",e.surprised=\"surprised\",e.applause=\"applause\"}(n=e.MeetingReactionType||(e.MeetingReactionType={})),function(e){e.Unknown=\"Unknown\",e.Adhoc=\"Adhoc\",e.Scheduled=\"Scheduled\",e.Recurring=\"Recurring\",e.Broadcast=\"Broadcast\",e.MeetNow=\"MeetNow\"}(i=e.MeetingType||(e.MeetingType={})),function(e){e.OneOnOneCall=\"oneOnOneCall\",e.GroupCall=\"groupCall\"}(r=e.CallType||(e.CallType={})),function(e){e.Collaborative=\"Collaborative\",e.ScreenShare=\"ScreenShare\"}(a=e.SharingProtocol||(e.SharingProtocol={})),e.getIncomingClientAudioState=function(e){if(!e)throw new Error(\"[get incoming client audio state] Callback cannot be null\");Ne(ve,L.sidePanel,L.meetingStage),yn(o(Yi,s.Meeting_GetIncomingClientAudioState),\"getIncomingClientAudioState\",e)},e.toggleIncomingClientAudio=function(e){if(!e)throw new Error(\"[toggle incoming client audio] Callback cannot be null\");Ne(ve,L.sidePanel,L.meetingStage),yn(o(Yi,s.Meeting_ToggleIncomingClientAudio),\"toggleIncomingClientAudio\",e)},e.getMeetingDetails=function(e){if(!e)throw new Error(\"[get meeting details] Callback cannot be null\");Ne(ve,L.sidePanel,L.meetingStage,L.settings,L.content),yn(o(Yi,s.Meeting_GetMeetingDetails),\"meeting.getMeetingDetails\",e)},e.getAuthenticationTokenForAnonymousUser=function(e){if(!e)throw new Error(\"[get Authentication Token For AnonymousUser] Callback cannot be null\");Ne(ve,L.sidePanel,L.meetingStage,L.task),yn(o(Yi,s.Meeting_GetAuthenticationTokenForAnonymousUser),\"meeting.getAuthenticationTokenForAnonymousUser\",e)},e.getLiveStreamState=function(e){if(!e)throw new Error(\"[get live stream state] Callback cannot be null\");Ne(ve,L.sidePanel),yn(o(Yi,s.Meeting_GetLiveStreamState),\"meeting.getLiveStreamState\",e)},e.requestStartLiveStreaming=function(e,t,n){if(!e)throw new Error(\"[request start live streaming] Callback cannot be null\");Ne(ve,L.sidePanel),yn(o(Yi,s.Meeting_RequestStartLiveStreaming),\"meeting.requestStartLiveStreaming\",[t,n],e)},e.requestStopLiveStreaming=function(e){if(!e)throw new Error(\"[request stop live streaming] Callback cannot be null\");Ne(ve,L.sidePanel),yn(o(Yi,s.Meeting_RequestStopLiveStreaming),\"meeting.requestStopLiveStreaming\",e)},e.registerLiveStreamChangedHandler=function(e){if(!e)throw new Error(\"[register live stream changed handler] Handler cannot be null\");Ne(ve,L.sidePanel),Ut(o(Yi,s.Meeting_RegisterLiveStreamChangedHandler),\"meeting.liveStreamChanged\",e)},e.shareAppContentToStage=function(e,t,n={sharingProtocol:a.Collaborative}){if(!e)throw new Error(\"[share app content to stage] Callback cannot be null\");Ne(ve,L.sidePanel,L.meetingStage),yn(o(Yi,s.Meeting_ShareAppContentToStage),\"meeting.shareAppContentToStage\",[t,n],e)},e.getAppContentStageSharingCapabilities=function(e){if(!e)throw new Error(\"[get app content stage sharing capabilities] Callback cannot be null\");Ne(ve,L.sidePanel,L.meetingStage),yn(o(Yi,s.Meeting_GetAppContentStageSharingCapabilities),\"meeting.getAppContentStageSharingCapabilities\",e)},e.stopSharingAppContentToStage=function(e){if(!e)throw new Error(\"[stop sharing app content to stage] Callback cannot be null\");Ne(ve,L.sidePanel,L.meetingStage),yn(o(Yi,s.Meeting_StopSharingAppContentToStage),\"meeting.stopSharingAppContentToStage\",e)},e.getAppContentStageSharingState=function(e){if(!e)throw new Error(\"[get app content stage sharing state] Callback cannot be null\");Ne(ve,L.sidePanel,L.meetingStage),yn(o(Yi,s.Meeting_GetAppContentStageSharingState),\"meeting.getAppContentStageSharingState\",e)},e.registerSpeakingStateChangeHandler=function(e){if(!e)throw new Error(\"[registerSpeakingStateChangeHandler] Handler cannot be null\");Ne(ve,L.sidePanel,L.meetingStage),Ut(o(Yi,s.Meeting_RegisterSpeakingStateChangeHandler),\"meeting.speakingStateChanged\",e)},e.registerRaiseHandStateChangedHandler=function(e){if(!e)throw new Error(\"[registerRaiseHandStateChangedHandler] Handler cannot be null\");Ne(ve,L.sidePanel,L.meetingStage),Ut(o(Yi,s.Meeting_RegisterRaiseHandStateChangedHandler),\"meeting.raiseHandStateChanged\",e)},e.registerMeetingReactionReceivedHandler=function(e){if(!e)throw new Error(\"[registerMeetingReactionReceivedHandler] Handler cannot be null\");Ne(ve,L.sidePanel,L.meetingStage),Ut(o(Yi,s.Meeting_RegisterMeetingReactionReceivedHandler),\"meeting.meetingReactionReceived\",e)},function(e){e.setOptions=function(e){Ne(ve,L.sidePanel),e.contentUrl&&new URL(e.contentUrl),yn(o(Yi,s.Meeting_AppShareButton_SetOptions),\"meeting.appShareButton.setOptions\",[e])}}(l=e.appShareButton||(e.appShareButton={})),e.requestAppAudioHandling=function(e,t){if(!t)throw new Error(\"[requestAppAudioHandling] Callback response cannot be null\");if(!e.micMuteStateChangedCallback)throw new Error(\"[requestAppAudioHandling] Callback Mic mute state handler cannot be null\");Ne(ve,L.sidePanel,L.meetingStage),e.isAppHandlingAudio?c(e,t):d(e,t)},e.updateMicState=function(e){u(e,t.AppInitiated)}}(eo||(eo={}));const to=a.V_1,no=a.V_2;var io;!function(e){function t(){return!(!Ne(ve)||!ve.supports.monetization)}e.openPurchaseExperience=function(e,n){let i,r,a=\"\";return\"function\"==typeof e?(i=e,r=n,a=o(to,s.Monetization_OpenPurchaseExperience)):(r=e,a=o(no,s.Monetization_OpenPurchaseExperience)),Ne(ve,L.content),te((()=>new Promise((e=>{if(!t())throw G;e(gn(a,\"monetization.openPurchaseExperience\",r))}))),i)},e.isSupported=t}(io||(io={}));const oo=a.V_2;var ro;!function(e){function t(){return!(!Ne(ve)||!ve.supports.calendar)}e.openCalendarItem=function(e){return new Promise((n=>{if(Ne(ve,L.content),!t())throw new Error(\"Not supported\");if(!e.itemId||!e.itemId.trim())throw new Error(\"Must supply an itemId to openCalendarItem\");n(fn(o(oo,s.Calendar_OpenCalendarItem),\"calendar.openCalendarItem\",e))}))},e.composeMeeting=function(e){return new Promise((n=>{if(Ne(ve,L.content),!t())throw new Error(\"Not supported\");const i=o(oo,s.Calendar_ComposeMeeting);ve.isLegacyTeams?n(fn(i,\"executeDeepLink\",hi(e.attendees,e.startTime,e.endTime,e.subject,e.content))):n(fn(i,\"calendar.composeMeeting\",e))}))},e.isSupported=t}(ro||(ro={}));const ao=a.V_2;var so,lo;!function(e){function t(){return!(!Ne(ve)||!ve.supports.mail)}let n;e.openMailItem=function(e){return new Promise((n=>{if(Ne(ve,L.content),!t())throw new Error(\"Not supported\");if(!e.itemId||!e.itemId.trim())throw new Error(\"Must supply an itemId to openMailItem\");n(fn(o(ao,s.Mail_OpenMailItem),\"mail.openMailItem\",e))}))},e.composeMail=function(e){return new Promise((n=>{if(Ne(ve,L.content),!t())throw new Error(\"Not supported\");n(fn(o(ao,s.Mail_ComposeMail),\"mail.composeMail\",e))}))},e.isSupported=t,function(e){e.New=\"new\",e.Reply=\"reply\",e.ReplyAll=\"replyAll\",e.Forward=\"forward\"}(n=e.ComposeMailType||(e.ComposeMailType={}))}(so||(so={})),function(e){function t(){le().print()}function n(e,t){!Be(e)&&Ne(ve),!Be(e)&&t&&t(),jt(e)}function i(e,t){!Be(e)&&Ne(ve),!Be(e)&&t&&t(),Jt(e)}function o(){return!(!Ne(ve)||!ve.supports.teamsCore)}e.enablePrintCapability=function(){if(!y.printCapabilityEnabled){if(Ne(ve),!o())throw G;y.printCapabilityEnabled=!0,document.addEventListener(\"keydown\",(e=>{(e.ctrlKey||e.metaKey)&&80===e.keyCode&&(t(),e.cancelBubble=!0,e.preventDefault(),e.stopImmediatePropagation())}))}},e.print=t,e.registerOnLoadHandler=function(e){n(e,(()=>{if(!Be(e)&&!o())throw G}))},e.registerOnLoadHandlerHelper=n,e.registerBeforeUnloadHandler=function(e){i(e,(()=>{if(!Be(e)&&!o())throw G}))},e.registerBeforeUnloadHandlerHelper=i,e.isSupported=o}(lo||(lo={}));const co=a.V_1,uo=a.V_2;var fo;function po(e){return e?e.modality&&\"string\"!=typeof e.modality?[!1,\"modality must be a string\"]:e.targetElementBoundingRect&&\"object\"==typeof e.targetElementBoundingRect?e.triggerType&&\"string\"==typeof e.triggerType?go(e.persona):[!1,\"triggerType must be a valid string\"]:[!1,\"targetElementBoundingRect must be a DOMRect\"]:[!1,\"A request object is required\"]}function go(e){return e?e.displayName&&\"string\"!=typeof e.displayName?[!1,\"displayName must be a string\"]:e.identifiers&&\"object\"==typeof e.identifiers?e.identifiers.AadObjectId||e.identifiers.Smtp||e.identifiers.Upn?e.identifiers.AadObjectId&&\"string\"!=typeof e.identifiers.AadObjectId?[!1,\"AadObjectId identifier must be a string\"]:e.identifiers.Smtp&&\"string\"!=typeof e.identifiers.Smtp?[!1,\"Smtp identifier must be a string\"]:e.identifiers.Upn&&\"string\"!=typeof e.identifiers.Upn?[!1,\"Upn identifier must be a string\"]:[!0,void 0]:[!1,\"at least one valid identifier must be provided\"]:[!1,\"persona identifiers object must be provided\"]:[!1,\"persona object must be provided\"]}!function(e){function t(e,t){return new Promise((i=>{if(!Le(\"2.0.0\"))throw{errorCode:O.OLD_PLATFORM};if(!Hi(t))throw{errorCode:O.INVALID_ARGUMENTS};if(!n())throw G;i(gn(e,\"people.selectPeople\",t))}))}function n(){return!(!Ne(ve)||!ve.supports.people)}e.selectPeople=function(e,n){let i,r;Ne(ve,L.content,L.task,L.settings);let a=\"\";return\"function\"==typeof e?([i,r]=[e,n],a=o(co,s.People_SelectPeople)):(r=e,a=o(uo,s.People_SelectPeople)),Y(t,i,a,r)},e.isSupported=n}(fo||(fo={}));const mo=a.V_2;var ho;!function(e){e.showProfile=function(e){return Ne(ve,L.content),new Promise((t=>{const[n,i]=po(e);if(!n)throw{errorCode:O.INVALID_ARGUMENTS,message:i};const r={modality:e.modality,persona:e.persona,triggerType:e.triggerType,targetRectangle:{x:e.targetElementBoundingRect.x,y:e.targetElementBoundingRect.y,width:e.targetElementBoundingRect.width,height:e.targetElementBoundingRect.height}};t(gn(o(mo,s.Profile_ShowProfile),\"profile.showProfile\",r))}))},e.isSupported=function(){return!(!Ne(ve)||!ve.supports.profile)}}(ho||(ho={}));var Co=function(e,t,n,i){function o(e){return e instanceof n?e:new n((function(t){t(e)}))}return new(n||(n=Promise))((function(n,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){e.done?n(e.value):o(e.value).then(a,s)}l((i=i.apply(e,t||[])).next())}))};const vo=a.V_2;function wo(e,t,n,i){var o,r;return Co(this,void 0,void 0,(function*(){const a=_o();!ce()&&(null===(r=null===(o=window.chrome)||void 0===o?void 0:o.webview)||void 0===r||r.registerTextureStream(e,a)),Po(yield yo(e,n,i),new Eo(n,t),a.writable)}))}function So(e,t,n,i){var o,r;return Co(this,void 0,void 0,(function*(){const a=_o();!ce()&&(null===(r=null===(o=window.chrome)||void 0===o?void 0:o.webview)||void 0===r||r.registerTextureStream(e,a)),Po(yield yo(e,n,i),new To(n,t),a.writable)}))}function yo(e,t,n){return Co(this,void 0,void 0,(function*(){if(ce())throw G;const i=le().chrome;try{null==n||n.reportGettingTextureStream(e);const t=(yield i.webview.getTextureStream(e)).getVideoTracks();if(0===t.length)throw new Error(`No video track in stream ${e}`);return null==n||n.reportTextureStreamAcquired(),t[0]}catch(n){throw t(`Failed to get video track from stream ${e}, error: ${n}`),new Error(`Internal error: can't get video track from stream ${e}`)}}))}function _o(){if(ce())throw G;const e=window.MediaStreamTrackGenerator;if(!e)throw G;return new e({kind:\"video\"})}function Po(e,t,n){new(0,le().MediaStreamTrackProcessor)({track:e}).readable.pipeThrough(new TransformStream(t)).pipeTo(n)}var bo;!function(e){e.TimestampIsNull=\"timestamp of the original video frame is null\",e.UnsupportedVideoFramePixelFormat=\"Unsupported video frame pixel format\"}(bo||(bo={}));class Eo{constructor(e,t){this.notifyError=e,this.videoFrameHandler=t,this.transform=(e,t)=>Co(this,void 0,void 0,(function*(){const n=e.timestamp;if(null!==n)try{const i=yield this.videoFrameHandler({videoFrame:e}),o=new VideoFrame(i,{timestamp:n});t.enqueue(o),e.close(),i.close()}catch(t){e.close(),this.notifyError(t)}else this.notifyError(bo.TimestampIsNull)}))}}class Io{constructor(e,t){if(this.headerBuffer=e,this.notifyError=t,this.ONE_TEXTURE_INPUT_ID=1869900081,this.INVALID_HEADER_ERROR=\"Invalid video frame header\",this.UNSUPPORTED_LAYOUT_ERROR=\"Unsupported texture layout\",this.headerDataView=new Uint32Array(e),this.headerDataView.length<8)throw this.notifyError(this.INVALID_HEADER_ERROR),new Error(this.INVALID_HEADER_ERROR);if(this.headerDataView[0]!==this.ONE_TEXTURE_INPUT_ID)throw this.notifyError(this.UNSUPPORTED_LAYOUT_ERROR),new Error(this.UNSUPPORTED_LAYOUT_ERROR)}get oneTextureLayoutId(){return this.headerDataView[0]}get version(){return this.headerDataView[1]}get frameRowOffset(){return this.headerDataView[2]}get frameFormat(){return this.headerDataView[3]}get frameWidth(){return this.headerDataView[4]}get frameHeight(){return this.headerDataView[5]}get multiStreamHeaderRowOffset(){return this.headerDataView[6]}get multiStreamCount(){return this.headerDataView[7]}}class Ro{constructor(e,t){this.metadataMap=new Map,this.AUDIO_INFERENCE_RESULT_STREAM_ID=828664161;const n=new Uint32Array(e);for(let i=0,o=0;iCo(this,void 0,void 0,(function*(){const n=e.timestamp;if(null!==n)try{const{videoFrame:i,metadata:{audioInferenceResult:o}={}}=yield this.extractVideoFrameAndMetadata(e),r=yield this.videoFrameHandler({videoFrame:i,audioInferenceResult:o}),a=new VideoFrame(r,{timestamp:n});t.enqueue(a),i.close(),e.close(),r.close()}catch(t){e.close(),this.notifyError(t)}else this.notifyError(bo.TimestampIsNull)})),this.extractVideoFrameAndMetadata=e=>Co(this,void 0,void 0,(function*(){if(ce())throw G;if(\"NV12\"!==e.format)throw this.notifyError(bo.UnsupportedVideoFramePixelFormat),new Error(bo.UnsupportedVideoFramePixelFormat);const t={x:0,y:0,width:e.codedWidth,height:2},n=new ArrayBuffer(t.width*t.height*3/2);yield e.copyTo(n,{rect:t});const i=new Io(n,this.notifyError),o={x:0,y:i.multiStreamHeaderRowOffset,width:e.codedWidth,height:e.codedHeight-i.multiStreamHeaderRowOffset},r=new ArrayBuffer(o.width*o.height*3/2);yield e.copyTo(r,{rect:o});const a=new Ro(r,i.multiStreamCount);return{videoFrame:new VideoFrame(e,{timestamp:e.timestamp,visibleRect:{x:0,y:i.frameRowOffset,width:i.frameWidth,height:i.frameHeight}}),metadata:{audioInferenceResult:this.shouldDiscardAudioInferenceResult?void 0:a.audioInferenceResult}}})),Ut(o(vo,s.VideoEffectsUtils_TransformerWithMetadata_Constructor),\"video.mediaStream.audioInferenceDiscardStatusChange\",(({discardAudioInferenceResult:e})=>{this.shouldDiscardAudioInferenceResult=e}))}}function Fo(e,t){return(n,i)=>{null==t||t.reportApplyingVideoEffect(n||\"\",i),e(n,i).then((()=>{null==t||t.reportVideoEffectChanged(n||\"\",i),yn(o(vo,s.VideoEffectsUtils_ReportVideoEffectChanged),\"video.videoEffectReadiness\",[!0,n,void 0,i])})).catch((e=>{const t=e in Lo.EffectFailureReason?e:Lo.EffectFailureReason.InitializationFailure;yn(o(vo,s.VideoEffectsUtils_EffectFailure),\"video.videoEffectReadiness\",[!1,n,t,i])}))}}class Ao{static setTimeout(e,t){const n=performance.now(),i=Z();return Ao.setTimeoutCallbacks[i]={callback:e,timeoutInMs:t,startedAtInMs:n},i}static clearTimeout(e){delete Ao.setTimeoutCallbacks[e]}static setInterval(e,t){Ao.setTimeout((function n(){e(),Ao.setTimeout(n,t)}),t)}static tick(){const e=performance.now(),t=[];for(const n in Ao.setTimeoutCallbacks){const i=Ao.setTimeoutCallbacks[n];e-i.startedAtInMs>=i.timeoutInMs&&t.push(n)}for(const e of t){Ao.setTimeoutCallbacks[e].callback(),delete Ao.setTimeoutCallbacks[e]}}}Ao.setTimeoutCallbacks={};class Mo{constructor(e,t){this.reportStatisticsResult=t,this.sampleCount=0,this.distributionBins=new Uint32Array(e)}processStarts(e,t,n,i){Ao.tick(),this.suitableForThisSession(e,t,n,i)||this.reportAndResetSession(this.getStatistics(),e,i,t,n),this.start()}processEnds(){const e=performance.now()-this.frameProcessingStartedAt,t=Math.floor(Math.max(0,Math.min(this.distributionBins.length-1,e)));this.distributionBins[t]+=1,this.sampleCount+=1}getStatistics(){return this.currentSession?{effectId:this.currentSession.effectId,effectParam:this.currentSession.effectParam,frameHeight:this.currentSession.frameHeight,frameWidth:this.currentSession.frameWidth,duration:performance.now()-this.currentSession.startedAtInMs,sampleCount:this.sampleCount,distributionBins:this.distributionBins.slice()}:null}start(){this.frameProcessingStartedAt=performance.now()}suitableForThisSession(e,t,n,i){return this.currentSession&&this.currentSession.effectId===e&&this.currentSession.effectParam===i&&this.currentSession.frameWidth===t&&this.currentSession.frameHeight===n}reportAndResetSession(e,t,n,i,o){e&&this.reportStatisticsResult(e),this.resetCurrentSession(this.getNextTimeout(t,this.currentSession),t,n,i,o),this.timeoutId&&Ao.clearTimeout(this.timeoutId),this.timeoutId=Ao.setTimeout((()=>this.reportAndResetSession(this.getStatistics(),t,n,i,o)).bind(this),this.currentSession.timeoutInMs)}resetCurrentSession(e,t,n,i,o){this.currentSession={startedAtInMs:performance.now(),timeoutInMs:e,effectId:t,effectParam:n,frameWidth:i,frameHeight:o},this.sampleCount=0,this.distributionBins.fill(0)}getNextTimeout(e,t){return t&&t.effectId===e?Math.min(Mo.maxSessionTimeoutInMs,2*t.timeoutInMs):Mo.initialSessionTimeoutInMs}}Mo.initialSessionTimeoutInMs=1e3,Mo.maxSessionTimeoutInMs=3e4;const Oo=a.V_2;class ko{constructor(e){this.reportPerformanceEvent=e,this.isFirstFrameProcessed=!1,this.frameProcessTimeLimit=100,this.frameProcessingStartedAt=0,this.frameProcessingTimeCost=0,this.processedFrameCount=0,this.performanceStatistics=new Mo(ko.distributionBinSize,(e=>this.reportPerformanceEvent(o(Oo,s.VideoPerformanceMonitor_Constructor),\"video.performance.performanceDataGenerated\",[e])))}startMonitorSlowFrameProcessing(){Ao.setInterval((()=>{if(0===this.processedFrameCount)return;const e=this.frameProcessingTimeCost/this.processedFrameCount;e>this.frameProcessTimeLimit&&this.reportPerformanceEvent(o(Oo,s.VideoPerformanceMonitor_StartMonitorSlowFrameProcessing),\"video.performance.frameProcessingSlow\",[e]),this.frameProcessingTimeCost=0,this.processedFrameCount=0}),ko.calculateFPSInterval)}setFrameProcessTimeLimit(e){this.frameProcessTimeLimit=e}reportApplyingVideoEffect(e,t){var n,i;(null===(n=this.applyingEffect)||void 0===n?void 0:n.effectId)===e&&(null===(i=this.applyingEffect)||void 0===i?void 0:i.effectParam)===t||(this.applyingEffect={effectId:e,effectParam:t},this.appliedEffect=void 0)}reportVideoEffectChanged(e,t){void 0===this.applyingEffect||this.applyingEffect.effectId!==e&&this.applyingEffect.effectParam!==t||(this.appliedEffect={effectId:e,effectParam:t},this.applyingEffect=void 0,this.isFirstFrameProcessed=!1)}reportStartFrameProcessing(e,t){Ao.tick(),this.appliedEffect&&(this.frameProcessingStartedAt=performance.now(),this.performanceStatistics.processStarts(this.appliedEffect.effectId,e,t,this.appliedEffect.effectParam))}reportFrameProcessed(){var e;this.appliedEffect&&(this.processedFrameCount++,this.frameProcessingTimeCost+=performance.now()-this.frameProcessingStartedAt,this.performanceStatistics.processEnds(),this.isFirstFrameProcessed||(this.isFirstFrameProcessed=!0,this.reportPerformanceEvent(o(Oo,s.VideoPerformanceMonitor_ReportFrameProcessed),\"video.performance.firstFrameProcessed\",[Date.now(),this.appliedEffect.effectId,null===(e=this.appliedEffect)||void 0===e?void 0:e.effectParam])))}reportGettingTextureStream(e){this.gettingTextureStreamStartedAt=performance.now(),this.currentStreamId=e}reportTextureStreamAcquired(){if(void 0!==this.gettingTextureStreamStartedAt){const e=performance.now()-this.gettingTextureStreamStartedAt;this.reportPerformanceEvent(o(Oo,s.VideoPerformanceMonitor_ReportTextureStreamAcquired),\"video.performance.textureStreamAcquired\",[this.currentStreamId,e])}}}ko.distributionBinSize=1e3,ko.calculateFPSInterval=1e3;var Ho=function(e,t,n,i){function o(e){return e instanceof n?e:new n((function(t){t(e)}))}return new(n||(n=Promise))((function(n,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){e.done?n(e.value):o(e.value).then(a,s)}l((i=i.apply(e,t||[])).next())}))},Vo=function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols){var o=0;for(i=Object.getOwnPropertySymbols(e);oHo(this,void 0,void 0,(function*(){const{streamId:i}=n,o=u(e,t);yield wo(i,o,l,t)}))),!1),yn(o(No,s.VideoEffects_MediaStream_RegisterForVideoFrame),\"video.mediaStream.registerForVideoFrame\",[n])}function u(e,t){return n=>Ho(this,void 0,void 0,(function*(){const i=n.videoFrame;null==t||t.reportStartFrameProcessing(i.codedWidth,i.codedHeight);const o=yield e(n);return null==t||t.reportFrameProcessed(),o}))}function f(e,n){if(Ne(ve,L.sidePanel),!c()||!h())throw G;Ut(o(No,s.VideoEffects_RegisterForVideoBufferHandler),\"video.newVideoFrame\",(n=>{if(n){const i=n.timestamp;null==t||t.reportStartFrameProcessing(n.width,n.height),e(p(n),(()=>{null==t||t.reportFrameProcessed(),a(i)}),l)}}),!1),yn(o(No,s.VideoEffects_RegisterForVideoFrame),\"video.registerForVideoFrame\",[n])}function p(e){if(\"videoFrameBuffer\"in e)return e;{const{data:t}=e,n=Vo(e,[\"data\"]);return Object.assign(Object.assign({},n),{videoFrameBuffer:t})}}function g(){var e;return Ne(ve,L.sidePanel)&&m()&&!!(null===(e=ve.supports.video)||void 0===e?void 0:e.mediaStream)}function m(){var e,t,n,i;return!(!(null===(t=null===(e=le().chrome)||void 0===e?void 0:e.webview)||void 0===t?void 0:t.getTextureStream)||!(null===(i=null===(n=le().chrome)||void 0===n?void 0:n.webview)||void 0===i?void 0:i.registerTextureStream))}function h(){var e;return Ne(ve,L.sidePanel)&&!!(null===(e=ve.supports.video)||void 0===e?void 0:e.sharedFrame)}!function(e){e.NV12=\"NV12\"}(n=e.VideoFrameFormat||(e.VideoFrameFormat={})),function(e){e.EffectChanged=\"EffectChanged\",e.EffectDisabled=\"EffectDisabled\"}(i=e.EffectChangeType||(e.EffectChangeType={})),function(e){e.InvalidEffectId=\"InvalidEffectId\",e.InitializationFailure=\"InitializationFailure\"}(r=e.EffectFailureReason||(e.EffectFailureReason={})),e.registerForVideoFrame=function(e){if(Ne(ve,L.sidePanel),!c())throw G;if(!e.videoFrameHandler||!e.videoBufferHandler)throw new Error(\"Both videoFrameHandler and videoBufferHandler must be provided\");if(Ut(o(No,s.VideoEffects_RegisterSetFrameProcessTimeLimitHandler),\"video.setFrameProcessTimeLimit\",(e=>null==t?void 0:t.setFrameProcessTimeLimit(e.timeLimit)),!1),g())d(e.videoFrameHandler,e.config);else{if(!h())throw G;f(e.videoBufferHandler,e.config)}null==t||t.startMonitorSlowFrameProcessing()},e.notifySelectedVideoEffectChanged=function(e,t){if(Ne(ve,L.sidePanel),!c())throw G;yn(o(No,s.VideoEffects_NotifySelectedVideoEffectChanged),\"video.videoEffectChanged\",[e,t])},e.registerForVideoEffect=function(e){if(Ne(ve,L.sidePanel),!c())throw G;Ut(o(No,s.VideoEffects_RegisterEffectParameterChangeHandler),\"video.effectParameterChange\",Fo(e,t),!1),yn(o(No,s.VideoEffects_RegisterForVideoEffect),\"video.registerForVideoEffect\")},e.isSupported=c}(Lo||(Lo={}));const Do=a.V_2;var Uo;!function(e){const t=\"search.queryChange\",n=\"search.queryClose\",i=\"search.queryExecute\";function r(){return!(!Ne(ve)||!ve.supports.search)}e.registerHandlers=function(e,a,l){if(Ne(ve,L.content),!r())throw G;Ut(o(Do,s.Search_RegisterOnClosedHandler),n,e),Ut(o(Do,s.Search_RegisterOnExecutedHandler),i,a),l&&Ut(o(Do,s.Search_RegisterOnChangeHandler),t,l)},e.unregisterHandlers=function(){if(Ne(ve,L.content),!r())throw G;yn(o(Do,s.Search_UnregisterHandlers),\"search.unregister\"),Bt(t),Bt(n),Bt(i)},e.isSupported=r,e.closeSearch=function(){return new Promise((e=>{if(Ne(ve,L.content),!r())throw new Error(\"Not supported\");e(fn(o(Do,s.Search_CloseSearch),\"search.closeSearch\"))}))}}(Uo||(Uo={}));a.V_1,a.V_2;var xo;!function(e){function t(t){return new Promise((n=>{if(!r())throw G;n(mn(e.SharingAPIMessages.shareWebContent,t))}))}function n(e){if(!(e&&e.content&&e.content.length)){throw{errorCode:O.INVALID_ARGUMENTS,message:\"Shared content is missing\"}}}function i(e){let t;if(e.content.some((e=>!e.type)))throw t={errorCode:O.INVALID_ARGUMENTS,message:\"Shared content type cannot be undefined\"},t;if(e.content.some((t=>t.type!==e.content[0].type)))throw t={errorCode:O.INVALID_ARGUMENTS,message:\"Shared content must be of the same type\"},t}function o(e){let t;if(\"URL\"!==e.content[0].type)throw t={errorCode:O.INVALID_ARGUMENTS,message:\"Content type is unsupported\"},t;if(e.content.some((e=>!e.url)))throw t={errorCode:O.INVALID_ARGUMENTS,message:\"URLs are required for URL content types\"},t}function r(){return!(!Ne(ve)||!ve.supports.sharing)}e.SharingAPIMessages={shareWebContent:\"sharing.shareWebContent\"},e.shareWebContent=function(e,r){try{n(e),i(e),o(e)}catch(e){return ee((()=>Promise.reject(e)),r)}return Ne(ve,L.content,L.sidePanel,L.task,L.stage,L.meetingStage),ee(t,r,e)},e.isSupported=r}(xo||(xo={}));const Bo=a.V_2;var Wo;!function(e){let t;function n(){return!(!Ne(ve)||!ve.supports.stageView)}!function(e){e.modal=\"modal\",e.popout=\"popout\",e.popoutWithChat=\"popoutWithChat\"}(t=e.StageViewOpenMode||(e.StageViewOpenMode={})),e.open=function(e){return new Promise((t=>{if(Ne(ve,L.content),!n())throw G;if(!e)throw new Error(\"[stageView.open] Stage view params cannot be null\");t(gn(o(Bo,s.StageView_Open),\"stageView.open\",e))}))},e.isSupported=n}(Wo||(Wo={}));var Go=function(e,t,n,i){function o(e){return e instanceof n?e:new n((function(t){t(e)}))}return new(n||(n=Promise))((function(n,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){e.done?n(e.value):o(e.value).then(a,s)}l((i=i.apply(e,t||[])).next())}))};const zo=a.V_2;var qo,jo;!function(e){let t,n,i;!function(e){e[e.FrontOrRear=1]=\"FrontOrRear\",e[e.FrontOnly=2]=\"FrontOnly\",e[e.RearOnly=3]=\"RearOnly\"}(t=e.CameraRestriction||(e.CameraRestriction={})),function(e){e[e.Camera=1]=\"Camera\",e[e.Gallery=2]=\"Gallery\"}(n=e.Source||(e.Source={})),e.hasPermission=function(){if(Ne(ve,L.content,L.task),!i.isSupported())throw G;const e=k.Media;return gn(o(zo,s.VisualMedia_HasPermission),\"permissions.has\",e)},e.requestPermission=function(){if(Ne(ve,L.content,L.task),!i.isSupported())throw G;const e=k.Media;return gn(o(zo,s.VisualMedia_RequestPermission),\"permissions.request\",e)},function(e){function t(){return!!(Ne(ve)&&ve.supports.visualMedia&&ve.supports.visualMedia.image&&ve.supports.permissions)}function n(){if(!t())throw G}function i(e){if(!e||e.maxVisualMediaCount>10||e.maxVisualMediaCount<1)throw $}function r(e,t){if(t.length>e)throw J}e.captureImages=function(e){return Go(this,void 0,void 0,(function*(){Ne(ve,L.content,L.task),n(),i(e);const t=yield gn(o(zo,s.VisualMedia_Image_CaptureImages),\"visualMedia.image.captureImages\",e);return r(e.maxVisualMediaCount,t),t}))},e.retrieveImages=function(e){return Go(this,void 0,void 0,(function*(){Ne(ve,L.content,L.task),n(),i(e);const t=yield gn(o(zo,s.VisualMedia_Image_RetrieveImages),\"visualMedia.image.retrieveImages\",e);return r(e.maxVisualMediaCount,t),t}))},e.isSupported=t}(i=e.image||(e.image={}))}(qo||(qo={})),function(e){function t(){return!(!Ne(ve)||!ve.supports.webStorage)}e.isWebStorageClearedOnUserLogOut=function(){return Ne(ve),t()},e.isSupported=t}(jo||(jo={}));const $o=a.V_2;var Jo;!function(e){let t;function n(){return!(!Ne(ve)||!ve.supports.call)}!function(e){e.Unknown=\"unknown\",e.Audio=\"audio\",e.Video=\"video\",e.VideoBasedScreenSharing=\"videoBasedScreenSharing\",e.Data=\"data\"}(t=e.CallModalities||(e.CallModalities={})),e.startCall=function(e){const i=o($o,s.Call_StartCall);return new Promise((o=>{var r;if(Ne(ve,L.content,L.task),!n())throw G;if(!ve.isLegacyTeams)return yn(i,\"call.startCall\",[e],o);o(un(i,\"executeDeepLink\",mi(e.targets,null===(r=e.requestedModalities)||void 0===r?void 0:r.includes(t.Video),e.source)).then((e=>{if(!e)throw new Error(\"The call was not properly started\");return e})))}))},e.isSupported=n}(Jo||(Jo={}));const Ko=a.V_1;var Qo;!function(e){e.Messages=vt.Messages,e.FailedReason=vt.FailedReason,e.ExpectedFailureReason=vt.ExpectedFailureReason,e.notifyAppLoaded=function(){dt(o(Ko,s.AppInitialization_NotifyAppLoaded))},e.notifySuccess=function(){pt(o(Ko,s.AppInitialization_NotifySuccess))},e.notifyFailure=function(e){ft(o(Ko,s.AppInitialization_NotifyFailure),e)},e.notifyExpectedFailure=function(e){ut(o(Ko,s.AppInitialization_NotifyExpectedFailure),e)}}(Qo||(Qo={}));const Zo=t(\"thirdPartyCloudStorage\");var Xo;!function(e){class t{constructor(e,t){this.fileType=e,this.assembleAttachment=t}}let n=[],i=null,o=!0,r=null;function a(e){if(r)if(e&&e.error)r([],e.error),r=null;else if(e&&e.fileChunk)try{o||0!==e.fileChunk.chunkSequence||(Zo(\"Last chunk is not received or 'endOfFile' value for previous chunk was not set to true\"),o=!0,r([],{errorCode:O.INTERNAL_ERROR,message:\"error occurred while receiving data\"}),n=[],r=null);const a=bi(e.fileChunk,e.fileType);if(a?(i||(i=new t(e.fileType,[])),i.assembleAttachment.push(a)):(Zo(`Received a null assemble attachment for when decoding chunk sequence ${e.fileChunk.chunkSequence}; not including the chunk in the assembled file.`),r?r([],{errorCode:O.INTERNAL_ERROR,message:\"error occurred while receiving data\"}):r=null,n=[],r=null,o=!0),o=e.fileChunk.endOfFile,e.fileChunk.endOfFile&&i){const t=Pi(i.assembleAttachment,i.fileType);if(t){const i=new File([t],e.fileName,{type:t.type});n.push(i)}e.isLastFile&&r&&(r(n,e.error),n=[],r=null,o=!0),i=null}}catch(e){r&&(r([],{errorCode:O.INTERNAL_ERROR,message:e}),n=[],r=null,o=!0)}else r([],{errorCode:O.INTERNAL_ERROR,message:\"data received is null\"}),n=[],r=null,o=!0}function s(){return!(!Ne(ve)||!ve.supports.thirdPartyCloudStorage)}e.getDragAndDropFiles=function(e,t){if(!t)throw new Error(\"[getDragAndDropFiles] Callback cannot be null\");if(e&&\"\"!==e){if(Ne(ve,L.content,L.task),!s())throw G;if(r)throw r=null,new Error(\"getDragAndDropFiles cannot be called twice\");r=t,o=!0,_n(\"thirdPartyCloudStorage.getDragAndDropFiles\",[e],a)}else{t([],{errorCode:O.INVALID_ARGUMENTS})}},e.isSupported=s}(Xo||(Xo={}));const Yo=a.V_1;function er(e,t){ct(o(Yo,s.PublicAPIs_Initialize),t).then((()=>{e&&e()}))}function tr(){lo.enablePrintCapability()}function nr(){lo.print()}function ir(e){Ve(),yn(o(Yo,s.PublicAPIs_GetContext),\"getContext\",(t=>{t.frameContext||(t.frameContext=y.frameContext),e(t)}))}function or(e){ht(o(Yo,s.PublicAPIs_RegisterOnThemeChangeHandlerHelper),e)}function rr(e){Gt(o(Yo,s.PublicAPIs_RegisterFullScreenHandler),\"fullScreenChange\",e,[])}function ar(e){Gt(o(Yo,s.PublicAPIs_RegisterAppButtonClickHandler),\"appButtonClick\",e,[L.content])}function sr(e){Gt(o(Yo,s.PublicAPIs_RegisterAppButtonHoverEnterHandler),\"appButtonHoverEnter\",e,[L.content])}function lr(e){Gt(o(Yo,s.PublicAPIs_RegisterAppButtonHoverLeaveHandler),\"appButtonHoverLeave\",e,[L.content])}function cr(e){Ot.backStack.registerBackButtonHandlerHelper(o(Yo,s.PublicAPIs_RegisterBackButtonHandler),e)}function dr(e){lo.registerOnLoadHandlerHelper(e)}function ur(e){lo.registerBeforeUnloadHandlerHelper(e)}function fr(e){Gt(o(Yo,s.PublicAPIs_RegisterFocusEnterHandler),\"focusEnter\",e,[])}function pr(e){Gt(o(Yo,s.PublicAPIs_RegisterChangeSettingsHandler),\"changeSettings\",e,[L.content])}function gr(e,t){Ne(ve),Et(o(Yo,s.PublicAPIs_GetTabInstances),t).then((t=>{e(t)}))}function mr(e,t){Ne(ve),It(o(Yo,s.PublicAPIs_GetMruTabInstances),t).then((t=>{e(t)}))}function hr(e){Rt(o(Yo,s.PublicAPIs_ShareDeepLink),{subPageId:e.subEntityId,subPageLabel:e.subEntityLabel,subPageWebUrl:e.subEntityWebUrl})}function Cr(e,t){Ne(ve,L.content,L.sidePanel,L.settings,L.task,L.stage,L.meetingStage);const n=null!=t?t:K();Ct(o(Yo,s.PublicAPIs_ExecuteDeepLink),e).then((()=>{n(!0)})).catch((e=>{n(!1,e.message)}))}function vr(e){Tt(o(Yo,s.PublicAPIs_SetFrameContext),e)}function wr(e,t,n){ct(o(Yo,s.PublicAPIs_Initialize),n).then((()=>t&&t())),Tt(o(Yo,s.PublicAPIs_SetFrameContext),e)}const Sr=a.V_1;function yr(e){bt(o(Sr,s.Navigation_ReturnFocus),e)}function _r(e,t){Ne(ve);const n=null!=t?t:K();Pt(o(Sr,s.Navigation_NavigateToTab),e).then((()=>{n(!0)})).catch((e=>{n(!1,e.message)}))}function Pr(e,t){Ne(ve,L.content,L.sidePanel,L.settings,L.remove,L.task,L.stage,L.meetingStage);const n=null!=t?t:K();yt(o(Sr,s.Navigation_NavigateCrossDomain),e).then((()=>{n(!0)})).catch((e=>{n(!1,e.message)}))}function br(e){Ne(ve);const t=null!=e?e:K();_t(o(Sr,s.Navigation_NavigateBack)).then((()=>{t(!0)})).catch((e=>{t(!1,e.message)}))}const Er=a.V_1;var Ir;!function(e){e.setValidityState=function(e){Ft(o(Er,s.Settings_SetValidityState),e)},e.getSettings=function(e){Ne(ve,L.content,L.settings,L.remove,L.sidePanel),At(o(Er,s.Settings_GetSettings)).then((t=>{e(t)}))},e.setSettings=function(e,t){Ne(ve,L.content,L.settings,L.sidePanel);const n=null!=t?t:K();Mt(o(Er,s.Settings_SetSettings),e).then((()=>{n(!0)})).catch((e=>{n(!1,e.message)}))},e.registerOnSaveHandler=function(e){Ot.config.registerOnSaveHandlerHelper(o(Er,s.Settings_RegisterOnSaveHandler),e)},e.registerOnRemoveHandler=function(e){Ot.config.registerOnRemoveHandlerHelper(o(Er,s.Settings_RegisterOnRemoveHandler),e)}}(Ir||(Ir={}));var Rr=function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols){var o=0;for(i=Object.getOwnPropertySymbols(e);o{var t,n;return i(null!==(t=e.err)&&void 0!==t?t:\"\",null!==(n=e.result)&&void 0!==n?n:\"\")}:void 0;return void 0===e.card&&void 0===e.url||e.card?(Ne(ve,L.content,L.sidePanel,L.meetingStage),yn(r,\"tasks.startTask\",[e],i)):void 0!==e.completionBotId?tt(r,n(e),a):et(r,t(e),a),new ji},e.updateTask=function(e){e=i(e);const{width:t,height:n}=e,r=Rr(e,[\"width\",\"height\"]);if(Object.keys(r).length)throw new Error(\"resize requires a TaskInfo argument containing only width and height\");Ye(o(Tr,s.Tasks_UpdateTask),e)},e.submitTask=function(e,t){nt(o(Tr,s.Tasks_SubmitTask),e,t)},e.getDefaultSizeIfNotProvided=i}(Fr||(Fr={}));const Ar=a.V_2;var Mr;!function(e){let t,n;!function(e){e.guest=\"Guest\",e.attendee=\"Attendee\",e.presenter=\"Presenter\",e.organizer=\"Organizer\"}(t=e.UserMeetingRole||(e.UserMeetingRole={})),function(e){e.added=\"Added\",e.alreadyExists=\"AlreadyExists\",e.conflict=\"Conflict\",e.notFound=\"NotFound\"}(n=e.ContainerState||(e.ContainerState={})),e.isSupported=function(){return!(!Ne(ve,L.meetingStage,L.sidePanel)||!ve.supports.interactive)}}(Mr||(Mr={}));class Or{getFluidTenantInfo(){return kr(),new Promise((e=>{e(gn(o(Ar,s.Interactive_GetFluidTenantInfo),\"interactive.getFluidTenantInfo\"))}))}getFluidToken(e){return kr(),new Promise((t=>{t(gn(o(Ar,s.Interactive_GetFluidToken),\"interactive.getFluidToken\",e))}))}getFluidContainerId(){return kr(),new Promise((e=>{e(gn(o(Ar,s.Interactive_GetFluidContainerId),\"interactive.getFluidContainerId\"))}))}setFluidContainerId(e){return kr(),new Promise((t=>{t(gn(o(Ar,s.Interactive_SetFluidContainerId),\"interactive.setFluidContainerId\",e))}))}getNtpTime(){return kr(),new Promise((e=>{e(gn(o(Ar,s.Interactive_GetNtpTime),\"interactive.getNtpTime\"))}))}registerClientId(e){return kr(),new Promise((t=>{t(gn(o(Ar,s.Interactive_RegisterClientId),\"interactive.registerClientId\",e))}))}getClientRoles(e){return kr(),new Promise((t=>{t(gn(o(Ar,s.Interactive_GetClientRoles),\"interactive.getClientRoles\",e))}))}getClientInfo(e){return kr(),new Promise((t=>{t(gn(o(Ar,s.Interactive_GetClientInfo),\"interactive.getClientInfo\",e))}))}static create(){return kr(),new Or}}function kr(){if(!Mr.isSupported())throw new Error(\"LiveShareHost Not supported\")}const Hr=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;const Vr=function(e){return\"string\"==typeof e&&Hr.test(e)};var Nr=function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols){var o=0;for(i=Object.getOwnPropertySymbols(e);o{if(e.imageURL){const t=new URL(e.imageURL);e.imageURL=t}return e.accessories&&(e.accessories=Dr(e.accessories)),e}))}const Ur=e=>{try{return e.map((e=>{const{imageURL:t,accessories:n}=e,i=Nr(e,[\"imageURL\",\"accessories\"]),o=Object.assign({},i);return t&&(o.imageURL=t.href),n&&(o.accessories=Ur(n)),o}))}catch(e){throw new Error(\"Error serializing cart items\")}};function xr(e){if(!Array.isArray(e)||0===e.length)throw new Error(\"cartItems must be a non-empty array\");for(const t of e)Wr(t),Br(t.accessories)}function Br(e){if(null!=e){if(!Array.isArray(e)||0===e.length)throw new Error(\"CartItem.accessories must be a non-empty array\");for(const t of e){if(t.accessories)throw new Error(\"Item in CartItem.accessories cannot have accessories\");Wr(t)}}}function Wr(e){if(!e.id)throw new Error(\"cartItem.id must not be empty\");if(!e.name)throw new Error(\"cartItem.name must not be empty\");zr(e.price),qr(e.quantity)}function Gr(e){if(null!=e){if(!e)throw new Error(\"id must not be empty\");if(!1===Vr(e))throw new Error(\"id must be a valid UUID\")}}function zr(e){if(\"number\"!=typeof e||e<0)throw new Error(`price ${e} must be a number not less than 0`);if(parseFloat(e.toFixed(3))!==e)throw new Error(`price ${e} must have at most 3 decimal places`)}function qr(e){if(\"number\"!=typeof e||e<=0||parseInt(e.toString())!==e)throw new Error(`quantity ${e} must be an integer greater than 0`)}function jr(e){if(!Object.values(Jr.CartStatus).includes(e))throw new Error(`cartStatus ${e} is not valid`)}const $r=a.V_2;var Jr,Kr,Qr;!function(e){let t,n;function i(){return!(!Ne(ve)||!ve.supports.marketplace)}e.cartVersion={majorVersion:1,minorVersion:1},function(e){e.TACAdminUser=\"TACAdminUser\",e.TeamsAdminUser=\"TeamsAdminUser\",e.TeamsEndUser=\"TeamsEndUser\"}(t=e.Intent||(e.Intent={})),function(e){e.Open=\"Open\",e.Processing=\"Processing\",e.Processed=\"Processed\",e.Closed=\"Closed\",e.Error=\"Error\"}(n=e.CartStatus||(e.CartStatus={})),e.getCart=function(){if(Ne(ve,L.content,L.task),!i())throw G;return gn(o($r,s.Marketplace_GetCart),\"marketplace.getCart\",e.cartVersion).then(Lr)},e.addOrUpdateCartItems=function(t){if(Ne(ve,L.content,L.task),!i())throw G;if(!t)throw new Error(\"addOrUpdateCartItemsParams must be provided\");return Gr(null==t?void 0:t.cartId),xr(null==t?void 0:t.cartItems),gn(o($r,s.Marketplace_AddOrUpdateCartItems),\"marketplace.addOrUpdateCartItems\",Object.assign(Object.assign({},t),{cartItems:Ur(t.cartItems),cartVersion:e.cartVersion})).then(Lr)},e.removeCartItems=function(t){if(Ne(ve,L.content,L.task),!i())throw G;if(!t)throw new Error(\"removeCartItemsParams must be provided\");if(Gr(null==t?void 0:t.cartId),!Array.isArray(null==t?void 0:t.cartItemIds)||0===(null==t?void 0:t.cartItemIds.length))throw new Error(\"cartItemIds must be a non-empty array\");return gn(o($r,s.Marketplace_RemoveCardItems),\"marketplace.removeCartItems\",Object.assign(Object.assign({},t),{cartVersion:e.cartVersion})).then(Lr)},e.updateCartStatus=function(t){if(Ne(ve,L.content,L.task),!i())throw G;if(!t)throw new Error(\"updateCartStatusParams must be provided\");return Gr(null==t?void 0:t.cartId),jr(null==t?void 0:t.cartStatus),gn(o($r,s.Marketplace_UpdateCartStatus),\"marketplace.updateCartStatus\",Object.assign(Object.assign({},t),{cartVersion:e.cartVersion})).then(Lr)},e.isSupported=i}(Jr||(Jr={})),function(e){const t=\"Action.Execute\";let n,i,o;function r(e){if(e.requestType===n.ActionExecuteInvokeRequest){const n=e;if(n.type!==t){throw{errorCode:o.INTERNAL_ERROR,message:`Invalid action type ${n.type}. Action type must be \"${t}\"`}}}else if(e.requestType===n.QueryMessageExtensionRequest){if(e.commandId.length>64)throw new Error(\"originalRequestInfo.commandId exceeds the maximum size of 64 characters\");if(e.parameters.length>5)throw new Error(\"originalRequestInfo.parameters exceeds the maximum size of 5\");for(const t of e.parameters){if(t.name.length>64)throw new Error(\"originalRequestInfo.parameters.name exceeds the maximum size of 64 characters\");if(t.value.length>512)throw new Error(\"originalRequestInfo.parameters.value exceeds the maximum size of 512 characters\")}}}function a(){return!(!Ne(ve)||!ve.supports.externalAppAuthentication)}!function(e){e.ActionExecuteInvokeRequest=\"ActionExecuteInvokeRequest\",e.QueryMessageExtensionRequest=\"QueryMessageExtensionRequest\"}(n=e.OriginalRequestType||(e.OriginalRequestType={})),function(e){e.ActionExecuteInvokeResponse=\"ActionExecuteInvokeResponse\",e.QueryMessageExtensionResponse=\"QueryMessageExtensionResponse\"}(i=e.InvokeResponseType||(e.InvokeResponseType={})),function(e){e.INTERNAL_ERROR=\"INTERNAL_ERROR\"}(o=e.InvokeErrorCode||(e.InvokeErrorCode={})),e.authenticateAndResendRequest=function(e,t,n){if(Ne(ve,L.content),!a())throw G;return ue(e),r(n),Cn(\"externalAppAuthentication.authenticateAndResendRequest\",[e,n,t.url.href,t.width,t.height,t.isExternal]).then((([e,t])=>{if(e&&null!=t.responseType)return t;throw t}))},e.authenticateWithSSO=function(e,t){if(Ne(ve,L.content),!a())throw G;return ue(e),Cn(\"externalAppAuthentication.authenticateWithSSO\",[e,t.claims,t.silent]).then((([e,t])=>{if(!e)throw t}))},e.authenticateWithSSOAndResendRequest=function(e,t,n){if(Ne(ve,L.content),!a())throw G;return ue(e),r(n),Cn(\"externalAppAuthentication.authenticateWithSSOAndResendRequest\",[e,n,t.claims,t.silent]).then((([e,t])=>{if(e&&null!=t.responseType)return t;throw t}))},e.isSupported=a}(Kr||(Kr={})),function(e){let t,n,i;function o(){return!(!Ne(ve)||!ve.supports.externalAppCardActions)}!function(e){e.DeepLinkDialog=\"DeepLinkDialog\",e.DeepLinkOther=\"DeepLinkOther\",e.DeepLinkStageView=\"DeepLinkStageView\",e.GenericUrl=\"GenericUrl\"}(t=e.ActionOpenUrlType||(e.ActionOpenUrlType={})),function(e){e.INTERNAL_ERROR=\"INTERNAL_ERROR\",e.INVALID_LINK=\"INVALID_LINK\",e.NOT_SUPPORTED=\"NOT_SUPPORTED\"}(n=e.ActionOpenUrlErrorCode||(e.ActionOpenUrlErrorCode={})),function(e){e.INTERNAL_ERROR=\"INTERNAL_ERROR\"}(i=e.ActionSubmitErrorCode||(e.ActionSubmitErrorCode={})),e.processActionSubmit=function(e,t){if(Ne(ve,L.content),!o())throw G;return ue(e),Cn(\"externalAppCardActions.processActionSubmit\",[e,t]).then((([e,t])=>{if(!e)throw t}))},e.processActionOpenUrl=function(e,t){if(Ne(ve,L.content),!o())throw G;return ue(e),Cn(\"externalAppCardActions.processActionOpenUrl\",[e,t.href]).then((([e,t])=>{if(e)throw e;return t}))},e.isSupported=o}(Qr||(Qr={}));const Zr=a.V_1;var Xr;!function(e){let t,n,i,r,a,l;function c(e,t){return{errorCode:e,message:t}}!function(e){e.Dropbox=\"DROPBOX\",e.Box=\"BOX\",e.Sharefile=\"SHAREFILE\",e.GoogleDrive=\"GOOGLEDRIVE\",e.Egnyte=\"EGNYTE\",e.SharePoint=\"SharePoint\"}(t=e.CloudStorageProvider||(e.CloudStorageProvider={})),function(e){e[e.Sharepoint=0]=\"Sharepoint\",e[e.WopiIntegration=1]=\"WopiIntegration\",e[e.Google=2]=\"Google\",e[e.OneDrive=3]=\"OneDrive\",e[e.Recent=4]=\"Recent\",e[e.Aggregate=5]=\"Aggregate\",e[e.FileSystem=6]=\"FileSystem\",e[e.Search=7]=\"Search\",e[e.AllFiles=8]=\"AllFiles\",e[e.SharedWithMe=9]=\"SharedWithMe\"}(n=e.CloudStorageProviderType||(e.CloudStorageProviderType={})),function(e){e.ClassMaterials=\"classMaterials\"}(i=e.SpecialDocumentLibraryType||(e.SpecialDocumentLibraryType={})),function(e){e.Readonly=\"readonly\"}(r=e.DocumentLibraryAccessType||(e.DocumentLibraryAccessType={})),function(e){e.Downloaded=\"Downloaded\",e.Downloading=\"Downloading\",e.Failed=\"Failed\"}(a=e.FileDownloadStatus||(e.FileDownloadStatus={})),function(e){e.Download=\"DOWNLOAD\",e.Upload=\"UPLOAD\",e.Delete=\"DELETE\"}(l=e.CloudStorageProviderFileAction||(e.CloudStorageProviderFileAction={})),e.getCloudStorageFolders=function(e,t){if(Ne(ve,L.content),!e||0===e.length)throw new Error(\"[files.getCloudStorageFolders] channelId name cannot be null or empty\");if(!t)throw new Error(\"[files.getCloudStorageFolders] Callback cannot be null\");yn(o(Zr,s.Files_GetCloudStorageFolders),\"files.getCloudStorageFolders\",[e],t)},e.addCloudStorageFolder=function(e,t){if(Ne(ve,L.content),!e||0===e.length)throw new Error(\"[files.addCloudStorageFolder] channelId name cannot be null or empty\");if(!t)throw new Error(\"[files.addCloudStorageFolder] Callback cannot be null\");yn(o(Zr,s.Files_AddCloudStorageFolder),\"files.addCloudStorageFolder\",[e],t)},e.deleteCloudStorageFolder=function(e,t,n){if(Ne(ve,L.content),!e)throw new Error(\"[files.deleteCloudStorageFolder] channelId name cannot be null or empty\");if(!t)throw new Error(\"[files.deleteCloudStorageFolder] folderToDelete cannot be null or empty\");if(!n)throw new Error(\"[files.deleteCloudStorageFolder] Callback cannot be null\");yn(o(Zr,s.Files_DeleteCloudStorageFolder),\"files.deleteCloudStorageFolder\",[e,t],n)},e.getCloudStorageFolderContents=function(e,t,n){if(Ne(ve,L.content),!e||!t)throw new Error(\"[files.getCloudStorageFolderContents] folder/providerCode name cannot be null or empty\");if(!n)throw new Error(\"[files.getCloudStorageFolderContents] Callback cannot be null\");if(\"isSubdirectory\"in e&&!e.isSubdirectory)throw new Error(\"[files.getCloudStorageFolderContents] provided folder is not a subDirectory\");yn(o(Zr,s.Files_GetCloudStorageFolderContents),\"files.getCloudStorageFolderContents\",[e,t],n)},e.openCloudStorageFile=function(e,t,n){if(Ne(ve,L.content),!e||!t)throw new Error(\"[files.openCloudStorageFile] file/providerCode cannot be null or empty\");if(e.isSubdirectory)throw new Error(\"[files.openCloudStorageFile] provided file is a subDirectory\");yn(o(Zr,s.Files_OpenCloudStorageFile),\"files.openCloudStorageFile\",[e,t,n])},e.getExternalProviders=function(e=!1,t){if(Ne(ve,L.content),!t)throw new Error(\"[files.getExternalProviders] Callback cannot be null\");yn(o(Zr,s.Files_GetExternalProviders),\"files.getExternalProviders\",[e],t)},e.copyMoveFiles=function(e,t,n,i,r=!1,a){if(Ne(ve,L.content),!e||0===e.length)throw new Error(\"[files.copyMoveFiles] selectedFiles cannot be null or empty\");if(!t)throw new Error(\"[files.copyMoveFiles] providerCode cannot be null or empty\");if(!n)throw new Error(\"[files.copyMoveFiles] destinationFolder cannot be null or empty\");if(!i)throw new Error(\"[files.copyMoveFiles] destinationProviderCode cannot be null or empty\");if(!a)throw new Error(\"[files.copyMoveFiles] callback cannot be null\");yn(o(Zr,s.Files_CopyMoveFiles),\"files.copyMoveFiles\",[e,t,n,i,r],a)},e.getFileDownloads=function(e){if(Ne(ve,L.content),!e)throw new Error(\"[files.getFileDownloads] Callback cannot be null\");yn(o(Zr,s.Files_GetFileDownloads),\"files.getFileDownloads\",[],e)},e.openDownloadFolder=function(e=void 0,t){if(Ne(ve,L.content),!t)throw new Error(\"[files.openDownloadFolder] Callback cannot be null\");yn(o(Zr,s.Files_OpenDownloadFolder),\"files.openDownloadFolder\",[e],t)},e.addCloudStorageProvider=function(e){if(Ne(ve,L.content),!e)throw c(O.INVALID_ARGUMENTS,\"[files.addCloudStorageProvider] callback cannot be null\");yn(o(Zr,s.Files_AddCloudStorageProvider),\"files.addCloudStorageProvider\",[],e)},e.removeCloudStorageProvider=function(e,t){if(Ne(ve,L.content),!t)throw c(O.INVALID_ARGUMENTS,\"[files.removeCloudStorageProvider] callback cannot be null\");if(!e||!e.content)throw c(O.INVALID_ARGUMENTS,\"[files.removeCloudStorageProvider] 3P cloud storage provider request content is missing\");yn(o(Zr,s.Files_RemoveCloudStorageProvider),\"files.removeCloudStorageProvider\",[e],t)},e.addCloudStorageProviderFile=function(e,t){if(Ne(ve,L.content),!t)throw c(O.INVALID_ARGUMENTS,\"[files.addCloudStorageProviderFile] callback cannot be null\");if(!e||!e.content)throw c(O.INVALID_ARGUMENTS,\"[files.addCloudStorageProviderFile] 3P cloud storage provider request content is missing\");yn(o(Zr,s.Files_AddCloudStorageProviderFile),\"files.addCloudStorageProviderFile\",[e],t)},e.renameCloudStorageProviderFile=function(e,t){if(Ne(ve,L.content),!t)throw c(O.INVALID_ARGUMENTS,\"[files.renameCloudStorageProviderFile] callback cannot be null\");if(!e||!e.content)throw c(O.INVALID_ARGUMENTS,\"[files.renameCloudStorageProviderFile] 3P cloud storage provider request content is missing\");yn(o(Zr,s.Files_RenameCloudStorageProviderFile),\"files.renameCloudStorageProviderFile\",[e],t)},e.deleteCloudStorageProviderFile=function(e,t){if(Ne(ve,L.content),!t)throw c(O.INVALID_ARGUMENTS,\"[files.deleteCloudStorageProviderFile] callback cannot be null\");if(!(e&&e.content&&e.content.itemList&&e.content.itemList.length>0))throw c(O.INVALID_ARGUMENTS,\"[files.deleteCloudStorageProviderFile] 3P cloud storage provider request content details are missing\");yn(o(Zr,s.Files_DeleteCloudStorageProviderFile),\"files.deleteCloudStorageProviderFile\",[e],t)},e.downloadCloudStorageProviderFile=function(e,t){if(Ne(ve,L.content),!t)throw c(O.INVALID_ARGUMENTS,\"[files.downloadCloudStorageProviderFile] callback cannot be null\");if(!(e&&e.content&&e.content.itemList&&e.content.itemList.length>0))throw c(O.INVALID_ARGUMENTS,\"[files.downloadCloudStorageProviderFile] 3P cloud storage provider request content details are missing\");yn(o(Zr,s.Files_DownloadCloudStorageProviderFile),\"files.downloadCloudStorageProviderFile\",[e],t)},e.uploadCloudStorageProviderFile=function(e,t){if(Ne(ve,L.content),!t)throw c(O.INVALID_ARGUMENTS,\"[files.uploadCloudStorageProviderFile] callback cannot be null\");if(!(e&&e.content&&e.content.itemList&&e.content.itemList.length>0))throw c(O.INVALID_ARGUMENTS,\"[files.uploadCloudStorageProviderFile] 3P cloud storage provider request content details are missing\");if(!e.content.destinationFolder)throw c(O.INVALID_ARGUMENTS,\"[files.uploadCloudStorageProviderFile] Invalid destination folder details\");yn(o(Zr,s.Files_UploadCloudStorageProviderFile),\"files.uploadCloudStorageProviderFile\",[e],t)},e.registerCloudStorageProviderListChangeHandler=function(e){if(Ne(ve),!e)throw new Error(\"[registerCloudStorageProviderListChangeHandler] Handler cannot be null\");Ut(o(Zr,s.Files_RegisterCloudStorageProviderListChangeHandler),\"files.cloudStorageProviderListChange\",e)},e.registerCloudStorageProviderContentChangeHandler=function(e){if(Ne(ve),!e)throw new Error(\"[registerCloudStorageProviderContentChangeHandler] Handler cannot be null\");Ut(o(Zr,s.Files_RegisterCloudStorageProviderContentChangeHandler),\"files.cloudStorageProviderContentChange\",e)}}(Xr||(Xr={}));const Yr=a.V_1;var ea;!function(e){function t(){return!(!Ne(ve)||!ve.supports.meetingRoom)}e.getPairedMeetingRoomInfo=function(){return new Promise((e=>{if(Ne(ve),!t())throw G;e(gn(o(Yr,s.MeetingRoom_GetPairedMeetingRoomInfo),\"meetingRoom.getPairedMeetingRoomInfo\"))}))},e.sendCommandToPairedMeetingRoom=function(e){return new Promise((n=>{if(!e||0==e.length)throw new Error(\"[meetingRoom.sendCommandToPairedMeetingRoom] Command name cannot be null or empty\");if(Ne(ve),!t())throw G;n(gn(o(Yr,s.MeetingRoom_SendCommandToPairedMeetingRoom),\"meetingRoom.sendCommandToPairedMeetingRoom\",e))}))},e.registerMeetingRoomCapabilitiesUpdateHandler=function(e){if(!e)throw new Error(\"[meetingRoom.registerMeetingRoomCapabilitiesUpdateHandler] Handler cannot be null\");if(Ne(ve),!t())throw G;Ut(o(Yr,s.MeetingRoom_RegisterMeetingRoomCapabilitiesUpdateHandler),\"meetingRoom.meetingRoomCapabilitiesUpdate\",(t=>{Ne(ve),e(t)}))},e.registerMeetingRoomStatesUpdateHandler=function(e){if(!e)throw new Error(\"[meetingRoom.registerMeetingRoomStatesUpdateHandler] Handler cannot be null\");if(Ne(ve),!t())throw G;Ut(o(Yr,s.MeetingRoom_RegisterMeetingRoomStatesUpdateHandler),\"meetingRoom.meetingRoomStatesUpdate\",(t=>{Ne(ve),e(t)}))},e.isSupported=t}(ea||(ea={}));var ta,na=function(e,t,n,i){function o(e){return e instanceof n?e:new n((function(t){t(e)}))}return new(n||(n=Promise))((function(n,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){e.done?n(e.value):o(e.value).then(a,s)}l((i=i.apply(e,t||[])).next())}))};!function(e){let n;const i=a.V_1,r=t(\"messageChannels\");function l(){return!(!Ne(ve)||!ve.supports.messageChannels)}e.getTelemetryPort=function(){return na(this,void 0,void 0,(function*(){if(n)return r(\"Returning telemetry port from cache\"),n;if(!l())throw G;return n=yield vn(o(i,s.MessageChannels_GetTelemetryPort),\"messageChannels.getTelemetryPort\"),n}))},e.isSupported=l,e._clearTelemetryPort=function(){n=void 0}}(ta||(ta={}));const ia=a.V_1;var oa;!function(e){function t(){return!(!Ne(ve)||!ve.supports.notifications)}e.showNotification=function(e){if(Ne(ve,L.content),!t())throw G;yn(o(ia,s.Notifications_ShowNotification),\"notifications.showNotification\",[e])},e.isSupported=t}(oa||(oa={}));const ra=a.V_1;var aa;!function(e){let t,n,i;function r(){return!(!Ne(ve)||!ve.supports.remoteCamera)}!function(e){e.Reset=\"Reset\",e.ZoomIn=\"ZoomIn\",e.ZoomOut=\"ZoomOut\",e.PanLeft=\"PanLeft\",e.PanRight=\"PanRight\",e.TiltUp=\"TiltUp\",e.TiltDown=\"TiltDown\"}(t=e.ControlCommand||(e.ControlCommand={})),function(e){e[e.CommandResetError=0]=\"CommandResetError\",e[e.CommandZoomInError=1]=\"CommandZoomInError\",e[e.CommandZoomOutError=2]=\"CommandZoomOutError\",e[e.CommandPanLeftError=3]=\"CommandPanLeftError\",e[e.CommandPanRightError=4]=\"CommandPanRightError\",e[e.CommandTiltUpError=5]=\"CommandTiltUpError\",e[e.CommandTiltDownError=6]=\"CommandTiltDownError\",e[e.SendDataError=7]=\"SendDataError\"}(n=e.ErrorReason||(e.ErrorReason={})),function(e){e[e.None=0]=\"None\",e[e.ControlDenied=1]=\"ControlDenied\",e[e.ControlNoResponse=2]=\"ControlNoResponse\",e[e.ControlBusy=3]=\"ControlBusy\",e[e.AckTimeout=4]=\"AckTimeout\",e[e.ControlTerminated=5]=\"ControlTerminated\",e[e.ControllerTerminated=6]=\"ControllerTerminated\",e[e.DataChannelError=7]=\"DataChannelError\",e[e.ControllerCancelled=8]=\"ControllerCancelled\",e[e.ControlDisabled=9]=\"ControlDisabled\",e[e.ControlTerminatedToAllowOtherController=10]=\"ControlTerminatedToAllowOtherController\"}(i=e.SessionTerminatedReason||(e.SessionTerminatedReason={})),e.getCapableParticipants=function(e){if(!e)throw new Error(\"[remoteCamera.getCapableParticipants] Callback cannot be null\");if(Ne(ve,L.sidePanel),!r())throw G;yn(o(ra,s.RemoteCamera_GetCapableParticipants),\"remoteCamera.getCapableParticipants\",e)},e.requestControl=function(e,t){if(!e)throw new Error(\"[remoteCamera.requestControl] Participant cannot be null\");if(!t)throw new Error(\"[remoteCamera.requestControl] Callback cannot be null\");if(Ne(ve,L.sidePanel),!r())throw G;yn(o(ra,s.RemoteCamera_RequestControl),\"remoteCamera.requestControl\",[e],t)},e.sendControlCommand=function(e,t){if(!e)throw new Error(\"[remoteCamera.sendControlCommand] ControlCommand cannot be null\");if(!t)throw new Error(\"[remoteCamera.sendControlCommand] Callback cannot be null\");if(Ne(ve,L.sidePanel),!r())throw G;yn(o(ra,s.RemoteCamera_SendControlCommand),\"remoteCamera.sendControlCommand\",[e],t)},e.terminateSession=function(e){if(!e)throw new Error(\"[remoteCamera.terminateSession] Callback cannot be null\");if(Ne(ve,L.sidePanel),!r())throw G;yn(o(ra,s.RemoteCamera_TerminateSession),\"remoteCamera.terminateSession\",e)},e.registerOnCapableParticipantsChangeHandler=function(e){if(!e)throw new Error(\"[remoteCamera.registerOnCapableParticipantsChangeHandler] Handler cannot be null\");if(Ne(ve,L.sidePanel),!r())throw G;Ut(o(ra,s.RemoteCamera_RegisterOnCapableParticipantsChangeHandler),\"remoteCamera.capableParticipantsChange\",e)},e.registerOnErrorHandler=function(e){if(!e)throw new Error(\"[remoteCamera.registerOnErrorHandler] Handler cannot be null\");if(Ne(ve,L.sidePanel),!r())throw G;Ut(o(ra,s.RemoteCamera_RegisterOnErrorHandler),\"remoteCamera.handlerError\",e)},e.registerOnDeviceStateChangeHandler=function(e){if(!e)throw new Error(\"[remoteCamera.registerOnDeviceStateChangeHandler] Handler cannot be null\");if(Ne(ve,L.sidePanel),!r())throw G;Ut(o(ra,s.RemoteCamera_RegisterOnDeviceStateChangeHandler),\"remoteCamera.deviceStateChange\",e)},e.registerOnSessionStatusChangeHandler=function(e){if(!e)throw new Error(\"[remoteCamera.registerOnSessionStatusChangeHandler] Handler cannot be null\");if(Ne(ve,L.sidePanel),!r())throw G;Ut(o(ra,s.RemoteCamera_RegisterOnSessionStatusChangeHandler),\"remoteCamera.sessionStatusChange\",e)},e.isSupported=r}(aa||(aa={}));const sa=a.V_1;var la;!function(e){function t(){return!(!Ne(ve)||!ve.supports.appEntity)}e.selectAppEntity=function(e,n,i,r){if(Ne(ve,L.content),!t())throw G;if(!e||0==e.length)throw new Error(\"[appEntity.selectAppEntity] threadId name cannot be null or empty\");if(!r)throw new Error(\"[appEntity.selectAppEntity] Callback cannot be null\");yn(o(sa,s.AppEntity_SelectAppEntity),\"appEntity.selectAppEntity\",[e,n,i],r)},e.isSupported=t}(la||(la={}));const ca=a.V_1;var da;!function(e){let t,n;function i(){return!(!Ne(ve)||!ve.supports.teams)}!function(e){e[e.Regular=0]=\"Regular\",e[e.Private=1]=\"Private\",e[e.Shared=2]=\"Shared\"}(t=e.ChannelType||(e.ChannelType={})),e.getTeamChannels=function(e,t){if(Ne(ve,L.content),!i())throw G;if(!e)throw new Error(\"[teams.getTeamChannels] groupId cannot be null or empty\");if(!t)throw new Error(\"[teams.getTeamChannels] Callback cannot be null\");yn(o(ca,s.Teams_GetTeamChannels),\"teams.getTeamChannels\",[e],t)},e.refreshSiteUrl=function(e,t){if(Ne(ve),!i())throw G;if(!e)throw new Error(\"[teams.refreshSiteUrl] threadId cannot be null or empty\");if(!t)throw new Error(\"[teams.refreshSiteUrl] Callback cannot be null\");yn(o(ca,s.Teams_RefreshSiteUrl),\"teams.refreshSiteUrl\",[e],t)},e.isSupported=i,function(e){let t;function n(){return!(!Ne(ve)||!ve.supports.teams)&&!!ve.supports.teams.fullTrust}!function(e){function t(){return!(!Ne(ve)||!ve.supports.teams)&&(!!ve.supports.teams.fullTrust&&!!ve.supports.teams.fullTrust.joinedTeams)}e.getUserJoinedTeams=function(e){return new Promise((n=>{if(Ne(ve),!t())throw G;if((y.hostClientType===V.android||y.hostClientType===V.teamsRoomsAndroid||y.hostClientType===V.teamsPhones||y.hostClientType===V.teamsDisplays)&&!Le(\"2.0.1\")){const e={errorCode:O.OLD_PLATFORM};throw new Error(JSON.stringify(e))}n(un(o(ca,s.Teams_FullTrust_JoinedTeams_GetUserJoinedTeams),\"getUserJoinedTeams\",e))}))},e.isSupported=t}(t=e.joinedTeams||(e.joinedTeams={})),e.getConfigSetting=function(e){return new Promise((t=>{if(Ne(ve),!n())throw G;t(un(o(ca,s.Teams_FullTrust_GetConfigSetting),\"getConfigSetting\",e))}))},e.isSupported=n}(n=e.fullTrust||(e.fullTrust={}))}(da||(da={}));var ua=function(e,t,n,i){function o(e){return e instanceof n?e:new n((function(t){t(e)}))}return new(n||(n=Promise))((function(n,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){e.done?n(e.value):o(e.value).then(a,s)}l((i=i.apply(e,t||[])).next())}))};const fa=a.V_2;var pa;!function(e){e.frameProcessingTimeoutInMs=2e3;const t=ce()?void 0:new ko(yn);let n;function i(){const t=setTimeout((()=>{d(`Frame not processed in ${e.frameProcessingTimeoutInMs}ms`,n.Warn)}),e.frameProcessingTimeoutInMs);return function(){clearTimeout(t)}}function r(e,t){return n=>ua(this,void 0,void 0,(function*(){const o=n.videoFrame;t.reportStartFrameProcessing(o.codedWidth,o.codedHeight);const r=i(),a=yield e(n);return r(),t.reportFrameProcessed(),a}))}function a(e){return e.videoFrameBuffer=e.videoFrameBuffer||e.data,delete e.data,e}function l(){return Ne(ve),Lo.isSupported()}function c(e){yn(o(fa,s.VideoEffectsEx_NotifyVideoFrameProcessed),\"video.videoFrameProcessed\",[e])}function d(e,t=n.Warn){yn(o(fa,s.VideoEffectsEx_NotifyError),\"video.notifyError\",[e,t])}!function(e){e.Fatal=\"fatal\",e.Warn=\"warn\"}(n=e.ErrorLevel||(e.ErrorLevel={})),e.registerForVideoFrame=function(e){var n,u;if(!l())throw G;if(!e.videoFrameHandler||!e.videoBufferHandler)throw new Error(\"Both videoFrameHandler and videoBufferHandler must be provided\");if(Ne(ve,L.sidePanel)){if(Ut(o(fa,s.VideoEffectsEx_RegisterSetFrameProcessTimeLimitHandler),\"video.setFrameProcessTimeLimit\",(e=>null==t?void 0:t.setFrameProcessTimeLimit(e)),!1),null===(n=ve.supports.video)||void 0===n?void 0:n.mediaStream)Ut(o(fa,s.VideoEffectsEx_RegisterStartVideoExtensibilityVideoStreamHandler),\"video.startVideoExtensibilityVideoStream\",(n=>ua(this,void 0,void 0,(function*(){const{streamId:i,metadataInTexture:o}=n,a=t?r(e.videoFrameHandler,t):e.videoFrameHandler;o?yield So(i,a,d,t):yield wo(i,a,d,t)}))),!1),yn(o(fa,s.VideoEffectsEx_MediaStream_RegisterForVideoFrame),\"video.mediaStream.registerForVideoFrame\",[e.config]);else{if(!(null===(u=ve.supports.video)||void 0===u?void 0:u.sharedFrame))throw G;Ut(o(fa,s.VideoEffectsEx_RegisterNewVideoFrameHandler),\"video.newVideoFrame\",(n=>{if(n){null==t||t.reportStartFrameProcessing(n.width,n.height);const o=i(),r=n.timestamp;e.videoBufferHandler(a(n),(()=>{o(),null==t||t.reportFrameProcessed(),c(r)}),d)}}),!1),yn(o(fa,s.VideoEffectsEx_RegisterForVideoFrame),\"video.registerForVideoFrame\",[e.config])}null==t||t.startMonitorSlowFrameProcessing()}},e.notifySelectedVideoEffectChanged=function(e,t,n){if(Ne(ve,L.sidePanel),!l())throw G;yn(o(fa,s.VideoEffectsEx_NotifySelectedVideoEffectChanged),\"video.videoEffectChanged\",[e,t,n])},e.registerForVideoEffect=function(e){if(Ne(ve,L.sidePanel),!l())throw G;Ut(o(fa,s.VideoEffectsEx_RegisterEffectParameterChangeHandler),\"video.effectParameterChange\",Fo(e,t),!1),yn(o(fa,s.VideoEffectsEx_RegisterForVideoEffect),\"video.registerForVideoEffect\")},e.updatePersonalizedEffects=function(e){if(Ne(ve,L.sidePanel),!Lo.isSupported())throw G;yn(o(fa,s.VideoEffectsEx_UpdatePersonalizedEffects),\"video.personalizedEffectsChanged\",[e])},e.isSupported=l,e.notifyFatalError=function(e){if(Ne(ve),!Lo.isSupported())throw G;d(e,n.Fatal)}}(pa||(pa={}))})(),i})()));\n//# sourceMappingURL=MicrosoftTeams.min.js.map","import { Link, Room, toBinaryStr } from \"shared\";\nimport { QUERY_PARAMS, ROUTES } from \"../config\";\n\nexport function getJoinWorkspaceUrl(link: Link, name?: string) {\n\treturn `${window.location.origin}${ROUTES.joinWorkspace(link.code)}${\n\t\tname != null ? `/${encodeURIComponent(btoa(toBinaryStr(name)))}` : \"\"\n\t}`;\n}\n\nexport function getJoinRoomUrl(link: Link) {\n\treturn `${window.location.origin}${ROUTES.joinRoom(link.code)}`;\n}\n\nexport function getRoomUrl(room: Room) {\n\treturn `${window.location.origin}${ROUTES.room(room.id)}`;\n}\n\nexport function getRoomEmbedCode(link: Link) {\n\tconst src = `${getJoinRoomUrl(link)}?${QUERY_PARAMS.embed}&${QUERY_PARAMS.continue}`;\n\treturn ``;\n}\n\n/**\n * Text is an email if follows the for .+@.+\n * @param text\n */\nexport function isTextEmail(text: string) {\n\treturn /.+@.+/.test(text);\n}\n","import {\n\tAdaptiveCardDialogInfo,\n\tapp,\n\tauthentication,\n\tcalendar,\n\tdialog,\n\tpages,\n\tpeople,\n\tprofile,\n\tShareDeepLinkParameters,\n\tsharing\n} from \"@microsoft/teams-js\";\nimport { ColorMode, Link, Room } from \"shared\";\nimport { MS_TEAMS_ENTITY_IDS, TEAMS_APP_ID } from \"../config\";\nimport { getJoinRoomUrl } from \"../util/share-util\";\n\nexport class TeamsService {\n\t/**\n\t * Returns true if the app is initialized.\n\t */\n\tisInitialized() {\n\t\treturn app.isInitialized();\n\t}\n\n\t/**\n\t * Returns auth token.\n\t */\n\tasync getAuthToken(options?: authentication.AuthTokenRequestParameters): Promise {\n\t\treturn await authentication.getAuthToken(options);\n\t}\n\n\t/**\n\t * Initializes the library.\n\t */\n\tasync initialize(validMessageOrigins?: string[]): Promise {\n\t\ttry {\n\t\t\tawait app.initialize(validMessageOrigins);\n\t\t\treturn true;\n\t\t} catch (err) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tgetContext() {\n\t\treturn app.getContext();\n\t}\n\n\t/**\n\t * Notifies the frame that app has loaded and to hide the loading indicator if one is shown.\n\t * If error is provided, it notifies the frame that app initialization has failed and to show an error page in its place.\n\t */\n\tnotifyAppLoaded(success: boolean) {\n\t\tapp.notifyAppLoaded();\n\n\t\tif (success) {\n\t\t\tapp.notifySuccess();\n\t\t} else {\n\t\t\tapp.notifyFailure({\n\t\t\t\treason: app.FailedReason.Other\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Registers a handler for theme changes.\n\t * @param cb: The handler to invoke when the user changes their theme.\n\t */\n\tregisterOnThemeChangeHandler(cb: (colorMode: ColorMode) => void) {\n\t\tapp.registerOnThemeChangeHandler((theme) => cb(this.msThemeToColorMode(theme)));\n\t}\n\n\t/**\n\t * Converts the MS theme to a color mode.\n\t * @param theme\n\t */\n\tmsThemeToColorMode(theme: string): ColorMode {\n\t\treturn theme == \"dark\" ? \"dark\" : theme === \"contrast\" ? \"contrast\" : \"light\";\n\t}\n\n\t/**\n\t * Opens the people selector.\n\t */\n\topenSelectPeople(data: people.PeoplePickerInputs) {\n\t\treturn people.selectPeople(data);\n\t}\n\n\t/**\n\t * Shares some web content.\n\t * @param content\n\t */\n\tshareWebContent(content: sharing.IShareRequest) {\n\t\treturn sharing.shareWebContent(content);\n\t}\n\n\t/**\n\t * Generates a link to a room.\n\t * @param room\n\t * @param link\n\t */\n\tgenerateRoomDeeplink(room: Room, link: Link) {\n\t\treturn teamsService.generateDeepLink(getJoinRoomUrl(link), {\n\t\t\tentityLabel: room.challenge?.question ?? \"Brainstorm\",\n\t\t\tcontext: {\n\t\t\t\tsubEntityId: link.code\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Generates a deeplink link\n\t * https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/build-and-test/deep-link-application?tabs=teamsjs-v2#generate-a-deep-link-to-your-tab\n\t * @example https://teams.microsoft.com/l/entity/fe4a8eba-2a31-4737-8e33-e5fae6fee194/tasklist123?webUrl=https://tasklist.example.com/123/456&label=Task 456&context={\"subEntityId\": \"task456\"}\n\t * @param url\n\t * @param options\n\t */\n\tgenerateDeepLink(\n\t\turl: string,\n\t\t{\n\t\t\tentityId,\n\t\t\tentityLabel,\n\t\t\tappId,\n\t\t\tcontext\n\t\t}: {\n\t\t\tappId?: string;\n\t\t\tentityLabel?: string;\n\t\t\tcontext?: { subEntityId?: string; channelId?: string; chatId?: string; contextType?: string };\n\t\t\tentityId?: string;\n\t\t} = {}\n\t) {\n\t\tappId = appId ?? TEAMS_APP_ID;\n\t\tentityId = encodeURIComponent(entityId ?? MS_TEAMS_ENTITY_IDS.home);\n\t\tentityLabel = encodeURIComponent(entityLabel ?? \"Ideamap\");\n\t\turl = encodeURIComponent(url);\n\t\treturn `https://teams.microsoft.com/l/entity/${appId}/${entityId}?webUrl=${url}&label=${entityLabel}${\n\t\t\tObject.entries(context ?? {}).length > 0 ? `&context=${encodeURIComponent(JSON.stringify(context))}` : \"\"\n\t\t}`;\n\t}\n\n\tregisterTabConfigSaveHandler(handler: (e: pages.config.SaveEvent) => void) {\n\t\tpages.config.registerOnSaveHandler(handler);\n\t}\n\n\tsetTabConfig(config: pages.InstanceConfig) {\n\t\treturn pages.config.setConfig(config);\n\t}\n\n\tsetTabConfigValidity(validity: boolean) {\n\t\tpages.config.setValidityState(validity);\n\t}\n\n\tasync authenticate({ url, width = 600, height = 500 }: { url: string; width?: number; height?: number }) {\n\t\t// https://learn.microsoft.com/en-us/microsoftteams/platform/tabs/how-to/authentication/auth-tab-aad?tabs=teamsjs-v2\n\t\treturn authentication.authenticate({ url, width, height });\n\t}\n\n\tregisterBackButtonHandler(cb: () => boolean) {\n\t\tpages.backStack.registerBackButtonHandler(cb);\n\t}\n\n\topenAdaptiveCard(options: AdaptiveCardDialogInfo, submitHandler?: dialog.DialogSubmitHandler) {\n\t\tdialog.adaptiveCard.open(options, submitHandler);\n\t}\n\n\t/**\n\t * Opens a link.\n\t * @param deeplink\n\t */\n\topenLink(deeplink: string) {\n\t\tapp.openLink(deeplink);\n\t}\n\n\t/**\n\t * Shows the profile of a user.\n\t * @param data\n\t */\n\tshowProfile(data: profile.ShowProfileRequest) {\n\t\treturn profile.showProfile(data);\n\t}\n\n\t/**\n\t * Opens the calendar composer.\n\t * @param options\n\t */\n\topenCalendar(options: calendar.ComposeMeetingParams) {\n\t\treturn calendar.composeMeeting(options);\n\t}\n\n\t/**\n\t * Shares a deeplink.\n\t * https://learn.microsoft.com/en-us/javascript/api/@microsoft/teams-js/pages?view=msteams-client-js-latest#@microsoft-teams-js-pages-sharedeeplink\n\t */\n\tshareDeepLink(options: ShareDeepLinkParameters) {\n\t\tpages.shareDeepLink(options);\n\t}\n\n\tisSelectPeopleSupported() {\n\t\treturn people.isSupported();\n\t}\n\n\tisCalendarSupported() {\n\t\treturn calendar.isSupported();\n\t}\n\n\tisSharingSupported() {\n\t\treturn sharing.isSupported();\n\t}\n\n\tisDialogSupported() {\n\t\treturn dialog.isSupported();\n\t}\n\n\tisAdaptiveCardSupported() {\n\t\treturn dialog.adaptiveCard.isSupported();\n\t}\n\n\t/*testOpenTask() {\n\t\tconst taskInfo = {\n\t\t\ttitle: \"Task Module Demo\",\n\t\t\theight: \"medium\",\n\t\t\twidth: \"medium\",\n\t\t\tcard: {\n\t\t\t\ttype: \"AdaptiveCard\",\n\t\t\t\t$schema: \"http://adaptivecards.io/schemas/adaptive-card.json\",\n\t\t\t\tversion: \"1.4\",\n\t\t\t\tbody: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"TextBlock\",\n\t\t\t\t\t\ttext: \"This is sample adaptive card.\",\n\t\t\t\t\t\twrap: true\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"TextBlock\",\n\t\t\t\t\t\ttext: \"Here is a ninja cat\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"Image\",\n\t\t\t\t\t\turl: \"http://adaptivecards.io/content/cats/1.png\"\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tfallbackUrl: null,\n\t\t\tcompletionBotId: null\n\t\t};\n\n\t\ttasks.startTask(taskInfo, (err, result) => {\n\t\t\talert(JSON.stringify(result));\n\t\t});\n\t}*/\n}\n\nexport const teamsService = new TeamsService();\n","import { ActionSubjectCached, runAction } from \"../action\";\nimport { teamsService } from \"../../services/teams-service\";\nimport { app, authentication } from \"@microsoft/teams-js\";\n\nexport const teamsAction = {\n\tinitialize: new ActionSubjectCached(),\n\tgetAuthToken: new ActionSubjectCached(),\n\tsetContext: new ActionSubjectCached()\n};\n\nexport const initializeTeams = (validMessageOrigins?: string[]) =>\n\trunAction(teamsAction.initialize, () => teamsService.initialize(validMessageOrigins));\nexport const getTeamsAuthToken = (options?: authentication.AuthTokenRequestParameters) =>\n\trunAction(teamsAction.getAuthToken, () => teamsService.getAuthToken(options));\nexport const setTeamsContext = (context: app.Context | undefined) => runAction(teamsAction.setContext, () => context);\n","import { BehaviorSubject } from \"rxjs\";\nimport { GlobalStore, subSuccessActionValue } from \"../store\";\nimport { teamsAction } from \"./teams-action\";\nimport { loading$, success$ } from \"../action\";\n\nexport class TeamsStore extends GlobalStore {\n\t// Cache the initialized value to easily check if the app is running in Teams\n\tprivate _initialized = false;\n\tget initialized() {\n\t\treturn this._initialized;\n\t}\n\n\tmodel$ = {\n\t\tinitialized: new BehaviorSubject(false),\n\t\tcontext: success$(teamsAction.setContext),\n\t\tauthToken: new BehaviorSubject(undefined),\n\t\tauthTokenLoading: loading$(teamsAction.getAuthToken)\n\t};\n\n\tprotected subscriptions() {\n\t\treturn [\n\t\t\tsubSuccessActionValue(teamsAction.initialize, (success) => {\n\t\t\t\tthis._initialized = success;\n\t\t\t\tthis.model$.initialized.next(success);\n\t\t\t}),\n\t\t\tsubSuccessActionValue(teamsAction.getAuthToken, (token) => {\n\t\t\t\tthis.model$.authToken.next(token);\n\t\t\t})\n\t\t];\n\t}\n}\n\nexport const teamsStore = new TeamsStore();\n","import { ActionSubject } from \"../action\";\nimport { AuthCredentials, Session, User } from \"shared\";\n\nexport const sessionAction = {\n\toauth: new ActionSubject<{ credentials: AuthCredentials; data?: Partial }>(),\n\tsignup: new ActionSubject(),\n\tlogin: new ActionSubject(),\n\tlogout: new ActionSubject(),\n\tsetCredentials: new ActionSubject(),\n\trefreshSessionUser: new ActionSubject()\n};","import { BehaviorSubject, defaultIfEmpty, firstValueFrom, Observable, take } from \"rxjs\";\n\nexport async function takeFirst(observable: BehaviorSubject): Promise;\nexport async function takeFirst(observable: Observable | BehaviorSubject): Promise;\nexport async function takeFirst(observable: Observable | BehaviorSubject): Promise {\n\tif (observable instanceof BehaviorSubject) return observable.value;\n\n\t// return await firstValueFrom(observable.pipe(startWith(undefined), take(1)));\n\tconst result = await firstValueFrom(observable.pipe(/*startWith(null),*/ defaultIfEmpty(null), take(1)));\n\treturn result === null ? undefined : result;\n}\n","import { Id, isId, isModel, Model, Ref, takeId } from \"shared\";\nimport {\n\tBehaviorSubject,\n\tcombineLatest,\n\tdistinctUntilChanged,\n\tObservable,\n\tReplaySubject,\n\tshareReplay,\n\tSubject,\n\tswitchMap\n} from \"rxjs\";\nimport { takeFirst } from \"../../util/observable-util\";\n\nexport class ModelStore {\n\tmodelMap = new Map>();\n\n\tprivate iterateNestedObjectsAndArrays(\n\t\tobj: any,\n\t\tcallbacks: { transformModel?: (model: Model) => any },\n\t\tseenRefs = new Set()\n\t): any {\n\t\tif (typeof obj === \"object\" && seenRefs.has(obj)) return;\n\t\tseenRefs.add(obj);\n\n\t\tif (obj instanceof Array) {\n\t\t\tobj = obj.map((item) => this.iterateNestedObjectsAndArrays(item, callbacks, seenRefs));\n\t\t} else if (obj instanceof Object && !(obj instanceof Date)) {\n\t\t\tconst newObject = {};\n\n\t\t\tfor (const [key, value] of Object.entries(obj)) {\n\t\t\t\t(newObject as any)[key] = this.iterateNestedObjectsAndArrays(value, callbacks, seenRefs);\n\t\t\t}\n\n\t\t\tobj = newObject;\n\t\t}\n\n\t\tif (isModel(obj) && callbacks.transformModel != null) {\n\t\t\treturn callbacks?.transformModel(obj);\n\t\t}\n\n\t\treturn obj;\n\t}\n\n\tprivate nextModel(model: TModel) {\n\t\tconst existing$ = this.modelMap.get(model.id);\n\n\t\tif (existing$ != null) {\n\t\t\tconst existingModel = existing$ instanceof BehaviorSubject ? existing$.value : undefined;\n\t\t\tconst didChange = existingModel == null || JSON.stringify(existingModel) !== JSON.stringify(model);\n\t\t\tif (!didChange) return;\n\t\t\t// console.log(\"nextModel\", model);\n\t\t\t// console.trace();\n\t\t\tconst nextModel = existingModel != null ? mergeNested(existingModel, model) : model;\n\t\t\tthis.modelMap.get(model.id)!.next(nextModel);\n\t\t\treturn nextModel;\n\t\t} else {\n\t\t\tthis.modelMap.set(model.id, new BehaviorSubject(model));\n\t\t\treturn model;\n\t\t}\n\t}\n\n\tasync print() {\n\t\t// use \"console.table\" to print the modelMap\n\n\t\tconst ids = Array.from(this.modelMap.keys());\n\t\tconst list = await takeFirst(this.list$(ids));\n\n\t\tconsole.table(list);\n\t\t// console.table(list.map((model) => ({ id: model.id, model: JSON.stringify(model) })));\n\t}\n\n\tabsorb(model: T[]): T[];\n\tabsorb(model: T): T;\n\tabsorb(model: T): T | T[] {\n\t\tconst idMap = new Map();\n\n\t\tconst result = this.iterateNestedObjectsAndArrays(model, {\n\t\t\ttransformModel: (obj) => {\n\t\t\t\tconst id = takeId(obj);\n\t\t\t\tif (id != null) {\n\t\t\t\t\tidMap.set(id, obj);\n\t\t\t\t\tthis.nextModel(obj);\n\t\t\t\t}\n\t\t\t\treturn id;\n\t\t\t}\n\t\t});\n\n\t\tif (Array.isArray(result) && result.length > 0 && isId(result[0])) {\n\t\t\treturn result.map((id) => idMap.get(id) ?? id);\n\t\t} else if (isId(result)) {\n\t\t\treturn idMap.get(result) ?? result;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tget$(\n\t\tmodel: Ref> | Observable>>\n\t): Observable {\n\t\tif (model instanceof Observable) {\n\t\t\treturn model.pipe(\n\t\t\t\t// debounceTime(10),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\tswitchMap((model) => this.get$(model)),\n\t\t\t\tshareReplay(1)\n\t\t\t);\n\t\t} else {\n\t\t\tconst id = takeId(model);\n\n\t\t\tif (id == null) return new BehaviorSubject(id);\n\n\t\t\tif (this.modelMap.has(id)) {\n\t\t\t\treturn this.modelMap.get(id)! as unknown as Observable;\n\t\t\t} else {\n\t\t\t\tconst subject = new ReplaySubject(1);\n\t\t\t\tthis.modelMap.set(id, subject);\n\t\t\t\treturn subject as unknown as Observable;\n\t\t\t}\n\t\t}\n\t}\n\n\tlist$(model: Ref[] | Observable[]>): Observable {\n\t\tif (model instanceof Observable) {\n\t\t\treturn model.pipe(\n\t\t\t\t// debounceTime(10),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\tswitchMap((model) => this.list$(model)),\n\t\t\t\tshareReplay(1)\n\t\t\t);\n\t\t} else {\n\t\t\tconst modelObservables = model.map((ref) => this.get$(ref));\n\t\t\tif (modelObservables.length === 0) return new BehaviorSubject([]);\n\t\t\treturn combineLatest(modelObservables).pipe(\n\t\t\t\t// debounceTime(10),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\tshareReplay(1)\n\t\t\t);\n\t\t}\n\t}\n\n\tasync mutate(model: Ref, mutate: (model: TModel) => TModel) {\n\t\tconst id = takeId(model);\n\t\tif (id == null) return;\n\n\t\tconst existing$ = this.modelMap.get(id);\n\t\tif (existing$ == null) return;\n\n\t\tconst existingModel = existing$ instanceof BehaviorSubject ? existing$.value : await takeFirst(existing$);\n\t\tif (existingModel == null) return;\n\n\t\tconst newModel = mutate(existingModel);\n\n\t\treturn this.nextModel(newModel);\n\t}\n\n\tasync get(model: Ref): Promise {\n\t\treturn await takeFirst(this.get$(model));\n\t}\n\n\tgetInstant(model: Ref | undefined): TModel | null | undefined {\n\t\tif (model == null) return undefined;\n\n\t\tconst obs$ = this.modelMap.get(takeId(model));\n\n\t\tif (obs$ == null) return undefined;\n\n\t\treturn obs$ instanceof BehaviorSubject ? obs$.value : null;\n\t}\n}\n\nfunction mergeNested(obj: T, patch: Partial): T {\n\tconst result = {} as T;\n\n\tfor (const [key, value] of Object.entries(patch)) {\n\t\tif (Array.isArray(value)) {\n\t\t\t(result as any)[key] = value;\n\t\t} else if (value instanceof Object && !(value instanceof Date)) {\n\t\t\t(result as any)[key] = mergeNested((result as any)[key], value);\n\t\t} else {\n\t\t\t(result as any)[key] = value;\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport const modelStore = new ModelStore();\n","import { Action, ActionObservable, isAction } from \"../action\";\nimport { cmpIds, Id, Model, Ref, takeId } from \"shared\";\nimport {\n\tBehaviorSubject,\n\tdistinctUntilChanged,\n\tfilter,\n\tmap,\n\tmerge,\n\tObservable,\n\tscan,\n\tshareReplay,\n\tstartWith,\n\ttap\n} from \"rxjs\";\nimport { modelStore } from \"./model-store\";\n\nexport type ModelListInputNextKind = \"next\" | \"prepend\" | \"append\" | \"remove\" | \"clear\";\n\nexport type ModelListInputAction =\n\t| ActionObservable\n\t| ActionObservable\n\t| ActionObservable>[], TMeta>\n\t| ActionObservable>, TMeta>\n\t| ActionObservable>[], TMeta>\n\t| ActionObservable>, TMeta>\n\t| Observable\n\t| Observable\n\t| Observable>[]>\n\t| Observable> | null>\n\t| Observable>[]>\n\t| Observable>>;\n\nexport type ModelListInput =\n\t| [ModelListInputAction, ModelListInputNextKind]\n\t| [ModelListInputAction, \"clear\"];\n\nexport interface SubscriberOptions {\n\tmeta?: Observable | TMeta;\n}\n\n// export function model$(\n// \tinputs: ModelListInputAction[],\n// \tmeta?: Observable\n// ): Observable;\n// export function model$(\n// \tinputs: ModelListInputAction[],\n// \tmeta?: Observable\n// ): Observable>;\n// export function model$(\n// \tinputs: ModelListInputAction[],\n// \tmeta?: Observable\n// ): Observable;\n// export function model$(\n// \tinputs: ModelListInputAction[],\n// \tmeta?: Observable\n// ): Observable;\nexport function model$(\n\tinputs: ModelListInputAction[],\n\tmeta?: Observable\n): Observable {\n\tconst id$ = merge(...inputs).pipe(\n\t\tfilter((action) => (isAction(action) ? action.kind === \"success\" : true)),\n\t\tmap((action) => {\n\t\t\tif (isAction(action)) {\n\t\t\t\tif (action.kind !== \"success\") throw new Error(\"Kind is not 'success'!\");\n\t\t\t\tif (action.value == null) return action.value;\n\t\t\t\treturn action.value instanceof Array ? action.value[0] : action.value;\n\t\t\t} else {\n\t\t\t\treturn action;\n\t\t\t}\n\t\t}),\n\t\tshareReplay(1)\n\t) as Observable> | null | undefined>;\n\n\treturn modelStore.get$(id$ as Observable>>);\n}\n\nexport function modelList$(\n\tinputs: ModelListInput[],\n\t// options?: SubscriberOptions\n\tmeta?: Observable | TMeta\n): Observable {\n\tlet currentMeta: TMeta | undefined = undefined;\n\tconst ids$: Observable[]> = merge(\n\t\t...(meta instanceof Observable\n\t\t\t? [\n\t\t\t\t\tmeta.pipe(\n\t\t\t\t\t\tdistinctUntilChanged(),\n\t\t\t\t\t\ttap((meta: TMeta) => {\n\t\t\t\t\t\t\tcurrentMeta = meta;\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tfilter(() => false)\n\t\t\t\t\t) as Observable<{ action: Action>; next: ModelListInputNextKind }>\n\t\t\t\t]\n\t\t\t: []),\n\t\t...inputs.map((input) =>\n\t\t\t(input[0] as unknown as Observable>).pipe(\n\t\t\t\tmap((action: TModel | Action) => {\n\t\t\t\t\tconst next = input[1];\n\n\t\t\t\t\tif (isAction>(action)) {\n\t\t\t\t\t\treturn { action, next };\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\taction: {\n\t\t\t\t\t\t\t\tkind: \"success\",\n\t\t\t\t\t\t\t\tvalue: action\n\t\t\t\t\t\t\t} as Action>,\n\t\t\t\t\t\t\tnext\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t)\n\t\t)\n\t).pipe(\n\t\tfilter(({ action, next }) => {\n\t\t\treturn isAction(action)\n\t\t\t\t? action.kind === \"success\" &&\n\t\t\t\t\t\t(meta == null ||\n\t\t\t\t\t\t\taction.meta === undefined ||\n\t\t\t\t\t\t\taction.meta === currentMeta ||\n\t\t\t\t\t\t\tcmpIds(action.meta as any, currentMeta as any))\n\t\t\t\t: true;\n\t\t}),\n\t\tscan((acc, { action, next }) => {\n\t\t\tif (isAction(action) && action.kind !== \"success\") throw new Error(\"Action kind is not 'success'!\");\n\t\t\tconst models = action.value instanceof Array ? action.value : [action.value];\n\n\t\t\tswitch (next) {\n\t\t\t\tcase \"clear\":\n\t\t\t\t\treturn [];\n\t\t\t\tcase \"next\":\n\t\t\t\t\treturn uniqueIdList(models);\n\t\t\t\tcase \"prepend\":\n\t\t\t\t\treturn uniqueIdList([...models, ...acc]);\n\t\t\t\tcase \"append\":\n\t\t\t\t\treturn uniqueIdList([...acc, ...models]);\n\t\t\t\tcase \"remove\":\n\t\t\t\t\treturn acc.filter((model) => !models.some((m) => cmpIds(model, m)));\n\t\t\t\tdefault:\n\t\t\t\t\treturn uniqueIdList(acc);\n\t\t\t}\n\t\t}, [] as Ref[]),\n\t\tshareReplay(1)\n\t);\n\n\treturn modelStore.list$(ids$);\n}\n\nexport function latest$(obs: Observable | BehaviorSubject, dfault: T): Observable;\nexport function latest$(obs: Observable | BehaviorSubject, dfault?: T): Observable;\nexport function latest$(obs: Observable | BehaviorSubject, dfault?: T): Observable {\n\tif (obs instanceof BehaviorSubject) return obs.asObservable();\n\n\treturn obs.pipe(startWith(dfault ?? undefined), shareReplay(1));\n}\n\nexport function uniqueIdList(list$: Ref[]): Id[] {\n\treturn [...new Set(list$.map((model) => takeId(model)))];\n}\n\nexport function modelUniqueById$(model$: Observable): Observable {\n\treturn model$.pipe(distinctUntilChanged((a, b) => cmpIds(a, b)));\n}\n\n// export function modelListEntry(\n// \taction: ActionObservable, Ref | unknown>,\n// \tnext: ModelListInputNextKind\n// ): ModelListInput;\n// export function modelListEntry(\n// \taction: ActionObservable[], Ref | unknown>,\n// \tnext: ModelListInputNextKind\n// ): ModelListInput;\n// export function modelListEntry(\n// \taction: ModelListInput[\"action\"],\n// \tnext: ModelListInputNextKind\n// ): ModelListInput {\n// \treturn { action, next };\n// }\n","import { isId } from \"shared\";\n\nfunction transformData(\n\tdata: unknown,\n\ttransform: (data: unknown, key?: string, level?: number) => unknown | null,\n\tcurrentKey: string | undefined = undefined,\n\tlevel = 0\n): unknown {\n\tif (data == null) {\n\t\treturn data;\n\t} else if (Array.isArray(data)) {\n\t\treturn data.map((j) => transformData(j, transform, currentKey, level + 1));\n\t}\n\n\tconst transformedData = transform(data, currentKey, level);\n\tdata = transformedData || data;\n\n\tif (data != null && typeof data === \"object\" && !(data instanceof Date)) {\n\t\treturn Object.keys(data as any)\n\t\t\t.map((key) => [key, transformData((data as any)[key], transform, key, level + 1)])\n\t\t\t.reduce((acc, [key, val]) => {\n\t\t\t\tacc[key as any] = val;\n\t\t\t\treturn acc;\n\t\t\t}, {} as any);\n\t}\n\n\treturn data;\n}\n\nexport function hydrateGQLResult(result: any): T {\n\tif (result == null) return result;\n\n\tconst transformedResult = transformData(result, (dataToTransform, parent, level) => {\n\t\tif (typeof dataToTransform === \"object\" && dataToTransform != null && !(dataToTransform instanceof Date)) {\n\t\t\tconst newObj = { ...dataToTransform } as any;\n\n\t\t\tfor (const [key, value] of Object.entries(newObj)) {\n\t\t\t\tconst match = key.match(/_alias_(\\d+)_(.+)/);\n\t\t\t\tif (match != null) {\n\t\t\t\t\tdelete newObj[key];\n\t\t\t\t\tnewObj[match[2]] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (\"id\" in newObj && Object.keys(newObj).length === 1 && (level || 0) > 1) {\n\t\t\t\treturn (newObj as any).id;\n\t\t\t}\n\n\t\t\treturn newObj;\n\t\t}\n\n\t\t// Convert date string to Date\n\t\tif (typeof dataToTransform === \"string\" && dataToTransform.match(/^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z$/)) {\n\t\t\treturn new Date(dataToTransform);\n\t\t}\n\n\t\treturn null;\n\t});\n\n\treturn transformedResult as T;\n}\n\nexport function makeGQLQueryFromShapeAndArgs(\n\trootKey: string,\n\targs: object,\n\tresultShape: GQLShape | true,\n\t{ opName, isMutation }: { isMutation?: boolean; opName?: string } = {}\n): { query: string; variables: Record } {\n\tconst { query: gqlQueryShape, variables } =\n\t\tresultShape !== true\n\t\t\t? makeGQLQueryFromShape(resultShape, { level: 2 })\n\t\t\t: {\n\t\t\t\t\tquery: \"\",\n\t\t\t\t\tvariables: {}\n\t\t\t\t};\n\n\tconst varArgParts: string[] = [];\n\tconst shapeArgParts: string[] = [];\n\n\tfor (const key of Object.keys(variables)) {\n\t\tconst varType = \"Data\";\n\t\tconst varName = `$${key}`;\n\t\tvarArgParts.push(`${varName}: ${varType}`);\n\t}\n\n\tfor (const [key, value] of Object.entries(args)) {\n\t\tif (value == null) continue;\n\n\t\tif (typeof value === \"object\") {\n\t\t\tconst varName = `$${key}`;\n\t\t\tconst varType = (() => {\n\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\tif (isId(value[0])) return \"[ID!]\";\n\t\t\t\t\tif (typeof value[0] === \"number\") return \"[Int!]\";\n\t\t\t\t\tif (typeof value[0] === \"string\") return \"[String!]\";\n\t\t\t\t\tif (typeof value[0] === \"boolean\") return \"[Boolean!]\";\n\t\t\t\t}\n\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase \"options\":\n\t\t\t\t\t\treturn \"QueryOptions\";\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn \"Data\";\n\t\t\t\t}\n\t\t\t})();\n\n\t\t\tvariables[key] = value;\n\t\t\tvarArgParts.push(`${varName}: ${varType}`);\n\t\t\tshapeArgParts.push(`${key}: ${varName}`);\n\t\t} else {\n\t\t\tshapeArgParts.push(`${key}: ${JSON.stringify(value)}`);\n\t\t}\n\t}\n\tconst query = `${isMutation ? \"mutation\" : \"query\"}${opName != null ? ` ${opName}` : \"\"}${\n\t\tvarArgParts.length > 0 ? ` (${varArgParts.join(\", \")})` : \"\"\n\t} {\n ${rootKey}${shapeArgParts.length > 0 ? ` (${shapeArgParts.join(\", \")})` : \"\"} ${\n\t\tgqlQueryShape.length > 0\n\t\t\t? `{\n${gqlQueryShape}\n }`\n\t\t\t: \"\"\n }\n}`;\n\n\treturn { query, variables };\n}\n\nexport function makeGQLQueryFromShape(\n\tshape: GQLShape,\n\toptions: { level?: number; aliased?: boolean } = { level: 0, aliased: false }\n): { query: string; variables: Record } {\n\tconst variables: Record = {};\n\n\tconst buildShape = (s: GQLShape, opts: { level?: number; aliased?: boolean }): string => {\n\t\tif (typeof s === \"object\") {\n\t\t\tconst queryParts: string[] = [];\n\t\t\tconst indent = \" \".repeat(opts.level || 0);\n\n\t\t\t// Is union\n\t\t\tif ((s as any)[gqlUnionSymbol] === true) {\n\t\t\t\tfor (const [key, value] of Object.entries(s)) {\n\t\t\t\t\tqueryParts.push(\n\t\t\t\t\t\t`... on ${key} {\\n${buildShape(value!, {\n\t\t\t\t\t\t\t...opts,\n\t\t\t\t\t\t\tlevel: (opts.level || 0) + 1,\n\t\t\t\t\t\t\taliased: true\n\t\t\t\t\t\t})}\\n${indent}}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst entries = Object.entries(s);\n\t\t\t\tif (entries.length === 0) {\n\t\t\t\t\treturn \"\";\n\t\t\t\t}\n\n\t\t\t\tfor (const [key, value] of entries) {\n\t\t\t\t\tconst aliasKey = opts.aliased ? `_alias_${Math.round(Math.random() * 10000000)}_${key}: ${key}` : undefined;\n\n\t\t\t\t\tif (typeof value === \"object\") {\n\t\t\t\t\t\tlet namePart = aliasKey ?? key;\n\n\t\t\t\t\t\t// Support for functions\n\t\t\t\t\t\tif ((value as any)[gqlFunctionSymbol] != null) {\n\t\t\t\t\t\t\tconst args: string[] = [];\n\t\t\t\t\t\t\tfor (const [argKey, argValue] of Object.entries((value as any)[gqlFunctionSymbol])) {\n\t\t\t\t\t\t\t\tif (argValue === undefined) continue;\n\n\t\t\t\t\t\t\t\tif (typeof argValue === \"object\") {\n\t\t\t\t\t\t\t\t\tconst varName = `arg${Math.round(Math.random() * 1000000)}`;\n\t\t\t\t\t\t\t\t\tvariables[varName] = argValue;\n\t\t\t\t\t\t\t\t\targs.push(`${argKey}: $${varName}`);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\targs.push(`${argKey}: ${JSON.stringify(argValue)}`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (args.length > 0) {\n\t\t\t\t\t\t\t\tnamePart += `(${args.join(\", \")})`;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst resultPart = buildShape(value, {\n\t\t\t\t\t\t\t...opts,\n\t\t\t\t\t\t\tlevel: (opts.level || 0) + 1\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (resultPart.length === 0) {\n\t\t\t\t\t\t\tqueryParts.push(namePart);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tqueryParts.push(`${namePart} {\\n${resultPart}\\n${indent}}`);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (value) {\n\t\t\t\t\t\tqueryParts.push(aliasKey ?? key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn indent + queryParts.join(`,\\n${indent}`);\n\t\t} else {\n\t\t\treturn \"\";\n\t\t}\n\t};\n\n\treturn {\n\t\tquery: buildShape(shape, options),\n\t\tvariables\n\t};\n}\n\nexport type SimpleValue = string | number | bigint | boolean | symbol | RegExp | Date | null | undefined;\nexport type IgnoredLookupValue =\n\t| SimpleValue\n\t| CallableFunction\n\t| Set\n\t| WeakSet\n\t| Map\n\t| WeakMap;\n\nexport type NextDepth = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10][T];\n\nexport type GQLShape = TCurrentDepth extends 10\n\t? any\n\t: TModel extends IgnoredLookupValue\n\t\t? boolean\n\t\t: TModel extends (infer ArrayElement)[]\n\t\t\t? GQLShape>\n\t\t\t: TCurrentDepth extends 0\n\t\t\t\t? { [TKey in keyof TModel]?: GQLShape> }\n\t\t\t\t: { [TKey in keyof TModel]?: GQLShape> } | boolean;\n\n// GraphQL Union Helper\nconst gqlUnionSymbol = Symbol(\"GQL_UNION_SYMBOL\");\n\nexport type GQLUnion = Record;\n\nexport function makeGqlUnionShape(unionShape: GQLUnion): GQLUnion {\n\treturn {\n\t\t[gqlUnionSymbol]: true,\n\t\t...unionShape\n\t};\n}\n\n// GraphQL Function Helper\nconst gqlFunctionSymbol = Symbol(\"GQL_FUNCTION_SYMBOL\");\nexport function makeGqlFunctionShape | boolean>(\n\targs: Record,\n\tret: TShape\n): TShape {\n\tif (ret === false) {\n\t\t// No need for applying this shape\n\t\treturn false as TShape;\n\t}\n\n\tif (typeof ret === \"boolean\") {\n\t\t// It's not possible to add symbol to \"true/false\" primitive types, so disguise it in an object instead\n\t\treturn { [gqlFunctionSymbol]: args } as unknown as TShape;\n\t}\n\n\treturn { [gqlFunctionSymbol]: args, ...(ret as Object) } as unknown as TShape;\n}\n","import { cmpIds, getSessionUserIdCookieName, Id, User } from \"shared\";\nimport { ENVIRONMENT, STORAGE_KEYS } from \"../config\";\nimport { hydrateGQLResult } from \"../api/gql/gql-util\";\nimport { getItem } from \"./local-storage\";\n\nexport function getSessionUserIdCookieValue(): Id | undefined {\n\treturn readCookie>(getSessionUserIdCookieName(ENVIRONMENT));\n}\n\nexport function readCookie(name: string): T | undefined {\n\tconst signedCookie = document.cookie\n\t\t.split(\";\")\n\t\t.find((c) => c.trim().startsWith(name + \"=\"))\n\t\t?.split(\"=\")[1];\n\n\tif (signedCookie == null) {\n\t\treturn undefined;\n\t}\n\n\t// Example: s:018c2051-4c24-e9ff-5ba2-2c4dda516562.+z78GqwbU3J1AJkb3PiwFBQajnuRnAE9wpA6tEhBsOA\n\t// Don't verify signature (this is done server-side)\n\tconst [value] = decodeURIComponent(signedCookie).split(\".\");\n\n\t// Remove the \"s:\" prefix\n\treturn value.substring(2) as T;\n}\n\nexport function getInitialSessionState() {\n\tlet initialSessionUserId = getSessionUserIdCookieValue() ?? null;\n\tlet initialSessionUser = hydrateGQLResult(getItem(STORAGE_KEYS.sessionUser)) as User | null;\n\n\t// These lines are not backwards compatible with the old way of storing session user in localstorage\n\t// if (\n\t// \tinitialSessionUserId == null ||\n\t// \t(initialSessionUser != null && !cmpIds(initialSessionUserId, initialSessionUser))\n\t// ) {\n\t// \tinitialSessionUser = null;\n\t// }\n\n\t// These lines are backwards compatible with the old way of storing session user in localstorage\n\tif (initialSessionUserId != null && initialSessionUser != null && !cmpIds(initialSessionUserId, initialSessionUser)) {\n\t\t// If both session user id and session user are set, but they don't match, we will clear the session user\n\t\tinitialSessionUser = null;\n\t} else if (initialSessionUserId == null && initialSessionUser != null) {\n\t\t// If session user id is not set, but session user is set, we will set the session user id to the session user id\n\t\t// This is to make sure that the session user id is always set for backwards compatibility\n\t\tinitialSessionUserId = initialSessionUser.id;\n\t}\n\n\treturn { userId: initialSessionUserId, user: initialSessionUser };\n}\n","import { BehaviorSubject, map } from \"rxjs\";\nimport { takeId, User } from \"shared\";\nimport { GlobalStore, subSuccessActionValue } from \"../store\";\nimport { sessionAction } from \"./session-action\";\nimport { removeItem, setItem } from \"../../util/local-storage\";\nimport { STORAGE_KEYS } from \"../../config\";\nimport { model$ } from \"../model/model-list\";\nimport { modelStore } from \"../model/model-store\";\nimport { getInitialSessionState } from \"../../util/auth-util\";\n\nconst initialSessionState = getInitialSessionState();\n\n// Always absorb the initial cached session user from localstorage if there is one\nif (initialSessionState.user != null) {\n\tmodelStore.absorb(initialSessionState.user);\n}\n\nexport class SessionStore extends GlobalStore {\n\tprivate sessionUserId = new BehaviorSubject(initialSessionState.userId);\n\n\tprivate _latestSessionUser = initialSessionState.user;\n\tget sessionUser() {\n\t\treturn this._latestSessionUser;\n\t}\n\n\tmodel$ = {\n\t\tsessionUserId: this.sessionUserId,\n\t\thasSession: this.sessionUserId.pipe(map((id) => id != null)),\n\t\tsessionUser: model$([this.sessionUserId])\n\t};\n\n\tprotected subscriptions() {\n\t\treturn [\n\t\t\tmodel$([this.model$.sessionUser]).subscribe((user) => {\n\t\t\t\tif (user == null) {\n\t\t\t\t\tremoveItem(STORAGE_KEYS.sessionUser);\n\t\t\t\t} else {\n\t\t\t\t\tsetItem(STORAGE_KEYS.sessionUser, user);\n\t\t\t\t}\n\t\t\t\tthis._latestSessionUser = user;\n\n\t\t\t\tthis.sessionUserId.next(takeId(user));\n\t\t\t}),\n\t\t\tsubSuccessActionValue(sessionAction.signup, (session) => {\n\t\t\t\tthis.sessionUserId.next(takeId(session.user));\n\t\t\t}),\n\t\t\tsubSuccessActionValue(sessionAction.login, (session) => {\n\t\t\t\tthis.sessionUserId.next(takeId(session.user));\n\t\t\t}),\n\t\t\tsubSuccessActionValue(sessionAction.refreshSessionUser, (user) => {\n\t\t\t\tthis.sessionUserId.next(takeId(user));\n\t\t\t}),\n\t\t\tsubSuccessActionValue(sessionAction.logout, () => {\n\t\t\t\tthis.sessionUserId.next(null);\n\t\t\t})\n\t\t];\n\t}\n}\n\nexport const sessionStore = new SessionStore();\n","import { GlobalStore, subSuccessActionValue } from \"../store\";\nimport { appAction } from \"./app-action\";\nimport { success$ } from \"../action\";\nimport { BehaviorSubject, combineLatest, map, Observable } from \"rxjs\";\nimport { teamsStore } from \"../teams/teams-store\";\nimport { sessionStore } from \"../session/session-store\";\n\nexport type AppContext = \"teams\" | \"pwa\" | \"webapp\" | \"landing\";\n\nexport class AppStore extends GlobalStore {\n\tprivate _isMobile = false;\n\tget isMobile() {\n\t\treturn this._isMobile;\n\t}\n\n\tprivate _isPwa = false;\n\tget isPwa() {\n\t\treturn this._isPwa;\n\t}\n\n\tprivate _isSandbox = false;\n\tget isSandbox() {\n\t\treturn this._isSandbox;\n\t}\n\n\tprivate isMobile$ = new BehaviorSubject(false);\n\tprivate isPwa$ = new BehaviorSubject(false);\n\n\tmodel$ = {\n\t\tisMobile: this.isMobile$,\n\t\tisPwa: this.isPwa$,\n\t\tisSandbox: new BehaviorSubject(false),\n\n\t\tisMenuOpen: success$(appAction.setIsMenuOpen),\n\n\t\t/**\n\t\t * Upselling is not allowed on mobile on Microsoft Teams.\n\t\t * https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/appsource/prepare/teams-store-validation-guidelines?referrer=developerportal#security\n\t\t */\n\t\tisUpsellingAllowed: combineLatest([teamsStore.model$.initialized, this.isMobile$]).pipe(\n\t\t\tmap(([initialized, isMobile]) => !(initialized && isMobile))\n\t\t),\n\n\t\t/**\n\t\t * Combine is teams and pwa to get app context\n\t\t */\n\t\tappContext: combineLatest([teamsStore.model$.initialized, this.isPwa$, sessionStore.model$.hasSession]).pipe(\n\t\t\tmap(\n\t\t\t\t([isTeamsInitialized, isPwa, hasSession]) =>\n\t\t\t\t\t`${isTeamsInitialized ? \"teams\" : hasSession ? \"webapp\" : isPwa ? \"pwa\" : \"landing\"}` as AppContext\n\t\t\t)\n\t\t) as Observable\n\t};\n\n\tprotected subscriptions() {\n\t\treturn [\n\t\t\tsubSuccessActionValue(appAction.setIsMobile, (val) => {\n\t\t\t\tthis._isMobile = val;\n\t\t\t\tthis.isMobile$.next(val);\n\t\t\t}),\n\t\t\tsubSuccessActionValue(appAction.setIsPwa, (val) => {\n\t\t\t\tthis._isPwa = val;\n\t\t\t\tthis.isPwa$.next(val);\n\t\t\t}),\n\t\t\tsubSuccessActionValue(appAction.setIsSandbox, (val) => {\n\t\t\t\tthis._isSandbox = val;\n\t\t\t\tthis.model$.isSandbox.next(val);\n\t\t\t})\n\t\t];\n\t}\n}\n\n// TODO: Global state doesn't work properly right now\nexport const appStore = new AppStore();\n","import { QUERY_PARAMS, ROUTE_CHANGED_EVENT, UTM_MEDIUM_PWA } from \"../config\";\nimport { appStore } from \"../state/app/app-store\";\n\n/**\n * Extracts the ID from the /:id route\n * @param path\n */\nexport function getJoinRoomAccessCode(path: string): string | undefined {\n\treturn new RegExp(`^\\/room\\/([0-9a-z]+)$`, \"i\").exec(path)?.[1];\n}\n\nexport function setHash(id: string, { silent }: { silent?: boolean } = {}) {\n\tif (silent) {\n\t\tpushState(`${location.pathname}#${id}`, { silent: true });\n\t} else {\n\t\tlocation.hash = id;\n\t}\n}\n\n/**\n * Either pushed or replaces the current state.\n * @param path\n * @param replace\n * @param silent\n */\nexport function pushState(path: string, { replace, silent }: { replace?: boolean; silent?: boolean } = {}) {\n\t// console.log(\"pushState\", path, { replace, silent });\n\t// console.trace();\n\tconst prevHref = location.href;\n\tif (replace) {\n\t\thistory.replaceState(null, \"\", path);\n\t} else {\n\t\thistory.pushState(null, \"\", path);\n\t}\n\n\tif (!silent && location.href !== prevHref) {\n\t\tdispatchRouteChangedEvent();\n\t}\n}\n\n/**\n * Dispatches a route changed event.\n */\nexport function dispatchRouteChangedEvent() {\n\twindow.dispatchEvent(new CustomEvent(ROUTE_CHANGED_EVENT));\n}\n\n/**\n * Listens for route changed events.\n * @param cb\n * @param options\n */\nexport function addRouteChangedListener(cb: () => void, options?: EventListenerOptions) {\n\twindow.addEventListener(ROUTE_CHANGED_EVENT, cb, options);\n}\n\n/**\n * Listens for hash changed events.\n * @param cb\n * @param options\n */\nexport function addHashChangedListener(cb: () => void, options?: EventListenerOptions) {\n\twindow.addEventListener(\"hashchange\", cb, options);\n}\n\n/**\n * Removes route changed event listener.\n * @param cb\n * @param options\n */\nexport function removeRouteChangedListener(cb: () => void, options?: EventListenerOptions) {\n\twindow.removeEventListener(ROUTE_CHANGED_EVENT, cb, options);\n}\n\n/**\n * Gets the query param from the URL.\n * @param name\n */\nexport function getQueryParam(name: string): string | null {\n\treturn new URLSearchParams(window.location.search).get(name);\n}\n\n/**\n * Reloads the app, preserving the correct path and query params.\n * @param path\n */\nexport function reloadApp(path?: string) {\n\tconst queryParams = new URLSearchParams(window.location.search);\n\tif (appStore.isSandbox) queryParams.set(QUERY_PARAMS.embed, \"\");\n\tif (appStore.isPwa) queryParams.set(QUERY_PARAMS.utmMedium, UTM_MEDIUM_PWA);\n\tlocation.href = `${path ?? location.pathname}${queryParams.size > 0 ? `?${queryParams.toString()}` : \"\"}`;\n}\n","import { PropertyValues, ReactiveController, ReactiveControllerHost } from \"lit\";\nimport { Observable, ReplaySubject, Subscription } from \"rxjs\";\nimport { Store, StoreModel } from \"./store\";\nimport { debounce, RemoveUndefined } from \"shared\";\n\nexport interface ControllerHost extends ReactiveControllerHost {\n\tcontrollerUpdated?: (props: PropertyValues>) => void;\n}\n\n// Key to (value: Value) => void\nexport type UpdateMap> = {\n\t[K in keyof U]?: (value: RemoveUndefined, previousValue?: U[K]) => void;\n};\n\nexport class Controller implements ReactiveController {\n\tprotected subs: Subscription[] = [];\n\tprotected host: ControllerHost;\n\n\t// A map for caching changes so we can update the controller with all the latest changes at once instead of one at a time\n\tprotected changes = new Map();\n\n\tconstructor(host: ControllerHost, public store: TStore, protected updateMap?: UpdateMap) {\n\t\t(this.host = host).addController(this);\n\t}\n\n\treadonly model: StoreModel = {} as any;\n\n\tprotected subscribe(): void {\n\t\tthis.store.addSubscription();\n\n\t\tthis.subs = [];\n\n\t\t// console.log(`${this.host.constructor.name}: sub`);\n\n\t\tfor (const [key, obs] of Object.entries(this.store.model$)) {\n\t\t\tif (!(obs instanceof Observable)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst previousValues = new Map();\n\n\t\t\tif (obs instanceof ReplaySubject) {\n\t\t\t\t(this.model as any)[key] = obs;\n\t\t\t\tpreviousValues.set(key, obs);\n\t\t\t}\n\n\t\t\tlet isSettingUp = true;\n\n\t\t\tthis.subs.push(\n\t\t\t\tobs.subscribe((value) => {\n\t\t\t\t\t(this.model as any)[key] = value;\n\n\t\t\t\t\tif (previousValues.has(key) && previousValues.get(key) === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.updateMap != null && !isSettingUp) {\n\t\t\t\t\t\tconst update = this.updateMap[key as keyof UpdateMap];\n\n\t\t\t\t\t\tif (update != null) {\n\t\t\t\t\t\t\tupdate(value, previousValues.get(key) as any);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.changes.set(key, value);\n\t\t\t\t\tpreviousValues.set(key, value);\n\n\t\t\t\t\tdebounce(\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\tthis.host.requestUpdate();\n\t\t\t\t\t\t\tthis.host.controllerUpdated?.(this.changes as any);\n\t\t\t\t\t\t\tthis.changes = new Map();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t20,\n\t\t\t\t\t\t{ forceMs: 20 }\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tisSettingUp = false;\n\t\t}\n\t}\n\n\tprotected unsubscribe() {\n\t\tthis.store.removeSubscription();\n\n\t\t// console.log(`${this.host.constructor.name}: unsub`);\n\n\t\tfor (const sub of this.subs) {\n\t\t\tsub.unsubscribe();\n\t\t}\n\n\t\tthis.subs = [];\n\t}\n\n\thostConnected() {\n\t\tthis.subscribe();\n\t}\n\n\thostDisconnected() {\n\t\tthis.unsubscribe();\n\t}\n}\n","import { ActionSubject, meta$, runAction, SuccessAction } from \"../action\";\nimport {\n\tActivityKind,\n\tAPIError,\n\tId,\n\tModelKind,\n\tModelMap,\n\tRef,\n\tRoom,\n\tWebSocketMessage,\n\tWebSocketMessageKindMap\n} from \"shared\";\nimport { filter, map, Observable, shareReplay } from \"rxjs\";\nimport { hydrateGQLResult } from \"../../api/gql/gql-util\";\nimport { modelStore } from \"../model/model-store\";\n\nexport const activityAction = {\n\tactivity: new ActionSubject(),\n\tcaughtError: new ActionSubject()\n};\n\nexport const caughtError = (error: Error | APIError) => runAction(activityAction.caughtError, () => error);\n\nexport const receiveActivity = (activity: WebSocketMessage) =>\n\trunAction(\n\t\tactivityAction.activity,\n\t\tasync () => {\n\t\t\treturn modelStore.absorb(hydrateGQLResult(activity));\n\t\t},\n\t\tactivity.roomId\n\t);\n\nexport function activity$<\n\tTKind extends ActivityKind,\n\tTActivity extends WebSocketMessageKindMap[TKind] = WebSocketMessageKindMap[TKind],\n\tTOut = TActivity,\n\tTMeta = Id | null\n>(\n\tactivityKind: TKind,\n\t{\n\t\tmap: mapCb,\n\t\tfilter: filterCb,\n\t\tmeta\n\t}: {\n\t\tmap?: (activity: TActivity) => TOut;\n\t\tfilter?: (activity: SuccessAction) => boolean;\n\t\tmeta?: Ref | Observable | null>;\n\t} = {}\n): Observable> {\n\treturn meta$(activityAction.activity, meta).pipe(\n\t\tfilter(\n\t\t\t(activity) =>\n\t\t\t\tactivity.kind === \"success\" &&\n\t\t\t\tactivity.value.kind === activityKind &&\n\t\t\t\t(filterCb == null || filterCb(activity as SuccessAction))\n\t\t),\n\t\tmap((activityAction) => {\n\t\t\tconst activity = (activityAction as SuccessAction).value;\n\t\t\tconst value = mapCb == null ? activity : mapCb(activity);\n\t\t\tconst meta = activity.roomId;\n\t\t\treturn { kind: \"success\", value, meta } as SuccessAction;\n\t\t}),\n\t\tshareReplay(1)\n\t);\n}\n\nexport function activityCreate$(\n\tmodelKind: TModelKind\n): Observable> {\n\treturn activity$(\"cud.create\").pipe(\n\t\tfilter((activity) => activity.value.modelKind === modelKind),\n\t\tmap((activity) => ({ kind: \"success\", meta: activity.meta, value: activity.value.model as unknown as TModel }))\n\t);\n}\n\nexport function activityUpdate$(\n\tmodelKind: TModelKind\n): Observable> {\n\treturn activity$(\"cud.update\").pipe(\n\t\tfilter((activity) => activity.value.modelKind === modelKind),\n\t\tmap((activity) => ({ kind: \"success\", meta: activity.meta, value: activity.value.model as unknown as TModel }))\n\t);\n}\n\nexport function activityRemove$<\n\tTModelKind extends ModelKind,\n\tTModel extends Id = Id\n>(modelKind: TModelKind): Observable> {\n\treturn activity$(\"cud.remove\").pipe(\n\t\tfilter((activity) => activity.value.modelKind === modelKind),\n\t\tmap((activity) => ({ kind: \"success\", meta: activity.meta, value: activity.value.modelId as unknown as TModel }))\n\t);\n}\n","/**\n * Traverses the slots of the open shadowroots and returns all children matching the query.\n * @param {ShadowRoot | HTMLElement} root\n * @param skipNode\n * @param isMatch\n * @param {number} maxDepth\n * @param {number} depth\n * @returns {HTMLElement[]}\n */\nexport function queryShadowRoot(root, skipNode, isMatch, maxDepth = 20, depth = 0) {\n let matches = [];\n // If the depth is above the max depth, abort the searching here.\n if (depth >= maxDepth) {\n return matches;\n }\n // Traverses a slot element\n const traverseSlot = ($slot) => {\n // Only check nodes that are of the type Node.ELEMENT_NODE\n // Read more here https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\n const assignedNodes = $slot.assignedNodes().filter(node => node.nodeType === 1);\n if (assignedNodes.length > 0) {\n return queryShadowRoot(assignedNodes[0].parentElement, skipNode, isMatch, maxDepth, depth + 1);\n }\n return [];\n };\n // Go through each child and continue the traversing if necessary\n // Even though the typing says that children can't be undefined, Edge 15 sometimes gives an undefined value.\n // Therefore we fallback to an empty array if it is undefined.\n const children = Array.from(root.children || []);\n for (const $child of children) {\n // Check if the node and its descendants should be skipped\n if (skipNode($child)) {\n continue;\n }\n // If the child matches we always add it\n if (isMatch($child)) {\n matches.push($child);\n }\n if ($child.shadowRoot != null) {\n matches.push(...queryShadowRoot($child.shadowRoot, skipNode, isMatch, maxDepth, depth + 1));\n }\n else if ($child.tagName === \"SLOT\") {\n matches.push(...traverseSlot($child));\n }\n else {\n matches.push(...queryShadowRoot($child, skipNode, isMatch, maxDepth, depth + 1));\n }\n }\n return matches;\n}\n//# sourceMappingURL=shadow.js.map","/**\n * Returns whether the element is hidden.\n * @param $elem\n */\nexport function isHidden($elem) {\n return $elem.hasAttribute(\"hidden\")\n || ($elem.hasAttribute(\"aria-hidden\") && $elem.getAttribute(\"aria-hidden\") !== \"false\")\n // A quick and dirty way to check whether the element is hidden.\n // For a more fine-grained check we could use \"window.getComputedStyle\" but we don't because of bad performance.\n // If the element has visibility set to \"hidden\" or \"collapse\", display set to \"none\" or opacity set to \"0\" through CSS\n // we won't be able to catch it here. We accept it due to the huge performance benefits.\n || $elem.style.display === `none`\n || $elem.style.opacity === `0`\n || $elem.style.visibility === `hidden`\n || $elem.style.visibility === `collapse`;\n // If offsetParent is null we can assume that the element is hidden\n // https://stackoverflow.com/questions/306305/what-would-make-offsetparent-null\n //|| $elem.offsetParent == null;\n}\n/**\n * Returns whether the element is disabled.\n * @param $elem\n */\nexport function isDisabled($elem) {\n return $elem.hasAttribute(\"disabled\")\n || ($elem.hasAttribute(\"aria-disabled\") && $elem.getAttribute(\"aria-disabled\") !== \"false\");\n}\n/**\n * Determines whether an element is focusable.\n * Read more here: https://stackoverflow.com/questions/1599660/which-html-elements-can-receive-focus/1600194#1600194\n * Or here: https://stackoverflow.com/questions/18261595/how-to-check-if-a-dom-element-is-focusable\n * @param $elem\n */\nexport function isFocusable($elem) {\n // Discard elements that are removed from the tab order.\n if ($elem.getAttribute(\"tabindex\") === \"-1\" || isHidden($elem) || isDisabled($elem)) {\n return false;\n }\n return (\n // At this point we know that the element can have focus (eg. won't be -1) if the tabindex attribute exists\n $elem.hasAttribute(\"tabindex\")\n // Anchor tags or area tags with a href set\n || ($elem instanceof HTMLAnchorElement || $elem instanceof HTMLAreaElement) && $elem.hasAttribute(\"href\")\n // Form elements which are not disabled\n || ($elem instanceof HTMLButtonElement\n || $elem instanceof HTMLInputElement\n || $elem instanceof HTMLTextAreaElement\n || $elem instanceof HTMLSelectElement)\n // IFrames\n || $elem instanceof HTMLIFrameElement);\n}\n//# sourceMappingURL=focusable.js.map","const timeouts = new Map();\n/**\n * Debounces a callback.\n * @param cb\n * @param ms\n * @param id\n */\nexport function debounce(cb, ms, id) {\n // Clear current timeout for id\n const timeout = timeouts.get(id);\n if (timeout != null) {\n window.clearTimeout(timeout);\n }\n // Set new timeout\n timeouts.set(id, window.setTimeout(() => {\n cb();\n timeouts.delete(id);\n }, ms));\n}\n//# sourceMappingURL=debounce.js.map","import { debounce } from \"./debounce\";\nimport { isFocusable, isHidden } from \"./focusable\";\nimport { queryShadowRoot } from \"./shadow\";\n/**\n * Template for the focus trap.\n */\nconst template = document.createElement(\"template\");\ntemplate.innerHTML = `\n\t
\n\t
\n\t\n\t
\n`;\n/**\n * Focus trap web component.\n * @customElement focus-trap\n * @slot - Default content.\n */\nexport class FocusTrap extends HTMLElement {\n /**\n * Attaches the shadow root.\n */\n constructor() {\n super();\n // The debounce id is used to distinguish this focus trap from others when debouncing\n this.debounceId = Math.random().toString();\n this._focused = false;\n const shadow = this.attachShadow({ mode: \"open\" });\n shadow.appendChild(template.content.cloneNode(true));\n this.$backup = shadow.querySelector(\"#backup\");\n this.$start = shadow.querySelector(\"#start\");\n this.$end = shadow.querySelector(\"#end\");\n this.focusLastElement = this.focusLastElement.bind(this);\n this.focusFirstElement = this.focusFirstElement.bind(this);\n this.onFocusIn = this.onFocusIn.bind(this);\n this.onFocusOut = this.onFocusOut.bind(this);\n }\n // Whenever one of these attributes changes we need to render the template again.\n static get observedAttributes() {\n return [\n \"inactive\"\n ];\n }\n /**\n * Determines whether the focus trap is active or not.\n * @attr\n */\n get inactive() {\n return this.hasAttribute(\"inactive\");\n }\n set inactive(value) {\n value ? this.setAttribute(\"inactive\", \"\") : this.removeAttribute(\"inactive\");\n }\n /**\n * Returns whether the element currently has focus.\n */\n get focused() {\n return this._focused;\n }\n /**\n * Hooks up the element.\n */\n connectedCallback() {\n this.$start.addEventListener(\"focus\", this.focusLastElement);\n this.$end.addEventListener(\"focus\", this.focusFirstElement);\n // Focus out is called every time the user tabs around inside the element\n this.addEventListener(\"focusin\", this.onFocusIn);\n this.addEventListener(\"focusout\", this.onFocusOut);\n this.render();\n }\n /**\n * Tears down the element.\n */\n disconnectedCallback() {\n this.$start.removeEventListener(\"focus\", this.focusLastElement);\n this.$end.removeEventListener(\"focus\", this.focusFirstElement);\n this.removeEventListener(\"focusin\", this.onFocusIn);\n this.removeEventListener(\"focusout\", this.onFocusOut);\n }\n /**\n * When the attributes changes we need to re-render the template.\n */\n attributeChangedCallback() {\n this.render();\n }\n /**\n * Focuses the first focusable element in the focus trap.\n */\n focusFirstElement() {\n this.trapFocus();\n }\n /**\n * Focuses the last focusable element in the focus trap.\n */\n focusLastElement() {\n this.trapFocus(true);\n }\n /**\n * Returns a list of the focusable children found within the element.\n */\n getFocusableElements() {\n return queryShadowRoot(this, isHidden, isFocusable);\n }\n /**\n * Focuses on either the last or first focusable element.\n * @param {boolean} trapToEnd\n */\n trapFocus(trapToEnd) {\n if (this.inactive)\n return;\n let focusableChildren = this.getFocusableElements();\n if (focusableChildren.length > 0) {\n if (trapToEnd) {\n focusableChildren[focusableChildren.length - 1].focus();\n }\n else {\n focusableChildren[0].focus();\n }\n this.$backup.setAttribute(\"tabindex\", \"-1\");\n }\n else {\n // If there are no focusable children we need to focus on the backup\n // to trap the focus. This is a useful behavior if the focus trap is\n // for example used in a dialog and we don't want the user to tab\n // outside the dialog even though there are no focusable children\n // in the dialog.\n this.$backup.setAttribute(\"tabindex\", \"0\");\n this.$backup.focus();\n }\n }\n /**\n * When the element gains focus this function is called.\n */\n onFocusIn() {\n this.updateFocused(true);\n }\n /**\n * When the element looses its focus this function is called.\n */\n onFocusOut() {\n this.updateFocused(false);\n }\n /**\n * Updates the focused property and updates the view.\n * The update is debounced because the focusin and focusout out\n * might fire multiple times in a row. We only want to render\n * the element once, therefore waiting until the focus is \"stable\".\n * @param value\n */\n updateFocused(value) {\n debounce(() => {\n if (this.focused !== value) {\n this._focused = value;\n this.render();\n }\n }, 0, this.debounceId);\n }\n /**\n * Updates the template.\n */\n render() {\n this.$start.setAttribute(\"tabindex\", !this.focused || this.inactive ? `-1` : `0`);\n this.$end.setAttribute(\"tabindex\", !this.focused || this.inactive ? `-1` : `0`);\n this.focused ? this.setAttribute(\"focused\", \"\") : this.removeAttribute(\"focused\");\n }\n}\nwindow.customElements.define(\"focus-trap\", FocusTrap);\n//# sourceMappingURL=focus-trap.js.map","/**\n * Returns the data dialog count for an element.\n * @param $elem\n */\nfunction getDialogCount($elem) {\n return Number($elem.getAttribute(`data-dialog-count`)) || 0;\n}\n/**\n * Sets the data dialog count for an element.\n * @param $elem\n * @param count\n */\nfunction setDialogCount($elem, count) {\n $elem.setAttribute(`data-dialog-count`, count.toString());\n}\n/**\n * Traverses the tree of active elements down the shadow tree.\n * @param activeElement\n */\nfunction traverseActiveElements(activeElement = document.activeElement) {\n if (activeElement != null && activeElement.shadowRoot != null && activeElement.shadowRoot.activeElement != null) {\n return traverseActiveElements(activeElement.shadowRoot.activeElement);\n }\n return activeElement;\n}\n\nexport { getDialogCount, setDialogCount, traverseActiveElements };\n","import '@a11y/focus-trap';\nimport { traverseActiveElements, setDialogCount, getDialogCount } from './util.js';\n\nvar styles = `*{box-sizing:border-box}:host{padding:var(--dialog-container-padding,5vw 24px);z-index:var(--dialog-z-index,12345678);outline:none}#backdrop,:host{position:fixed;top:0;left:0;bottom:0;right:0}:host,:host([center]) #dialog{overflow-x:var(--dialog-overflow-x,hidden);overflow-y:var(--dialog-overflow-y,auto);overscroll-behavior:contain;-webkit-overflow-scrolling:touch}:host([center]){display:flex;align-items:center;justify-content:center;overflow:hidden}:host([center]) #dialog{max-height:var(--dialog-max-height,100%)}:host(:not(:defined)),:host(:not([open])){display:none}#backdrop{background:var(--dialog-backdrop-bg,rgba(0,0,0,.6));animation:fadeIn var(--dialog-animation-duration,.1s) var(--dialog-animation-easing,ease-out);z-index:-1}#dialog{animation:scaleIn var(--dialog-animation-duration,.1s) var(--dialog-animation-easing,ease-out);border-radius:var(--dialog-border-radius,12px);box-shadow:var(--dialog-box-shadow,0 2px 10px -5px rgba(0,0,0,.6));max-width:var(--dialog-max-width,700px);width:var(--dialog-width,100%);padding:var(--dialog-padding,24px);max-height:var(--dialog-max-height,unset);height:var(--dialog-height,auto);color:var(--dialog-color,currentColor);background:var(--dialog-bg,#fff);z-index:1;position:relative;display:flex;flex-direction:column;margin:0 auto;border:none}::slotted(article),article{flex-grow:1;overflow-y:auto;-webkit-overflow-scrolling:touch}::slotted(footer),::slotted(header),footer,header{flex-shrink:0}@keyframes scaleIn{0%{transform:scale(.9) translateY(30px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}`;\n\nconst template = document.createElement(\"template\");\ntemplate.innerHTML = `\n \n
\n \n \n \n`;\n/**\n * A dialog web component that can be used to display highly interruptive messages.\n * @fires open - This event is fired when the dialog opens.\n * @fires close - This event is fired when the dialog closes.\n * @fires closing - This event is fired before the dialog is closed by clicking escape or on the backdrop. The event is cancellable which means `event.preventDefault()` can cancel the closing of the dialog.\n * @cssprop --dialog-container-padding - Padding of the host container of the dialog.\n * @cssprop --dialog-z-index - Z-index of the dialog.\n * @cssprop --dialog-overflow-x - Overflow of the x-axis.\n * @cssprop --dialog-overflow-y - Overflow of the y-axis.\n * @cssprop --dialog-max-height - Max height of the dialog.\n * @cssprop --dialog-height - Height of the dialog.\n * @cssprop --dialog-backdrop-bg - Background of the backdrop.\n * @cssprop --dialog-animation-duration - Duration of the dialog animation.\n * @cssprop --dialog-animation-easing - Easing of the dialog animation.\n * @cssprop --dialog-border-radius - Border radius of the dialog.\n * @cssprop --dialog-box-shadow - Box shadow of the dialog.\n * @cssprop --dialog-max-width - Max width of the dialog.\n * @cssprop --dialog-width - Width of the dialog.\n * @cssprop --dialog-padding - Padding of the dialog.\n * @cssprop --dialog-color - Color of the dialog.\n * @cssprop --dialog-bg - Background of the dialog.\n * @csspart backdrop - Backdrop part.\n * @csspart dialog - Dialog part.\n */\nclass WebDialog extends HTMLElement {\n /**\n * Attaches the shadow root.\n */\n constructor() {\n super();\n this.$scrollContainer = document.documentElement;\n this.$previousActiveElement = null;\n const shadow = this.attachShadow({ mode: \"open\" });\n shadow.appendChild(template.content.cloneNode(true));\n this.$dialog = shadow.querySelector(\"#dialog\");\n this.$backdrop = shadow.querySelector(\"#backdrop\");\n this.onBackdropClick = this.onBackdropClick.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n // Set aria attributes\n this.setAttribute(\"aria-modal\", \"true\");\n this.$dialog.setAttribute(\"role\", \"alertdialog\");\n }\n static get observedAttributes() {\n return [\"open\", \"center\"];\n }\n /**\n * Whether the dialog is opened.\n * @attr\n */\n get open() {\n return this.hasAttribute(\"open\");\n }\n set open(value) {\n value ? this.setAttribute(\"open\", \"\") : this.removeAttribute(\"open\");\n }\n /**\n * Whether the dialog is centered on the page.\n * @attr\n */\n get center() {\n return this.hasAttribute(\"center\");\n }\n set center(value) {\n value ? this.setAttribute(\"center\", \"\") : this.removeAttribute(\"center\");\n }\n /**\n * Attaches event listeners when connected.\n */\n connectedCallback() {\n this.$backdrop.addEventListener(\"click\", this.onBackdropClick);\n }\n /**\n * Removes event listeners when disconnected.\n */\n disconnectedCallback() {\n this.$backdrop.removeEventListener(\"click\", this.onBackdropClick);\n // If the dialog is open when it is removed from the DOM\n // we need to cleanup the event listeners and side effects.\n if (this.open) {\n this.didClose();\n }\n }\n /**\n * Shows the dialog.\n */\n show() {\n this.open = true;\n }\n /**\n * Closes the dialog with a result.\n * @param result\n */\n close(result) {\n this.result = result;\n this.open = false;\n }\n /**\n * Closes the dialog when the backdrop is clicked.\n */\n onBackdropClick() {\n if (this.assertClosing()) {\n this.close();\n }\n }\n /**\n * Closes the dialog when escape is pressed.\n */\n onKeyDown(e) {\n switch (e.code) {\n case \"Escape\":\n if (this.assertClosing()) {\n this.close();\n // If there are more dialogs, we don't want to close those also :-)\n e.stopImmediatePropagation();\n }\n break;\n }\n }\n /**\n * Dispatches an event that, if asserts whether the dialog can be closed.\n * If \"preventDefault()\" is called on the event, assertClosing will return true\n * if the event was not cancelled. It will return false if the event was cancelled.\n */\n assertClosing() {\n return this.dispatchEvent(new CustomEvent(\"closing\", { cancelable: true }));\n }\n /**\n * Setup the dialog after it has opened.\n */\n didOpen() {\n // Save the current active element so we have a way of restoring the focus when the dialog is closed.\n this.$previousActiveElement = traverseActiveElements(document.activeElement);\n // Focus the first element in the focus trap.\n // Wait for the dialog to show its content before we try to focus inside it.\n // We request an animation frame to make sure the content is now visible.\n requestAnimationFrame(() => {\n this.$dialog.focusFirstElement();\n });\n // Make the dialog focusable\n this.tabIndex = 0;\n // Block the scrolling on the scroll container to avoid the outside content to scroll.\n this.$scrollContainer.style.overflow = `hidden`;\n // Listen for key down events to close the dialog when escape is pressed.\n this.addEventListener(\"keydown\", this.onKeyDown, { capture: true, passive: true });\n // Increment the dialog count with one to keep track of how many dialogs are currently nested.\n setDialogCount(this.$scrollContainer, getDialogCount(this.$scrollContainer) + 1);\n // Dispatch an event so the rest of the world knows the dialog opened.\n this.dispatchEvent(new CustomEvent(\"open\"));\n }\n /**\n * Clean up the dialog after it has closed.\n */\n didClose() {\n // Remove the listener listening for key events\n this.removeEventListener(\"keydown\", this.onKeyDown, { capture: true });\n // Decrement the dialog count with one to keep track of how many dialogs are currently nested.\n setDialogCount(this.$scrollContainer, Math.max(0, getDialogCount(this.$scrollContainer) - 1));\n // If there are now 0 active dialogs we unblock the scrolling from the scroll container.\n // This is because we know that no other dialogs are currently nested within the scroll container.\n if (getDialogCount(this.$scrollContainer) <= 0) {\n this.$scrollContainer.style.overflow = ``;\n }\n // Make the dialog unfocusable.\n this.tabIndex = -1;\n // Restore previous active element.\n if (this.$previousActiveElement != null) {\n this.$previousActiveElement.focus();\n this.$previousActiveElement = null;\n }\n // Dispatch an event so the rest of the world knows the dialog closed.\n // If a result has been set, the result is added to the detail property of the event.\n this.dispatchEvent(new CustomEvent(\"close\", { detail: this.result }));\n }\n /**\n * Reacts when an observed attribute changes.\n */\n attributeChangedCallback(name, newValue, oldValue) {\n switch (name) {\n case \"open\":\n this.open ? this.didOpen() : this.didClose();\n break;\n }\n }\n}\ncustomElements.define(\"web-dialog\", WebDialog);\n\nexport { WebDialog };\n","import '@a11y/focus-trap';\nimport { WebDialog } from './web-dialog.js';\nimport './util.js';\n\n/**\n * Opens a dialog and appends it to the container.\n * @param $content\n * @param $container\n * @param center\n * @param initialize\n */\nfunction openDialog({ $content, $container = document.body, center = false, initialize = (() => new WebDialog()) } = {}) {\n // Construct the dialog.\n const $dialog = initialize();\n // Set the relevant properties of the dialog.\n if (center != null) {\n $dialog.center = center;\n }\n // Attach the content to the dialog.\n if ($content != null) {\n if (typeof $content === \"function\") {\n $content($dialog);\n }\n else {\n $dialog.appendChild($content);\n }\n }\n // Create a resolver that resolves when the dialog closes.\n const resolver = new Promise(res => {\n $dialog.addEventListener(\"close\", (e) => {\n $dialog.remove();\n res(e.detail);\n }, { once: true });\n });\n // Append the dialog to the container and open it.\n $container.appendChild($dialog);\n $dialog.show();\n return { $dialog, resolver };\n}\n\nexport { openDialog };\n","import{nothing as t}from\"../lit-html.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o=o=>o??t;export{o as ifDefined};\n//# sourceMappingURL=if-defined.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.C(o,void 0,t),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,r?{...t,wrapped:!0}:t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import { css, html, LitElement } from \"lit\";\nimport { customElement } from \"lit/decorators/custom-element.js\";\nimport { sharedStyles } from \"../styles/shared\";\n\n@customElement(\"bs-progress-spinner\")\nclass BsProgressSpinner extends LitElement {\n\tstatic get styles() {\n\t\treturn [\n\t\t\tsharedStyles,\n\t\t\tcss`\n\t\t\t\t:host {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tcolor: currentColor;\n\t\t\t\t}\n\n\t\t\t\t#spinner {\n\t\t\t\t\twidth: var(--progress-spinner-size, 1.5em);\n\t\t\t\t\theight: var(--progress-spinner-size, 1.5em);\n\t\t\t\t\tanimation: spin 800ms infinite steps(8);\n\n\t\t\t\t\ttransform-origin: center center;\n\t\t\t\t\tposition: relative;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\toverflow: hidden;\n\t\t\t\t\tcontain: strict;\n\t\t\t\t}\n\n\t\t\t\t@keyframes spin {\n\t\t\t\t\tfrom {\n\t\t\t\t\t\ttransform: rotate(0turn);\n\t\t\t\t\t}\n\t\t\t\t\tto {\n\t\t\t\t\t\ttransform: rotate(1turn);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t`\n\t\t];\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t`;\n\t}\n}\n","import { css, html, LitElement, PropertyValues } from \"lit\";\nimport { customElement } from \"lit/decorators/custom-element.js\";\nimport { property } from \"lit/decorators/property.js\";\nimport { sharedStyles } from \"../styles/shared\";\nimport \"./progress-spinner\";\nimport { selectTextInInput } from \"../util/util\";\nimport { Size } from \"shared\";\n\n@customElement(\"bs-form-item\")\nexport class BsFormItem extends LitElement {\n\tstatic get styles() {\n\t\treturn [\n\t\t\tsharedStyles,\n\t\t\tcss`\n\t\t\t\t:host {\n\t\t\t\t\tposition: relative;\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t\tpointer-events: none;\n\t\t\t\t\t--_form-item-color: var(--form-item-color, var(--background));\n\t\t\t\t\t--_form-item-bg: var(--form-item-bg, var(--foreground));\n\t\t\t\t\t--_form-item-border-color: var(--form-item-border-color, var(--shade-normal));\n\n\t\t\t\t\t--_current-form-item-color: var(--_form-item-color);\n\t\t\t\t\t--_current-form-item-bg: var(--_form-item-bg);\n\t\t\t\t\t--_current-form-item-border-color: var(--_form-item-border-color, var(--shade-normal));\n\n\t\t\t\t\tfont-size: var(--form-item-font-size, var(--font-size-m));\n\t\t\t\t\tfont-family: var(--form-item-font-family, var(--font-family-base));\n\t\t\t\t}\n\n\t\t\t\t::slotted([slot=\"input\"]),\n\t\t\t\t.input {\n\t\t\t\t\tpointer-events: all;\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\talign-items: var(--form-item-align-items, center);\n\t\t\t\t\tjustify-content: var(--form-item-justify-content, center);\n\t\t\t\t\tflex-grow: 1;\n\n\t\t\t\t\taccent-color: var(--form-item-accent-color, var(--focus-color-input));\n\t\t\t\t\toutline-color: var(--form-item-accent-color, var(--focus-color-input));\n\t\t\t\t\toutline-width: var(--form-item-outline-width, 1px);\n\t\t\t\t\tappearance: none;\n\n\t\t\t\t\tborder-radius: var(--form-item-border-radius, var(--border-radius-l));\n\t\t\t\t\tcolor: var(--_current-form-item-color);\n\t\t\t\t\tbackground: var(--_current-form-item-bg);\n\t\t\t\t\theight: var(--_current-form-item-height, var(--form-item-height, 40px));\n\t\t\t\t\tpadding: var(--form-item-padding-v, 0) var(--form-item-padding-h, var(--space-m));\n\t\t\t\t\tposition: relative;\n\t\t\t\t\tfont-size: inherit;\n\t\t\t\t\tline-height: inherit;\n\t\t\t\t\tfont-family: inherit;\n\t\t\t\t\tborder: var(--form-item-border, 1px solid var(--_current-form-item-border-color));\n\t\t\t\t\ttransition: var(--form-item-transition, transform 120ms ease-out);\n\t\t\t\t}\n\n\t\t\t\t:host([margin]) {\n\t\t\t\t\tmargin: 0 0 var(--space-m);\n\t\t\t\t}\n\n\t\t\t\t:host([fab]) .input,\n\t\t\t\t:host([fab]) ::slotted([slot=\"input\"]) {\n\t\t\t\t\twidth: var(--form-item-height, 40px);\n\t\t\t\t\taspect-ratio: 1 / 1;\n\t\t\t\t}\n\n\t\t\t\t:host([loading]) ::slotted([slot=\"input\"]),\n\t\t\t\t:host([loading]) .input {\n\t\t\t\t\tpointer-events: none;\n\t\t\t\t}\n\n\t\t\t\t.input[disabled],\n\t\t\t\t::slotted([slot=\"input\"][disabled]) {\n\t\t\t\t\t--_current-form-item-color: var(--shade-dark);\n\t\t\t\t\t--_current-form-item-bg: var(--shade-light);\n\t\t\t\t\t--_current-form-item-border-color: var(--shade-light);\n\t\t\t\t\t--form-item-button-transform-hover: none;\n\t\t\t\t\t--form-item-button-transform-active: none;\n\t\t\t\t\t//z-index: -1;\n\t\t\t\t\topacity: 1;\n\t\t\t\t\tpointer-events: none;\n\t\t\t\t}\n\n\t\t\t\t:host([fill]) {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tflex-grow: 1;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t}\n\n\t\t\t\t:host([size=\"small\"]) {\n\t\t\t\t\tfont-size: var(--form-item-font-size, var(--font-size-s));\n\t\t\t\t\t--form-item-padding-h: var(--space-m);\n\t\t\t\t\t--form-item-height: 30px;\n\t\t\t\t\t--icon-size: 14px;\n\t\t\t\t}\n\n\t\t\t\t:host([size=\"tiny\"]) {\n\t\t\t\t\tfont-size: var(--form-item-font-size, var(--font-size-xs));\n\t\t\t\t\t--icon-size: 12px;\n\t\t\t\t\t--form-item-padding-h: var(--space-s);\n\t\t\t\t\t--form-item-height: 20px;\n\t\t\t\t}\n\n\t\t\t\t:host([size=\"large\"]) {\n\t\t\t\t\tfont-size: var(--form-item-font-size, var(--font-size-xm));\n\t\t\t\t\t--form-item-height: 50px;\n\t\t\t\t\t--form-item-button-padding-h: var(--space-l);\n\t\t\t\t}\n\n\t\t\t\t:host([size=\"huge\"]) {\n\t\t\t\t\tfont-size: var(--form-item-font-size, var(--font-size-l));\n\t\t\t\t\t--form-item-height: 60px;\n\t\t\t\t\t--form-item-button-padding-h: var(--space-xl);\n\t\t\t\t}\n\n\t\t\t\t:host([invert]) {\n\t\t\t\t\t--_current-form-item-color: var(--_form-item-bg);\n\t\t\t\t\t--_current-form-item-bg: var(--_form-item-color);\n\t\t\t\t}\n\n\t\t\t\t:host([flat]) ::slotted([slot=\"input\"]),\n\t\t\t\t:host([flat]) .input {\n\t\t\t\t\tbackground-color: transparent;\n\t\t\t\t\tborder: none;\n\t\t\t\t}\n\n\t\t\t\t::slotted([slot=\"input\"]:not([readonly]):active) {\n\t\t\t\t\topacity: var(--form-item-opacity-active, 0.8);\n\t\t\t\t}\n\n\t\t\t\t::slotted(textarea[slot=\"input\"]) {\n\t\t\t\t\tresize: vertical;\n\t\t\t\t\tmin-height: var(--form-item-textarea-min-height, 140px);\n\t\t\t\t\tpadding: var(--form-item-padding-v, var(--space-m)) var(--form-item-padding-h, var(--space-m));\n\t\t\t\t}\n\n\t\t\t\t::slotted(textarea[slot=\"input\"]),\n\t\t\t\t::slotted(input[slot=\"input\"]) {\n\t\t\t\t\twidth: 100%;\n\t\t\t\t}\n\n\t\t\t\t.input:not(textarea):not(input),\n\t\t\t\t::slotted([slot=\"input\"]:not(textarea):not(input)) {\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t\tuser-select: none;\n\t\t\t\t\t-webkit-user-select: none;\n\t\t\t\t}\n\n\t\t\t\tbutton.input,\n\t\t\t\t::slotted(button[slot=\"input\"]) {\n\t\t\t\t\tgap: var(--form-item-gap, var(--space-xs));\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tflex-direction: var(--form-item-flex-direction, row);\n\t\t\t\t\talign-items: var(--form-item-align-items, center);\n\t\t\t\t\tjustify-content: var(--form-item-justify-content, center);\n\t\t\t\t\tpadding: var(--form-item-button-padding-v, var(--form-item-padding-v, 0))\n\t\t\t\t\t\tvar(--form-item-button-padding-h, var(--form-item-padding-h, var(--space-xm)));\n\t\t\t\t\tborder-radius: var(--form-item-button-border-radius, var(--form-item-border-radius, 9999px));\n\t\t\t\t\tflex-shrink: 0;\n\t\t\t\t\tborder: var(--form-item-button-border, none);\n\t\t\t\t}\n\n\t\t\t\t/* Buttons should only have a border if they are inverted and not flat */\n\t\t\t\t:host([invert]:not([flat])) button.input,\n\t\t\t\t:host([invert]:not([flat])) ::slotted(button[slot=\"input\"]) {\n\t\t\t\t\tborder: var(--form-item-border, 1px solid var(--_current-form-item-border-color));\n\t\t\t\t}\n\n\t\t\t\t@media (hover: hover) {\n\t\t\t\t\tbutton.input:not([disabled]):not([readonly]):hover,\n\t\t\t\t\t::slotted(button[slot=\"input\"]:not([disabled]):not([readonly]):hover) {\n\t\t\t\t\t\ttransform: var(--form-item-button-transform-hover, scale(1.05));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbutton.input,\n\t\t\t\t::slotted(button[slot=\"input\"]) {\n\t\t\t\t\ttransform: var(--form-item-button-transform);\n\t\t\t\t}\n\n\t\t\t\tbutton.input:not([disabled]):not([readonly]):active,\n\t\t\t\t::slotted(button[slot=\"input\"]:not([disabled]):not([readonly]):active) {\n\t\t\t\t\ttransform: var(--form-item-button-transform-active, scale(0.95));\n\t\t\t\t}\n\n\t\t\t\t.input[disabled],\n\t\t\t\t::slotted([slot=\"input\"][disabled]),\n\t\t\t\t::slotted([slot=\"input\"][readonly]) {\n\t\t\t\t\tcursor: default;\n\t\t\t\t}\n\n\t\t\t\t.input[disabled],\n\t\t\t\t::slotted([slot=\"input\"][disabled]) {\n\t\t\t\t\tpointer-events: none;\n\t\t\t\t}\n\n\t\t\t\t::slotted(select[slot=\"input\"]) {\n\t\t\t\t\tbackground-image: url(\"data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23FEFEFE' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e\");\n\t\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\t\tbackground-position: right 0.6em center;\n\t\t\t\t\tbackground-size: 1em;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t}\n\n\t\t\t\t::slotted(input[slot=\"input\"][type=\"color\"]) {\n\t\t\t\t\tpadding: 0;\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t\toverflow: hidden;\n\t\t\t\t}\n\n\t\t\t\t::slotted(input[slot=\"input\"][type=\"file\"]) {\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t\tpadding-top: 1.1%;\n\t\t\t\t}\n\n\t\t\t\t.input[type=\"range\"],\n\t\t\t\t::slotted(input[slot=\"input\"][type=\"range\"]) {\n\t\t\t\t\tappearance: auto;\n\t\t\t\t\theight: 6px;\n\t\t\t\t\tbackground: var(--_current-form-item-bg);\n\t\t\t\t\tborder: none;\n\t\t\t\t\tmargin: var(--space-s) 0;\n\t\t\t\t\tpadding: 0;\n\t\t\t\t}\n\n\t\t\t\t.input[type=\"checkbox\"],\n\t\t\t\t::slotted(input[slot=\"input\"][type=\"checkbox\"]) {\n\t\t\t\t\tappearance: auto;\n\t\t\t\t}\n\n\t\t\t\t:host([invert]) ::slotted([slot=\"input\"]) {\n\t\t\t\t}\n\n\t\t\t\t:host([invert]) ::slotted(select[slot=\"input\"]) {\n\t\t\t\t\tbackground-image: url(\"data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%234A4A4A' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e\");\n\t\t\t\t}\n\n\t\t\t\t#progress-spinner {\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tleft: 50%;\n\t\t\t\t\ttop: 50%;\n\t\t\t\t\ttransform: translate(-50%, -50%);\n\t\t\t\t\tcolor: var(--_current-form-item-color);\n\t\t\t\t\t--progress-spinner-size: 1.3em;\n\t\t\t\t\tanimation: fade-in 1.5s ease-out forwards;\n\t\t\t\t}\n\n\t\t\t\t:host([loading]) .input,\n\t\t\t\t:host([loading]) ::slotted([slot=\"input\"]) {\n\t\t\t\t\t--_current-form-item-color: var(--_current-form-item-bg);\n\t\t\t\t\ttransition: color 200ms ease-out;\n\t\t\t\t}\n\n\t\t\t\t@keyframes fade-in {\n\t\t\t\t\tfrom {\n\t\t\t\t\t\topacity: 0;\n\t\t\t\t\t}\n\t\t\t\t\tto {\n\t\t\t\t\t\topacity: 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t:host([show-spinner=\"right\"]) #progress-spinner {\n\t\t\t\t\tleft: unset;\n\t\t\t\t\tright: var(--form-item-padding-h, var(--space-m));\n\t\t\t\t\ttransform: translateY(-50%);\n\t\t\t\t}\n\n\t\t\t\t:host([show-spinner=\"left\"]) #progress-spinner {\n\t\t\t\t\tleft: var(--form-item-padding-h, var(--space-m));\n\t\t\t\t\tright: unset;\n\t\t\t\t\ttransform: translateY(-50%);\n\t\t\t\t}\n\t\t\t`\n\t\t];\n\t}\n\n\t@property({ type: String, reflect: true }) size: Size = \"medium\";\n\t@property({ type: Boolean, reflect: true }) flat = false;\n\t@property({ type: Boolean, reflect: true }) margin = false;\n\t@property({ type: Boolean, reflect: true }) invert = false;\n\t@property({ type: Boolean, reflect: true }) fill = false;\n\t@property({ type: Boolean, reflect: true }) loading = false;\n\t@property({ type: Boolean, reflect: true }) fab = false;\n\t@property({ type: Boolean, reflect: true }) autofocus = false;\n\t@property({ type: String, reflect: true, attribute: \"show-spinner\" }) showSpinner?: \"center\" | \"left\" | \"right\";\n\n\tget $slottedInput(): HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement | undefined {\n\t\treturn (this.shadowRoot?.querySelector(\"#input\") ??\n\t\t\tthis.shadowRoot?.querySelector('slot[name=\"input\"]')?.assignedElements()[0]) as\n\t\t\t| HTMLInputElement\n\t\t\t| HTMLSelectElement\n\t\t\t| HTMLTextAreaElement\n\t\t\t| undefined;\n\t}\n\n\tget value() {\n\t\treturn this.$slottedInput?.value ?? \"\";\n\t}\n\n\tsetValue(string: string) {\n\t\tif (this.$slottedInput != null) {\n\t\t\tthis.$slottedInput.value = string;\n\t\t}\n\t}\n\n\treset() {\n\t\tthis.setValue(\"\");\n\t}\n\n\tprotected firstUpdated(props: PropertyValues) {\n\t\tsuper.firstUpdated(props);\n\t\tif (this.autofocus) {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.focusInput();\n\t\t\t});\n\t\t}\n\t}\n\n\treportValidity(message: string, resetMs = 3000) {\n\t\tthis.$slottedInput?.setCustomValidity(message);\n\t\tthis.$slottedInput?.reportValidity();\n\t\tconst resetCustomValidity = () => {\n\t\t\tthis.$slottedInput?.removeEventListener(\"input\", resetCustomValidity);\n\t\t\tthis.$slottedInput?.setCustomValidity(\"\");\n\t\t};\n\n\t\tthis.$slottedInput?.addEventListener(\"input\", resetCustomValidity, { once: true });\n\t\tsetTimeout(() => resetCustomValidity(), resetMs);\n\t}\n\n\tfocusInput() {\n\t\tthis.$slottedInput?.focus();\n\t}\n\n\tselectTextInInput() {\n\t\tconst $slottedInput = this.$slottedInput;\n\t\tif (\n\t\t\t($slottedInput != null && $slottedInput instanceof HTMLInputElement) ||\n\t\t\t$slottedInput instanceof HTMLTextAreaElement\n\t\t) {\n\t\t\tselectTextInInput($slottedInput);\n\t\t}\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t\n\t\t\t\n\t\t\t${this.showSpinner || this.loading\n\t\t\t\t? html` `\n\t\t\t\t: undefined}\n\t\t`;\n\t}\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{nothing as t,noChange as i}from\"../lit-html.js\";import{Directive as r,PartType as s,directive as n}from\"../directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends r{constructor(i){if(super(i),this.et=t,i.type!==s.CHILD)throw Error(this.constructor.directiveName+\"() can only be used in child bindings\")}render(r){if(r===t||null==r)return this.vt=void 0,this.et=r;if(r===i)return r;if(\"string\"!=typeof r)throw Error(this.constructor.directiveName+\"() called with a non-string value\");if(r===this.et)return this.vt;this.et=r;const s=[r];return s.raw=s,this.vt={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName=\"unsafeHTML\",e.resultType=1;const o=n(e);export{e as UnsafeHTMLDirective,o as unsafeHTML};\n//# sourceMappingURL=unsafe-html.js.map\n","import{directive as s}from\"../directive.js\";import{UnsafeHTMLDirective as e}from\"./unsafe-html.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class t extends e{}t.directiveName=\"unsafeSVG\",t.resultType=2;const o=s(t);export{o as unsafeSVG};\n//# sourceMappingURL=unsafe-svg.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nfunction n(n,r,t){return n?r(n):t?.(n)}export{n as when};\n//# sourceMappingURL=when.js.map\n","import { css, html, LitElement, svg } from \"lit\";\nimport { customElement } from \"lit/decorators/custom-element.js\";\nimport { sharedStyles } from \"../styles/shared\";\nimport { property } from \"lit/decorators/property.js\";\nimport { unsafeSVG } from \"lit/directives/unsafe-svg.js\";\nimport { Icon } from \"../../icons\";\nimport { when } from \"lit/directives/when.js\";\n\n@customElement(\"bs-icon\")\nexport class BsIcon extends LitElement {\n\t@property({ type: Object }) icon!: Icon;\n\t@property({ type: Boolean, reflect: true }) fill = false;\n\t@property({ type: Boolean, reflect: true }) button = false;\n\t@property({ type: Boolean, reflect: true }) disabled = false;\n\t@property({ type: Boolean, reflect: true }) active = false;\n\n\tstatic get styles() {\n\t\treturn [\n\t\t\tsharedStyles,\n\t\t\tcss`\n\t\t\t\t:host {\n\t\t\t\t\tposition: relative;\n\t\t\t\t\tuser-select: none;\n\t\t\t\t\t-webkit-user-select: none;\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t\tpadding: var(--icon-padding, 0);\n\t\t\t\t\tflex-shrink: 0;\n\t\t\t\t\tcolor: var(--icon-color, currentColor);\n\t\t\t\t}\n\n\t\t\t\t#svg {\n\t\t\t\t\twidth: var(--icon-size, 22px);\n\t\t\t\t\taspect-ratio: 1 / 1;\n\t\t\t\t}\n\n\t\t\t\t:host(:not([disabled])[button]) {\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t}\n\n\t\t\t\t:host([button]) #svg {\n\t\t\t\t\ttransition: transform 120ms ease-out, opacity 120ms ease-out;\n\t\t\t\t\topacity: var(--icon-button-opacity, 0.5);\n\t\t\t\t}\n\n\t\t\t\t:host([disabled]) {\n\t\t\t\t\t--icon-button-opacity: 0.2;\n\t\t\t\t\tpointer-events: none;\n\t\t\t\t}\n\n\t\t\t\t#touch-area {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tinset: calc(-1 * var(--space-xs));\n\t\t\t\t}\n\n\t\t\t\t:host([button]) #touch-area {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t}\n\n\t\t\t\t@media (hover: hover) {\n\t\t\t\t\t:host(:not([disabled])[button]:hover) #svg,\n\t\t\t\t\t:host(:not([disabled])[button][active]) #svg {\n\t\t\t\t\t\topacity: var(--icon-button-opacity, 1);\n\t\t\t\t\t}\n\n\t\t\t\t\t:host(:not([disabled])[button]:hover) #svg {\n\t\t\t\t\t\ttransform: var(--icon-button-hover-transform, scale(1.1));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t:host(:not([disabled])[button]:active) #svg {\n\t\t\t\t\ttransform: var(--icon-button-hover-transform, scale(0.95));\n\t\t\t\t}\n\n\t\t\t\t:host([size=\"tiny\"]) #svg {\n\t\t\t\t\twidth: var(--icon-size, 12px);\n\t\t\t\t}\n\n\t\t\t\t:host([size=\"small\"]) #svg {\n\t\t\t\t\twidth: var(--icon-size, 18px);\n\t\t\t\t}\n\n\t\t\t\t:host([size=\"large\"]) #svg {\n\t\t\t\t\twidth: var(--icon-size, 36px);\n\t\t\t\t}\n\t\t\t`\n\t\t];\n\t}\n\n\trender() {\n\t\treturn svg`\n\t\t${when(this.button, () => html`
`)}\n\t\t\n\t\t\t${this.fill && this.icon.svgFilled != null ? unsafeSVG(this.icon.svgFilled) : unsafeSVG(this.icon.svg)}\n\t\t\n\t`;\n\t}\n}\n","export interface Icon {\n\tviewBox: string;\n\tsvg: string;\n\tsvgFilled?: string;\n}\n\nexport const ICON_NOTHING: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_TIME: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_WIZARD_HAT: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_SETTINGS: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_ZOOM_IN: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_ZOOM_OUT: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_FIT_VIEW: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_HAPPY: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_ADD_REACTION: Icon = {\n\tviewBox: \"0 0 24 24\",\n\tsvg: ``\n};\n\nexport const ICON_WAND: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_SPARKS: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_CRYSTAL_BALL: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_PLUS: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_MINUS: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_PLUS_SQUARE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_MORE: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_MORE_VERTICAL: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_MORE_CIRCLE: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_RATE: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_PLAY_CIRCLE: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_STOP_CIRCLE: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_PAUSE_CIRCLE: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_GRIP_LINES: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_CHEVRON_DOWN: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: `<`\n};\n\nexport const ICON_CHEVRON_UP: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_INFO: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_TRASH: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_EDIT: Icon = {\n\tviewBox: \"0 0 36 36\",\n\t//svg: ``\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_TEXT: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_CLEAN: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_CLOSE: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_PLUS_CIRCLE: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_MINUS_CIRCLE: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_IMPORT: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_DOWNLOAD: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_CHEVRON_LEFT: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_CHEVRON_RIGHT: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_GROUPS: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_IDEA: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_QUESTION_MARK: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``\n};\n\nexport const ICON_COLLAPSE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_QUESTION: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_SUCCESS_CIRCLE: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_SCHEDULE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_GRID_VIEW: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_LIST_VIEW: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_BRAIN: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_TUNE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_SHIELD: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_NOTIFICATION: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_WAVING_HAND: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_FOLLOW: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n\t//svg: ``,\n\t//svgFilled: ``\n};\n\nexport const ICON_COMMENT: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_UNFOLLOW: Icon = {\n\tviewBox: \"0 0 24 24\",\n\tsvg: ``\n};\nexport const ICON_SEND: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_APPS: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_LINK: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_MENU: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n\t/*svg: ``,\n\tsvgFilled: ``*/\n};\n\nexport const ICON_ERROR: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_BRUSH: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_REFRESH: Icon = {\n\tviewBox: \"0 0 24 24\",\n\tsvg: ``\n};\n\nexport const ICON_IMAGE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_POSTER: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n\n\t/*svg: ``,\n\tsvgFilled: ``*/\n};\n\nexport const ICON_QR: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``\n};\n\nexport const ICON_USERS: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``\n};\n\nexport const ICON_CALENDAR: Icon = {\n\tviewBox: \"0 0 24 24\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_CODE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``\n};\n\nexport const ICON_EMAIL: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_SMS: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_OFFICE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_COPY: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_MANAGE_PEOPLE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_ACCOUNT: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_GLOBE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_LOCK: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_DISABLED: Icon = {\n\tviewBox: \"0 0 24 24\",\n\tsvg: ``\n};\n\nexport const ICON_SPARK: Icon = {\n\tviewBox: \"0 0 48 48\",\n\tsvg: ``\n};\n\nexport const ICON_THINKING: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_SUN: Icon = {\n\tviewBox: \"0 0 24 24\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_ELEVATOR: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_SCAMPER: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_SWOT: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_BUSINESS_MODEL_CANVAS: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_DASHBOARD: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_WARNING: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_SHAPES: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``\n};\n\nexport const ICON_BUNNY: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_THEATER: Icon = {\n\tviewBox: \"0 0 72 72\",\n\tsvg: ``\n};\n\nexport const ICON_MEDIA: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_ATTACHMENT: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n\t//svg: ``\n\t//svg: ``\n};\n\nexport const ICON_UPLOAD_FILE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_AUDIO: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_VIDEO: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_DOCUMENT: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_FILE_ERROR: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_DETACH: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_VOICE_RECORD: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_REDO: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_UNDO: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_MAGIC_LIGHTBULB: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_QUESTIONS: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_CLOSE_MENU: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``\n};\n\nexport const ICON_OPEN_MENU: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``\n};\n\nexport const ICON_HOME: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_UPGRADE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_SHARE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``\n};\n\nexport const ICON_START: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_SEARCH: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: `<`,\n\tsvgFilled: ``\n};\n\nexport const ICON_EXPAND: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_UPDATE_AVAILABLE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_LABEL: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_ARROW_DOWN: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_LIGHTNING: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_AGENDA: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_GOAL: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_MUSIC: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_MUSIC_NOTE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_ANALYTICS: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_CONCLUSION: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_GROW: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_TRIANGLE_DOWN: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvgFilled: ``,\n\tsvg: ``\n};\n\nexport const ICON_NEW_TAB: Icon = {\n\tviewBox: \"0 0 24 24\",\n\tsvg: ``\n};\n\nexport const ICON_TOOLBOX: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_STORAGE_BOX: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_EXTRACT_IDEAS: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_STORAGE_SPREADSHEET: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_WORD_DOCUMENT: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_LOGOUT: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_MAINTENANCE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_CHAT: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_FULLSCREEN: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_MINIMIZE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_DONE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_CARD: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_HAND: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_EXPERIMENT: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_UNICORN: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_LOCATION: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_FACTORY: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_MEGAPHONE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_GAME: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_MERGE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_TRANSFORM: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_REVERSE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_HEADLINE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_RIGHT_CIRCLE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_ZOOM_TO_FIT: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_ZOOM_TO_SELECTION: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_CENTER: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_UNFOLD: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_FOLD: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_STICKER: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_STYLE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_EXPAND_IDEA: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``\n};\n\nexport const ICON_NOTE: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_MINDMAP: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n\nexport const ICON_BUTTERFLY: Icon = {\n\tviewBox: \"0 0 36 36\",\n\tsvg: ``,\n\tsvgFilled: ``\n};\n","import { css, html, LitElement, TemplateResult } from \"lit\";\nimport { customElement } from \"lit/decorators/custom-element.js\";\nimport { sharedStyles } from \"../styles/shared\";\nimport \"./form-item\";\nimport \"./icon\";\nimport { ICON_CLOSE } from \"../../icons\";\nimport { property } from \"lit/decorators/property.js\";\n\n@customElement(\"bs-dialog-close-button\")\nexport class BsDialogCloseButton extends LitElement {\n\tstatic get styles() {\n\t\treturn [\n\t\t\tsharedStyles,\n\t\t\tcss`\n\t\t\t\t:host {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tright: var(--space-m);\n\t\t\t\t\ttop: var(--space-m);\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t\tz-index: 123456789;\n\t\t\t\t\t--icon-size: 18px;\n\t\t\t\t}\n\n\t\t\t\t:host([fill]) {\n\t\t\t\t\tbackground: var(--background);\n\t\t\t\t\tcolor: var(--foreground);\n\t\t\t\t\tborder-radius: 9999px;\n\t\t\t\t\twidth: 34px;\n\t\t\t\t\theight: 34px;\n\t\t\t\t}\n\t\t\t`\n\t\t];\n\t}\n\n\t@property({ type: Boolean, reflect: true }) fill = false;\n\t@property({ type: Object }) icon = ICON_CLOSE;\n\n\tclose() {\n\t\tthis.dispatchEvent(new CustomEvent(\"close\", { bubbles: true, composed: true }));\n\t}\n\n\trender(): TemplateResult | undefined {\n\t\treturn html` `;\n\t}\n}\n","import { css, html, LitElement } from \"lit\";\nimport { customElement } from \"lit/decorators/custom-element.js\";\nimport { sharedStyles } from \"../styles/shared\";\nimport { WebDialog } from \"web-dialog\";\nimport \"./dialog-close-button\";\n\nexport function prepareDialogForWrapper($d: WebDialog) {\n\t$d.style.setProperty(\"--dialog-padding\", \"0\");\n\t$d.style.setProperty(\"--dialog-overflow-x\", \"hidden\");\n\t$d.style.setProperty(\"--dialog-overflow-y\", \"hidden\");\n\t$d.style.setProperty(\"--dialog-max-height\", \"auto\");\n}\n\n@customElement(\"bs-dialog-wrapper\")\nexport class BsDialogWrapper extends LitElement {\n\tstatic get styles() {\n\t\treturn [\n\t\t\tsharedStyles,\n\t\t\tcss`\n\t\t\t\t:host {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tflex-direction: column;\n\t\t\t\t\theight: 100%;\n\t\t\t\t\tmax-height: var(--dialog-wrapper-max-height, 80vh);\n\t\t\t\t}\n\n\t\t\t\theader,\n\t\t\t\tfooter,\n\t\t\t\tform,\n\t\t\t\tarticle,\n\t\t\t\t::slotted(header),\n\t\t\t\t::slotted(footer),\n\t\t\t\t::slotted(form),\n\t\t\t\t::slotted(article) {\n\t\t\t\t\tposition: relative;\n\t\t\t\t}\n\n\t\t\t\theader,\n\t\t\t\tfooter,\n\t\t\t\t::slotted(header),\n\t\t\t\t::slotted(footer) {\n\t\t\t\t\tflex-shrink: 0;\n\t\t\t\t}\n\n\t\t\t\theader,\n\t\t\t\t::slotted(header) {\n\t\t\t\t\tpadding: var(--dialog-wrapper-header-padding, var(--space-l) var(--space-l) var(--space-s));\n\t\t\t\t}\n\n\t\t\t\tfooter::after,\n\t\t\t\theader::after {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tcontent: \"\";\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tbackground: var(\n\t\t\t\t\t\t--dialog-wrapper-scroll-gradient,\n\t\t\t\t\t\tlinear-gradient(180deg, rgba(var(--rgb), 1) 0%, rgba(var(--rgb), 0) 100%)\n\t\t\t\t\t);\n\t\t\t\t\tleft: 0;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\theight: var(--space-m);\n\t\t\t\t\tz-index: 1;\n\t\t\t\t}\n\n\t\t\t\tfooter::after {\n\t\t\t\t\ttransform: rotate(180deg);\n\t\t\t\t\tbottom: 100%;\n\t\t\t\t}\n\n\t\t\t\theader::after {\n\t\t\t\t\ttop: 100%;\n\t\t\t\t}\n\n\t\t\t\tfooter,\n\t\t\t\t::slotted(footer) {\n\t\t\t\t\tpadding: var(--dialog-wrapper-header-padding, var(--space-s) var(--space-l) var(--space-l));\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tjustify-content: flex-end;\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tposition: relative;\n\t\t\t\t}\n\n\t\t\t\tform,\n\t\t\t\tarticle,\n\t\t\t\t::slotted(form),\n\t\t\t\t::slotted(article) {\n\t\t\t\t\tpadding: var(--dialog-wrapper-content-padding, var(--space-l));\n\t\t\t\t\tflex-grow: 1;\n\t\t\t\t\toverflow-y: var(--dialog-wrapper-content-overflow-y, auto);\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tflex-direction: column;\n\t\t\t\t\tgap: var(--space-l);\n\t\t\t\t}\n\t\t\t`\n\t\t];\n\t}\n\n\tcancel() {\n\t\tthis.dispatchEvent(new CustomEvent(\"cancel\"));\n\t}\n\n\tdone(data?: T) {\n\t\tthis.dispatchEvent(new CustomEvent(\"done\", { bubbles: true, composed: true, detail: data }));\n\t}\n\n\trender() {\n\t\treturn html` `;\n\t}\n}\n","export const LANG_CHANGED_EVENT = \"langChanged\";\n//# sourceMappingURL=config.js.map","/**\n * Interpolates the values into the string.\n * @param text\n * @param values\n * @param config\n */\nexport function interpolate(text, values, config) {\n return Object.entries(extract(values || {})).reduce((text, [key, value]) => text.replace(new RegExp(`{{[  ]*${key}[  ]*}}`, `gm`), String(extract(value))), text);\n}\n/**\n * Returns a string based on a chain of keys using the dot notation.\n * @param key\n * @param config\n */\nexport function lookup(key, config) {\n // Split the key in parts (example: hello.world)\n const parts = key.split(\".\");\n // Find the string by traversing through the strings matching the chain of keys\n let string = config.strings;\n // Shift through all of the parts of the key while matching with the strings.\n // Do not continue if the string is not defined or if we have traversed all of the key parts\n while (string != null && parts.length > 0) {\n string = string[parts.shift()];\n }\n // Make sure the string is in fact a string!\n return string != null ? string.toString() : null;\n}\n/**\n * Extracts either the value from the function or returns the value that was passed in.\n * @param obj\n */\nexport function extract(obj) {\n return (typeof obj === \"function\") ? obj() : obj;\n}\n//# sourceMappingURL=helpers.js.map","import { LANG_CHANGED_EVENT } from \"./config\";\nimport { extract, interpolate, lookup } from \"./helpers\";\n/**\n * Default configuration object.\n */\nexport const defaultTranslateConfig = () => {\n return {\n loader: () => Promise.resolve({}),\n empty: key => `[${key}]`,\n lookup: lookup,\n interpolate: interpolate,\n translationCache: {}\n };\n};\n// The current configuration.\nexport let translateConfig = defaultTranslateConfig();\n/**\n * Registers a translation config.\n * @param config\n */\nexport function registerTranslateConfig(config) {\n return (translateConfig = Object.assign(Object.assign({}, translateConfig), config));\n}\n/**\n * Dispatches a language changed event.\n * @param detail\n */\nexport function dispatchLangChanged(detail) {\n window.dispatchEvent(new CustomEvent(LANG_CHANGED_EVENT, { detail }));\n}\n/**\n * Updates the configuration object with a new language and strings.\n * Then dispatches that the language has changed.\n * @param newLang\n * @param newStrings\n * @param config\n */\nexport function updateLang(newLang, newStrings, config = translateConfig) {\n dispatchLangChanged({\n previousStrings: config.strings,\n previousLang: config.lang,\n lang: (config.lang = newLang),\n strings: (config.strings = newStrings)\n });\n}\n/**\n * Listens for changes in the language.\n * Returns a method for unsubscribing from the event.\n * @param callback\n * @param options\n */\nexport function listenForLangChanged(callback, options) {\n const handler = (e) => callback(e.detail);\n window.addEventListener(LANG_CHANGED_EVENT, handler, options);\n return () => window.removeEventListener(LANG_CHANGED_EVENT, handler);\n}\n/**\n * Sets a new current language and dispatches a global language changed event.\n * @param lang\n * @param config\n */\nexport async function use(lang, config = translateConfig) {\n // Load the translations and set the cache\n const strings = await config.loader(lang, config);\n config.translationCache = {};\n // Dispatch global language changed event while setting the new values\n updateLang(lang, strings, config);\n}\n/**\n * Translates a key and interpolates if values are defined.\n * Uses the current strings and translation cache to fetch the translation.\n * @param key (eg. \"common.get_started\")\n * @param values (eg. { count: 42 })\n * @param config\n */\nexport function get(key, values, config = translateConfig) {\n // Either use the translation from the cache or get it and add it to the cache\n let translation = config.translationCache[key]\n || (config.translationCache[key] = config.lookup(key, config) || config.empty(key, config));\n // Extract the values\n values = values != null ? extract(values) : null;\n // Interpolate the values and return the translation\n return values != null ? config.interpolate(translation, values, config) : translation;\n}\n//# sourceMappingURL=util.js.map","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nvar t;const i=window,s=i.trustedTypes,e=s?s.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,o=\"$lit$\",n=`lit$${(Math.random()+\"\").slice(9)}$`,l=\"?\"+n,h=`<${l}>`,r=document,u=()=>r.createComment(\"\"),d=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,c=Array.isArray,v=t=>c(t)||\"function\"==typeof(null==t?void 0:t[Symbol.iterator]),a=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,_=/-->/g,m=/>/g,p=RegExp(`>|${a}(?:([^\\\\s\"'>=/]+)(${a}*=${a}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),g=/'/g,$=/\"/g,y=/^(?:script|style|textarea|title)$/i,w=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=w(1),b=w(2),T=Symbol.for(\"lit-noChange\"),A=Symbol.for(\"lit-nothing\"),E=new WeakMap,C=r.createTreeWalker(r,129,null,!1);function P(t,i){if(!Array.isArray(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==e?e.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,e=[];let l,r=2===i?\"\":\"\",u=f;for(let i=0;i\"===c[0]?(u=null!=l?l:f,v=-1):void 0===c[1]?v=-2:(v=u.lastIndex-c[2].length,d=c[1],u=void 0===c[3]?p:'\"'===c[3]?$:g):u===$||u===g?u=p:u===_||u===m?u=f:(u=p,l=void 0);const w=u===p&&t[i+1].startsWith(\"/>\")?\" \":\"\";r+=u===f?s+h:v>=0?(e.push(d),s.slice(0,v)+o+s.slice(v)+n+w):s+n+(-2===v?(e.push(void 0),i):w)}return[P(t,r+(t[s]||\"\")+(2===i?\"\":\"\")),e]};class N{constructor({strings:t,_$litType$:i},e){let h;this.parts=[];let r=0,d=0;const c=t.length-1,v=this.parts,[a,f]=V(t,i);if(this.el=N.createElement(a,e),C.currentNode=this.el.content,2===i){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes)}for(;null!==(h=C.nextNode())&&v.length0){h.textContent=s?s.emptyScript:\"\";for(let s=0;s2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=A}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,i=this,s,e){const o=this.strings;let n=!1;if(void 0===o)t=S(this,t,i,0),n=!d(t)||t!==this._$AH&&t!==T,n&&(this._$AH=t);else{const e=t;let l,h;for(t=o[0],l=0;l{var e,o;const n=null!==(e=null==s?void 0:s.renderBefore)&&void 0!==e?e:i;let l=n._$litPart$;if(void 0===l){const t=null!==(o=null==s?void 0:s.renderBefore)&&void 0!==o?o:null;n._$litPart$=l=new R(i.insertBefore(u(),t),t,void 0,null!=s?s:{})}return l._$AI(t),l};export{j as _$LH,x as html,T as noChange,A as nothing,D as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{_$LH as o}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{I:l}=o,i=o=>null===o||\"object\"!=typeof o&&\"function\"!=typeof o,n={HTML:1,SVG:2},t=(o,l)=>void 0===l?void 0!==(null==o?void 0:o._$litType$):(null==o?void 0:o._$litType$)===l,v=o=>{var l;return null!=(null===(l=null==o?void 0:o._$litType$)||void 0===l?void 0:l.h)},d=o=>void 0!==(null==o?void 0:o._$litDirective$),u=o=>null==o?void 0:o._$litDirective$,e=o=>void 0===o.strings,r=()=>document.createComment(\"\"),c=(o,i,n)=>{var t;const v=o._$AA.parentNode,d=void 0===i?o._$AB:i._$AA;if(void 0===n){const i=v.insertBefore(r(),d),t=v.insertBefore(r(),d);n=new l(i,t,o,o.options)}else{const l=n._$AB.nextSibling,i=n._$AM,u=i!==o;if(u){let l;null===(t=n._$AQ)||void 0===t||t.call(n,o),n._$AM=o,void 0!==n._$AP&&(l=o._$AU)!==i._$AU&&n._$AP(l)}if(l!==d||u){let o=n._$AA;for(;o!==l;){const l=o.nextSibling;v.insertBefore(o,d),o=l}}}return n},f=(o,l,i=o)=>(o._$AI(l,i),o),s={},a=(o,l=s)=>o._$AH=l,m=o=>o._$AH,p=o=>{var l;null===(l=o._$AP)||void 0===l||l.call(o,!1,!0);let i=o._$AA;const n=o._$AB.nextSibling;for(;i!==n;){const o=i.nextSibling;i.remove(),i=o}},h=o=>{o._$AR()};export{n as TemplateResultType,h as clearPart,m as getCommittedValue,u as getDirectiveClass,c as insertPart,v as isCompiledTemplateResult,d as isDirectiveResult,i as isPrimitive,e as isSingleExpression,t as isTemplateResult,p as removePart,f as setChildPartValue,a as setCommittedValue};\n//# sourceMappingURL=directive-helpers.js.map\n","import{isSingleExpression as i}from\"./directive-helpers.js\";import{Directive as t,PartType as e}from\"./directive.js\";export{Directive,PartType,directive}from\"./directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=(i,t)=>{var e,o;const r=i._$AN;if(void 0===r)return!1;for(const i of r)null===(o=(e=i)._$AO)||void 0===o||o.call(e,t,!1),s(i,t);return!0},o=i=>{let t,e;do{if(void 0===(t=i._$AM))break;e=t._$AN,e.delete(i),i=t}while(0===(null==e?void 0:e.size))},r=i=>{for(let t;t=i._$AM;i=t){let e=t._$AN;if(void 0===e)t._$AN=e=new Set;else if(e.has(i))break;e.add(i),l(t)}};function n(i){void 0!==this._$AN?(o(this),this._$AM=i,r(this)):this._$AM=i}function h(i,t=!1,e=0){const r=this._$AH,n=this._$AN;if(void 0!==n&&0!==n.size)if(t)if(Array.isArray(r))for(let i=e;i{var t,s,o,r;i.type==e.CHILD&&(null!==(t=(o=i)._$AP)&&void 0!==t||(o._$AP=h),null!==(s=(r=i)._$AQ)&&void 0!==s||(r._$AQ=n))};class c extends t{constructor(){super(...arguments),this._$AN=void 0}_$AT(i,t,e){super._$AT(i,t,e),r(this),this.isConnected=i._$AU}_$AO(i,t=!0){var e,r;i!==this.isConnected&&(this.isConnected=i,i?null===(e=this.reconnected)||void 0===e||e.call(this):null===(r=this.disconnected)||void 0===r||r.call(this)),t&&(s(this,i),o(this))}setValue(t){if(i(this._$Ct))this._$Ct._$AI(t,this);else{const i=[...this._$Ct._$AH];i[this._$Ci]=t,this._$Ct._$AI(i,this,0)}}disconnected(){}reconnected(){}}export{c as AsyncDirective};\n//# sourceMappingURL=async-directive.js.map\n","import { AsyncDirective } from \"lit/async-directive.js\";\nimport { listenForLangChanged } from \"../util\";\n/**\n * An abstract lit directive that reacts when the language changes.\n */\nexport class LangChangedDirectiveBase extends AsyncDirective {\n constructor() {\n super(...arguments);\n this.langChangedSubscription = null;\n this.getValue = (() => \"\");\n }\n /**\n * Sets up the directive by setting the getValue property and subscribing.\n * When subclassing LangChangedDirectiveBase this function should be call in the render function.\n * @param getValue\n */\n renderValue(getValue) {\n this.getValue = getValue;\n this.subscribe();\n return this.getValue();\n }\n /**\n * Called when the lang changed event is dispatched.\n * @param e\n */\n langChanged(e) {\n this.setValue(this.getValue(e));\n }\n /**\n * Subscribes to the lang changed event.\n */\n subscribe() {\n if (this.langChangedSubscription == null) {\n this.langChangedSubscription = listenForLangChanged(this.langChanged.bind(this));\n }\n }\n /**\n * Unsubscribes from the lang changed event.\n */\n unsubscribe() {\n if (this.langChangedSubscription != null) {\n this.langChangedSubscription();\n }\n }\n /**\n * Unsubscribes when disconnected.\n */\n disconnected() {\n this.unsubscribe();\n }\n /**\n * Subscribes when reconnected.\n */\n reconnected() {\n this.subscribe();\n }\n}\n//# sourceMappingURL=lang-changed-base.js.map","import { directive } from \"lit/directive.js\";\nimport { get } from \"../util\";\nimport { LangChangedDirectiveBase } from \"./lang-changed-base\";\n/**\n * A lit directive that updates the translation when the language changes.\n */\nexport class TranslateDirective extends LangChangedDirectiveBase {\n render(key, values, config) {\n return this.renderValue(() => get(key, values, config));\n }\n}\nexport const translate = directive(TranslateDirective);\n//# sourceMappingURL=translate.js.map","import{nothing as t,noChange as i}from\"../lit-html.js\";import{Directive as r,PartType as s,directive as n}from\"../directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends r{constructor(i){if(super(i),this.et=t,i.type!==s.CHILD)throw Error(this.constructor.directiveName+\"() can only be used in child bindings\")}render(r){if(r===t||null==r)return this.ft=void 0,this.et=r;if(r===i)return r;if(\"string\"!=typeof r)throw Error(this.constructor.directiveName+\"() called with a non-string value\");if(r===this.et)return this.ft;this.et=r;const s=[r];return s.raw=s,this.ft={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName=\"unsafeHTML\",e.resultType=1;const o=n(e);export{e as UnsafeHTMLDirective,o as unsafeHTML};\n//# sourceMappingURL=unsafe-html.js.map\n","import { pickRandomItem } from \"shared\";\nimport { getInitials } from \"./util\";\nimport { UNNAMED_USER_NAME } from \"../config\";\nimport { get, translate } from \"lit-translate\";\n\n/**\n * Returns the best name.\n * @param name\n * @param maxLength\n * @param initialsLength\n * @param defaultName\n */\nexport function getBestName(\n\tname: string | undefined,\n\t{ initialsLength, maxLength, defaultName }: { maxLength?: number; initialsLength?: number; defaultName?: string } = {}\n): string {\n\tname = name?.trim() || defaultName || UNNAMED_USER_NAME;\n\n\t// Check if we can return the name.\n\tif (maxLength == null || name.length < maxLength) {\n\t\treturn name;\n\t}\n\n\t// Check if we can return the first name.\n\tconst nameLessThanMaxLength = name.split(\" \").find((part) => part.length < maxLength);\n\tif (nameLessThanMaxLength != null) {\n\t\treturn nameLessThanMaxLength;\n\t}\n\n\t// Return initials as a last resort.\n\treturn getInitials(name, initialsLength);\n}\n\n/**\n * Returns a user greeting based on the current time of day.\n * @param name\n */\nexport function getFriendlyUserGreeting(name?: string) {\n\tconst currentTime = new Date().getHours();\n\tname = getBestName(name, { maxLength: 20 });\n\tconst includeName = name.length && name !== UNNAMED_USER_NAME;\n\n\tif (currentTime >= 5 && currentTime < 12) {\n\t\treturn includeName ? translate(`Good morning, {{name}}`, { name }) : translate(\"Good morning\");\n\t} else if (currentTime >= 12 && currentTime < 18) {\n\t\treturn includeName ? translate(`Good afternoon, {{name}}`, { name }) : translate(\"Good afternoon\");\n\t} else {\n\t\treturn includeName ? translate(`Good evening, {{name}}`, { name }) : translate(\"Good evening\");\n\t}\n}\n\n/**\n * Returns a friendly user message based on the current time of day.\n */\nexport function getFriendlyUserMessage() {\n\tconst currentTime = new Date().getHours();\n\tconst messages = (() => {\n\t\tif (currentTime >= 5 && currentTime < 12) {\n\t\t\treturn [\n\t\t\t\tget(\"Have a productive day!\"),\n\t\t\t\tget(\"Make today count!\"),\n\t\t\t\tget(\"Stay focused and positive!\"),\n\t\t\t\tget(\"You got this!\"),\n\t\t\t\tget(\"The world is your oyster\"),\n\t\t\t\tget(\"Set your mind to something new\"),\n\t\t\t\tget(\"Let's start the day right!\"),\n\t\t\t\tget(\"Make the most of your time\"),\n\t\t\t\tget(\"Seize the day!\"),\n\t\t\t\tget(\"Be your best self today\"),\n\t\t\t\tget(\"Keep up the good work!\")\n\t\t\t];\n\t\t} else if (currentTime >= 12 && currentTime < 18) {\n\t\t\treturn [\n\t\t\t\tget(\"How about a quick stretch break?\"),\n\t\t\t\tget(\"Stay hydrated and healthy!\"),\n\t\t\t\tget(\"Take a breather and relax!\"),\n\t\t\t\tget(\"You're doing great!\"),\n\t\t\t\tget(\"Keep pushing forward!\"),\n\t\t\t\tget(\"Enjoy the journey!\"),\n\t\t\t\tget(\"The future is yours\"),\n\t\t\t\tget(\"Stay positive and motivated!\"),\n\t\t\t\tget(\"You're making progress!\"),\n\t\t\t\tget(\"Small steps lead to big wins!\")\n\t\t\t];\n\t\t} else {\n\t\t\treturn [\n\t\t\t\tget(\"Relax and unwind a little.\"),\n\t\t\t\tget(\"Take some time for yourself!\"),\n\t\t\t\tget(\"Be kind to yourself!\"),\n\t\t\t\tget(\"You're capable of great things!\"),\n\t\t\t\tget(\"Stay positive and hopeful!\"),\n\t\t\t\tget(\"Tomorrow's a new day!\"),\n\t\t\t\tget(\"Keep moving forward!\"),\n\t\t\t\tget(\"Take it one step at a time!\")\n\t\t\t];\n\t\t}\n\t})();\n\n\treturn pickRandomItem(messages);\n}\n\n/**\n * Returns a friendly user greeting emoji based on the current time of day.\n */\nexport function getFriendlyUserGreetingEmoji() {\n\tconst currentTime = new Date().getHours();\n\tconst messages = (() => {\n\t\tif (currentTime >= 5 && currentTime < 12) {\n\t\t\treturn [\"☀️\", \"☕️\", \"🌤️\"];\n\t\t} else if (currentTime >= 12 && currentTime < 18) {\n\t\t\treturn [\"☀️\", \"☕️\", \"🌤️\"];\n\t\t} else {\n\t\t\treturn [\"🌆\", \"🌙\", \"🍷\"];\n\t\t}\n\t})();\n\n\treturn pickRandomItem(messages);\n}\n","import { ActionSubject } from \"../action\";\nimport { Ref, Subscription, Workspace } from \"shared\";\n\nexport const workspaceAction = {\n\tsetCurrentWorkspace: new ActionSubject | null>(),\n\tget: new ActionSubject(),\n\tlist: new ActionSubject(),\n\tcreate: new ActionSubject(),\n\tupdate: new ActionSubject(),\n\tremove: new ActionSubject>(),\n\tjoin: new ActionSubject>(),\n\tsetCurrentWorkspaceOrNavigate: new ActionSubject | null>(),\n\tsubscription: new ActionSubject()\n};\n","import { GlobalStore } from \"../store\";\nimport { loading$, success$ } from \"../action\";\nimport { model$, modelList$ } from \"../model/model-list\";\nimport { cmpIds, Id, Ref, takeId, Workspace } from \"shared\";\nimport { workspaceAction } from \"./workspace-action\";\nimport { BehaviorSubject, distinctUntilChanged, filter, Observable } from \"rxjs\";\nimport { getItem, removeItem, setItem } from \"../../util/local-storage\";\nimport { STORAGE_KEYS } from \"../../config\";\nimport { modelStore } from \"../model/model-store\";\nimport { hydrateGQLResult } from \"../../api/gql/gql-util\";\n\nexport class WorkspaceStore extends GlobalStore {\n\tprivate get cachedCurrentWorkspace() {\n\t\treturn (modelStore.absorb(hydrateGQLResult(getItem(STORAGE_KEYS.currentWorkspace))) ?? null) as Workspace | null;\n\t}\n\n\tprivate _latestCurrentWorkspace = this.cachedCurrentWorkspace;\n\tget currentWorkspace() {\n\t\treturn this._latestCurrentWorkspace;\n\t}\n\n\tprivate _currentWorkspaceId: Id | null = this.cachedCurrentWorkspace?.id ?? null;\n\tprivate currentWorkspaceId$ = new BehaviorSubject(takeId(this._currentWorkspaceId));\n\tprivate uniqueCurrentWorkspaceId = this.currentWorkspaceId$.pipe(distinctUntilChanged((a, b) => cmpIds(a, b)));\n\n\tmodel$ = {\n\t\tcurrentWorkspaceId: this.uniqueCurrentWorkspaceId,\n\t\tcurrentWorkspace: model$([this.uniqueCurrentWorkspaceId]),\n\t\tworkspacesLoading: loading$(workspaceAction.list),\n\t\tworkspaces: modelList$([\n\t\t\t[workspaceAction.list, \"next\"],\n\t\t\t[workspaceAction.create, \"prepend\"],\n\t\t\t[workspaceAction.remove, \"remove\"],\n\t\t\t[\n\t\t\t\tsuccess$(workspaceAction.setCurrentWorkspace).pipe(filter((workspace) => workspace != null)) as Observable<\n\t\t\t\t\tRef\n\t\t\t\t>,\n\t\t\t\t\"append\"\n\t\t\t]\n\t\t])\n\t};\n\n\tget currentWorkspaceId() {\n\t\treturn this._currentWorkspaceId;\n\t}\n\n\tprotected subscriptions() {\n\t\treturn [\n\t\t\tthis.model$.currentWorkspaceId.subscribe((workspaceId) => {\n\t\t\t\tthis._currentWorkspaceId = workspaceId;\n\t\t\t}),\n\t\t\tsuccess$(workspaceAction.setCurrentWorkspace).subscribe((workspace) => {\n\t\t\t\tthis.currentWorkspaceId$.next(takeId(workspace));\n\t\t\t}),\n\t\t\tthis.model$.currentWorkspace.subscribe((workspace) => {\n\t\t\t\tthis._latestCurrentWorkspace = workspace;\n\t\t\t\tif (workspace != null) {\n\t\t\t\t\tsetItem(STORAGE_KEYS.currentWorkspace, workspace);\n\t\t\t\t} else {\n\t\t\t\t\tremoveItem(STORAGE_KEYS.currentWorkspace);\n\t\t\t\t}\n\t\t\t})\n\t\t];\n\t}\n}\n\nexport const workspaceStore = new WorkspaceStore();\n","import { COLOR_MODE_COLORS, ColorMode } from \"shared\";\nimport { DEFAULT_COLOR_MODE, STORAGE_KEYS } from \"../config\";\nimport { getItem, setItem } from \"./local-storage\";\n\n/**\n * Gets the color mode colors\n * @param mode\n */\nexport function getColorModeColors(mode: ColorMode) {\n\treturn COLOR_MODE_COLORS[mode];\n}\n\n/**\n * Sets the color mode in local storage\n * @param mode\n */\nexport function saveColorMode(mode: ColorMode) {\n\tsetItem(STORAGE_KEYS.colorMode, mode);\n}\n\n/**\n * Gets the color mode from local storage\n */\nexport function getColorModeFromStorage(): ColorMode {\n\tconst mode = getItem(STORAGE_KEYS.colorMode);\n\n\t// Validate the color mode\n\tif (mode == null || getColorModeColors(mode) == null) {\n\t\treturn DEFAULT_COLOR_MODE;\n\t}\n\n\treturn mode;\n}\n\nexport function isColorModeDark(mode: ColorMode | undefined) {\n\treturn mode != null && mode !== \"light\";\n}\n","import { WebDialog } from \"web-dialog\";\nimport { customElement } from \"lit/decorators/custom-element.js\";\nimport { BsDialogCloseButton } from \"./dialog-close-button\";\n\nconst $template = document.createElement(\"template\");\n$template.innerHTML = `\n \n`;\n\n@customElement(\"web-dialog-with-close\")\nexport class WebDialogWithClose extends WebDialog {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.$dialog.appendChild($template.content.cloneNode(true));\n\t}\n\n\tget $closeButton() {\n\t\treturn this.$dialog.querySelector(\"#close-button\") as BsDialogCloseButton;\n\t}\n\n\tget fill() {\n\t\treturn this.$closeButton.fill;\n\t}\n\n\tset fill(value: boolean) {\n\t\tthis.$closeButton.fill = value;\n\t}\n}\n","import { openDialog, WebDialog } from \"web-dialog\";\nimport { html, render, unsafeCSS } from \"lit\";\nimport { stopEvent } from \"./util\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport { prepareDialogForWrapper } from \"../atoms/dialog-wrapper\";\nimport \"../atoms/dialog-wrapper\";\nimport { getVersionTag, IDEA_WIDGET_IDS } from \"../config\";\nimport { ColorMode, hasValue, takeId } from \"shared\";\nimport { getBestName } from \"./user-greeting\";\nimport { sessionStore } from \"../state/session/session-store\";\nimport { workspaceStore } from \"../state/workspace/workspace-store\";\nimport { getColorModeFromStorage } from \"./color-mode-util\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport { WebDialogWithClose } from \"../atoms/web-dialog-with-close\";\nimport { get, translate } from \"lit-translate\";\n\nconst IDEA_WIDGET_URL = \"https://idea-widget.ideanote.io\";\n\n/**\n * Opens a dialog with the given text.\n * @param text\n */\nexport function openAlert(text: string) {\n\treturn openDialog({\n\t\tinitialize: () => {\n\t\t\tconst $d = new WebDialog();\n\t\t\t$d.style.setProperty(\"--dialog-max-width\", \"300px\");\n\t\t\tprepareDialogForWrapper($d);\n\t\t\treturn $d;\n\t\t},\n\t\tcenter: true,\n\t\t$content: ($dialog) =>\n\t\t\trender(\n\t\t\t\thtml`\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t${text}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t`,\n\t\t\t\t$dialog\n\t\t\t)\n\t});\n}\n\n/**\n * Opens a dialog with the given text and a red confirm button.\n * @param text\n * @param confirmText\n * @param cancelText\n */\nexport function openConfirmDelete({\n\ttext,\n\tconfirmText,\n\tcancelText\n}: {\n\ttext: string;\n\tconfirmText?: string;\n\tcancelText?: string;\n}) {\n\treturn openConfirm({\n\t\ttext,\n\t\tconfirmText: confirmText || get(\"Yes, delete\"),\n\t\tcancelText: cancelText || get(\"Cancel\"),\n\t\tisDestructive: true\n\t});\n}\n\n/**\n * Opens a dialog with the given text and a confirm button.\n * @param text\n * @param destructive\n * @param confirmText\n * @param cancelText\n * @param isHtml\n * @param maxWidth\n */\nexport function openConfirm({\n\ttext,\n\tisDestructive,\n\tconfirmText,\n\tcancelText,\n\tisHtml,\n\tmaxWidth\n}: {\n\ttext: string;\n\tisDestructive?: boolean;\n\tconfirmText?: string;\n\tcancelText?: string;\n\tisHtml?: boolean;\n\tmaxWidth?: number;\n}): Promise {\n\treturn openDialog({\n\t\tinitialize: () => {\n\t\t\tconst $d = new WebDialog();\n\t\t\t$d.style.setProperty(\"--dialog-max-width\", `${maxWidth || 300}px`);\n\t\t\treturn $d;\n\t\t},\n\t\tcenter: true,\n\t\t$content: ($dialog) =>\n\t\t\trender(\n\t\t\t\thtml`\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t${isHtml ? unsafeHTML(text) : text}\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t`,\n\t\t\t\t$dialog\n\t\t\t)\n\t}).resolver;\n}\n\n/**\n * Opens a dialog that makes the user feel awfully good.\n * @param title\n * @param text\n * @param icon\n * @param img\n * @param color\n * @param buttonText\n */\nexport function openAwesomeDialog({\n\ttitle,\n\ttext,\n\ticon = \"🥳\",\n\timg,\n\tcolor = \"#ffb200\",\n\tbuttonText\n}: {\n\ttitle?: string;\n\ttext: string;\n\ticon?: string;\n\timg?: string;\n\tcolor?: string;\n\tbuttonText?: string;\n}) {\n\ttitle = title ?? get(\"Congratulations!\");\n\tbuttonText = buttonText ?? get(\"Okay\");\n\n\timport(\"../atoms/awesome-card\");\n\treturn openDialog({\n\t\tinitialize: () => {\n\t\t\tconst $d = new WebDialogWithClose();\n\t\t\t$d.style.setProperty(\"--dialog-max-width\", \"500px\");\n\t\t\t$d.style.setProperty(\"--dialog-padding\", \"0\");\n\t\t\treturn $d;\n\t\t},\n\t\tcenter: true,\n\t\t$content: ($dialog) =>\n\t\t\trender(\n\t\t\t\thtml`\n\t\t\t\t\t $dialog.close(true)}\"\n\t\t\t\t\t>\n\t\t\t\t`,\n\t\t\t\t$dialog\n\t\t\t)\n\t});\n}\n\n/**\n * Opens a dialog where the user can enter a prompt.\n * @param text\n * @param placeholder\n * @param defaultValue\n * @param required\n */\nexport function openPrompt({\n\ttext,\n\tplaceholder,\n\tdefaultValue,\n\trequired\n}: {\n\ttext: string;\n\tplaceholder?: string;\n\tdefaultValue?: string;\n\trequired?: boolean;\n}): Promise {\n\treturn openDialog({\n\t\tinitialize: () => {\n\t\t\tconst $d = new WebDialog();\n\t\t\t$d.style.setProperty(\"--dialog-max-width\", \"500px\");\n\t\t\treturn $d;\n\t\t},\n\t\tcenter: true,\n\t\t$content: ($dialog) =>\n\t\t\trender(\n\t\t\t\thtml`\n\t\t\t\t\t {\n\t\t\t\t\t\t\tstopEvent(e);\n\t\t\t\t\t\t\tconst text = (new FormData(e.target as HTMLFormElement).get(\"text\") as string).trim();\n\t\t\t\t\t\t\t$dialog.close(text);\n\t\t\t\t\t\t}}\"\n\t\t\t\t\t>\n\t\t\t\t\t\t${text}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tconst $submit = $dialog.querySelector(\"button[type=submit]\") as HTMLButtonElement;\n\t\t\t\t\t\t\t\t\t$submit.click();\n\t\t\t\t\t\t\t\t}}\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t${translate(\"Done\")}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t`,\n\t\t\t\t$dialog\n\t\t\t)\n\t}).resolver;\n}\n\nexport function openReportFeedback({ text, debug }: { text?: string; debug?: string } = {}) {\n\tconst workspace = workspaceStore.currentWorkspace;\n\tconst user = sessionStore.sessionUser;\n\n\treturn openIdeanoteWidget({\n\t\tid: IDEA_WIDGET_IDS.feedback,\n\t\ttitle: get(\"Feedback\"),\n\t\ttext: get(\"Report an issue or suggest a feature to Ideamap\"),\n\t\t// Idea template form field ID on https://ideamap.ideanote.io/settings/idea-templates\n\t\tdefaultValues: Object.fromEntries(\n\t\t\t[\n\t\t\t\t[\"a1104f08-cd7b-4bd3-9ed8-e6540afa38ec\", text],\n\t\t\t\t[\"444bad8c-ac09-4ee6-86ff-14f1cfab215a\", workspace?.name],\n\t\t\t\t[\"5dee5612-5c60-43b7-959e-e986a789243a\", takeId(workspace)],\n\t\t\t\t[\"0817f76d-3304-47c8-9eb2-5f037331ec3a\", getBestName(user?.name)],\n\t\t\t\t[\"07dba0ac-3bb6-43eb-ab08-fac89df4bf26\", takeId(user)],\n\t\t\t\t[\"ce842858-0184-4903-9dd3-c03de04e5807\", user?.email],\n\t\t\t\t[\"6f73d8e8-ce9a-483c-9475-5f184160122b\", debug],\n\t\t\t\t[\"036c59f9-9326-4717-b4a4-435b0543970a\", getVersionTag()]\n\t\t\t].filter(([id, value]) => hasValue(value))\n\t\t) as Record\n\t});\n}\n\nexport async function openSurveyAlert() {\n\tif (\n\t\tawait openAwesomeDialog({\n\t\t\ttitle: get(\"Do you have time for a quick survey?\"),\n\t\t\ttext: get(\"We would like to learn how to improve. Please take a moment to tell us about your experience.\"),\n\t\t\tbuttonText: get(\"Start survey\"),\n\t\t\ticon: \"🔬\",\n\t\t\tcolor: \"#d1d3d9\"\n\t\t}).resolver\n\t) {\n\t\topenSurvey();\n\t}\n}\n\nexport function openSurvey() {\n\tconst workspace = workspaceStore.currentWorkspace;\n\tconst user = sessionStore.sessionUser;\n\treturn openIdeanoteWidget({\n\t\tid: IDEA_WIDGET_IDS.survey,\n\t\ttitle: get(\"Ideamap survey\"),\n\t\ttext: get(\"Thank you for taking the time to help us improve Ideamap!\"),\n\t\tmaxWidth: 800,\n\t\t// Idea template form field ID on https://ideamap.ideanote.io/settings/idea-templates\n\t\tdefaultValues: Object.fromEntries(\n\t\t\t[\n\t\t\t\t[\"ef145e65-2cb6-4f93-ad9d-43b5fc69f455\", workspace?.name],\n\t\t\t\t[\"335cc849-7204-4507-babd-48fa87c51097\", takeId(workspace)],\n\t\t\t\t[\"f604576c-19ee-4399-8420-a145b306442a\", getBestName(user?.name)],\n\t\t\t\t[\"72aeffe4-9785-4372-867f-16d6a8a4aae6\", takeId(user)],\n\t\t\t\t[\"aed94b7a-0bcd-49af-bdb8-74b7d56db0c4\", getVersionTag()]\n\t\t\t].filter(([id, value]) => hasValue(value))\n\t\t) as Record\n\t});\n}\n\nexport function openIdeanoteWidget({\n\tid,\n\tdefaultValues,\n\ttitle,\n\ttext,\n\tmaxWidth,\n\tcolorMode = getColorModeFromStorage()\n}: {\n\tid: string;\n\tdefaultValues?: Record;\n\ttitle: string;\n\ttext: string;\n\tmaxWidth?: number;\n\tcolorMode?: ColorMode | \"auto\";\n}) {\n\tconst params = new URLSearchParams({\n\t\tconfig: id,\n\t\t\"theme.colorMode\": colorMode\n\t});\n\n\tif (defaultValues != null) {\n\t\tparams.set(\"preferences.defaultValues\", JSON.stringify(defaultValues));\n\t}\n\n\tconst src = `${IDEA_WIDGET_URL}?${params.toString()}`;\n\n\treturn openDialog({\n\t\tinitialize: () => {\n\t\t\tconst $d = new WebDialogWithClose();\n\t\t\t$d.style.setProperty(\"--dialog-max-width\", `${maxWidth || 600}px`);\n\t\t\tprepareDialogForWrapper($d);\n\t\t\treturn $d;\n\t\t},\n\t\tcenter: true,\n\t\t$content: ($dialog) =>\n\t\t\trender(\n\t\t\t\thtml`\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t${title}\n\t\t\t\t\t\t\t${text}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t`,\n\t\t\t\t$dialog\n\t\t\t)\n\t});\n}\n","import { debounce } from \"shared\";\nimport { TrackerPageViewData, TrackerService, TrackerServiceProps } from \"./trackers/tracker-service\";\nimport { IS_DEBUGGING, ROUTES } from \"../config\";\n\nconst SCRAMBLED_PATHS = [ROUTES.room(\"\"), ROUTES.joinRoom(\"\"), ROUTES.joinWorkspace(\"\")];\n\n/**\n * Scrambles a path so IDs are not leaked.\n * @param path\n */\nfunction scramblePath(path: string) {\n\tfor (const p of SCRAMBLED_PATHS) {\n\t\tif (path.startsWith(p)) {\n\t\t\treturn `${p}:id`;\n\t\t}\n\t}\n\treturn path;\n}\n\n/**\n * Build up and scramble URL data.\n */\nfunction getPageViewData(): TrackerPageViewData {\n\treturn {\n\t\treferrer: previousHref,\n\t\turl: scramblePath(location.pathname),\n\t\thostname: location.hostname,\n\t\tlanguage: navigator.language,\n\t\ttitle: document.title,\n\t\tscreen: `${window.screen.width}x${window.screen.height}`\n\t};\n}\n\n// Keep track of previous URL for referrer\nlet previousHref = document.referrer;\n\n/**\n * Tracking service.\n */\nexport class EventService {\n\tprotected trackers: TrackerService[] = [];\n\tprotected props: TrackerServiceProps = {};\n\n\tget isAnalyticsDisabled() {\n\t\treturn this.props.workspace?.data?.disableAnalytics ?? false;\n\t}\n\n\thasTracker(tracker: TrackerService) {\n\t\treturn this.trackers.includes(tracker);\n\t}\n\n\taddTrackersAndSetup(...trackers: TrackerService[]) {\n\t\tthis.trackers.push(...trackers);\n\t\tfor (const tracker of trackers) {\n\t\t\ttracker.setup?.(this.props);\n\t\t}\n\t}\n\n\tsetProps(props: TrackerServiceProps): Promise | void {\n\t\tthis.props = { ...this.props, ...props };\n\t\tif (this.isAnalyticsDisabled) return;\n\n\t\tif (IS_DEBUGGING) {\n\t\t\tconsole.log(`%c[props]: set props`, \"color: cyan\", this.props);\n\t\t}\n\n\t\tfor (const tracker of this.trackers) {\n\t\t\ttracker.setProps?.(this.props);\n\t\t}\n\t}\n\n\ttrackPageView({ debounceMs = 300 }: { debounceMs?: number } = {}) {\n\t\tif (this.isAnalyticsDisabled) return;\n\n\t\tdebounce(\n\t\t\t() => {\n\t\t\t\tconst data = getPageViewData();\n\t\t\t\tpreviousHref = data.url;\n\n\t\t\t\tif (IS_DEBUGGING) {\n\t\t\t\t\tconsole.log(`%c[view]: ${data.url} `, \"color: cyan\", { data, props: this.props });\n\t\t\t\t}\n\n\t\t\t\tfor (const tracker of this.trackers) {\n\t\t\t\t\ttracker.trackPageView?.({ data, props: this.props });\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"track-page-view\",\n\t\t\tdebounceMs\n\t\t);\n\t}\n\n\t/**\n\t * Tracks an event.\n\t * @param name\n\t * @param data\n\t */\n\tasync trackEvent(name: string, data?: Object) {\n\t\tif (this.isAnalyticsDisabled) return;\n\n\t\tif (IS_DEBUGGING) {\n\t\t\tconsole.log(`%c[event]: ${name}`, \"color: cyan\", { data, props: this.props });\n\t\t}\n\n\t\tawait Promise.all(\n\t\t\tthis.trackers.map(async (tracker) => {\n\t\t\t\ttry {\n\t\t\t\t\tawait tracker.trackEvent?.(name, { data, props: this.props, pageData: getPageViewData() });\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Ignore errors\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\t}\n}\n\nexport const eventService = new EventService();\n","import { ColorModeColors, Palette, pascalToKebabCase, ThemeColor } from \"shared\";\n\n/**\n * Sets up a palette of colors as CSS properties.\n * @param palette\n */\nexport function setPaletteCSSProperties(palette: Palette) {\n\tfor (const [name, colors] of Object.entries(palette)) {\n\t\tsetThemeColorCSSProperties(pascalToKebabCase(name), colors);\n\t}\n}\n\n/**\n * Sets up theme color CSS properties.\n * @param name\n * @param colors\n */\nexport function setThemeColorCSSProperties(name: string, colors: ThemeColor) {\n\tfor (const [variant, color] of Object.entries(colors)) {\n\t\tif (variant === \"contrast\") {\n\t\t\tsetThemeColorCSSProperties(`${name}-contrast`, color);\n\t\t\tcontinue;\n\t\t}\n\n\t\tsetThemeColorCSSProperty(`${name}-${variant}`, color);\n\t}\n}\n\n/**\n * Sets up a theme color CSS property.\n * @param cssVarName\n * @param color\n */\nexport function setThemeColorCSSProperty(cssVarName: string, color: string) {\n\tdocument.documentElement.style.setProperty(`--${cssVarName}`, color);\n}\n\n/**\n * Sets up color mode colors as CSS properties.\n * @param colors\n */\nexport function setColorModeColors(colors: ColorModeColors) {\n\tdocument.documentElement.classList.toggle(\"dark\", colors.isDark ?? false);\n\tfor (const [name, color] of Object.entries(colors)) {\n\t\tif (name === \"isDark\") continue;\n\t\tif (name === \"shade\") {\n\t\t\tsetThemeColorCSSProperties(\"shade\", color);\n\t\t\tcontinue;\n\t\t}\n\n\t\tsetThemeColorCSSProperty(pascalToKebabCase(name), color);\n\t}\n}\n","import { ActionSubjectCached, runAction } from \"../action\";\nimport { ColorMode } from \"shared\";\n\nexport const themeAction = {\n\tsetColorMode: new ActionSubjectCached()\n};\n\nexport const setColorMode = (mode: ColorMode) => runAction(themeAction.setColorMode, () => mode);\n","import { GlobalStore } from \"../store\";\nimport { themeAction } from \"./theme-action\";\nimport { success$ } from \"../action\";\n\nexport class ThemeStore extends GlobalStore {\n\tmodel$ = {\n\t\tcolorMode: success$(themeAction.setColorMode)\n\t};\n}\n\nexport const themeStore = new ThemeStore();\n","import { app } from \"@microsoft/teams-js\";\nimport { openConfirm } from \"./dialog-helper\";\nimport { teamsStore } from \"../state/teams/teams-store\";\n\n/**\n * A hacky way of determining if the app is running in Teams.\n * The reason we need this is because the Teams SDK is async.\n * If location.search includes \"locale=en-us&theme=default\", we assume the app is running in Teams.\n */\nexport function guessIsTeamsContext() {\n\treturn location.search.includes(\"locale\");\n}\n\nexport function getTeamsOrganizationName(context?: app.Context): string | undefined {\n\treturn context?.sharePointSite?.mySiteDomain?.replace(\"-my.sharepoint.com\", \"\") ?? \"Microsoft Teams\";\n}\n\n/**\n * In teams, external links need to give the user a confirmation dialog before opening the link.\n */\nexport function ensureExternalLinkDialog() {\n\twindow.addEventListener(\"click\", async (e: MouseEvent) => {\n\t\t// Find the target by using the composed path to get the element through the shadow boundaries.\n\t\tconst $anchor = ((\"composedPath\" in e) as any)\n\t\t\t? e.composedPath().find(($elem) => $elem instanceof HTMLAnchorElement)\n\t\t\t: e.target;\n\n\t\t// Abort if the event is not about the anchor tag\n\t\tif ($anchor == null || !($anchor instanceof HTMLAnchorElement)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure the anchor is an external link\n\t\t// Make sure the link start with \"http\", we dont want to stop \"blob:\" links\n\t\tconst href = $anchor.href;\n\t\tif (href.length > 0 && href.startsWith(\"http\") && !href.startsWith(location.origin)) {\n\t\t\te.preventDefault();\n\t\t\tawait openExternalLinkWithConfirm(href);\n\t\t}\n\t});\n}\n\n/**\n * Opens an external link with confirm if necessary.\n * @param href\n */\nexport async function openExternalLink(href: string) {\n\tif (teamsStore.initialized) {\n\t\treturn openExternalLinkWithConfirm(href);\n\t} else {\n\t\twindow.open(href, \"_blank\");\n\t}\n}\n\n/**\n * Shows a confirmation dialog before opening an external link.\n * @param href\n */\nexport async function openExternalLinkWithConfirm(href: string) {\n\tif (\n\t\tawait openConfirm({\n\t\t\ttext: `Do you want to open the external website \"${href}\" in another tab?`\n\t\t})\n\t) {\n\t\twindow.open(href, \"_blank\");\n\t}\n}\n","// Initialize deferredPrompt for use later to show browser install prompt.\nlet deferredPrompt: BeforeInstallPromptEvent | undefined = undefined;\n\n/**\n * Shows the install prompt if possible.\n */\nexport async function showInstallPrompt() {\n\tif (deferredPrompt == null) return;\n\tdeferredPrompt.prompt();\n\tdeferredPrompt = undefined;\n}\n\n/**\n * Returns true if the deferredPrompt is not null.\n */\nexport function canShowInstallPrompt() {\n\treturn deferredPrompt != null;\n}\n\n/**\n * Listens for the capture install prompt event.\n */\nexport function captureInstallPromptEvent() {\n\twindow.addEventListener(\"beforeinstallprompt\", (e: Event) => {\n\t\te.preventDefault();\n\t\tdeferredPrompt = e as BeforeInstallPromptEvent;\n\t});\n}\n","import{_$LH as o}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{D:t}=o,i=o=>null===o||\"object\"!=typeof o&&\"function\"!=typeof o,n={HTML:1,SVG:2},e=(o,t)=>void 0===t?void 0!==o?._$litType$:o?._$litType$===t,l=o=>null!=o?._$litType$?.h,c=o=>void 0!==o?._$litDirective$,d=o=>o?._$litDirective$,f=o=>void 0===o.strings,s=()=>document.createComment(\"\"),r=(o,i,n)=>{const e=o._$AA.parentNode,l=void 0===i?o._$AB:i._$AA;if(void 0===n){const i=e.insertBefore(s(),l),c=e.insertBefore(s(),l);n=new t(i,c,o,o.options)}else{const t=n._$AB.nextSibling,i=n._$AM,c=i!==o;if(c){let t;n._$AQ?.(o),n._$AM=o,void 0!==n._$AP&&(t=o._$AU)!==i._$AU&&n._$AP(t)}if(t!==l||c){let o=n._$AA;for(;o!==t;){const t=o.nextSibling;e.insertBefore(o,l),o=t}}}return n},v=(o,t,i=o)=>(o._$AI(t,i),o),u={},m=(o,t=u)=>o._$AH=t,p=o=>o._$AH,h=o=>{o._$AP?.(!1,!0);let t=o._$AA;const i=o._$AB.nextSibling;for(;t!==i;){const o=t.nextSibling;t.remove(),t=o}},j=o=>{o._$AR()};export{n as TemplateResultType,j as clearPart,p as getCommittedValue,d as getDirectiveClass,r as insertPart,l as isCompiledTemplateResult,c as isDirectiveResult,i as isPrimitive,f as isSingleExpression,e as isTemplateResult,h as removePart,v as setChildPartValue,m as setCommittedValue};\n//# sourceMappingURL=directive-helpers.js.map\n","import{noChange as e}from\"../lit-html.js\";import{directive as s,Directive as t,PartType as r}from\"../directive.js\";import{getCommittedValue as l,setChildPartValue as o,insertPart as i,removePart as n,setCommittedValue as f}from\"../directive-helpers.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst u=(e,s,t)=>{const r=new Map;for(let l=s;l<=t;l++)r.set(e[l],l);return r},c=s(class extends t{constructor(e){if(super(e),e.type!==r.CHILD)throw Error(\"repeat() can only be used in text expressions\")}ht(e,s,t){let r;void 0===t?t=s:void 0!==s&&(r=s);const l=[],o=[];let i=0;for(const s of e)l[i]=r?r(s,i):i,o[i]=t(s,i),i++;return{values:o,keys:l}}render(e,s,t){return this.ht(e,s,t).values}update(s,[t,r,c]){const d=l(s),{values:p,keys:a}=this.ht(t,r,c);if(!Array.isArray(d))return this.dt=a,p;const h=this.dt??=[],v=[];let m,y,x=0,j=d.length-1,k=0,w=p.length-1;for(;x<=j&&k<=w;)if(null===d[x])x++;else if(null===d[j])j--;else if(h[x]===a[k])v[k]=o(d[x],p[k]),x++,k++;else if(h[j]===a[w])v[w]=o(d[j],p[w]),j--,w--;else if(h[x]===a[w])v[w]=o(d[x],p[w]),i(s,v[w+1],d[x]),x++,w--;else if(h[j]===a[k])v[k]=o(d[j],p[k]),i(s,d[x],d[j]),j--,k++;else if(void 0===m&&(m=u(a,k,w),y=u(h,x,j)),m.has(h[x]))if(m.has(h[j])){const e=y.get(a[k]),t=void 0!==e?d[e]:null;if(null===t){const e=i(s,d[x]);o(e,p[k]),v[k]=e}else v[k]=o(t,p[k]),i(s,d[x],t),d[e]=null;k++}else n(d[j]),j--;else n(d[x]),x++;for(;k<=w;){const e=i(s,v[w+1]);o(e,p[k]),v[k++]=e}for(;x<=j;){const e=d[x++];null!==e&&n(e)}return this.dt=a,f(s,v),e}});export{c as repeat};\n//# sourceMappingURL=repeat.js.map\n","import { css, html, LitElement } from \"lit\";\nimport { customElement } from \"lit/decorators/custom-element.js\";\nimport { sharedStyles } from \"../styles/shared\";\nimport \"./icon\";\nimport \"./form-item\";\nimport { property } from \"lit/decorators/property.js\";\nimport { promisifyAnimation, wait } from \"../util/util\";\nimport { repeat } from \"lit/directives/repeat.js\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport { Icon } from \"../../icons\";\nimport { when } from \"lit/directives/when.js\";\n\nconst TOAST_CONTAINER_ID = \"toast-container\";\n\nexport interface ToastButton {\n\ttext: string;\n\timportant?: boolean;\n\tonClick?: () => void;\n}\n\n/**\n * Returns the toast container, making sure only one is in the DOM at a time.\n */\nexport function getToastContainer(): HTMLElement {\n\tlet $container = document.getElementById(TOAST_CONTAINER_ID);\n\tif ($container == null) {\n\t\t$container = document.createElement(\"div\");\n\t\t$container.id = TOAST_CONTAINER_ID;\n\t\tObject.assign($container.style, {\n\t\t\tposition: \"fixed\",\n\t\t\tleft: \"0\",\n\t\t\tbottom: \"0\",\n\t\t\tzIndex: \"1234567899\",\n\t\t\tdisplay: \"flex\",\n\t\t\tjustifyContent: \"flex-start\",\n\t\t\talignItems: \"flex-start\",\n\t\t\tflexDirection: \"column\"\n\t\t});\n\n\t\tdocument.documentElement.appendChild($container);\n\t}\n\n\treturn $container;\n}\n\nexport function countToastsWithId(id: string) {\n\treturn document.querySelectorAll(`#${id}`).length;\n}\n\nexport function hideToastWithId(id: string) {\n\tconst $existingToast = document.querySelector(`#${id}`) as BsToast;\n\tif ($existingToast != null) {\n\t\t$existingToast.close?.(true);\n\t\t$existingToast.remove();\n\t}\n}\n\nexport async function showToast(\n\tmessage: string,\n\t{\n\t\tduration = 3000,\n\t\tid,\n\t\tbuttons,\n\t\ticon,\n\t\tlabel\n\t}: { duration?: number; id?: string; buttons?: ToastButton[]; icon?: Icon; label?: string } = {}\n) {\n\treturn new Promise(async (res) => {\n\t\tconst $container = getToastContainer();\n\n\t\t// Remove existing toast with the ID\n\t\tif (id != null) {\n\t\t\thideToastWithId(id);\n\t\t}\n\n\t\tconst $toast = new BsToast();\n\t\t$toast.id = id || \"\";\n\t\t$toast.message = message;\n\t\t$toast.buttons = buttons || [];\n\t\t$toast.icon = icon;\n\t\t$toast.label = label;\n\t\tconst animation = $toast.animate(\n\t\t\t{\n\t\t\t\topacity: [0, 1],\n\t\t\t\ttransform: [\"translateY(100%)\", \"translateY(0)\"]\n\t\t\t},\n\t\t\t{ duration: 130, easing: \"ease-out\" }\n\t\t);\n\t\t$container.appendChild($toast);\n\t\tconst close = async (cancelAnimation?: boolean) => {\n\t\t\tif (cancelAnimation) {\n\t\t\t\tanimation.cancel();\n\t\t\t} else {\n\t\t\t\tanimation.reverse();\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tawait promisifyAnimation(animation);\n\t\t\t} catch (err) {\n\t\t\t\t// Animation was cancelled\n\t\t\t}\n\t\t\t$toast.remove();\n\t\t\tres(undefined);\n\t\t};\n\n\t\t$toast.close = close;\n\n\t\tif (duration != null && duration != Infinity) {\n\t\t\tawait wait(duration);\n\t\t\tawait close();\n\t\t}\n\t});\n}\n\n@customElement(\"bs-toast\")\nexport class BsToast extends LitElement {\n\t@property({ type: String }) message: string | undefined;\n\t@property({ type: String }) label: string | undefined;\n\t@property({ type: Object }) close: ((cancelAnimation?: boolean) => Promise) | undefined;\n\t@property({ type: Array }) buttons: ToastButton[] = [];\n\t@property({ type: Object }) icon: Icon | undefined;\n\n\tstatic get styles() {\n\t\treturn [\n\t\t\tsharedStyles,\n\t\t\tcss`\n\t\t\t\t:host {\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t\tmargin: 0 var(--space-m) var(--space-m) var(--space-m);\n\t\t\t\t\tbackground: var(--dark);\n\t\t\t\t\tcolor: var(--light);\n\t\t\t\t\tborder-radius: var(--border-radius-m);\n\t\t\t\t\tpadding: var(--space-s) var(--space-m);\n\t\t\t\t\tanimation: float 6s ease-in-out infinite;\n\t\t\t\t\ttransform: translateY(100%);\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tgap: var(--space-m);\n\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t}\n\n\t\t\t\t#message {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tgap: var(--space-s);\n\t\t\t\t\talign-items: center;\n\t\t\t\t}\n\n\t\t\t\t#buttons {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tgap: var(--space-s);\n\t\t\t\t\tflex-shrink: 0;\n\t\t\t\t\tflex-grow: 1;\n\t\t\t\t\tjustify-content: flex-end;\n\t\t\t\t}\n\n\t\t\t\t@keyframes float {\n\t\t\t\t\t0% {\n\t\t\t\t\t\tbox-shadow: 0 2px 10px 0px rgba(0, 0, 0, 0.6);\n\t\t\t\t\t\ttransform: translatey(0px);\n\t\t\t\t\t}\n\t\t\t\t\t50% {\n\t\t\t\t\t\tbox-shadow: 0 15px 10px 0px rgba(0, 0, 0, 0.2);\n\t\t\t\t\t\ttransform: translatey(-10px);\n\t\t\t\t\t}\n\t\t\t\t\t100% {\n\t\t\t\t\t\tbox-shadow: 0 2px 10px 0px rgba(0, 0, 0, 0.6);\n\t\t\t\t\t\ttransform: translatey(0px);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t`\n\t\t];\n\t}\n\n\trender() {\n\t\tconst { message, buttons, icon, label } = this;\n\t\treturn html`\n\t\t\t
this.close?.()}\">\n\t\t\t\t${icon != null ? html` ` : \"\"}\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t${when(message, () => html`${message}`)}\n\t\t\t\t\t\t${when(label, () => html`${label}`)}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\t${buttons.length > 0\n\t\t\t\t? html`\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t${repeat(\n\t\t\t\t\t\t\t\tbuttons,\n\t\t\t\t\t\t\t\t({ text, onClick, important }) => html`\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tthis.close?.();\n\t\t\t\t\t\t\t\t\t\t\tonClick?.();\n\t\t\t\t\t\t\t\t\t\t}}\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
\n\t\t\t\t `\n\t\t\t\t: undefined}\n\t\t`;\n\t}\n}\n","import {\n\tAIActionAttributeKind,\n\tAIActionContentLengthKind,\n\tAIActionFormItemKind,\n\tAIModelKind,\n\tAISensitivityKind,\n\tAPIError,\n\tAuthProviderKind,\n\tColorMode,\n\tCopilotStateKind,\n\tDEFAULT_LANGUAGE_CODE,\n\tEntityKind,\n\tfindBestLanguageCode,\n\tIdeaKind,\n\tLanguageCode,\n\tMindmapLayoutKind,\n\tPlanIntervalKind,\n\tPollData,\n\tPollKind,\n\tRobotGroupKind,\n\tRoomAccessRoleKind,\n\tStabilityAiStylePreset,\n\tWorkspaceAccessRankKind,\n\tWorkspaceKind\n} from \"shared\";\nimport { ExportKind } from \"./export/export-util\";\nimport { get } from \"lit-translate\";\n\nexport function entityToNameWithCount(kind: EntityKind, count: number) {\n\tconst name = entityToName(kind, count === 1);\n\treturn `${count} ${name.toLowerCase()}`;\n}\n\nexport function entityToName(kind: EntityKind, singular?: boolean) {\n\tswitch (kind) {\n\t\tcase \"mindmap\":\n\t\t\treturn singular ? get(\"Mindmap\") : get(\"Mindmaps\");\n\t\tcase \"idea\":\n\t\t\treturn singular ? get(\"Idea\") : get(\"Ideas\");\n\t\tcase \"question\":\n\t\t\treturn singular ? get(\"Question\") : get(\"Questions\");\n\t\tcase \"room\":\n\t\t\treturn singular ? get(\"Room\") : get(\"Rooms\");\n\t\tcase \"user\":\n\t\t\treturn singular ? get(\"User\") : get(\"Users\");\n\t\tcase \"challenge\":\n\t\t\treturn singular ? get(\"Challenge\") : get(\"Challenges\");\n\t\tcase \"group\":\n\t\t\treturn singular ? get(\"Group\") : get(\"Groups\");\n\t\tcase \"item\":\n\t\t\treturn singular ? get(\"Item\") : get(\"Items\");\n\t\tcase \"association\":\n\t\t\treturn singular ? get(\"Association\") : get(\"Associations\");\n\t\tcase \"topic\":\n\t\t\treturn singular ? get(\"Topic\") : get(\"Topics\");\n\t\tcase \"member\":\n\t\t\treturn singular ? get(\"Member\") : get(\"Members\");\n\t\tcase \"people\":\n\t\t\treturn singular ? get(\"Person\") : get(\"People\");\n\t\tcase \"match\":\n\t\t\treturn singular ? get(\"Match\") : get(\"Matches\");\n\t\tcase \"inspiration\":\n\t\t\treturn singular ? get(\"Inspiration\") : get(\"Inspirations\");\n\t\tcase \"vote\":\n\t\t\treturn singular ? get(\"Vote\") : get(\"Votes\");\n\t\tcase \"photo\":\n\t\t\treturn singular ? get(\"Photo\") : get(\"Photos\");\n\t\tcase \"participant\":\n\t\t\treturn singular ? get(\"Participant\") : get(\"Participants\");\n\t\tcase \"text\":\n\t\t\treturn singular ? get(\"Text\") : get(\"Texts\");\n\t\tcase \"image\":\n\t\t\treturn singular ? get(\"Image\") : get(\"Images\");\n\t\tcase \"file\":\n\t\t\treturn singular ? get(\"File\") : get(\"Files\");\n\t}\n}\n\nexport function robotGroupKindToName(kind: RobotGroupKind) {\n\tswitch (kind) {\n\t\tcase \"hats\":\n\t\t\treturn get(\"Six Thinking Hats\");\n\t\tcase \"ideanote\":\n\t\t\treturn get(\"Ideanote\");\n\t\tcase \"famous\":\n\t\t\treturn get(\"Famous\");\n\t\tcase \"general\":\n\t\t\treturn get(\"General\");\n\t\tcase \"seasonal\":\n\t\t\treturn get(\"Seasonal\");\n\t\tcase \"animals\":\n\t\t\treturn get(\"Animals\");\n\t\tcase \"custom\":\n\t\t\treturn get(\"Custom\");\n\t}\n}\n\nexport function colorModeToName(mode: ColorMode) {\n\tswitch (mode) {\n\t\tcase \"light\":\n\t\t\treturn get(\"Light\");\n\t\tcase \"dark\":\n\t\t\treturn get(\"Dark\");\n\t\tcase \"contrast\":\n\t\t\treturn get(\"High Contrast\");\n\t}\n}\n\nexport function authKindToName(kind: AuthProviderKind) {\n\tswitch (kind) {\n\t\tcase \"apple\":\n\t\t\treturn get(\"Apple\");\n\t\tcase \"google\":\n\t\t\treturn get(\"Google\");\n\t\tcase \"microsoft\":\n\t\t\treturn get(\"Microsoft\");\n\t\tcase \"guest\":\n\t\t\treturn get(\"Guest\");\n\t}\n}\n\nexport function continueWithAuthKindText(kind: AuthProviderKind) {\n\tconst authName = authKindToName(kind) ?? \"\";\n\n\tswitch (kind) {\n\t\tcase \"apple\":\n\t\tcase \"google\":\n\t\tcase \"microsoft\":\n\t\t\treturn get(`Continue with {{authMethod}}`, { authMethod: authName });\n\t\tcase \"guest\":\n\t\t\treturn get(`Continue anonymously`);\n\t}\n}\n\nexport function roomAccessRoleToText(kind: RoomAccessRoleKind): string {\n\tswitch (kind) {\n\t\tcase RoomAccessRoleKind.NO_ACCESS:\n\t\t\treturn get(\"No access\");\n\t\tcase RoomAccessRoleKind.PARTICIPANT:\n\t\t\treturn get(\"Participant\");\n\t\tcase RoomAccessRoleKind.FACILITATOR:\n\t\t\treturn get(\"Facilitator\");\n\t}\n}\n\nexport function copilotStateKindToText(kind: CopilotStateKind) {\n\tswitch (kind) {\n\t\tcase \"initiating\":\n\t\t\treturn get(\"Initiating\");\n\t\tcase \"typing\":\n\t\t\treturn get(\"Typing\");\n\t\tcase \"thinking\":\n\t\t\treturn get(\"Thinking\");\n\t\tcase \"idle\":\n\t\t\treturn get(\"Idle\");\n\t}\n}\n\nexport function workspaceRankToName(rank: WorkspaceAccessRankKind) {\n\tswitch (rank) {\n\t\tcase WorkspaceAccessRankKind.OWNER:\n\t\t\treturn get(\"Owner\");\n\t\tcase WorkspaceAccessRankKind.MEMBER:\n\t\t\treturn get(\"Member\");\n\t\tcase WorkspaceAccessRankKind.GUEST:\n\t\t\treturn get(\"Guest\");\n\t}\n}\n\nexport function votingTypeToName(type: PollKind) {\n\tswitch (type) {\n\t\tcase \"comparison\":\n\t\t\treturn get(\"Comparison voting\");\n\t\tcase \"dot\":\n\t\t\treturn get(\"Dot voting\");\n\t\tcase \"criteria\":\n\t\t\treturn get(\"Evaluation voting\");\n\t}\n}\n\nexport function getDefaultVotingText(data: Partial) {\n\tswitch (data.kind) {\n\t\tcase \"dot\":\n\t\t\treturn data.votesPerPerson === 1 || data.votesPerPerson == null\n\t\t\t\t? get(\"Pick your favorite\")\n\t\t\t\t: get(`Pick your {{count}} favorites`, { count: data.votesPerPerson.toString() });\n\n\t\tcase \"comparison\":\n\t\t\treturn get(\"Pick the one you like the most\");\n\t\tcase \"criteria\":\n\t\t\treturn get(\"Evaluate based on the criteria\");\n\t\tdefault:\n\t\t\treturn get(\"Vote\");\n\t}\n}\n\nexport function ideaKindToText(kind?: IdeaKind) {\n\tswitch (kind) {\n\t\tcase \"question\":\n\t\t\treturn get(\"Question\");\n\t\tcase \"comment\":\n\t\t\treturn get(\"Comment\");\n\t\tcase \"media\":\n\t\t\treturn get(\"Media\");\n\t\tcase \"solution\":\n\t\tdefault:\n\t\t\treturn get(\"Solution\");\n\t}\n}\n\nexport function errorToText(error?: Error) {\n\tif (error != null && error instanceof APIError) {\n\t\tswitch (error.kind) {\n\t\t\tcase \"contentFilterTriggered\":\n\t\t\t\treturn get(\n\t\t\t\t\t`Our AI cannot come up with results because it deems the content inappropriate{{reason}}. If you believe this is a mistake, please contact our support team.`,\n\t\t\t\t\t{\n\t\t\t\t\t\treason:\n\t\t\t\t\t\t\terror.message != null\n\t\t\t\t\t\t\t\t? get(` - it was flagged with \"{{reason}}\"`, { reason: error.message.toLowerCase() })\n\t\t\t\t\t\t\t\t: \"\"\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t//return \"The content filter was triggered\";\n\t\t\tcase \"invitationConsumed\":\n\t\t\t\treturn get(\"The invitation has already been used\");\n\t\t\tcase \"notFound\":\n\t\t\t\treturn get(\"Resource not found\");\n\t\t\tcase \"noAccountFound\":\n\t\t\t\treturn get(\"No account could be found with this email\");\n\t\t\tcase \"timeout\":\n\t\t\t\treturn get(\"The connection timed out. Please try again.\");\n\t\t\tcase \"rateLimitExceeded\":\n\t\t\t\treturn get(\"Rate limit exceeded\");\n\t\t\tcase \"internalServerError\":\n\t\t\t\treturn get(\"Internal server error\");\n\t\t\tcase \"notEnoughContent\":\n\t\t\t\treturn get(\"Too few ungrouped ideas: could not find topics\");\n\t\t}\n\t}\n\n\treturn error?.message ?? get(\"Something went wrong\");\n}\n\nexport function booleanToText(v?: boolean) {\n\treturn v ? get(\"Yes\") : get(\"No\");\n}\n\nexport function sentimentToText(sentiment: number) {\n\tconst bucket = (index: number) => (index * 2) / 5 - 1;\n\tif (sentiment < bucket(1)) return get(\"Very negative\");\n\telse if (sentiment < bucket(2)) return get(\"Negative\");\n\telse if (sentiment < bucket(3)) return get(\"Neutral\");\n\telse if (sentiment < bucket(4)) return get(\"Positive\");\n\telse return get(\"Very positive\");\n}\n\nexport function exportKindToText(kind: ExportKind) {\n\tswitch (kind) {\n\t\tcase \"txt\":\n\t\t\treturn get(\"Text\");\n\t\tcase \"pdf\":\n\t\t\treturn get(\"PDF\");\n\t\tcase \"powerpoint\":\n\t\t\treturn get(\"Powerpoint\");\n\t\tcase \"csv\":\n\t\t\treturn get(\"CSV\");\n\t\tcase \"docx\":\n\t\t\treturn get(\"Word\");\n\t\tcase \"json\":\n\t\t\treturn get(\"JSON\");\n\t\tcase \"image\":\n\t\t\treturn get(\"Image\");\n\t\tcase \"freemind\":\n\t\t\treturn get(\"Freemind\");\n\t}\n}\n\nexport function aiContentLengthToText(length: AIActionContentLengthKind) {\n\tswitch (length) {\n\t\tcase \"short\":\n\t\t\treturn get(\"Short\");\n\t\tcase \"medium\":\n\t\t\treturn get(\"Medium\");\n\t\tcase \"long\":\n\t\t\treturn get(\"Long\");\n\t}\n}\n\nexport function getPlanIntervalText(interval: PlanIntervalKind) {\n\tswitch (interval) {\n\t\tcase \"year\":\n\t\t\treturn get(\"Annual\");\n\t\tdefault:\n\t\t\treturn get(\"Monthly\");\n\t}\n}\n\nexport function getAIModelKindText(kind: AIModelKind) {\n\tswitch (kind) {\n\t\tcase \"turbo\":\n\t\t\treturn get(\"Basic\");\n\t\tcase \"premium\":\n\t\t\treturn get(\"Premium\");\n\t}\n}\n\nexport function sensitivityKindToText(kind: AISensitivityKind) {\n\tswitch (kind) {\n\t\tcase \"low\":\n\t\t\treturn get(\"Allow some sensitive topics\");\n\t\tcase \"high\":\n\t\t\treturn get(\"Allow very few sensitive topics\");\n\t\tcase \"snowflake\":\n\t\t\treturn get(\"Allow no sensitive topics\");\n\t}\n}\n\nexport function getAIActionAttributeText(kind: AIActionAttributeKind) {\n\tswitch (kind) {\n\t\tcase \"original\":\n\t\t\treturn get(\"Original\");\n\t\tcase \"practical\":\n\t\t\treturn get(\"Practical\");\n\t\tcase \"creative\":\n\t\t\treturn get(\"Creative\");\n\t\tcase \"wild\":\n\t\t\treturn get(\"Wild\");\n\t\tcase \"weird\":\n\t\t\treturn get(\"Weird\");\n\t\tcase \"funny\":\n\t\t\treturn get(\"Funny\");\n\t}\n}\n\nexport function getAIActionContentLengthText(kind: AIActionContentLengthKind) {\n\tswitch (kind) {\n\t\tcase \"word\":\n\t\t\treturn get(\"One word\");\n\t\tcase \"very-short\":\n\t\t\treturn get(\"Very short\");\n\t\tcase \"short\":\n\t\t\treturn get(\"Short\");\n\t\tcase \"medium\":\n\t\t\treturn get(\"Medium\");\n\t\tcase \"long\":\n\t\t\treturn get(\"Long\");\n\t}\n}\n\nexport function getAIActionFormItemKindText(kind: AIActionFormItemKind) {\n\tswitch (kind) {\n\t\tcase \"constant\":\n\t\t\treturn get(\"Constant\");\n\t\tcase \"text\":\n\t\t\treturn get(\"Text\");\n\t\tcase \"select\":\n\t\t\treturn get(\"Select\");\n\t}\n}\n\n/**\n * Intl doesnt have a way of getting the name of a time unit.\n * @param unit\n */\nexport function getTimeFormatText(unit: Intl.RelativeTimeFormatUnit): string {\n\tswitch (unit) {\n\t\tcase \"year\":\n\t\t\treturn get(\"year\");\n\t\tcase \"years\":\n\t\t\treturn get(\"years\");\n\t\tcase \"quarter\":\n\t\t\treturn get(\"quarter\");\n\t\tcase \"quarters\":\n\t\t\treturn get(\"quarters\");\n\t\tcase \"month\":\n\t\t\treturn get(\"month\");\n\t\tcase \"months\":\n\t\t\treturn get(\"months\");\n\t\tcase \"week\":\n\t\t\treturn get(\"week\");\n\t\tcase \"weeks\":\n\t\t\treturn get(\"weeks\");\n\t\tcase \"day\":\n\t\t\treturn get(\"day\");\n\t\tcase \"days\":\n\t\t\treturn get(\"days\");\n\t\tcase \"hour\":\n\t\t\treturn get(\"hour\");\n\t\tcase \"hours\":\n\t\t\treturn get(\"hours\");\n\t\tcase \"minute\":\n\t\t\treturn get(\"minute\");\n\t\tcase \"minutes\":\n\t\t\treturn get(\"minutes\");\n\t\tcase \"second\":\n\t\t\treturn get(\"second\");\n\t\tcase \"seconds\":\n\t\t\treturn get(\"seconds\");\n\t}\n}\n\nexport function getMindmapLayoutName(kind: MindmapLayoutKind) {\n\tswitch (kind) {\n\t\tcase \"default\":\n\t\t\treturn get(\"Default\");\n\t\tcase \"flat\":\n\t\t\treturn get(\"Flattened\");\n\t\tcase \"compact\":\n\t\t\treturn get(\"Compact\");\n\t\tcase \"dash\":\n\t\t\treturn get(\"Dashed\");\n\t\tcase \"solid\":\n\t\t\treturn get(\"Solid\");\n\t\tcase \"invert\":\n\t\t\treturn get(\"Inverted\");\n\t\tcase \"draw\":\n\t\t\treturn get(\"Hand-drawn\");\n\t}\n}\n\nexport function workspaceKindToName(kind: WorkspaceKind) {\n\tswitch (kind) {\n\t\tcase \"personal\":\n\t\t\treturn get(\"Personal\");\n\t\tcase \"company\":\n\t\t\treturn get(\"Company\");\n\t}\n}\n\nexport function getBestBrowserLanguageCode(): LanguageCode {\n\treturn findBestLanguageCode(navigator.language) ?? DEFAULT_LANGUAGE_CODE;\n}\n\nexport function getAnonymousUserName() {\n\treturn get(\"Anonymous\");\n}\n\nexport function stabilityStylePresetToText(kind: StabilityAiStylePreset) {\n\tswitch (kind) {\n\t\tcase \"3d-model\":\n\t\t\treturn get(\"3D model\");\n\t\tcase \"analog-film\":\n\t\t\treturn get(\"Analog Film\");\n\t\tcase \"anime\":\n\t\t\treturn get(\"Anime\");\n\t\tcase \"cinematic\":\n\t\t\treturn get(\"Cinematic\");\n\t\tcase \"comic-book\":\n\t\t\treturn get(\"Comic Book\");\n\t\tcase \"digital-art\":\n\t\t\treturn get(\"Digital Art\");\n\t\tcase \"enhance\":\n\t\t\treturn get(\"Enhance\");\n\t\tcase \"fantasy-art\":\n\t\t\treturn get(\"Fantasy Art\");\n\t\tcase \"isometric\":\n\t\t\treturn get(\"Isometric\");\n\t\tcase \"line-art\":\n\t\t\treturn get(\"Line Art\");\n\t\tcase \"low-poly\":\n\t\t\treturn get(\"Low Poly\");\n\t\tcase \"modeling-compound\":\n\t\t\treturn get(\"Modeling Compound\");\n\t\tcase \"neon-punk\":\n\t\t\treturn get(\"Neon Punk\");\n\t\tcase \"origami\":\n\t\t\treturn get(\"Origami\");\n\t\tcase \"photographic\":\n\t\t\treturn get(\"Photographic\");\n\t\tcase \"pixel-art\":\n\t\t\treturn get(\"Pixel Art\");\n\t\tcase \"tile-texture\":\n\t\t\treturn get(\"Tile Texture\");\n\t}\n}\n","import { APIError, joinSentences } from \"shared\";\nimport { TrackerPageViewData, TrackerService } from \"./tracker-service\";\n\nconst MAX_LATEST_EVENTS_TRACKED = 30;\n\nexport class DebugService implements TrackerService {\n\tprotected latestTrackedEvents: string[] = [];\n\n\t/**\n\t * Creates debug information for an error.\n\t * @param error\n\t */\n\tcreateDebugInformation(error?: APIError | Error | null): string {\n\t\treturn joinSentences([\n\t\t\terror != null && \"kind\" in error ? error.kind : undefined,\n\t\t\terror?.stack,\n\t\t\terror?.message,\n\t\t\t\"\\n\\n\",\n\t\t\tthis.latestTrackedEvents.map((v, i) => `${i + 1}. ${v}`).join(\"\\n\")\n\t\t]);\n\t}\n\n\t/**\n\t * Tracks an event.\n\t * @param name\n\t * @param data\n\t */\n\ttrackEvent(name: string, { data }: { data?: Object }) {\n\t\t// Add event to latest events tracked\n\t\tthis.latestTrackedEvents.unshift(`${name ?? \"event\"}${data != null ? ` - \"${JSON.stringify(data)}\"` : \"\"}`);\n\t\tif (this.latestTrackedEvents.length > MAX_LATEST_EVENTS_TRACKED) {\n\t\t\tthis.latestTrackedEvents.pop();\n\t\t}\n\t}\n\n\ttrackPageView({ data }: { data?: TrackerPageViewData }) {\n\t\tthis.trackEvent(\"route.changed\", { data: { pathname: data?.url || location.pathname } });\n\t}\n}\n\nexport const debugService = new DebugService();\n","import { TrackerPageViewData, TrackerService, TrackerServiceProps } from \"./tracker-service\";\nimport { takeId } from \"shared\";\nimport { ENVIRONMENT, UMAMI_LANDING_ID, UMAMI_PLAYGROUND_ID, UMAMI_WEBAPP_ID } from \"../../config\";\n\n// https://umami.is/docs/tracker-functions\ntype Umami = {\n\t// umami.track([payload]);\n\t// umami.track(event_name, [event_data])\n\t// umami.track(props => ({ ...props, url: '/home', title: 'Home page' }));\n\ttrack:\n\t\t| ((eventName: string, eventData?: any) => void | Promise)\n\t\t| ((eventData?: any) => void | Promise)\n\t\t| ((cb: (props: any) => any) => void | Promise);\n};\n\n// Define umami on window\ndeclare global {\n\tinterface Window {\n\t\tumami: Umami;\n\t}\n}\n\n/**\n * Umami tracker service.\n * https://umami.is/docs/tracker-functions\n * umami.trackEvent(event_name, [event_data], [url], [website_id])\n */\nexport class UmamiService implements TrackerService {\n\tprivate getPropsData(props?: TrackerServiceProps) {\n\t\tconst { user, workspace, room } = props || {};\n\t\treturn {\n\t\t\tworkspace: workspace != null ? takeId(workspace) : undefined,\n\t\t\troom: room != null ? takeId(room) : undefined,\n\t\t\tuser: user != null ? takeId(user) : undefined\n\t\t};\n\t}\n\n\tasync trackPageView({ data, props }: { data?: TrackerPageViewData; props?: TrackerServiceProps }) {\n\t\treturn this.track({ baseData: data, props });\n\t}\n\n\tasync trackEvent(\n\t\tname: string,\n\t\t{ data, props, pageData }: { data?: Object; props?: TrackerServiceProps; pageData?: TrackerPageViewData }\n\t) {\n\t\treturn this.track({ name, props, eventData: data, baseData: pageData });\n\t}\n\n\tprivate async track({\n\t\tname,\n\t\tbaseData,\n\t\teventData,\n\t\tprops\n\t}: { baseData?: Object; name?: string; eventData?: any; props?: TrackerServiceProps } = {}) {\n\t\tconst platform = props?.platform || \"webapp\";\n\t\tconst website =\n\t\t\tENVIRONMENT === \"production\"\n\t\t\t\t? platform === \"landing\"\n\t\t\t\t\t? UMAMI_LANDING_ID\n\t\t\t\t\t: UMAMI_WEBAPP_ID\n\t\t\t\t: UMAMI_PLAYGROUND_ID;\n\n\t\tawait window.umami?.track((umamiData: any) => ({\n\t\t\t...(umamiData ?? {}),\n\t\t\t...(baseData ?? {}),\n\t\t\tname,\n\t\t\twebsite,\n\t\t\tdata: {\n\t\t\t\tplatform,\n\t\t\t\t...this.getPropsData(props),\n\t\t\t\t...(eventData ?? {})\n\t\t\t}\n\t\t}));\n\t}\n}\n\nexport const umamiService = new UmamiService();\n","import { ActionSubject, ActionSubjectCached } from \"../action\";\nimport { BoardCursorPosition, Id, Idea, Ref, Room, RoomTimer, User } from \"shared\";\nimport { GameKind } from \"../../molecules/game/game-helper\";\n\nexport const roomAction = {\n\tsetCurrentRoom: new ActionSubject(),\n\tsetCurrentRoomToFirstInList: new ActionSubject(),\n\tjoinRoom: new ActionSubject(),\n\tremoveUserFromRoom: new ActionSubject, Ref>(),\n\tlist: new ActionSubject(),\n\tcreate: new ActionSubject(),\n\tclear: new ActionSubject(),\n\tupdate: new ActionSubject(),\n\tremove: new ActionSubject>(),\n\tleaveRoom: new ActionSubject>(),\n\tget: new ActionSubject(),\n\tupdateTimer: new ActionSubject>(),\n\tupdateUserCursor: new ActionSubject>(),\n\tfollowUserId: new ActionSubject | null, Ref>(),\n\tforceFollow: new ActionSubject>(),\n\n\t// TEMPORARY; REMOVE WHEN YOU SEE IT\n\tsetActiveGame: new ActionSubjectCached(),\n\n\tbrainstorm: new ActionSubject>(),\n\tbrainstormGrow: new ActionSubject>(),\n\tbrainstormSimple: new ActionSubject()\n};\n","import { HexColor } from \"./mindmap-theme\";\n\nexport const MINDMAP_SPACING_TINY = 8;\nexport const MINDMAP_SPACING_SMALL = 10;\nexport const MINDMAP_SPACING_MEDIUM = 14;\nexport const MINDMAP_SPACING_LARGE = 18;\n\n// Colors\nexport const MINDMAP_COLOR_WHITE = \"#FFFFFF\";\nexport const MINDMAP_COLOR_BLACK = \"#000000\";\nexport const MINDMAP_COLOR_WHITE_DIRTY = \"#eeeeee\";\nexport const MINDMAP_COLOR_BLACK_DIRTY = \"#0B0B19\";\n\nexport const MINDMAP_COLOR_SHADOW = \"rgba(0,0,0,0.45)\";\n\nexport interface MindmapColor {\n\tlight: HexColor;\n\tdark: HexColor;\n\tnormal: HexColor;\n\tlighter: HexColor;\n\tdarker: HexColor;\n\tcontrast: {\n\t\tlight: HexColor;\n\t\tdark: HexColor;\n\t\tnormal: HexColor;\n\t\tlighter: HexColor;\n\t\tdarker: HexColor;\n\t};\n}\n\nexport const MINDMAP_COLOR_TURQUOISE: MindmapColor = {\n\tdarker: \"#00687C\",\n\tdark: \"#0096A9\",\n\tnormal: \"#4DD0E1\",\n\tlight: \"#10E0F5\",\n\tlighter: \"#96F7FF\",\n\tcontrast: {\n\t\tdarker: MINDMAP_COLOR_WHITE,\n\t\tdark: MINDMAP_COLOR_WHITE,\n\t\tnormal: MINDMAP_COLOR_BLACK,\n\t\tlight: MINDMAP_COLOR_BLACK,\n\t\tlighter: MINDMAP_COLOR_BLACK\n\t}\n};\n\nexport const COLOR_GREY: MindmapColor = {\n\tdarker: \"#3b3c3f\",\n\tdark: \"#82898c\",\n\tnormal: \"#D1D5DB\",\n\tlight: \"#d2d3d7\",\n\tlighter: \"#e4e4ec\",\n\tcontrast: {\n\t\tdarker: MINDMAP_COLOR_WHITE,\n\t\tdark: MINDMAP_COLOR_WHITE,\n\t\tnormal: MINDMAP_COLOR_BLACK,\n\t\tlight: MINDMAP_COLOR_BLACK,\n\t\tlighter: MINDMAP_COLOR_BLACK\n\t}\n};\n","import { CustomFont } from \"../theme/mindmap-theme\";\n\nexport async function loadCustomFonts(fonts: CustomFont[]) {\n\tawait Promise.all(fonts.map(loadCustomFont));\n}\n\nexport async function loadCustomFont(font: CustomFont) {\n\tconst { family, url } = font;\n\ttry {\n\t\tconst loadedFont = await new FontFace(family, `url(${url})`, { display: \"swap\" }).load();\n\n\t\t// Make it work both in browser and in worker\n\t\tif (\"document\" in globalThis) {\n\t\t\t(globalThis as any).document.fonts.add(loadedFont);\n\t\t} else {\n\t\t\t(globalThis as any).fonts.add(loadedFont);\n\t\t}\n\n\t\tconsole.log(`[custom font] - Loaded: ${family}, ${url}`);\n\t} catch (err) {\n\t\tconsole.error(`[custom font] - Error: ${name}, ${url}`, err);\n\n\t\t// A desperate attempt to make it work in Safari\n\t\tif (\"document\" in globalThis) {\n\t\t\tconst $style = document.createElement(\"style\");\n\t\t\t$style.innerHTML = `@font-face { font-family: \"${family}\"; src: url(${url}); }`;\n\t\t\t(globalThis as any).document.head.appendChild($style);\n\t\t}\n\t}\n}\n","import { CustomFont, FontMetrics, MindmapFont } from \"./mindmap-theme\";\nimport { loadCustomFonts } from \"../util/load-custom-font\";\n\nconst BASE_URL = \"/fonts\";\n\nexport const DEFAULT_FONT_NAMES = [\"lato\", \"shantell-sans\"] as const;\nexport type DefaultFontName = (typeof DEFAULT_FONT_NAMES)[number];\n\n// Use this website to figure out the metrics: https://seek-oss.github.io/capsize/\nexport const DEFAULT_FONTS: Record = {\n\tlato: {\n\t\tfamily: \"Lato\",\n\t\turl: `${BASE_URL}/lato-regular.ttf`,\n\t\tmetrics: {\n\t\t\tcapHeight: 1433,\n\t\t\tascent: 1974,\n\t\t\tdescent: -426,\n\t\t\tunitsPerEm: 2000,\n\t\t\txHeight: 1013,\n\t\t\txWidthAvg: 959\n\t\t}\n\t},\n\t\"shantell-sans\": {\n\t\tfamily: \"Shantell Sans\",\n\t\turl: `${BASE_URL}/shantell-sans-regular.ttf`,\n\t\tmetrics: {\n\t\t\tcapHeight: 700,\n\t\t\tascent: 1020,\n\t\t\tdescent: -320,\n\t\t\tunitsPerEm: 1000,\n\t\t\txHeight: 485,\n\t\t\txWidthAvg: 535\n\t\t}\n\t}\n};\n\nexport const DEFAULT_MINDMAP_FONT: MindmapFont = {\n\tfontSize: 18,\n\tfontFamily: DEFAULT_FONTS.lato.family,\n\ttextAlign: \"left\",\n\t/* Only \"alphabetic\" is rendered the same across all browsers (fml) https://www.bennadel.com/blog/4322-canvas-alphabetic-textbaseline-is-consistent-across-browsers.htm */\n\ttextBaseline: \"alphabetic\",\n\ttextLineGap: 8\n};\n\nexport async function loadDefaultFonts() {\n\tawait loadCustomFonts(Object.values(DEFAULT_FONTS));\n}\n\nexport function getFontMetrics(name: string): FontMetrics | undefined {\n\tfor (const font of Object.values(DEFAULT_FONTS)) {\n\t\tif (font.family === name) {\n\t\t\treturn font.metrics;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n","import { MindmapPaletteColors, MindmapPaletteThemeColor } from \"./mindmap-theme\";\nimport { MINDMAP_COLOR_BLACK_DIRTY, MINDMAP_COLOR_WHITE } from \"./theme-constants\";\n\nexport const DEFAULT_PALETTE_COLOR: MindmapPaletteThemeColor = {\n\tcolor: MINDMAP_COLOR_BLACK_DIRTY,\n\tcontrast: MINDMAP_COLOR_WHITE\n};\n\nexport const MINDMAP_THEME_PALETTE_COLORS_ENERGY: MindmapPaletteColors = [\n\t{ color: \"#E57373\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#BA68C8\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#9575CD\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#818CF8\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#60A5FA\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#4DD0E1\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#2bc28c\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#059669\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#AED581\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#E2E05D\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#FCD34D\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#FFA500\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#A52A2A\", contrast: MINDMAP_COLOR_WHITE }\n];\n\n/*export const MINDMAP_THEME_PALETTE_COLORS_GOOGLE: MindmapPaletteColors = [\n\t{ color: \"#EF5350\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#EC407A\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#AB47BC\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#7E57C2\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#5C6BC0\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#42A5F5\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#26C6DA\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#26A69A\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#66BB6A\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#9CCC65\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#D4E157\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#FFEE58\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#FFCA28\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#FFA726\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#FF7043\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#8D6E63\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#BDBDBD\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#78909C\", contrast: MINDMAP_COLOR_WHITE }\n];*/\n\nexport const MINDMAP_THEME_PALETTE_COLORS_PASTEL: MindmapPaletteColors = [\n\t{ color: \"#ffadad\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#ffd6a5\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#fdffb6\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#caffbf\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#9bf6ff\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#a0c4ff\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#bdb2ff\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#ffc6ff\", contrast: MINDMAP_COLOR_BLACK_DIRTY }\n];\n\nexport const THEME_PALETTE_COLORS_CANDY: MindmapPaletteColors = [\n\t{ color: \"#ba88ff\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#ff78c7\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#fee440\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#00bbf9\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#00f5d4\", contrast: MINDMAP_COLOR_BLACK_DIRTY }\n];\n\nexport const MINDMAP_THEME_PALETTE_COLORS_RUST: MindmapPaletteColors = [\n\t{ color: \"#053047\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#005f73\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#0a9396\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#94d2bd\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#e9d8a6\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#ee9b00\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#ca6702\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#bb3e03\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#ae2012\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#9b2226\", contrast: MINDMAP_COLOR_WHITE }\n];\n\nexport const MINDMAP_THEME_PALETTE_COLORS_BRIGHT: MindmapPaletteColors = [\n\t{ color: \"#5aa9e6\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#7fc8f8\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#ffe45e\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#ff6392\", contrast: MINDMAP_COLOR_BLACK_DIRTY }\n];\n\nexport const MINDMAP_THEME_PALETTE_COLORS_FOREST: MindmapPaletteColors = [\n\t{ color: \"#304f65\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#fe7f2d\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#fcca46\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#a1c181\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#619b8a\", contrast: MINDMAP_COLOR_BLACK_DIRTY }\n];\n\nexport const MINDMAP_THEME_PALETTE_COLORS_WAVES: MindmapPaletteColors = [\n\t{ color: \"#023e8a\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#0077b6\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#0096c7\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#00b4d8\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#48cae4\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#90e0ef\", contrast: MINDMAP_COLOR_BLACK_DIRTY }\n];\n\nexport const MINDMAP_THEME_PALETTE_COLORS_NATURE: MindmapPaletteColors = [\n\t{ color: \"#ef476f\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#ffd166\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#06d6a0\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#118ab2\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#073b4c\", contrast: MINDMAP_COLOR_WHITE }\n];\n\nexport const MINDMAP_THEME_PALETTE_COLORS_NOSTALGIA: MindmapPaletteColors = [\n\t{ color: \"#264653\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#2a9d8f\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#e9c46a\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#f4a261\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#e76f51\", contrast: MINDMAP_COLOR_BLACK_DIRTY }\n];\n\nexport const MINDMAP_THEME_PALETTE_COLORS_GLOW: MindmapPaletteColors = [\n\t{ color: \"#355070\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#6d597a\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#b56576\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#e56b6f\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#eaac8b\", contrast: MINDMAP_COLOR_BLACK_DIRTY }\n];\n\nexport const MINDMAP_THEME_PALETTE_COLORS_MURKY: MindmapPaletteColors = [\n\t{ color: \"#99d98c\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#76c893\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#52b69a\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#34a0a4\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#168aad\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#1a759f\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#1e6091\", contrast: MINDMAP_COLOR_WHITE }\n];\n\nexport const MINDMAP_THEME_PALETTE_COLORS_FIRE: MindmapPaletteColors = [\n\t{ color: \"#f7b267\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#f79d65\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#f4845f\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#f27059\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#f25c54\", contrast: MINDMAP_COLOR_BLACK_DIRTY }\n];\n\nexport const MINDMAP_THEME_PALETTE_COLORS_VACATION: MindmapPaletteColors = [\n\t{ color: \"#2364aa\", contrast: MINDMAP_COLOR_WHITE },\n\t{ color: \"#3da5d9\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#73bfb8\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#fec601\", contrast: MINDMAP_COLOR_BLACK_DIRTY },\n\t{ color: \"#ea7317\", contrast: MINDMAP_COLOR_BLACK_DIRTY }\n];\n","import { MindmapMediaPreviewUrls, MindmapPalette } from \"./mindmap-theme\";\nimport {\n\tCOLOR_GREY,\n\tMINDMAP_COLOR_BLACK_DIRTY,\n\tMINDMAP_COLOR_SHADOW,\n\tMINDMAP_COLOR_TURQUOISE,\n\tMINDMAP_COLOR_WHITE,\n\tMINDMAP_COLOR_WHITE_DIRTY\n} from \"./theme-constants\";\nimport { MINDMAP_THEME_PALETTE_COLORS_ENERGY } from \"./palette-colors\";\n\nexport const MINDMAP_PREVIEW_MEDIA_URLS_LIGHT: MindmapMediaPreviewUrls = {\n\timagePreviewUrl: \"https://storage.googleapis.com/ideamap/static/preview-media/image.webp\",\n\tvideoPreviewUrl: \"https://storage.googleapis.com/ideamap/static/preview-media/video.webp\",\n\taudioPreviewUrl: \"https://storage.googleapis.com/ideamap/static/preview-media/audio.webp\",\n\tdocumentPreviewUrl: \"https://storage.googleapis.com/ideamap/static/preview-media/document.webp\",\n\totherPreviewUrl: \"https://storage.googleapis.com/ideamap/static/preview-media/other.webp\"\n};\n\nexport const MINDMAP_PREVIEW_MEDIA_URLS_DARK: MindmapMediaPreviewUrls = {\n\timagePreviewUrl: \"https://storage.googleapis.com/ideamap/static/preview-media/image-dark.webp\",\n\tvideoPreviewUrl: \"https://storage.googleapis.com/ideamap/static/preview-media/video-dark.webp\",\n\taudioPreviewUrl: \"https://storage.googleapis.com/ideamap/static/preview-media/audio-dark.webp\",\n\tdocumentPreviewUrl: \"https://storage.googleapis.com/ideamap/static/preview-media/document-dark.webp\",\n\totherPreviewUrl: \"https://storage.googleapis.com/ideamap/static/preview-media/other-dark.webp\"\n};\n\nexport const DEFAULT_MINDMAP_PALETTE_LIGHT: MindmapPalette = {\n\tpreviewUrls: MINDMAP_PREVIEW_MEDIA_URLS_LIGHT,\n\tcolors: MINDMAP_THEME_PALETTE_COLORS_ENERGY,\n\tunfoldBackgroundColorHover: COLOR_GREY.lighter,\n\tunfoldTextColorHover: COLOR_GREY.contrast.lighter,\n\tbackgroundColor: MINDMAP_COLOR_WHITE,\n\tforegroundColor: MINDMAP_COLOR_BLACK_DIRTY,\n\tbackgroundDotsColor: COLOR_GREY.lighter,\n\tselectColor: MINDMAP_COLOR_TURQUOISE.light,\n\tborderShadowColorDragging: MINDMAP_COLOR_SHADOW,\n\tnodeMediaBackgroundColor: MINDMAP_COLOR_WHITE_DIRTY,\n\tnodeMediaMoreTextColor: MINDMAP_COLOR_BLACK_DIRTY,\n\tnodeMoreTextColor: COLOR_GREY.dark,\n\tnodeMoreTextBackgroundColor: MINDMAP_COLOR_WHITE_DIRTY,\n\tdefaultNodeBackgroundColor: MINDMAP_COLOR_WHITE,\n\tdefaultNodeTextColor: MINDMAP_COLOR_BLACK_DIRTY\n};\n\nexport const DEFAULT_MINDMAP_PALETTE_DARK: MindmapPalette = {\n\tpreviewUrls: MINDMAP_PREVIEW_MEDIA_URLS_DARK,\n\tcolors: MINDMAP_THEME_PALETTE_COLORS_ENERGY,\n\tbackgroundColor: \"#19191c\", //MINDMAP_COLOR_BLACK_DIRTY,\n\tforegroundColor: MINDMAP_COLOR_WHITE_DIRTY,\n\tbackgroundDotsColor: COLOR_GREY.darker,\n\tnodeMoreTextBackgroundColor: COLOR_GREY.dark,\n\tnodeMoreTextColor: COLOR_GREY.light,\n\tnodeMediaBackgroundColor: COLOR_GREY.dark,\n\tnodeMediaMoreTextColor: COLOR_GREY.light,\n\tunfoldBackgroundColorHover: COLOR_GREY.darker,\n\tunfoldTextColorHover: COLOR_GREY.contrast.darker,\n\tborderShadowColorDragging: MINDMAP_COLOR_SHADOW,\n\tselectColor: MINDMAP_COLOR_TURQUOISE.dark,\n\tdefaultNodeBackgroundColor: MINDMAP_COLOR_BLACK_DIRTY,\n\tdefaultNodeTextColor: MINDMAP_COLOR_WHITE_DIRTY\n};\n","import { MindmapLayout } from \"./mindmap-theme\";\nimport { DEFAULT_MINDMAP_FONT } from \"./font\";\nimport { MINDMAP_SPACING_MEDIUM, MINDMAP_SPACING_SMALL, MINDMAP_SPACING_TINY } from \"./theme-constants\";\n\nexport const DEFAULT_MINDMAP_LAYOUT: MindmapLayout = {\n\tpreviewStyle: \"default\",\n\tfont: DEFAULT_MINDMAP_FONT,\n\tnodeShape: {\n\t\tkind: \"rounded\",\n\t\tfillStyle: \"default\",\n\t\tborder: {\n\t\t\twidth: 4,\n\t\t\tstyle: \"line\"\n\t\t},\n\t\tpadding: {\n\t\t\ttop: MINDMAP_SPACING_MEDIUM,\n\t\t\tright: MINDMAP_SPACING_MEDIUM,\n\t\t\tbottom: MINDMAP_SPACING_MEDIUM,\n\t\t\tleft: MINDMAP_SPACING_MEDIUM\n\t\t},\n\t\tmaxWidth: 350,\n\t\tminWidth: 200,\n\t\tmaxHeight: 300,\n\t\tminHeight: 30,\n\t\tisAuthorVisible: true\n\t},\n\tmainNodeShape: {\n\t\tkind: \"rounded\",\n\t\tfillStyle: \"solid\",\n\t\tborder: {\n\t\t\twidth: 4,\n\t\t\tstyle: \"none\"\n\t\t},\n\t\tmaxWidth: 350,\n\t\tminWidth: 200,\n\t\tmaxHeight: 300,\n\t\tminHeight: 50,\n\t\tpadding: {\n\t\t\ttop: MINDMAP_SPACING_MEDIUM,\n\t\t\tright: MINDMAP_SPACING_MEDIUM,\n\t\t\tbottom: MINDMAP_SPACING_MEDIUM,\n\t\t\tleft: MINDMAP_SPACING_MEDIUM\n\t\t},\n\t\tisAuthorVisible: true\n\t},\n\tnodeConnectionShape: {\n\t\tkind: \"curve\",\n\t\tlineStyle: \"line\",\n\t\tlineWidth: 4\n\t},\n\tboard: {\n\t\tmarginHorizontal: 50,\n\t\tmarginVertical: 10,\n\t\tselectionBorderWidth: 5\n\t},\n\tcollapsedNode: {\n\t\tsize: 50,\n\t\tsticker: {\n\t\t\t// TODO\n\t\t\tkind: \"image\",\n\t\t\t// url: \"\" //iconMediaUrl(\"💡\", \"small\")\n\t\t\turl: \"https://api.ideamap.ai/icons/u1f4a1/small\", // TODO\n\t\t\tthumbUrl: \"https://api.ideamap.ai/icons/u1f4a1/thumb\", // TODO\n\t\t\tid: \"u1f60d\"\n\t\t}\n\t},\n\tauthor: {\n\t\tsize: 30,\n\t\tmarginRight: MINDMAP_SPACING_SMALL\n\t},\n\tsticker: {\n\t\theroHeight: 100\n\t},\n\tfloatingSticker: {\n\t\tsize: 40\n\t},\n\ttypingIndicator: {\n\t\twidth: 33,\n\t\theight: 18,\n\t\tdotSize: 4,\n\t\tdotCount: 3,\n\t\tborderWidth: 2\n\t},\n\tmedia: {\n\t\theroImageHeight: 200,\n\t\theroImageBorderRadius: 8,\n\t\theroImageFit: \"cover\",\n\t\tgap: MINDMAP_SPACING_TINY,\n\t\tcount: 3,\n\t\tmaxWidth: 160,\n\t\theight: 80,\n\t\tborderRadius: 8,\n\t\tmoreFontSize: 12\n\t},\n\tunfold: {\n\t\tborderWidth: 2\n\t}\n};\n","import { MindmapTheme } from \"./mindmap-theme\";\nimport { DEFAULT_MINDMAP_PALETTE_DARK, DEFAULT_MINDMAP_PALETTE_LIGHT } from \"./palette\";\nimport { DEFAULT_MINDMAP_LAYOUT } from \"./layout\";\n\nexport const DEFAULT_MINDMAP_THEME_LIGHT: MindmapTheme = {\n\tpalette: DEFAULT_MINDMAP_PALETTE_LIGHT,\n\tlayout: DEFAULT_MINDMAP_LAYOUT\n};\n\nexport const DEFAULT_MINDMAP_THEME_DARK: MindmapTheme = {\n\t...DEFAULT_MINDMAP_THEME_LIGHT,\n\tpalette: DEFAULT_MINDMAP_PALETTE_DARK\n};\n","import { MindmapPaletteKind } from \"shared/src/types/mindmap-palette-kind\";\nimport {\n\tMINDMAP_COLOR_BLACK_DIRTY,\n\tMINDMAP_COLOR_WHITE,\n\tMINDMAP_COLOR_WHITE_DIRTY,\n\tMINDMAP_THEME_PALETTE_COLORS_BRIGHT,\n\tMINDMAP_THEME_PALETTE_COLORS_ENERGY,\n\tMINDMAP_THEME_PALETTE_COLORS_FIRE,\n\tMINDMAP_THEME_PALETTE_COLORS_FOREST,\n\tMINDMAP_THEME_PALETTE_COLORS_GLOW,\n\tMINDMAP_THEME_PALETTE_COLORS_MURKY,\n\tMINDMAP_THEME_PALETTE_COLORS_NATURE,\n\tMINDMAP_THEME_PALETTE_COLORS_NOSTALGIA,\n\tMINDMAP_THEME_PALETTE_COLORS_PASTEL,\n\tMINDMAP_THEME_PALETTE_COLORS_RUST,\n\tMINDMAP_THEME_PALETTE_COLORS_VACATION,\n\tMINDMAP_THEME_PALETTE_COLORS_WAVES,\n\tMindmapPalette,\n\tTHEME_PALETTE_COLORS_CANDY\n} from \"mindmap\";\n\nexport const PREMIUM_MINDMAP_PALETTE_KINDS: MindmapPaletteKind[] = [\n\t\"candy\",\n\t\"pastel\",\n\t\"glow\",\n\t\"murky\",\n\t\"fire\",\n\t\"vacation\",\n\t\"bright\",\n\t\"mono\"\n];\n\nexport const MINDMAP_PALETTES: Record Partial> = {\n\tenergy: () => ({\n\t\tcolors: MINDMAP_THEME_PALETTE_COLORS_ENERGY\n\t}),\n\trust: (isDark) => ({\n\t\tcolors: MINDMAP_THEME_PALETTE_COLORS_RUST,\n\t\tbackgroundColor: isDark ? \"#0a0000\" : \"#f4f4f4\",\n\t\tbackgroundDotsColor: isDark ? null : \"#e8e7e7\"\n\t}),\n\tnature: (isDark) => ({\n\t\tcolors: MINDMAP_THEME_PALETTE_COLORS_NATURE\n\t}),\n\twaves: (isDark) => ({\n\t\tcolors: MINDMAP_THEME_PALETTE_COLORS_WAVES,\n\t\tbackgroundColor: isDark ? \"#010f1c\" : \"#f2fbff\",\n\t\tbackgroundDotsColor: null\n\t}),\n\tforest: (isDark) => ({\n\t\tcolors: MINDMAP_THEME_PALETTE_COLORS_FOREST,\n\t\tbackgroundColor: isDark ? \"#100b00\" : \"#fff5ea\",\n\t\tbackgroundDotsColor: null\n\t}),\n\tnostalgia: (isDark) => ({\n\t\tcolors: MINDMAP_THEME_PALETTE_COLORS_NOSTALGIA,\n\t\tbackgroundColor: isDark ? \"#150a00\" : \"#fff3f6\",\n\t\tbackgroundDotsColor: null\n\t}),\n\tcandy: (isDark) => ({\n\t\tcolors: THEME_PALETTE_COLORS_CANDY\n\t}),\n\tpastel: (isDark) => ({\n\t\tcolors: MINDMAP_THEME_PALETTE_COLORS_PASTEL\n\t}),\n\tglow: (isDark) => ({\n\t\tcolors: MINDMAP_THEME_PALETTE_COLORS_GLOW,\n\t\tbackgroundColor: isDark ? \"#050113\" : \"#f9f4ff\",\n\t\tbackgroundDotsColor: null\n\t}),\n\tmurky: (isDark) => ({\n\t\tcolors: MINDMAP_THEME_PALETTE_COLORS_MURKY,\n\t\tbackgroundColor: isDark ? \"#000b00\" : \"#f7ffec\",\n\t\tbackgroundDotsColor: null\n\t}),\n\tfire: (isDark) => ({\n\t\tcolors: MINDMAP_THEME_PALETTE_COLORS_FIRE,\n\t\tbackgroundColor: isDark ? \"#0b0000\" : \"#ffecec\",\n\t\tbackgroundDotsColor: null\n\t}),\n\tvacation: (isDark) => ({\n\t\tcolors: MINDMAP_THEME_PALETTE_COLORS_VACATION\n\t}),\n\tbright: (isDark) =>\n\t\tisDark\n\t\t\t? {\n\t\t\t\t\tcolors: [...MINDMAP_THEME_PALETTE_COLORS_BRIGHT, { color: \"#f9f9f9\", contrast: MINDMAP_COLOR_BLACK_DIRTY }],\n\t\t\t\t\tbackgroundColor: \"#090f1c\",\n\t\t\t\t\tbackgroundDotsColor: null\n\t\t\t }\n\t\t\t: {\n\t\t\t\t\tcolors: [...MINDMAP_THEME_PALETTE_COLORS_BRIGHT, { color: \"#16233a\", contrast: MINDMAP_COLOR_WHITE }],\n\t\t\t\t\tbackgroundColor: \"#f9f9f9\",\n\t\t\t\t\tbackgroundDotsColor: null\n\t\t\t },\n\tmono: (isDark) => ({\n\t\tcolors: isDark\n\t\t\t? [{ color: MINDMAP_COLOR_WHITE_DIRTY, contrast: MINDMAP_COLOR_BLACK_DIRTY }]\n\t\t\t: [{ color: MINDMAP_COLOR_BLACK_DIRTY, contrast: MINDMAP_COLOR_WHITE }]\n\t})\n};\n","import {\n\tDEFAULT_FONTS,\n\tDEFAULT_MINDMAP_LAYOUT,\n\tMINDMAP_SPACING_LARGE,\n\tMINDMAP_SPACING_TINY,\n\tMindmapLayout\n} from \"mindmap\";\nimport { MindmapLayoutKind } from \"shared/src/types/mindmap-layout-kind\";\n\nexport const PREMIUM_MINDMAP_LAYOUT_KINDS: MindmapLayoutKind[] = [\"draw\"];\n\nexport const MINDMAP_LAYOUTS: Record = {\n\tdefault: DEFAULT_MINDMAP_LAYOUT,\n\tinvert: {\n\t\t...DEFAULT_MINDMAP_LAYOUT,\n\t\tpreviewStyle: \"invert\",\n\t\tnodeShape: {\n\t\t\t...DEFAULT_MINDMAP_LAYOUT.nodeShape,\n\t\t\tfillStyle: \"solid\"\n\t\t},\n\t\tmainNodeShape: {\n\t\t\t...DEFAULT_MINDMAP_LAYOUT.mainNodeShape,\n\t\t\tfillStyle: \"none\",\n\t\t\tborder: {\n\t\t\t\t...DEFAULT_MINDMAP_LAYOUT.mainNodeShape.border,\n\t\t\t\tstyle: \"line\"\n\t\t\t}\n\t\t}\n\t},\n\tsolid: {\n\t\t...DEFAULT_MINDMAP_LAYOUT,\n\t\tpreviewStyle: \"solid\",\n\t\tnodeShape: {\n\t\t\t...DEFAULT_MINDMAP_LAYOUT.nodeShape,\n\t\t\tfillStyle: \"solid\"\n\t\t},\n\t\tmainNodeShape: {\n\t\t\t...DEFAULT_MINDMAP_LAYOUT.mainNodeShape,\n\t\t\tfillStyle: \"solid\"\n\t\t}\n\t},\n\tcompact: {\n\t\t...DEFAULT_MINDMAP_LAYOUT,\n\t\tpreviewStyle: \"compact\",\n\t\tmainNodeShape: {\n\t\t\t...DEFAULT_MINDMAP_LAYOUT.mainNodeShape,\n\t\t\tkind: \"slightlyRounded\",\n\t\t\tfillStyle: \"solid\",\n\t\t\tisAuthorVisible: false\n\t\t},\n\t\tnodeShape: {\n\t\t\t...DEFAULT_MINDMAP_LAYOUT.nodeShape,\n\t\t\tkind: \"line\",\n\t\t\tfillStyle: \"none\",\n\t\t\tisAuthorVisible: false,\n\t\t\tminWidth: 50\n\t\t},\n\t\tnodeConnectionShape: {\n\t\t\t...DEFAULT_MINDMAP_LAYOUT.nodeConnectionShape,\n\t\t\tkind: \"sharp\"\n\t\t},\n\t\tmedia: {\n\t\t\t...DEFAULT_MINDMAP_LAYOUT.media,\n\t\t\theroImageHeight: 130,\n\t\t\theroImageFit: \"contain\"\n\t\t},\n\t\tboard: {\n\t\t\t...DEFAULT_MINDMAP_LAYOUT.board,\n\t\t\tmarginHorizontal: 20,\n\t\t\tmarginVertical: 5\n\t\t}\n\t},\n\tflat: {\n\t\t...DEFAULT_MINDMAP_LAYOUT,\n\t\tpreviewStyle: \"flat\",\n\t\tmainNodeShape: {\n\t\t\t...DEFAULT_MINDMAP_LAYOUT.mainNodeShape,\n\t\t\tkind: \"rounded\",\n\t\t\tfillStyle: \"default\",\n\t\t\tborder: {\n\t\t\t\t...DEFAULT_MINDMAP_LAYOUT.mainNodeShape.border,\n\t\t\t\tstyle: \"line\"\n\t\t\t},\n\t\t\tisAuthorVisible: false,\n\t\t\tpadding: {\n\t\t\t\ttop: MINDMAP_SPACING_LARGE,\n\t\t\t\tright: MINDMAP_SPACING_LARGE,\n\t\t\t\tbottom: MINDMAP_SPACING_LARGE,\n\t\t\t\tleft: MINDMAP_SPACING_LARGE\n\t\t\t}\n\t\t},\n\t\tnodeShape: {\n\t\t\t...DEFAULT_MINDMAP_LAYOUT.nodeShape,\n\t\t\tkind: \"none\",\n\t\t\tfillStyle: \"none\",\n\t\t\tisAuthorVisible: false,\n\t\t\tpadding: {\n\t\t\t\ttop: MINDMAP_SPACING_TINY,\n\t\t\t\tright: MINDMAP_SPACING_TINY,\n\t\t\t\tbottom: MINDMAP_SPACING_TINY,\n\t\t\t\tleft: MINDMAP_SPACING_TINY\n\t\t\t},\n\t\t\tminHeight: 30,\n\t\t\tminWidth: 50\n\t\t},\n\t\tnodeConnectionShape: {\n\t\t\t...DEFAULT_MINDMAP_LAYOUT.nodeConnectionShape,\n\t\t\tkind: \"sharp\"\n\t\t},\n\t\tboard: {\n\t\t\t...DEFAULT_MINDMAP_LAYOUT.board,\n\t\t\tmarginVertical: 5\n\t\t}\n\t},\n\tdash: {\n\t\t...DEFAULT_MINDMAP_LAYOUT,\n\t\tpreviewStyle: \"dash\",\n\t\tnodeShape: {\n\t\t\t...DEFAULT_MINDMAP_LAYOUT.nodeShape,\n\t\t\tborder: {\n\t\t\t\t...DEFAULT_MINDMAP_LAYOUT.nodeShape.border,\n\t\t\t\tstyle: \"dash\"\n\t\t\t}\n\t\t},\n\t\tnodeConnectionShape: {\n\t\t\t...DEFAULT_MINDMAP_LAYOUT.nodeConnectionShape,\n\t\t\tlineStyle: \"dash\"\n\t\t}\n\t},\n\tdraw: {\n\t\t...DEFAULT_MINDMAP_LAYOUT,\n\t\tfont: {\n\t\t\tfontSize: 18,\n\t\t\tfontFamily: DEFAULT_FONTS[\"shantell-sans\"].family,\n\t\t\ttextAlign: \"left\",\n\t\t\ttextBaseline: \"alphabetic\",\n\t\t\ttextLineGap: 4\n\t\t},\n\t\tpreviewStyle: \"hand-drawn\",\n\t\tnodeShape: {\n\t\t\t...DEFAULT_MINDMAP_LAYOUT.nodeShape,\n\t\t\tfillStyle: \"hand-drawn\",\n\t\t\tborder: {\n\t\t\t\t...DEFAULT_MINDMAP_LAYOUT.nodeShape.border,\n\t\t\t\tstyle: \"none\"\n\t\t\t}\n\t\t},\n\t\tmainNodeShape: {\n\t\t\t...DEFAULT_MINDMAP_LAYOUT.mainNodeShape,\n\t\t\tfillStyle: \"hand-drawn\",\n\t\t\tborder: {\n\t\t\t\t...DEFAULT_MINDMAP_LAYOUT.mainNodeShape.border,\n\t\t\t\tstyle: \"none\"\n\t\t\t}\n\t\t}\n\t}\n};\n","import { MindmapPaletteKind } from \"shared/src/types/mindmap-palette-kind\";\nimport { MindmapLayoutKind } from \"shared/src/types/mindmap-layout-kind\";\nimport { MINDMAP_PALETTES } from \"./mindmap-palettes\";\nimport { MINDMAP_LAYOUTS } from \"./mindmap-layouts\";\nimport { DEFAULT_MINDMAP_THEME_DARK, DEFAULT_MINDMAP_THEME_LIGHT, MindmapTheme } from \"mindmap\";\nimport { ColorMode } from \"shared\";\nimport { isColorModeDark } from \"../../util/color-mode-util\";\n\nexport function createMindmapTheme({\n\tpaletteKind,\n\tlayoutKind,\n\tcolorMode\n}: {\n\tpaletteKind: MindmapPaletteKind;\n\tlayoutKind: MindmapLayoutKind;\n\tcolorMode?: ColorMode;\n}): MindmapTheme {\n\tconst isDark = isColorModeDark(colorMode);\n\tconst palette = MINDMAP_PALETTES[paletteKind]?.(isDark) ?? {};\n\tconst layout = MINDMAP_LAYOUTS[layoutKind];\n\n\treturn {\n\t\t...(isDark ? DEFAULT_MINDMAP_THEME_DARK : DEFAULT_MINDMAP_THEME_LIGHT),\n\t\tpalette: {\n\t\t\t...(isDark ? DEFAULT_MINDMAP_THEME_DARK.palette : DEFAULT_MINDMAP_THEME_LIGHT.palette),\n\t\t\t...palette\n\t\t},\n\t\tlayout\n\t};\n}\n","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + (content || \"\"));\n };\n return fileReader.readAsDataURL(data);\n};\nfunction toArray(data) {\n if (data instanceof Uint8Array) {\n return data;\n }\n else if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n else {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n }\n}\nlet TEXT_ENCODER;\nexport function encodePacketToBinary(packet, callback) {\n if (withNativeBlob && packet.data instanceof Blob) {\n return packet.data\n .arrayBuffer()\n .then(toArray)\n .then(callback);\n }\n else if (withNativeArrayBuffer &&\n (packet.data instanceof ArrayBuffer || isView(packet.data))) {\n return callback(toArray(packet.data));\n }\n encodePacket(packet, false, encoded => {\n if (!TEXT_ENCODER) {\n TEXT_ENCODER = new TextEncoder();\n }\n callback(TEXT_ENCODER.encode(encoded));\n });\n}\nexport { encodePacket };\n","// imported from https://github.com/socketio/base64-arraybuffer\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nexport const encode = (arraybuffer) => {\n let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexport const decode = (base64) => {\n let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"./contrib/base64-arraybuffer.js\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nexport const decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n if (data instanceof Blob) {\n // from WebSocket + binaryType \"blob\"\n return data;\n }\n else {\n // from HTTP long-polling or WebTransport\n return new Blob([data]);\n }\n case \"arraybuffer\":\n default:\n if (data instanceof ArrayBuffer) {\n // from HTTP long-polling (base64) or WebSocket + binaryType \"arraybuffer\"\n return data;\n }\n else {\n // from WebTransport (Uint8Array)\n return data.buffer;\n }\n }\n};\n","import { encodePacket, encodePacketToBinary } from \"./encodePacket.js\";\nimport { decodePacket } from \"./decodePacket.js\";\nimport { ERROR_PACKET } from \"./commons.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport function createPacketEncoderStream() {\n return new TransformStream({\n transform(packet, controller) {\n encodePacketToBinary(packet, encodedPacket => {\n const payloadLength = encodedPacket.length;\n let header;\n // inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length\n if (payloadLength < 126) {\n header = new Uint8Array(1);\n new DataView(header.buffer).setUint8(0, payloadLength);\n }\n else if (payloadLength < 65536) {\n header = new Uint8Array(3);\n const view = new DataView(header.buffer);\n view.setUint8(0, 126);\n view.setUint16(1, payloadLength);\n }\n else {\n header = new Uint8Array(9);\n const view = new DataView(header.buffer);\n view.setUint8(0, 127);\n view.setBigUint64(1, BigInt(payloadLength));\n }\n // first bit indicates whether the payload is plain text (0) or binary (1)\n if (packet.data && typeof packet.data !== \"string\") {\n header[0] |= 0x80;\n }\n controller.enqueue(header);\n controller.enqueue(encodedPacket);\n });\n }\n });\n}\nlet TEXT_DECODER;\nfunction totalLength(chunks) {\n return chunks.reduce((acc, chunk) => acc + chunk.length, 0);\n}\nfunction concatChunks(chunks, size) {\n if (chunks[0].length === size) {\n return chunks.shift();\n }\n const buffer = new Uint8Array(size);\n let j = 0;\n for (let i = 0; i < size; i++) {\n buffer[i] = chunks[0][j++];\n if (j === chunks[0].length) {\n chunks.shift();\n j = 0;\n }\n }\n if (chunks.length && j < chunks[0].length) {\n chunks[0] = chunks[0].slice(j);\n }\n return buffer;\n}\nexport function createPacketDecoderStream(maxPayload, binaryType) {\n if (!TEXT_DECODER) {\n TEXT_DECODER = new TextDecoder();\n }\n const chunks = [];\n let state = 0 /* READ_HEADER */;\n let expectedLength = -1;\n let isBinary = false;\n return new TransformStream({\n transform(chunk, controller) {\n chunks.push(chunk);\n while (true) {\n if (state === 0 /* READ_HEADER */) {\n if (totalLength(chunks) < 1) {\n break;\n }\n const header = concatChunks(chunks, 1);\n isBinary = (header[0] & 0x80) === 0x80;\n expectedLength = header[0] & 0x7f;\n if (expectedLength < 126) {\n state = 3 /* READ_PAYLOAD */;\n }\n else if (expectedLength === 126) {\n state = 1 /* READ_EXTENDED_LENGTH_16 */;\n }\n else {\n state = 2 /* READ_EXTENDED_LENGTH_64 */;\n }\n }\n else if (state === 1 /* READ_EXTENDED_LENGTH_16 */) {\n if (totalLength(chunks) < 2) {\n break;\n }\n const headerArray = concatChunks(chunks, 2);\n expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0);\n state = 3 /* READ_PAYLOAD */;\n }\n else if (state === 2 /* READ_EXTENDED_LENGTH_64 */) {\n if (totalLength(chunks) < 8) {\n break;\n }\n const headerArray = concatChunks(chunks, 8);\n const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length);\n const n = view.getUint32(0);\n if (n > Math.pow(2, 53 - 32) - 1) {\n // the maximum safe integer in JavaScript is 2^53 - 1\n controller.enqueue(ERROR_PACKET);\n break;\n }\n expectedLength = n * Math.pow(2, 32) + view.getUint32(4);\n state = 3 /* READ_PAYLOAD */;\n }\n else {\n if (totalLength(chunks) < expectedLength) {\n break;\n }\n const data = concatChunks(chunks, expectedLength);\n controller.enqueue(decodePacket(isBinary ? data : TEXT_DECODER.decode(data), binaryType));\n state = 0 /* READ_HEADER */;\n }\n if (expectedLength === 0 || expectedLength > maxPayload) {\n controller.enqueue(ERROR_PACKET);\n break;\n }\n }\n }\n });\n}\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","import { globalThisShim as globalThis } from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nimport { encode } from \"./contrib/parseqs.js\";\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n createUri(schema, query = {}) {\n return (schema +\n \"://\" +\n this._hostname() +\n this._port() +\n this.opts.path +\n this._query(query));\n }\n _hostname() {\n const hostname = this.opts.hostname;\n return hostname.indexOf(\":\") === -1 ? hostname : \"[\" + hostname + \"]\";\n }\n _port() {\n if (this.opts.port &&\n ((this.opts.secure && Number(this.opts.port !== 443)) ||\n (!this.opts.secure && Number(this.opts.port) !== 80))) {\n return \":\" + this.opts.port;\n }\n else {\n return \"\";\n }\n }\n _query(query) {\n const encodedQuery = encode(query);\n return encodedQuery.length ? \"?\" + encodedQuery : \"\";\n }\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","// browser shim for xmlhttprequest module\nimport { hasCORS } from \"../contrib/has-cors.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nexport function XHR(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\nexport function createCookieJar() { }\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport { createCookieJar, XHR as XMLHttpRequest, } from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false,\n });\n return null != xhr.responseType;\n})();\nexport class Polling extends Transport {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n if (this.opts.withCredentials) {\n this.cookieJar = createCookieJar();\n }\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"https\" : \"http\";\n const query = this.query || {};\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, cookieJar: this.cookieJar }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n create() {\n var _a;\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, true);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n (_a = this.opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n var _a;\n if (xhr.readyState === 3) {\n (_a = this.opts.cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(xhr);\n }\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this.cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import { globalThisShim as globalThis } from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { nextTick, usingBrowserWebSocket, WebSocket, } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @param {Object} opts - connection options\n * @protected\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n get name() {\n return \"websocket\";\n }\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \n // @ts-ignore\n \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n const query = this.query || {};\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @private\n */\n check() {\n return !!WebSocket;\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { nextTick } from \"./websocket-constructor.js\";\nimport { createPacketDecoderStream, createPacketEncoderStream, } from \"engine.io-parser\";\nexport class WT extends Transport {\n get name() {\n return \"webtransport\";\n }\n doOpen() {\n // @ts-ignore\n if (typeof WebTransport !== \"function\") {\n return;\n }\n // @ts-ignore\n this.transport = new WebTransport(this.createUri(\"https\"), this.opts.transportOptions[this.name]);\n this.transport.closed\n .then(() => {\n this.onClose();\n })\n .catch((err) => {\n this.onError(\"webtransport error\", err);\n });\n // note: we could have used async/await, but that would require some additional polyfills\n this.transport.ready.then(() => {\n this.transport.createBidirectionalStream().then((stream) => {\n const decoderStream = createPacketDecoderStream(Number.MAX_SAFE_INTEGER, this.socket.binaryType);\n const reader = stream.readable.pipeThrough(decoderStream).getReader();\n const encoderStream = createPacketEncoderStream();\n encoderStream.readable.pipeTo(stream.writable);\n this.writer = encoderStream.writable.getWriter();\n const read = () => {\n reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n return;\n }\n this.onPacket(value);\n read();\n })\n .catch((err) => {\n });\n };\n read();\n const packet = { type: \"open\" };\n if (this.query.sid) {\n packet.data = `{\"sid\":\"${this.query.sid}\"}`;\n }\n this.writer.write(packet).then(() => this.onOpen());\n });\n });\n }\n write(packets) {\n this.writable = false;\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n this.writer.write(packet).then(() => {\n if (lastPacket) {\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n var _a;\n (_a = this.transport) === null || _a === void 0 ? void 0 : _a.close();\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nimport { WT } from \"./webtransport.js\";\nexport const transports = {\n websocket: WS,\n webtransport: WT,\n polling: Polling,\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nimport { defaultBinaryType } from \"./transports/websocket-constructor.js\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts = {}) {\n super();\n this.binaryType = defaultBinaryType;\n this.writeBuffer = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\n \"polling\",\n \"websocket\",\n \"webtransport\",\n ];\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: false,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this.beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n }, this.opts.transportOptions[name]);\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", (reason) => this.onClose(\"transport close\", reason));\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n if (this.upgrades.indexOf(\"webtransport\") !== -1 &&\n name !== \"webtransport\") {\n // favor WebTransport\n this.setTimeoutFn(() => {\n if (!failed) {\n transport.open();\n }\n }, 200);\n }\n else {\n transport.open();\n }\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState && this.opts.upgrade) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n this.resetPingTimeout();\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this.getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n getWritablePackets() {\n const shouldCheckPayloadSize = this.maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this.maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","import { parse } from \"engine.io-client\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parse(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n delete packet.attachments; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder === true) {\n const isIndexValid = typeof data.num === \"number\" &&\n data.num >= 0 &&\n data.num < buffers.length;\n if (isIndexValid) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else {\n throw new Error(\"illegal attachments\");\n }\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * These strings must not be used as event names, as they have a special meaning.\n */\nconst RESERVED_EVENTS = [\n \"connect\",\n \"connect_error\",\n \"disconnect\",\n \"disconnecting\",\n \"newListener\",\n \"removeListener\", // used by the Node.js EventEmitter\n];\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encoder constructor\n *\n * @param {function} replacer - custom replacer to pass down to JSON.parse\n */\n constructor(replacer) {\n this.replacer = replacer;\n }\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n return this.encodeAsBinary({\n type: obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK,\n nsp: obj.nsp,\n data: obj.data,\n id: obj.id,\n });\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data, this.replacer);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n// see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript\nfunction isObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n /**\n * Decoder constructor\n *\n * @param {function} reviver - custom reviver to pass down to JSON.stringify\n */\n constructor(reviver) {\n super();\n this.reviver = reviver;\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n if (this.reconstructor) {\n throw new Error(\"got plaintext data when reconstructing a packet\");\n }\n packet = this.decodeString(obj);\n const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = this.tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n tryParse(str) {\n try {\n return JSON.parse(str, this.reviver);\n }\n catch (e) {\n return false;\n }\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return isObject(payload);\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || isObject(payload);\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return (Array.isArray(payload) &&\n (typeof payload[0] === \"number\" ||\n (typeof payload[0] === \"string\" &&\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n this.reconstructor = null;\n }\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n * // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n * console.log(`disconnected due to ${reason}`);\n * });\n */\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n */\n constructor(io, nsp, opts) {\n super();\n /**\n * Whether the socket is currently connected to the server.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.connected); // true\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.connected); // false\n * });\n */\n this.connected = false;\n /**\n * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will\n * be transmitted by the server.\n */\n this.recovered = false;\n /**\n * Buffer for packets received before the CONNECT packet\n */\n this.receiveBuffer = [];\n /**\n * Buffer for packets that will be sent once the socket is connected\n */\n this.sendBuffer = [];\n /**\n * The queue of packets to be sent with retry in case of failure.\n *\n * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order.\n * @private\n */\n this._queue = [];\n /**\n * A sequence to generate the ID of the {@link QueuedPacket}.\n * @private\n */\n this._queueSeq = 0;\n this.ids = 0;\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n this._opts = Object.assign({}, opts);\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Whether the socket is currently disconnected\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.disconnected); // false\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.disconnected); // true\n * });\n */\n get disconnected() {\n return !this.connected;\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n *\n * @example\n * const socket = io();\n *\n * console.log(socket.active); // true\n *\n * socket.on(\"disconnect\", (reason) => {\n * if (reason === \"io server disconnect\") {\n * // the disconnection was initiated by the server, you need to manually reconnect\n * console.log(socket.active); // false\n * }\n * // else the socket will automatically try to reconnect\n * console.log(socket.active); // true\n * });\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @example\n * const socket = io({\n * autoConnect: false\n * });\n *\n * socket.connect();\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for {@link connect()}.\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * This method mimics the WebSocket.send() method.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n *\n * @example\n * socket.send(\"hello\");\n *\n * // this is equivalent to\n * socket.emit(\"message\", \"hello\");\n *\n * @return self\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @example\n * socket.emit(\"hello\", \"world\");\n *\n * // all serializable datastructures are supported (no need to call JSON.stringify)\n * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n *\n * // with an acknowledgement from the server\n * socket.emit(\"hello\", \"world\", (val) => {\n * // ...\n * });\n *\n * @return self\n */\n emit(ev, ...args) {\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n }\n args.unshift(ev);\n if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {\n this._addToQueue(args);\n return this;\n }\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = this.io.engine &&\n this.io.engine.transport &&\n this.io.engine.transport.writable;\n const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);\n if (discardPacket) {\n }\n else if (this.connected) {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n var _a;\n const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n this.acks[id] = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, [null, ...args]);\n };\n }\n /**\n * Emits an event and waits for an acknowledgement\n *\n * @example\n * // without timeout\n * const response = await socket.emitWithAck(\"hello\", \"world\");\n *\n * // with a specific timeout\n * try {\n * const response = await socket.timeout(1000).emitWithAck(\"hello\", \"world\");\n * } catch (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n *\n * @return a Promise that will be fulfilled when the server acknowledges the event\n */\n emitWithAck(ev, ...args) {\n // the timeout flag is optional\n const withErr = this.flags.timeout !== undefined || this._opts.ackTimeout !== undefined;\n return new Promise((resolve, reject) => {\n args.push((arg1, arg2) => {\n if (withErr) {\n return arg1 ? reject(arg1) : resolve(arg2);\n }\n else {\n return resolve(arg1);\n }\n });\n this.emit(ev, ...args);\n });\n }\n /**\n * Add the packet to the queue.\n * @param args\n * @private\n */\n _addToQueue(args) {\n let ack;\n if (typeof args[args.length - 1] === \"function\") {\n ack = args.pop();\n }\n const packet = {\n id: this._queueSeq++,\n tryCount: 0,\n pending: false,\n args,\n flags: Object.assign({ fromQueue: true }, this.flags),\n };\n args.push((err, ...responseArgs) => {\n if (packet !== this._queue[0]) {\n // the packet has already been acknowledged\n return;\n }\n const hasError = err !== null;\n if (hasError) {\n if (packet.tryCount > this._opts.retries) {\n this._queue.shift();\n if (ack) {\n ack(err);\n }\n }\n }\n else {\n this._queue.shift();\n if (ack) {\n ack(null, ...responseArgs);\n }\n }\n packet.pending = false;\n return this._drainQueue();\n });\n this._queue.push(packet);\n this._drainQueue();\n }\n /**\n * Send the first packet of the queue, and wait for an acknowledgement from the server.\n * @param force - whether to resend a packet that has not been acknowledged yet\n *\n * @private\n */\n _drainQueue(force = false) {\n if (!this.connected || this._queue.length === 0) {\n return;\n }\n const packet = this._queue[0];\n if (packet.pending && !force) {\n return;\n }\n packet.pending = true;\n packet.tryCount++;\n this.flags = packet.flags;\n this.emit.apply(this, packet.args);\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this._sendConnectPacket(data);\n });\n }\n else {\n this._sendConnectPacket(this.auth);\n }\n }\n /**\n * Sends a CONNECT packet to initiate the Socket.IO session.\n *\n * @param data\n * @private\n */\n _sendConnectPacket(data) {\n this.packet({\n type: PacketType.CONNECT,\n data: this._pid\n ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data)\n : data,\n });\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @param description\n * @private\n */\n onclose(reason, description) {\n this.connected = false;\n delete this.id;\n this.emitReserved(\"disconnect\", reason, description);\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n this.onconnect(packet.data.sid, packet.data.pid);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n if (this._pid && args.length && typeof args[args.length - 1] === \"string\") {\n this._lastOffset = args[args.length - 1];\n }\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowlegement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (\"function\" === typeof ack) {\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n }\n else {\n }\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id, pid) {\n this.id = id;\n this.recovered = pid && this._pid === pid;\n this._pid = pid; // defined only if connection state recovery is enabled\n this.connected = true;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n this._drainQueue(true);\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n });\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n *\n * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"disconnect\", (reason) => {\n * // console.log(reason); prints \"io client disconnect\"\n * });\n *\n * socket.disconnect();\n *\n * @return self\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for {@link disconnect()}.\n *\n * @return self\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @example\n * socket.compress(false).emit(\"hello\");\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @example\n * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n *\n * @returns self\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * @example\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n *\n * @returns self\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @example\n * socket.onAny((event, ...args) => {\n * console.log(`got ${event}`);\n * });\n *\n * @param listener\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @example\n * socket.prependAny((event, ...args) => {\n * console.log(`got event ${event}`);\n * });\n *\n * @param listener\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`got event ${event}`);\n * }\n *\n * socket.onAny(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAny(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAny();\n *\n * @param listener\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.onAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n onAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.prependAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n prependAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`sent event ${event}`);\n * }\n *\n * socket.onAnyOutgoing(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAnyOutgoing(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAnyOutgoing();\n *\n * @param [listener] - the catch-all listener (optional)\n */\n offAnyOutgoing(listener) {\n if (!this._anyOutgoingListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyOutgoingListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyOutgoingListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAnyOutgoing() {\n return this._anyOutgoingListeners || [];\n }\n /**\n * Notify the listeners for each packet sent\n *\n * @param packet\n *\n * @private\n */\n notifyOutgoingListeners(packet) {\n if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n const listeners = this._anyOutgoingListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, packet.data);\n }\n }\n }\n}\n","/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nexport function Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n this.jitter = jitter;\n};\n","import { Socket as Engine, installTimerFunctions, nextTick, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Backoff } from \"./contrib/backo2.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n const onError = (err) => {\n this.cleanup();\n this._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n this.maybeReconnectOnOpen();\n }\n };\n // emit `error`\n const errorSub = on(socket, \"error\", onError);\n if (false !== this._timeout) {\n const timeout = this._timeout;\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n onError(new Error(\"timeout\"));\n socket.close();\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n try {\n this.decoder.add(data);\n }\n catch (e) {\n this.onclose(\"parse error\", e);\n }\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n nextTick(() => {\n this.emitReserved(\"packet\", packet);\n }, this.setTimeoutFn);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n else if (this._autoConnect && !socket.active) {\n socket.connect();\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n if (this.engine)\n this.engine.close();\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called upon engine close.\n *\n * @private\n */\n onclose(reason, description) {\n this.cleanup();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\n","import { io, Socket as IOSocket } from \"socket.io-client\";\nimport { DefaultEventsMap, EventsMap } from \"@socket.io/component-emitter\";\n\n/**\n * A socket class that connects to a websocket and responds to events.\n * Documentation about the socket client here: https://socket.io/docs/v4/client-socket-instance/\n */\nexport class Socket {\n\tprotected connection!: IOSocket;\n\n\tpublic get id() {\n\t\treturn this.connection.id;\n\t}\n\n\tconstructor(public url: string) {\n\t\tthis.connection = io(url, {\n\t\t\tpath: \"/api/ws/activity\",\n\t\t\twithCredentials: true,\n\t\t\tautoConnect: true,\n\t\t\treconnection: true,\n\t\t\treconnectionDelay: 1000,\n\t\t\treconnectionDelayMax: 30000,\n\t\t\treconnectionAttempts: 30,\n\t\t\ttransports: [\"websocket\"]\n\t\t});\n\n\t\t// Handle disconnect events\n\t\tthis.connection.on(\"disconnect\", (reason) => {\n\t\t\t// The disconnection was initiated by the server, we need to reconnect manually.\n\t\t\tif (reason === \"io server disconnect\") {\n\t\t\t\tthis.reconnect();\n\t\t\t}\n\n\t\t\t// Else the socket will automatically try to reconnect\n\t\t});\n\n\t\t// Make sure we catch any errors here and not in the global\n\t\tthis.connection.on(\"connect_error\", (error) => {\n\t\t\tconsole.error(\"Socket connection error\", error);\n\t\t});\n\n\t\tthis.connection.on(\"connect\", () => {\n\t\t\tthis.didConnect();\n\t\t});\n\t}\n\n\tforceReconnect() {\n\t\tthis.connection.disconnect();\n\t\tthis.connection.connect();\n\t}\n\n\tprotected reconnect() {\n\t\tthis.connection.connect();\n\t}\n\n\tprotected connect() {\n\t\tthis.connection.connect();\n\t}\n\n\tdisconnect() {\n\t\tthis.connection.disconnect();\n\t}\n\n\tprotected didConnect() {}\n}\n","import { Socket } from \"./socket\";\nimport { API_BASE_WS_URL } from \"../config\";\nimport { BoardCursorPosition, Id, Room, WebSocketMessage } from \"shared\";\nimport { Subject } from \"rxjs\";\n\nexport interface RoomSocketEventsMap {\n\tmessage: (message: WebSocketMessage) => void;\n}\n\nexport class RoomSocket extends Socket {\n\tprivate currentRoomId: Id | null | undefined = null;\n\tprivate receiveMessage$ = new Subject();\n\n\tget message$() {\n\t\treturn this.receiveMessage$.asObservable();\n\t}\n\n\tconstructor(url: string) {\n\t\tsuper(url);\n\n\t\tthis.connection.on(\"message\", (msg: any) => {\n\t\t\tthis.didReceiveMessage(msg);\n\t\t});\n\t}\n\n\tprotected didConnect() {\n\t\tsuper.didConnect();\n\n\t\t// Join room on reconnect\n\t\tsetTimeout(() => {\n\t\t\tif (this.currentRoomId != null) {\n\t\t\t\tthis.joinRoom(this.currentRoomId!);\n\t\t\t}\n\t\t}, 1000);\n\t}\n\n\tasync joinRoom(roomId: Id) {\n\t\tthis.currentRoomId = roomId;\n\t\tawait this.sendMessage({ kind: \"room.join\", roomId });\n\t}\n\n\tasync leaveRoom() {\n\t\tthis.currentRoomId = null;\n\n\t\tawait this.sendMessage({ kind: \"room.leave\", roomId: this.currentRoomId! });\n\t}\n\n\tasync updateRoomCursor(roomId: Id, cursor: BoardCursorPosition | null) {\n\t\tawait this.sendMessage({ kind: \"user.cursor\", roomId, cursor });\n\t}\n\n\tasync sendMessage(message: WebSocketMessage) {\n\t\tthis.connection.send(message);\n\t}\n\n\tprotected async didReceiveMessage(message: WebSocketMessage) {\n\t\tthis.receiveMessage$.next(message);\n\t}\n}\n\nexport const roomSocket = new RoomSocket(API_BASE_WS_URL);\n","import { ActionSubject, runAction } from \"../action\";\nimport { LanguageCode } from \"shared\";\n\nexport const languageAction = {\n\tset: new ActionSubject()\n};\n\nexport const setLanguage = (code: LanguageCode) => runAction(languageAction.set, () => code);\n","import { BehaviorSubject } from \"rxjs\";\nimport { GlobalStore, subSuccessActionValue } from \"../store\";\nimport { LanguageCode } from \"shared\";\nimport { getBestBrowserLanguageCode } from \"../../util/translate-util\";\nimport { languageAction } from \"./language-action\";\nimport { sessionStore } from \"../session/session-store\";\nimport { getItem, setItem } from \"../../util/local-storage\";\nimport { STORAGE_KEYS } from \"../../config\";\n\nexport class LanguageStore extends GlobalStore {\n\tcurrentLanguage: LanguageCode =\n\t\tsessionStore.sessionUser?.data?.language ?? getItem(STORAGE_KEYS.language) ?? getBestBrowserLanguageCode();\n\n\tmodel$ = {\n\t\tcurrentLanguage: new BehaviorSubject(this.currentLanguage)\n\t};\n\n\tprotected subscriptions() {\n\t\treturn [\n\t\t\tsubSuccessActionValue(languageAction.set, (code) => {\n\t\t\t\tsetItem(STORAGE_KEYS.language, code);\n\n\t\t\t\tif (this.currentLanguage !== code) {\n\t\t\t\t\tthis.model$.currentLanguage.next(code);\n\t\t\t\t}\n\t\t\t}),\n\t\t\tthis.model$.currentLanguage.subscribe((code) => {\n\t\t\t\tthis.currentLanguage = code;\n\t\t\t})\n\t\t];\n\t}\n}\n\nexport const languageStore = new LanguageStore();\n","import { GQLMutationRoot, GQLQueryRoot } from \"./gql/gql-root\";\nimport { GQLShape, hydrateGQLResult, makeGQLQueryFromShapeAndArgs } from \"./gql/gql-util\";\nimport { API_BASE_URL, APP_BUILD_DATE, SESSION_ID } from \"../config\";\nimport { APIError, takeId } from \"shared\";\nimport { modelStore } from \"../state/model/model-store\";\nimport { caughtError } from \"../state/activity/activity-action\";\nimport { roomSocket } from \"../socket/room-socket\";\nimport { takeFirst } from \"../util/observable-util\";\nimport { appStore } from \"../state/app/app-store\";\nimport { workspaceStore } from \"../state/workspace/workspace-store\";\nimport { roomStore } from \"../state/room/room-store\";\nimport { languageStore } from \"../state/language/language-store\";\n\nexport interface ErrorEvent {\n\terror?: Error;\n\tresponse?: Response;\n}\n\nexport interface RequestOptionsBase {\n\tnoAuth?: boolean;\n\tabortSignal?: AbortSignal;\n\theaders?: Record;\n\tskipLogoutOnUnauthorized?: boolean;\n\tskipAbsorbModel?: boolean;\n}\n\nexport interface RequestOptions extends RequestOptionsBase {\n\tmethod: \"POST\" | \"PUT\" | \"GET\" | \"DELETE\";\n\tbody?: any;\n\tpath: string;\n}\n\nexport abstract class ApiBase {\n\tprotected abstract logout(): Promise;\n\n\tprotected async query<\n\t\tTRootKey extends keyof GQLQueryRoot,\n\t\tTArgs extends GQLQueryRoot[TRootKey][\"args\"],\n\t\tTResult extends GQLQueryRoot[TRootKey][\"result\"],\n\t\tTResultNonArray extends TResult extends (infer TArrayElement)[] ? TArrayElement : TResult\n\t>(\n\t\trootKey: TRootKey,\n\t\targs: TArgs,\n\t\tresultShape: GQLShape | true,\n\t\tfetchOptions?: RequestOptionsBase\n\t): Promise {\n\t\tconst { query, variables } = makeGQLQueryFromShapeAndArgs(rootKey, args, resultShape, { opName: rootKey });\n\t\tconst result = await this.sendGQLRequest(query, variables, fetchOptions);\n\t\tconst hydratedResult = hydrateGQLResult(result);\n\n\t\tif (fetchOptions?.skipAbsorbModel) {\n\t\t\treturn hydratedResult[rootKey];\n\t\t}\n\n\t\treturn modelStore.absorb(hydratedResult[rootKey]);\n\t}\n\n\tprotected async mutate<\n\t\tTRootKey extends keyof GQLMutationRoot,\n\t\tTArgs extends GQLMutationRoot[TRootKey][\"args\"],\n\t\tTResult extends GQLMutationRoot[TRootKey][\"result\"],\n\t\tTResultNonArray extends TResult extends Array ? R : TResult\n\t>(\n\t\trootKey: TRootKey,\n\t\targs: TArgs,\n\t\tresultShape: GQLShape,\n\t\tfetchOptions?: RequestOptionsBase\n\t): Promise {\n\t\tconst { query, variables } = makeGQLQueryFromShapeAndArgs(rootKey, args, resultShape as GQLShape, {\n\t\t\tisMutation: true,\n\t\t\topName: rootKey\n\t\t});\n\n\t\tconst result = await this.sendGQLRequest(query, variables, fetchOptions);\n\t\tconst hydratedResult = hydrateGQLResult(result);\n\n\t\tif (fetchOptions?.skipAbsorbModel) {\n\t\t\treturn hydratedResult[rootKey];\n\t\t}\n\n\t\treturn modelStore.absorb(hydratedResult[rootKey]);\n\t}\n\n\tasync *streamRequest(options: RequestOptions): AsyncGenerator {\n\t\tconst response = await this.sendRequest({\n\t\t\t...options,\n\t\t\theaders: {\n\t\t\t\t...options.headers,\n\t\t\t\tAccept: \"text/event-stream\"\n\t\t\t}\n\t\t});\n\n\t\tif (response.body == null) return;\n\n\t\tfor (const reader = response.body.getReader(); ; ) {\n\t\t\tconst { value, done } = await reader.read();\n\n\t\t\tif (done) break;\n\n\t\t\tconst text = new TextDecoder().decode(value);\n\n\t\t\tconst regex = /(?data|error): (?[\\s\\S]*?)(?=\\n\\n(data|error|$))/g;\n\n\t\t\tfor (const match of text.matchAll(regex)) {\n\t\t\t\tconst { kind, content } = match.groups as { kind: \"data\" | \"error\"; content: string };\n\n\t\t\t\tif (kind === \"error\") {\n\t\t\t\t\tconst parsedError = JSON.parse(content);\n\t\t\t\t\tthrow APIError.fromObject(parsedError) ?? APIError.fromStatusCode(response.status, content);\n\t\t\t\t} else {\n\t\t\t\t\tyield content;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tasync sendRequest(options: RequestOptions): Promise {\n\t\tconst headers: HeadersInit = {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\"X-Session-Id\": SESSION_ID,\n\t\t\t\"X-Socket-Id\": roomSocket.id,\n\t\t\t\"X-App-Version\": APP_BUILD_DATE.getTime().toString(),\n\t\t\t\"X-App-Context\": (await takeFirst(appStore.model$.appContext)) ?? \"web\",\n\t\t\t\"X-Workspace\": takeId(workspaceStore.currentWorkspace) ?? \"\",\n\t\t\t\"X-Room\": takeId(roomStore.currentRoom) ?? \"\",\n\t\t\t\"Accept-Language\": languageStore.currentLanguage,\n\t\t\t...options.headers\n\t\t};\n\n\t\tfor (const [key, value] of Object.entries(headers)) {\n\t\t\tif (!value) {\n\t\t\t\tdelete headers[key];\n\t\t\t}\n\t\t}\n\n\t\tconst response = await fetch(`${API_BASE_URL}${options.path}`, {\n\t\t\tmethod: options.method,\n\t\t\theaders,\n\t\t\tcredentials: \"include\",\n\t\t\tbody:\n\t\t\t\toptions.body === undefined\n\t\t\t\t\t? undefined\n\t\t\t\t\t: typeof options.body === \"string\"\n\t\t\t\t\t\t? options.body\n\t\t\t\t\t\t: JSON.stringify(options.body),\n\t\t\t...(options.abortSignal != null ? { signal: options.abortSignal } : {})\n\t\t});\n\n\t\tif (response.status === 401 && !options.skipLogoutOnUnauthorized) {\n\t\t\tawait this.logout();\n\t\t\tthrow new APIError(\"unauthorized\", \"You are not authorized to perform this action\");\n\t\t}\n\n\t\tif (!response.ok) {\n\t\t\tconst text = await response.text();\n\n\t\t\tlet apiError: APIError | undefined = undefined;\n\n\t\t\ttry {\n\t\t\t\tconst json = JSON.parse(text);\n\t\t\t\tconst gqlError = json?.errors?.[0];\n\n\t\t\t\tapiError = APIError.fromObject(json) ?? APIError.fromObject(gqlError.extensions);\n\t\t\t} catch {\n\t\t\t\t// Ignore\n\t\t\t}\n\n\t\t\tapiError = apiError ?? APIError.fromStatusCode(response.status, text);\n\n\t\t\t//console.error(apiError);\n\t\t\tcaughtError(apiError);\n\n\t\t\tthrow apiError ?? APIError.fromStatusCode(response.status, text);\n\t\t}\n\n\t\treturn response;\n\t}\n\n\tprotected async sendGQLRequest(\n\t\tquery: string,\n\t\tvariables: Record,\n\t\toptions?: RequestOptionsBase\n\t): Promise {\n\t\ttry {\n\t\t\tconst queryName = query.match(/(query|mutation) (?\\w+)/)?.groups?.queryName;\n\n\t\t\tconst response = await this.sendRequest({\n\t\t\t\t...options,\n\t\t\t\tpath: `/graphql${queryName != null ? `/${queryName}` : \"\"}`,\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\tquery,\n\t\t\t\t\tvariables\n\t\t\t\t})\n\t\t\t});\n\n\t\t\t// Grab the json\n\t\t\tlet json: { data: any; errors?: { message: string; extensions?: { exception?: any } }[] } | null = null;\n\t\t\ttry {\n\t\t\t\tjson = await response.json();\n\t\t\t} catch (err) {\n\t\t\t\t// Couldnt grab json\n\t\t\t}\n\n\t\t\tif (response.status !== 200 || json == null || (json.errors?.length || 0) > 0) {\n\t\t\t\tconst exception = json?.errors?.[0]?.extensions as Record;\n\n\t\t\t\tconst apiError =\n\t\t\t\t\tAPIError.fromObject(exception) ??\n\t\t\t\t\tAPIError.fromStatusCode(response.status, (json?.errors || []).map((e) => e.message).join(\", \"));\n\n\t\t\t\tif (\"stack\" in exception) {\n\t\t\t\t\tconsole.error(exception.stack);\n\t\t\t\t}\n\n\t\t\t\t//console.error(apiError);\n\t\t\t\tcaughtError(apiError);\n\n\t\t\t\tif (apiError.kind === \"unauthorized\" && !options?.skipLogoutOnUnauthorized) {\n\t\t\t\t\tawait this.logout();\n\t\t\t\t}\n\n\t\t\t\t// noinspection ExceptionCaughtLocallyJS\n\t\t\t\tthrow apiError;\n\t\t\t} else {\n\t\t\t\treturn json.data;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\t// If the error code is 20 it means we cancelled the request with an abort controller.\n\t\t\t// This doesnt count as an error,\n\t\t\tif (error.code === 20) {\n\t\t\t\tthrow new Error(`The request with abort id \"${options?.abortSignal || \"N/A\"}\" was cancelled by the user.`);\n\t\t\t}\n\n\t\t\t// Replace the stack with the frontend stack\n\t\t\tif (error instanceof APIError) {\n\t\t\t\terror.stack = `${error.stack != null ? `${error.stack}\\n` : \"\"}${new Error().stack}`;\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\t}\n}\n","import { GQLShape } from \"./gql-util\";\nimport {\n\tAIAction,\n\tAuthToken,\n\tAuthUserInfo,\n\tChatMessage,\n\tCopilot,\n\tIdea,\n\tIdeaCluster,\n\tIdeaMetadata,\n\tLink,\n\tMedia,\n\tModel,\n\tPlan,\n\tPlanPrice,\n\tPoll,\n\tRobot,\n\tRoom,\n\tRoomSnapshot,\n\tSession,\n\tSubscription,\n\tUser,\n\tWebSocketMessage,\n\tWorkspace,\n\tWorkspaceAccess\n} from \"shared\";\nimport { RoomAccess } from \"shared/src/model/room-access\";\nimport { UnfurledUrl } from \"shared/src/types/unfurled-url\";\n\nexport const GQL_ID_SHAPE = { id: true };\n\nexport const GQL_MODEL_SHAPE: GQLShape = {\n\tid: true,\n\tcreatedAt: true,\n\tupdatedAt: true\n};\n\nexport const GQL_MEDIA_SHAPE: GQLShape = {\n\t...GQL_MODEL_SHAPE,\n\ttitle: true,\n\tpath: true,\n\toriginalUrl: true,\n\tsignedUrl: true,\n\tcreatedBy: GQL_ID_SHAPE\n};\n\nexport const GQL_AUTH_TOKEN: GQLShape = {\n\tsessionToken: true,\n\trefreshToken: true\n};\n\nexport const GQL_AUTH_USER_INFO_TOKEN: GQLShape = {\n\tsub: true,\n\tname: true,\n\temail: true\n};\n\nexport const GQL_ROBOT_SHAPE: GQLShape = {\n\t...GQL_MODEL_SHAPE,\n\tname: true,\n\tdescription: true,\n\tdetails: true,\n\temptyMessages: true,\n\terrorMessages: true,\n\tpersonality: true,\n\tgroup: true,\n\n\tcreatedBy: GQL_ID_SHAPE,\n\tavatar: GQL_ID_SHAPE,\n\tworkspace: GQL_ID_SHAPE\n};\n\nexport const GQL_USER_SHAPE: GQLShape = {\n\t...GQL_MODEL_SHAPE,\n\tname: true,\n\temail: true,\n\tcolor: true,\n\tdata: true,\n\n\tisAnonymous: true,\n\tcopilot: GQL_ID_SHAPE,\n\tavatar: GQL_ID_SHAPE\n};\n\nexport const GQL_SESSION_SHAPE: GQLShape = {\n\tuser: GQL_USER_SHAPE\n};\n\nexport const GQL_ROOM_ACCESS_SHAPE: GQLShape = {\n\t...GQL_MODEL_SHAPE,\n\tkind: true,\n\trole: true,\n\tuser: GQL_USER_SHAPE,\n\tworkspace: GQL_ID_SHAPE,\n\troom: GQL_ID_SHAPE\n};\n\nexport const GQL_ACTIVITY_SHAPE: GQLShape = {};\n\nexport const GQL_IDEA_METADATA_SHAPE: GQLShape = {\n\t...GQL_MODEL_SHAPE,\n\tpollResults: true,\n\tkind: true,\n\tsentiment: true,\n\tlanguage: true\n};\n\nexport const GQL_IDEA_SHAPE: GQLShape = {\n\t...GQL_MODEL_SHAPE,\n\tfriendlyId: true,\n\tisCollapsed: true,\n\tisChildrenFolded: true,\n\tisGroup: true,\n\tcolor: true,\n\tcreatedBy: GQL_ID_SHAPE,\n\treactions: true,\n\troom: GQL_ID_SHAPE,\n\tparent: GQL_ID_SHAPE,\n\tposition: true,\n\torder: true,\n\tdirection: true,\n\ttext: true,\n\tdetails: true,\n\tsticker: true,\n\tmedia: true,\n\tisAIAssisted: true,\n\n\tmeta: GQL_IDEA_METADATA_SHAPE\n};\n\nexport const GQL_LINK_SHAPE: GQLShape = {\n\t...GQL_MODEL_SHAPE,\n\trole: true,\n\trank: true,\n\tisDisabled: true,\n\tcode: true\n};\n\nexport const GQL_COPILOT_SHAPE: GQLShape = {\n\t...GQL_MODEL_SHAPE,\n\troom: GQL_ID_SHAPE,\n\trobot: GQL_ROBOT_SHAPE,\n\tuser: GQL_ID_SHAPE,\n\tisActive: true\n};\n\nexport const GQL_CHAT_MESSAGE_SHAPE: GQLShape = {\n\t...GQL_MODEL_SHAPE,\n\ttext: true,\n\tidea: GQL_ID_SHAPE,\n\tuser: GQL_ID_SHAPE,\n\tkind: true,\n\tcopilot: GQL_ID_SHAPE\n};\n\nexport const GQL_WORKSPACE_SHAPE: GQLShape = {\n\t...GQL_MODEL_SHAPE,\n\tname: true,\n\tdescription: true,\n\trank: true,\n\tlogo: GQL_ID_SHAPE,\n\tlink: GQL_ID_SHAPE,\n\tdata: true,\n\tplan: true,\n\tfeatures: true,\n\tsubscriptionStatus: true,\n\tstats: {\n\t\tmembers: true,\n\t\tseats: true\n\t}\n};\n\nexport const GQL_WORKSPACE_ACCESS_SHAPE: GQLShape = {\n\t...GQL_MODEL_SHAPE,\n\tuser: GQL_USER_SHAPE,\n\tworkspace: GQL_ID_SHAPE,\n\trank: true\n};\n\nexport const GQL_POLL_SHAPE: GQLShape = {\n\t...GQL_MODEL_SHAPE,\n\ttext: true,\n\tdata: true,\n\n\troom: GQL_ID_SHAPE\n};\n\nexport const GQL_ROOM_SNAPSHOT: GQLShape = {\n\t...GQL_MODEL_SHAPE,\n\troom: GQL_ID_SHAPE,\n\tchangeCount: true,\n\tideaCount: true,\n\tusers: GQL_USER_SHAPE\n};\n\nexport const GQL_ROOM_SHAPE: GQLShape = {\n\t...GQL_MODEL_SHAPE,\n\tchallenge: true,\n\ttimer: true,\n\treactions: true,\n\trole: true,\n\tslug: true,\n\tdata: true,\n\tisPrivate: true,\n\n\tactiveUsers: GQL_USER_SHAPE,\n\tlink: GQL_ID_SHAPE,\n\tcover: GQL_ID_SHAPE,\n\tworkspace: GQL_ID_SHAPE,\n\tpoll: GQL_POLL_SHAPE\n};\n\nexport const GQL_PLAN_PRICE_SHAPE: GQLShape = {\n\tcurrency: true,\n\tinterval: true,\n\tprice: true\n};\n\nexport const GQL_PLAN_SHAPE: GQLShape = {\n\ttrialDays: true,\n\tprices: GQL_PLAN_PRICE_SHAPE,\n\tkind: true,\n\tfeatures: true\n};\n\nexport const GQL_SUBSCRIPTION_SHAPE: GQLShape = {\n\tstatus: true,\n\tcurrentPeriodStart: true,\n\tcancelAtPeriodEnd: true,\n\tnextChargeDate: true,\n\tcanceledAt: true,\n\tcardLast4: true,\n\tcurrentPeriodEnd: true,\n\tquantity: true,\n\ttrialEnd: true,\n\tpausedUntil: true,\n\tupcomingPrice: GQL_PLAN_PRICE_SHAPE,\n\tunitPrice: GQL_PLAN_PRICE_SHAPE,\n\ttotalPrice: GQL_PLAN_PRICE_SHAPE,\n\tplanKind: true\n};\n\nexport const GQL_AI_ACTION_SHAPE: GQLShape = {\n\t...GQL_MODEL_SHAPE,\n\trecipe: true,\n\tmetadata: true,\n\ticon: GQL_ID_SHAPE,\n\tworkspace: GQL_ID_SHAPE,\n\tcreatedBy: GQL_ID_SHAPE\n};\n\nexport const GQL_IDEA_CLUSTER_SHAPE: GQLShape = {\n\tid: true,\n\ttitle: true,\n\tcolor: true,\n\tsticker: true,\n\tideas: GQL_IDEA_SHAPE\n};\n\nexport const GQL_UNFURLED_URL_SHAPE: GQLShape = {\n\turl: true,\n\ttitle: true,\n\tdescription: true,\n\timageUrl: true,\n\tmediaId: true,\n\tcolor: true\n};\n","import { openDialog, WebDialog } from \"web-dialog\";\nimport { html, render } from \"lit\";\nimport { prepareDialogForWrapper } from \"../atoms/dialog-wrapper\";\n\nexport async function openAcceptTerms(): Promise {\n\timport(\"../molecules/accept-terms\");\n\treturn (\n\t\t(await openDialog({\n\t\t\tinitialize: () => {\n\t\t\t\tconst $d = new WebDialog();\n\t\t\t\t$d.style.setProperty(\"--dialog-max-width\", \"600px\");\n\t\t\t\t$d.dataset[\"blur\"] = \"true\";\n\t\t\t\t$d.addEventListener(\"closing\", (e) => e.preventDefault());\n\t\t\t\tprepareDialogForWrapper($d);\n\t\t\t\treturn $d;\n\t\t\t},\n\t\t\tcenter: true,\n\t\t\t$content: ($dialog) =>\n\t\t\t\trender(\n\t\t\t\t\thtml`\n\t\t\t\t\t\t $dialog.close(false)}\"\n\t\t\t\t\t\t\t@accept=\"${() => $dialog.close(true)}\"\n\t\t\t\t\t\t>\n\t\t\t\t\t`,\n\t\t\t\t\t$dialog\n\t\t\t\t)\n\t\t}).resolver) ?? false\n\t);\n}\n","export function loadScript(src: string) {\n\tif (document.querySelector(`script[src=\"${src}\"]`)) return Promise.resolve();\n\n\treturn new Promise((resolve, reject) => {\n\t\tconst script = document.createElement(\"script\");\n\t\tscript.type = \"text/javascript\";\n\t\tscript.src = src;\n\t\tscript.onload = () => resolve();\n\t\tscript.onerror = reject;\n\t\tdocument.body.appendChild(script);\n\t});\n}\n","import { api } from \"../../api/api\";\nimport { runAction } from \"../action\";\nimport {\n\tAPIError,\n\tAuthCredentials,\n\tAuthCredentialsResponse,\n\tAuthProviderKind,\n\tEVENT_GUEST_SIGN_IN,\n\tEVENT_GUEST_SIGN_UP,\n\tEVENT_USER_SIGN_IN,\n\tEVENT_USER_SIGN_UP,\n\thasValue,\n\tmakeId,\n\tOAuthCredentials,\n\tUser\n} from \"shared\";\nimport { API_BASE_URL, ROUTES } from \"../../config\";\nimport { openAcceptTerms } from \"../../dialogs/open-accept-terms\";\nimport { teamsStore } from \"../teams/teams-store\";\nimport { takeFirst } from \"../../util/observable-util\";\nimport { loadScript } from \"../../util/dom-util\";\nimport { teamsService } from \"../../services/teams-service\";\nimport { pushState, reloadApp } from \"../../util/route-util\";\nimport { eventService } from \"../../services/event-service\";\nimport { sessionAction } from \"./session-action\";\nimport { languageStore } from \"../language/language-store\";\n\n// https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_js/configuring_your_webpage_for_sign_in_with_apple#3331292\ninterface AppleOauthResponse {\n\tauthorization: {\n\t\tcode: string;\n\t\tid_token: string;\n\t\tstate: string;\n\t};\n\tuser?: {\n\t\temail: string;\n\t\tname: {\n\t\t\tfirstName: string;\n\t\t\tlastName: string;\n\t\t};\n\t};\n}\n\nexport const refreshSessionUser = async () => runAction(sessionAction.refreshSessionUser, async () => api.user.me());\n\nexport const signup = (credentials: AuthCredentials, data?: Partial) =>\n\trunAction(sessionAction.signup, async () => {\n\t\tconst result = api.session.signup(credentials, data);\n\n\t\t// Track event before the session is set to get correct measurements\n\t\tawait eventService.trackEvent(credentials.kind === \"guest\" ? EVENT_GUEST_SIGN_UP : EVENT_USER_SIGN_UP);\n\n\t\treturn result;\n\t});\n\nexport const login = (credentials: AuthCredentials) =>\n\trunAction(sessionAction.login, async () => {\n\t\tconst result = await api.session.login(credentials);\n\n\t\t// Track event before the session is set to get correct measurements\n\t\tawait eventService.trackEvent(credentials.kind === \"guest\" ? EVENT_GUEST_SIGN_IN : EVENT_USER_SIGN_IN);\n\n\t\treturn result;\n\t});\n\nexport const logout = ({ withoutNavigation }: { withoutNavigation?: boolean } = {}) =>\n\trunAction(sessionAction.logout, async () => {\n\t\ttry {\n\t\t\tawait api.session.logout();\n\t\t} catch (error) {}\n\n\t\tlocalStorage.clear();\n\t\tsessionStorage.clear();\n\n\t\t// We need to clear all stores. This is the most efficient way right now but we probably need another way.\n\t\t// In Teams, reloading the entire page might cause an endless loop login/logout because Teams automatically tries to log in the user.\n\t\t// Push state is used to prevent the page from reloading endlessly, but wont clear all stores properly.\n\t\tif (!withoutNavigation) {\n\t\t\tif (teamsStore.initialized) {\n\t\t\t\tpushState(ROUTES.index);\n\t\t\t} else {\n\t\t\t\treloadApp(ROUTES.index);\n\t\t\t}\n\t\t}\n\t});\n\nexport function openWindow(url: string) {\n\tconst width = Math.min(500, window.innerWidth);\n\tconst height = Math.min(600, window.innerHeight);\n\tconst top = window.screenY + (window.innerHeight - height) / 2;\n\tconst left = window.screenX + (window.innerWidth - width) / 2;\n\n\treturn window.open(\n\t\tencodeURI(url),\n\t\tundefined,\n\t\t`fullscreen=0${width != null ? `, width=${width}` : \"\"}${height != null ? `, height=${height}` : \"\"}${\n\t\t\ttop != null ? `, top=${top}` : \"\"\n\t\t}${left != null ? `, left=${left}` : \"\"}`\n\t);\n}\n\nexport function openAuthWindow(kind: AuthProviderKind): Promise {\n\tconst state = makeId();\n\tconst params = { state };\n\tconst baseUrl = `${API_BASE_URL}/auth/initiate/${kind}`;\n\tconst url = `${baseUrl}?${new URLSearchParams(params)}`;\n\n\tif (teamsStore.initialized) {\n\t\treturn new Promise(async (res, rej) => {\n\t\t\ttry {\n\t\t\t\tconst result = JSON.parse(\n\t\t\t\t\tawait teamsService.authenticate({\n\t\t\t\t\t\turl: encodeURI(url)\n\t\t\t\t\t})\n\t\t\t\t) as AuthCredentialsResponse;\n\n\t\t\t\tif (result.success) {\n\t\t\t\t\tres(result.credentials);\n\t\t\t\t} else {\n\t\t\t\t\trej(new Error(result.message || \"Unknown error\"));\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tif (err.message === \"CancelledByUser\") {\n\t\t\t\t\trej(new Error(\"popup_closed_by_user\"));\n\t\t\t\t} else {\n\t\t\t\t\trej(err);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tconst authWindow = openWindow(url);\n\n\tif (!authWindow) throw new Error(\"Could not open auth window\");\n\n\treturn new Promise((res, rej) => {\n\t\tlet didReceiveMessage = false;\n\n\t\tconst eventHandler = (event: MessageEvent) => {\n\t\t\t// Only listen for messages with \"success\" in data\n\t\t\tconst data = event.data;\n\t\t\tif (data == null || !(\"success\" in data)) return;\n\t\t\twindow.removeEventListener(\"message\", eventHandler);\n\n\t\t\tdidReceiveMessage = true;\n\n\t\t\tif (data.success) {\n\t\t\t\tconst credentials = data.credentials;\n\n\t\t\t\tif (\"state\" in credentials && credentials.state !== state) {\n\t\t\t\t\trej(new Error(`Invalid state: ${credentials.state} !== ${state}`));\n\t\t\t\t}\n\n\t\t\t\tif (\"kind\" in credentials && credentials.kind !== kind) {\n\t\t\t\t\trej(new Error(`Invalid kind: ${credentials.kind} !== ${kind}`));\n\t\t\t\t}\n\n\t\t\t\tres(credentials);\n\t\t\t} else {\n\t\t\t\trej(new Error(data.message || \"Unknown error\"));\n\t\t\t}\n\n\t\t\tauthWindow.close();\n\t\t};\n\n\t\twindow.addEventListener(\"message\", eventHandler);\n\n\t\t// On close, remove listener\n\t\tconst interval = setInterval(() => {\n\t\t\tif (authWindow.closed) {\n\t\t\t\twindow.removeEventListener(\"message\", eventHandler);\n\t\t\t\tclearInterval(interval);\n\n\t\t\t\tif (!didReceiveMessage) {\n\t\t\t\t\trej(new Error(\"popup_closed_by_user\"));\n\t\t\t\t}\n\t\t\t}\n\t\t}, 500);\n\t});\n}\n\nexport const setCredentials = (credentials: AuthCredentials) =>\n\trunAction(sessionAction.setCredentials, async () => {\n\t\tapi.session.setCredentials(credentials);\n\t\treturn credentials;\n\t});\n\nexport type LoginOrSignupResult = \"sign_up\" | \"sign_in\";\nexport async function loginOrSignup(\n\tcredentials: AuthCredentials,\n\tdata?: Partial\n): Promise {\n\tlet result: LoginOrSignupResult = \"sign_in\";\n\ttry {\n\t\tawait login(credentials);\n\t} catch (e) {\n\t\tif (e instanceof APIError && e.kind === \"noAccountFound\") {\n\t\t\tconst acceptedTerms = await openAcceptTerms();\n\t\t\tif (!acceptedTerms) return undefined;\n\n\t\t\tawait signup(credentials, data);\n\t\t\tresult = \"sign_up\";\n\t\t} else {\n\t\t\tthrow e;\n\t\t}\n\t}\n\n\t// Make sure to associate the teams auth token with the user to automatically assign the user to the correct workspace\n\tif (teamsStore.initialized) {\n\t\tconst authToken = await takeFirst(teamsStore.model$.authToken);\n\t\tif (authToken != null) {\n\t\t\tawait setCredentials({ kind: \"teams\", token: authToken });\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function redirectOAuthFlow(kind: AuthProviderKind, { redirectUrl }: { redirectUrl: string }): void {\n\tconst state = makeId();\n\tconst params = { state, redirectUrl };\n\tconst baseUrl = `${API_BASE_URL}/auth/initiate/${kind}`;\n\tconst url = `${baseUrl}?${new URLSearchParams(params)}`;\n\tlocation.href = url;\n}\n\nexport const openOAuthFlow = (kind: AuthProviderKind) =>\n\trunAction(sessionAction.oauth, async () => ({\n\t\tcredentials: await openAuthWindow(kind),\n\t\tdata: {\n\t\t\tdata: {\n\t\t\t\tlanguage: languageStore.currentLanguage\n\t\t\t}\n\t\t} as Partial\n\t}));\n\n/**\n * Opes the apple OAuth flow.\n * https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_js/configuring_your_webpage_for_sign_in_with_apple\n */\nexport const openAppleOAuthFlow = () =>\n\trunAction(sessionAction.oauth, async () => {\n\t\t// Load apples proprietary BS script (will add AppleID to window object).\n\t\t// The advantage of using this script instead of a popup is that it can open a native popup on iOS.\n\t\tconst state = makeId();\n\t\tawait loadScript(\"https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js\").then();\n\t\t(window as any).AppleID.auth.init({\n\t\t\tclientId: \"com.ideanote.ideamap.client\",\n\t\t\tscope: \"name email\",\n\t\t\tstate,\n\t\t\tredirectURI: `${location.origin}/auth/redirect/apple`,\n\t\t\tnonce: makeId(),\n\t\t\tusePopup: true\n\t\t});\n\n\t\ttry {\n\t\t\tconst data: AppleOauthResponse = await (window as any).AppleID.auth.signIn();\n\t\t\tconsole.log(\"Data received\", data);\n\n\t\t\tconst { code, state: receivedState } = data.authorization;\n\t\t\tconst { firstName, lastName } = data.user?.name ?? {};\n\n\t\t\treturn {\n\t\t\t\tcredentials: {\n\t\t\t\t\tkind: \"apple\",\n\t\t\t\t\tcode,\n\t\t\t\t\tstate: receivedState\n\t\t\t\t} as OAuthCredentials,\n\t\t\t\tdata: {\n\t\t\t\t\tname: [firstName, lastName].filter(hasValue).join(\" \") || undefined,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tlanguage: languageStore.currentLanguage\n\t\t\t\t\t}\n\t\t\t\t} as Partial\n\t\t\t};\n\t\t} catch (err) {\n\t\t\tconsole.error(\"Apple auth error\", err);\n\t\t\tthrow new Error(err.error || err.message || \"Unknown error\");\n\t\t}\n\t});\n","import { ApiBase } from \"./api-base\";\nimport {\n\tGQL_AI_ACTION_SHAPE,\n\tGQL_AUTH_TOKEN,\n\tGQL_AUTH_USER_INFO_TOKEN,\n\tGQL_CHAT_MESSAGE_SHAPE,\n\tGQL_COPILOT_SHAPE,\n\tGQL_IDEA_CLUSTER_SHAPE,\n\tGQL_IDEA_SHAPE,\n\tGQL_LINK_SHAPE,\n\tGQL_MEDIA_SHAPE,\n\tGQL_PLAN_SHAPE,\n\tGQL_POLL_SHAPE,\n\tGQL_ROBOT_SHAPE,\n\tGQL_ROOM_ACCESS_SHAPE,\n\tGQL_ROOM_SHAPE,\n\tGQL_ROOM_SNAPSHOT,\n\tGQL_SESSION_SHAPE,\n\tGQL_SUBSCRIPTION_SHAPE,\n\tGQL_UNFURLED_URL_SHAPE,\n\tGQL_USER_SHAPE,\n\tGQL_WORKSPACE_ACCESS_SHAPE,\n\tGQL_WORKSPACE_SHAPE\n} from \"./gql/gql-shape\";\nimport {\n\tAIAction,\n\tAIActionContext,\n\tAISensitivityKind,\n\tAuthCredentials,\n\tBillingPortalIntent,\n\tBuiltInAIActionKind,\n\tbuiltInAIActionKindToId,\n\tBulkUpdateEntry,\n\tChatMessage,\n\tCopilot,\n\tFriendlyId,\n\tId,\n\tIdea,\n\tIdeaCluster,\n\tisId,\n\tisModel,\n\tLink,\n\tMAX_FILE_SIZE_BYTES,\n\tMedia,\n\tMediaDAO,\n\tModelData,\n\tPoll,\n\tPollRankedIdeasFilter,\n\tQueryOptions,\n\tRef,\n\tRobot,\n\tRoom,\n\tRoomAccess,\n\tRoomSnapshot,\n\tRoomTimer,\n\tStabilityAiStylePreset,\n\tSymbolVotingResults,\n\ttakeId,\n\tUser,\n\tVoteEvaluationCriteria,\n\tWorkspace,\n\tWorkspaceAccess\n} from \"shared\";\nimport { logout } from \"../state/session/session-ac\";\nimport { GQLShape } from \"./gql/gql-util\";\nimport { API_BASE_URL } from \"../config\";\nimport { workspaceStore } from \"../state/workspace/workspace-store\";\n\nexport interface APIRequestOptions {\n\tabortSignal?: AbortSignal;\n\tshape?: GQLShape;\n}\n\nexport class Api extends ApiBase {\n\tprotected async logout(): Promise {\n\t\tawait logout();\n\t}\n\n\tsession = {\n\t\tlogin: (credentials: AuthCredentials) => this.mutate(\"login\", { credentials }, GQL_SESSION_SHAPE),\n\t\tlogout: () => this.mutate(\"logout\", {}, undefined, { skipLogoutOnUnauthorized: true }),\n\t\tsignup: (credentials: AuthCredentials, data?: Partial) =>\n\t\t\tthis.mutate(\"signup\", { data, credentials }, GQL_SESSION_SHAPE),\n\t\trefreshToken: (refreshToken: string) => this.mutate(\"refreshToken\", { refreshToken }, GQL_AUTH_TOKEN),\n\t\tauthUserInfo: (credentials: AuthCredentials) =>\n\t\t\tthis.mutate(\"authUserInfo\", { credentials }, GQL_AUTH_USER_INFO_TOKEN),\n\t\tsetCredentials: (credentials: AuthCredentials) => this.mutate(\"setCredentials\", { credentials }, undefined)\n\t};\n\n\troom = {\n\t\tlist: (options?: QueryOptions) => this.query(\"rooms\", { options }, GQL_ROOM_SHAPE),\n\t\tjoin: (id: Ref, accessCode: string) =>\n\t\t\tthis.mutate(\"joinRoom\", { id: takeId(id), accessCode }, GQL_ROOM_SHAPE),\n\t\tleave: (id: Ref) => this.mutate(\"leaveRoom\", { id: takeId(id) }, undefined),\n\t\tget: ({ id, accessCode, slug }: { id?: Ref; accessCode?: string; slug?: string }) =>\n\t\t\tthis.query(\"room\", { id: takeId(id), accessCode, slug }, GQL_ROOM_SHAPE),\n\t\tcreate: (workspace: Ref, data: Partial) =>\n\t\t\tthis.mutate(\"createRoom\", { workspaceId: takeId(workspace), data }, GQL_ROOM_SHAPE),\n\t\tupdate: (id: Ref, data: Partial) => this.mutate(\"updateRoom\", { id: takeId(id), data }, GQL_ROOM_SHAPE),\n\t\tremove: (id: Ref) => this.mutate(\"removeRoom\", { id: takeId(id) }, undefined),\n\t\tremoveUserFromRoom: (roomId: Ref, userId: Ref) =>\n\t\t\tthis.mutate(\"removeUserFromRoom\", { roomId: takeId(roomId), userId: takeId(userId) }, undefined),\n\t\tupdateTimer: (roomId: Ref, timer: RoomTimer | null) =>\n\t\t\tthis.mutate(\"updateTimer\", { roomId: takeId(roomId), timer }, undefined),\n\t\tforceFollow: (roomId: Ref, userId?: Id) =>\n\t\t\tthis.mutate(\"forceFollow\", { roomId: takeId(roomId), userId }, undefined)\n\t};\n\n\tuser = {\n\t\tlist: (roomId: Ref, options?: QueryOptions, listAll?: boolean) =>\n\t\t\tthis.query(\"users\", { roomId: takeId(roomId), listAll, options }, GQL_USER_SHAPE),\n\t\tlistInvitableUsers: (roomId: Ref, options?: QueryOptions) =>\n\t\t\tthis.query(\"invitableUsers\", { roomId: takeId(roomId), options }, GQL_USER_SHAPE),\n\t\tlistRelevantUsers: (roomId: Ref, options?: QueryOptions) =>\n\t\t\tthis.query(\"relevantUsers\", { roomId: takeId(roomId), options }, GQL_USER_SHAPE),\n\t\tget: (id: Ref) => this.query(\"user\", { id: takeId(id) }, GQL_USER_SHAPE),\n\t\tme: () => this.query(\"me\", {}, GQL_USER_SHAPE),\n\t\tcreate: (data: Partial) => this.mutate(\"createUser\", { data }, GQL_USER_SHAPE),\n\t\tupdate: (id: Ref, data: Partial) => this.mutate(\"updateUser\", { id: takeId(id), data }, GQL_USER_SHAPE),\n\t\tremove: (id: Ref) => this.mutate(\"removeUser\", { id: takeId(id) }, undefined)\n\t};\n\n\trobot = {\n\t\tlist: (options?: QueryOptions) => this.query(\"robots\", { options }, GQL_ROBOT_SHAPE),\n\t\tget: (id: Ref) => this.query(\"robot\", { id: takeId(id) }, GQL_ROBOT_SHAPE),\n\t\tcreate: (data: Partial) => this.mutate(\"createRobot\", { data }, GQL_ROBOT_SHAPE),\n\t\tupdate: (id: Ref, data: Partial) =>\n\t\t\tthis.mutate(\"updateRobot\", { id: takeId(id), data }, GQL_ROBOT_SHAPE),\n\t\tremove: (id: Ref) => this.mutate(\"removeRobot\", { id: takeId(id) }, undefined)\n\t};\n\n\troomAccess = {\n\t\tlist: (room: Ref, options?: QueryOptions) =>\n\t\t\tthis.query(\"roomAccesses\", { roomId: takeId(room), options }, GQL_ROOM_ACCESS_SHAPE),\n\t\tget: (id: Ref) => this.query(\"roomAccess\", { id: takeId(id) }, GQL_ROOM_ACCESS_SHAPE),\n\t\tcreate: (roomId: Ref, data: Partial) =>\n\t\t\tthis.mutate(\"createRoomAccess\", { roomId: takeId(roomId), data }, GQL_ROOM_ACCESS_SHAPE),\n\t\tupdate: (id: Ref, data: Partial) =>\n\t\t\tthis.mutate(\"updateRoomAccess\", { id: takeId(id), data }, GQL_ROOM_ACCESS_SHAPE),\n\t\tremove: (id: Ref) => this.mutate(\"removeRoomAccess\", { id: takeId(id) }, undefined)\n\t};\n\n\tclearbit = {\n\t\tsuggestions: (query: string) => this.query(\"clearbitSuggestions\", { query }, true),\n\t\tdomainLookup: (domain: string) => this.query(\"clearbitDomainLookup\", { domain }, true)\n\t};\n\n\tidea = {\n\t\tlistVoteDistributionInPoll: (poll: Ref, pollFilter?: PollRankedIdeasFilter, options?: QueryOptions) =>\n\t\t\tthis.query(\"voteDistributionInPoll\", { pollId: takeId(poll), pollFilter, options }, true),\n\t\tlistIdeasForComparison: (pollId: Ref, options?: QueryOptions) =>\n\t\t\tthis.query(\"ideasForComparison\", { pollId: takeId(pollId), options }, GQL_IDEA_SHAPE),\n\t\tlistInPoll: (poll: Ref, pollFilter?: PollRankedIdeasFilter, options?: QueryOptions) =>\n\t\t\tthis.query(\"ideasInPoll\", { pollId: takeId(poll), pollFilter, options }, GQL_IDEA_SHAPE),\n\t\tlist: (options?: QueryOptions, { abortSignal, shape }: APIRequestOptions = {}) =>\n\t\t\tthis.query(\"ideas\", { options }, shape ?? GQL_IDEA_SHAPE, { abortSignal }),\n\t\tget: (id: Ref | FriendlyId) =>\n\t\t\tthis.query(\"idea\", isId(id) || isModel(id) ? { id: takeId(id) } : { friendlyId: id }, GQL_IDEA_SHAPE),\n\t\tbulkUpdate: (entries: BulkUpdateEntry[]) => this.mutate(\"bulkUpdateIdeas\", { entries }, GQL_IDEA_SHAPE),\n\t\tbulkRemove: (ideaIds: Id[], { includeChildren }: { includeChildren?: boolean } = {}) =>\n\t\t\tthis.mutate(\"bulkRemoveIdeas\", { ideaIds, includeChildren }, true),\n\t\tcreate: (roomId: Ref, data: ModelData) =>\n\t\t\tthis.mutate(\"createIdea\", { roomId: takeId(roomId), data }, GQL_IDEA_SHAPE),\n\t\tupdate: (id: Ref, data: ModelData) =>\n\t\t\tthis.mutate(\"updateIdea\", { id: takeId(id), data }, GQL_IDEA_SHAPE),\n\t\tremove: (id: Ref) => this.mutate(\"removeIdea\", { id: takeId(id) }, undefined),\n\t\tclusterIdeas: (roomId: Ref, ideaClusters: IdeaCluster[]) =>\n\t\t\tthis.mutate(\"clusterIdeas\", { roomId: takeId(roomId), ideaClusters }, undefined),\n\t\treactToIdea: (ideaId: Ref, reaction: string, count?: number) =>\n\t\t\tthis.mutate(\"reactToIdea\", { ideaId: takeId(ideaId), reaction, count }, undefined),\n\t\tlockIdea: (ideaId: Ref, locked: boolean) =>\n\t\t\tthis.mutate(\"lockIdea\", { ideaId: takeId(ideaId), locked }, undefined)\n\t};\n\n\tlink = {\n\t\t// list: (room: Ref, options?: QueryOptions) =>\n\t\t// \tthis.query(\"invitations\", { roomId: takeId(room), options }, GQL_INVITATION_SHAPE),\n\t\tget: (id: Ref) => this.query(\"link\", { id: takeId(id) }, GQL_LINK_SHAPE),\n\t\t// create: (room: Ref, data: Partial) =>\n\t\t// \tthis.mutate(\"createInvitation\", { roomId: takeId(room), data }, GQL_INVITATION_SHAPE),\n\t\tupdate: (id: Ref, data: Partial) => this.mutate(\"updateLink\", { id: takeId(id), data }, GQL_LINK_SHAPE)\n\t\t// remove: (id: Ref) => this.mutate(\"removeInvitation\", { id: takeId(id) }, undefined)\n\t};\n\n\tcopilot = {\n\t\tlist: (room: Ref, options?: QueryOptions) =>\n\t\t\tthis.query(\"copilots\", { roomId: takeId(room), options }, GQL_COPILOT_SHAPE),\n\t\tget: (id: Ref) => this.query(\"copilot\", { id: takeId(id) }, GQL_COPILOT_SHAPE),\n\t\tcreate: (room: Ref, data: Partial) =>\n\t\t\tthis.mutate(\"createCopilot\", { roomId: takeId(room), data }, GQL_COPILOT_SHAPE),\n\t\tupdate: (id: Ref, data: Partial) =>\n\t\t\tthis.mutate(\"updateCopilot\", { id: takeId(id), data }, GQL_COPILOT_SHAPE),\n\t\tremove: (id: Ref) => this.mutate(\"removeCopilot\", { id: takeId(id) }, undefined)\n\t};\n\n\tchatMessage = {\n\t\tlist: (copilot: Ref, options?: QueryOptions) =>\n\t\t\tthis.query(\"chatMessages\", { copilotId: takeId(copilot), options }, GQL_CHAT_MESSAGE_SHAPE),\n\t\tget: (id: Ref) => this.query(\"chatMessage\", { id: takeId(id) }, GQL_CHAT_MESSAGE_SHAPE),\n\t\tcreate: (copilot: Ref, data: Partial) =>\n\t\t\tthis.mutate(\"createChatMessage\", { copilotId: takeId(copilot), data }, GQL_CHAT_MESSAGE_SHAPE),\n\t\tupdate: (id: Ref, data: Partial) =>\n\t\t\tthis.mutate(\"updateChatMessage\", { id: takeId(id), data }, GQL_CHAT_MESSAGE_SHAPE),\n\t\tremove: (id: Ref) => this.mutate(\"removeChatMessage\", { id: takeId(id) }, undefined),\n\t\tclear: (copilot: Ref) => this.mutate(\"clearChatMessages\", { copilotId: takeId(copilot) }, undefined)\n\t};\n\n\tmedia = {\n\t\tcreate: (fileName: string, data: Partial) => this.mutate(\"createMedia\", { fileName, data }, GQL_MEDIA_SHAPE),\n\t\tcreateFromUrl: (url: string, data: Partial) =>\n\t\t\tthis.mutate(\"createMediaFromUrl\", { url, data }, GQL_MEDIA_SHAPE),\n\t\t// list: (options?: QueryOptions) => this.query(\"medias\", { options }, GQL_MEDIA_SHAPE),\n\t\t// get: (id: Id) => this.query(\"media\", { id }, GQL_MEDIA_SHAPE),\n\t\tremove: (id: Ref) => this.mutate(\"removeMedia\", { id: takeId(id) }, undefined),\n\t\tupdate: (id: Ref, data: Partial) =>\n\t\t\tthis.mutate(\"updateMedia\", { id: takeId(id), data }, GQL_MEDIA_SHAPE),\n\t\tuploadFileToSignedUrl: (signedUrl: string, file: File) =>\n\t\t\tfetch(signedUrl, {\n\t\t\t\tmethod: \"PUT\",\n\t\t\t\tbody: file,\n\t\t\t\theaders: {\n\t\t\t\t\t\"x-goog-content-length-range\": `0,${MAX_FILE_SIZE_BYTES}`\n\t\t\t\t}\n\t\t\t}),\n\t\tgenerate: (\n\t\t\tprompt: string,\n\t\t\tinitImage?: Ref,\n\t\t\tstyle?: StabilityAiStylePreset,\n\t\t\tsensitivity?: AISensitivityKind\n\t\t) => this.mutate(\"generateImage\", { prompt, initImage: takeId(initImage), style, sensitivity }, GQL_MEDIA_SHAPE),\n\t\tdetect: (media: Ref) => this.mutate(\"detectInImage\", { mediaId: takeId(media) }, true as any),\n\t\textractScreenshotFromUrl: (url: string) => this.mutate(\"extractScreenshotFromUrl\", { url }, GQL_MEDIA_SHAPE)\n\t};\n\n\tworkspace = {\n\t\tjoin: (id: Ref, accessCode: string) =>\n\t\t\tthis.mutate(\"joinWorkspace\", { id: takeId(id), accessCode }, GQL_WORKSPACE_SHAPE),\n\t\tlist: (options?: QueryOptions) => this.query(\"workspaces\", { options }, GQL_WORKSPACE_SHAPE),\n\t\tget: ({ id, accessCode }: { id?: Ref; accessCode?: string }) =>\n\t\t\tthis.query(\"workspace\", { id: takeId(id), accessCode }, GQL_WORKSPACE_SHAPE),\n\t\tcreate: (data: Partial) => this.mutate(\"createWorkspace\", { data }, GQL_WORKSPACE_SHAPE),\n\t\tupdate: (id: Ref, data: Partial) =>\n\t\t\tthis.mutate(\"updateWorkspace\", { id: takeId(id), data }, GQL_WORKSPACE_SHAPE),\n\t\tremove: (id: Ref) => this.mutate(\"removeWorkspace\", { id: takeId(id) }, undefined),\n\t\tbillingPortalUrl: (workspaceId: Ref, intent?: BillingPortalIntent) =>\n\t\t\tthis.query(\"billingPortalUrl\", { workspaceId: takeId(workspaceId), intent }, true),\n\t\tsubscription: (workspaceId: Ref) =>\n\t\t\tthis.query(\"subscription\", { workspaceId: takeId(workspaceId) }, GQL_SUBSCRIPTION_SHAPE),\n\t\trequestUpgrade: (workspaceId: Ref) =>\n\t\t\tthis.mutate(\"requestUpgrade\", { workspaceId: takeId(workspaceId) }, undefined)\n\t};\n\n\tplan = {\n\t\tlistPlans: (workspaceId?: Ref) =>\n\t\t\tthis.query(\"listPlans\", { workspaceId: takeId(workspaceId) }, GQL_PLAN_SHAPE)\n\t};\n\n\tworkspaceAccess = {\n\t\tlist: (workspace: Ref, options?: QueryOptions) =>\n\t\t\tthis.query(\"workspaceAccesses\", { workspaceId: takeId(workspace), options }, GQL_WORKSPACE_ACCESS_SHAPE),\n\t\tget: (id: Ref) => this.query(\"workspaceAccess\", { id: takeId(id) }, GQL_WORKSPACE_ACCESS_SHAPE),\n\t\tcreate: (workspace: Ref, data: Partial) =>\n\t\t\tthis.mutate(\"createWorkspaceAccess\", { workspaceId: takeId(workspace), data }, GQL_WORKSPACE_ACCESS_SHAPE),\n\t\tupdate: (id: Ref, data: Partial) =>\n\t\t\tthis.mutate(\"updateWorkspaceAccess\", { id: takeId(id), data }, GQL_WORKSPACE_ACCESS_SHAPE),\n\t\tremove: (id: Ref) => this.mutate(\"removeWorkspaceAccess\", { id: takeId(id) }, undefined)\n\t};\n\n\tpoll = {\n\t\tlist: (room: Ref, options?: QueryOptions) =>\n\t\t\tthis.query(\"polls\", { roomId: takeId(room), options }, GQL_POLL_SHAPE),\n\t\tget: (id: Ref) => this.query(\"poll\", { id: takeId(id) }, GQL_POLL_SHAPE),\n\t\tcreate: (room: Ref, data: Partial) =>\n\t\t\tthis.mutate(\"createPoll\", { roomId: takeId(room), data }, GQL_POLL_SHAPE),\n\t\tupdate: (id: Ref, data: Partial) => this.mutate(\"updatePoll\", { id: takeId(id), data }, GQL_POLL_SHAPE),\n\t\tremove: (id: Ref) => this.mutate(\"removePoll\", { id: takeId(id) }, undefined),\n\t\tfinishPoll: (id: Ref) => this.mutate(\"finishPoll\", { id: takeId(id) }, undefined),\n\t\tstartPoll: (id: Ref) => this.mutate(\"startPoll\", { id: takeId(id) }, undefined)\n\t};\n\n\troomSnapshot = {\n\t\tlist: (room: Ref, options?: QueryOptions) =>\n\t\t\tthis.query(\"roomSnapshots\", { roomId: takeId(room), options }, GQL_ROOM_SNAPSHOT),\n\t\tlistIdeas: (roomSnapshot: Ref, options?: QueryOptions) =>\n\t\t\tthis.query(\"roomSnapshotIdeas\", { roomSnapshotId: takeId(roomSnapshot), options }, GQL_IDEA_SHAPE, {\n\t\t\t\tskipAbsorbModel: true\n\t\t\t}),\n\t\trestore: (roomSnapshot: Ref) =>\n\t\t\tthis.mutate(\"roomSnapshotRestore\", { roomSnapshotId: takeId(roomSnapshot) }, undefined)\n\t};\n\n\tvote = {\n\t\tcommitComparisonVote: (poll: Ref, options: { winner: Ref; loser: Ref }) =>\n\t\t\tthis.mutate(\n\t\t\t\t\"commitComparisonVote\",\n\t\t\t\t{ pollId: takeId(poll), winnerId: takeId(options.winner), loserId: takeId(options.loser) },\n\t\t\t\tundefined\n\t\t\t),\n\t\tcommitDotVote: (poll: Ref, results: SymbolVotingResults) =>\n\t\t\tthis.mutate(\"commitDotVote\", { pollId: takeId(poll), results }, undefined),\n\t\tcommitCriteriaVote: (poll: Ref, idea: Ref, results: VoteEvaluationCriteria) =>\n\t\t\tthis.mutate(\"commitCriteriaVote\", { pollId: takeId(poll), ideaId: takeId(idea), results }, undefined),\n\t\tfinish: (poll: Ref) => this.mutate(\"finishVoting\", { pollId: takeId(poll) }, undefined)\n\t};\n\n\taiAction = {\n\t\tremove: (id: Ref) => this.mutate(\"removeAIAction\", { id: takeId(id) }, undefined),\n\n\t\tcreate: (data: Partial) => this.mutate(\"createAIAction\", { data }, GQL_AI_ACTION_SHAPE),\n\n\t\tupdate: (id: Ref, data: Partial) =>\n\t\t\tthis.mutate(\"updateAIAction\", { id: takeId(id), data }, GQL_AI_ACTION_SHAPE),\n\n\t\tlist: (options?: QueryOptions) => this.query(\"aiActions\", { options }, GQL_AI_ACTION_SHAPE),\n\n\t\tget: (id: Ref | BuiltInAIActionKind) =>\n\t\t\tthis.query(\n\t\t\t\t\"aiAction\",\n\t\t\t\t{ id: isId(id) || isModel(id) ? takeId(id) : builtInAIActionKindToId(id) },\n\t\t\t\tGQL_AI_ACTION_SHAPE\n\t\t\t),\n\n\t\tdetectClustersInRoom: (roomId: Ref) =>\n\t\t\tthis.mutate(\"detectClustersInRoom\", { roomId: takeId(roomId) }, GQL_IDEA_CLUSTER_SHAPE),\n\n\t\textractTextFromMedia: (mediaId: Ref) =>\n\t\t\tthis.mutate(\"extractTextFromMedia\", { mediaId: takeId(mediaId) }, true),\n\n\t\textractTextFromUrl: (url: string) => this.mutate(\"extractTextFromUrl\", { url }, true),\n\n\t\textractSearchResultFromQuery: (query: string) => this.mutate(\"extractSearchResultFromQuery\", { query }, true),\n\n\t\trecognize: async (formData: FormData): Promise<{ text: string | undefined }> => {\n\t\t\tconst res = await this.sendRequest({\n\t\t\t\tbody: formData,\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tpath: \"/recognize\",\n\t\t\t\theaders: {\n\t\t\t\t\tAccept: \"application/json\",\n\t\t\t\t\t\"Content-Type\": null\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn await res.json();\n\t\t},\n\n\t\trun: async (\n\t\t\taiActionId: Ref | BuiltInAIActionKind,\n\t\t\tcontext: AIActionContext,\n\t\t\tabortSignal?: AbortSignal\n\t\t) => {\n\t\t\tlet result = \"\";\n\n\t\t\tconst stream = this.aiAction.runStream(aiActionId, context, abortSignal);\n\n\t\t\tfor await (const chunk of stream) {\n\t\t\t\tresult += chunk;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\trunStream: (\n\t\t\taiActionId: Ref | BuiltInAIActionKind,\n\t\t\taiActionContext: AIActionContext,\n\t\t\tabortSignal?: AbortSignal\n\t\t) =>\n\t\t\tthis.streamRequest({\n\t\t\t\tpath: \"/aiAction\",\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\taiActionId:\n\t\t\t\t\t\tisId(aiActionId) || isModel(aiActionId) ? takeId(aiActionId) : builtInAIActionKindToId(aiActionId),\n\t\t\t\t\taiActionContext: {\n\t\t\t\t\t\t...aiActionContext,\n\t\t\t\t\t\tmodelOptions: {\n\t\t\t\t\t\t\t...(aiActionContext.modelOptions ?? {}),\n\t\t\t\t\t\t\t// Always include \"aiModel\" in the context\n\t\t\t\t\t\t\taiModel: workspaceStore.currentWorkspace?.data?.aiContext?.modelOptions?.aiModel\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tabortSignal\n\t\t\t}),\n\n\t\tstreamChatMessage: (\n\t\t\tcopilot: Ref,\n\t\t\t{\n\t\t\t\ttext,\n\t\t\t\taiActionId,\n\t\t\t\taiActionContext\n\t\t\t}: { text: string; aiActionId: Id | BuiltInAIActionKind; aiActionContext: AIActionContext },\n\t\t\tabortSignal?: AbortSignal\n\t\t) =>\n\t\t\tthis.streamRequest({\n\t\t\t\tpath: `/copilots/${takeId(copilot)}/chatMessages`,\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\ttext,\n\t\t\t\t\taiActionId:\n\t\t\t\t\t\taiActionId != null ? (isId(aiActionId) ? aiActionId : builtInAIActionKindToId(aiActionId)) : undefined,\n\t\t\t\t\taiActionContext: {\n\t\t\t\t\t\t...aiActionContext,\n\t\t\t\t\t\tmodelOptions: {\n\t\t\t\t\t\t\t...(aiActionContext.modelOptions ?? {}),\n\t\t\t\t\t\t\t// Always include \"aiModel\" in the context\n\t\t\t\t\t\t\taiModel: workspaceStore.currentWorkspace?.data?.aiContext?.modelOptions?.aiModel\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tabortSignal\n\t\t\t})\n\t};\n\n\tunfurlUrl = (url: string) => this.mutate(\"unfurlUrl\", { url }, GQL_UNFURLED_URL_SHAPE);\n\n\tisFriendOfIdeamap = () =>\n\t\tthis.sendRequest({\n\t\t\tpath: \"/isFriendOfIdeamap\",\n\t\t\tmethod: \"GET\"\n\t\t})\n\t\t\t.then((res) => res.json())\n\t\t\t.then((res) => res.isFriendOfIdeamap as boolean);\n\n\tsubscribeToMarketing = () => this.mutate(\"subscribeToMarketing\", {}, undefined);\n\n\tpromotekit = {\n\t\ttrack: async (code: string, email?: string): Promise => {\n\t\t\tconst response = await fetch(`${API_BASE_URL}/promotekit/track`, {\n\t\t\t\tmethod: \"PUT\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/json\"\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\tcode,\n\t\t\t\t\temail\n\t\t\t\t})\n\t\t\t});\n\n\t\t\tconst json = await response.json();\n\t\t\treturn json.referral as string | null;\n\t\t}\n\t};\n\n\tintercom = {\n\t\tidentityToken: () => this.query(\"intercomIdentityToken\", {}, true)\n\t};\n\n\twiki = {\n\t\tsearch: (query: string) => this.mutate(\"wikiSearch\", { query }, true as any),\n\t\tcontent: (queryOrPageId: string) => this.mutate(\"wikiContent\", { queryOrPageId }, true)\n\t};\n}\n\nexport const api = new Api();\n","import { GlobalStore } from \"../store\";\nimport { getRandomMindmapPaletteColorIndex, Idea, makeId, ModelData, Ref, Room, takeId } from \"shared\";\nimport { modelStore } from \"../model/model-store\";\nimport { sessionStore } from \"../session/session-store\";\n\nexport class IdeaStore extends GlobalStore {\n\tmodel$ = {};\n\n\tprivate localIdeaTimestampSet = new Set();\n\n\tprotected subscriptions() {\n\t\treturn [];\n\t}\n\n\tasync addReactionToIdea(idea: Ref, reaction: string, count?: number) {\n\t\tawait modelStore.mutate(idea, (idea) => ({\n\t\t\t...idea,\n\t\t\treactions: {\n\t\t\t\t...idea.reactions,\n\t\t\t\t[reaction]: (idea.reactions?.[reaction] ?? 0) + (count ?? 1)\n\t\t\t}\n\t\t}));\n\t}\n\n\thasIdeaBeenSynced(ideaId: Ref): boolean {\n\t\tconst idea = modelStore.getInstant(ideaId);\n\t\tif (idea == null) return true;\n\n\t\t// The idea is that this value has been changed if the idea has been synced with server\n\t\treturn !this.localIdeaTimestampSet.has(idea.createdAt);\n\t}\n\n\tasync waitForIdeaSynced(ideaId: Ref, timeout = 3000): Promise {\n\t\tconst testIntervalMs = 20;\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst startTime = Date.now();\n\n\t\t\tconst interval = setInterval(() => {\n\t\t\t\tif (this.hasIdeaBeenSynced(ideaId)) {\n\t\t\t\t\tclearInterval(interval);\n\t\t\t\t\tresolve();\n\t\t\t\t} else if (Date.now() - startTime > timeout) {\n\t\t\t\t\tclearInterval(interval);\n\t\t\t\t\tresolve();\n\t\t\t\t}\n\t\t\t}, testIntervalMs);\n\t\t});\n\t}\n\n\tcreateLocalIdea(room: Ref, data: ModelData): Idea {\n\t\tconst localIdeaTimestamp = new Date();\n\n\t\tthis.localIdeaTimestampSet.add(localIdeaTimestamp);\n\n\t\tconst localIdea = {\n\t\t\t...data,\n\t\t\t__entity: \"Idea\",\n\t\t\tid: makeId(),\n\t\t\tcreatedBy: sessionStore.sessionUser?.id,\n\t\t\troom: room,\n\t\t\tcreatedAt: localIdeaTimestamp,\n\t\t\tupdatedAt: localIdeaTimestamp,\n\t\t\tdirection: data.direction ?? \"right\",\n\t\t\tcolor: data.color ?? (data.parent != null ? undefined : getRandomMindmapPaletteColorIndex().toString()),\n\t\t\torder: data.order || 0,\n\t\t\tparent: takeId(data.parent) ?? undefined,\n\t\t\tmedia: data?.media?.map((media) => takeId(media)) ?? [],\n\t\t\tmeta: undefined,\n\t\t\tisLocked: false,\n\t\t\tfriendlyId: Math.floor(Math.random() * 100000) + 10000\n\t\t} as Idea;\n\n\t\tmodelStore.absorb(localIdea);\n\n\t\treturn localIdea;\n\t}\n}\n\nexport const ideaStore = new IdeaStore();\n","import { ActionSubject, runAction } from \"../../state/action\";\nimport { Idea, Position, Ref, Room, takeId } from \"shared\";\nimport { MindmapEngineControllerAction } from \"mindmap\";\nimport { MindmapEngineMessageInRequestAvailablePositionOptions } from \"mindmap/src/engine/message/mindmap-engine-message-in\";\n\nexport const mindmapAction = {\n\texecuteAction: new ActionSubject>(),\n\trequestGetAvailablePosition: new ActionSubject<\n\t\t{ options?: MindmapEngineMessageInRequestAvailablePositionOptions; resolve: (pos: Position) => void },\n\t\tRef\n\t>()\n};\n\nexport const mindmapSelectIdeas = (\n\troom: Ref,\n\tideas: Ref[],\n\t{\n\t\tfitViewPort\n\t}: {\n\t\tfitViewPort?: boolean;\n\t}\n) => executeMindmapAction(room, { kind: \"selectNodes\", nodeIds: ideas.map((idea) => takeId(idea)), fitViewPort });\n\nexport const executeMindmapAction = (room: Ref, action: MindmapEngineControllerAction) =>\n\trunAction(mindmapAction.executeAction, () => action, room);\n\nexport const getAvailablePositionInMindmap = (\n\troom: Ref,\n\toptions?: MindmapEngineMessageInRequestAvailablePositionOptions\n) => {\n\treturn new Promise((resolve) => {\n\t\t// Timeout after 500ms\n\t\tlet timeout: ReturnType | null = setTimeout(() => {\n\t\t\ttimeout = null;\n\t\t\tresolve({ x: 0, y: 0 });\n\t\t}, 500);\n\n\t\trunAction(\n\t\t\tmindmapAction.requestGetAvailablePosition,\n\t\t\t() => ({\n\t\t\t\toptions,\n\t\t\t\tresolve: (position) => {\n\t\t\t\t\tif (timeout == null) return;\n\n\t\t\t\t\tclearTimeout(timeout);\n\t\t\t\t\tresolve(position);\n\t\t\t\t}\n\t\t\t}),\n\t\t\troom\n\t\t);\n\t});\n};\n","import { api } from \"../../api/api\";\nimport { ActionSubject, runAction } from \"../action\";\nimport {\n\tAIAction,\n\tBuiltInAIActionKind,\n\tBulkUpdateEntry,\n\tcanEditIdea,\n\tgetRandomMindmapPaletteColorIndex,\n\thasValue,\n\tId,\n\tIdea,\n\tMedia,\n\tModelData,\n\tpaginateItems,\n\tparseAIActionOutput,\n\tPoll,\n\tPollRankedIdeasFilter,\n\tQueryOptions,\n\tRef,\n\tRoom,\n\tStabilityAiStylePreset,\n\ttakeId\n} from \"shared\";\nimport { ideaStore } from \"./idea-store\";\nimport { modelStore } from \"../model/model-store\";\nimport { openConfirmDelete } from \"../../util/dialog-helper\";\nimport { getAvailablePositionInMindmap } from \"../../molecules/mindmap/mindmap-action\";\nimport { MindmapComponentNodeSource } from \"mindmap\";\nimport { entityToName, entityToNameWithCount } from \"../../util/translate-util\";\nimport { showToast } from \"../../atoms/toast\";\nimport { ICON_ERROR, ICON_SUCCESS_CIRCLE } from \"../../../icons\";\nimport { sessionStore } from \"../session/session-store\";\nimport { get } from \"lit-translate\";\n\nexport const ideaAction = {\n\tget: new ActionSubject(),\n\tlist: new ActionSubject>(),\n\tclear: new ActionSubject(),\n\tlistForComparison: new ActionSubject<[Idea, Idea][], Ref>(),\n\tlistInPoll: new ActionSubject>(),\n\treactToIdea: new ActionSubject<{ reaction: string; count?: number }, Ref>(),\n\tcreate: new ActionSubject>(),\n\tbulkCreate: new ActionSubject>(),\n\tcreateIdeaWithParent: new ActionSubject<{ idea: Idea; startEditing?: boolean }, Ref>(),\n\tupdate: new ActionSubject(),\n\tbulkUpdate: new ActionSubject(),\n\tgroupIdeas: new ActionSubject(),\n\tremove: new ActionSubject>(),\n\tbulkRemove: new ActionSubject[]>(),\n\ttransformIdeasWithAIAction: new ActionSubject<{ ideas: Ref[] }, Ref>(),\n\tcreateIdeasFromMindmapComponentSources: new ActionSubject>()\n};\n\nexport const clearIdeas = () => runAction(ideaAction.clear, () => undefined);\n\nexport const listIdeasInRoom = (room: Ref, options?: QueryOptions) =>\n\trunAction(\n\t\tideaAction.list,\n\t\t() => api.idea.list({ ...options, filter: { ...(options?.filter ?? {}), room: takeId(room) } }),\n\t\troom\n\t);\n\nexport const listIdeasInPoll = (poll: Ref, pollFilter?: PollRankedIdeasFilter, options?: QueryOptions) =>\n\trunAction(ideaAction.listInPoll, () => api.idea.listInPoll(poll, pollFilter, options), poll);\n\nexport const listIdeasForComparison = (poll: Ref) =>\n\trunAction(ideaAction.listForComparison, () => api.idea.listIdeasForComparison(takeId(poll)), poll);\n\nexport const updateIdea = (idea: Ref, data: ModelData) => {\n\tif (Object.keys(data).length === 0) return;\n\n\treturn runAction(ideaAction.update, async () => {\n\t\t// Optimistic update\n\t\tmodelStore.mutate(idea, (idea) => ({\n\t\t\t...idea,\n\t\t\t...(data as Partial)\n\t\t}));\n\n\t\tif (\"text\" in data) {\n\t\t\tconst url = data.text?.match(/^https:\\/\\/[^\\s]+/)?.[0];\n\t\t\tif (!data.media?.length && url != null) {\n\t\t\t\ttry {\n\t\t\t\t\tconst unfurled = await api.unfurlUrl(url);\n\n\t\t\t\t\tif (unfurled != null) {\n\t\t\t\t\t\tif (unfurled.mediaId != null) {\n\t\t\t\t\t\t\tdata.media = [unfurled.mediaId];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdata.color = unfurled.color ?? data.color;\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(\"Failed to unfurl URL\", error);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn await api.idea.update(takeId(idea), data);\n\t});\n};\n\nexport const bulkUpdateIdeasWithData = (ideas: Ref[], getData: (idea: Ref) => ModelData) => {\n\treturn bulkUpdateIdeas(\n\t\tideas.map((idea) => ({\n\t\t\tid: takeId(idea),\n\t\t\tdata: getData(idea)\n\t\t}))\n\t);\n};\n\nexport const bulkUpdateIdeas = (entries: BulkUpdateEntry[]) =>\n\trunAction(ideaAction.bulkUpdate, async () => {\n\t\t// Make sure that unsetting parents will also reset the color\n\t\tentries = entries.map((entry) => {\n\t\t\tif (entry.data.parent != null) {\n\t\t\t\treturn {\n\t\t\t\t\t...entry,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\t...entry.data,\n\t\t\t\t\t\tcolor: null\n\t\t\t\t\t}\n\t\t\t\t} as BulkUpdateEntry;\n\t\t\t}\n\n\t\t\treturn entry;\n\t\t});\n\n\t\tfor (const entry of entries) {\n\t\t\tconsole.log(\"bulkUpdateIdeas\", entry.id, entry.data);\n\t\t\tmodelStore.mutate(entry.id, (idea) => ({\n\t\t\t\t...idea,\n\t\t\t\t...(entry.data as Partial)\n\t\t\t}));\n\t\t}\n\n\t\t// Wait until all parents have been created\n\t\tawait Promise.all(\n\t\t\tentries.map(async (entry) => {\n\t\t\t\tif (entry.data.parent != null) {\n\t\t\t\t\tawait ideaStore.waitForIdeaSynced(entry.data.parent);\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\n\t\t// Make sure that all ids have been synced\n\t\tawait Promise.all(\n\t\t\tentries.map(async (entry) => {\n\t\t\t\tawait ideaStore.waitForIdeaSynced(entry.id);\n\t\t\t})\n\t\t);\n\n\t\treturn api.idea.bulkUpdate(entries);\n\t});\n\nexport const detachIdeaFromParent = (idea: Idea) =>\n\tupdateIdea(idea, {\n\t\tparent: null,\n\t\tcolor: idea.color ?? getRandomMindmapPaletteColorIndex()\n\t});\n\nexport async function bulkDeleteIdeasWithConfirm(ideas: Ref[]) {\n\tconst sessionUser = sessionStore.sessionUser;\n\tif (sessionUser == null || ideas.length === 0) return;\n\n\tconst canEdit = ideas.every((id) => {\n\t\tconst idea = modelStore.getInstant(id);\n\t\tif (idea == null) return false;\n\t\tconst room = modelStore.getInstant(idea.room);\n\t\tif (room == null) return false;\n\n\t\treturn canEditIdea({ idea, room, sessionUser });\n\t});\n\n\t// Make sure the user has access\n\tif (!canEdit) {\n\t\tshowToast(\"As a participant, you can only delete your own ideas\", { icon: ICON_ERROR });\n\t\treturn;\n\t}\n\n\tconst isSingular = ideas.length === 1;\n\tif (\n\t\tawait openConfirmDelete({\n\t\t\ttext: isSingular\n\t\t\t\t? get(`Are you sure you want to delete this idea and it's branches? This action cannot be undone.`)\n\t\t\t\t: get(`Are you sure you want to delete {{entityWithCount}} and their branches? This action cannot be undone.`, {\n\t\t\t\t\t\tentityWithCount: entityToNameWithCount(\"idea\", ideas.length)\n\t\t\t\t\t}),\n\t\t\tconfirmText: get(`Delete {{entityWithCount}}`, { entityWithCount: entityToName(\"idea\", isSingular) })\n\t\t})\n\t) {\n\t\ttry {\n\t\t\tbulkDeleteIdeas(ideas, { includeChildren: true });\n\n\t\t\tshowToast(get(`Ideas successfully deleted`), { icon: ICON_SUCCESS_CIRCLE });\n\t\t} catch (err) {\n\t\t\tshowToast(get(`Something went wrong while deleting ideas`), { icon: ICON_ERROR });\n\t\t}\n\t}\n}\n\nexport const bulkDeleteIdeas = (ideas: Ref[], options?: { includeChildren?: boolean }) =>\n\trunAction(ideaAction.bulkRemove, async () => {\n\t\tconst ideaIds = ideas.map((idea) => takeId(idea));\n\n\t\tconst removedIds = api.idea.bulkRemove(ideaIds, options);\n\n\t\t// If \"includeChildren\" wait for server to calculate which children\n\t\treturn options?.includeChildren ? await removedIds : ideaIds;\n\t});\n\nexport const deleteIdea = (idea: Ref) =>\n\trunAction(ideaAction.remove, async () => {\n\t\tawait api.idea.remove(takeId(idea));\n\t\treturn idea;\n\t});\n\nexport const getIdea = (idea: Id) => runAction(ideaAction.get, () => api.idea.get(idea));\n\nexport const bulkCreateIdeas = (room: Ref, data: ModelData[]) =>\n\trunAction(\n\t\tideaAction.bulkCreate,\n\t\tasync () => {\n\t\t\t// Optimistically create the ideas\n\t\t\tconst localIdeas: Idea[] = [];\n\n\t\t\tfor (const ideaData of data) {\n\t\t\t\t// Always apply a position by asking the mindmap for an available position\n\t\t\t\tconst position =\n\t\t\t\t\tideaData.parent != null ? undefined : ideaData.position ?? (await getAvailablePositionInMindmap(room));\n\n\t\t\t\t// Parent\n\t\t\t\tconst parentId = takeId(ideaData.parent);\n\t\t\t\tif (parentId != null) await ideaStore.waitForIdeaSynced(parentId);\n\n\t\t\t\tconst localIdea = ideaStore.createLocalIdea(room, { ...ideaData, position, parent: parentId });\n\n\t\t\t\tlocalIdeas.push(localIdea);\n\t\t\t}\n\n\t\t\t// TODO\n\t\t\tfor (const localIdea of localIdeas) {\n\t\t\t\t// Create the idea in the background so we avoid waiting for the idea on bad WIFI connection\n\t\t\t\tapi.idea\n\t\t\t\t\t.create(room, {\n\t\t\t\t\t\t...localIdea,\n\t\t\t\t\t\tid: localIdea.id,\n\t\t\t\t\t\tparent: localIdea.parent,\n\t\t\t\t\t\tposition: localIdea.position,\n\t\t\t\t\t\tcolor: localIdea.color,\n\t\t\t\t\t\torder: localIdea.order\n\t\t\t\t\t})\n\t\t\t\t\t.then();\n\t\t\t}\n\n\t\t\treturn localIdeas;\n\t\t},\n\t\troom\n\t);\n\nexport const createIdea = (room: Ref, data: ModelData) =>\n\trunAction(\n\t\tideaAction.create,\n\t\tasync () => {\n\t\t\t// Always apply a position by asking the mindmap for an available position\n\t\t\tconst position = data.parent != null ? undefined : data.position ?? (await getAvailablePositionInMindmap(room));\n\n\t\t\t// Parent\n\t\t\tconst parentId = takeId(data.parent);\n\t\t\tif (parentId != null) await ideaStore.waitForIdeaSynced(parentId);\n\n\t\t\tconst localIdea = ideaStore.createLocalIdea(room, { ...data, position, parent: parentId });\n\n\t\t\t// Create the idea in the background so we avoid waiting for the idea on bad WIFI connection\n\t\t\tapi.idea\n\t\t\t\t.create(room, {\n\t\t\t\t\t...data,\n\t\t\t\t\tid: localIdea.id,\n\t\t\t\t\tparent: localIdea.parent,\n\t\t\t\t\tposition: localIdea.position,\n\t\t\t\t\tcolor: localIdea.color,\n\t\t\t\t\torder: localIdea.order\n\t\t\t\t})\n\t\t\t\t.then();\n\n\t\t\treturn localIdea;\n\t\t},\n\t\troom\n\t);\n\nexport const createIdeaWithParent = (\n\troom: Ref,\n\tdata: ModelData,\n\t{ startEditing }: { startEditing?: boolean }\n) =>\n\trunAction(\n\t\tideaAction.createIdeaWithParent,\n\t\tasync () => {\n\t\t\t// Always apply a position by asking the mindmap for an available position\n\t\t\tconst position = data.parent != null ? undefined : data.position ?? (await getAvailablePositionInMindmap(room));\n\n\t\t\t// Parent\n\t\t\tconst parentId = takeId(data.parent);\n\t\t\tif (parentId != null) await ideaStore.waitForIdeaSynced(parentId);\n\n\t\t\tconst localIdea = ideaStore.createLocalIdea(room, { ...data, position, parent: parentId });\n\n\t\t\t// Create the idea in the background so we avoid waiting for the idea on bad WIFI connection\n\t\t\tapi.idea\n\t\t\t\t.create(room, {\n\t\t\t\t\t...data,\n\t\t\t\t\tid: localIdea.id,\n\t\t\t\t\tparent: localIdea.parent,\n\t\t\t\t\tposition: localIdea.position,\n\t\t\t\t\tcolor: localIdea.color,\n\t\t\t\t\torder: localIdea.order\n\t\t\t\t})\n\t\t\t\t.then();\n\n\t\t\treturn {\n\t\t\t\tidea: localIdea,\n\t\t\t\tstartEditing\n\t\t\t};\n\t\t},\n\t\troom\n\t);\n\nexport const reactToIdea = (idea: Ref, reaction: string, count?: number) =>\n\trunAction(\n\t\tideaAction.reactToIdea,\n\t\tasync () => {\n\t\t\tawait api.idea.reactToIdea(idea, reaction, count);\n\n\t\t\tideaStore.addReactionToIdea(idea, reaction, count ?? 1);\n\n\t\t\treturn {\n\t\t\t\treaction,\n\t\t\t\tcount\n\t\t\t};\n\t\t},\n\t\tidea\n\t);\n\nexport const lockIdea = (idea: Ref, locked: boolean) => api.idea.lockIdea(idea, locked);\n\n/**\n * Experimental. Not currently used.\n * @param room\n * @param zoom\n */\n// export const highlightIdeasAIAction = (room: Ref, { zoom }: { zoom?: boolean }) =>\n// \trunAction(\n// \t\tideaAction.highlightIdeas,\n// \t\tasync () => {\n// \t\t\tconst selectionSet = new Map>();\n//\n// \t\t\t// let isStreaming = true;\n// \t\t\tlet text = \"\";\n// \t\t\tfor await (const chunk of api.aiAction.runStream(\"selectIdeas\", {\n// \t\t\t\troom: takeId(room)\n// \t\t\t})) {\n// \t\t\t\ttext += chunk;\n//\n// \t\t\t\tconst ideaFriendlyIds = [...text.matchAll(/\\[\\^(\\d+)\\]/g)].map((match) => Number(match[1]));\n// \t\t\t\tfor (const ideaFriendlyId of ideaFriendlyIds) {\n// \t\t\t\t\tif (!selectionSet.has(ideaFriendlyId)) {\n// \t\t\t\t\t\tselectionSet.set(ideaFriendlyId, api.idea.get(ideaFriendlyId));\n// \t\t\t\t\t}\n// \t\t\t\t}\n//\n// \t\t\t\tconsole.log(text, ideaFriendlyIds);\n// \t\t\t}\n//\n// \t\t\tconsole.log(text, selectionSet);\n// \t\t\tconst ideas = await Promise.all(selectionSet.values());\n// \t\t\treturn { ideas, zoom };\n// \t\t},\n// \t\troom\n// \t);\n\nexport const transformIdeasWithAIAction = (\n\taction: BuiltInAIActionKind | Ref,\n\troom: Ref,\n\tideas: Ref[]\n) =>\n\trunAction(\n\t\tideaAction.transformIdeasWithAIAction,\n\t\tasync () => {\n\t\t\tawait paginateItems(\n\t\t\t\tideas,\n\t\t\t\tasync (idea) => {\n\t\t\t\t\tconst text = parseAIActionOutput(\n\t\t\t\t\t\tawait api.aiAction.run(action, {\n\t\t\t\t\t\t\troom: takeId(room),\n\t\t\t\t\t\t\tideas: [takeId(idea)]\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"text\"\n\t\t\t\t\t);\n\n\t\t\t\t\tawait updateIdea(idea, { text });\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpageSize: 3,\n\t\t\t\t\tparallel: true\n\t\t\t\t}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tideas\n\t\t\t};\n\t\t},\n\t\troom\n\t);\n\nexport const groupIdeas = ({\n\tparentIdea,\n\troom,\n\tideas,\n\tupdateChildIdeasData,\n\tparentIdeaData\n}: {\n\troom: Ref;\n\tideas: Ref[];\n\tupdateChildIdeasData?: Partial;\n\tparentIdeaData?: Partial;\n\tparentIdea?: Idea;\n}) =>\n\trunAction(\n\t\tideaAction.bulkUpdate,\n\t\tasync () => {\n\t\t\t// Create a parent idea if one is missing\n\t\t\tif (parentIdea == null) {\n\t\t\t\tparentIdea = await createIdea(room, {\n\t\t\t\t\t...(parentIdeaData ?? {})\n\t\t\t\t});\n\n\t\t\t\tawait ideaStore.waitForIdeaSynced(parentIdea);\n\t\t\t}\n\n\t\t\treturn [\n\t\t\t\tparentIdea,\n\t\t\t\t...(await bulkUpdateIdeasWithData(ideas, () => ({\n\t\t\t\t\tparent: takeId(parentIdea),\n\t\t\t\t\tcolor: null as any,\n\t\t\t\t\t...(updateChildIdeasData ?? {})\n\t\t\t\t})))\n\t\t\t];\n\t\t},\n\t\troom\n\t);\n\nexport const groupIdeasWithAIAction = ({\n\taction,\n\troom,\n\tideas,\n\tupdateChildIdeasData,\n\tgetParentIdeaData\n}: {\n\taction: BuiltInAIActionKind | Ref;\n\troom: Ref;\n\tideas: Ref[];\n\tupdateChildIdeasData?: Partial;\n\tgetParentIdeaData?: (text: string) => Partial;\n}) =>\n\trunAction(\n\t\tideaAction.transformIdeasWithAIAction,\n\t\tasync () => {\n\t\t\tconst text = parseAIActionOutput(\n\t\t\t\tawait api.aiAction.run(action, {\n\t\t\t\t\troom: takeId(room),\n\t\t\t\t\tideas: ideas.map((idea) => takeId(idea))\n\t\t\t\t}),\n\t\t\t\t\"text\"\n\t\t\t);\n\n\t\t\tconst parentIdea = await createIdea(room, {\n\t\t\t\ttext,\n\t\t\t\t...(getParentIdeaData?.(text) ?? {})\n\t\t\t});\n\n\t\t\tawait groupIdeas({\n\t\t\t\troom,\n\t\t\t\tideas,\n\t\t\t\tupdateChildIdeasData,\n\t\t\t\tparentIdea\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tideas\n\t\t\t};\n\t\t},\n\t\troom\n\t);\n\nexport const visualizeIdeas = (room: Ref, ideas: Idea[], style?: StabilityAiStylePreset) =>\n\trunAction(\n\t\tideaAction.transformIdeasWithAIAction,\n\t\tasync () => {\n\t\t\tawait paginateItems(\n\t\t\t\tideas,\n\t\t\t\tasync (idea) => {\n\t\t\t\t\tconst prompt = parseAIActionOutput(\n\t\t\t\t\t\tawait api.aiAction.run(\"imagePrompt\", {\n\t\t\t\t\t\t\troom: takeId(room),\n\t\t\t\t\t\t\tideas: [takeId(idea)]\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"text\"\n\t\t\t\t\t);\n\n\t\t\t\t\tif (!hasValue(prompt)) return;\n\n\t\t\t\t\tconst image = await api.media.generate(prompt, undefined, style);\n\t\t\t\t\tif (image == null) return;\n\n\t\t\t\t\tawait updateIdea(idea, { media: [...(idea.media ?? []), takeId(image)] });\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpageSize: 3,\n\t\t\t\t\tparallel: true\n\t\t\t\t}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tideas\n\t\t\t};\n\t\t},\n\t\troom\n\t);\n\nexport const removeMediaFromIdeaWithConfirm = async (idea: Idea, media: Ref) => {\n\tconst yes = await openConfirmDelete({\n\t\ttext: get(\"Are you sure you want to delete this file?\"),\n\t\tconfirmText: get(\"Delete file\")\n\t});\n\n\tif (yes) {\n\t\tawait updateIdea(idea, { media: (idea.media ?? []).filter((m) => takeId(m) !== takeId(media)) });\n\t}\n\n\treturn yes;\n};\n\nexport interface MindmapComponentSourceMeta {\n\tnotes: string;\n}\n\nexport type MindmapComponentSourceMetaMap = Map;\n\nexport const createIdeasFromMindmapComponentSources = (\n\troom: Ref,\n\tcomponents: MindmapComponentNodeSource[],\n\tnodeMeta?: MindmapComponentSourceMetaMap\n) =>\n\trunAction(\n\t\tideaAction.createIdeasFromMindmapComponentSources,\n\t\tasync () => {\n\t\t\tconst componentIdToIdeaMap = new Map();\n\n\t\t\tconst mindmapComponentNodeSourceToIdeaData = (component: MindmapComponentNodeSource): Partial => {\n\t\t\t\tconst meta = nodeMeta?.get(component.id);\n\n\t\t\t\treturn {\n\t\t\t\t\ttext: component.text,\n\t\t\t\t\tdirection: component.direction,\n\t\t\t\t\tisGroup: component.isGroup,\n\t\t\t\t\tisLocked: component.isLocked,\n\t\t\t\t\tisCollapsed: component.isCollapsed,\n\t\t\t\t\tisChildrenFolded: component.isChildrenFolded,\n\t\t\t\t\tposition: component.position,\n\t\t\t\t\torder: component.order,\n\t\t\t\t\tcolor: component.color,\n\t\t\t\t\tsticker: component.sticker?.id,\n\t\t\t\t\tmedia: component.media?.map((media) => media.id as Id),\n\t\t\t\t\tdetails: meta?.notes\n\t\t\t\t};\n\t\t\t};\n\n\t\t\tconst createIdeasRecursive = async (component: MindmapComponentNodeSource) => {\n\t\t\t\tif (componentIdToIdeaMap.has(component.id)) return;\n\n\t\t\t\tconst parentIdea = component.parentId != null ? componentIdToIdeaMap.get(component.parentId) : undefined;\n\n\t\t\t\tconst idea = await createIdea(room, {\n\t\t\t\t\t...mindmapComponentNodeSourceToIdeaData(component),\n\t\t\t\t\tparent: takeId(parentIdea)\n\t\t\t\t});\n\n\t\t\t\t// Sleep to make sure that access has been updated\n\t\t\t\tawait ideaStore.waitForIdeaSynced(idea.id);\n\n\t\t\t\tcomponentIdToIdeaMap.set(component.id, idea);\n\n\t\t\t\t// Create children components\n\t\t\t\tconst nextComponents = components.filter((c) => c.parentId === component.id);\n\t\t\t\tawait Promise.all(nextComponents.map((c) => createIdeasRecursive(c)));\n\t\t\t};\n\n\t\t\t// Create root components\n\t\t\tconst rootComponents = components.filter((c) => c.parentId == null);\n\t\t\tawait Promise.all(rootComponents.map((c) => createIdeasRecursive(c)));\n\n\t\t\treturn Array.from(componentIdToIdeaMap.values());\n\t\t},\n\t\troom\n\t);\n","import { GlobalStore } from \"../store\";\nimport { roomAction } from \"./room-action\";\nimport { model$, modelList$ } from \"../model/model-list\";\nimport {\n\tcmpIds,\n\tDEFAULT_MINDMAP_LAYOUT_KIND,\n\tDEFAULT_MINDMAP_PALETTE_KIND,\n\tIdea,\n\tRef,\n\tRoom,\n\tRoomTimer,\n\ttakeId,\n\tUser\n} from \"shared\";\nimport { loading$, success$ } from \"../action\";\nimport { activity$, activityCreate$, activityRemove$ } from \"../activity/activity-action\";\nimport { combineLatest, distinctUntilChanged, map, shareReplay, switchMap } from \"rxjs\";\nimport { sessionStore } from \"../session/session-store\";\nimport { modelStore } from \"../model/model-store\";\nimport { themeStore } from \"../theme/theme-store\";\nimport { createMindmapTheme } from \"../../molecules/mindmap/mindmap-theme\";\nimport { ideaAction } from \"../idea/idea-action\";\n\nexport class RoomStore extends GlobalStore {\n\tprivate currentRoom$ = model$([roomAction.setCurrentRoom]).pipe(shareReplay(1));\n\n\tprivate currentRoomId$ = model$([roomAction.setCurrentRoom]).pipe(\n\t\tdistinctUntilChanged((a, b) => cmpIds(a, b)),\n\t\tmap((room) => (room == null ? null : room.id))\n\t);\n\n\tmodel$ = {\n\t\t// TEMPORARY; REMOVE WHEN YOU SEE IT\n\t\tactiveGame: success$(roomAction.setActiveGame),\n\t\tcurrentRoomLoading: loading$(roomAction.setCurrentRoom),\n\t\tcurrentRoom: this.currentRoom$,\n\t\tcurrentRoomId: this.currentRoomId$,\n\n\t\ttheme: combineLatest([this.currentRoom$, themeStore.model$.colorMode]).pipe(\n\t\t\tmap(([room, colorMode]) =>\n\t\t\t\tcreateMindmapTheme({\n\t\t\t\t\tpaletteKind: room?.data?.theme?.palette ?? DEFAULT_MINDMAP_PALETTE_KIND,\n\t\t\t\t\tlayoutKind: room?.data?.theme?.layout ?? DEFAULT_MINDMAP_LAYOUT_KIND,\n\t\t\t\t\tcolorMode\n\t\t\t\t})\n\t\t\t),\n\t\t\tshareReplay(1)\n\t\t),\n\n\t\tideas: modelList$(\n\t\t\t[\n\t\t\t\t[ideaAction.list, \"next\"],\n\t\t\t\t[ideaAction.remove, \"remove\"],\n\t\t\t\t[ideaAction.bulkRemove, \"remove\"],\n\t\t\t\t[ideaAction.create, \"prepend\"],\n\t\t\t\t[success$(ideaAction.createIdeaWithParent, this.currentRoomId$).pipe(map(({ idea }) => idea!)), \"prepend\"],\n\t\t\t\t[activityCreate$(\"Idea\"), \"prepend\"],\n\t\t\t\t[activityRemove$(\"Idea\"), \"remove\"],\n\t\t\t\t[activity$(\"idea.create\", { map: (activity) => activity.idea, meta: this.currentRoomId$ }), \"prepend\"],\n\t\t\t\t[activity$(\"idea.bulk.remove\", { map: (activity) => activity.ideaIds, meta: this.currentRoomId$ }), \"remove\"],\n\t\t\t\t[ideaAction.clear, \"clear\"]\n\t\t\t],\n\t\t\tthis.currentRoomId$\n\t\t),\n\n\t\t// TODO: Move to \"RoomStore\" and rename this store to \"CurrentRoomStore\"\n\t\troomsLoading: loading$(roomAction.list),\n\t\trooms: modelList$([\n\t\t\t[roomAction.list, \"next\"],\n\t\t\t[roomAction.create, \"prepend\"],\n\t\t\t[roomAction.remove, \"remove\"],\n\t\t\t[roomAction.joinRoom, \"prepend\"],\n\t\t\t[roomAction.leaveRoom, \"remove\"],\n\t\t\t[roomAction.clear, \"clear\"],\n\t\t\t[\n\t\t\t\tsessionStore.model$.sessionUser.pipe(\n\t\t\t\t\tswitchMap((sessionUser) =>\n\t\t\t\t\t\tactivity$(\"user.removedFromRoom\", {\n\t\t\t\t\t\t\tfilter: (activity) => cmpIds(activity.value.userId, sessionUser),\n\t\t\t\t\t\t\tmap: (activity) => activity.roomId\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\t\"remove\"\n\t\t\t],\n\t\t\t[activityCreate$(\"Room\"), \"prepend\"],\n\t\t\t[activityRemove$(\"Room\"), \"remove\"]\n\t\t\t// [activity$(\"removeRoom\", (activity) => activity.roomId), \"remove\"]\n\t\t])\n\t};\n\n\tprivate _currentRoom: Room | null = null;\n\tget currentRoom() {\n\t\treturn this._currentRoom;\n\t}\n\n\tprotected subscriptions() {\n\t\treturn [\n\t\t\tthis.currentRoom$.subscribe((room) => {\n\t\t\t\tthis._currentRoom = room;\n\t\t\t})\n\t\t];\n\t}\n\n\tasync addActiveUserToRoom(room: Ref, user: Ref) {\n\t\tlet newActiveUsers: Ref[] = [];\n\t\tawait modelStore.mutate(room, (room) => {\n\t\t\tnewActiveUsers = [...new Set>([takeId(user), ...(room.activeUsers?.map((u) => takeId(u)) || [])])];\n\n\t\t\treturn {\n\t\t\t\t...room,\n\t\t\t\tactiveUsers: newActiveUsers\n\t\t\t};\n\t\t});\n\n\t\treturn newActiveUsers;\n\t}\n\n\tasync removeActiveUserFromRoom(room: Ref, user: Ref) {\n\t\tlet newActiveUsers: Ref[] = [];\n\t\tawait modelStore.mutate(room, (room) => {\n\t\t\tnewActiveUsers = (room.activeUsers || []).filter((u) => !cmpIds(u, user));\n\n\t\t\treturn {\n\t\t\t\t...room,\n\t\t\t\tactiveUsers: newActiveUsers\n\t\t\t};\n\t\t});\n\n\t\treturn newActiveUsers;\n\t}\n\n\tsetRoomTimer(room: Ref, timer: RoomTimer | null) {\n\t\treturn modelStore.mutate(room, (room) => ({\n\t\t\t...room,\n\t\t\ttimer: timer || undefined\n\t\t}));\n\t}\n}\n\nexport const roomStore = new RoomStore();\n","import { QUERY_PARAMS, STORAGE_KEYS } from \"../config\";\nimport { pushState } from \"./route-util\";\nimport { api } from \"../api/api\";\n\n/**\n * Saves the affiliate code to local storage if there is one.\n */\nexport async function saveAffiliateCode() {\n\tconst params = new URLSearchParams(location.search);\n\tconst affiliateCode = params.get(QUERY_PARAMS.affiliateVia);\n\tif (affiliateCode?.length) {\n\t\t// Track the referral click and save the referral ID\n\t\tconst referralId = await api.promotekit.track(affiliateCode).then();\n\t\tif (referralId?.length) {\n\t\t\tlocalStorage.setItem(STORAGE_KEYS.affiliateReferralId, referralId);\n\t\t} else {\n\t\t\tlocalStorage.removeItem(STORAGE_KEYS.affiliateReferralId);\n\t\t}\n\n\t\t// Remove the affiliate code from the URL\n\t\tparams.delete(QUERY_PARAMS.affiliateVia);\n\t\tpushState(`${location.pathname}${params.toString() ? `?${params.toString()}` : \"\"}`, {\n\t\t\treplace: true,\n\t\t\tsilent: true\n\t\t});\n\t}\n}\n\n/**\n * Consumes the affiliate code from local storage if there is one.\n */\nexport function consumeAffiliateReferralId(): string | undefined {\n\tconst affiliateCode = localStorage.getItem(STORAGE_KEYS.affiliateReferralId);\n\tif (affiliateCode?.length) {\n\t\tlocalStorage.removeItem(STORAGE_KEYS.affiliateReferralId);\n\t\treturn affiliateCode;\n\t}\n\n\treturn undefined;\n}\n","import { css, html, LitElement, PropertyValues } from \"lit\";\nimport { customElement } from \"lit/decorators/custom-element.js\";\nimport { sharedStyles } from \"../styles/shared\";\nimport { registerServiceWorkerWithWorkbox } from \"../util/sw-util\";\nimport {\n\tAPP_BUILD_DATE,\n\tDEFAULT_COLOR_MODE,\n\tENVIRONMENT,\n\tgetIsMenuOpenFromStorage,\n\tQUERY_PARAMS,\n\tROUTES,\n\tSERVICE_WORKER_ENABLED,\n\tSERVICE_WORKER_PATH,\n\tSTORAGE_KEYS,\n\tUTM_MEDIUM_PWA\n} from \"../config\";\nimport {\n\taddRouteChangedListener,\n\tdispatchRouteChangedEvent,\n\tgetQueryParam,\n\tpushState,\n\treloadApp\n} from \"../util/route-util\";\nimport {\n\tAPIError,\n\tAPIErrorKind,\n\tCOLOR_BLACK,\n\tCOLOR_WHITE,\n\tdebounce,\n\tDEFAULT_LANGUAGE_CODE,\n\tdjb2Hash,\n\tEVENT_TEAMS_AUTH_TOKEN_ERROR,\n\tEVENT_UNHANDLED_ERROR,\n\tfindBestLanguageCode,\n\tfromBinaryStr,\n\tgetLanguageEmoji,\n\tlanguageCodeToISO,\n\tMS_TEAMS_BACKGROUND_DARK,\n\tMS_TEAMS_BACKGROUND_LIGHT,\n\tPALETTE,\n\tsleep,\n\ttruncateString\n} from \"shared\";\nimport { Controller, ControllerHost } from \"../state/controller\";\nimport { sessionStore, SessionStore } from \"../state/session/session-store\";\nimport { activityAction, caughtError } from \"../state/activity/activity-action\";\nimport { openAlert, openReportFeedback } from \"../util/dialog-helper\";\nimport { eventService } from \"../services/event-service\";\nimport { getColorModeColors, getColorModeFromStorage, saveColorMode } from \"../util/color-mode-util\";\nimport { teamsService } from \"../services/teams-service\";\nimport { teamsStore } from \"../state/teams/teams-store\";\nimport { getTeamsAuthToken, initializeTeams, setTeamsContext } from \"../state/teams/teams-action\";\nimport { Store } from \"../state/store\";\nimport { setColorModeColors, setPaletteCSSProperties, setThemeColorCSSProperty } from \"../util/color-util\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport { setIsMenuOpen, setIsMobile, setIsPwa, setIsSandbox } from \"../state/app/app-action\";\nimport { getAppHeight, isMobile } from \"../util/util\";\nimport { setItem } from \"../util/local-storage\";\nimport { appStore } from \"../state/app/app-store\";\nimport { themeStore } from \"../state/theme/theme-store\";\nimport { setColorMode } from \"../state/theme/theme-action\";\nimport { FrameContexts } from \"@microsoft/teams-js\";\nimport { ensureExternalLinkDialog, guessIsTeamsContext } from \"../util/teams-util\";\nimport { captureInstallPromptEvent } from \"../util/install-prompt\";\nimport { countToastsWithId, showToast } from \"../atoms/toast\";\nimport { ICON_ERROR, ICON_SUCCESS_CIRCLE, ICON_UPDATE_AVAILABLE } from \"../../icons\";\nimport { workspaceStore } from \"../state/workspace/workspace-store\";\nimport { success$ } from \"../state/action\";\nimport { errorToText } from \"../util/translate-util\";\nimport { debugService } from \"../services/trackers/debug-service\";\nimport { umamiService } from \"../services/trackers/umami-service\";\nimport { roomStore } from \"../state/room/room-store\";\nimport { getDialogCount } from \"web-dialog\";\nimport { takeFirst } from \"../util/observable-util\";\nimport { login } from \"../state/session/session-ac\";\nimport { roomSocket } from \"../socket/room-socket\";\nimport { distinctUntilChanged, merge } from \"rxjs\";\nimport { sessionAction } from \"../state/session/session-action\";\nimport { saveAffiliateCode } from \"../util/affiliate-util\";\nimport { get, registerTranslateConfig, use } from \"lit-translate\";\nimport { languageStore } from \"../state/language/language-store\";\nimport { setLanguage } from \"../state/language/language-action\";\n\nconst DEBUG_STRINGS = false;\n\nregisterTranslateConfig({\n\tloader: (lang) =>\n\t\tlang === DEFAULT_LANGUAGE_CODE\n\t\t\t? Promise.resolve({})\n\t\t\t: fetch(`/i18n/${lang}/translations.json?v=${APP_BUILD_DATE.getTime()}`).then((res) => res.json()),\n\tempty: (key) => `${key}`,\n\tlookup: (key, config) => {\n\t\tif (DEBUG_STRINGS) {\n\t\t\treturn languageStore.currentLanguage != null ? getLanguageEmoji(languageStore.currentLanguage) : \"✅\";\n\t\t}\n\n\t\treturn config.strings != null ? (config.strings[djb2Hash(key)] as string) : key;\n\t}\n});\n\nconst API_ERRORS_WITHOUT_TOAST: APIErrorKind[] = [\n\t\"unauthorized\",\n\t\"rateLimitExceeded\",\n\t\"forbidden\",\n\t\"notFound\",\n\t\"noAccountFound\"\n];\n\n/**\n * Set up global stuff.\n */\nasync function setupApp() {\n\teventService.addTrackersAndSetup(umamiService, debugService);\n\n\t// Setup colors as the first thing\n\tsetPaletteCSSProperties(PALETTE);\n\tsetThemeColorCSSProperty(`--white`, COLOR_WHITE);\n\tsetThemeColorCSSProperty(`--black`, COLOR_BLACK);\n\n\tsetColorMode(getColorModeFromStorage());\n\tsetIsMenuOpen(getIsMenuOpenFromStorage());\n\n\t// Initialize teams super early :-(\n\tinitializeTeams().then();\n\n\t// Listen for the install prompt event so we can show an install button\n\tcaptureInstallPromptEvent();\n\n\t// Register service worker if not local host\n\tif (SERVICE_WORKER_ENABLED) {\n\t\tregisterServiceWorkerWithWorkbox(SERVICE_WORKER_PATH).then();\n\t}\n\n\twindow.addEventListener(\"popstate\", dispatchRouteChangedEvent);\n\n\t// This event handler is called when a Promise is rejected, but there is no rejection handler attached to it\n\twindow.onunhandledrejection = (e) => {\n\t\tcaughtError(e.reason instanceof Error ? e.reason : new Error(e.reason));\n\t};\n\n\t// This event handler is called for unhandled runtime errors.\n\twindow.onerror = (message, source, lineNumber, colno, error) => {\n\t\tif (error != null) caughtError(error);\n\t};\n\n\t// Add offline toast\n\tconst internetToastId = \"internet-toast\";\n\twindow.addEventListener(\"online\", () =>\n\t\tshowToast(get(\"You are online again\"), { id: internetToastId, icon: ICON_SUCCESS_CIRCLE })\n\t);\n\twindow.addEventListener(\"offline\", () =>\n\t\tshowToast(get(\"You are offline\"), { id: internetToastId, duration: Infinity, icon: ICON_ERROR })\n\t);\n\n\t// https://dev.to/maciejtrzcinski/100vh-problem-with-ios-safari-3ge9\n\tconst updateAppHeight = () => document.documentElement.style.setProperty(\"--app-height\", `${getAppHeight()}px`);\n\twindow.addEventListener(\"resize\", updateAppHeight);\n\tupdateAppHeight();\n\n\tconst medium = getQueryParam(QUERY_PARAMS.utmMedium)?.toString();\n\tsetIsPwa(medium === UTM_MEDIUM_PWA);\n\n\t// Save the affiliate code if there is one\n\tsaveAffiliateCode();\n\n\t// Hookup language store\n\tlanguageStore.model$.currentLanguage.pipe(distinctUntilChanged()).subscribe((code) => {\n\t\tuse(code);\n\t\tdocument.documentElement.lang = languageCodeToISO(code);\n\t});\n\n\t// Handle uncaught errors\n\tsuccess$(activityAction.caughtError).subscribe(async (error) => {\n\t\t// If we cant find a chunk its most likely because we updated the app while the user was using it\n\t\t// and we are not saving old files. Can this be checked in a better way?\n\t\tif (navigator.onLine && [\"module\", \"chunk\"].find((str) => error.message.toLowerCase().includes(str)) != null) {\n\t\t\tconst reloadToastId = \"reload-toast\";\n\t\t\tif (countToastsWithId(reloadToastId) > 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tshowToast(get(\"A new version of Ideamap is available\"), {\n\t\t\t\tid: reloadToastId,\n\t\t\t\ticon: ICON_UPDATE_AVAILABLE,\n\t\t\t\tduration: Infinity,\n\t\t\t\tbuttons: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttext: get(\"Dismiss\")\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttext: get(\"Reload\"),\n\t\t\t\t\t\tonClick: () => reloadApp(),\n\t\t\t\t\t\timportant: true\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t});\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (error instanceof APIError) {\n\t\t\tswitch (error.kind) {\n\t\t\t\tcase \"rateLimitExceeded\":\n\t\t\t\t\tconst { openRateLimited } = await import(\"../dialogs/open-rate-limited\");\n\n\t\t\t\t\tif (getDialogCount(document.documentElement) > 0) return;\n\t\t\t\t\topenRateLimited(error);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Check if we should continue\n\t\t\tif (API_ERRORS_WITHOUT_TOAST.includes(error.kind)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// The server is most likely updating if it contains the word fetch\n\t\t// Necessary until we have multipod (todo: move to server).\n\t\tif ([\"fetch\", \"load\"].some((text) => error.message.toLowerCase().includes(text))) {\n\t\t\tif (getDialogCount(document.documentElement) === 0) {\n\t\t\t\tconst { openUpdatingServer } = await import(\"../dialogs/open-updating-server\");\n\t\t\t\tconst { checkServerStatus } = await import(\"./../molecules/updating-server\");\n\t\t\t\tdebounce(\n\t\t\t\t\tasync () => {\n\t\t\t\t\t\tif (await checkServerStatus()) return;\n\t\t\t\t\t\tawait openUpdatingServer();\n\t\t\t\t\t},\n\t\t\t\t\t\"open-updating-server\",\n\t\t\t\t\t500\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Show an error message to the user\n\t\tif (ENVIRONMENT !== \"production\") {\n\t\t\tshowToast(\n\t\t\t\terror instanceof APIError ? get(`The server responded with an error`) : get(`An unexpected error occurred`),\n\t\t\t\t{\n\t\t\t\t\ticon: ICON_ERROR,\n\t\t\t\t\tduration: 7000,\n\t\t\t\t\tid: \"error-toast\",\n\t\t\t\t\tlabel: error instanceof APIError ? errorToText(error) : truncateString(error.message, 90),\n\t\t\t\t\tbuttons: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttext: get(\"Report\"),\n\t\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\t\tconst debugInformation = debugService.createDebugInformation(error);\n\t\t\t\t\t\t\t\topenReportFeedback({ debug: debugInformation });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\t// Track the error\n\t\teventService.trackEvent(EVENT_UNHANDLED_ERROR(error));\n\t});\n\n\tif (ENVIRONMENT === \"production\") {\n\t\tconst { sentryService } = await import(\"../services/trackers/sentry-service\");\n\t\teventService.addTrackersAndSetup(sentryService);\n\t}\n\n\t// Force roomSocket to reconnect when the user logs in or out\n\tmerge(success$(sessionAction.login), success$(sessionAction.signup), success$(sessionAction.logout)).subscribe(() => {\n\t\troomSocket.forceReconnect();\n\t});\n\n\twindow.addEventListener(\n\t\t\"beforeunload\",\n\t\t(e) => {\n\t\t\troomSocket.leaveRoom();\n\t\t},\n\t\t{ passive: true }\n\t);\n}\n\nsetupApp();\n\nclass AppPageStore extends Store {\n\tmodel$ = {\n\t\tteamsAuthToken: teamsStore.model$.authToken,\n\t\tteamsAuthTokenLoading: teamsStore.model$.authTokenLoading,\n\t\tisTeamsInitialized: teamsStore.model$.initialized,\n\t\tsessionUser: sessionStore.model$.sessionUser,\n\t\thasSession: sessionStore.model$.hasSession,\n\t\tteamsContext: teamsStore.model$.context,\n\t\tisMenuOpen: appStore.model$.isMenuOpen,\n\t\tcolorMode: themeStore.model$.colorMode,\n\t\tcurrentWorkspace: workspaceStore.model$.currentWorkspace,\n\t\tcurrentRoom: roomStore.model$.currentRoom,\n\t\tappContext: appStore.model$.appContext\n\t};\n}\n\n@customElement(\"bs-app-page\")\nclass BsApp extends LitElement implements ControllerHost {\n\tprotected controller = new Controller(this, new AppPageStore(), {\n\t\tteamsAuthToken: async (token) => {\n\t\t\tconsole.log(\"[teams]: Auth token\", token);\n\t\t\tif (!(await takeFirst(sessionStore.model$.hasSession))) {\n\t\t\t\ttry {\n\t\t\t\t\tawait login({\n\t\t\t\t\t\tkind: \"teams\",\n\t\t\t\t\t\ttoken\n\t\t\t\t\t});\n\n\t\t\t\t\t// Wait a bit to avoid flashing the login screen\n\t\t\t\t\tawait sleep(500);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (error instanceof APIError && error.kind === \"noAccountFound\") {\n\t\t\t\t\t\t// This error is intended for first time users\n\t\t\t\t\t} else {\n\t\t\t\t\t\topenAlert(\n\t\t\t\t\t\t\tget(`An unknown error occurred when trying to login with Microsoft Teams: {{message}}`, {\n\t\t\t\t\t\t\t\tmessage: error.message\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tteamsService.notifyAppLoaded(true);\n\t\t},\n\t\tteamsAuthTokenLoading: (state) => {\n\t\t\tif (state.error) {\n\t\t\t\t//const errorName = state.error.message;\n\t\t\t\t//const success = [\"CancelledByUser\", \"noAccessForResource\"].includes(errorName);\n\t\t\t\tconsole.log(\"[teams]: Error loading auth token\", state.error);\n\n\t\t\t\t// Always notify success since we tell in the teams setup how to fix the error\n\t\t\t\tteamsService.notifyAppLoaded(true);\n\t\t\t}\n\t\t},\n\t\tcolorMode: this.updateColorModeColors.bind(this),\n\t\tteamsContext: async (context) => {\n\t\t\tconsole.log(\"[teams]: Teams context\", context);\n\n\t\t\tif (context == null) return;\n\t\t\tsetColorMode(teamsService.msThemeToColorMode(context.app.theme));\n\t\t\tthis.updateColorModeColors();\n\n\t\t\tteamsService.registerOnThemeChangeHandler((colorMode) => {\n\t\t\t\tsetColorMode(colorMode);\n\t\t\t\treloadApp();\n\t\t\t});\n\n\t\t\t// Use the language of the UI\n\t\t\tconst languageCode = findBestLanguageCode(context.app.locale);\n\t\t\tif (languageCode != null) {\n\t\t\t\tsetLanguage(languageCode);\n\t\t\t}\n\n\t\t\t// Never show the menu in teams if its not content and not hosted within a chat or a channel\n\t\t\tif (context.page.frameContext !== FrameContexts.content || context.chat != null || context.channel != null) {\n\t\t\t\tconsole.log(\"[teams]: Force sandbox\");\n\t\t\t\tsetIsSandbox(true);\n\t\t\t\tteamsService.registerBackButtonHandler(() => false);\n\t\t\t}\n\n\t\t\t// If we have a sub page id (link code), replace the url with join room link navigated here (deep link)\n\t\t\tif (context.page.subPageId != null && context.page.subPageId.length > 0) {\n\t\t\t\tconst joinRoomPath = `${ROUTES.joinRoom(context.page.subPageId)}?${QUERY_PARAMS.continue}`;\n\t\t\t\tconsole.log(\"[teams]: Joining room\", joinRoomPath);\n\t\t\t\tpushState(joinRoomPath, { replace: true });\n\t\t\t}\n\t\t},\n\t\tisTeamsInitialized: async (success) => {\n\t\t\tconsole.log(\"[teams]: initialize status\", success);\n\t\t\tif (success) {\n\t\t\t\tconsole.log(\"[teams]: Getting context...\");\n\n\t\t\t\t// Get the context\n\t\t\t\tconst context = await teamsService.getContext();\n\t\t\t\tsetTeamsContext(context);\n\t\t\t\tensureExternalLinkDialog();\n\n\t\t\t\tconsole.log(\"[teams]: Getting auth token...\");\n\t\t\t\ttry {\n\t\t\t\t\tawait getTeamsAuthToken({});\n\t\t\t\t} catch (err) {\n\t\t\t\t\teventService.trackEvent(EVENT_TEAMS_AUTH_TOKEN_ERROR(err));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tteamsService.notifyAppLoaded(false);\n\t\t\t}\n\t\t},\n\t\tisMenuOpen: (val) => setItem(STORAGE_KEYS.isMenuOpen, val),\n\t\tcurrentWorkspace: () => this.updateEventProps(),\n\t\tsessionUser: () => this.updateEventProps(),\n\t\tcurrentRoom: () => this.updateEventProps(),\n\t\tappContext: () => this.updateEventProps()\n\t});\n\n\tstatic get styles() {\n\t\treturn [sharedStyles, css``];\n\t}\n\n\tprotected firstUpdated(props: PropertyValues) {\n\t\tsuper.firstUpdated(props);\n\t\tthis.setup();\n\t}\n\n\tasync setup() {\n\t\taddRouteChangedListener(this.onRouteChanged.bind(this));\n\t\tsetIsSandbox(getQueryParam(QUERY_PARAMS.embed) != null);\n\t\twindow.addEventListener(\"resize\", () => this.updateIsMobile(100));\n\t\tthis.updateIsMobile();\n\t\tthis.updateEventProps();\n\t\teventService.trackPageView();\n\t}\n\n\tonRouteChanged() {\n\t\tthis.requestUpdate();\n\t\teventService.trackPageView();\n\t}\n\n\tupdateEventProps() {\n\t\tconst { sessionUser, currentWorkspace, currentRoom, appContext } = this.controller.model;\n\t\teventService.setProps({\n\t\t\tuser: sessionUser,\n\t\t\tworkspace: currentWorkspace,\n\t\t\troom: currentRoom,\n\t\t\tplatform: appContext ?? (guessIsTeamsContext() ? \"teams\" : undefined)\n\t\t});\n\t}\n\n\tupdateIsMobile(ms: number = 0) {\n\t\tdebounce(() => setIsMobile(isMobile()), \"update-is-mobile\", ms);\n\t}\n\n\tupdateColorModeColors() {\n\t\tconst { isTeamsInitialized, colorMode = DEFAULT_COLOR_MODE } = this.controller.model;\n\t\tsaveColorMode(colorMode);\n\t\tconst colors = getColorModeColors(colorMode);\n\t\tsetColorModeColors(colors);\n\n\t\t// Overwrite the background so it blends in with the teams background\n\t\tif (isTeamsInitialized) {\n\t\t\tsetThemeColorCSSProperty(\"app-background\", colors.isDark ? MS_TEAMS_BACKGROUND_DARK : MS_TEAMS_BACKGROUND_LIGHT);\n\t\t}\n\t}\n\n\trender() {\n\t\tconst { isTeamsInitialized, hasSession } = this.controller.model;\n\t\tconst pathname = location.pathname;\n\n\t\t// Check if the user is using a join room link\n\t\t// Always prioritize join room links, also over teams since it can be hosted in a tab\n\t\tif (pathname.startsWith(ROUTES.joinRoom(\"\"))) {\n\t\t\tconst accessCode = pathname.split(\"/\")?.[2]?.trim();\n\t\t\timport(\"./join/join-room-page\");\n\t\t\treturn html` `;\n\t\t}\n\n\t\t// If the session user is null but teams is initialized we ALWAYS send the user to the teams page\n\t\t// so the user can set up the teams integration.\n\t\tif (!hasSession && isTeamsInitialized) {\n\t\t\timport(\"./teams/setup-teams-page\");\n\t\t\treturn html``;\n\t\t}\n\n\t\t// If the route is poster we show the poster page\n\t\tif (pathname.startsWith(ROUTES.poster)) {\n\t\t\timport(\"./poster/poster-page\");\n\t\t\treturn html` `;\n\t\t}\n\n\t\t// If the route is brainstorm we show the brainstorm page\n\t\tif (pathname.startsWith(ROUTES.brainstormEmbed)) {\n\t\t\timport(\"./brainstorm-embed/brainstorm-embed-page\");\n\t\t\treturn html``;\n\t\t}\n\n\t\t// If the route is mindmap we show the mindmap page\n\t\tif (pathname.startsWith(ROUTES.mindmapEmbed)) {\n\t\t\timport(\"./mindmap-embed/mindmap-embed-page\");\n\t\t\treturn html``;\n\t\t}\n\n\t\t// If the route is pdf we show the pdf page\n\t\tif (pathname.startsWith(ROUTES.pdf)) {\n\t\t\timport(\"./pdf/pdf-page\");\n\t\t\treturn html` `;\n\t\t}\n\n\t\t// Check if the user is using a join workspace link\n\t\tif (pathname.startsWith(ROUTES.joinWorkspace(\"\"))) {\n\t\t\tconst pathnameParts = pathname.split(\"/\");\n\t\t\tconst accessCode = pathnameParts?.[2];\n\t\t\tconst name = (() => {\n\t\t\t\tconst namePart = pathnameParts?.[3];\n\t\t\t\tif (namePart == null) return null;\n\t\t\t\ttry {\n\t\t\t\t\treturn fromBinaryStr(atob(decodeURIComponent(namePart)))\n\t\t\t\t\t\t.trim()\n\t\t\t\t\t\t.toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t})();\n\t\t\timport(\"./join/join-workspace-page\");\n\t\t\treturn html`\n\t\t\t\t\n\t\t\t`;\n\t\t}\n\n\t\t// If the route is legal we show the legal page\n\t\tif (pathname.startsWith(ROUTES.legal)) {\n\t\t\timport(\"./landing/legal-page\");\n\t\t\treturn html` `;\n\t\t}\n\n\t\tif (hasSession) {\n\t\t\t// Check if we should show the landing page\n\t\t\tif (\n\t\t\t\t[ROUTES.affiliate, ROUTES.blog(), ROUTES.pricing, ROUTES.sitemap, ROUTES.toolbox()].findIndex((path) =>\n\t\t\t\t\tpathname.startsWith(path)\n\t\t\t\t) >= 0\n\t\t\t) {\n\t\t\t\timport(\"./landing/landing-page\");\n\t\t\t\treturn html` `;\n\t\t\t}\n\n\t\t\t// If we have a session always send the user to the session page\n\t\t\timport(\"./session/session-page\");\n\t\t\treturn html` `;\n\t\t}\n\n\t\t// Default route is the landing page\n\t\timport(\"./landing/landing-page\");\n\t\treturn html` `;\n\t}\n}\n"],"file":"src/index-GGyQI64l.js"}