@aws/mynah-ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/CODE_OF_CONDUCT.md +4 -0
  2. package/CONTRIBUTING.md +59 -0
  3. package/LICENSE +175 -0
  4. package/NOTICE +1 -0
  5. package/README.md +187 -0
  6. package/THIRD-PARTY-LICENSES +27 -0
  7. package/dist/components/button.d.ts +20 -0
  8. package/dist/components/context-item.d.ts +16 -0
  9. package/dist/components/feedback-form/feedback-form-comment.d.ts +15 -0
  10. package/dist/components/feedback-form/feedback-form-stars.d.ts +15 -0
  11. package/dist/components/feedback-form/feedback-form.d.ts +22 -0
  12. package/dist/components/icon.d.ts +51 -0
  13. package/dist/components/main-container.d.ts +29 -0
  14. package/dist/components/notification/notification.d.ts +48 -0
  15. package/dist/components/overlay/overlay.d.ts +82 -0
  16. package/dist/components/prioritization-menu.d.ts +18 -0
  17. package/dist/components/search-block/autocomplete-card.d.ts +20 -0
  18. package/dist/components/search-block/autocomplete-content.d.ts +33 -0
  19. package/dist/components/search-block/search-api-help.d.ts +38 -0
  20. package/dist/components/search-block/search-card-header.d.ts +14 -0
  21. package/dist/components/search-block/search-card.d.ts +74 -0
  22. package/dist/components/search-block/search-context.d.ts +31 -0
  23. package/dist/components/search-block/search-history-card.d.ts +16 -0
  24. package/dist/components/search-block/search-history-content.d.ts +20 -0
  25. package/dist/components/search-block/search-input.d.ts +36 -0
  26. package/dist/components/search-block/search-live-toggle.d.ts +18 -0
  27. package/dist/components/suggestion-card/suggestion-card-body.d.ts +15 -0
  28. package/dist/components/suggestion-card/suggestion-card-context-wrapper.d.ts +12 -0
  29. package/dist/components/suggestion-card/suggestion-card-header.d.ts +19 -0
  30. package/dist/components/suggestion-card/suggestion-card-relevance-vote.d.ts +16 -0
  31. package/dist/components/suggestion-card/suggestion-card.d.ts +27 -0
  32. package/dist/components/syntax-highlighter.d.ts +38 -0
  33. package/dist/components/toggle.d.ts +27 -0
  34. package/dist/helper/config.d.ts +15 -0
  35. package/dist/helper/context-manager.d.ts +34 -0
  36. package/dist/helper/date-time.d.ts +12 -0
  37. package/dist/helper/dom.d.ts +52 -0
  38. package/dist/helper/find-language.d.ts +17 -0
  39. package/dist/helper/guid.d.ts +5 -0
  40. package/dist/main.d.ts +26 -0
  41. package/dist/main.js +3 -0
  42. package/dist/main.js.LICENSE.txt +13 -0
  43. package/dist/main.js.map +1 -0
  44. package/dist/static.d.ts +276 -0
  45. package/dist/translations/en.d.ts +9 -0
  46. package/dist/translations/i18n.d.ts +13 -0
  47. package/package.json +62 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../webpack/universalModuleDefinition",".././src/styles/styles.scss",".././node_modules/css-loader/dist/runtime/api.js",".././node_modules/css-loader/dist/runtime/sourceMaps.js",".././node_modules/i18n-ts/lib/core/I18nResolver.js",".././node_modules/i18n-ts/lib/i18n.js",".././node_modules/prismjs/components/prism-java.js",".././node_modules/prismjs/components/prism-javascript.js",".././node_modules/prismjs/components/prism-json.js",".././node_modules/prismjs/components/prism-python.js",".././node_modules/prismjs/components/prism-typescript.js",".././node_modules/prismjs/plugins/line-numbers/prism-line-numbers.js",".././node_modules/prismjs/prism.js","webpack://MynahUI/./src/styles/styles.scss?203b",".././node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js",".././node_modules/style-loader/dist/runtime/insertBySelector.js",".././node_modules/style-loader/dist/runtime/insertStyleElement.js",".././node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js",".././node_modules/style-loader/dist/runtime/styleDomAPI.js",".././node_modules/style-loader/dist/runtime/styleTagTransform.js",".././src/components/button.ts",".././src/components/context-item.ts",".././src/components/feedback-form/feedback-form-comment.ts",".././src/components/feedback-form/feedback-form-stars.ts",".././src/components/feedback-form/feedback-form.ts",".././src/components/icon.ts",".././src/components/main-container.ts",".././src/components/notification/notification.ts",".././src/components/overlay/overlay.ts",".././src/components/prioritization-menu.ts",".././src/components/search-block/autocomplete-card.ts",".././src/components/search-block/autocomplete-content.ts",".././src/components/search-block/search-api-help.ts",".././src/components/search-block/search-card-header.ts",".././src/components/search-block/search-card.ts",".././src/components/search-block/search-context.ts",".././src/components/search-block/search-history-card.ts",".././src/components/search-block/search-history-content.ts",".././src/components/search-block/search-input.ts",".././src/components/search-block/search-live-toggle.ts",".././src/components/suggestion-card/suggestion-card-body.ts",".././src/components/suggestion-card/suggestion-card-context-wrapper.ts",".././src/components/suggestion-card/suggestion-card-header.ts",".././src/components/suggestion-card/suggestion-card-relevance-vote.ts",".././src/components/suggestion-card/suggestion-card.ts",".././src/components/syntax-highlighter.ts",".././src/components/toggle.ts",".././src/helper/config.ts",".././src/helper/context-manager.ts",".././src/helper/date-time.ts",".././src/helper/dom.ts",".././src/helper/find-language.ts",".././src/helper/guid.ts",".././src/static.ts",".././src/translations/en.ts",".././src/translations/i18n.ts","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object",".././src/main.ts"],"names":["root","factory","exports","module","define","amd","self","___CSS_LOADER_EXPORT___","push","id","cssWithMappingToString","list","toString","this","map","item","content","needLayer","concat","length","join","i","modules","media","dedupe","supports","layer","undefined","alreadyImportedModules","k","_k","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","data","sourceMapping","sourceURLs","sources","source","sourceRoot","Object","defineProperty","value","isCookieAvailable","document","I18nResolver","translations","preferredLanguage","cookieName","currentLanguage","language","getCookie","getBrowserLanguage","findBestMatch","prototype","get","enumerable","configurable","set","lang","setCookie","name","expires","path","cookieStr","toUTCString","cookie","split","trim","filter","match","replace","navigator","userLanguage","langPrefix","I18nResolver_1","Prism","keywords","classNamePrefix","className","pattern","RegExp","lookbehind","inside","languages","java","extend","greedy","clike","function","insertBefore","alias","namespace","javascript","regex","rest","markup","tag","addInlined","addAttribute","js","json","webmanifest","python","py","typescript","keyword","typeInside","ts","PLUGIN_NAME","NEW_LINE_EXP","config","plugins","lineNumbers","getLine","element","number","tagName","classList","contains","lineNumberRows","querySelector","lineNumberStart","parseInt","getAttribute","lineNumberEnd","children","lineIndex","resize","resizeElements","assumeViewportIndependence","lastWidth","window","addEventListener","innerWidth","Array","slice","call","querySelectorAll","hooks","add","env","code","pre","test","nodeName","util","isActive","remove","lineNumbersWrapper","linesNum","lines","createElement","setAttribute","innerHTML","hasAttribute","style","counterReset","appendChild","run","elements","e","whiteSpace","getComputedStyle","currentStyle","infos","codeElement","lineNumberSizer","codeLines","textContent","display","oneLinerHeight","getBoundingClientRect","height","lineHeights","sizer","Boolean","forEach","info","line","index","childIndex","wrapper","lineNumber","_self","uniqueId","plainTextGrammar","_","manual","disableWorkerMessageHandler","encode","tokens","Token","type","isArray","o","objId","obj","clone","deepClone","visited","key","hasOwnProperty","v","getLanguage","m","exec","toLowerCase","parentElement","setLanguage","currentScript","Error","err","src","stack","scripts","getElementsByTagName","defaultActivation","no","plain","plaintext","text","txt","redef","before","insert","grammar","ret","token","newToken","old","DFS","callback","property","propertyType","highlightAll","async","highlightAllUnder","container","selector","apply","highlightElement","parent","insertHighlightedCode","highlightedCode","Worker","worker","filename","onmessage","evt","postMessage","immediateClose","highlight","tokenize","tokenList","LinkedList","addAfter","head","matchGrammar","array","node","next","tail","toArray","all","callbacks","matchedStr","matchPattern","pos","lastIndex","lookbehindLength","startNode","startPos","rematch","patterns","j","cause","patternObj","global","flags","currentNode","reach","str","removeCount","from","to","p","matchStr","after","removeFrom","prev","removeRange","nestedRematch","newNode","count","s","classes","attributes","aliases","message","parse","close","script","highlightAutomaticallyCallback","readyState","defer","requestAnimationFrame","setTimeout","WorkerGlobalScope","g","includedCdataInside","def","attrName","html","mathml","svg","xml","ssml","atom","rss","string","css","Element","matches","msMatchesSelector","webkitMatchesSelector","EXTENSIONS","STATUS_ATTR","STATUS_LOADING","STATUS_LOADED","SELECTOR","extension","autoloader","loadLanguages","success","error","xhr","XMLHttpRequest","open","onreadystatechange","status","responseText","range","start","Number","comma","end","parseRange","Math","max","min","String","statusText","send","loadFile","fileHighlight","logged","console","warn","arguments","options","styleTagTransform","setAttributes","domAPI","insertStyleElement","stylesInDOM","getIndexByIdentifier","identifier","result","modulesToDom","idCountMap","identifiers","base","indexByIdentifier","sourceMap","references","updater","addElementStyle","byIndex","splice","api","update","newObj","lastIdentifiers","newList","newLastIdentifiers","_i","_index","memo","target","styleTarget","HTMLIFrameElement","contentDocument","getTarget","styleElement","nonce","parentNode","removeChild","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","constructor","props","setEnabled","enabled","render","removeAttribute","DomBuilder","getInstance","build","classNames","primary","events","additionalEvents","click","onClick","icon","label","handleMenuOpen","elm","currentTarget","addClass","PrioritizationMenuButtons","referenceElement","context","onMenuClose","removeClass","createOverlay","ContextTypeClassNames","ContextTypes","SHOULD","for","showRemoveButton","event","cancelEvent","ContextManager","addOrUpdateContext","visible","removeContext","Icon","MynahIcons","CANCEL","Button","bind","MENU","focus","setComment","comment","keyup","onChange","initComment","disabled","placeholder","setStar","star","initStar","fill","n","STAR","feedbackPayload","onFeedbackSet","initPayload","stars","triggerButton","formOverlay","Overlay","feedbackFormContainer","closeOnOutsideClick","dimOutside","horizontalDirection","OverlayHorizontalDirection","END_TO_LEFT","verticalDirection","OverlayVerticalDirection","TO_BOTTOM","feedbackStars","FeedbackFormStars","feedbackComment","feedbackSubmitButton","FeedbackFormComment","feedbackContainer","clearCards","updateCards","suggestions","cardsWrapper","clear","insertChild","suggestion","SuggestionCard","onVoteChange","onSuggestionOpen","onSuggestionLinkClick","onSuggestionLinkCopy","onSuggestionEngaged","onCopiedToClipboard","onScroll","scroll","persistent","skeletonWrapper","title","url","body","NotificationType","NotificationTarget","getNextCalculatedTop","prevNotifications","DS","prevNotificationRectangle","top","OVERLAY_MARGIN","getChildren","duration","INFO","notify","notificationOverlay","referencePoint","left","documentElement","clientWidth","TO_LEFT","onClose","onNotificationHide","onNotificationClick","guid","generateUID","windowBlurHandler","removeEventListener","getCalculatedLeft","referenceRectangle","width","TO_RIGHT","START_TO_RIGHT","CENTER","getCalculatedTop","START_TO_BOTTOM","TO_TOP","END_TO_TOP","updateContent","innerContainer","calculatedTop","calculatedLeft","createPortal","MynahPortalNames","OVERLAY","containerRectangle","winHeight","clientHeight","innerHeight","winWidth","comparingWidth","comparingHeight","handlePrioritizationButtonClick","priority","menuOverlay","MUST","MUST_NOT","searchQuery","buttonClassNames","isHovered","onAutocompleteClick","formatSuggestion","word","bold","autocompleteCards","autocompleteSuggestions","hovered","record","AutocompleteCardContent","handleAutocompleteClick","autocompleteItem","autocompleteItemsOverlay","getSuggestionsCount","updateSuggestions","hoverQuery","cards","cardWrapper","updateQuery","hover","isUp","currHover","setIsUsed","val","isUsed","getIsUsed","getCurrentSelected","onCodeDetailsClicked","isCollapsed","hide","show","fileName","row","column","SyntaxHighlighter","codeStringWithMarkup","getLanguageFromFileName","SupportedCodingLanguagesExtensionToTypeMap","keepHighlights","showLineNumbers","startingLineNumber","toggleClass","DOWN_OPEN","UP_OPEN","feedbackForm","FeedbackForm","liveSearchToggle","unfoldedByContextInsertion","unfoldedByButton","addFocusOnInput","searchInput","performSearch","isFromAutocomplete","currAutocompleteSuggestionSelected","autocompleteSuggestionsCount","onSearch","searchPayload","removeLiveSearchToggle","handleSearchQueryChange","query","handleContextChange","matchPolicy","getSearchText","historyProcess","codeSelection","selectedCode","handleHistoryChange","historyItem","onHistoryChange","removeAll","contextItems","queryContext","keys","policyGroup","contextKey","ContextSource","AUTO","searchAPIHelp","file","input","codeQuery","setSearchQuery","setSearchText","setContextItems","contextManagement","updateLocalContext","setWaitState","waitState","setFolded","folded","liveSearch","onLiveSearchToggle","LiveSearchState","STOP","onLiveSearchDataReceived","flashToggle","changeLiveSearchState","state","setToggleState","foldUnfoldButton","hasClass","MynahEventNames","CONTEXT_VISIBILITY_CHANGE","getContextMatchPolicy","initText","initContextList","must","should","mustNot","simpleNames","usedFullyQualifiedNames","SearchContext","onContextInsertionEnabled","onContextInsertionDisabled","SearchInput","onHistoryOpen","onAutocompleteRequest","hideHistoryButton","searchAlwaysActive","SearchApiHelp","SearchLiveToggle","RESUME","searchCardHeader","SearchCardHeader","allowedCharCount","contextCheckExpression","isAcceptedKeyPress","char","acceptedNagivationKeys","KeyMap","renderedContextMap","updateContextItems","detail","contextMap","areContextItemsIdentical","contextRender","ContextPill","contextWrapper","enableContextInsertion","contextInsertionButton","contextInsertionInput","disableContextInsertion","inputAutoWidth","contextInsertionKeydownHandler","includes","ENTER","USER","Notification","ERROR","ESCAPE","maxlength","tabindex","blur","keydown","paste","PLUS","dblclick","REMOVE_ALL_CONTEXT","trigger","CODE_BLOCK","LIGHT_BULB","onHistoryItemClick","getSearchHitoryRecordTitle","recordDate","getTimeDiff","Date","getTime","titleParts","pop","searchHistoryCards","historyItems","HistoryCardContent","historyItemsOverlay","searchHistory","searchTextInput","handleInputKeydown","triggerSearch","ARROW_DOWN","autocompleteContent","ARROW_UP","DELETE","BACKSPACE","values","getAutocompleteSuggestions","remainingIndicator","isAutocompleteUsed","triggerSearchHistory","searchHistoryButton","isGlobal","resultOffset","resultLimit","then","HistoryContent","catch","WARNING","AutocompleteContent","autocompleteQuery","searchButton","I18N","texts","searchInputAPIHelpPlaceholder","searchInputMynahPlaceholder","SEARCH","SEARCH_HISTORY","LiveSearchStateColors","PAUSE","toggle","setValue","Toggle","PLAY","color","matchingLanguage","findLanguageFromSuggestion","childNodes","elementFromNode","showCopyOptions","SuggestionCardRelevanceVote","contextList","getContextObjectFromKey","availableInSuggestion","SUGGESTION","getSourceMetaBlock","metaData","metaItems","isAccepted","OK","lastActivityDate","CALENDAR","answers","CHAT","forks","upVotes","THUMBS_UP","splittedUrl","site","onSuggestionTitleClick","EXTERNAL","copy","href","handleVoteChange","vote","change","RelevancyVoteType","UP","DOWN","THUMBS_DOWN","engagementStartTime","totalMouseDistanceTraveled","x","y","resetEngagement","previousMousePosition","mouseDownInfo","time","handleEngagement","interactionDistanceTraveled","engagementDurationTillTrigger","scrollDistanceToEngage","offsetTop","engagementType","EngagementType","INTERACTION","TIME","selectionDistanceTraveled","mouseenter","clientX","clientY","mousemove","abs","mousedown","mouseup","mouseUpInfo","selectedText","getSelection","mouseleave","SuggestionCardHeader","SuggestionCardContextWrapper","SuggestionCardBody","selection","DEFAULT_LANG","highlighters","textReplacement","copyToClipboard","textToSendClipboard","notificationText","clipboard","writeText","log","codeMarkup","innerText","styledCode","COPY","TEXT_SELECT","currentRange","getRangeAt","commonAncestorContainer","isSameNode","option","relocateTransitioner","backgroundColor","checked","updateSelectionRender","setRelocatePosition","renderRect","rect","configProcessors","sourceString","decodeURI","loading","live","getConfig","configName","setConfig","configValue","stateManager","setState","configElement","configItem","getState","ContextCheckbox","ContextTypePriorityMap","EmptyContextObject","contextCheckboxes","dispatchEvent","CustomEvent","contextToCompare","currentContext","newContext","getPortal","WRAPPER","reduce","policySet","currentKey","static","instance","differenceInMs","separator","delta","years","floor","months","weeks","days","hours","minutes","combined","EmptyDomBuilderObject","rootSelector","portals","builderObject","indexOf","position","child","childItem","insertAdjacentElement","insertAdjacentText","clearChildren","removePersistent","extendDomFunctionality","domElement","extendedElement","domBuilderObject","readyToBuildObject","buildedDom","eventName","attributeName","HTMLElement","domToUpdate","portalName","portalDom","removePortal","preventDefault","stopPropagation","stopImmediatePropagation","res","ctx","SupportedCodingLanguages","codingLang","fileExtension","firstPart","random","secondPart","SuggestionEventName","ContextChangeType","FEEDBACK_FORM","localLanguage","i18n","en","default","translation","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","d","a","definition","globalThis","Function","prop","r","Symbol","toStringTag","updateSearchPayload","handleLiveSearchExternalCommand","searchCard","handlePayloadChange","handleSearch","handleLiveSearch","handleContentUpdate","mainContainer","payload","connector","clickAutocompleteSuggestionItem","requestSuggestions","recordContextChange","ADD","REMOVE","serviceConnector","MynahConfig","isLiveSearchOn","listenPayloadChanges","liveSearchHandler","liveSearchStateExternalChangeHandler","SearchCard","requestHistoryRecords","requestAutocomplete","sendFeedback","toggleLiveSearch","clickCodeDetails","MainContainer","updateVoteOfSuggestion","triggerSuggestionEvent","CLICK","OPEN","engagement","triggerSuggestionEngagement","scrollTop","triggerSuggestionClipboardInteraction","initSuggestions","once","reason","uiReady"],"mappings":"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","file":"main.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MynahUI\"] = factory();\n\telse\n\t\troot[\"MynahUI\"] = factory();\n})(self, function() {\nreturn ","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{font-size:var(--vscode-editor-font-size);font-family:var(--vscode-editor-font-family);--mynah-sizing-base: 3px;--mynah-sizing-half: calc(var(--mynah-sizing-base) / 2);--mynah-sizing-1: var(--mynah-sizing-base);--mynah-sizing-2: calc(var(--mynah-sizing-base) * 2);--mynah-sizing-3: calc(var(--mynah-sizing-base) * 3);--mynah-sizing-4: calc(var(--mynah-sizing-base) * 4);--mynah-sizing-5: calc(var(--mynah-sizing-base) * 5);--mynah-sizing-6: calc(var(--mynah-sizing-base) * 6);--mynah-sizing-7: calc(var(--mynah-sizing-base) * 7);--mynah-sizing-8: calc(var(--mynah-sizing-base) * 8);--mynah-sizing-9: calc(var(--mynah-sizing-base) * 9);--mynah-sizing-10: calc(var(--mynah-sizing-base) * 10);--mynah-sizing-11: calc(var(--mynah-sizing-base) * 11);--mynah-sizing-12: calc(var(--mynah-sizing-base) * 12);--mynah-sizing-13: calc(var(--mynah-sizing-base) * 13);--mynah-sizing-14: calc(var(--mynah-sizing-base) * 14);--mynah-sizing-15: calc(var(--mynah-sizing-base) * 15);--mynah-sizing-16: calc(var(--mynah-sizing-base) * 16);--mynah-sizing-17: calc(var(--mynah-sizing-base) * 17);--mynah-sizing-18: calc(var(--mynah-sizing-base) * 18);--mynah-button-border-width: 1px;--mynah-color-text-default: var(--vscode-foreground);--mynah-color-text-strong: var(--vscode-input-foreground);--mynah-color-text-weak: var(--vscode-list-deemphasizedForeground);--mynah-color-text-link: var(--vscode-textLink-foreground);--mynah-color-text-input: var(--vscode-input-foreground);--mynah-color-bg: var(--vscode-sideBar-background);--mynah-color-light: rgba(0, 0, 0, 0.05);--mynah-color-deep: var(--vscode-checkbox-background);--mynah-color-deep-reverse: var(--vscode-checkbox-foreground);--mynah-color-border-default: rgba(0, 0, 0, 0.1);--mynah-color-input-bg: var(--vscode-input-background);--mynah-color-highlight: rgba(255, 199, 72, 0.3);--mynah-color-highlight-text: #886411;--mynah-color-context-must-contain: #c7ebce;--mynah-color-context-should-contain: var(--vscode-sideBar-background);--mynah-color-context-must-not-contain: #f3cac7;--mynah-color-context-reverse: rgba(0, 0, 0, 0.5);--mynah-color-context-filter: 0.975;--mynah-color-status-info: var(--vscode-editorInfo-foreground);--mynah-color-status-success: var(--vscode-list-activeSelectionBackground);--mynah-color-status-warning: var(--vscode-editorWarning-foreground);--mynah-color-status-error: var(--vscode-editorError-foreground);--mynah-color-button: var(--vscode-button-background);--mynah-color-button-reverse: var(--vscode-button-foreground);--mynah-color-alternate: var(--vscode-button-secondaryBackground);--mynah-color-alternate-reverse: var(--vscode-button-secondaryForeground);--mynah-color-code-bg: var(--mynah-color-bg);--mynah-color-code-text: var(--vscode-textPreformat-foreground);--mynah-color-main: var(--vscode-button-background);--mynah-color-main-reverse: var(--vscode-button-foreground);--mynah-card-bg: var(--vscode-editor-background);--mynah-shadow-generic: none;--mynah-shadow-card: none;--mynah-shadow-card-more: none;--mynah-shadow-card-active: none;--mynah-shadow-prioritization-menu: 0 10px 20px -10px var(--vscode-editorGroup-border);--mynah-shadow-feedback-form: 0 0px 40px 0px var(--mynah-color-bg);--mynah-font-size-xsmall: 0.75rem;--mynah-font-size-small: 0.825rem;--mynah-font-size-medium: 1rem;--mynah-font-size-large: 1.15rem;--mynah-font-size-xlarge: 1.275rem;--mynah-card-radius: 0;--mynah-button-radius: var(--mynah-sizing-1);--mynah-very-short-transition: all 250ms cubic-bezier(0.25, 1, 0, 1);--mynah-short-transition-transform: transform 200ms cubic-bezier(0.85, 0.15, 0, 1);--mynah-long-transition: all 370ms cubic-bezier(0.35, 1, 0.15, 1);--mynah-pretty-long-transition: all 450ms cubic-bezier(0.25, 1, 0, 1);--mynah-very-long-transition: all 1250ms cubic-bezier(0.25, 1, 0, 1);--mynah-short-transition: all 250ms cubic-bezier(0.85, 0.15, 0, 1);--mynah-short-transition-rev: all 270ms cubic-bezier(0.35, 1, 0, 1);--mynah-short-transition-rev-opacity: opacity 400ms cubic-bezier(0.35, 1, 0, 1);--mynah-short-transition-reflection: all 650ms cubic-bezier(0.25, 1, 0, 1), opacity 500ms 150ms cubic-bezier(0.25, 1, 0, 1);--mynah-short-transition-turbo: all 250ms cubic-bezier(0.25, 1, 0, 1);--mynah-short-transition-turbo-bounce: all 350ms cubic-bezier(0.25, 1, 0, 1), transform 450ms cubic-bezier(0.25, 4, 0, 1);--mynah-short-transition-bounce: all 500ms cubic-bezier(0.25, 1, 0, 1), transform 700ms cubic-bezier(0.25, 1.75, 0, 1);--mynah-mask-image: linear-gradient( to bottom, black var(--mynah-sizing-8), black calc(100% - var(--mynah-sizing-14)), transparent );--mynah-mask-image-rev: linear-gradient(to bottom, transparent 0%, transparent 80%, black 100%);--mynah-mask-image-main: linear-gradient( to bottom, transparent, black var(--mynah-sizing-6), black calc(100% - var(--mynah-sizing-6)), transparent );--mynah-mask-image-main-rev: linear-gradient(to bottom, black, transparent calc(100% - 2px), transparent);--mynah-mask-image-skeleton: linear-gradient( to bottom, black var(--mynah-sizing-8), black calc(50% - var(--mynah-sizing-14)), transparent )}@keyframes glass-reflection{0%{background-position:100% 50%}100%{background-position:0% 50%}}@keyframes move-to-middle{0%{transform:translate3d(-10%, 0, 0);opacity:0}100%{transform:translate3d(0, 0, 0);opacity:1}}@keyframes move-to-right{0%{transform:translate3d(0, 0, 0);opacity:1}100%{transform:translate3d(10%, 0, 0);opacity:0}}@keyframes shake{0%{transform:translate3d(0, 0, 0);border-color:red}10%{transform:translate3d(5px, 0, 0)}20%{transform:translate3d(-5px, 0, 0)}30%{transform:translate3d(5px, 0, 0)}40%{transform:translate3d(-5px, 0, 0)}50%{transform:translate3d(5px, 0, 0)}60%{transform:translate3d(-5px, 0, 0)}70%{transform:translate3d(5px, 0, 0)}80%{transform:translate3d(-5px, 0, 0)}90%{transform:translate3d(5px, 0, 0);border-color:red}100%{transform:translate3d(0, 0, 0);border-color:rgba(0,0,0,0)}}#mynah-wrapper{display:flex;flex-flow:column nowrap;margin:0 auto;width:100%;max-width:1024px;box-sizing:border-box;height:100%;padding:var(--mynah-sizing-3) 0 0 0}#mynah-wrapper .context-checkbox{display:none}#mynah-wrapper .mynah-main{display:block;box-sizing:border-box;flex:1 1 0;overflow:hidden;position:relative}#mynah-wrapper .mynah-main>.mynah-skeleton-wrapper,#mynah-wrapper .mynah-main>.mynah-cards-wrapper{padding:var(--mynah-sizing-4) 0 var(--mynah-sizing-12) 0;display:flex;flex-flow:column nowrap;gap:var(--mynah-sizing-4);box-sizing:border-box;overflow:hidden;position:relative;height:100%}#mynah-wrapper .mynah-main>.mynah-cards-wrapper{overflow-x:hidden;overflow-y:auto;flex:1 1 0;transition:var(--mynah-long-transition);transform:translate3d(0, 0, 0);opacity:1}#mynah-wrapper .mynah-main>.mynah-cards-wrapper>.mynah-no-suggestion-indicator{display:flex;box-sizing:border-box;opacity:.5;width:100%;padding:var(--mynah-sizing-12);flex-flow:row nowrap;justify-content:center;align-items:flex-start}#mynah-wrapper .mynah-main>.mynah-skeleton-wrapper{position:absolute;transition:var(--mynah-long-transition);top:0;left:0;margin:0 auto;width:100%;height:100%;z-index:100;pointer-events:none;transform:translate3d(-10%, 0, 0);opacity:0}#mynah-wrapper .mynah-main.mynah-hide-content>.mynah-cards-wrapper{animation:move-to-right 750ms cubic-bezier(0.25, 0.5, 0, 1) both}#mynah-wrapper .mynah-main.mynah-hide-content>.mynah-skeleton-wrapper{pointer-events:all;animation:move-to-middle 750ms cubic-bezier(0.25, 0.5, 0, 1) both}#mynah-wrapper .mynah-main.mynah-show-content>.mynah-cards-wrapper{animation:move-to-middle 750ms cubic-bezier(0.25, 0.5, 0, 1) both}#mynah-wrapper .mynah-main.mynah-show-content>.mynah-skeleton-wrapper{pointer-events:none;transition-delay:450ms;animation:move-to-right 750ms cubic-bezier(0.25, 0.5, 0, 1) both}@media screen and (max-width: 1024px){#mynah-wrapper{padding-top:0}#mynah-wrapper>.mynah-search-block{border-left:none;border-right:none;border-top:none}#mynah-wrapper .mynah-main>.mynah-skeleton-wrapper,#mynah-wrapper .mynah-main>.mynah-cards-wrapper>.mynah-card{border-right:none;border-left:none}}.mynah-search-block{display:inline-flex;flex-flow:row wrap;justify-content:flex-end;background-color:var(--mynah-card-bg);border-radius:var(--mynah-card-radius);box-shadow:var(--mynah-shadow-card);transition:var(--mynah-short-transition-rev);overflow:visible;position:relative;overflow:visible;border:var(--mynah-button-border-width) solid var(--vscode-editorGroup-border)}.mynah-search-block:before{content:\\\"\\\";background-color:transparent;transition:var(--mynah-short-transition-rev);position:absolute;top:0;left:0;width:100%;height:100%;border-radius:inherit;box-shadow:var(--mynah-shadow-card);pointer-events:none;filter:brightness(50%) saturate(250%) contrast(250%);opacity:.4}.mynah-search-block>.mynah-search-block-header{width:100%;margin:1em 1em 0px 0px;display:flex;justify-content:flex-end}.mynah-search-block>.mynah-search-block-header>#mynah-feedback-form-container>.mynah-feedback-trigger-button{transition:var(--mynah-short-transition-bounce);pointer-events:all;border-bottom-right-radius:0;border-bottom-left-radius:0;cursor:pointer}.mynah-search-block>.mnynah-search-block-fold-unfold-button{position:absolute;bottom:0;left:50%;margin-left:calc(-1*var(--mynah-sizing-8)/2);margin-bottom:calc(-1*var(--mynah-sizing-8)/2);width:var(--mynah-sizing-8);height:var(--mynah-sizing-8);min-width:var(--mynah-sizing-8);z-index:999999;transform:translate3d(0, 0, 0) scale(0.75);opacity:0;pointer-events:none;transition:var(--mynah-very-short-transition);background-color:var(--mynah-card-bg);color:var(--mynah-color-text-input);border:var(--mynah-button-border-width) solid var(--vscode-editorGroup-border);font-size:var(--mynah-sizing-6)}.mynah-search-block>.mnynah-search-block-fold-unfold-button>.mynah-icon-up-open{display:inline-flex}.mynah-search-block>.mnynah-search-block-fold-unfold-button>.mynah-icon-down-open{display:none}.mynah-search-block>.mynah-search-live-toggle-wrapper{display:flex;flex-flow:row nowrap;justify-content:flex-end;align-items:center;gap:var(--mynah-sizing-1);width:100%;padding:var(--mynah-sizing-3) var(--mynah-sizing-3) 0 0}.mynah-search-block>.mynah-search-live-toggle-wrapper>.mynah-toggle-container>.mynah-toggle-indicator-transitioner:before,.mynah-search-block>.mynah-search-live-toggle-wrapper>.mynah-toggle-container>.mynah-toggle-indicator-transitioner:after{content:\\\"\\\";position:absolute;z-index:10;top:0;left:0;width:100%;height:100%;background-color:var(--mynah-color-status-success);opacity:.35;border-radius:100%;transform:translate3d(0, 0, 0) scale(0);transform-origin:center center;pointer-events:none}.mynah-search-block>.mynah-search-live-toggle-wrapper.flash-toggle>.mynah-toggle-container{overflow:visible}.mynah-search-block>.mynah-search-live-toggle-wrapper.flash-toggle>.mynah-toggle-container>.mynah-toggle-indicator-transitioner:before,.mynah-search-block>.mynah-search-live-toggle-wrapper.flash-toggle>.mynah-toggle-container>.mynah-toggle-indicator-transitioner:after{content:\\\"\\\";transform:translate3d(0, 0, 0) scale(8);opacity:0;transition:var(--mynah-short-transition);transition-duration:1750ms}.mynah-search-block>.mynah-search-live-toggle-wrapper.flash-toggle>.mynah-toggle-container>.mynah-toggle-indicator-transitioner:before{transform:translate3d(0, 0, 0) scale(10);transition-duration:2000ms;transition-delay:200ms}.mynah-search-block>.mynah-search-input-wrapper,.mynah-search-block>.mynah-search-api-help{color:var(--mynah-color-text-input);width:100%;flex:1 1 100%;margin:var(--mynah-sizing-4) var(--mynah-sizing-4) 0 var(--mynah-sizing-4);display:flex}.mynah-search-block>.mynah-search-api-help{flex-flow:column nowrap;padding:var(--mynah-sizing-half);box-sizing:border-box;border-radius:var(--mynah-card-radius);overflow:hidden}.mynah-search-block>.mynah-search-api-help.hide{display:none}.mynah-search-block>.mynah-search-api-help>.mynah-search-api-help-code-view-wrapper{width:100%;box-sizing:border-box;overflow:hidden;position:relative}.mynah-search-block>.mynah-search-api-help>.mynah-search-api-help-code-view-wrapper>.mynah-syntax-highlighter>pre{width:100%;box-sizing:border-box;max-height:50vh;overflow-x:auto;overflow-y:auto}.mynah-search-block>.mynah-search-api-help>.mynah-search-api-help-code-view-detail-row{display:flex;flex-flow:row nowrap;width:100%;align-items:center;gap:var(--mynah-sizing-1);padding:0 var(--mynah-sizing-3) 0 var(--mynah-sizing-3)}.mynah-search-block>.mynah-search-api-help>.mynah-search-api-help-code-view-detail-row:nth-child(1){margin-top:var(--mynah-sizing-3)}.mynah-search-block>.mynah-search-api-help>.mynah-search-api-help-code-view-detail-row:nth-child(2){margin-bottom:var(--mynah-sizing-3)}.mynah-search-block>.mynah-search-api-help>.mynah-search-api-help-code-view-detail-row>*:nth-child(1){width:110px;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mynah-search-block>.mynah-search-api-help>.mynah-search-api-help-code-view-detail-row>*:nth-child(2){flex:1 1 0%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mynah-search-block>.mynah-search-api-help>.mynah-search-api-help-collapser{display:flex;flex-flow:row nowrap;padding:var(--mynah-sizing-2);justify-content:center;align-items:center;font-size:var(--mynah-sizing-6);cursor:pointer}.mynah-search-block>.mynah-search-api-help>.mynah-search-api-help-collapser>.mynah-search-api-help-uncollapse-icon{display:none}.mynah-search-block>.mynah-search-api-help>.mynah-search-api-help-collapser>.mynah-search-api-help-collapse-icon{display:inline-flex}.mynah-search-block>.mynah-search-api-help.collapsed>.mynah-search-api-help-code-view-wrapper{cursor:pointer}.mynah-search-block>.mynah-search-api-help.collapsed>.mynah-search-api-help-code-view-wrapper>.mynah-syntax-highlighter>pre{max-height:var(--mynah-sizing-16);overflow-x:hidden;overflow-y:hidden}.mynah-search-block>.mynah-search-api-help.collapsed>.mynah-search-api-help-code-view-detail-row{display:none}.mynah-search-block>.mynah-search-api-help.collapsed>.mynah-search-api-help-collapser>.mynah-search-api-help-uncollapse-icon{display:inline-flex}.mynah-search-block>.mynah-search-api-help.collapsed>.mynah-search-api-help-collapser>.mynah-search-api-help-collapse-icon{display:none}.mynah-search-block>.mynah-search-api-help:not(:empty)+.mynah-search-input-wrapper{margin-top:0}.mynah-search-block>.mynah-search-input-wrapper{border:1px solid var(--mynah-color-border-default);padding:var(--mynah-sizing-2);margin-bottom:var(--mynah-sizing-3);border-radius:var(--mynah-card-radius);flex-flow:row nowrap;align-items:center;gap:var(--mynah-sizing-2)}.mynah-search-block>.mynah-search-input-wrapper>.mynah-logo{width:var(--mynah-sizing-8);height:var(--mynah-sizing-8);opacity:.5}.mynah-search-block>.mynah-search-input-wrapper>.mynah-search-input{flex:1 1 0;border:none;background-color:rgba(0,0,0,0);font-size:var(--mynah-font-size-large);color:var(--mynah-color-text-input);outline:none;width:100%}.mynah-search-block>.mynah-search-input-wrapper>.mynah-search-input::placeholder{color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-small)}.mynah-search-block>.mynah-search-input-wrapper>.mynah-search-input:not(:placeholder-shown)+span{display:inline-block}.mynah-search-block>.mynah-search-input-wrapper>.mynah-search-input:placeholder-shown:not(.search-always-active)~.mynah-search-button{background-color:var(--mynah-color-light);color:var(--mynah-color-text-default);box-shadow:0 5px 10px -10px var(--mynah-color-light);pointer-events:none}.mynah-search-block>.mynah-search-input-wrapper>.mynah-search-input:placeholder-shown:not(.search-always-active)~.mynah-search-button>*{opacity:.5}.mynah-search-block>.mynah-search-input-wrapper>.mynah-search-input+span{display:none;opacity:.5;font-size:var(--mynah-font-size-xsmall);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:currentColor;margin-left:var(--mynah-sizing-1)}.mynah-search-block>.mynah-search-input-wrapper>.mynah-search-input+span:after{content:attr(remaining-chars) \\\"/\\\" attr(max-chars)}.mynah-search-block>.mynah-search-block-advanced-control{display:flex;flex-flow:column nowrap;align-items:flex-start;overflow:hidden;width:100%;padding:0 var(--mynah-sizing-4) var(--mynah-sizing-4) var(--mynah-sizing-4);transition:var(--mynah-very-short-transition);max-height:50vh}.mynah-search-block>.mynah-search-block-advanced-control>.mynah-context-wrapper{display:flex;flex-flow:row wrap;gap:var(--mynah-sizing-2);flex:1 1 0%}.mynah-search-block.mynah-search-block-ready-to-fold>.mnynah-search-block-fold-unfold-button{transform:translate3d(0, 0, 0) scale(1.000001);opacity:1;pointer-events:all}.mynah-search-block.mynah-search-block-ready-to-fold:not(.mynah-search-block-unfold)>.mnynah-search-block-fold-unfold-button>.mynah-icon-up-open{display:none}.mynah-search-block.mynah-search-block-ready-to-fold:not(.mynah-search-block-unfold)>.mnynah-search-block-fold-unfold-button>.mynah-icon-down-open{display:inline-flex}.mynah-search-block.mynah-search-block-ready-to-fold:not(.mynah-search-block-unfold)>.mynah-search-block-advanced-control{max-height:0;opacity:.4;-webkit-mask-image:var(--mynah-mask-image-main-rev);-webkit-mask-size:100% 150%;mask-image:var(--mynah-mask-image-main-rev);mask-size:100% 200%}.mynah-search-block.mynah-search-block-ready-to-fold:not(.mynah-search-block-unfold)>.mynah-search-block-advanced-control>#add-new-context{transform:translate3d(0, calc(-1 * var(--mynah-sizing-10)), 0) scale(0.5) !important;opacity:0 !important;margin-bottom:calc(-1*var(--mynah-sizing-10))}@media screen and (max-width: 1024px){.mynah-search-block{border-radius:0;margin:0}}.mynah-search-history-items-wrapper{display:flex;flex-flow:column nowrap;max-height:50vh;overflow-x:hidden;overflow-y:auto;width:70vw;max-width:450px;box-sizing:border-box;position:relative;-webkit-mask-image:linear-gradient(to bottom, transparent 0%, black var(--mynah-sizing-6), black calc(100% - var(--mynah-sizing-6)), transparent 100%);-webkit-mask-size:100% 100%;mask-image:linear-gradient(to bottom, transparent 0%, black var(--mynah-sizing-6), black calc(100% - var(--mynah-sizing-6)), transparent 100%);mask-size:100% 100%;padding:var(--mynah-sizing-3);gap:var(--mynah-sizing-3)}.mynah-search-history-items-wrapper>.mynah-search-history-button{flex-shrink:0;height:auto;min-height:var(--mynah-sizing-14);background-color:transparent;border:1px solid var(--mynah-color-bg);color:var(--mynah-color-text-default);border-radius:var(--mynah-button-radius);padding:var(--mynah-sizing-3)}.mynah-search-history-items-wrapper>.mynah-search-history-button,.mynah-search-history-items-wrapper>.mynah-search-history-button:active{box-shadow:none}.mynah-search-history-items-wrapper>.mynah-search-history-button:active:after{opacity:.1}.mynah-search-history-items-wrapper>.mynah-search-history-button>span{text-align:left;max-width:initial;width:100%;overflow:hidden;display:flex}.mynah-search-history-items-wrapper>.mynah-search-history-button>span>.mynah-search-history-button-label{width:100%;display:flex;flex-flow:row nowrap;gap:var(--mynah-sizing-3);justify-content:flex-start;align-items:center;overflow:hidden}.mynah-search-history-items-wrapper>.mynah-search-history-button>span>.mynah-search-history-button-label>.mynah-search-history-trigger-icon{display:flex;justify-content:center;align-items:center;width:var(--mynah-sizing-5);height:var(--mynah-sizing-5);font-size:var(--mynah-font-size-medium)}.mynah-search-history-items-wrapper>.mynah-search-history-button>span>.mynah-search-history-button-label>.mynah-search-history-trigger-icon>i{opacity:.2}.mynah-search-history-items-wrapper>.mynah-search-history-button>span>.mynah-search-history-button-label>.mynah-search-history-trigger-icon>img{opacity:.5;width:var(--mynah-sizing-4);height:var(--mynah-sizing-4)}.mynah-search-history-items-wrapper>.mynah-search-history-button>span>.mynah-search-history-button-label>.mynah-search-history-title-wrapper{display:flex;flex-flow:column nowrap;align-items:flex-start;justify-content:center;flex:1;overflow:hidden;color:var(--mynah-color-text-weak);gap:var(--mynah-sizing-1)}.mynah-search-history-items-wrapper>.mynah-search-history-button>span>.mynah-search-history-button-label>.mynah-search-history-title-wrapper>h3{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0;color:var(--mynah-color-text-default)}.mynah-search-history-items-wrapper>.mynah-search-history-button>span>.mynah-search-history-button-label>.mynah-search-history-item-context-wrapper{display:inline-block;flex-grow:0}.mynah-search-history-items-wrapper>.mynah-search-history-button>span>.mynah-search-history-button-label>.mynah-search-history-item-context-wrapper>.mynah-context-pill{transform:translate3d(0px, 0px, 0px) scale(0.74);margin-left:calc(-1*var(--mynah-sizing-1));display:inline-block;transform-origin:center right}.mynah-search-history-items-wrapper>.mynah-search-history-button>span>.mynah-search-history-button-label>.mynah-search-history-item-context-wrapper>.mynah-context-pill,.mynah-search-history-items-wrapper>.mynah-search-history-button>span>.mynah-search-history-button-label>.mynah-search-history-item-context-wrapper>.mynah-context-pill *{pointer-events:none}.mynah-search-history-items-wrapper>.mynah-search-history-button>span>.mynah-search-history-button-label>.mynah-search-history-item-context-wrapper>.mynah-context-pill>.mynah-context-checkbox-label{padding:0;display:flex;justify-content:center;text-decoration:none}.mynah-search-history-items-wrapper>.mynah-search-history-button>span>.mynah-search-history-button-label>.mynah-search-history-item-context-wrapper>.mynah-context-pill>.mynah-context-checkbox-label:before{display:none}.mynah-search-history-items-wrapper>.mynah-search-history-button>span>.mynah-search-history-button-label>.mynah-search-history-item-context-wrapper>.mynah-context-pill>.mynah-context-checkbox-label>span{width:var(--mynah-sizing-4);overflow:visible;text-align:center}.pointer{cursor:pointer}.mynah-context-checkbox{display:none}.mynah-context-pill{position:relative;order:10;overflow:visible;transition:z-index 1ms 75ms linear;z-index:1}.mynah-context-pill>.mynah-prioritise-button{position:absolute;z-index:1;top:0;transform-origin:center center;transform:translate3d(0, 0, 0);opacity:0;transition:var(--mynah-very-short-transition);pointer-events:none;min-width:0;width:var(--mynah-sizing-8);height:var(--mynah-sizing-8);right:calc(-1*var(--mynah-sizing-base));background-color:inherit;color:inherit;white-space:nowrap;border:var(--mynah-button-border-width) solid currentColor}.mynah-context-pill>.mynah-prioritise-button *{pointer-events:none}.mynah-context-pill:before{content:\\\"\\\";position:absolute;left:0;width:calc(100% + var(--mynah-sizing-9));top:calc(-1*var(--mynah-sizing-base));height:var(--mynah-sizing-10);opacity:0;pointer-events:none}.mynah-context-pill:hover>.mynah-prioritise-button{opacity:1}.mynah-context-pill.keep-active>.mynah-prioritise-button{opacity:1}.mynah-context-pill.keep-active,.mynah-context-pill:hover{transition-delay:1ms;z-index:1000}.mynah-context-pill.keep-active:before,.mynah-context-pill:hover:before{opacity:1;pointer-events:all}.mynah-context-pill.keep-active>.mynah-prioritise-button,.mynah-context-pill:hover>.mynah-prioritise-button{transform:translate3d(var(--mynah-sizing-8), 0, 0);pointer-events:all}.mynah-context-pill.keep-active>.mynah-context-checkbox-label:after,.mynah-context-pill:hover>.mynah-context-checkbox-label:after{opacity:1 !important}.mynah-context-pill.mynah-must-contain{order:10}.mynah-context-pill.mynah-must-contain>.mynah-context-checkbox-label{cursor:default}.mynah-context-pill.mynah-must-contain>.mynah-prioritise-button,.mynah-context-pill.mynah-must-contain>.mynah-context-checkbox-label{background:var(--mynah-color-context-must-contain);color:var(--mynah-color-context-reverse)}.mynah-context-pill.mynah-must-contain>.mynah-prioritise-button:before,.mynah-context-pill.mynah-must-contain>.mynah-context-checkbox-label:before{content:\\\"\\\";position:absolute;top:0;left:0;width:100%;height:100%;backdrop-filter:brightness(var(--mynah-color-context-filter))}.mynah-context-pill.mynah-must-contain>.mynah-prioritise-button:after,.mynah-context-pill.mynah-must-contain>.mynah-context-checkbox-label:after{opacity:.5}.mynah-context-pill.mynah-should-contain{order:20}.mynah-context-pill.mynah-should-contain>.mynah-prioritise-button,.mynah-context-pill.mynah-should-contain>.mynah-context-checkbox-label{background:var(--mynah-color-context-should-contain);color:var(--mynah-color-context-reverse)}.mynah-context-pill.mynah-should-contain>.mynah-prioritise-button:before,.mynah-context-pill.mynah-should-contain>.mynah-context-checkbox-label:before{content:\\\"\\\";position:absolute;top:0;left:0;width:100%;height:100%;backdrop-filter:brightness(var(--mynah-color-context-filter))}.mynah-context-pill.mynah-should-contain>.mynah-prioritise-button>span,.mynah-context-pill.mynah-should-contain>.mynah-context-checkbox-label>span{opacity:.75}.mynah-context-pill.mynah-must-not-contain{order:30}.mynah-context-pill.mynah-must-not-contain>.mynah-context-checkbox-label{cursor:default}.mynah-context-pill.mynah-must-not-contain>.mynah-prioritise-button,.mynah-context-pill.mynah-must-not-contain>.mynah-context-checkbox-label{background:var(--mynah-color-context-must-not-contain);color:var(--mynah-color-context-reverse);text-decoration:line-through;font-style:italic}.mynah-context-pill.mynah-must-not-contain>.mynah-prioritise-button>span,.mynah-context-pill.mynah-must-not-contain>.mynah-context-checkbox-label>span{opacity:.5}.mynah-context-checkbox-label{cursor:pointer;z-index:10;background:var(--mynah-color-context-should-contain);color:var(--mynah-color-context-reverse);padding:var(--mynah-sizing-2) var(--mynah-sizing-4) var(--mynah-sizing-2) var(--mynah-sizing-4);font-size:var(--mynah-font-size-small);font-family:sans-serif;font-weight:bold;border-radius:var(--mynah-button-radius);position:relative;overflow:hidden;display:inline-flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;transition:var(--mynah-short-transition);height:var(--mynah-sizing-8);max-height:var(--mynah-sizing-8);min-width:var(--mynah-sizing-6);box-sizing:border-box;user-select:none}.mynah-context-checkbox-label>*:not(.filter-remove-button){pointer-events:none}.mynah-context-checkbox-label>i{font-size:var(--mynah-font-size-medium);margin-left:calc(-1*var(--mynah-sizing-2));margin-right:var(--mynah-sizing-base)}.mynah-context-checkbox-label.before-remove,.mynah-context-checkbox-label.before-remove *{pointer-events:none !important}.mynah-context-checkbox-label *{user-select:none}.mynah-context-checkbox-label.hidden{display:none}.mynah-context-checkbox-label>*{z-index:5;position:relative}.mynah-context-checkbox-label>.filter-remove-button{font-size:var(--mynah-font-size-medium);pointer-events:all;transition:var(--mynah-very-short-transition);transform-origin:center center;margin-right:calc(var(--mynah-sizing-3)*-1);margin-left:var(--mynah-sizing-half);position:relative;box-sizing:border-box;width:var(--mynah-sizing-6);height:var(--mynah-sizing-6);display:flex;justify-content:center;align-items:center;cursor:pointer}.mynah-context-checkbox-label>.filter-remove-button:before{content:\\\"\\\";position:absolute;background-color:currentColor;transition:var(--mynah-short-transition);transform:translate3d(0, 0, 0) scale(0.5);opacity:0;top:var(--mynah-sizing-half);left:var(--mynah-sizing-half);width:var(--mynah-sizing-5);height:var(--mynah-sizing-5);box-sizing:border-box}.mynah-context-checkbox-label>.filter-remove-button>i{transition:var(--mynah-short-transition);transform:translate3d(0, 0, 0) scale(0.85)}.mynah-context-checkbox-label>.filter-remove-button:hover:before{opacity:.15;transform:translate3d(0, 0, 0) scale(1)}.mynah-context-checkbox-label>.filter-remove-button:hover>i{transform:translate3d(0, 0, 0) scale(1)}.mynah-context-checkbox-label:after{pointer-events:none;content:\\\"\\\";transition:var(--mynah-short-transition-rev);position:absolute;top:0;right:0;bottom:0;left:0;width:auto;height:auto;z-index:10;border-radius:var(--mynah-button-radius);border:var(--mynah-button-border-width) solid currentColor;opacity:.15}.mynah-context-checkbox-label#add-new-context{order:0;justify-content:center;font-size:var(--mynah-font-size-large);width:auto;max-width:100%;transition:var(--mynah-very-short-transition);flex:0 0 auto;min-width:90px}.mynah-context-checkbox-label#add-new-context.shake{border:1px solid rgba(0,0,0,0);animation:shake 700ms cubic-bezier(0.25, 0.5, 0, 1) backwards}.mynah-context-checkbox-label#add-new-context.context-insertion-activated{width:auto !important;pointer-events:none}.mynah-context-checkbox-label#add-new-context.context-insertion-activated:before{content:\\\"\\\";position:absolute;top:0;left:0;width:100%;height:100%;backdrop-filter:brightness(var(--mynah-color-context-filter))}.mynah-context-checkbox-label#add-new-context.context-insertion-activated>.add-new-context-label,.mynah-context-checkbox-label#add-new-context.context-insertion-activated>i{display:none}.mynah-context-checkbox-label#add-new-context:not(.context-insertion-activated){background-color:transparent;color:inherit;opacity:.65}.mynah-context-checkbox-label#add-new-context:not(.context-insertion-activated)>.context-text-input{width:0px;opacity:0;padding:0}.mynah-context-checkbox-label#add-new-context:not(.context-insertion-activated)>.context-text-input+span{display:none}.mynah-context-checkbox-label#add-new-context>.add-new-context-label{font-size:var(--mynah-font-size-small);font-weight:normal;margin-left:var(--mynah-sizing-3);white-space:nowrap;text-overflow:ellipsis}.mynah-context-checkbox-label#add-new-context>i{margin-right:calc(var(--mynah-sizing-2)*-1)}.mynah-context-checkbox-label#add-new-context>.context-text-input{position:absolute;top:0;left:var(--mynah-sizing-4);width:calc(100% - var(--mynah-sizing-8));height:100%;box-sizing:border-box;background-color:transparent;overflow:hidden;opacity:1;pointer-events:all;display:inline-flex;flex-wrap:nowrap;align-items:center;border:none;outline:none;font-size:var(--mynah-font-size-small);font-family:sans-serif;font-weight:bold;color:var(--mynah-color-context-reverse)}.mynah-context-checkbox-label#add-new-context>.context-text-input::placeholder{color:var(--mynah-color-context-reverse);opacity:.5;font-weight:normal}.mynah-context-checkbox-label#add-new-context>.context-text-input+span{font-size:var(--mynah-font-size-small);font-family:sans-serif;font-weight:bold;color:rgba(0,0,0,0);user-select:none;pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:clip;box-sizing:border-box;display:inline;margin-right:var(--mynah-sizing-1)}.mynah-prioritization-menu-buttons-container{display:inline-flex;flex-flow:column nowrap;align-items:stretch;justify-content:flex-start;gap:var(--mynah-sizing-2);padding:var(--mynah-sizing-4) var(--mynah-sizing-3) var(--mynah-sizing-4) var(--mynah-sizing-3);overflow:hidden;position:relative}.mynah-prioritization-menu-buttons-container>.mynah-prioritise-button{width:auto;transition:var(--mynah-long-transition);padding-left:var(--mynah-sizing-3);padding-right:var(--mynah-sizing-3);font-size:var(--mynah-font-size-small);white-space:nowrap;text-overflow:ellipsis;justify-content:flex-start;overflow:hidden;box-shadow:none;background:var(--mynah-color-context-should-contain);color:var(--mynah-color-context-reverse)}.mynah-prioritization-menu-buttons-container>.mynah-prioritise-button>span{padding-left:0}.mynah-prioritization-menu-buttons-container>.mynah-prioritise-button>i{font-size:var(--mynah-font-size-medium);margin-left:calc(-1*var(--mynah-sizing-1))}button.mynah-button{border:none;min-width:var(--mynah-sizing-8);height:var(--mynah-sizing-8);border-radius:var(--mynah-button-radius);background-color:var(--mynah-color-button);color:var(--mynah-color-button-reverse);box-shadow:var(--mynah-shadow-generic);cursor:pointer;transition:var(--mynah-very-short-transition);display:inline-flex;justify-content:center;align-items:center;outline:none;overflow:hidden;position:relative;transform:translate3d(0, 0, 0) scale(1.00001);padding:0}button.mynah-button.mynah-button-secondary{background-color:transparent;color:inherit;box-shadow:none;opacity:.85}button.mynah-button.mynah-button-secondary:focus-visible,button.mynah-button.mynah-button-secondary:hover{background-color:var(--mynah-color-bg)}button.mynah-button.mynah-button-secondary:active{box-shadow:none}button.mynah-button:focus-visible,button.mynah-button:hover{filter:brightness(0.925)}button.mynah-button:active{box-shadow:0 3px 10px -7px var(--mynah-color-button);filter:brightness(0.875)}button.mynah-button.mynah-icon-button{width:var(--mynah-sizing-10);height:var(--mynah-sizing-10)}button.mynah-button>.mynah-mutating-next-icon{width:var(--mynah-sizing-6);height:var(--mynah-sizing-6);transform:translate3d(0, 0, 0) rotateZ(0deg);transition:var(--mynah-short-transition-turbo);transform-origin:center center;display:inline-flex;flex-flow:row nowrap;box-sizing:border-box;overflow:hidden;justify-content:center;align-items:center}button.mynah-button>.mynah-mutating-next-icon>i{font-size:var(--mynah-font-size-xlarge)}button.mynah-button>.mynah-mutating-next-icon>i.mynah-loading-spinner{min-width:var(--mynah-sizing-5);min-height:var(--mynah-sizing-5);border:3px solid currentColor;opacity:.5;box-sizing:border-box;border-top-color:rgba(0,0,0,0);border-radius:var(--mynah-sizing-5);animation:spin 1s infinite linear}button.mynah-button>.mynah-mutating-next-icon>i:nth-child(2){display:none}button.mynah-button>.mynah-search-history-icon{width:var(--mynah-sizing-6);height:var(--mynah-sizing-6);transform:translate3d(0, 0, 0) rotateZ(0deg);transition:var(--mynah-short-transition-turbo);transform-origin:center center;display:inline-flex;flex-flow:row nowrap;box-sizing:border-box;overflow:hidden;justify-content:center;align-items:center}button.mynah-button>.mynah-search-history-icon>i{font-size:2rem}button.mynah-button>.mynah-search-history-icon>i.mynah-history-icon{min-width:var(--mynah-sizing-5);min-height:var(--mynah-sizing-5);border:3px solid currentColor;opacity:.5;box-sizing:border-box;border-top-color:rgba(0,0,0,0);border-radius:var(--mynah-button-radius);animation:spin 1s infinite linear}button.mynah-button>.mynah-search-history-icon>i:nth-child(2){display:none}button.mynah-button.mynah-button-wait{background-color:var(--mynah-color-light);color:var(--mynah-color-text-default);box-shadow:0 5px 10px -10px var(--mynah-color-light);pointer-events:none}button.mynah-button.mynah-button-wait>.mynah-mutating-next-icon>i:first-child{display:none}button.mynah-button.mynah-button-wait>.mynah-mutating-next-icon>i:nth-child(2){display:block}button.mynah-button>span{white-space:nowrap;font-size:var(--mynah-font-size-small);max-width:35vw;transition:var(--mynah-very-long-transition);overflow:hidden;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;padding-left:var(--mynah-sizing-3);padding-right:var(--mynah-sizing-3)}button.mynah-button>i+span{padding-left:var(--mynah-sizing-base)}.mynah-toggle-container{display:inline-flex;flex-flow:row nowrap;max-width:100%;overflow:hidden;align-items:center;justify-content:center;padding:var(--mynah-sizing-1);position:relative;background:var(--mynah-color-context-should-contain);color:var(--mynah-color-context-reverse);border-radius:var(--mynah-button-radius)}.mynah-toggle-container .mynah-toggle-option{display:none}.mynah-toggle-container .mynah-toggle-option:not(:first-child)+.mynah-toggle-option-label{margin-left:calc(-1*var(--mynah-sizing-1))}.mynah-toggle-container .mynah-toggle-option+.mynah-toggle-option-label{cursor:pointer;position:relative;z-index:100;padding:var(--mynah-sizing-1) var(--mynah-sizing-2) var(--mynah-sizing-1) var(--mynah-sizing-2);border-radius:var(--mynah-button-radius);transition:var(--mynah-short-transition-rev),background-color 1ms 0ms;min-height:var(--mynah-sizing-8);min-width:var(--mynah-sizing-8);box-sizing:border-box;display:inline-flex;overflow:hidden;justify-content:center;align-items:center}.mynah-toggle-container .mynah-toggle-option:checked+.mynah-toggle-option-label{pointer-events:none;color:var(--mynah-color-button-reverse);background-color:var(--mynah-color-button);transition:var(--mynah-short-transition-rev),background-color 1ms 500ms}.mynah-toggle-container .mynah-toggle-option:not(:checked)+.mynah-toggle-option-label{background-color:rgba(0,0,0,0) !important}.mynah-toggle-container>.mynah-toggle-indicator-transitioner{background-color:var(--mynah-color-button);display:inline-block;transition:var(--mynah-short-transition-rev);border-radius:var(--mynah-button-radius);position:absolute;z-index:30;width:var(--mynah-sizing-8);height:var(--mynah-sizing-8);left:calc(-1*var(--mynah-sizing-8));top:calc(50% - var(--mynah-sizing-4))}.mynah-toggle-container>.mynah-toggle-indicator-transitioner.relocate{transition-duration:1ms}.pointer{cursor:pointer}.mynah-history-must-contain{background:var(--mynah-color-context-must-contain)}.mynah-history-should-contain{background:var(--mynah-color-context-should-contain)}.mynah-history-must-not-contain{background:var(--mynah-color-context-must-not-contain)}.mynah-card{text-decoration:none;outline:none;position:relative;transition:var(--mynah-short-transition-rev);padding:var(--mynah-sizing-5);background-color:var(--mynah-color-bg);border-radius:var(--mynah-card-radius);box-sizing:border-box;display:flex;flex-flow:column nowrap;gap:var(--mynah-sizing-3);transform:translate3d(0, 0, 0);flex:auto 0 0;width:100%;border:var(--mynah-button-border-width) solid var(--vscode-editorGroup-border);overflow:visible}.mynah-card:nth-child(0){z-index:5000}.mynah-card:nth-child(1){z-index:4900}.mynah-card:nth-child(2){z-index:4800}.mynah-card:nth-child(3){z-index:4700}.mynah-card:nth-child(4){z-index:4600}.mynah-card:nth-child(5){z-index:4500}.mynah-card:nth-child(6){z-index:4400}.mynah-card:nth-child(7){z-index:4300}.mynah-card:nth-child(8){z-index:4200}.mynah-card:nth-child(9){z-index:4100}.mynah-card:nth-child(10){z-index:4000}.mynah-card:nth-child(11){z-index:3900}.mynah-card:nth-child(12){z-index:3800}.mynah-card:nth-child(13){z-index:3700}.mynah-card:nth-child(14){z-index:3600}.mynah-card:nth-child(15){z-index:3500}.mynah-card:nth-child(16){z-index:3400}.mynah-card:nth-child(17){z-index:3300}.mynah-card:nth-child(18){z-index:3200}.mynah-card:nth-child(19){z-index:3100}.mynah-card:nth-child(20){z-index:3000}.mynah-card:nth-child(21){z-index:2900}.mynah-card:nth-child(22){z-index:2800}.mynah-card:nth-child(23){z-index:2700}.mynah-card:nth-child(24){z-index:2600}.mynah-card:nth-child(25){z-index:2500}.mynah-card:nth-child(26){z-index:2400}.mynah-card:nth-child(27){z-index:2300}.mynah-card:nth-child(28){z-index:2200}.mynah-card:nth-child(29){z-index:2100}.mynah-card:nth-child(30){z-index:2000}.mynah-card:nth-child(31){z-index:1900}.mynah-card:nth-child(32){z-index:1800}.mynah-card:nth-child(33){z-index:1700}.mynah-card:nth-child(34){z-index:1600}.mynah-card:nth-child(35){z-index:1500}.mynah-card:nth-child(36){z-index:1400}.mynah-card:nth-child(37){z-index:1300}.mynah-card:nth-child(38){z-index:1200}.mynah-card:nth-child(39){z-index:1100}.mynah-card:nth-child(40){z-index:1000}.mynah-card:nth-child(41){z-index:900}.mynah-card:nth-child(42){z-index:800}.mynah-card:nth-child(43){z-index:700}.mynah-card:nth-child(44){z-index:600}.mynah-card:nth-child(45){z-index:500}.mynah-card:nth-child(46){z-index:400}.mynah-card:nth-child(47){z-index:300}.mynah-card:nth-child(48){z-index:200}.mynah-card:nth-child(49){z-index:100}.mynah-card:nth-child(50){z-index:0}.mynah-card:before{content:\\\"\\\";background-color:transparent;transition:var(--mynah-short-transition-rev);position:absolute;top:0;left:0;width:100%;height:100%;border-radius:inherit;box-shadow:var(--mynah-shadow-card);pointer-events:none;filter:brightness(50%) saturate(250%) contrast(250%);opacity:.4}.mynah-card:hover:active:before{box-shadow:var(--mynah-shadow-card-more);opacity:.75}.mynah-card>*{z-index:10;position:relative}.mynah-card:after{content:\\\"\\\";pointer-events:none;position:absolute;top:0;right:0;bottom:0;left:0;width:auto;height:auto;background-color:var(--mynah-card-bg);border-radius:inherit;box-sizing:border-box;opacity:0;z-index:0;box-sizing:border-box;transform-origin:center center;transition:var(--mynah-very-short-transition);opacity:.6}.mynah-card:hover:before{border-color:var(--mynah-color-main);box-shadow:var(--mynah-shadow-card-more)}.mynah-card:hover:after{opacity:1}.mynah-card:hover>.mynah-card-header{opacity:1}.mynah-card>.mynah-card-header{display:flex;justify-content:space-between;align-items:center;opacity:.75;transition:var(--mynah-very-short-transition)}.mynah-card>.mynah-card-header>.mynah-source-thumbnail{font-style:normal;font-weight:normal;display:inline-flex;width:var(--mynah-sizing-11);height:var(--mynah-sizing-11);font-variant:normal;text-transform:none;border:1px solid var(--mynah-color-border-default);border-radius:100%;background-size:80%;background-position:center center;background-repeat:no-repeat;margin-right:var(--mynah-sizing-3);align-self:flex-start;box-sizing:border-box}.mynah-card>.mynah-card-header>.mynah-card-title-wrapper{flex:1 1 0;display:flex;flex-flow:column nowrap;align-items:flex-start;gap:var(--mynah-sizing-half);max-width:100%;overflow:hidden;cursor:pointer}.mynah-card>.mynah-card-header>.mynah-card-title-wrapper:hover>.mynah-card-title>.mynah-card-expand-icon{opacity:.75}.mynah-card>.mynah-card-header>.mynah-card-title-wrapper>.mynah-card-title{font-size:var(--mynah-font-size-xlarge);font-weight:700;color:var(--mynah-color-text-strong);width:100%;display:inline-flex;flex-flow:row nowrap;align-items:center;justify-content:flex-start;gap:var(--mynah-sizing-2)}.mynah-card>.mynah-card-header>.mynah-card-title-wrapper>.mynah-card-title>.mynah-card-expand-icon{transition:var(--mynah-short-transition-rev);opacity:0;font-size:var(--mynah-font-size-xsmall);display:inline;padding:var(--mynah-sizing-1);border:1px solid currentColor;border-radius:2px}.mynah-card>.mynah-card-header>.mynah-card-title-wrapper>.mynah-card-url{font-size:var(--mynah-font-size-medium);font-weight:300;color:var(--mynah-color-text-link);white-space:nowrap;text-overflow:ellipsis;text-decoration:none;overflow:hidden;max-width:100%;position:relative;padding-bottom:var(--mynah-sizing-1);display:inline-block;outline:none;transition:var(--mynah-short-transition-rev)}.mynah-card>.mynah-card-header>.mynah-card-title-wrapper>.mynah-card-url:after{content:\\\"\\\";position:relative;display:block;bottom:0;left:0;width:100%;height:1px;border-radius:var(--mynah-sizing-half);background-color:currentColor;transform:translate3d(-30%, 0, 0);transition:var(--mynah-short-transition-rev);opacity:0}.mynah-card>.mynah-card-header>.mynah-card-title-wrapper>.mynah-card-url:hover:after{transform:translate3d(0, 0, 0);opacity:1}.mynah-card>.mynah-card-header>.mynah-card-title-wrapper>.mynah-title-meta-block{display:flex;flex-flow:row nowrap;align-items:center;justify-content:flex-start;gap:var(--mynah-sizing-1);margin-bottom:var(--mynah-sizing-half)}.mynah-card>.mynah-card-header>.mynah-card-title-wrapper>.mynah-title-meta-block:empty{display:none}.mynah-card>.mynah-card-header>.mynah-card-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item{display:inline-flex;flex-flow:row nowrap;align-items:center;justify-content:flex-start;gap:var(--mynah-sizing-1);padding:var(--mynah-sizing-1) var(--mynah-sizing-2) var(--mynah-sizing-1) var(--mynah-sizing-1);border:1px solid var(--mynah-color-border-default);border-radius:var(--mynah-button-radius)}.mynah-card>.mynah-card-header>.mynah-card-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item>.mynah-icon{opacity:.5;font-size:var(--mynah-font-size-medium)}.mynah-card>.mynah-card-header>.mynah-card-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item>.mynah-title-meta-block-item-text{font-size:var(--mynah-font-size-xsmall)}.mynah-card>.mynah-card-header>.mynah-card-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item>.mynah-title-meta-block-item-text::first-letter{text-transform:capitalize}.mynah-card>.mynah-card-header>.mynah-card-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item.approved-answer{background-color:green;color:#fff;border-color:rgba(0,0,0,0)}.mynah-card>.mynah-card-header>.mynah-card-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item.approved-answer>.mynah-icon{opacity:1}.mynah-card>.mynah-card-header.mynah-card-header-with-source-thumbnail+.mynah-card-context-wrapper>.mynah-card-tags{padding-left:var(--mynah-sizing-14)}.mynah-card>.mynah-card-center{border:var(--mynah-button-border-width) solid var(--mynah-border-default);width:100%;color:var(--mynah-color-text-default);flex:1 1 0%;overflow:hidden;line-height:var(--mynah-font-size-large);pointer-events:all;z-index:100;display:flex;flex-flow:column nowrap;gap:var(--mynah-sizing-3)}.mynah-card>.mynah-card-center>*:not(pre){font-size:var(--mynah-font-size-medium)}.mynah-card>.mynah-card-center>.mynah-card-body{flex:1;overflow:hidden;position:relative}.mynah-card>.mynah-card-center>.mynah-card-body>*:first-child{margin-top:0}.mynah-card>.mynah-card-center>.mynah-card-body>*:last-child{margin-bottom:0}.mynah-card>.mynah-card-center>.mynah-card-body *{user-select:text}.mynah-card>.mynah-card-center>.mynah-card-votes-wrapper{display:inline-flex;align-items:center;gap:var(--mynah-sizing-2)}.mynah-card>.mynah-card-center>.mynah-card-votes-wrapper>.mynah-vote-text{color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-xsmall)}.mynah-card>.mynah-card-center>.mynah-card-votes-wrapper>.mynah-card-vote{position:relative;overflow:visible;display:inline-flex;align-items:center;height:var(--mynah-sizing-10);box-sizing:border-box;gap:calc(var(--mynah-sizing-half)*3);border-radius:var(--mynah-sizing-7)}.mynah-card>.mynah-card-center>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-radio{display:none}.mynah-card>.mynah-card-center>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-label{z-index:10;cursor:pointer;font-size:var(--mynah-font-size-small);transition:var(--mynah-short-transition);padding:var(--mynah-sizing-base);width:var(--mynah-sizing-5);height:var(--mynah-sizing-5);display:inline-flex;justify-content:center;align-items:center;border:var(--mynah-button-border-width) solid var(--mynah-color-border-default);border-radius:var(--mynah-sizing-8)}.mynah-card>.mynah-card-center>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-label>*{pointer-events:none}.mynah-card>.mynah-card-center>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-label>i{height:calc(var(--mynah-sizing-6) + var(--mynah-sizing-half))}.mynah-card>.mynah-card-center>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-indicator{pointer-events:none;content:\\\"\\\";transition:var(--mynah-short-transition);position:absolute;border-radius:var(--mynah-sizing-8);top:var(--mynah-sizing-1);left:0;width:var(--mynah-sizing-8);height:var(--mynah-sizing-8);z-index:1;transform-origin:left center;transform:translate3d(calc(var(--mynah-sizing-base) * -1), 0, 0)}.mynah-card>.mynah-card-center>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-up-radio:checked~.mynah-vote-up{color:var(--mynah-color-main-reverse);border-color:transparent}.mynah-card>.mynah-card-center>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-up-radio:checked~.mynah-vote-indicator{transform:translate3d(0, 0, 0);background-color:var(--mynah-color-main);transform:translate3d(0, 0, 0) scale(1);box-shadow:var(--mynah-shadow-generic)}.mynah-card>.mynah-card-center>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-down-radio:checked~.mynah-vote-down{color:var(--mynah-color-alternate-reverse);border-color:transparent}.mynah-card>.mynah-card-center>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-down-radio:checked~.mynah-vote-indicator{transform:translate3d(calc(var(--mynah-sizing-8) + var(--mynah-sizing-half)), 0, 0);background-color:var(--mynah-color-alternate);box-shadow:var(--mynah-shadow-generic)}.mynah-card>.mynah-card-context-wrapper{display:flex;flex-flow:column nowrap;gap:var(--mynah-sizing-6);padding-bottom:var(--mynah-sizing-4);margin-bottom:var(--mynah-sizing-2);border-bottom:1px solid var(--mynah-color-border-default)}.mynah-card>.mynah-card-context-wrapper>.mynah-card-tags{display:inline-flex;flex-wrap:wrap;gap:var(--mynah-sizing-3)}.mynah-card>.mynah-card-context-wrapper>.mynah-card-badges{display:inline-flex;gap:var(--mynah-sizing-3)}.mynah-card>.mynah-card-context-wrapper>.mynah-card-badges:empty{display:none}.mynah-card>.mynah-card-context-wrapper>.mynah-card-badges>div{display:inline-flex;align-items:center;gap:var(--mynah-sizing-base);font-size:var(--mynah-font-size-small);color:var(--mynah-color-text-weak)}.mynah-card>.mynah-card-context-wrapper>.mynah-card-badges>div:not(:last-child){border-right:1px solid var(--mynah-color-border-default);padding-right:var(--mynah-sizing-3)}.mynah-card.mynah-card-skeleton{pointer-events:none !important}.mynah-card.mynah-card-skeleton *{color:rgba(0,0,0,0) !important;pointer-events:none !important}.mynah-card.mynah-card-skeleton i{color:var(--mynah-color-light) !important}.mynah-card.mynah-card-skeleton .mynah-vote-text,.mynah-card.mynah-card-skeleton .mynah-card-title{border-radius:var(--mynah-sizing-base);background-color:var(--mynah-color-light)}.mynah-card.mynah-card-skeleton .mynah-card-url{border-radius:var(--mynah-sizing-base);background-color:var(--mynah-color-text-link);opacity:.15 !important;line-height:.5rem}.mynah-card.mynah-card-skeleton .mynah-card-center p{z-index:0;border-radius:var(--mynah-sizing-base);background-color:var(--mynah-color-light)}.mynah-card.mynah-card-skeleton .mynah-card-center code{background-color:var(--mynah-color-code-text);opacity:.25;line-height:150%}.mynah-card.mynah-card-skeleton .mynah-card-badges span{border-radius:var(--mynah-sizing-base);background-color:var(--mynah-color-light)}.mynah-card.mynah-card-skeleton:last-child{-webkit-mask-image:var(--mynah-mask-image-skeleton);-webkit-mask-size:100% 100%;mask-image:var(--mynah-mask-image-skeleton);mask-size:100% 100%}.mynah-card.mynah-card-skeleton:after{content:\\\"\\\";opacity:1;background-color:var(--mynah-card-bg);transform:translate3d(0, 0, 0);border:none;background-image:linear-gradient(-75deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 30%, rgba(0, 0, 0, 0.05) 50%, rgba(255, 255, 255, 0) 70%, rgba(255, 255, 255, 0) 100%);background-size:500% 500%;animation:glass-reflection 2000ms 1000ms linear infinite}.mynah-card>.mynah-suggestion-from-history-icon{display:none;position:absolute;z-index:7;color:inherit;right:0;top:50%;margin-top:-80px;overflow:hidden;width:120px;height:160px;justify-content:flex-start;align-items:center}.mynah-card>.mynah-suggestion-from-history-icon:after{content:\\\"\\\";position:absolute;left:0;right:0;top:0;bottom:0;width:auto;height:auto;background:linear-gradient(to right, transparent 0%, transparent 25%, var(--mynah-card-bg) 100%);z-index:100;opacity:.5}.mynah-card>.mynah-suggestion-from-history-icon>i{position:relative;z-index:50;min-width:180px;min-height:180px;color:inherit;transform:translate3d(0, 0, 0) rotateZ(45deg);opacity:.035}.mynah-showing-suggestions-from-history .mynah-card>.mynah-suggestion-from-history-icon{display:flex}#mynah-feedback-form-portal{position:absolute;left:50%;top:0;width:100%;height:100%;overflow:visible;box-sizing:border-box;z-index:200000;pointer-events:none;transform:translate3d(-50%, 0, 0);max-width:1024px;color:var(--mynah-color-context-reverse);display:flex;justify-content:center;align-items:flex-end;flex-flow:row nowrap}#mynah-feedback-form-portal.not-revealed>.mynah-feedback-trigger-button{display:none}#mynah-feedback-form-portal>.mynah-feedback-trigger-button{transition:var(--mynah-short-transition-bounce);pointer-events:all;border-bottom-right-radius:0;border-bottom-left-radius:0;cursor:pointer}.mynah-feedback-form{pointer-events:all;box-sizing:border-box;transition:var(--mynah-short-transition-rev);padding:var(--mynah-sizing-4);transform:translate3d(0, 0, 0);border-radius:var(--mynah-card-radius);display:flex;flex-flow:column;gap:var(--mynah-sizing-2);align-items:flex-start;transform-origin:right bottom}.mynah-feedback-form>.mynah-feedback-form-comment{background-color:transparent;padding:var(--mynah-sizing-3);border:1px solid var(--mynah-color-border-default);resize:none;width:250px;max-width:40vw;height:100px;max-height:25vh;border-radius:var(--mynah-sizing-2);font-size:var(--mynah-font-size-small);outline:none;color:var(--mynah-color-text-input)}.mynah-feedback-form>.mynah-feedback-form-comment:disabled{opacity:.25}.mynah-feedback-form>.mynah-feedback-form-comment::placeholder{color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-small)}.mynah-feedback-form>.mynah-feedback-form-stars-container{display:inline-flex;flex-flow:row nowrap}.mynah-feedback-form>.mynah-feedback-form-stars-container>.mynah-feedback-form-star{cursor:pointer;padding-right:var(--mynah-sizing-1);color:var(--mynah-color-light);font-size:1.5rem;transition:var(--mynah-very-short-transition)}.mynah-feedback-form>.mynah-feedback-form-stars-container>.mynah-feedback-form-star>.mynah-icon{transition:var(--mynah-very-short-transition);transform:translate3d(0, 0, 0) scale(0.75)}.mynah-feedback-form>.mynah-feedback-form-stars-container[selected-star]:not(:hover)>:not(.mynah-feedback-form-star.selected~.mynah-feedback-form-star){color:var(--mynah-color-button)}.mynah-feedback-form>.mynah-feedback-form-stars-container[selected-star]:not(:hover)>:not(.mynah-feedback-form-star.selected~.mynah-feedback-form-star)>.mynah-icon{transform:translate3d(0, 0, 0) scale(1)}.mynah-feedback-form>.mynah-feedback-form-stars-container:hover>:not(.mynah-feedback-form-star:hover~.mynah-feedback-form-star){color:var(--mynah-color-button)}.mynah-feedback-form>.mynah-feedback-form-stars-container:hover>:not(.mynah-feedback-form-star:hover~.mynah-feedback-form-star)>.mynah-icon{transform:translate3d(0, 0, 0) scale(1)}.mynah-feedback-form>.mynah-feedback-form-comment,.mynah-feedback-form>.mynah-feedback-form-stars-container{transition:var(--mynah-short-transition-rev);transform-origin:right bottom}.mynah-overlay{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;box-sizing:border-box;pointer-events:none;z-index:1000000}.mynah-overlay.mynah-overlay-dim-outside:before{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--mynah-color-bg);transition:var(--mynah-short-transition-rev-opacity);opacity:.45}.mynah-overlay>.mynah-overlay-container{--overlayLeftPos: 0;--overlayTopPos: 0;--overlayInnerHorizontalOrigin: left;--overlayInnerVerticalOrigin: top;position:absolute;display:block;overflow:visible;border-radius:var(--mynah-card-radius);transform:translate3d(var(--overlayLeftPos), var(--overlayTopPos), 0)}.mynah-overlay>.mynah-overlay-container:before{content:\\\"\\\";background-color:transparent;transition:var(--mynah-short-transition-rev);position:absolute;top:calc(var(--mynah-button-border-width)*-1);left:calc(var(--mynah-button-border-width)*-1);right:calc(var(--mynah-button-border-width)*-1);bottom:calc(var(--mynah-button-border-width)*-1);width:auto;height:auto;pointer-events:none;box-sizing:border-box;opacity:0;border:var(--mynah-button-border-width) solid var(--vscode-editorGroup-border);box-shadow:var(--mynah-shadow-prioritization-menu)}.mynah-overlay>.mynah-overlay-container:after{content:\\\"\\\";position:absolute;width:var(--mynah-sizing-8);height:var(--mynah-sizing-8);left:0;top:0;opacity:0;border:var(--mynah-sizing-4);background-color:var(--mynah-card-bg);border-radius:inherit;transition:var(--mynah-short-transition-rev);transition-delay:20ms}.mynah-overlay>.mynah-overlay-container.horizontal-direction-to-left,.mynah-overlay>.mynah-overlay-container.horizontal-direction-from-end-to-left{--overlayLeftPos: -100%;--overlayInnerHorizontalOrigin: right}.mynah-overlay>.mynah-overlay-container.horizontal-direction-to-left:after,.mynah-overlay>.mynah-overlay-container.horizontal-direction-from-end-to-left:after{left:calc(100% - var(--mynah-sizing-4))}.mynah-overlay>.mynah-overlay-container.horizontal-direction-at-center{--overlayInnerHorizontalOrigin: center;--overlayLeftPos: -50%}.mynah-overlay>.mynah-overlay-container.horizontal-direction-at-center:after{left:calc(50% - var(--mynah-sizing-4))}.mynah-overlay>.mynah-overlay-container.vertical-direction-to-top,.mynah-overlay>.mynah-overlay-container.vertical-direction-from-end-to-top{--overlayTopPos: -100%;--overlayInnerVerticalOrigin: bottom}.mynah-overlay>.mynah-overlay-container.vertical-direction-to-top:after,.mynah-overlay>.mynah-overlay-container.vertical-direction-from-end-to-top:after{top:calc(100% - var(--mynah-sizing-4))}.mynah-overlay>.mynah-overlay-container.vertical-direction-at-center{--overlayInnerVerticalOrigin: center;--overlayTopPos: -50%}.mynah-overlay>.mynah-overlay-container.vertical-direction-at-center:after{top:calc(50% - var(--mynah-sizing-4))}.mynah-overlay>.mynah-overlay-container>.mynah-overlay-inner-container{display:inline-block;overflow:hidden;z-index:10;position:relative;transform:translate3d(0, 0, 0) scale(0.85);transform-origin:var(--overlayInnerHorizontalOrigin) var(--overlayInnerVerticalOrigin);transition:var(--mynah-short-transition-rev)}.mynah-overlay>.mynah-overlay-container:before{transform:translate3d(0, 0, 0) scale(0.85);transition:var(--mynah-short-transition-rev)}.mynah-overlay>.mynah-overlay-container>.mynah-overlay-inner-container,.mynah-overlay>.mynah-overlay-container:before{opacity:0;transition-delay:0ms}.mynah-overlay:not(.mynah-overlay-open),.mynah-overlay:not(.mynah-overlay-open) *{pointer-events:none !important}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container>.mynah-overlay-inner-container{transform:translate3d(0, 0, 0) scale(1)}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container:before{transform:translate3d(0, 0, 0) scale(1);transition-delay:50ms;opacity:1}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container>.mynah-overlay-inner-container{transition-delay:20ms}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container>.mynah-overlay-inner-container{opacity:1}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container:after{transition-delay:0ms;left:0;top:0;width:100%;height:100%;opacity:1}.mynah-overlay.mynah-overlay-open.mynah-overlay-close-on-outside-click{pointer-events:all}.mynah-notification{display:inline-flex;flex-flow:row nowrap;align-items:flex-start;justify-content:flex-start;gap:var(--mynah-sizing-3);padding:var(--mynah-sizing-5);overflow:hidden;position:relative}.mynah-notification.mynah-notification-clickable{pointer-events:all;cursor:pointer}.mynah-notification>.mynah-icon{font-size:var(--mynah-sizing-6)}.mynah-notification>.mynah-icon-ok-circled{color:var(--mynah-color-status-success)}.mynah-notification>.mynah-icon-info{color:var(--mynah-color-status-info)}.mynah-notification>.mynah-icon-warning{color:var(--mynah-color-status-warning)}.mynah-notification>.mynah-icon-error{color:var(--mynah-color-status-error)}.mynah-notification>.mynah-notification-container{flex:1;max-width:50vw;min-width:200px;display:inline-flex;flex-flow:column nowrap;align-items:flex-start;justify-content:flex-start;gap:var(--mynah-sizing-3);overflow:hidden;position:relative}.mynah-notification>.mynah-notification-container>.mynah-notification-title{margin:0}.mynah-notification>.mynah-notification-container>.mynah-notification-title:empty{display:none}.mynah-notification>.mynah-notification-container>.mynah-notification-content{font-size:var(--mynah-font-size-small);display:flex;flex-flow:column nowrap;justify-content:flex-start;align-items:flex-start;gap:var(--mynah-sizing-2)}.mynah-notification>.mynah-notification-container>.mynah-notification-content>.mynah-button{align-self:stretch;background-color:var(--mynah-color-alternate);color:var(--mynah-color-alternate-reverse)}.mynah-autocomplete-items-wrapper{display:flex;flex-flow:column nowrap;max-height:50vh;overflow-x:hidden;overflow-y:auto;--mynah-autocomplete-side-spacings: calc( var(--mynah-sizing-12) + var(--mynah-sizing-10) + var(--mynah-sizing-12) + var(--mynah-sizing-12) );width:calc(100vw - var(--mynah-autocomplete-side-spacings));max-width:calc(1024px - var(--mynah-autocomplete-side-spacings));box-sizing:border-box;position:relative;-webkit-mask-image:linear-gradient(to bottom, transparent 0%, black var(--mynah-sizing-6), black calc(100% - var(--mynah-sizing-6)), transparent 100%);-webkit-mask-size:100% 100%;mask-image:linear-gradient(to bottom, transparent 0%, black var(--mynah-sizing-6), black calc(100% - var(--mynah-sizing-6)), transparent 100%);mask-size:100% 100%;padding-top:var(--mynah-sizing-3);padding-bottom:var(--mynah-sizing-3)}.mynah-autocomplete-items-wrapper.make-items-as-ghost,.mynah-autocomplete-items-wrapper.make-items-as-ghost *{pointer-events:none !important}.mynah-autocomplete-items-wrapper>.mynah-autocomplete-button{pointer-events:all;flex-shrink:0;height:auto;min-height:var(--mynah-sizing-7);padding:var(--mynah-sizing-3);background-color:transparent;border-radius:0%;color:var(--mynah-color-text-default)}.mynah-autocomplete-items-wrapper>.mynah-autocomplete-button,.mynah-autocomplete-items-wrapper>.mynah-autocomplete-button:active{box-shadow:none}.mynah-autocomplete-items-wrapper>.mynah-autocomplete-button:active:after{opacity:.1}.mynah-autocomplete-items-wrapper>.mynah-autocomplete-button:hover{background-color:var(--mynah-color-bg)}.mynah-autocomplete-items-wrapper>.mynah-autocomplete-button>span{text-align:left;max-width:initial;width:100%;overflow:hidden;display:flex}.mynah-autocomplete-items-wrapper>.mynah-autocomplete-button>span>.mynah-autocomplete-button-label{width:100%;display:flex;flex-flow:row nowrap;gap:var(--mynah-sizing-3);justify-content:flex-start;align-items:center;overflow:hidden}.mynah-autocomplete-items-wrapper>.mynah-autocomplete-button>span>.mynah-autocomplete-button-label>.mynah-autocomplete-title-wrapper{display:flex;flex-flow:column nowrap;align-items:flex-start;justify-content:center;flex:1;overflow:hidden;color:var(--mynah-color-text-weak);gap:var(--mynah-sizing-1)}.mynah-autocomplete-items-wrapper>.mynah-autocomplete-button>span>.mynah-autocomplete-button-label>.mynah-autocomplete-title-wrapper>h3{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0;color:var(--mynah-color-text-default)}.mynah-autocomplete-items-wrapper>.mynah-autocomplete-button>span>.mynah-autocomplete-button-label>.mynah-autocomplete-title-wrapper>.autocomplete{font-weight:normal}.mynah-autocomplete-items-wrapper:not(:hover)>.mynah-autocomplete-button.hover{background-color:var(--mynah-color-bg)}.pointer{cursor:pointer}.mynah-syntax-highlighter{display:block;box-sizing:border-box;overflow:hidden;margin:0;border:1px solid var(--mynah-color-border-default);position:relative}.mynah-syntax-highlighter:before{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--vscode-terminal-dropBackground);opacity:.12;pointer-events:none;user-select:none}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons{justify-content:flex-end;display:flex;padding:var(--mynah-sizing-1);z-index:10}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons .mynah-button{font-size:var(--mynah-sizing-5);color:var(--mynah-color-button)}.mynah-syntax-highlighter:hover>.mynah-syntax-highlighter-copy-buttons{opacity:1}.mynah-syntax-highlighter>pre{padding:var(--mynah-sizing-3);margin:0;overflow-x:auto;overflow-y:hidden;position:relative}.mynah-syntax-highlighter>pre *,.mynah-syntax-highlighter>pre{font-size:var(--vscode-editor-font-size) !important;font-family:var(--vscode-editor-font-family) !important}.mynah-syntax-highlighter>pre>code{color:var(--vscode-terminal-ansiBlue);filter:brightness(0.95);white-space:pre}.mynah-syntax-highlighter>pre .amzn-mynah-search-result-highlight{background-color:var(--mynah-color-highlight);color:var(--mynah-color-highlight-text)}.mynah-syntax-highlighter>pre>code,.mynah-syntax-highlighter>pre{text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;tab-size:4;hyphens:none}.mynah-syntax-highlighter>pre>code::selection,.mynah-syntax-highlighter>pre::selection{text-shadow:none;background:#b3d4fc}.mynah-syntax-highlighter>pre .token.comment,.mynah-syntax-highlighter>pre .token.prolog,.mynah-syntax-highlighter>pre .token.doctype,.mynah-syntax-highlighter>pre .token.cdata{color:var(--vscode-debugConsole-sourceForeground)}.mynah-syntax-highlighter>pre .token.punctuation{color:currentColor}.mynah-syntax-highlighter>pre .token.namespace{opacity:.7}.mynah-syntax-highlighter>pre .token.property,.mynah-syntax-highlighter>pre .token.tag,.mynah-syntax-highlighter>pre .token.boolean,.mynah-syntax-highlighter>pre .token.number,.mynah-syntax-highlighter>pre .token.constant,.mynah-syntax-highlighter>pre .token.symbol,.mynah-syntax-highlighter>pre .token.deleted{color:var(--vscode-terminal-ansiCyan)}.mynah-syntax-highlighter>pre .token.selector,.mynah-syntax-highlighter>pre .token.attr-name,.mynah-syntax-highlighter>pre .token.string,.mynah-syntax-highlighter>pre .token.char,.mynah-syntax-highlighter>pre .token.builtin,.mynah-syntax-highlighter>pre .token.inserted{color:var(--vscode-debugTokenExpression-string)}.mynah-syntax-highlighter>pre .token.operator,.mynah-syntax-highlighter>pre .token.entity,.mynah-syntax-highlighter>pre .token.url,.mynah-syntax-highlighter>pre .language-css .token.string,.mynah-syntax-highlighter>pre .style .token.string{color:var(--vscode-debugTokenExpression-name)}.mynah-syntax-highlighter>pre .token.atrule,.mynah-syntax-highlighter>pre .token.attr-value,.mynah-syntax-highlighter>pre .token.keyword{color:var(--vscode-debugIcon-stepBackForeground)}.mynah-syntax-highlighter>pre .token.class-name{color:var(--vscode-debugIcon-stepBackForeground)}.mynah-syntax-highlighter>pre .token.function{color:var(--vscode-gitDecoration-modifiedResourceForeground)}.mynah-syntax-highlighter>pre .token.regex,.mynah-syntax-highlighter>pre .token.important,.mynah-syntax-highlighter>pre .token.variable{color:var(--vscode-debugTokenExpression-name)}.mynah-syntax-highlighter>pre .token.important,.mynah-syntax-highlighter>pre .token.bold{font-weight:bold}.mynah-syntax-highlighter>pre .token.italic{font-style:italic}.mynah-syntax-highlighter>pre .token.entity{cursor:help}.mynah-syntax-highlighter>pre.line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber;position:relative}.mynah-syntax-highlighter>pre>.line-numbers-rows{position:absolute;top:var(--mynah-sizing-2);font-size:100%;left:0;width:var(--mynah-sizing-12);overflow:hidden;text-overflow:clip;letter-spacing:-1px;border-right:1px solid var(--mynah-color-border-default)}.mynah-syntax-highlighter>pre>.line-numbers-rows>span,.mynah-syntax-highlighter>pre>.line-numbers-rows{pointer-events:none;user-select:none}.mynah-syntax-highlighter>pre>.line-numbers-rows>span{display:block;color:var(--mynah-color-border-default);padding-right:.8em;text-align:right}body,html{background-color:var(--mynah-color-bg);height:100%;width:100%;overflow:hidden;margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-weight:600;color:var(--mynah-color-text-strong)}::-webkit-scrollbar{width:3px;height:3px;opacity:.5}*:focus{outline:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/styles/_variables.scss\",\"webpack://./src/styles/_animations.scss\",\"webpack://./src/styles/components/_main-container.scss\",\"webpack://./src/styles/components/_search-block.scss\",\"webpack://./src/styles/_mixins.scss\",\"webpack://./src/styles/components/_search-history.scss\",\"webpack://./src/styles/components/_context-pill.scss\",\"webpack://./src/styles/components/_prioritization-menu.scss\",\"webpack://./src/styles/components/_button.scss\",\"webpack://./src/styles/components/_toggle.scss\",\"webpack://./src/styles/components/_card.scss\",\"webpack://./src/styles/components/_feedback-form.scss\",\"webpack://./src/styles/components/_overlay.scss\",\"webpack://./src/styles/components/_notification.scss\",\"webpack://./src/styles/components/_autocomplete.scss\",\"webpack://./src/styles/components/_syntax-highlighter.scss\",\"webpack://./src/styles/styles.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\":root {\\n font-size: var(--vscode-editor-font-size);\\n font-family: var(--vscode-editor-font-family);\\n\\n --mynah-sizing-base: 3px;\\n --mynah-sizing-half: calc(var(--mynah-sizing-base) / 2);\\n --mynah-sizing-1: var(--mynah-sizing-base);\\n --mynah-sizing-2: calc(var(--mynah-sizing-base) * 2);\\n --mynah-sizing-3: calc(var(--mynah-sizing-base) * 3);\\n --mynah-sizing-4: calc(var(--mynah-sizing-base) * 4);\\n --mynah-sizing-5: calc(var(--mynah-sizing-base) * 5);\\n --mynah-sizing-6: calc(var(--mynah-sizing-base) * 6);\\n --mynah-sizing-7: calc(var(--mynah-sizing-base) * 7);\\n --mynah-sizing-8: calc(var(--mynah-sizing-base) * 8);\\n --mynah-sizing-9: calc(var(--mynah-sizing-base) * 9);\\n --mynah-sizing-10: calc(var(--mynah-sizing-base) * 10);\\n --mynah-sizing-11: calc(var(--mynah-sizing-base) * 11);\\n --mynah-sizing-12: calc(var(--mynah-sizing-base) * 12);\\n --mynah-sizing-13: calc(var(--mynah-sizing-base) * 13);\\n --mynah-sizing-14: calc(var(--mynah-sizing-base) * 14);\\n --mynah-sizing-15: calc(var(--mynah-sizing-base) * 15);\\n --mynah-sizing-16: calc(var(--mynah-sizing-base) * 16);\\n --mynah-sizing-17: calc(var(--mynah-sizing-base) * 17);\\n --mynah-sizing-18: calc(var(--mynah-sizing-base) * 18);\\n --mynah-button-border-width: 1px;\\n\\n --mynah-color-text-default: var(--vscode-foreground);\\n --mynah-color-text-strong: var(--vscode-input-foreground);\\n --mynah-color-text-weak: var(--vscode-list-deemphasizedForeground);\\n --mynah-color-text-link: var(--vscode-textLink-foreground);\\n --mynah-color-text-input: var(--vscode-input-foreground);\\n\\n --mynah-color-bg: var(--vscode-sideBar-background);\\n --mynah-color-light: rgba(0, 0, 0, 0.05);\\n\\n --mynah-color-deep: var(--vscode-checkbox-background);\\n --mynah-color-deep-reverse: var(--vscode-checkbox-foreground);\\n --mynah-color-border-default: rgba(0, 0, 0, 0.1);\\n --mynah-color-input-bg: var(--vscode-input-background);\\n\\n --mynah-color-highlight: rgba(255, 199, 72, 0.3);\\n --mynah-color-highlight-text: #886411;\\n\\n --mynah-color-context-must-contain: #c7ebce;\\n --mynah-color-context-should-contain: var(--vscode-sideBar-background);\\n --mynah-color-context-must-not-contain: #f3cac7;\\n --mynah-color-context-reverse: rgba(0, 0, 0, 0.5);\\n --mynah-color-context-filter: 0.975;\\n\\n --mynah-color-status-info: var(--vscode-editorInfo-foreground);\\n --mynah-color-status-success: var(--vscode-list-activeSelectionBackground);\\n --mynah-color-status-warning: var(--vscode-editorWarning-foreground);\\n --mynah-color-status-error: var(--vscode-editorError-foreground);\\n\\n --mynah-color-button: var(--vscode-button-background);\\n --mynah-color-button-reverse: var(--vscode-button-foreground);\\n\\n --mynah-color-alternate: var(--vscode-button-secondaryBackground);\\n --mynah-color-alternate-reverse: var(--vscode-button-secondaryForeground);\\n\\n --mynah-color-code-bg: var(--mynah-color-bg);\\n --mynah-color-code-text: var(--vscode-textPreformat-foreground);\\n\\n --mynah-color-main: var(--vscode-button-background);\\n --mynah-color-main-reverse: var(--vscode-button-foreground);\\n\\n --mynah-card-bg: var(--vscode-editor-background);\\n\\n --mynah-shadow-generic: none;\\n --mynah-shadow-card: none;\\n --mynah-shadow-card-more: none;\\n --mynah-shadow-card-active: none;\\n --mynah-shadow-prioritization-menu: 0 10px 20px -10px var(--vscode-editorGroup-border);\\n --mynah-shadow-feedback-form: 0 0px 40px 0px var(--mynah-color-bg);\\n\\n --mynah-font-size-xsmall: 0.75rem;\\n --mynah-font-size-small: 0.825rem;\\n --mynah-font-size-medium: 1rem;\\n --mynah-font-size-large: 1.15rem;\\n --mynah-font-size-xlarge: 1.275rem;\\n\\n --mynah-card-radius: 0;\\n --mynah-button-radius: var(--mynah-sizing-1);\\n\\n --mynah-very-short-transition: all 250ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-short-transition-transform: transform 200ms cubic-bezier(0.85, 0.15, 0, 1);\\n --mynah-long-transition: all 370ms cubic-bezier(0.35, 1, 0.15, 1);\\n --mynah-pretty-long-transition: all 450ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-very-long-transition: all 1250ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-short-transition: all 250ms cubic-bezier(0.85, 0.15, 0, 1);\\n --mynah-short-transition-rev: all 270ms cubic-bezier(0.35, 1, 0, 1);\\n --mynah-short-transition-rev-opacity: opacity 400ms cubic-bezier(0.35, 1, 0, 1);\\n --mynah-short-transition-reflection: all 650ms cubic-bezier(0.25, 1, 0, 1),\\n opacity 500ms 150ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-short-transition-turbo: all 250ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-short-transition-turbo-bounce: all 350ms cubic-bezier(0.25, 1, 0, 1),\\n transform 450ms cubic-bezier(0.25, 4, 0, 1);\\n --mynah-short-transition-bounce: all 500ms cubic-bezier(0.25, 1, 0, 1),\\n transform 700ms cubic-bezier(0.25, 1.75, 0, 1);\\n\\n --mynah-mask-image: linear-gradient(\\n to bottom,\\n black var(--mynah-sizing-8),\\n black calc(100% - var(--mynah-sizing-14)),\\n transparent\\n );\\n --mynah-mask-image-rev: linear-gradient(to bottom, transparent 0%, transparent 80%, black 100%);\\n --mynah-mask-image-main: linear-gradient(\\n to bottom,\\n transparent,\\n black var(--mynah-sizing-6),\\n black calc(100% - var(--mynah-sizing-6)),\\n transparent\\n );\\n --mynah-mask-image-main-rev: linear-gradient(to bottom, black, transparent calc(100% - 2px), transparent);\\n\\n --mynah-mask-image-skeleton: linear-gradient(\\n to bottom,\\n black var(--mynah-sizing-8),\\n black calc(50% - var(--mynah-sizing-14)),\\n transparent\\n );\\n}\\n\",\"@keyframes glass-reflection {\\n 0% {\\n background-position: 100% 50%;\\n }\\n 100% {\\n background-position: 0% 50%;\\n }\\n}\\n\\n@keyframes move-to-middle {\\n 0% {\\n transform: translate3d(-10%, 0, 0);\\n opacity: 0;\\n }\\n 100% {\\n transform: translate3d(0, 0, 0);\\n opacity: 1;\\n }\\n}\\n@keyframes move-to-right {\\n 0% {\\n transform: translate3d(0, 0, 0);\\n opacity: 1;\\n }\\n 100% {\\n transform: translate3d(10%, 0, 0);\\n opacity: 0;\\n }\\n}\\n\\n@keyframes shake {\\n 0% {\\n transform: translate3d(0, 0, 0);\\n border-color: red;\\n }\\n 10% {\\n transform: translate3d(5px, 0, 0);\\n }\\n 20% {\\n transform: translate3d(-5px, 0, 0);\\n }\\n 30% {\\n transform: translate3d(5px, 0, 0);\\n }\\n 40% {\\n transform: translate3d(-5px, 0, 0);\\n }\\n 50% {\\n transform: translate3d(5px, 0, 0);\\n }\\n 60% {\\n transform: translate3d(-5px, 0, 0);\\n }\\n 70% {\\n transform: translate3d(5px, 0, 0);\\n }\\n 80% {\\n transform: translate3d(-5px, 0, 0);\\n }\\n 90% {\\n transform: translate3d(5px, 0, 0);\\n border-color: red;\\n }\\n 100% {\\n transform: translate3d(0, 0, 0);\\n border-color: rgba(0, 0, 0, 0);\\n }\\n}\\n\",\"#mynah-wrapper {\\n display: flex;\\n flex-flow: column nowrap;\\n margin: 0 auto;\\n width: 100%;\\n max-width: 1024px;\\n box-sizing: border-box;\\n height: 100%;\\n padding: var(--mynah-sizing-3) 0 0 0;\\n .context-checkbox {\\n display: none;\\n }\\n\\n .mynah-main {\\n display: block;\\n box-sizing: border-box;\\n flex: 1 1 0;\\n overflow: hidden;\\n position: relative;\\n > .mynah-skeleton-wrapper,\\n > .mynah-cards-wrapper {\\n padding: var(--mynah-sizing-4) 0 var(--mynah-sizing-12) 0;\\n display: flex;\\n flex-flow: column nowrap;\\n gap: var(--mynah-sizing-4);\\n box-sizing: border-box;\\n overflow: hidden;\\n position: relative;\\n height: 100%;\\n }\\n > .mynah-cards-wrapper {\\n overflow-x: hidden;\\n overflow-y: auto;\\n flex: 1 1 0;\\n transition: var(--mynah-long-transition);\\n transform: translate3d(0, 0, 0);\\n opacity: 1;\\n > .mynah-no-suggestion-indicator {\\n display: flex;\\n box-sizing: border-box;\\n opacity: 0.5;\\n width: 100%;\\n padding: var(--mynah-sizing-12);\\n flex-flow: row nowrap;\\n justify-content: center;\\n align-items: flex-start;\\n }\\n }\\n > .mynah-skeleton-wrapper {\\n position: absolute;\\n transition: var(--mynah-long-transition);\\n top: 0;\\n left: 0;\\n margin: 0 auto;\\n width: 100%;\\n height: 100%;\\n z-index: 100;\\n pointer-events: none;\\n transform: translate3d(-10%, 0, 0);\\n opacity: 0;\\n }\\n &.mynah-hide-content {\\n > .mynah-cards-wrapper {\\n animation: move-to-right 750ms cubic-bezier(0.25, 0.5, 0, 1) both;\\n }\\n > .mynah-skeleton-wrapper {\\n pointer-events: all;\\n animation: move-to-middle 750ms cubic-bezier(0.25, 0.5, 0, 1) both;\\n }\\n }\\n &.mynah-show-content {\\n > .mynah-cards-wrapper {\\n animation: move-to-middle 750ms cubic-bezier(0.25, 0.5, 0, 1) both;\\n }\\n > .mynah-skeleton-wrapper {\\n pointer-events: none;\\n transition-delay: 450ms;\\n animation: move-to-right 750ms cubic-bezier(0.25, 0.5, 0, 1) both;\\n }\\n }\\n }\\n}\\n\\n@media screen and (max-width: 1024px) {\\n #mynah-wrapper {\\n padding-top: 0;\\n > .mynah-search-block {\\n border-left: none;\\n border-right: none;\\n border-top: none;\\n }\\n .mynah-main {\\n > .mynah-skeleton-wrapper,\\n > .mynah-cards-wrapper > .mynah-card {\\n border-right: none;\\n border-left: none;\\n }\\n }\\n }\\n}\\n\",\".mynah-search-block {\\n display: inline-flex;\\n flex-flow: row wrap;\\n justify-content: flex-end;\\n background-color: var(--mynah-card-bg);\\n border-radius: var(--mynah-card-radius);\\n box-shadow: var(--mynah-shadow-card);\\n transition: var(--mynah-short-transition-rev);\\n overflow: visible;\\n position: relative;\\n @include background-shadow;\\n border: var(--mynah-button-border-width) solid var(--vscode-editorGroup-border);\\n\\n > .mynah-search-block-header {\\n width: 100%;\\n margin: 1em 1em 0px 0px;\\n display: flex;\\n justify-content: flex-end;\\n\\n > #mynah-feedback-form-container {\\n > .mynah-feedback-trigger-button {\\n transition: var(--mynah-short-transition-bounce);\\n pointer-events: all;\\n border-bottom-right-radius: 0;\\n border-bottom-left-radius: 0;\\n cursor: pointer;\\n }\\n }\\n }\\n\\n > .mnynah-search-block-fold-unfold-button {\\n position: absolute;\\n bottom: 0;\\n left: 50%;\\n margin-left: calc(-1 * var(--mynah-sizing-8) / 2);\\n margin-bottom: calc(-1 * var(--mynah-sizing-8) / 2);\\n width: var(--mynah-sizing-8);\\n height: var(--mynah-sizing-8);\\n min-width: var(--mynah-sizing-8);\\n z-index: 999999;\\n transform: translate3d(0, 0, 0) scale(0.75);\\n opacity: 0;\\n pointer-events: none;\\n transition: var(--mynah-very-short-transition);\\n background-color: var(--mynah-card-bg);\\n color: var(--mynah-color-text-input);\\n border: var(--mynah-button-border-width) solid var(--vscode-editorGroup-border);\\n font-size: var(--mynah-sizing-6);\\n > .mynah-icon {\\n &-up-open {\\n display: inline-flex;\\n }\\n &-down-open {\\n display: none;\\n }\\n }\\n }\\n\\n > .mynah-search-live-toggle-wrapper {\\n display: flex;\\n flex-flow: row nowrap;\\n justify-content: flex-end;\\n align-items: center;\\n gap: var(--mynah-sizing-1);\\n width: 100%;\\n padding: var(--mynah-sizing-3) var(--mynah-sizing-3) 0 0;\\n > .mynah-toggle-container > .mynah-toggle-indicator-transitioner {\\n &:before,\\n &:after {\\n content: '';\\n position: absolute;\\n z-index: 10;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: var(--mynah-color-status-success);\\n opacity: 0.35;\\n border-radius: 100%;\\n transform: translate3d(0, 0, 0) scale(0);\\n transform-origin: center center;\\n pointer-events: none;\\n }\\n }\\n &.flash-toggle > .mynah-toggle-container {\\n overflow: visible;\\n > .mynah-toggle-indicator-transitioner {\\n &:before,\\n &:after {\\n content: '';\\n transform: translate3d(0, 0, 0) scale(8);\\n opacity: 0;\\n transition: var(--mynah-short-transition);\\n transition-duration: 1750ms;\\n }\\n &:before {\\n transform: translate3d(0, 0, 0) scale(10);\\n transition-duration: 2000ms;\\n transition-delay: 200ms;\\n }\\n }\\n }\\n }\\n > .mynah-search-input-wrapper,\\n > .mynah-search-api-help {\\n color: var(--mynah-color-text-input);\\n width: 100%;\\n flex: 1 1 100%;\\n margin: var(--mynah-sizing-4) var(--mynah-sizing-4) 0 var(--mynah-sizing-4);\\n display: flex;\\n }\\n\\n > .mynah-search-api-help {\\n flex-flow: column nowrap;\\n padding: var(--mynah-sizing-half);\\n box-sizing: border-box;\\n border-radius: var(--mynah-card-radius);\\n overflow: hidden;\\n &.hide {\\n display: none;\\n }\\n > .mynah-search-api-help-code-view-wrapper {\\n width: 100%;\\n box-sizing: border-box;\\n overflow: hidden;\\n position: relative;\\n > .mynah-syntax-highlighter > pre {\\n width: 100%;\\n box-sizing: border-box;\\n max-height: 50vh;\\n overflow-x: auto;\\n overflow-y: auto;\\n }\\n }\\n\\n > .mynah-search-api-help-code-view-detail-row {\\n display: flex;\\n flex-flow: row nowrap;\\n width: 100%;\\n align-items: center;\\n gap: var(--mynah-sizing-1);\\n padding: 0 var(--mynah-sizing-3) 0 var(--mynah-sizing-3);\\n &:nth-child(1) {\\n margin-top: var(--mynah-sizing-3);\\n }\\n &:nth-child(2) {\\n margin-bottom: var(--mynah-sizing-3);\\n }\\n > *:nth-child(1) {\\n width: 110px;\\n margin: 0;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n }\\n > *:nth-child(2) {\\n flex: 1 1 0%;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n }\\n }\\n > .mynah-search-api-help-collapser {\\n display: flex;\\n flex-flow: row nowrap;\\n padding: var(--mynah-sizing-2);\\n justify-content: center;\\n align-items: center;\\n font-size: var(--mynah-sizing-6);\\n cursor: pointer;\\n > .mynah-search-api-help-uncollapse-icon {\\n display: none;\\n }\\n > .mynah-search-api-help-collapse-icon {\\n display: inline-flex;\\n }\\n }\\n\\n &.collapsed {\\n > .mynah-search-api-help-code-view-wrapper {\\n cursor: pointer;\\n > .mynah-syntax-highlighter > pre {\\n max-height: var(--mynah-sizing-16);\\n overflow-x: hidden;\\n overflow-y: hidden;\\n }\\n }\\n > .mynah-search-api-help-code-view-detail-row {\\n display: none;\\n }\\n > .mynah-search-api-help-collapser {\\n > .mynah-search-api-help-uncollapse-icon {\\n display: inline-flex;\\n }\\n > .mynah-search-api-help-collapse-icon {\\n display: none;\\n }\\n }\\n }\\n &:not(:empty) + .mynah-search-input-wrapper {\\n margin-top: 0;\\n }\\n }\\n\\n > .mynah-search-input-wrapper {\\n border: 1px solid var(--mynah-color-border-default);\\n padding: var(--mynah-sizing-2);\\n margin-bottom: var(--mynah-sizing-3);\\n border-radius: var(--mynah-card-radius);\\n flex-flow: row nowrap;\\n align-items: center;\\n gap: var(--mynah-sizing-2);\\n > .mynah-logo {\\n width: var(--mynah-sizing-8);\\n height: var(--mynah-sizing-8);\\n opacity: 0.5;\\n }\\n > .mynah-search-input {\\n flex: 1 1 0;\\n border: none;\\n background-color: rgba(0, 0, 0, 0);\\n font-size: var(--mynah-font-size-large);\\n color: var(--mynah-color-text-input);\\n outline: none;\\n width: 100%;\\n &::placeholder {\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-small);\\n }\\n &:not(:placeholder-shown) + span {\\n display: inline-block;\\n }\\n &:placeholder-shown:not(.search-always-active) ~ .mynah-search-button {\\n background-color: var(--mynah-color-light);\\n color: var(--mynah-color-text-default);\\n box-shadow: 0 5px 10px -10px var(--mynah-color-light);\\n pointer-events: none;\\n > * {\\n opacity: 0.5;\\n }\\n }\\n & + span {\\n &:after {\\n content: attr(remaining-chars) '/' attr(max-chars);\\n }\\n display: none;\\n opacity: 0.5;\\n font-size: var(--mynah-font-size-xsmall);\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n color: currentColor;\\n margin-left: var(--mynah-sizing-1);\\n }\\n }\\n }\\n > .mynah-search-block-advanced-control {\\n display: flex;\\n flex-flow: column nowrap;\\n align-items: flex-start;\\n overflow: hidden;\\n width: 100%;\\n padding: 0 var(--mynah-sizing-4) var(--mynah-sizing-4) var(--mynah-sizing-4);\\n transition: var(--mynah-very-short-transition);\\n max-height: 50vh;\\n > .mynah-context-wrapper {\\n display: flex;\\n flex-flow: row wrap;\\n gap: var(--mynah-sizing-2);\\n flex: 1 1 0%;\\n }\\n }\\n\\n &.mynah-search-block-ready-to-fold {\\n > .mnynah-search-block-fold-unfold-button {\\n transform: translate3d(0, 0, 0) scale(1.000001);\\n opacity: 1;\\n pointer-events: all;\\n }\\n &:not(.mynah-search-block-unfold) {\\n > .mnynah-search-block-fold-unfold-button {\\n > .mynah-icon-up-open {\\n display: none;\\n }\\n > .mynah-icon-down-open {\\n display: inline-flex;\\n }\\n }\\n > .mynah-search-block-advanced-control {\\n max-height: 0;\\n opacity: 0.4;\\n -webkit-mask-image: var(--mynah-mask-image-main-rev);\\n -webkit-mask-size: 100% 150%;\\n mask-image: var(--mynah-mask-image-main-rev);\\n mask-size: 100% 200%;\\n > #add-new-context {\\n transform: translate3d(0, calc(-1 * var(--mynah-sizing-10)), 0) scale(0.5) !important;\\n opacity: 0 !important;\\n margin-bottom: calc(-1 * var(--mynah-sizing-10));\\n }\\n }\\n }\\n }\\n}\\n\\n@media screen and (max-width: 1024px) {\\n .mynah-search-block {\\n border-radius: 0;\\n margin: 0;\\n }\\n}\\n\",\"@mixin background-shadow {\\n overflow: visible;\\n &:before {\\n content: '';\\n background-color: transparent;\\n transition: var(--mynah-short-transition-rev);\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n border-radius: inherit;\\n box-shadow: var(--mynah-shadow-card);\\n pointer-events: none;\\n filter: brightness(50%) saturate(250%) contrast(250%);\\n opacity: 0.4;\\n }\\n}\\n\\n@mixin lighten-darken {\\n &:before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n backdrop-filter: brightness(var(--mynah-color-context-filter));\\n }\\n}\\n\\n@mixin list-fader {\\n position: relative;\\n $listFader: linear-gradient(\\n to bottom,\\n transparent 0%,\\n black var(--mynah-sizing-6),\\n black calc(100% - var(--mynah-sizing-6)),\\n transparent 100%\\n );\\n -webkit-mask-image: $listFader;\\n -webkit-mask-size: 100% 100%;\\n mask-image: $listFader;\\n mask-size: 100% 100%;\\n}\\n\",\".mynah-search-history-items-wrapper {\\n display: flex;\\n flex-flow: column nowrap;\\n max-height: 50vh;\\n overflow-x: hidden;\\n overflow-y: auto;\\n width: 70vw;\\n max-width: 450px;\\n box-sizing: border-box;\\n @include list-fader();\\n padding: var(--mynah-sizing-3);\\n gap: var(--mynah-sizing-3);\\n > .mynah-search-history-button {\\n flex-shrink: 0;\\n height: auto;\\n min-height: var(--mynah-sizing-14);\\n background-color: transparent;\\n border: 1px solid var(--mynah-color-bg);\\n color: var(--mynah-color-text-default);\\n border-radius: var(--mynah-button-radius);\\n padding: var(--mynah-sizing-3);\\n &,\\n &:active {\\n box-shadow: none;\\n }\\n &:active:after {\\n opacity: 0.1;\\n }\\n > span {\\n text-align: left;\\n max-width: initial;\\n width: 100%;\\n overflow: hidden;\\n display: flex;\\n > .mynah-search-history-button-label {\\n width: 100%;\\n display: flex;\\n flex-flow: row nowrap;\\n gap: var(--mynah-sizing-3);\\n justify-content: flex-start;\\n align-items: center;\\n overflow: hidden;\\n > .mynah-search-history-trigger-icon {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n width: var(--mynah-sizing-5);\\n height: var(--mynah-sizing-5);\\n font-size: var(--mynah-font-size-medium);\\n > i {\\n opacity: 0.2;\\n }\\n > img {\\n opacity: 0.5;\\n width: var(--mynah-sizing-4);\\n height: var(--mynah-sizing-4);\\n }\\n }\\n > .mynah-search-history-title-wrapper {\\n display: flex;\\n flex-flow: column nowrap;\\n align-items: flex-start;\\n justify-content: center;\\n flex: 1;\\n overflow: hidden;\\n color: var(--mynah-color-text-weak);\\n gap: var(--mynah-sizing-1);\\n > h3 {\\n width: 100%;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n margin: 0;\\n color: var(--mynah-color-text-default);\\n }\\n }\\n > .mynah-search-history-item-context-wrapper {\\n display: inline-block;\\n flex-grow: 0;\\n > .mynah-context-pill {\\n transform: translate3d(0px, 0px, 0px) scale(0.74);\\n margin-left: calc(-1 * var(--mynah-sizing-1));\\n display: inline-block;\\n transform-origin: center right;\\n &,\\n & * {\\n pointer-events: none;\\n }\\n > .mynah-context-checkbox-label {\\n padding: 0;\\n display: flex;\\n justify-content: center;\\n text-decoration: none;\\n &:before {\\n display: none;\\n }\\n > span {\\n width: var(--mynah-sizing-4);\\n overflow: visible;\\n text-align: center;\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n.pointer {\\n cursor: pointer;\\n}\\n\",\".mynah-context-checkbox {\\n display: none;\\n}\\n\\n.mynah-context-pill {\\n position: relative;\\n order: 10;\\n overflow: visible;\\n transition: z-index 1ms 75ms linear;\\n z-index: 1;\\n\\n > .mynah-prioritise-button {\\n position: absolute;\\n z-index: 1;\\n top: 0;\\n transform-origin: center center;\\n transform: translate3d(0, 0, 0);\\n opacity: 0;\\n transition: var(--mynah-very-short-transition);\\n pointer-events: none;\\n min-width: 0;\\n width: var(--mynah-sizing-8);\\n height: var(--mynah-sizing-8);\\n right: calc(-1 * var(--mynah-sizing-base));\\n background-color: inherit;\\n color: inherit;\\n white-space: nowrap;\\n border: var(--mynah-button-border-width) solid currentColor;\\n * {\\n pointer-events: none;\\n }\\n }\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n width: calc(100% + var(--mynah-sizing-9));\\n top: calc(-1 * var(--mynah-sizing-base));\\n height: var(--mynah-sizing-10);\\n opacity: 0;\\n pointer-events: none;\\n }\\n &:hover {\\n > .mynah-prioritise-button {\\n opacity: 1;\\n }\\n }\\n &.keep-active {\\n > .mynah-prioritise-button {\\n opacity: 1;\\n }\\n }\\n &.keep-active,\\n &:hover {\\n transition-delay: 1ms;\\n z-index: 1000;\\n &:before {\\n opacity: 1;\\n pointer-events: all;\\n }\\n > .mynah-prioritise-button {\\n transform: translate3d(var(--mynah-sizing-8), 0, 0);\\n pointer-events: all;\\n }\\n > .mynah-context-checkbox-label {\\n &:after {\\n opacity: 1 !important;\\n }\\n }\\n }\\n\\n &.mynah-must-contain {\\n order: 10;\\n > .mynah-context-checkbox-label {\\n cursor: default;\\n }\\n > .mynah-prioritise-button,\\n > .mynah-context-checkbox-label {\\n background: var(--mynah-color-context-must-contain);\\n color: var(--mynah-color-context-reverse);\\n @include lighten-darken();\\n &:after {\\n opacity: 0.5;\\n }\\n }\\n }\\n &.mynah-should-contain {\\n order: 20;\\n > .mynah-prioritise-button,\\n > .mynah-context-checkbox-label {\\n background: var(--mynah-color-context-should-contain);\\n color: var(--mynah-color-context-reverse);\\n @include lighten-darken();\\n > span {\\n opacity: 0.75;\\n }\\n }\\n }\\n &.mynah-must-not-contain {\\n order: 30;\\n > .mynah-context-checkbox-label {\\n cursor: default;\\n }\\n > .mynah-prioritise-button,\\n > .mynah-context-checkbox-label {\\n background: var(--mynah-color-context-must-not-contain);\\n color: var(--mynah-color-context-reverse);\\n text-decoration: line-through;\\n font-style: italic;\\n > span {\\n opacity: 0.5;\\n }\\n }\\n }\\n}\\n\\n.mynah-context-checkbox-label {\\n cursor: pointer;\\n z-index: 10;\\n background: var(--mynah-color-context-should-contain);\\n color: var(--mynah-color-context-reverse);\\n padding: var(--mynah-sizing-2) var(--mynah-sizing-4) var(--mynah-sizing-2) var(--mynah-sizing-4);\\n font-size: var(--mynah-font-size-small);\\n font-family: sans-serif;\\n font-weight: bold;\\n border-radius: var(--mynah-button-radius);\\n position: relative;\\n overflow: hidden;\\n display: inline-flex;\\n flex-flow: row nowrap;\\n justify-content: flex-start;\\n align-items: center;\\n transition: var(--mynah-short-transition);\\n height: var(--mynah-sizing-8);\\n max-height: var(--mynah-sizing-8);\\n min-width: var(--mynah-sizing-6);\\n box-sizing: border-box;\\n user-select: none;\\n > *:not(.filter-remove-button) {\\n pointer-events: none;\\n }\\n > i {\\n font-size: var(--mynah-font-size-medium);\\n margin-left: calc(-1 * var(--mynah-sizing-2));\\n margin-right: var(--mynah-sizing-base);\\n }\\n &.before-remove,\\n &.before-remove * {\\n pointer-events: none !important;\\n }\\n * {\\n user-select: none;\\n }\\n &.hidden {\\n display: none;\\n }\\n > * {\\n z-index: 5;\\n position: relative;\\n }\\n > .filter-remove-button {\\n font-size: var(--mynah-font-size-medium);\\n pointer-events: all;\\n transition: var(--mynah-very-short-transition);\\n transform-origin: center center;\\n margin-right: calc(var(--mynah-sizing-3) * -1);\\n margin-left: var(--mynah-sizing-half);\\n position: relative;\\n box-sizing: border-box;\\n width: var(--mynah-sizing-6);\\n height: var(--mynah-sizing-6);\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n cursor: pointer;\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n background-color: currentColor;\\n transition: var(--mynah-short-transition);\\n transform: translate3d(0, 0, 0) scale(0.5);\\n opacity: 0;\\n top: var(--mynah-sizing-half);\\n left: var(--mynah-sizing-half);\\n width: var(--mynah-sizing-5);\\n height: var(--mynah-sizing-5);\\n box-sizing: border-box;\\n }\\n > i {\\n transition: var(--mynah-short-transition);\\n transform: translate3d(0, 0, 0) scale(0.85);\\n }\\n &:hover {\\n &:before {\\n opacity: 0.15;\\n transform: translate3d(0, 0, 0) scale(1);\\n }\\n > i {\\n transform: translate3d(0, 0, 0) scale(1);\\n }\\n }\\n }\\n &:after {\\n pointer-events: none;\\n content: \\\"\\\";\\n transition: var(--mynah-short-transition-rev);\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n width: auto;\\n height: auto;\\n z-index: 10;\\n border-radius: var(--mynah-button-radius);\\n border: var(--mynah-button-border-width) solid currentColor;\\n opacity: 0.15;\\n }\\n\\n &#add-new-context {\\n order: 0;\\n justify-content: center;\\n font-size: var(--mynah-font-size-large);\\n width: auto;\\n max-width: 100%;\\n transition: var(--mynah-very-short-transition);\\n flex: 0 0 auto;\\n min-width: 90px;\\n\\n &.shake {\\n border: 1px solid rgba(0, 0, 0, 0);\\n animation: shake 700ms cubic-bezier(0.25, 0.5, 0, 1) backwards;\\n }\\n &.context-insertion-activated {\\n width: auto !important;\\n pointer-events: none;\\n @include lighten-darken();\\n > .add-new-context-label,\\n > i {\\n display: none;\\n }\\n }\\n &:not(.context-insertion-activated) {\\n > .context-text-input {\\n width: 0px;\\n opacity: 0;\\n padding: 0;\\n & + span {\\n display: none;\\n }\\n }\\n background-color: transparent;\\n color: inherit;\\n opacity: 0.65;\\n }\\n > .add-new-context-label {\\n font-size: var(--mynah-font-size-small);\\n font-weight: normal;\\n margin-left: var(--mynah-sizing-3);\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n }\\n > i {\\n margin-right: calc(var(--mynah-sizing-2) * -1);\\n }\\n > .context-text-input {\\n position: absolute;\\n top: 0;\\n left: var(--mynah-sizing-4);\\n width: calc(100% - var(--mynah-sizing-8));\\n height: 100%;\\n box-sizing: border-box;\\n background-color: transparent;\\n overflow: hidden;\\n opacity: 1;\\n pointer-events: all;\\n display: inline-flex;\\n flex-wrap: nowrap;\\n align-items: center;\\n border: none;\\n outline: none;\\n font-size: var(--mynah-font-size-small);\\n font-family: sans-serif;\\n font-weight: bold;\\n color: var(--mynah-color-context-reverse);\\n &::placeholder {\\n color: var(--mynah-color-context-reverse);\\n opacity: 0.5;\\n font-weight: normal;\\n }\\n & + span {\\n font-size: var(--mynah-font-size-small);\\n font-family: sans-serif;\\n font-weight: bold;\\n color: rgba(0, 0, 0, 0);\\n user-select: none;\\n pointer-events: none;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: clip;\\n box-sizing: border-box;\\n display: inline;\\n margin-right: var(--mynah-sizing-1);\\n }\\n }\\n }\\n}\\n\",\".mynah-prioritization-menu-buttons-container {\\n display: inline-flex;\\n flex-flow: column nowrap;\\n align-items: stretch;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-2);\\n padding: var(--mynah-sizing-4) var(--mynah-sizing-3) var(--mynah-sizing-4) var(--mynah-sizing-3);\\n overflow: hidden;\\n position: relative;\\n > .mynah-prioritise-button {\\n width: auto;\\n transition: var(--mynah-long-transition);\\n padding-left: var(--mynah-sizing-3);\\n padding-right: var(--mynah-sizing-3);\\n font-size: var(--mynah-font-size-small);\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n justify-content: flex-start;\\n overflow: hidden;\\n box-shadow: none;\\n background: var(--mynah-color-context-should-contain);\\n color: var(--mynah-color-context-reverse);\\n > span {\\n padding-left: 0;\\n }\\n > i {\\n font-size: var(--mynah-font-size-medium);\\n margin-left: calc(-1 * var(--mynah-sizing-1));\\n }\\n }\\n}\\n\",\"button.mynah-button {\\n border: none;\\n min-width: var(--mynah-sizing-8);\\n height: var(--mynah-sizing-8);\\n border-radius: var(--mynah-button-radius);\\n background-color: var(--mynah-color-button);\\n color: var(--mynah-color-button-reverse);\\n box-shadow: var(--mynah-shadow-generic);\\n cursor: pointer;\\n transition: var(--mynah-very-short-transition);\\n display: inline-flex;\\n justify-content: center;\\n align-items: center;\\n outline: none;\\n overflow: hidden;\\n position: relative;\\n transform: translate3d(0, 0, 0) scale(1.00001);\\n padding: 0;\\n &.mynah-button-secondary {\\n background-color: transparent;\\n color: inherit;\\n box-shadow: none;\\n opacity: 0.85;\\n &:focus-visible,\\n &:hover {\\n background-color: var(--mynah-color-bg);\\n }\\n &:active {\\n box-shadow: none;\\n }\\n }\\n &:focus-visible,\\n &:hover {\\n filter: brightness(0.925);\\n }\\n &:active {\\n box-shadow: 0 3px 10px -7px var(--mynah-color-button);\\n filter: brightness(0.875);\\n }\\n &.mynah-icon-button {\\n width: var(--mynah-sizing-10);\\n height: var(--mynah-sizing-10);\\n }\\n > .mynah-mutating-next-icon {\\n width: var(--mynah-sizing-6);\\n height: var(--mynah-sizing-6);\\n transform: translate3d(0, 0, 0) rotateZ(0deg);\\n transition: var(--mynah-short-transition-turbo);\\n transform-origin: center center;\\n display: inline-flex;\\n flex-flow: row nowrap;\\n box-sizing: border-box;\\n overflow: hidden;\\n justify-content: center;\\n align-items: center;\\n > i {\\n font-size: var(--mynah-font-size-xlarge);\\n &.mynah-loading-spinner {\\n min-width: var(--mynah-sizing-5);\\n min-height: var(--mynah-sizing-5);\\n border: 3px solid currentColor;\\n opacity: 0.5;\\n box-sizing: border-box;\\n border-top-color: rgba(0, 0, 0, 0);\\n border-radius: var(--mynah-sizing-5);\\n animation: spin 1s infinite linear;\\n }\\n &:nth-child(2) {\\n display: none;\\n }\\n }\\n }\\n > .mynah-search-history-icon {\\n width: var(--mynah-sizing-6);\\n height: var(--mynah-sizing-6);\\n transform: translate3d(0, 0, 0) rotateZ(0deg);\\n transition: var(--mynah-short-transition-turbo);\\n transform-origin: center center;\\n display: inline-flex;\\n flex-flow: row nowrap;\\n box-sizing: border-box;\\n overflow: hidden;\\n justify-content: center;\\n align-items: center;\\n > i {\\n font-size: 2rem;\\n &.mynah-history-icon {\\n min-width: var(--mynah-sizing-5);\\n min-height: var(--mynah-sizing-5);\\n border: 3px solid currentColor;\\n opacity: 0.5;\\n box-sizing: border-box;\\n border-top-color: rgba(0, 0, 0, 0);\\n border-radius: var(--mynah-button-radius);\\n animation: spin 1s infinite linear;\\n }\\n &:nth-child(2) {\\n display: none;\\n }\\n }\\n }\\n &.mynah-button-wait {\\n background-color: var(--mynah-color-light);\\n color: var(--mynah-color-text-default);\\n box-shadow: 0 5px 10px -10px var(--mynah-color-light);\\n pointer-events: none;\\n > .mynah-mutating-next-icon > i {\\n &:first-child {\\n display: none;\\n }\\n &:nth-child(2) {\\n display: block;\\n }\\n }\\n }\\n > span {\\n white-space: nowrap;\\n font-size: var(--mynah-font-size-small);\\n max-width: 35vw;\\n transition: var(--mynah-very-long-transition);\\n overflow: hidden;\\n box-sizing: border-box;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n padding-left: var(--mynah-sizing-3);\\n padding-right: var(--mynah-sizing-3);\\n }\\n > i + span {\\n padding-left: var(--mynah-sizing-base);\\n }\\n}\\n\",\".mynah-toggle-container {\\n display: inline-flex;\\n flex-flow: row nowrap;\\n max-width: 100%;\\n overflow: hidden;\\n align-items: center;\\n justify-content: center;\\n padding: var(--mynah-sizing-1);\\n position: relative;\\n background: var(--mynah-color-context-should-contain);\\n color: var(--mynah-color-context-reverse);\\n border-radius: var(--mynah-button-radius);\\n .mynah-toggle-option {\\n display: none;\\n &:not(:first-child) + .mynah-toggle-option-label {\\n margin-left: calc(-1 * var(--mynah-sizing-1));\\n }\\n & + .mynah-toggle-option-label {\\n cursor: pointer;\\n position: relative;\\n z-index: 100;\\n padding: var(--mynah-sizing-1) var(--mynah-sizing-2) var(--mynah-sizing-1) var(--mynah-sizing-2);\\n border-radius: var(--mynah-button-radius);\\n transition: var(--mynah-short-transition-rev), background-color 1ms 0ms;\\n min-height: var(--mynah-sizing-8);\\n min-width: var(--mynah-sizing-8);\\n box-sizing: border-box;\\n display: inline-flex;\\n overflow: hidden;\\n justify-content: center;\\n align-items: center;\\n }\\n &:checked + .mynah-toggle-option-label {\\n pointer-events: none;\\n color: var(--mynah-color-button-reverse);\\n background-color: var(--mynah-color-button);\\n transition: var(--mynah-short-transition-rev), background-color 1ms 500ms;\\n }\\n &:not(:checked) + .mynah-toggle-option-label {\\n background-color: rgba(0, 0, 0, 0) !important;\\n }\\n }\\n > .mynah-toggle-indicator-transitioner {\\n background-color: var(--mynah-color-button);\\n display: inline-block;\\n transition: var(--mynah-short-transition-rev);\\n border-radius: var(--mynah-button-radius);\\n position: absolute;\\n z-index: 30;\\n width: var(--mynah-sizing-8);\\n height: var(--mynah-sizing-8);\\n left: calc(-1 * var(--mynah-sizing-8));\\n top: calc(50% - var(--mynah-sizing-4));\\n &.relocate {\\n transition-duration: 1ms;\\n }\\n }\\n}\\n\",\".pointer {\\n cursor: pointer;\\n}\\n\\n.mynah-history-must-contain {\\n background: var(--mynah-color-context-must-contain);\\n}\\n.mynah-history-should-contain {\\n background: var(--mynah-color-context-should-contain);\\n}\\n.mynah-history-must-not-contain {\\n background: var(--mynah-color-context-must-not-contain);\\n}\\n\\n.mynah-card {\\n @for $i from 0 through 50 {\\n &:nth-child(#{$i}) {\\n z-index: (50 - $i) * 100;\\n }\\n }\\n text-decoration: none;\\n outline: none;\\n position: relative;\\n transition: var(--mynah-short-transition-rev);\\n padding: var(--mynah-sizing-5);\\n background-color: var(--mynah-color-bg);\\n border-radius: var(--mynah-card-radius);\\n box-sizing: border-box;\\n display: flex;\\n flex-flow: column nowrap;\\n gap: var(--mynah-sizing-3);\\n transform: translate3d(0, 0, 0);\\n flex: auto 0 0;\\n width: 100%;\\n border: var(--mynah-button-border-width) solid var(--vscode-editorGroup-border);\\n @include background-shadow;\\n\\n &:hover:active:before {\\n box-shadow: var(--mynah-shadow-card-more);\\n opacity: 0.75;\\n }\\n\\n > * {\\n z-index: 10;\\n position: relative;\\n }\\n &:after {\\n content: \\\"\\\";\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n width: auto;\\n height: auto;\\n background-color: var(--mynah-card-bg);\\n border-radius: inherit;\\n box-sizing: border-box;\\n opacity: 0;\\n z-index: 0;\\n box-sizing: border-box;\\n transform-origin: center center;\\n transition: var(--mynah-very-short-transition);\\n opacity: 0.6;\\n }\\n &:hover {\\n &:before {\\n border-color: var(--mynah-color-main);\\n box-shadow: var(--mynah-shadow-card-more);\\n }\\n &:after {\\n opacity: 1;\\n }\\n > .mynah-card-header {\\n opacity: 1;\\n }\\n }\\n\\n > .mynah-card-header {\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n opacity: 0.75;\\n transition: var(--mynah-very-short-transition);\\n > .mynah-source-thumbnail {\\n font-style: normal;\\n font-weight: normal;\\n display: inline-flex;\\n width: var(--mynah-sizing-11);\\n height: var(--mynah-sizing-11);\\n font-variant: normal;\\n text-transform: none;\\n border: 1px solid var(--mynah-color-border-default);\\n border-radius: 100%;\\n background-size: 80%;\\n background-position: center center;\\n background-repeat: no-repeat;\\n margin-right: var(--mynah-sizing-3);\\n align-self: flex-start;\\n box-sizing: border-box;\\n }\\n > .mynah-card-title-wrapper {\\n flex: 1 1 0;\\n display: flex;\\n flex-flow: column nowrap;\\n align-items: flex-start;\\n gap: var(--mynah-sizing-half);\\n max-width: 100%;\\n overflow: hidden;\\n cursor: pointer;\\n &:hover > .mynah-card-title > .mynah-card-expand-icon {\\n opacity: 0.75;\\n }\\n > .mynah-card-title {\\n font-size: var(--mynah-font-size-xlarge);\\n font-weight: 700;\\n color: var(--mynah-color-text-strong);\\n width: 100%;\\n display: inline-flex;\\n flex-flow: row nowrap;\\n align-items: center;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-2);\\n > .mynah-card-expand-icon {\\n transition: var(--mynah-short-transition-rev);\\n opacity: 0;\\n font-size: var(--mynah-font-size-xsmall);\\n display: inline;\\n padding: var(--mynah-sizing-1);\\n border: 1px solid currentColor;\\n border-radius: 2px;\\n }\\n }\\n > .mynah-card-url {\\n font-size: var(--mynah-font-size-medium);\\n font-weight: 300;\\n color: var(--mynah-color-text-link);\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n text-decoration: none;\\n overflow: hidden;\\n max-width: 100%;\\n position: relative;\\n padding-bottom: var(--mynah-sizing-1);\\n display: inline-block;\\n outline: none;\\n transition: var(--mynah-short-transition-rev);\\n &:after {\\n content: \\\"\\\";\\n position: relative;\\n display: block;\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n height: 1px;\\n border-radius: var(--mynah-sizing-half);\\n background-color: currentColor;\\n transform: translate3d(-30%, 0, 0);\\n transition: var(--mynah-short-transition-rev);\\n opacity: 0;\\n }\\n &:hover {\\n &:after {\\n transform: translate3d(0, 0, 0);\\n opacity: 1;\\n }\\n }\\n }\\n > .mynah-title-meta-block {\\n display: flex;\\n flex-flow: row nowrap;\\n align-items: center;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-1);\\n margin-bottom: var(--mynah-sizing-half);\\n &:empty {\\n display: none;\\n }\\n > .mynah-title-meta-block-item {\\n display: inline-flex;\\n flex-flow: row nowrap;\\n align-items: center;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-1);\\n padding: var(--mynah-sizing-1) var(--mynah-sizing-2) var(--mynah-sizing-1) var(--mynah-sizing-1);\\n border: 1px solid var(--mynah-color-border-default);\\n border-radius: var(--mynah-button-radius);\\n > .mynah-icon {\\n opacity: 0.5;\\n font-size: var(--mynah-font-size-medium);\\n }\\n > .mynah-title-meta-block-item-text {\\n font-size: var(--mynah-font-size-xsmall);\\n &::first-letter {\\n text-transform: capitalize;\\n }\\n }\\n &.approved-answer {\\n background-color: green;\\n color: white;\\n border-color: rgba(0, 0, 0, 0);\\n > .mynah-icon {\\n opacity: 1;\\n }\\n }\\n }\\n }\\n }\\n\\n &.mynah-card-header-with-source-thumbnail + .mynah-card-context-wrapper > .mynah-card-tags {\\n padding-left: var(--mynah-sizing-14);\\n }\\n }\\n > .mynah-card-center {\\n border: var(--mynah-button-border-width) solid var(--mynah-border-default);\\n width: 100%;\\n color: var(--mynah-color-text-default);\\n flex: 1 1 0%;\\n overflow: hidden;\\n line-height: var(--mynah-font-size-large);\\n pointer-events: all;\\n z-index: 100;\\n\\n display: flex;\\n flex-flow: column nowrap;\\n gap: var(--mynah-sizing-3);\\n\\n > *:not(pre) {\\n font-size: var(--mynah-font-size-medium);\\n }\\n\\n > .mynah-card-body {\\n flex: 1;\\n overflow: hidden;\\n position: relative;\\n > *:first-child {\\n margin-top: 0;\\n }\\n > *:last-child {\\n margin-bottom: 0;\\n }\\n * {\\n user-select: text;\\n }\\n }\\n\\n > .mynah-card-votes-wrapper {\\n display: inline-flex;\\n align-items: center;\\n gap: var(--mynah-sizing-2);\\n > .mynah-vote-text {\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-xsmall);\\n }\\n > .mynah-card-vote {\\n position: relative;\\n overflow: visible;\\n display: inline-flex;\\n align-items: center;\\n height: var(--mynah-sizing-10);\\n box-sizing: border-box;\\n gap: calc(var(--mynah-sizing-half) * 3);\\n border-radius: var(--mynah-sizing-7);\\n > .mynah-vote-radio {\\n display: none;\\n }\\n > .mynah-vote-label {\\n z-index: 10;\\n cursor: pointer;\\n font-size: var(--mynah-font-size-small);\\n transition: var(--mynah-short-transition);\\n padding: var(--mynah-sizing-base);\\n width: var(--mynah-sizing-5);\\n height: var(--mynah-sizing-5);\\n display: inline-flex;\\n justify-content: center;\\n align-items: center;\\n border: var(--mynah-button-border-width) solid var(--mynah-color-border-default);\\n border-radius: var(--mynah-sizing-8);\\n > * {\\n pointer-events: none;\\n }\\n > i {\\n height: calc(var(--mynah-sizing-6) + var(--mynah-sizing-half));\\n }\\n }\\n > .mynah-vote-indicator {\\n pointer-events: none;\\n content: \\\"\\\";\\n transition: var(--mynah-short-transition);\\n position: absolute;\\n border-radius: var(--mynah-sizing-8);\\n top: var(--mynah-sizing-1);\\n left: 0;\\n width: var(--mynah-sizing-8);\\n height: var(--mynah-sizing-8);\\n z-index: 1;\\n transform-origin: left center;\\n transform: translate3d(calc(var(--mynah-sizing-base) * -1), 0, 0);\\n }\\n > .mynah-vote-up-radio:checked {\\n & ~ .mynah-vote-up {\\n color: var(--mynah-color-main-reverse);\\n border-color: transparent;\\n }\\n & ~ .mynah-vote-indicator {\\n transform: translate3d(0, 0, 0);\\n background-color: var(--mynah-color-main);\\n transform: translate3d(0, 0, 0) scale(1);\\n box-shadow: var(--mynah-shadow-generic);\\n }\\n }\\n > .mynah-vote-down-radio:checked {\\n & ~ .mynah-vote-down {\\n color: var(--mynah-color-alternate-reverse);\\n border-color: transparent;\\n }\\n & ~ .mynah-vote-indicator {\\n transform: translate3d(calc(var(--mynah-sizing-8) + var(--mynah-sizing-half)), 0, 0);\\n background-color: var(--mynah-color-alternate);\\n box-shadow: var(--mynah-shadow-generic);\\n }\\n }\\n }\\n }\\n }\\n\\n > .mynah-card-context-wrapper {\\n display: flex;\\n flex-flow: column nowrap;\\n gap: var(--mynah-sizing-6);\\n padding-bottom: var(--mynah-sizing-4);\\n margin-bottom: var(--mynah-sizing-2);\\n border-bottom: 1px solid var(--mynah-color-border-default);\\n > .mynah-card-tags {\\n display: inline-flex;\\n flex-wrap: wrap;\\n gap: var(--mynah-sizing-3);\\n }\\n > .mynah-card-badges {\\n display: inline-flex;\\n gap: var(--mynah-sizing-3);\\n &:empty {\\n display: none;\\n }\\n > div {\\n display: inline-flex;\\n align-items: center;\\n gap: var(--mynah-sizing-base);\\n font-size: var(--mynah-font-size-small);\\n color: var(--mynah-color-text-weak);\\n &:not(:last-child) {\\n border-right: 1px solid var(--mynah-color-border-default);\\n padding-right: var(--mynah-sizing-3);\\n }\\n }\\n }\\n }\\n\\n &.mynah-card-skeleton {\\n pointer-events: none !important;\\n * {\\n color: rgba(0, 0, 0, 0) !important;\\n pointer-events: none !important;\\n }\\n i {\\n color: var(--mynah-color-light) !important;\\n }\\n .mynah-vote-text,\\n .mynah-card-title {\\n border-radius: var(--mynah-sizing-base);\\n background-color: var(--mynah-color-light);\\n }\\n .mynah-card-url {\\n border-radius: var(--mynah-sizing-base);\\n background-color: var(--mynah-color-text-link);\\n opacity: 0.15 !important;\\n line-height: 0.5rem;\\n }\\n .mynah-card-center {\\n p {\\n z-index: 0;\\n border-radius: var(--mynah-sizing-base);\\n background-color: var(--mynah-color-light);\\n }\\n code {\\n background-color: var(--mynah-color-code-text);\\n opacity: 0.25;\\n line-height: 150%;\\n }\\n }\\n .mynah-card-badges span {\\n border-radius: var(--mynah-sizing-base);\\n background-color: var(--mynah-color-light);\\n }\\n\\n &:last-child {\\n -webkit-mask-image: var(--mynah-mask-image-skeleton);\\n -webkit-mask-size: 100% 100%;\\n mask-image: var(--mynah-mask-image-skeleton);\\n mask-size: 100% 100%;\\n }\\n\\n &:after {\\n content: \\\"\\\";\\n opacity: 1;\\n background-color: var(--mynah-card-bg);\\n transform: translate3d(0, 0, 0);\\n border: none;\\n background-image: linear-gradient(\\n -75deg,\\n rgba(255, 255, 255, 0) 0%,\\n rgba(255, 255, 255, 0) 30%,\\n rgba(0, 0, 0, 0.05) 50%,\\n rgba(255, 255, 255, 0) 70%,\\n rgba(255, 255, 255, 0) 100%\\n );\\n background-size: 500% 500%;\\n animation: glass-reflection 2000ms 1000ms linear infinite;\\n }\\n }\\n\\n > .mynah-suggestion-from-history-icon {\\n display: none;\\n position: absolute;\\n z-index: 7;\\n color: inherit;\\n right: 0;\\n top: 50%;\\n margin-top: -80px;\\n overflow: hidden;\\n width: 120px;\\n height: 160px;\\n justify-content: flex-start;\\n align-items: center;\\n &:after {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n bottom: 0;\\n width: auto;\\n height: auto;\\n background: linear-gradient(to right, transparent 0%, transparent 25%, var(--mynah-card-bg) 100%);\\n z-index: 100;\\n opacity: 0.5;\\n }\\n > i {\\n position: relative;\\n z-index: 50;\\n min-width: 180px;\\n min-height: 180px;\\n color: inherit;\\n transform: translate3d(0, 0, 0) rotateZ(45deg);\\n opacity: 0.035;\\n }\\n\\n .mynah-showing-suggestions-from-history & {\\n display: flex;\\n }\\n }\\n}\\n\",\"#mynah-feedback-form-portal {\\n position: absolute;\\n left: 50%;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n overflow: visible;\\n box-sizing: border-box;\\n z-index: 200000;\\n pointer-events: none;\\n transform: translate3d(-50%, 0, 0);\\n max-width: 1024px;\\n color: var(--mynah-color-context-reverse);\\n\\n display: flex;\\n justify-content: center;\\n align-items: flex-end;\\n flex-flow: row nowrap;\\n\\n &.not-revealed {\\n > .mynah-feedback-trigger-button {\\n display: none;\\n }\\n }\\n > .mynah-feedback-trigger-button {\\n transition: var(--mynah-short-transition-bounce);\\n pointer-events: all;\\n border-bottom-right-radius: 0;\\n border-bottom-left-radius: 0;\\n cursor: pointer;\\n }\\n}\\n\\n.mynah-feedback-form {\\n pointer-events: all;\\n box-sizing: border-box;\\n transition: var(--mynah-short-transition-rev);\\n padding: var(--mynah-sizing-4);\\n transform: translate3d(0, 0, 0);\\n border-radius: var(--mynah-card-radius);\\n display: flex;\\n flex-flow: column;\\n gap: var(--mynah-sizing-2);\\n align-items: flex-start;\\n transform-origin: right bottom;\\n\\n > .mynah-feedback-form-comment {\\n background-color: transparent;\\n padding: var(--mynah-sizing-3);\\n border: 1px solid var(--mynah-color-border-default);\\n resize: none;\\n width: 250px;\\n max-width: 40vw;\\n height: 100px;\\n max-height: 25vh;\\n border-radius: var(--mynah-sizing-2);\\n font-size: var(--mynah-font-size-small);\\n outline: none;\\n color: var(--mynah-color-text-input);\\n &:disabled {\\n opacity: 0.25;\\n }\\n &::placeholder {\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-small);\\n }\\n }\\n\\n > .mynah-feedback-form-stars-container {\\n display: inline-flex;\\n flex-flow: row nowrap;\\n > .mynah-feedback-form-star {\\n cursor: pointer;\\n padding-right: var(--mynah-sizing-1);\\n color: var(--mynah-color-light);\\n font-size: 1.5rem;\\n transition: var(--mynah-very-short-transition);\\n > .mynah-icon {\\n transition: var(--mynah-very-short-transition);\\n transform: translate3d(0, 0, 0) scale(0.75);\\n }\\n }\\n &[selected-star]:not(:hover) {\\n > :not(.mynah-feedback-form-star.selected ~ .mynah-feedback-form-star) {\\n color: var(--mynah-color-button);\\n > .mynah-icon {\\n transform: translate3d(0, 0, 0) scale(1);\\n }\\n }\\n }\\n &:hover {\\n > :not(.mynah-feedback-form-star:hover ~ .mynah-feedback-form-star) {\\n color: var(--mynah-color-button);\\n > .mynah-icon {\\n transform: translate3d(0, 0, 0) scale(1);\\n }\\n }\\n }\\n }\\n\\n > .mynah-feedback-form-comment,\\n > .mynah-feedback-form-stars-container {\\n transition: var(--mynah-short-transition-rev);\\n transform-origin: right bottom;\\n }\\n}\\n\",\".mynah-overlay {\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n overflow: hidden;\\n box-sizing: border-box;\\n pointer-events: none;\\n z-index: 1000000;\\n &.mynah-overlay-dim-outside {\\n &:before {\\n content: '';\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n background-color: var(--mynah-color-bg);\\n transition: var(--mynah-short-transition-rev-opacity);\\n opacity: 0.45;\\n }\\n }\\n > .mynah-overlay-container {\\n --overlayLeftPos: 0;\\n --overlayTopPos: 0;\\n --overlayInnerHorizontalOrigin: left;\\n --overlayInnerVerticalOrigin: top;\\n position: absolute;\\n display: block;\\n overflow: visible;\\n border-radius: var(--mynah-card-radius);\\n\\n &:before {\\n content: '';\\n background-color: transparent;\\n transition: var(--mynah-short-transition-rev);\\n position: absolute;\\n top: calc(var(--mynah-button-border-width) * -1);\\n left: calc(var(--mynah-button-border-width) * -1);\\n right: calc(var(--mynah-button-border-width) * -1);\\n bottom: calc(var(--mynah-button-border-width) * -1);\\n width: auto;\\n height: auto;\\n pointer-events: none;\\n box-sizing: border-box;\\n opacity: 0;\\n border: var(--mynah-button-border-width) solid var(--vscode-editorGroup-border);\\n box-shadow: var(--mynah-shadow-prioritization-menu);\\n }\\n\\n &:after {\\n content: '';\\n position: absolute;\\n width: var(--mynah-sizing-8);\\n height: var(--mynah-sizing-8);\\n left: 0;\\n top: 0;\\n opacity: 0;\\n border: var(--mynah-sizing-4);\\n background-color: var(--mynah-card-bg);\\n border-radius: inherit;\\n transition: var(--mynah-short-transition-rev);\\n transition-delay: 20ms;\\n }\\n\\n &.horizontal-direction {\\n &-to-left,\\n &-from-end-to-left {\\n --overlayLeftPos: -100%;\\n --overlayInnerHorizontalOrigin: right;\\n &:after {\\n left: calc(100% - var(--mynah-sizing-4));\\n }\\n }\\n &-at-center {\\n --overlayInnerHorizontalOrigin: center;\\n --overlayLeftPos: -50%;\\n &:after {\\n left: calc(50% - var(--mynah-sizing-4));\\n }\\n }\\n }\\n &.vertical-direction {\\n &-to-top,\\n &-from-end-to-top {\\n --overlayTopPos: -100%;\\n --overlayInnerVerticalOrigin: bottom;\\n &:after {\\n top: calc(100% - var(--mynah-sizing-4));\\n }\\n }\\n &-at-center {\\n --overlayInnerVerticalOrigin: center;\\n --overlayTopPos: -50%;\\n &:after {\\n top: calc(50% - var(--mynah-sizing-4));\\n }\\n }\\n }\\n\\n > .mynah-overlay-inner-container {\\n display: inline-block;\\n overflow: hidden;\\n z-index: 10;\\n position: relative;\\n transform: translate3d(0, 0, 0) scale(0.85);\\n transform-origin: var(--overlayInnerHorizontalOrigin) var(--overlayInnerVerticalOrigin);\\n transition: var(--mynah-short-transition-rev);\\n }\\n &:before {\\n transform: translate3d(0, 0, 0) scale(0.85);\\n transition: var(--mynah-short-transition-rev);\\n }\\n > .mynah-overlay-inner-container,\\n &:before {\\n opacity: 0;\\n transition-delay: 0ms;\\n }\\n\\n transform: translate3d(var(--overlayLeftPos), var(--overlayTopPos), 0);\\n }\\n &:not(.mynah-overlay-open) {\\n &,\\n & * {\\n pointer-events: none !important;\\n }\\n }\\n\\n &.mynah-overlay-open {\\n > .mynah-overlay-container {\\n > .mynah-overlay-inner-container {\\n transform: translate3d(0, 0, 0) scale(1);\\n }\\n &:before {\\n transform: translate3d(0, 0, 0) scale(1);\\n transition-delay: 50ms;\\n opacity: 1;\\n }\\n > .mynah-overlay-inner-container {\\n transition-delay: 20ms;\\n }\\n > .mynah-overlay-inner-container {\\n opacity: 1;\\n }\\n &:after {\\n transition-delay: 0ms;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n opacity: 1;\\n }\\n }\\n &.mynah-overlay-close-on-outside-click {\\n pointer-events: all;\\n }\\n }\\n}\\n\",\".mynah-notification {\\n display: inline-flex;\\n flex-flow: row nowrap;\\n align-items: flex-start;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-3);\\n padding: var(--mynah-sizing-5);\\n overflow: hidden;\\n position: relative;\\n &.mynah-notification-clickable {\\n pointer-events: all;\\n cursor: pointer;\\n }\\n > .mynah-icon {\\n font-size: var(--mynah-sizing-6);\\n &- {\\n &ok-circled {\\n color: var(--mynah-color-status-success);\\n }\\n &info {\\n color: var(--mynah-color-status-info);\\n }\\n &warning {\\n color: var(--mynah-color-status-warning);\\n }\\n &error {\\n color: var(--mynah-color-status-error);\\n }\\n }\\n }\\n > .mynah-notification-container {\\n flex: 1;\\n max-width: 50vw;\\n min-width: 200px;\\n display: inline-flex;\\n flex-flow: column nowrap;\\n align-items: flex-start;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-3);\\n overflow: hidden;\\n position: relative;\\n > .mynah-notification-title {\\n margin: 0;\\n &:empty {\\n display: none;\\n }\\n }\\n > .mynah-notification-content {\\n font-size: var(--mynah-font-size-small);\\n display: flex;\\n flex-flow: column nowrap;\\n justify-content: flex-start;\\n align-items: flex-start;\\n gap: var(--mynah-sizing-2);\\n > .mynah-button {\\n align-self: stretch;\\n background-color: var(--mynah-color-alternate);\\n color: var(--mynah-color-alternate-reverse);\\n }\\n }\\n }\\n}\\n\",\".mynah-autocomplete-items-wrapper {\\n display: flex;\\n flex-flow: column nowrap;\\n max-height: 50vh;\\n overflow-x: hidden;\\n overflow-y: auto;\\n --mynah-autocomplete-side-spacings: calc(\\n var(--mynah-sizing-12) + var(--mynah-sizing-10) + var(--mynah-sizing-12) + var(--mynah-sizing-12)\\n );\\n width: calc(100vw - var(--mynah-autocomplete-side-spacings));\\n max-width: calc(1024px - var(--mynah-autocomplete-side-spacings));\\n box-sizing: border-box;\\n @include list-fader();\\n padding-top: var(--mynah-sizing-3);\\n padding-bottom: var(--mynah-sizing-3);\\n\\n &.make-items-as-ghost {\\n &,\\n & * {\\n pointer-events: none !important;\\n }\\n }\\n\\n > .mynah-autocomplete-button {\\n pointer-events: all;\\n flex-shrink: 0;\\n height: auto;\\n min-height: var(--mynah-sizing-7);\\n padding: var(--mynah-sizing-3);\\n background-color: transparent;\\n border-radius: 0%;\\n color: var(--mynah-color-text-default);\\n\\n &,\\n &:active {\\n box-shadow: none;\\n }\\n\\n &:active:after {\\n opacity: 0.1;\\n }\\n\\n &:hover {\\n background-color: var(--mynah-color-bg);\\n }\\n\\n > span {\\n text-align: left;\\n max-width: initial;\\n width: 100%;\\n overflow: hidden;\\n display: flex;\\n\\n > .mynah-autocomplete-button-label {\\n width: 100%;\\n display: flex;\\n flex-flow: row nowrap;\\n gap: var(--mynah-sizing-3);\\n justify-content: flex-start;\\n align-items: center;\\n overflow: hidden;\\n\\n > .mynah-autocomplete-title-wrapper {\\n display: flex;\\n flex-flow: column nowrap;\\n align-items: flex-start;\\n justify-content: center;\\n flex: 1;\\n overflow: hidden;\\n color: var(--mynah-color-text-weak);\\n gap: var(--mynah-sizing-1);\\n\\n > h3 {\\n width: 100%;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n margin: 0;\\n color: var(--mynah-color-text-default);\\n }\\n\\n > .autocomplete {\\n font-weight: normal;\\n }\\n }\\n }\\n }\\n }\\n\\n &:not(:hover) > .mynah-autocomplete-button.hover {\\n background-color: var(--mynah-color-bg);\\n }\\n}\\n\\n.pointer {\\n cursor: pointer;\\n}\\n\",\".mynah-syntax-highlighter {\\n display: block;\\n box-sizing: border-box;\\n overflow: hidden;\\n margin: 0;\\n border: 1px solid var(--mynah-color-border-default);\\n position: relative;\\n &:before {\\n content: '';\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n background-color: var(--vscode-terminal-dropBackground);\\n opacity: 0.12;\\n pointer-events: none;\\n user-select: none;\\n }\\n > .mynah-syntax-highlighter-copy-buttons {\\n justify-content: flex-end;\\n display: flex;\\n padding: var(--mynah-sizing-1);\\n z-index: 10;\\n .mynah-button {\\n font-size: var(--mynah-sizing-5);\\n color: var(--mynah-color-button);\\n }\\n }\\n &:hover > .mynah-syntax-highlighter-copy-buttons {\\n opacity: 1;\\n }\\n > pre {\\n padding: var(--mynah-sizing-3);\\n margin: 0;\\n overflow-x: auto;\\n overflow-y: hidden;\\n position: relative;\\n\\n *,\\n & {\\n font-size: var(--vscode-editor-font-size) !important;\\n font-family: var(--vscode-editor-font-family) !important;\\n }\\n > code {\\n color: var(--vscode-terminal-ansiBlue);\\n filter: brightness(0.95);\\n white-space: pre;\\n }\\n .amzn-mynah-search-result-highlight {\\n background-color: var(--mynah-color-highlight);\\n color: var(--mynah-color-highlight-text);\\n }\\n\\n > code,\\n & {\\n text-align: left;\\n white-space: pre;\\n word-spacing: normal;\\n word-break: normal;\\n word-wrap: normal;\\n tab-size: 4;\\n hyphens: none;\\n }\\n > code::selection,\\n &::selection {\\n text-shadow: none;\\n background: #b3d4fc;\\n }\\n\\n .token.comment,\\n .token.prolog,\\n .token.doctype,\\n .token.cdata {\\n color: var(--vscode-debugConsole-sourceForeground);\\n }\\n\\n .token.punctuation {\\n color: currentColor;\\n }\\n\\n .token.namespace {\\n opacity: 0.7;\\n }\\n\\n .token.property,\\n .token.tag,\\n .token.boolean,\\n .token.number,\\n .token.constant,\\n .token.symbol,\\n .token.deleted {\\n color: var(--vscode-terminal-ansiCyan);\\n }\\n\\n .token.selector,\\n .token.attr-name,\\n .token.string,\\n .token.char,\\n .token.builtin,\\n .token.inserted {\\n color: var(--vscode-debugTokenExpression-string);\\n }\\n\\n .token.operator,\\n .token.entity,\\n .token.url,\\n .language-css .token.string,\\n .style .token.string {\\n color: var(--vscode-debugTokenExpression-name);\\n }\\n\\n .token.atrule,\\n .token.attr-value,\\n .token.keyword {\\n color: var(--vscode-debugIcon-stepBackForeground);\\n }\\n\\n .token.class-name {\\n color: var(--vscode-debugIcon-stepBackForeground);\\n }\\n .token.function {\\n color: var(--vscode-gitDecoration-modifiedResourceForeground);\\n }\\n\\n .token.regex,\\n .token.important,\\n .token.variable {\\n color: var(--vscode-debugTokenExpression-name);\\n }\\n\\n .token.important,\\n .token.bold {\\n font-weight: bold;\\n }\\n .token.italic {\\n font-style: italic;\\n }\\n\\n .token.entity {\\n cursor: help;\\n }\\n\\n &.line-numbers {\\n position: relative;\\n padding-left: 3.8em;\\n counter-reset: linenumber;\\n position: relative;\\n }\\n\\n > .line-numbers-rows {\\n position: absolute;\\n > span,\\n & {\\n pointer-events: none;\\n user-select: none;\\n }\\n top: var(--mynah-sizing-2);\\n font-size: 100%;\\n left: 0;\\n width: var(--mynah-sizing-12);\\n overflow: hidden;\\n text-overflow: clip;\\n letter-spacing: -1px;\\n border-right: 1px solid var(--mynah-color-border-default);\\n\\n > span {\\n display: block;\\n color: var(--mynah-color-border-default);\\n padding-right: 0.8em;\\n text-align: right;\\n }\\n }\\n }\\n}\\n\",\"@import 'mixins';\\n@import 'variables';\\n@import 'animations';\\n@import 'dark';\\n\\n// Components\\n@import './components/main-container';\\n@import './components/search-block';\\n@import './components/search-history';\\n@import './components/context-pill';\\n@import './components/prioritization-menu';\\n@import './components/button';\\n@import './components/toggle';\\n@import './components/card';\\n@import './components/feedback-form';\\n@import './components/overlay';\\n@import './components/notification';\\n@import './components/autocomplete';\\n@import './components/syntax-highlighter';\\n\\nbody,\\nhtml {\\n background-color: var(--mynah-color-bg);\\n height: 100%;\\n width: 100%;\\n overflow: hidden;\\n margin: 0;\\n padding: 0;\\n}\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n font-weight: 600;\\n color: var(--mynah-color-text-strong);\\n}\\n\\n::-webkit-scrollbar {\\n width: 3px;\\n height: 3px;\\n opacity: 0.5;\\n}\\n\\n*:focus {\\n outline: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n\n content += cssWithMappingToString(item);\n\n if (needLayer) {\n content += \"}\";\n }\n\n if (item[2]) {\n content += \"}\";\n }\n\n if (item[4]) {\n content += \"}\";\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n\n\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar isCookieAvailable = (typeof document) != \"undefined\";\nvar I18nResolver = /** @class */ (function () {\n function I18nResolver(translations, preferredLanguage) {\n this.translations = translations;\n this.cookieName = \"i18n-language\";\n this.currentLanguage = null;\n // get the current language from cookie, browser locale\n var language = preferredLanguage || this.getCookie(this.cookieName) || this.getBrowserLanguage();\n this.language = this.findBestMatch(language) || \"default\";\n }\n Object.defineProperty(I18nResolver.prototype, \"translation\", {\n get: function () {\n return this.translations[this.currentLanguage];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(I18nResolver.prototype, \"language\", {\n get: function () {\n return this.currentLanguage;\n },\n set: function (lang) {\n this.currentLanguage = lang;\n this.setCookie(this.cookieName, lang);\n },\n enumerable: true,\n configurable: true\n });\n I18nResolver.prototype.setCookie = function (name, value, expires, path) {\n if (!isCookieAvailable) {\n return;\n }\n var expiration = expires ? \"; expires=\" + expires.toUTCString() : \"\";\n var cookieStr = name + \"=\" + value + expiration;\n if (path) {\n cookieStr += \";path=\" + path;\n }\n document.cookie = cookieStr;\n };\n I18nResolver.prototype.getCookie = function (name) {\n if (!isCookieAvailable) {\n return null;\n }\n var cookie = document.cookie\n .split(\";\")\n .map(function (cookieStr) { return cookieStr.trim(); })\n .filter(function (cookieStr) { return cookieStr.match(name + \"=.*\"); });\n return cookie.length > 0 ? cookie[0].replace(name + \"=\", \"\") : null;\n };\n I18nResolver.prototype.getBrowserLanguage = function () {\n return navigator.language || navigator.userLanguage; // fallback for IE\n };\n I18nResolver.prototype.findBestMatch = function (language) {\n if (this.translations[language]) {\n return language;\n }\n // in case of language variants, e.g. en-US, check for basic variant (en) as well\n var langPrefix = language.split(\"-\")[0];\n if (this.translations[langPrefix]) {\n return langPrefix;\n }\n return null;\n };\n return I18nResolver;\n}());\nexports.I18nResolver = I18nResolver;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar I18nResolver_1 = require(\"./core/I18nResolver\");\nexports.I18nResolver = I18nResolver_1.I18nResolver;\n","(function (Prism) {\n\n\tvar keywords = /\\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\\s*[(){}[\\]<>=%~.:,;?+\\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\\b/;\n\n\t// full package (optional) + parent classes (optional)\n\tvar classNamePrefix = /(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*/.source;\n\n\t// based on the java naming conventions\n\tvar className = {\n\t\tpattern: RegExp(/(^|[^\\w.])/.source + classNamePrefix + /[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b/.source),\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'namespace': {\n\t\t\t\tpattern: /^[a-z]\\w*(?:\\s*\\.\\s*[a-z]\\w*)*(?:\\s*\\.)?/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /\\./\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\./\n\t\t}\n\t};\n\n\tPrism.languages.java = Prism.languages.extend('clike', {\n\t\t'string': {\n\t\t\tpattern: /(^|[^\\\\])\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t'class-name': [\n\t\t\tclassName,\n\t\t\t{\n\t\t\t\t// variables, parameters, and constructor references\n\t\t\t\t// this to support class names (or generic parameters) which do not contain a lower case letter (also works for methods)\n\t\t\t\tpattern: RegExp(/(^|[^\\w.])/.source + classNamePrefix + /[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()]|\\s*(?:\\[[\\s,]*\\]\\s*)?::\\s*new\\b)/.source),\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: className.inside\n\t\t\t},\n\t\t\t{\n\t\t\t\t// class names based on keyword\n\t\t\t\t// this to support class names (or generic parameters) which do not contain a lower case letter (also works for methods)\n\t\t\t\tpattern: RegExp(/(\\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\\s+)/.source + classNamePrefix + /[A-Z]\\w*\\b/.source),\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: className.inside\n\t\t\t}\n\t\t],\n\t\t'keyword': keywords,\n\t\t'function': [\n\t\t\tPrism.languages.clike.function,\n\t\t\t{\n\t\t\t\tpattern: /(::\\s*)[a-z_]\\w*/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'number': /\\b0b[01][01_]*L?\\b|\\b0x(?:\\.[\\da-f_p+-]+|[\\da-f_]+(?:\\.[\\da-f_p+-]+)?)\\b|(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[dfl]?/i,\n\t\t'operator': {\n\t\t\tpattern: /(^|[^.])(?:<<=?|>>>?=?|->|--|\\+\\+|&&|\\|\\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'constant': /\\b[A-Z][A-Z_\\d]+\\b/\n\t});\n\n\tPrism.languages.insertBefore('java', 'string', {\n\t\t'triple-quoted-string': {\n\t\t\t// http://openjdk.java.net/jeps/355#Description\n\t\t\tpattern: /\"\"\"[ \\t]*[\\r\\n](?:(?:\"|\"\")?(?:\\\\.|[^\"\\\\]))*\"\"\"/,\n\t\t\tgreedy: true,\n\t\t\talias: 'string'\n\t\t},\n\t\t'char': {\n\t\t\tpattern: /'(?:\\\\.|[^'\\\\\\r\\n]){1,6}'/,\n\t\t\tgreedy: true\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('java', 'class-name', {\n\t\t'annotation': {\n\t\t\tpattern: /(^|[^.])@\\w+(?:\\s*\\.\\s*\\w+)*/,\n\t\t\tlookbehind: true,\n\t\t\talias: 'punctuation'\n\t\t},\n\t\t'generics': {\n\t\t\tpattern: /<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&))*>)*>)*>)*>/,\n\t\t\tinside: {\n\t\t\t\t'class-name': className,\n\t\t\t\t'keyword': keywords,\n\t\t\t\t'punctuation': /[<>(),.:]/,\n\t\t\t\t'operator': /[?&|]/\n\t\t\t}\n\t\t},\n\t\t'import': [\n\t\t\t{\n\t\t\t\tpattern: RegExp(/(\\bimport\\s+)/.source + classNamePrefix + /(?:[A-Z]\\w*|\\*)(?=\\s*;)/.source),\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': className.inside.namespace,\n\t\t\t\t\t'punctuation': /\\./,\n\t\t\t\t\t'operator': /\\*/,\n\t\t\t\t\t'class-name': /\\w+/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: RegExp(/(\\bimport\\s+static\\s+)/.source + classNamePrefix + /(?:\\w+|\\*)(?=\\s*;)/.source),\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'static',\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': className.inside.namespace,\n\t\t\t\t\t'static': /\\b\\w+$/,\n\t\t\t\t\t'punctuation': /\\./,\n\t\t\t\t\t'operator': /\\*/,\n\t\t\t\t\t'class-name': /\\w+/\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'namespace': {\n\t\t\tpattern: RegExp(\n\t\t\t\t/(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!<keyword>)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?/\n\t\t\t\t\t.source.replace(/<keyword>/g, function () { return keywords.source; })),\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'punctuation': /\\./,\n\t\t\t}\n\t\t}\n\t});\n}(Prism));\n","Prism.languages.javascript = Prism.languages.extend('clike', {\n\t'class-name': [\n\t\tPrism.languages.clike['class-name'],\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /((?:^|\\})\\s*)catch\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t],\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n\t'number': {\n\t\tpattern: RegExp(\n\t\t\t/(^|[^\\w$])/.source +\n\t\t\t'(?:' +\n\t\t\t(\n\t\t\t\t// constant\n\t\t\t\t/NaN|Infinity/.source +\n\t\t\t\t'|' +\n\t\t\t\t// binary integer\n\t\t\t\t/0[bB][01]+(?:_[01]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// octal integer\n\t\t\t\t/0[oO][0-7]+(?:_[0-7]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// hexadecimal integer\n\t\t\t\t/0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal bigint\n\t\t\t\t/\\d+(?:_\\d+)*n/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal number (integer or float) but no bigint\n\t\t\t\t/(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source\n\t\t\t) +\n\t\t\t')' +\n\t\t\t/(?![\\w$])/.source\n\t\t),\n\t\tlookbehind: true\n\t},\n\t'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\n\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: RegExp(\n\t\t\t// lookbehind\n\t\t\t// eslint-disable-next-line regexp/no-dupe-characters-character-class\n\t\t\t/((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source +\n\t\t\t// Regex pattern:\n\t\t\t// There are 2 regex patterns here. The RegExp set notation proposal added support for nested character\n\t\t\t// classes if the `v` flag is present. Unfortunately, nested CCs are both context-free and incompatible\n\t\t\t// with the only syntax, so we have to define 2 different regex patterns.\n\t\t\t/\\//.source +\n\t\t\t'(?:' +\n\t\t\t/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source +\n\t\t\t'|' +\n\t\t\t// `v` flag syntax. This supports 3 levels of nested character classes.\n\t\t\t/(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source +\n\t\t\t')' +\n\t\t\t// lookahead\n\t\t\t/(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source\n\t\t),\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'regex-source': {\n\t\t\t\tpattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'language-regex',\n\t\t\t\tinside: Prism.languages.regex\n\t\t\t},\n\t\t\t'regex-delimiter': /^\\/|\\/$/,\n\t\t\t'regex-flags': /^[a-z]+$/,\n\t\t}\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n\t\talias: 'function'\n\t},\n\t'parameter': [\n\t\t{\n\t\t\tpattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t}\n\t],\n\t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'hashbang': {\n\t\tpattern: /^#!.*/,\n\t\tgreedy: true,\n\t\talias: 'comment'\n\t},\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'template-punctuation': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'string-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\talias: 'property'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'operator', {\n\t'literal-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\talias: 'property'\n\t},\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.markup.tag.addInlined('script', 'javascript');\n\n\t// add attribute support for all DOM events.\n\t// https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n\tPrism.languages.markup.tag.addAttribute(\n\t\t/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,\n\t\t'javascript'\n\t);\n}\n\nPrism.languages.js = Prism.languages.javascript;\n","// https://www.json.org/json-en.html\nPrism.languages.json = {\n\t'property': {\n\t\tpattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t'string': {\n\t\tpattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?!\\s*:)/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t'comment': {\n\t\tpattern: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\tgreedy: true\n\t},\n\t'number': /-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n\t'punctuation': /[{}[\\],]/,\n\t'operator': /:/,\n\t'boolean': /\\b(?:false|true)\\b/,\n\t'null': {\n\t\tpattern: /\\bnull\\b/,\n\t\talias: 'keyword'\n\t}\n};\n\nPrism.languages.webmanifest = Prism.languages.json;\n","Prism.languages.python = {\n\t'comment': {\n\t\tpattern: /(^|[^\\\\])#.*/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t'string-interpolation': {\n\t\tpattern: /(?:f|fr|rf)(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\t// \"{\" <expression> <optional \"!s\", \"!r\", or \"!a\"> <optional \":\" format specifier> \"}\"\n\t\t\t\tpattern: /((?:^|[^{])(?:\\{\\{)*)\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}])+\\})+\\})+\\}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'format-spec': {\n\t\t\t\t\t\tpattern: /(:)[^:(){}]+(?=\\}$)/,\n\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t},\n\t\t\t\t\t'conversion-option': {\n\t\t\t\t\t\tpattern: /![sra](?=[:}]$)/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: null\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'triple-quoted-string': {\n\t\tpattern: /(?:[rub]|br|rb)?(\"\"\"|''')[\\s\\S]*?\\1/i,\n\t\tgreedy: true,\n\t\talias: 'string'\n\t},\n\t'string': {\n\t\tpattern: /(?:[rub]|br|rb)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,\n\t\tgreedy: true\n\t},\n\t'function': {\n\t\tpattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,\n\t\tlookbehind: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\bclass\\s+)\\w+/i,\n\t\tlookbehind: true\n\t},\n\t'decorator': {\n\t\tpattern: /(^[\\t ]*)@\\w+(?:\\.\\w+)*/m,\n\t\tlookbehind: true,\n\t\talias: ['annotation', 'punctuation'],\n\t\tinside: {\n\t\t\t'punctuation': /\\./\n\t\t}\n\t},\n\t'keyword': /\\b(?:_(?=\\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,\n\t'builtin': /\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,\n\t'boolean': /\\b(?:False|None|True)\\b/,\n\t'number': /\\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\\b|(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:e[+-]?\\d+(?:_\\d+)*)?j?(?!\\w)/i,\n\t'operator': /[-+%=]=?|!=|:=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\nPrism.languages.python['string-interpolation'].inside['interpolation'].inside.rest = Prism.languages.python;\n\nPrism.languages.py = Prism.languages.python;\n","(function (Prism) {\n\n\tPrism.languages.typescript = Prism.languages.extend('javascript', {\n\t\t'class-name': {\n\t\t\tpattern: /(\\b(?:class|extends|implements|instanceof|interface|new|type)\\s+)(?!keyof\\b)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?:\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: null // see below\n\t\t},\n\t\t'builtin': /\\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\\b/,\n\t});\n\n\t// The keywords TypeScript adds to JavaScript\n\tPrism.languages.typescript.keyword.push(\n\t\t/\\b(?:abstract|declare|is|keyof|readonly|require)\\b/,\n\t\t// keywords that have to be followed by an identifier\n\t\t/\\b(?:asserts|infer|interface|module|namespace|type)\\b(?=\\s*(?:[{_$a-zA-Z\\xA0-\\uFFFF]|$))/,\n\t\t// This is for `import type *, {}`\n\t\t/\\btype\\b(?=\\s*(?:[\\{*]|$))/\n\t);\n\n\t// doesn't work with TS because TS is too complex\n\tdelete Prism.languages.typescript['parameter'];\n\tdelete Prism.languages.typescript['literal-property'];\n\n\t// a version of typescript specifically for highlighting types\n\tvar typeInside = Prism.languages.extend('typescript', {});\n\tdelete typeInside['class-name'];\n\n\tPrism.languages.typescript['class-name'].inside = typeInside;\n\n\tPrism.languages.insertBefore('typescript', 'function', {\n\t\t'decorator': {\n\t\t\tpattern: /@[$\\w\\xA0-\\uFFFF]+/,\n\t\t\tinside: {\n\t\t\t\t'at': {\n\t\t\t\t\tpattern: /^@/,\n\t\t\t\t\talias: 'operator'\n\t\t\t\t},\n\t\t\t\t'function': /^[\\s\\S]+/\n\t\t\t}\n\t\t},\n\t\t'generic-function': {\n\t\t\t// e.g. foo<T extends \"bar\" | \"baz\">( ...\n\t\t\tpattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\\s*\\()/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'function': /^#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/,\n\t\t\t\t'generic': {\n\t\t\t\t\tpattern: /<[\\s\\S]+/, // everything after the first <\n\t\t\t\t\talias: 'class-name',\n\t\t\t\t\tinside: typeInside\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tPrism.languages.ts = Prism.languages.typescript;\n\n}(Prism));\n","(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\t/**\n\t * Plugin name which is used as a class name for <pre> which is activating the plugin\n\t *\n\t * @type {string}\n\t */\n\tvar PLUGIN_NAME = 'line-numbers';\n\n\t/**\n\t * Regular expression used for determining line breaks\n\t *\n\t * @type {RegExp}\n\t */\n\tvar NEW_LINE_EXP = /\\n(?!$)/g;\n\n\n\t/**\n\t * Global exports\n\t */\n\tvar config = Prism.plugins.lineNumbers = {\n\t\t/**\n\t\t * Get node for provided line number\n\t\t *\n\t\t * @param {Element} element pre element\n\t\t * @param {number} number line number\n\t\t * @returns {Element|undefined}\n\t\t */\n\t\tgetLine: function (element, number) {\n\t\t\tif (element.tagName !== 'PRE' || !element.classList.contains(PLUGIN_NAME)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar lineNumberRows = element.querySelector('.line-numbers-rows');\n\t\t\tif (!lineNumberRows) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar lineNumberStart = parseInt(element.getAttribute('data-start'), 10) || 1;\n\t\t\tvar lineNumberEnd = lineNumberStart + (lineNumberRows.children.length - 1);\n\n\t\t\tif (number < lineNumberStart) {\n\t\t\t\tnumber = lineNumberStart;\n\t\t\t}\n\t\t\tif (number > lineNumberEnd) {\n\t\t\t\tnumber = lineNumberEnd;\n\t\t\t}\n\n\t\t\tvar lineIndex = number - lineNumberStart;\n\n\t\t\treturn lineNumberRows.children[lineIndex];\n\t\t},\n\n\t\t/**\n\t\t * Resizes the line numbers of the given element.\n\t\t *\n\t\t * This function will not add line numbers. It will only resize existing ones.\n\t\t *\n\t\t * @param {HTMLElement} element A `<pre>` element with line numbers.\n\t\t * @returns {void}\n\t\t */\n\t\tresize: function (element) {\n\t\t\tresizeElements([element]);\n\t\t},\n\n\t\t/**\n\t\t * Whether the plugin can assume that the units font sizes and margins are not depended on the size of\n\t\t * the current viewport.\n\t\t *\n\t\t * Setting this to `true` will allow the plugin to do certain optimizations for better performance.\n\t\t *\n\t\t * Set this to `false` if you use any of the following CSS units: `vh`, `vw`, `vmin`, `vmax`.\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\tassumeViewportIndependence: true\n\t};\n\n\t/**\n\t * Resizes the given elements.\n\t *\n\t * @param {HTMLElement[]} elements\n\t */\n\tfunction resizeElements(elements) {\n\t\telements = elements.filter(function (e) {\n\t\t\tvar codeStyles = getStyles(e);\n\t\t\tvar whiteSpace = codeStyles['white-space'];\n\t\t\treturn whiteSpace === 'pre-wrap' || whiteSpace === 'pre-line';\n\t\t});\n\n\t\tif (elements.length == 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar infos = elements.map(function (element) {\n\t\t\tvar codeElement = element.querySelector('code');\n\t\t\tvar lineNumbersWrapper = element.querySelector('.line-numbers-rows');\n\t\t\tif (!codeElement || !lineNumbersWrapper) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t/** @type {HTMLElement} */\n\t\t\tvar lineNumberSizer = element.querySelector('.line-numbers-sizer');\n\t\t\tvar codeLines = codeElement.textContent.split(NEW_LINE_EXP);\n\n\t\t\tif (!lineNumberSizer) {\n\t\t\t\tlineNumberSizer = document.createElement('span');\n\t\t\t\tlineNumberSizer.className = 'line-numbers-sizer';\n\n\t\t\t\tcodeElement.appendChild(lineNumberSizer);\n\t\t\t}\n\n\t\t\tlineNumberSizer.innerHTML = '0';\n\t\t\tlineNumberSizer.style.display = 'block';\n\n\t\t\tvar oneLinerHeight = lineNumberSizer.getBoundingClientRect().height;\n\t\t\tlineNumberSizer.innerHTML = '';\n\n\t\t\treturn {\n\t\t\t\telement: element,\n\t\t\t\tlines: codeLines,\n\t\t\t\tlineHeights: [],\n\t\t\t\toneLinerHeight: oneLinerHeight,\n\t\t\t\tsizer: lineNumberSizer,\n\t\t\t};\n\t\t}).filter(Boolean);\n\n\t\tinfos.forEach(function (info) {\n\t\t\tvar lineNumberSizer = info.sizer;\n\t\t\tvar lines = info.lines;\n\t\t\tvar lineHeights = info.lineHeights;\n\t\t\tvar oneLinerHeight = info.oneLinerHeight;\n\n\t\t\tlineHeights[lines.length - 1] = undefined;\n\t\t\tlines.forEach(function (line, index) {\n\t\t\t\tif (line && line.length > 1) {\n\t\t\t\t\tvar e = lineNumberSizer.appendChild(document.createElement('span'));\n\t\t\t\t\te.style.display = 'block';\n\t\t\t\t\te.textContent = line;\n\t\t\t\t} else {\n\t\t\t\t\tlineHeights[index] = oneLinerHeight;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tinfos.forEach(function (info) {\n\t\t\tvar lineNumberSizer = info.sizer;\n\t\t\tvar lineHeights = info.lineHeights;\n\n\t\t\tvar childIndex = 0;\n\t\t\tfor (var i = 0; i < lineHeights.length; i++) {\n\t\t\t\tif (lineHeights[i] === undefined) {\n\t\t\t\t\tlineHeights[i] = lineNumberSizer.children[childIndex++].getBoundingClientRect().height;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tinfos.forEach(function (info) {\n\t\t\tvar lineNumberSizer = info.sizer;\n\t\t\tvar wrapper = info.element.querySelector('.line-numbers-rows');\n\n\t\t\tlineNumberSizer.style.display = 'none';\n\t\t\tlineNumberSizer.innerHTML = '';\n\n\t\t\tinfo.lineHeights.forEach(function (height, lineNumber) {\n\t\t\t\twrapper.children[lineNumber].style.height = height + 'px';\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Returns style declarations for the element\n\t *\n\t * @param {Element} element\n\t */\n\tfunction getStyles(element) {\n\t\tif (!element) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn window.getComputedStyle ? getComputedStyle(element) : (element.currentStyle || null);\n\t}\n\n\tvar lastWidth = undefined;\n\twindow.addEventListener('resize', function () {\n\t\tif (config.assumeViewportIndependence && lastWidth === window.innerWidth) {\n\t\t\treturn;\n\t\t}\n\t\tlastWidth = window.innerWidth;\n\n\t\tresizeElements(Array.prototype.slice.call(document.querySelectorAll('pre.' + PLUGIN_NAME)));\n\t});\n\n\tPrism.hooks.add('complete', function (env) {\n\t\tif (!env.code) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar code = /** @type {Element} */ (env.element);\n\t\tvar pre = /** @type {HTMLElement} */ (code.parentNode);\n\n\t\t// works only for <code> wrapped inside <pre> (not inline)\n\t\tif (!pre || !/pre/i.test(pre.nodeName)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Abort if line numbers already exists\n\t\tif (code.querySelector('.line-numbers-rows')) {\n\t\t\treturn;\n\t\t}\n\n\t\t// only add line numbers if <code> or one of its ancestors has the `line-numbers` class\n\t\tif (!Prism.util.isActive(code, PLUGIN_NAME)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remove the class 'line-numbers' from the <code>\n\t\tcode.classList.remove(PLUGIN_NAME);\n\t\t// Add the class 'line-numbers' to the <pre>\n\t\tpre.classList.add(PLUGIN_NAME);\n\n\t\tvar match = env.code.match(NEW_LINE_EXP);\n\t\tvar linesNum = match ? match.length + 1 : 1;\n\t\tvar lineNumbersWrapper;\n\n\t\tvar lines = new Array(linesNum + 1).join('<span></span>');\n\n\t\tlineNumbersWrapper = document.createElement('span');\n\t\tlineNumbersWrapper.setAttribute('aria-hidden', 'true');\n\t\tlineNumbersWrapper.className = 'line-numbers-rows';\n\t\tlineNumbersWrapper.innerHTML = lines;\n\n\t\tif (pre.hasAttribute('data-start')) {\n\t\t\tpre.style.counterReset = 'linenumber ' + (parseInt(pre.getAttribute('data-start'), 10) - 1);\n\t\t}\n\n\t\tenv.element.appendChild(lineNumbersWrapper);\n\n\t\tresizeElements([pre]);\n\n\t\tPrism.hooks.run('line-numbers', env);\n\t});\n\n\tPrism.hooks.add('line-numbers', function (env) {\n\t\tenv.plugins = env.plugins || {};\n\t\tenv.plugins.lineNumbers = true;\n\t});\n\n}());\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\n/// <reference lib=\"WebWorker\"/>\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT <https://opensource.org/licenses/MIT>\n * @author Lea Verou <https://lea.verou.me>\n * @namespace\n * @public\n */\nvar Prism = (function (_self) {\n\n\t// Private helper vars\n\tvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n\t\t * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n\t\t * additional languages or plugins yourself.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n\t\t *\n\t\t * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.manual = true;\n\t\t * // add a new <script> to load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tmanual: _self.Prism && _self.Prism.manual,\n\t\t/**\n\t\t * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses\n\t\t * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your\n\t\t * own worker, you don't want it to do this.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not add its own listeners to the worker.\n\t\t *\n\t\t * You obviously have to change this value before Prism executes. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.disableWorkerMessageHandler = true;\n\t\t * // Load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\n\t\t/**\n\t\t * A namespace for utility methods.\n\t\t *\n\t\t * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n\t\t * change or disappear at any time.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t */\n\t\tutil: {\n\t\t\tencode: function encode(tokens) {\n\t\t\t\tif (tokens instanceof Token) {\n\t\t\t\t\treturn new Token(tokens.type, encode(tokens.content), tokens.alias);\n\t\t\t\t} else if (Array.isArray(tokens)) {\n\t\t\t\t\treturn tokens.map(encode);\n\t\t\t\t} else {\n\t\t\t\t\treturn tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\\u00a0/g, ' ');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the name of the type of the given value.\n\t\t\t *\n\t\t\t * @param {any} o\n\t\t\t * @returns {string}\n\t\t\t * @example\n\t\t\t * type(null) === 'Null'\n\t\t\t * type(undefined) === 'Undefined'\n\t\t\t * type(123) === 'Number'\n\t\t\t * type('foo') === 'String'\n\t\t\t * type(true) === 'Boolean'\n\t\t\t * type([1, 2]) === 'Array'\n\t\t\t * type({}) === 'Object'\n\t\t\t * type(String) === 'Function'\n\t\t\t * type(/abc+/) === 'RegExp'\n\t\t\t */\n\t\t\ttype: function (o) {\n\t\t\t\treturn Object.prototype.toString.call(o).slice(8, -1);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns a unique number for the given object. Later calls will still return the same number.\n\t\t\t *\n\t\t\t * @param {Object} obj\n\t\t\t * @returns {number}\n\t\t\t */\n\t\t\tobjId: function (obj) {\n\t\t\t\tif (!obj['__id']) {\n\t\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t\t}\n\t\t\t\treturn obj['__id'];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Creates a deep clone of the given object.\n\t\t\t *\n\t\t\t * The main intended use of this function is to clone language definitions.\n\t\t\t *\n\t\t\t * @param {T} o\n\t\t\t * @param {Record<number, any>} [visited]\n\t\t\t * @returns {T}\n\t\t\t * @template T\n\t\t\t */\n\t\t\tclone: function deepClone(o, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar clone; var id;\n\t\t\t\tswitch (_.util.type(o)) {\n\t\t\t\t\tcase 'Object':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = /** @type {Record<string, any>} */ ({});\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclone[key] = deepClone(o[key], visited);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tcase 'Array':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\t(/** @type {Array} */(/** @type {any} */(o))).forEach(function (v, i) {\n\t\t\t\t\t\t\tclone[i] = deepClone(v, visited);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn o;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n\t\t\t *\n\t\t\t * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @returns {string}\n\t\t\t */\n\t\t\tgetLanguage: function (element) {\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar m = lang.exec(element.className);\n\t\t\t\t\tif (m) {\n\t\t\t\t\t\treturn m[1].toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn 'none';\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the Prism `language-xxxx` class of the given element.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} language\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tsetLanguage: function (element, language) {\n\t\t\t\t// remove all `language-xxxx` classes\n\t\t\t\t// (this might leave behind a leading space)\n\t\t\t\telement.className = element.className.replace(RegExp(lang, 'gi'), '');\n\n\t\t\t\t// add the new `language-xxxx` class\n\t\t\t\t// (using `classList` will automatically clean up spaces for us)\n\t\t\t\telement.classList.add('language-' + language);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the script element that is currently executing.\n\t\t\t *\n\t\t\t * This does __not__ work for line script element.\n\t\t\t *\n\t\t\t * @returns {HTMLScriptElement | null}\n\t\t\t */\n\t\t\tcurrentScript: function () {\n\t\t\t\tif (typeof document === 'undefined') {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif ('currentScript' in document && 1 < 2 /* hack to trip TS' flow analysis */) {\n\t\t\t\t\treturn /** @type {any} */ (document.currentScript);\n\t\t\t\t}\n\n\t\t\t\t// IE11 workaround\n\t\t\t\t// we'll get the src of the current script by parsing IE11's error stack trace\n\t\t\t\t// this will not work for inline scripts\n\n\t\t\t\ttry {\n\t\t\t\t\tthrow new Error();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Get file src url from stack. Specifically works with the format of stack traces in IE.\n\t\t\t\t\t// A stack will look like this:\n\t\t\t\t\t//\n\t\t\t\t\t// Error\n\t\t\t\t\t// at _.util.currentScript (http://localhost/components/prism-core.js:119:5)\n\t\t\t\t\t// at Global code (http://localhost/components/prism-core.js:606:1)\n\n\t\t\t\t\tvar src = (/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(err.stack) || [])[1];\n\t\t\t\t\tif (src) {\n\t\t\t\t\t\tvar scripts = document.getElementsByTagName('script');\n\t\t\t\t\t\tfor (var i in scripts) {\n\t\t\t\t\t\t\tif (scripts[i].src == src) {\n\t\t\t\t\t\t\t\treturn scripts[i];\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\treturn null;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns whether a given class is active for `element`.\n\t\t\t *\n\t\t\t * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n\t\t\t * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n\t\t\t * given class is just the given class with a `no-` prefix.\n\t\t\t *\n\t\t\t * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n\t\t\t * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n\t\t\t * ancestors have the given class or the negated version of it, then the default activation will be returned.\n\t\t\t *\n\t\t\t * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n\t\t\t * version of it, the class is considered active.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} className\n\t\t\t * @param {boolean} [defaultActivation=false]\n\t\t\t * @returns {boolean}\n\t\t\t */\n\t\t\tisActive: function (element, className, defaultActivation) {\n\t\t\t\tvar no = 'no-' + className;\n\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar classList = element.classList;\n\t\t\t\t\tif (classList.contains(className)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (classList.contains(no)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn !!defaultActivation;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tlanguages: {\n\t\t\t/**\n\t\t\t * The grammar for plain, unformatted text.\n\t\t\t */\n\t\t\tplain: plainTextGrammar,\n\t\t\tplaintext: plainTextGrammar,\n\t\t\ttext: plainTextGrammar,\n\t\t\ttxt: plainTextGrammar,\n\n\t\t\t/**\n\t\t\t * Creates a deep copy of the language with the given id and appends the given tokens.\n\t\t\t *\n\t\t\t * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n\t\t\t * will be overwritten at its original position.\n\t\t\t *\n\t\t\t * ## Best practices\n\t\t\t *\n\t\t\t * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n\t\t\t * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n\t\t\t * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n\t\t\t *\n\t\t\t * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n\t\t\t * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n\t\t\t *\n\t\t\t * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n\t\t\t * @param {Grammar} redef The new tokens to append.\n\t\t\t * @returns {Grammar} The new language created.\n\t\t\t * @public\n\t\t\t * @example\n\t\t\t * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n\t\t\t * // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n\t\t\t * // at its original position\n\t\t\t * 'comment': { ... },\n\t\t\t * // CSS doesn't have a 'color' token, so this token will be appended\n\t\t\t * 'color': /\\b(?:red|green|blue)\\b/\n\t\t\t * });\n\t\t\t */\n\t\t\textend: function (id, redef) {\n\t\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\t\tfor (var key in redef) {\n\t\t\t\t\tlang[key] = redef[key];\n\t\t\t\t}\n\n\t\t\t\treturn lang;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Inserts tokens _before_ another token in a language definition or any other grammar.\n\t\t\t *\n\t\t\t * ## Usage\n\t\t\t *\n\t\t\t * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n\t\t\t * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n\t\t\t * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n\t\t\t * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n\t\t\t * this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.markup.style = {\n\t\t\t * // token\n\t\t\t * };\n\t\t\t * ```\n\t\t\t *\n\t\t\t * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n\t\t\t * before existing tokens. For the CSS example above, you would use it like this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'cdata', {\n\t\t\t * 'style': {\n\t\t\t * // token\n\t\t\t * }\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Special cases\n\t\t\t *\n\t\t\t * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n\t\t\t * will be ignored.\n\t\t\t *\n\t\t\t * This behavior can be used to insert tokens after `before`:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'comment', {\n\t\t\t * 'comment': Prism.languages.markup.comment,\n\t\t\t * // tokens after 'comment'\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Limitations\n\t\t\t *\n\t\t\t * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n\t\t\t * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n\t\t\t * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n\t\t\t * deleting properties which is necessary to insert at arbitrary positions.\n\t\t\t *\n\t\t\t * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n\t\t\t * Instead, it will create a new object and replace all references to the target object with the new one. This\n\t\t\t * can be done without temporarily deleting properties, so the iteration order is well-defined.\n\t\t\t *\n\t\t\t * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n\t\t\t * you hold the target object in a variable, then the value of the variable will not change.\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * var oldMarkup = Prism.languages.markup;\n\t\t\t * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n\t\t\t *\n\t\t\t * assert(oldMarkup !== Prism.languages.markup);\n\t\t\t * assert(newMarkup === Prism.languages.markup);\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n\t\t\t * object to be modified.\n\t\t\t * @param {string} before The key to insert before.\n\t\t\t * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n\t\t\t * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n\t\t\t * object to be modified.\n\t\t\t *\n\t\t\t * Defaults to `Prism.languages`.\n\t\t\t * @returns {Grammar} The new grammar object.\n\t\t\t * @public\n\t\t\t */\n\t\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\t\troot = root || /** @type {any} */ (_.languages);\n\t\t\t\tvar grammar = root[inside];\n\t\t\t\t/** @type {Grammar} */\n\t\t\t\tvar ret = {};\n\n\t\t\t\tfor (var token in grammar) {\n\t\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\t\tif (token == before) {\n\t\t\t\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\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\n\t\t\t\t\t\t// Do not insert token which also occur in insert. See #1525\n\t\t\t\t\t\tif (!insert.hasOwnProperty(token)) {\n\t\t\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar old = root[inside];\n\t\t\t\troot[inside] = ret;\n\n\t\t\t\t// Update references in other language definitions\n\t\t\t\t_.languages.DFS(_.languages, function (key, value) {\n\t\t\t\t\tif (value === old && key != inside) {\n\t\t\t\t\t\tthis[key] = ret;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn ret;\n\t\t\t},\n\n\t\t\t// Traverse a language definition with Depth First Search\n\t\t\tDFS: function DFS(o, callback, type, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar objId = _.util.objId;\n\n\t\t\t\tfor (var i in o) {\n\t\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\t\tvar property = o[i];\n\t\t\t\t\t\tvar propertyType = _.util.type(property);\n\n\t\t\t\t\t\tif (propertyType === 'Object' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, null, visited);\n\t\t\t\t\t\t} else if (propertyType === 'Array' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, i, visited);\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\tplugins: {},\n\n\t\t/**\n\t\t * This is the most high-level function in Prism’s API.\n\t\t * It fetches all the elements that have a `.language-xxxx` class and then calls {@link Prism.highlightElement} on\n\t\t * each one of them.\n\t\t *\n\t\t * This is equivalent to `Prism.highlightAllUnder(document, async, callback)`.\n\t\t *\n\t\t * @param {boolean} [async=false] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @param {HighlightCallback} [callback] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAll: function (async, callback) {\n\t\t\t_.highlightAllUnder(document, async, callback);\n\t\t},\n\n\t\t/**\n\t\t * Fetches all the descendants of `container` that have a `.language-xxxx` class and then calls\n\t\t * {@link Prism.highlightElement} on each one of them.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-highlightall`\n\t\t * 2. `before-all-elements-highlight`\n\t\t * 3. All hooks of {@link Prism.highlightElement} for each element.\n\t\t *\n\t\t * @param {ParentNode} container The root element, whose descendants that have a `.language-xxxx` class will be highlighted.\n\t\t * @param {boolean} [async=false] Whether each element is to be highlighted asynchronously using Web Workers.\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked on each element after its highlighting is done.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAllUnder: function (container, async, callback) {\n\t\t\tvar env = {\n\t\t\t\tcallback: callback,\n\t\t\t\tcontainer: container,\n\t\t\t\tselector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n\t\t\t};\n\n\t\t\t_.hooks.run('before-highlightall', env);\n\n\t\t\tenv.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));\n\n\t\t\t_.hooks.run('before-all-elements-highlight', env);\n\n\t\t\tfor (var i = 0, element; (element = env.elements[i++]);) {\n\t\t\t\t_.highlightElement(element, async === true, env.callback);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Highlights the code inside a single element.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-sanity-check`\n\t\t * 2. `before-highlight`\n\t\t * 3. All hooks of {@link Prism.highlight}. These hooks will be run by an asynchronous worker if `async` is `true`.\n\t\t * 4. `before-insert`\n\t\t * 5. `after-highlight`\n\t\t * 6. `complete`\n\t\t *\n\t\t * Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for\n\t\t * the element's language.\n\t\t *\n\t\t * @param {Element} element The element containing the code.\n\t\t * It must have a class of `language-xxxx` to be processed, where `xxxx` is a valid language identifier.\n\t\t * @param {boolean} [async=false] Whether the element is to be highlighted asynchronously using Web Workers\n\t\t * to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is\n\t\t * [disabled by default](https://prismjs.com/faq.html#why-is-asynchronous-highlighting-disabled-by-default).\n\t\t *\n\t\t * Note: All language definitions required to highlight the code must be included in the main `prism.js` file for\n\t\t * asynchronous highlighting to work. You can build your own bundle on the\n\t\t * [Download page](https://prismjs.com/download.html).\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked after the highlighting is done.\n\t\t * Mostly useful when `async` is `true`, since in that case, the highlighting is done asynchronously.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightElement: function (element, async, callback) {\n\t\t\t// Find language\n\t\t\tvar language = _.util.getLanguage(element);\n\t\t\tvar grammar = _.languages[language];\n\n\t\t\t// Set language on the element, if not present\n\t\t\t_.util.setLanguage(element, language);\n\n\t\t\t// Set language on the parent, for styling\n\t\t\tvar parent = element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre') {\n\t\t\t\t_.util.setLanguage(parent, language);\n\t\t\t}\n\n\t\t\tvar code = element.textContent;\n\n\t\t\tvar env = {\n\t\t\t\telement: element,\n\t\t\t\tlanguage: language,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tcode: code\n\t\t\t};\n\n\t\t\tfunction insertHighlightedCode(highlightedCode) {\n\t\t\t\tenv.highlightedCode = highlightedCode;\n\n\t\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t}\n\n\t\t\t_.hooks.run('before-sanity-check', env);\n\n\t\t\t// plugins may change/add the parent/element\n\t\t\tparent = env.element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre' && !parent.hasAttribute('tabindex')) {\n\t\t\t\tparent.setAttribute('tabindex', '0');\n\t\t\t}\n\n\t\t\tif (!env.code) {\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_.hooks.run('before-highlight', env);\n\n\t\t\tif (!env.grammar) {\n\t\t\t\tinsertHighlightedCode(_.util.encode(env.code));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (async && _self.Worker) {\n\t\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\t\tworker.onmessage = function (evt) {\n\t\t\t\t\tinsertHighlightedCode(evt.data);\n\t\t\t\t};\n\n\t\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\t\tlanguage: env.language,\n\t\t\t\t\tcode: env.code,\n\t\t\t\t\timmediateClose: true\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tinsertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Low-level function, only use if you know what you’re doing. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns a string with the HTML produced.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-tokenize`\n\t\t * 2. `after-tokenize`\n\t\t * 3. `wrap`: On each {@link Token}.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @param {string} language The name of the language definition passed to `grammar`.\n\t\t * @returns {string} The highlighted HTML.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n\t\t */\n\t\thighlight: function (text, grammar, language) {\n\t\t\tvar env = {\n\t\t\t\tcode: text,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tlanguage: language\n\t\t\t};\n\t\t\t_.hooks.run('before-tokenize', env);\n\t\t\tif (!env.grammar) {\n\t\t\t\tthrow new Error('The language \"' + env.language + '\" has no grammar.');\n\t\t\t}\n\t\t\tenv.tokens = _.tokenize(env.code, env.grammar);\n\t\t\t_.hooks.run('after-tokenize', env);\n\t\t\treturn Token.stringify(_.util.encode(env.tokens), env.language);\n\t\t},\n\n\t\t/**\n\t\t * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns an array with the tokenized code.\n\t\t *\n\t\t * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n\t\t *\n\t\t * This method could be useful in other contexts as well, as a very crude parser.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @returns {TokenStream} An array of strings and tokens, a token stream.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * let code = `var foo = 0;`;\n\t\t * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n\t\t * tokens.forEach(token => {\n\t\t * if (token instanceof Prism.Token && token.type === 'number') {\n\t\t * console.log(`Found numeric literal: ${token.content}`);\n\t\t * }\n\t\t * });\n\t\t */\n\t\ttokenize: function (text, grammar) {\n\t\t\tvar rest = grammar.rest;\n\t\t\tif (rest) {\n\t\t\t\tfor (var token in rest) {\n\t\t\t\t\tgrammar[token] = rest[token];\n\t\t\t\t}\n\n\t\t\t\tdelete grammar.rest;\n\t\t\t}\n\n\t\t\tvar tokenList = new LinkedList();\n\t\t\taddAfter(tokenList, tokenList.head, text);\n\n\t\t\tmatchGrammar(text, tokenList, grammar, tokenList.head, 0);\n\n\t\t\treturn toArray(tokenList);\n\t\t},\n\n\t\t/**\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thooks: {\n\t\t\tall: {},\n\n\t\t\t/**\n\t\t\t * Adds the given callback to the list of callbacks for the given hook.\n\t\t\t *\n\t\t\t * The callback will be invoked when the hook it is registered for is run.\n\t\t\t * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n\t\t\t *\n\t\t\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {HookCallback} callback The callback function which is given environment variables.\n\t\t\t * @public\n\t\t\t */\n\t\t\tadd: function (name, callback) {\n\t\t\t\tvar hooks = _.hooks.all;\n\n\t\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\t\thooks[name].push(callback);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t\t\t *\n\t\t\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t\t\t * @public\n\t\t\t */\n\t\t\trun: function (name, env) {\n\t\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0, callback; (callback = callbacks[i++]);) {\n\t\t\t\t\tcallback(env);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tToken: Token\n\t};\n\t_self.Prism = _;\n\n\n\t// Typescript note:\n\t// The following can be used to import the Token type in JSDoc:\n\t//\n\t// @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n\n\t/**\n\t * Creates a new token.\n\t *\n\t * @param {string} type See {@link Token#type type}\n\t * @param {string | TokenStream} content See {@link Token#content content}\n\t * @param {string|string[]} [alias] The alias(es) of the token.\n\t * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n\t * @class\n\t * @global\n\t * @public\n\t */\n\tfunction Token(type, content, alias, matchedStr) {\n\t\t/**\n\t\t * The type of the token.\n\t\t *\n\t\t * This is usually the key of a pattern in a {@link Grammar}.\n\t\t *\n\t\t * @type {string}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.type = type;\n\t\t/**\n\t\t * The strings or tokens contained by this token.\n\t\t *\n\t\t * This will be a token stream if the pattern matched also defined an `inside` grammar.\n\t\t *\n\t\t * @type {string | TokenStream}\n\t\t * @public\n\t\t */\n\t\tthis.content = content;\n\t\t/**\n\t\t * The alias(es) of the token.\n\t\t *\n\t\t * @type {string|string[]}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.alias = alias;\n\t\t// Copy of the full string this token was created from\n\t\tthis.length = (matchedStr || '').length | 0;\n\t}\n\n\t/**\n\t * A token stream is an array of strings and {@link Token Token} objects.\n\t *\n\t * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n\t * them.\n\t *\n\t * 1. No adjacent strings.\n\t * 2. No empty strings.\n\t *\n\t * The only exception here is the token stream that only contains the empty string and nothing else.\n\t *\n\t * @typedef {Array<string | Token>} TokenStream\n\t * @global\n\t * @public\n\t */\n\n\t/**\n\t * Converts the given token or token stream to an HTML representation.\n\t *\n\t * The following hooks will be run:\n\t * 1. `wrap`: On each {@link Token}.\n\t *\n\t * @param {string | Token | TokenStream} o The token or token stream to be converted.\n\t * @param {string} language The name of current language.\n\t * @returns {string} The HTML representation of the token or token stream.\n\t * @memberof Token\n\t * @static\n\t */\n\tToken.stringify = function stringify(o, language) {\n\t\tif (typeof o == 'string') {\n\t\t\treturn o;\n\t\t}\n\t\tif (Array.isArray(o)) {\n\t\t\tvar s = '';\n\t\t\to.forEach(function (e) {\n\t\t\t\ts += stringify(e, language);\n\t\t\t});\n\t\t\treturn s;\n\t\t}\n\n\t\tvar env = {\n\t\t\ttype: o.type,\n\t\t\tcontent: stringify(o.content, language),\n\t\t\ttag: 'span',\n\t\t\tclasses: ['token', o.type],\n\t\t\tattributes: {},\n\t\t\tlanguage: language\n\t\t};\n\n\t\tvar aliases = o.alias;\n\t\tif (aliases) {\n\t\t\tif (Array.isArray(aliases)) {\n\t\t\t\tArray.prototype.push.apply(env.classes, aliases);\n\t\t\t} else {\n\t\t\t\tenv.classes.push(aliases);\n\t\t\t}\n\t\t}\n\n\t\t_.hooks.run('wrap', env);\n\n\t\tvar attributes = '';\n\t\tfor (var name in env.attributes) {\n\t\t\tattributes += ' ' + name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '&quot;') + '\"';\n\t\t}\n\n\t\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + attributes + '>' + env.content + '</' + env.tag + '>';\n\t};\n\n\t/**\n\t * @param {RegExp} pattern\n\t * @param {number} pos\n\t * @param {string} text\n\t * @param {boolean} lookbehind\n\t * @returns {RegExpExecArray | null}\n\t */\n\tfunction matchPattern(pattern, pos, text, lookbehind) {\n\t\tpattern.lastIndex = pos;\n\t\tvar match = pattern.exec(text);\n\t\tif (match && lookbehind && match[1]) {\n\t\t\t// change the match to remove the text matched by the Prism lookbehind group\n\t\t\tvar lookbehindLength = match[1].length;\n\t\t\tmatch.index += lookbehindLength;\n\t\t\tmatch[0] = match[0].slice(lookbehindLength);\n\t\t}\n\t\treturn match;\n\t}\n\n\t/**\n\t * @param {string} text\n\t * @param {LinkedList<string | Token>} tokenList\n\t * @param {any} grammar\n\t * @param {LinkedListNode<string | Token>} startNode\n\t * @param {number} startPos\n\t * @param {RematchOptions} [rematch]\n\t * @returns {void}\n\t * @private\n\t *\n\t * @typedef RematchOptions\n\t * @property {string} cause\n\t * @property {number} reach\n\t */\n\tfunction matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n\t\tfor (var token in grammar) {\n\t\t\tif (!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = Array.isArray(patterns) ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tif (rematch && rematch.cause == token + ',' + j) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar patternObj = patterns[j];\n\t\t\t\tvar inside = patternObj.inside;\n\t\t\t\tvar lookbehind = !!patternObj.lookbehind;\n\t\t\t\tvar greedy = !!patternObj.greedy;\n\t\t\t\tvar alias = patternObj.alias;\n\n\t\t\t\tif (greedy && !patternObj.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n\t\t\t\t\tpatternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');\n\t\t\t\t}\n\n\t\t\t\t/** @type {RegExp} */\n\t\t\t\tvar pattern = patternObj.pattern || patternObj;\n\n\t\t\t\tfor ( // iterate the token list and keep track of the current token/string position\n\t\t\t\t\tvar currentNode = startNode.next, pos = startPos;\n\t\t\t\t\tcurrentNode !== tokenList.tail;\n\t\t\t\t\tpos += currentNode.value.length, currentNode = currentNode.next\n\t\t\t\t) {\n\n\t\t\t\t\tif (rematch && pos >= rematch.reach) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar str = currentNode.value;\n\n\t\t\t\t\tif (tokenList.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeCount = 1; // this is the to parameter of removeBetween\n\t\t\t\t\tvar match;\n\n\t\t\t\t\tif (greedy) {\n\t\t\t\t\t\tmatch = matchPattern(pattern, pos, text, lookbehind);\n\t\t\t\t\t\tif (!match || match.index >= text.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index;\n\t\t\t\t\t\tvar to = match.index + match[0].length;\n\t\t\t\t\t\tvar p = pos;\n\n\t\t\t\t\t\t// find the node that contains the match\n\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\twhile (from >= p) {\n\t\t\t\t\t\t\tcurrentNode = currentNode.next;\n\t\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// adjust pos (and p)\n\t\t\t\t\t\tp -= currentNode.value.length;\n\t\t\t\t\t\tpos = p;\n\n\t\t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\tif (currentNode.value instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// find the last node which is affected by this match\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tvar k = currentNode;\n\t\t\t\t\t\t\tk !== tokenList.tail && (p < to || typeof k.value === 'string');\n\t\t\t\t\t\t\tk = k.next\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveCount++;\n\t\t\t\t\t\t\tp += k.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tremoveCount--;\n\n\t\t\t\t\t\t// replace with the new match\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmatch = matchPattern(pattern, 0, str, lookbehind);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line no-redeclare\n\t\t\t\t\tvar from = match.index;\n\t\t\t\t\tvar matchStr = match[0];\n\t\t\t\t\tvar before = str.slice(0, from);\n\t\t\t\t\tvar after = str.slice(from + matchStr.length);\n\n\t\t\t\t\tvar reach = pos + str.length;\n\t\t\t\t\tif (rematch && reach > rematch.reach) {\n\t\t\t\t\t\trematch.reach = reach;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeFrom = currentNode.prev;\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\tremoveFrom = addAfter(tokenList, removeFrom, before);\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tremoveRange(tokenList, removeFrom, removeCount);\n\n\t\t\t\t\tvar wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n\t\t\t\t\tcurrentNode = addAfter(tokenList, removeFrom, wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\taddAfter(tokenList, currentNode, after);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (removeCount > 1) {\n\t\t\t\t\t\t// at least one Token object was removed, so we have to do some rematching\n\t\t\t\t\t\t// this can only happen if the current pattern is greedy\n\n\t\t\t\t\t\t/** @type {RematchOptions} */\n\t\t\t\t\t\tvar nestedRematch = {\n\t\t\t\t\t\t\tcause: token + ',' + j,\n\t\t\t\t\t\t\treach: reach\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmatchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n\n\t\t\t\t\t\t// the reach might have been extended because of the rematching\n\t\t\t\t\t\tif (rematch && nestedRematch.reach > rematch.reach) {\n\t\t\t\t\t\t\trematch.reach = nestedRematch.reach;\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}\n\n\t/**\n\t * @typedef LinkedListNode\n\t * @property {T} value\n\t * @property {LinkedListNode<T> | null} prev The previous node.\n\t * @property {LinkedListNode<T> | null} next The next node.\n\t * @template T\n\t * @private\n\t */\n\n\t/**\n\t * @template T\n\t * @private\n\t */\n\tfunction LinkedList() {\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar head = { value: null, prev: null, next: null };\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar tail = { value: null, prev: head, next: null };\n\t\thead.next = tail;\n\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.head = head;\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.tail = tail;\n\t\tthis.length = 0;\n\t}\n\n\t/**\n\t * Adds a new node with the given value to the list.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {T} value\n\t * @returns {LinkedListNode<T>} The added node.\n\t * @template T\n\t */\n\tfunction addAfter(list, node, value) {\n\t\t// assumes that node != list.tail && values.length >= 0\n\t\tvar next = node.next;\n\n\t\tvar newNode = { value: value, prev: node, next: next };\n\t\tnode.next = newNode;\n\t\tnext.prev = newNode;\n\t\tlist.length++;\n\n\t\treturn newNode;\n\t}\n\t/**\n\t * Removes `count` nodes after the given node. The given node will not be removed.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {number} count\n\t * @template T\n\t */\n\tfunction removeRange(list, node, count) {\n\t\tvar next = node.next;\n\t\tfor (var i = 0; i < count && next !== list.tail; i++) {\n\t\t\tnext = next.next;\n\t\t}\n\t\tnode.next = next;\n\t\tnext.prev = node;\n\t\tlist.length -= i;\n\t}\n\t/**\n\t * @param {LinkedList<T>} list\n\t * @returns {T[]}\n\t * @template T\n\t */\n\tfunction toArray(list) {\n\t\tvar array = [];\n\t\tvar node = list.head.next;\n\t\twhile (node !== list.tail) {\n\t\t\tarray.push(node.value);\n\t\t\tnode = node.next;\n\t\t}\n\t\treturn array;\n\t}\n\n\n\tif (!_self.document) {\n\t\tif (!_self.addEventListener) {\n\t\t\t// in Node.js\n\t\t\treturn _;\n\t\t}\n\n\t\tif (!_.disableWorkerMessageHandler) {\n\t\t\t// In worker\n\t\t\t_self.addEventListener('message', function (evt) {\n\t\t\t\tvar message = JSON.parse(evt.data);\n\t\t\t\tvar lang = message.language;\n\t\t\t\tvar code = message.code;\n\t\t\t\tvar immediateClose = message.immediateClose;\n\n\t\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\t\tif (immediateClose) {\n\t\t\t\t\t_self.close();\n\t\t\t\t}\n\t\t\t}, false);\n\t\t}\n\n\t\treturn _;\n\t}\n\n\t// Get current script and highlight\n\tvar script = _.util.currentScript();\n\n\tif (script) {\n\t\t_.filename = script.src;\n\n\t\tif (script.hasAttribute('data-manual')) {\n\t\t\t_.manual = true;\n\t\t}\n\t}\n\n\tfunction highlightAutomaticallyCallback() {\n\t\tif (!_.manual) {\n\t\t\t_.highlightAll();\n\t\t}\n\t}\n\n\tif (!_.manual) {\n\t\t// If the document state is \"loading\", then we'll use DOMContentLoaded.\n\t\t// If the document state is \"interactive\" and the prism.js script is deferred, then we'll also use the\n\t\t// DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they\n\t\t// might take longer one animation frame to execute which can create a race condition where only some plugins have\n\t\t// been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded.\n\t\t// See https://github.com/PrismJS/prism/issues/2102\n\t\tvar readyState = document.readyState;\n\t\tif (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {\n\t\t\tdocument.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);\n\t\t} else {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(highlightAutomaticallyCallback);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(highlightAutomaticallyCallback, 16);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn _;\n\n}(_self));\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n// some additional documentation/types\n\n/**\n * The expansion of a simple `RegExp` literal to support additional properties.\n *\n * @typedef GrammarToken\n * @property {RegExp} pattern The regular expression of the token.\n * @property {boolean} [lookbehind=false] If `true`, then the first capturing group of `pattern` will (effectively)\n * behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token.\n * @property {boolean} [greedy=false] Whether the token is greedy.\n * @property {string|string[]} [alias] An optional alias or list of aliases.\n * @property {Grammar} [inside] The nested grammar of this token.\n *\n * The `inside` grammar will be used to tokenize the text value of each token of this kind.\n *\n * This can be used to make nested and even recursive language definitions.\n *\n * Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into\n * each another.\n * @global\n * @public\n */\n\n/**\n * @typedef Grammar\n * @type {Object<string, RegExp | GrammarToken | Array<RegExp | GrammarToken>>}\n * @property {Grammar} [rest] An optional grammar object that will be appended to this grammar.\n * @global\n * @public\n */\n\n/**\n * A function which will invoked after an element was successfully highlighted.\n *\n * @callback HighlightCallback\n * @param {Element} element The element successfully highlighted.\n * @returns {void}\n * @global\n * @public\n */\n\n/**\n * @callback HookCallback\n * @param {Object<string, any>} env The environment variables of the hook.\n * @returns {void}\n * @global\n * @public\n */\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': {\n\t\tpattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n\t\tgreedy: true\n\t},\n\t'prolog': {\n\t\tpattern: /<\\?[\\s\\S]+?\\?>/,\n\t\tgreedy: true\n\t},\n\t'doctype': {\n\t\t// https://www.w3.org/TR/xml/#NT-doctypedecl\n\t\tpattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'internal-subset': {\n\t\t\t\tpattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: null // see below\n\t\t\t},\n\t\t\t'string': {\n\t\t\t\tpattern: /\"[^\"]*\"|'[^']*'/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t'punctuation': /^<!|>$|[[\\]]/,\n\t\t\t'doctype-tag': /^DOCTYPE/i,\n\t\t\t'name': /[^\\s<>'\"]+/\n\t\t}\n\t},\n\t'cdata': {\n\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\tgreedy: true\n\t},\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'special-attr': [],\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^(\\s*)[\"']|[\"']$/,\n\t\t\t\t\t\t\tlookbehind: true\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\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': [\n\t\t{\n\t\t\tpattern: /&[\\da-z]{1,8};/i,\n\t\t\talias: 'named-entity'\n\t\t},\n\t\t/&#x?[\\da-f]{1,8};/i\n\t]\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\nPrism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup;\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function (env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&amp;/, '&');\n\t}\n});\n\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n\t/**\n\t * Adds an inlined language to markup.\n\t *\n\t * An example of an inlined language is CSS with `<style>` tags.\n\t *\n\t * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addInlined('style', 'css');\n\t */\n\tvalue: function addInlined(tagName, lang) {\n\t\tvar includedCdataInside = {};\n\t\tincludedCdataInside['language-' + lang] = {\n\t\t\tpattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\t\tincludedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n\n\t\tvar inside = {\n\t\t\t'included-cdata': {\n\t\t\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\t\t\tinside: includedCdataInside\n\t\t\t}\n\t\t};\n\t\tinside['language-' + lang] = {\n\t\t\tpattern: /[\\s\\S]+/,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\n\t\tvar def = {};\n\t\tdef[tagName] = {\n\t\t\tpattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () { return tagName; }), 'i'),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: inside\n\t\t};\n\n\t\tPrism.languages.insertBefore('markup', 'cdata', def);\n\t}\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n\t/**\n\t * Adds an pattern to highlight languages embedded in HTML attributes.\n\t *\n\t * An example of an inlined language is CSS with `style` attributes.\n\t *\n\t * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addAttribute('style', 'css');\n\t */\n\tvalue: function (attrName, lang) {\n\t\tPrism.languages.markup.tag.inside['special-attr'].push({\n\t\t\tpattern: RegExp(\n\t\t\t\t/(^|[\"'\\s])/.source + '(?:' + attrName + ')' + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source,\n\t\t\t\t'i'\n\t\t\t),\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'attr-name': /^[^\\s=]+/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /=[\\s\\S]+/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'value': {\n\t\t\t\t\t\t\tpattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n\t\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\t\talias: [lang, 'language-' + lang],\n\t\t\t\t\t\t\tinside: Prism.languages[lang]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\t\talias: 'attr-equals'\n\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}\n\t\t});\n\t}\n});\n\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.ssml = Prism.languages.xml;\nPrism.languages.atom = Prism.languages.xml;\nPrism.languages.rss = Prism.languages.xml;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\n(function (Prism) {\n\n\tvar string = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\n\n\tPrism.languages.css = {\n\t\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t\t'atrule': {\n\t\t\tpattern: RegExp('@[\\\\w-](?:' + /[^;{\\s\"']|\\s+(?!\\s)/.source + '|' + string.source + ')*?' + /(?:;|(?=\\s*\\{))/.source),\n\t\t\tinside: {\n\t\t\t\t'rule': /^@[\\w-]+/,\n\t\t\t\t'selector-function-argument': {\n\t\t\t\t\tpattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'selector'\n\t\t\t\t},\n\t\t\t\t'keyword': {\n\t\t\t\t\tpattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t}\n\t\t\t\t// See rest below\n\t\t\t}\n\t\t},\n\t\t'url': {\n\t\t\t// https://drafts.csswg.org/css-values-3/#urls\n\t\t\tpattern: RegExp('\\\\burl\\\\((?:' + string.source + '|' + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + ')\\\\)', 'i'),\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'function': /^url/i,\n\t\t\t\t'punctuation': /^\\(|\\)$/,\n\t\t\t\t'string': {\n\t\t\t\t\tpattern: RegExp('^' + string.source + '$'),\n\t\t\t\t\talias: 'url'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'selector': {\n\t\t\tpattern: RegExp('(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' + string.source + ')*(?=\\\\s*\\\\{)'),\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': {\n\t\t\tpattern: string,\n\t\t\tgreedy: true\n\t\t},\n\t\t'property': {\n\t\t\tpattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'important': /!important\\b/i,\n\t\t'function': {\n\t\t\tpattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'punctuation': /[(){};:,]/\n\t};\n\n\tPrism.languages.css['atrule'].inside.rest = Prism.languages.css;\n\n\tvar markup = Prism.languages.markup;\n\tif (markup) {\n\t\tmarkup.tag.addInlined('style', 'css');\n\t\tmarkup.tag.addAttribute('style', 'css');\n\t}\n\n}(Prism));\n\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'punctuation': /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n\t'boolean': /\\b(?:false|true)\\b/,\n\t'function': /\\b\\w+(?=\\()/,\n\t'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n\t'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'class-name': [\n\t\tPrism.languages.clike['class-name'],\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /((?:^|\\})\\s*)catch\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t],\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n\t'number': {\n\t\tpattern: RegExp(\n\t\t\t/(^|[^\\w$])/.source +\n\t\t\t'(?:' +\n\t\t\t(\n\t\t\t\t// constant\n\t\t\t\t/NaN|Infinity/.source +\n\t\t\t\t'|' +\n\t\t\t\t// binary integer\n\t\t\t\t/0[bB][01]+(?:_[01]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// octal integer\n\t\t\t\t/0[oO][0-7]+(?:_[0-7]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// hexadecimal integer\n\t\t\t\t/0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal bigint\n\t\t\t\t/\\d+(?:_\\d+)*n/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal number (integer or float) but no bigint\n\t\t\t\t/(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source\n\t\t\t) +\n\t\t\t')' +\n\t\t\t/(?![\\w$])/.source\n\t\t),\n\t\tlookbehind: true\n\t},\n\t'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\n\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: RegExp(\n\t\t\t// lookbehind\n\t\t\t// eslint-disable-next-line regexp/no-dupe-characters-character-class\n\t\t\t/((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source +\n\t\t\t// Regex pattern:\n\t\t\t// There are 2 regex patterns here. The RegExp set notation proposal added support for nested character\n\t\t\t// classes if the `v` flag is present. Unfortunately, nested CCs are both context-free and incompatible\n\t\t\t// with the only syntax, so we have to define 2 different regex patterns.\n\t\t\t/\\//.source +\n\t\t\t'(?:' +\n\t\t\t/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source +\n\t\t\t'|' +\n\t\t\t// `v` flag syntax. This supports 3 levels of nested character classes.\n\t\t\t/(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source +\n\t\t\t')' +\n\t\t\t// lookahead\n\t\t\t/(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source\n\t\t),\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'regex-source': {\n\t\t\t\tpattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'language-regex',\n\t\t\t\tinside: Prism.languages.regex\n\t\t\t},\n\t\t\t'regex-delimiter': /^\\/|\\/$/,\n\t\t\t'regex-flags': /^[a-z]+$/,\n\t\t}\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n\t\talias: 'function'\n\t},\n\t'parameter': [\n\t\t{\n\t\t\tpattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t}\n\t],\n\t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'hashbang': {\n\t\tpattern: /^#!.*/,\n\t\tgreedy: true,\n\t\talias: 'comment'\n\t},\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'template-punctuation': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'string-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\talias: 'property'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'operator', {\n\t'literal-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\talias: 'property'\n\t},\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.markup.tag.addInlined('script', 'javascript');\n\n\t// add attribute support for all DOM events.\n\t// https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n\tPrism.languages.markup.tag.addAttribute(\n\t\t/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,\n\t\t'javascript'\n\t);\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\t// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n\tif (!Element.prototype.matches) {\n\t\tElement.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\t}\n\n\tvar LOADING_MESSAGE = 'Loading…';\n\tvar FAILURE_MESSAGE = function (status, message) {\n\t\treturn '✖ Error ' + status + ' while fetching file: ' + message;\n\t};\n\tvar FAILURE_EMPTY_MESSAGE = '✖ Error: File does not exist or is empty';\n\n\tvar EXTENSIONS = {\n\t\t'js': 'javascript',\n\t\t'py': 'python',\n\t\t'rb': 'ruby',\n\t\t'ps1': 'powershell',\n\t\t'psm1': 'powershell',\n\t\t'sh': 'bash',\n\t\t'bat': 'batch',\n\t\t'h': 'c',\n\t\t'tex': 'latex'\n\t};\n\n\tvar STATUS_ATTR = 'data-src-status';\n\tvar STATUS_LOADING = 'loading';\n\tvar STATUS_LOADED = 'loaded';\n\tvar STATUS_FAILED = 'failed';\n\n\tvar SELECTOR = 'pre[data-src]:not([' + STATUS_ATTR + '=\"' + STATUS_LOADED + '\"])'\n\t\t+ ':not([' + STATUS_ATTR + '=\"' + STATUS_LOADING + '\"])';\n\n\t/**\n\t * Loads the given file.\n\t *\n\t * @param {string} src The URL or path of the source file to load.\n\t * @param {(result: string) => void} success\n\t * @param {(reason: string) => void} error\n\t */\n\tfunction loadFile(src, success, error) {\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('GET', src, true);\n\t\txhr.onreadystatechange = function () {\n\t\t\tif (xhr.readyState == 4) {\n\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\tsuccess(xhr.responseText);\n\t\t\t\t} else {\n\t\t\t\t\tif (xhr.status >= 400) {\n\t\t\t\t\t\terror(FAILURE_MESSAGE(xhr.status, xhr.statusText));\n\t\t\t\t\t} else {\n\t\t\t\t\t\terror(FAILURE_EMPTY_MESSAGE);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\txhr.send(null);\n\t}\n\n\t/**\n\t * Parses the given range.\n\t *\n\t * This returns a range with inclusive ends.\n\t *\n\t * @param {string | null | undefined} range\n\t * @returns {[number, number | undefined] | undefined}\n\t */\n\tfunction parseRange(range) {\n\t\tvar m = /^\\s*(\\d+)\\s*(?:(,)\\s*(?:(\\d+)\\s*)?)?$/.exec(range || '');\n\t\tif (m) {\n\t\t\tvar start = Number(m[1]);\n\t\t\tvar comma = m[2];\n\t\t\tvar end = m[3];\n\n\t\t\tif (!comma) {\n\t\t\t\treturn [start, start];\n\t\t\t}\n\t\t\tif (!end) {\n\t\t\t\treturn [start, undefined];\n\t\t\t}\n\t\t\treturn [start, Number(end)];\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tPrism.hooks.add('before-highlightall', function (env) {\n\t\tenv.selector += ', ' + SELECTOR;\n\t});\n\n\tPrism.hooks.add('before-sanity-check', function (env) {\n\t\tvar pre = /** @type {HTMLPreElement} */ (env.element);\n\t\tif (pre.matches(SELECTOR)) {\n\t\t\tenv.code = ''; // fast-path the whole thing and go to complete\n\n\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADING); // mark as loading\n\n\t\t\t// add code element with loading message\n\t\t\tvar code = pre.appendChild(document.createElement('CODE'));\n\t\t\tcode.textContent = LOADING_MESSAGE;\n\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language = env.language;\n\t\t\tif (language === 'none') {\n\t\t\t\t// the language might be 'none' because there is no language set;\n\t\t\t\t// in this case, we want to use the extension as the language\n\t\t\t\tvar extension = (/\\.(\\w+)$/.exec(src) || [, 'none'])[1];\n\t\t\t\tlanguage = EXTENSIONS[extension] || extension;\n\t\t\t}\n\n\t\t\t// set language classes\n\t\t\tPrism.util.setLanguage(code, language);\n\t\t\tPrism.util.setLanguage(pre, language);\n\n\t\t\t// preload the language\n\t\t\tvar autoloader = Prism.plugins.autoloader;\n\t\t\tif (autoloader) {\n\t\t\t\tautoloader.loadLanguages(language);\n\t\t\t}\n\n\t\t\t// load file\n\t\t\tloadFile(\n\t\t\t\tsrc,\n\t\t\t\tfunction (text) {\n\t\t\t\t\t// mark as loaded\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADED);\n\n\t\t\t\t\t// handle data-range\n\t\t\t\t\tvar range = parseRange(pre.getAttribute('data-range'));\n\t\t\t\t\tif (range) {\n\t\t\t\t\t\tvar lines = text.split(/\\r\\n?|\\n/g);\n\n\t\t\t\t\t\t// the range is one-based and inclusive on both ends\n\t\t\t\t\t\tvar start = range[0];\n\t\t\t\t\t\tvar end = range[1] == null ? lines.length : range[1];\n\n\t\t\t\t\t\tif (start < 0) { start += lines.length; }\n\t\t\t\t\t\tstart = Math.max(0, Math.min(start - 1, lines.length));\n\t\t\t\t\t\tif (end < 0) { end += lines.length; }\n\t\t\t\t\t\tend = Math.max(0, Math.min(end, lines.length));\n\n\t\t\t\t\t\ttext = lines.slice(start, end).join('\\n');\n\n\t\t\t\t\t\t// add data-start for line numbers\n\t\t\t\t\t\tif (!pre.hasAttribute('data-start')) {\n\t\t\t\t\t\t\tpre.setAttribute('data-start', String(start + 1));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// highlight code\n\t\t\t\t\tcode.textContent = text;\n\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t},\n\t\t\t\tfunction (error) {\n\t\t\t\t\t// mark as failed\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_FAILED);\n\n\t\t\t\t\tcode.textContent = error;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\n\tPrism.plugins.fileHighlight = {\n\t\t/**\n\t\t * Executes the File Highlight plugin for all matching `pre` elements under the given container.\n\t\t *\n\t\t * Note: Elements which are already loaded or currently loading will not be touched by this method.\n\t\t *\n\t\t * @param {ParentNode} [container=document]\n\t\t */\n\t\thighlight: function highlight(container) {\n\t\t\tvar elements = (container || document).querySelectorAll(SELECTOR);\n\n\t\t\tfor (var i = 0, element; (element = elements[i++]);) {\n\t\t\t\tPrism.highlightElement(element);\n\t\t\t}\n\t\t}\n\t};\n\n\tvar logged = false;\n\t/** @deprecated Use `Prism.plugins.fileHighlight.highlight` instead. */\n\tPrism.fileHighlight = function () {\n\t\tif (!logged) {\n\t\t\tconsole.warn('Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.');\n\t\t\tlogged = true;\n\t\t}\n\t\tPrism.plugins.fileHighlight.highlight.apply(this, arguments);\n\t};\n\n}());\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./styles.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./styles.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\"use strict\";\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n\n stylesInDOM.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nexport interface ButtonProps {\n classNames?: string[];\n attributes?: Record<string, string>;\n icon?: HTMLElement | ExtendedHTMLElement | string;\n label?: HTMLElement | ExtendedHTMLElement | string;\n children?: Array<HTMLElement | ExtendedHTMLElement | string>;\n primary?: boolean;\n additionalEvents?: Record<string, (event?: any) => any>;\n onClick: (e: Event) => void;\n}\nexport class Button {\n render: ExtendedHTMLElement;\n constructor (props: ButtonProps) {\n this.render = DomBuilder.getInstance().build({\n type: 'button',\n classNames: [\n 'mynah-button',\n ...(props.primary === false ? [ 'mynah-button-secondary' ] : []),\n ...(props.classNames !== undefined ? props.classNames : []),\n ],\n attributes: { ...props.attributes },\n events: {\n ...props.additionalEvents,\n click: props.onClick,\n },\n children: [\n ...(props.icon !== undefined ? [ props.icon ] : []),\n ...(props.label !== undefined ? [ { type: 'span', children: [ props.label ] } ] : []),\n ...(props.children ?? []),\n ],\n });\n }\n\n setEnabled = (enabled: boolean): void => {\n if (enabled) {\n this.render.removeAttribute('disabled');\n } else {\n this.render.setAttribute('disabled', 'disabled');\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ContextType, ContextTypeClassNames, ContextTypes } from '../static';\nimport { cancelEvent, DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nimport { Button } from './button';\nimport { Icon, MynahIcons } from './icon';\nimport { PrioritizationMenuButtons } from './prioritization-menu';\nimport { ContextManager } from '../helper/context-manager';\n\nexport interface ContextPillProps {\n context: ContextType;\n showRemoveButton?: boolean;\n}\nexport class ContextPill {\n private readonly props: ContextPillProps;\n render: ExtendedHTMLElement;\n constructor (props: ContextPillProps) {\n this.props = props;\n\n this.render = DomBuilder.getInstance().build({\n type: 'span',\n attributes: { 'pill-of': props.context.context },\n classNames: [ 'mynah-context-pill', ContextTypeClassNames[props.context.type ?? ContextTypes.SHOULD] ],\n children: [\n {\n type: 'label',\n attributes: { for: props.context.context },\n classNames: [ 'mynah-context-checkbox-label' ],\n events: !(props.showRemoveButton ?? false)\n ? {\n click: (event: Event) => {\n cancelEvent(event);\n ContextManager.getInstance().addOrUpdateContext({ ...props.context, visible: true });\n },\n }\n : {},\n children: [\n { type: 'span', innerHTML: props.context.context },\n ...(props.showRemoveButton ?? false\n ? [\n {\n type: 'div',\n classNames: [ 'filter-remove-button' ],\n events: {\n click: (event: Event) => {\n cancelEvent(event);\n ContextManager.getInstance().removeContext(props.context.context);\n },\n },\n children: [ new Icon({ icon: MynahIcons.CANCEL }).render ],\n },\n ]\n : []),\n ],\n },\n new Button({\n onClick: this.handleMenuOpen.bind(this),\n icon: new Icon({ icon: MynahIcons.MENU }).render,\n }).render.addClass('mynah-prioritise-button'),\n ],\n });\n }\n\n private readonly handleMenuOpen = (e: Event): void => {\n const elm: HTMLElement = e.currentTarget as HTMLElement;\n this.render.addClass('keep-active');\n const buttons = new PrioritizationMenuButtons({\n referenceElement: elm,\n context: this.props.context,\n onMenuClose: () => {\n this.render.removeClass('keep-active');\n },\n });\n buttons.createOverlay();\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\n\nexport interface FeedbackFormCommentProps {\n onChange?: (comment: string) => void;\n initComment?: string;\n}\nexport class FeedbackFormComment {\n render: ExtendedHTMLElement;\n\n constructor (props: FeedbackFormCommentProps) {\n this.render = DomBuilder.getInstance().build({\n type: 'textarea',\n events: {\n keyup: (e: InputEvent) => {\n if (props.onChange !== undefined) {\n props.onChange(this.render.value);\n }\n },\n },\n classNames: [ 'mynah-feedback-form-comment' ],\n attributes: {\n ...(props.initComment !== undefined && props.initComment.length > 0 ? {} : { disabled: 'disabled' }),\n value: props.initComment ?? '',\n placeholder: 'How was your search?',\n },\n });\n }\n\n setEnabled = (enabled: boolean): void => {\n if (enabled) {\n this.render.removeAttribute('disabled');\n this.render.focus();\n } else {\n this.render.setAttribute('disabled', 'disabled');\n }\n };\n\n setComment = (comment: string): void => {\n this.render.value = comment;\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { Icon, MynahIcons } from '../icon';\nimport { FeedbackStars } from '../../static';\n\nexport interface FeedbackFormStarsProps {\n onChange?: (star: FeedbackStars) => void;\n initStar?: FeedbackStars;\n}\nexport class FeedbackFormStars {\n render: ExtendedHTMLElement;\n\n constructor (props: FeedbackFormStarsProps) {\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-feedback-form-stars-container' ],\n attributes: { ...(props.initStar !== undefined && { 'selected-star': props.initStar.toString() }) },\n children: Array(5)\n .fill(undefined)\n .map((n, index) =>\n DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-feedback-form-star' ],\n events: {\n click: (e: MouseEvent) => {\n ;(this.render.querySelector('.selected') as ExtendedHTMLElement)?.removeClass(\n 'selected'\n )\n ;(e.currentTarget as ExtendedHTMLElement).addClass('selected');\n if (props.onChange !== undefined) {\n props.onChange((index + 1) as FeedbackStars);\n }\n this.setStar((index + 1) as FeedbackStars);\n },\n },\n attributes: { star: (index + 1).toString() },\n children: [ new Icon({ icon: MynahIcons.STAR }).render ],\n })\n ),\n });\n }\n\n setStar = (star: FeedbackStars): void => {\n this.render.setAttribute('selected-star', star.toString());\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FeedbackPayload, FeedbackStars } from '../../static';\nimport { cancelEvent, DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { Button } from '../button';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../overlay/overlay';\nimport { FeedbackFormComment } from './feedback-form-comment';\nimport { FeedbackFormStars } from './feedback-form-stars';\n\nexport interface FeedbackFormProps {\n onFeedbackSet: (feedbackPayload: FeedbackPayload) => void;\n initPayload?: FeedbackPayload;\n}\nexport class FeedbackForm {\n private formOverlay!: Overlay;\n private readonly feedbackStars: FeedbackFormStars;\n private readonly feedbackComment: FeedbackFormComment;\n private feedbackPayload: FeedbackPayload = {};\n private readonly triggerButton: ExtendedHTMLElement;\n private readonly feedbackSubmitButton: Button;\n public readonly feedbackFormContainer: ExtendedHTMLElement;\n public readonly feedbackContainer: ExtendedHTMLElement;\n private readonly onFeedbackSet;\n\n constructor (props: FeedbackFormProps) {\n this.onFeedbackSet = props.onFeedbackSet;\n if (props.initPayload !== undefined) {\n this.feedbackPayload = {\n ...(props.initPayload.stars !== undefined && { stars: props.initPayload.stars }),\n ...(props.initPayload.comment !== undefined && { comment: props.initPayload.comment }),\n };\n }\n\n this.triggerButton = DomBuilder.getInstance().build({\n type: 'a',\n classNames: [ 'mynah-feedback-trigger-button' ],\n events: {\n click: () => {\n this.formOverlay = new Overlay({\n children: [ this.feedbackFormContainer ],\n closeOnOutsideClick: true,\n dimOutside: false,\n horizontalDirection: OverlayHorizontalDirection.END_TO_LEFT,\n verticalDirection: OverlayVerticalDirection.TO_BOTTOM,\n referenceElement: this.triggerButton,\n });\n },\n },\n innerHTML: 'Leave us feedback',\n });\n\n this.feedbackStars = new FeedbackFormStars({\n onChange: (star: FeedbackStars) => {\n this.feedbackPayload.stars = star;\n this.onFeedbackSet({ stars: star });\n this.feedbackComment.setEnabled(true);\n this.feedbackSubmitButton.setEnabled(true);\n },\n initStar: this.feedbackPayload?.stars,\n });\n\n this.feedbackComment = new FeedbackFormComment({\n onChange: (comment: string) => {\n this.feedbackPayload.comment = comment;\n },\n initComment: this.feedbackPayload?.comment,\n });\n\n this.feedbackSubmitButton = new Button({\n label: 'Submit',\n onClick: () => {\n if (this.feedbackPayload.comment !== undefined && this.feedbackPayload.comment.trim() !== '') {\n this.onFeedbackSet({ comment: this.feedbackPayload.comment });\n }\n this.feedbackComment.setComment('');\n this.formOverlay.close();\n },\n });\n this.feedbackSubmitButton.setEnabled(false);\n\n this.feedbackFormContainer = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-feedback-form' ],\n events: { click: cancelEvent },\n children: [ this.feedbackStars.render, this.feedbackComment.render, this.feedbackSubmitButton.render ],\n });\n\n this.feedbackContainer = DomBuilder.getInstance().build({\n type: 'div',\n attributes: { id: 'mynah-feedback-form-container' },\n children: [ this.triggerButton ],\n });\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\n\nexport enum MynahIcons {\n MENU = 'menu',\n MINUS = 'minus',\n SEARCH = 'search',\n PLUS = 'plus',\n CHAT = 'chat',\n LINK = 'link',\n EXTERNAL = 'external',\n CANCEL = 'cancel',\n CALENDAR = 'calendar',\n MEGAPHONE = 'megaphone',\n EYE = 'eye',\n OK = 'ok',\n UP_CIRCLED = 'up-circled',\n UP_OPEN = 'up-open',\n DOWN_OPEN = 'down-open',\n RIGHT_OPEN = 'right-open',\n LEFT_OPEN = 'left-open',\n RESIZE_FULL = 'resize-full',\n RESIZE_SMALL = 'resize-small',\n BLOCK = 'block',\n OK_CIRCLED = 'ok-circled',\n INFO = 'info',\n WARNING = 'warning',\n ERROR = 'error',\n THUMBS_UP = 'thumbs-up',\n THUMBS_DOWN = 'thumbs-down',\n STAR = 'star',\n LIGHT_BULB = 'light-bulb',\n ENVELOPE_SEND = 'envelope-send',\n SEARCH_HISTORY = 'search-history',\n USER = 'user',\n PLAY = 'play',\n PAUSE = 'pause',\n CODE_BLOCK = 'code-block',\n COPY = 'copy',\n TEXT_SELECT = 'text-select',\n}\n\nexport interface IconProps {\n icon: MynahIcons;\n classNames?: string[];\n}\nexport class Icon {\n render: ExtendedHTMLElement;\n constructor (props: IconProps) {\n this.render = DomBuilder.getInstance().build({\n type: 'i',\n classNames: [\n 'mynah-icon',\n `mynah-icon-${props.icon}`,\n ...(props.classNames !== undefined ? props.classNames : []),\n ],\n });\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nimport { OnCopiedToClipboardFunctionWithSuggestionId, RelevancyVoteType, Suggestion, SuggestionEngagement } from '../static';\nimport { SuggestionCard } from './suggestion-card/suggestion-card';\n\nexport interface MainContainerProps {\n onSuggestionOpen?: (suggestion: Suggestion) => void;\n onSuggestionLinkClick?: (suggestion: Suggestion) => void;\n onSuggestionLinkCopy?: (suggestion: Suggestion) => void;\n onSuggestionEngaged?: (engagementInfo: SuggestionEngagement) => void;\n onCopiedToClipboard?: OnCopiedToClipboardFunctionWithSuggestionId;\n onVoteChange: (suggestion: Suggestion, vote: RelevancyVoteType) => void;\n onScroll?: (e: Event) => void;\n}\nexport class MainContainer {\n private readonly onSuggestionOpen;\n private readonly onSuggestionLinkClick;\n private readonly onSuggestionLinkCopy;\n private readonly onSuggestionEngaged;\n private readonly onCopiedToClipboard;\n private readonly onVoteChange;\n private readonly cardsWrapper: ExtendedHTMLElement;\n private readonly skeletonWrapper: ExtendedHTMLElement;\n public render: ExtendedHTMLElement;\n constructor (props: MainContainerProps) {\n this.onVoteChange = props.onVoteChange;\n this.onSuggestionOpen = props.onSuggestionOpen;\n this.onSuggestionLinkClick = props.onSuggestionLinkClick;\n this.onSuggestionLinkCopy = props.onSuggestionLinkCopy;\n this.onSuggestionEngaged = props.onSuggestionEngaged;\n this.onCopiedToClipboard = props.onCopiedToClipboard;\n this.cardsWrapper = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-cards-wrapper' ],\n events: { ...(props.onScroll !== undefined && { scroll: props.onScroll }) },\n persistent: true,\n });\n this.skeletonWrapper = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-skeleton-wrapper' ],\n persistent: true,\n children: [\n new SuggestionCard({\n onVoteChange: this.onVoteChange,\n suggestion: {\n title: 'Lorem ipsum dolor sit',\n url: '#mynahisawesome.com/mynah',\n body: `<p>Lorem ipsum dolor sit amet</p>\n <p>Nunc sit amet nulla sit amet est rhoncus ornare. In sodales tristique finibus.</p>\n <pre><code>lorem sit amet</code></pre>`,\n id: 'skeleton-1',\n context: [ 'skl-con-1', 'skl-con-2' ],\n },\n }).render.addClass('mynah-card-skeleton'),\n new SuggestionCard({\n onVoteChange: this.onVoteChange,\n suggestion: {\n title: 'Lorem ipsum dolor sit',\n url: '#mynahismorenadmoreawesome.com/mynah',\n body: `<p>Lorem ipsum dolor sit amet</p>\n <pre><code>sit amet\n loremasdasdsadasdasdasd\n asd</code></pre>`,\n id: 'skeleton-2',\n context: [ 'skl-con-3', 'skl-con-4' ],\n },\n }).render.addClass('mynah-card-skeleton'),\n ],\n });\n\n this.render = DomBuilder.getInstance().build({\n persistent: true,\n type: 'div',\n classNames: [ 'mynah-main' ],\n children: [ this.cardsWrapper, this.skeletonWrapper ],\n });\n }\n\n clearCards = (): void => {\n this.render.removeClass('mynah-hide-content').removeClass('mynah-show-content');\n setTimeout(() => {\n this.render.addClass('mynah-hide-content');\n }, 10);\n };\n\n updateCards = (suggestions: Suggestion[]): void => {\n setTimeout(() => {\n this.cardsWrapper.clear();\n if (suggestions.length === 0) {\n this.cardsWrapper.insertChild(\n 'beforeend',\n DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-no-suggestion-indicator' ],\n children: [\n {\n type: 'span',\n children: [\n \"We couldn't find any relevant results with your search. Please refine your search and try again.\",\n ],\n },\n ],\n }) as HTMLElement\n );\n } else {\n suggestions.forEach((suggestion, index) => {\n this.cardsWrapper.insertChild(\n 'beforeend',\n new SuggestionCard({\n suggestion,\n onVoteChange: this.onVoteChange,\n onSuggestionOpen: this.onSuggestionOpen?.bind(this),\n onSuggestionLinkClick: this.onSuggestionLinkClick?.bind(this),\n onSuggestionLinkCopy: this.onSuggestionLinkCopy?.bind(this),\n onSuggestionEngaged: this.onSuggestionEngaged?.bind(this),\n onCopiedToClipboard: this.onCopiedToClipboard?.bind(this),\n }).render\n );\n });\n }\n\n setTimeout(() => {\n this.render.addClass('mynah-show-content');\n }, 10);\n }, 250);\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { cancelEvent, DomBuilderObject, DS, ExtendedHTMLElement } from '../../helper/dom';\nimport { Icon, MynahIcons } from '../icon';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection, OVERLAY_MARGIN } from '../overlay/overlay';\n\ntype NotificationContentType = string | ExtendedHTMLElement | HTMLElement | DomBuilderObject;\n\n/**\n * Options for where to show the notification\n */\nexport enum NotificationTarget {\n /**\n * Shows an IDE level notification\n */\n IDE = 'ide',\n /**\n * Shows a notification inside the extension UI\n */\n UI = 'ui',\n}\n\nexport enum NotificationType {\n INFO = MynahIcons.INFO,\n SUCCESS = MynahIcons.OK_CIRCLED,\n WARNING = MynahIcons.WARNING,\n ERROR = MynahIcons.ERROR,\n}\n\nexport interface NotificationProps {\n duration?: number;\n type?: NotificationType;\n title?: string;\n content: NotificationContentType | NotificationContentType[];\n onNotificationClick?: () => void;\n onNotificationHide?: () => void;\n}\n\nexport class Notification {\n private notificationOverlay!: Overlay;\n private readonly duration;\n private readonly type;\n private readonly props;\n\n constructor (props: NotificationProps) {\n this.duration = props.duration !== undefined ? props.duration : 5000;\n this.type = props.type ?? NotificationType.INFO;\n this.props = props;\n }\n\n public notify (): void {\n this.notificationOverlay = new Overlay({\n referencePoint: {\n left: Math.max(document.documentElement.clientWidth ?? 0, window.innerWidth ?? 0),\n top: this.getNextCalculatedTop(),\n },\n dimOutside: false,\n closeOnOutsideClick: false,\n horizontalDirection: OverlayHorizontalDirection.TO_LEFT,\n verticalDirection: OverlayVerticalDirection.TO_BOTTOM,\n onClose: this.props.onNotificationHide,\n children: [\n {\n type: 'div',\n classNames: [\n 'mynah-notification',\n this.props.onNotificationClick !== undefined ? 'mynah-notification-clickable' : '',\n ],\n events: {\n click: e => {\n cancelEvent(e);\n if (this.props.onNotificationClick !== undefined) {\n this.props.onNotificationClick();\n this.notificationOverlay?.close();\n }\n },\n },\n children: [\n new Icon({ icon: this.type.toString() as MynahIcons }).render,\n {\n type: 'div',\n classNames: [ 'mynah-notification-container' ],\n children: [\n {\n type: 'h3',\n classNames: [ 'mynah-notification-title' ],\n children: [ this.props.title ?? '' ],\n },\n {\n type: 'div',\n classNames: [ 'mynah-notification-content' ],\n children: this.getChildren(this.props.content),\n },\n ],\n },\n ],\n },\n ],\n });\n\n if (this.duration !== -1) {\n setTimeout(() => {\n this.notificationOverlay?.close();\n }, this.duration);\n }\n }\n\n /**\n * Calculates the top according to the previously shown and still visible notifications\n * @returns number\n */\n private readonly getNextCalculatedTop = (): number => {\n const prevNotifications = DS('.mynah-notification');\n if (prevNotifications.length > 0) {\n const prevNotificationRectangle = prevNotifications[prevNotifications.length - 1].getBoundingClientRect();\n return prevNotificationRectangle.top + prevNotificationRectangle.height + OVERLAY_MARGIN;\n }\n return 0;\n };\n\n private readonly getChildren = (content: NotificationContentType | NotificationContentType[]): NotificationContentType[] => {\n if (content instanceof Array) {\n return content;\n }\n return [ content ];\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/* eslint-disable @typescript-eslint/brace-style */\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { generateUID } from '../../helper/guid';\nimport { MynahPortalNames } from '../../static';\n\nexport const OVERLAY_MARGIN = 8;\n/**\n * The horizontal creation direction of the overlay\n */\nexport enum OverlayHorizontalDirection {\n /**\n * starts from the left edge of the reference element and opens to left\n */\n TO_LEFT = 'horizontal-direction-to-left',\n /**\n * starts from the right edge of the reference element and opens to left\n */\n END_TO_LEFT = 'horizontal-direction-from-end-to-left',\n /**\n * starts from the right edge of the reference element and opens to right\n */\n TO_RIGHT = 'horizontal-direction-to-right',\n /**\n * starts from the left edge of the reference element and opens to right\n */\n START_TO_RIGHT = 'horizontal-direction-from-start-to-right',\n /**\n * starts and opens at the center of the reference element\n */\n CENTER = 'horizontal-direction-at-center',\n}\n\n/**\n * The vertical creation direction of the overlay\n */\nexport enum OverlayVerticalDirection {\n /**\n * starts from the bottom edge of the reference element and opens to bottom\n */\n TO_BOTTOM = 'vertical-direction-to-bottom',\n /**\n * starts from the top edge of the reference element and opens to bottom\n */\n START_TO_BOTTOM = 'vertical-direction-from-start-to-bottom',\n /**\n * starts from the top edge of the reference element and opens to top\n */\n TO_TOP = 'vertical-direction-to-top',\n /**\n * starts from the bottom edge of the reference element and opens to top\n */\n END_TO_TOP = 'vertical-direction-from-end-to-top',\n /**\n * starts and opens at the center of the reference element\n */\n CENTER = 'vertical-direction-at-center',\n}\n\nexport interface OverlayProps {\n referenceElement?: Element | ExtendedHTMLElement;\n referencePoint?: { top: number; left: number };\n children: Array<HTMLElement | ExtendedHTMLElement | DomBuilderObject>;\n horizontalDirection?: OverlayHorizontalDirection;\n verticalDirection?: OverlayVerticalDirection;\n dimOutside?: boolean;\n closeOnOutsideClick?: boolean;\n onClose?: () => void;\n}\nexport class Overlay {\n render: ExtendedHTMLElement;\n private readonly container: ExtendedHTMLElement;\n private readonly innerContainer: ExtendedHTMLElement;\n private readonly guid = generateUID();\n private readonly onClose;\n\n constructor (props: OverlayProps) {\n const horizontalDirection = props.horizontalDirection ?? OverlayHorizontalDirection.TO_RIGHT;\n const verticalDirection = props.verticalDirection ?? OverlayVerticalDirection.START_TO_BOTTOM;\n this.onClose = props.onClose;\n const dimOutside = props.dimOutside !== false;\n const closeOnOutsideClick = props.closeOnOutsideClick !== false;\n\n const calculatedTop = this.getCalculatedTop(verticalDirection, props.referenceElement, props.referencePoint);\n const calculatedLeft = this.getCalculatedLeft(horizontalDirection, props.referenceElement, props.referencePoint);\n\n this.innerContainer = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-overlay-inner-container' ],\n children: props.children,\n });\n\n this.container = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-overlay-container', horizontalDirection, verticalDirection ],\n attributes: {\n style: `top: ${calculatedTop}px; left: ${calculatedLeft}px;`,\n },\n children: [ this.innerContainer ],\n });\n\n // this is a portal that goes over all the other items\n // to make it as an overlay item\n this.render = DomBuilder.getInstance().createPortal(\n `${MynahPortalNames.OVERLAY}-${this.guid}`,\n {\n type: 'div',\n attributes: { id: `mynah-overlay-${this.guid}` },\n classNames: [\n 'mynah-overlay',\n ...(dimOutside ? [ 'mynah-overlay-dim-outside' ] : []),\n ...(closeOnOutsideClick ? [ 'mynah-overlay-close-on-outside-click' ] : []),\n ],\n events: {\n click: closeOnOutsideClick ? this.close : () => {},\n },\n children: [ this.container ],\n },\n 'beforeend'\n );\n\n const containerRectangle = this.container.getBoundingClientRect();\n const winHeight = Math.max(document.documentElement.clientHeight ?? 0, window.innerHeight ?? 0);\n const winWidth = Math.max(document.documentElement.clientWidth ?? 0, window.innerWidth ?? 0);\n\n // if it will open at the center of the reference element or point\n // we only need the half of both measurements\n const comparingWidth =\n horizontalDirection === OverlayHorizontalDirection.CENTER\n ? containerRectangle.width / 2\n : containerRectangle.width;\n const comparingHeight =\n verticalDirection === OverlayVerticalDirection.CENTER\n ? containerRectangle.height / 2\n : containerRectangle.height;\n\n // if overlay will open to right or at center\n // we're checking if it exceeds from the right edge of the window\n if (\n horizontalDirection !== OverlayHorizontalDirection.TO_LEFT &&\n horizontalDirection !== OverlayHorizontalDirection.END_TO_LEFT &&\n comparingWidth + OVERLAY_MARGIN + calculatedLeft > winWidth\n ) {\n this.container.style.left =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n calculatedLeft - (comparingWidth + OVERLAY_MARGIN + calculatedLeft - winWidth) + 'px';\n }\n // else if the direction is selected as a one that goes to the left,\n // we need to check if it is exceeding from the left edge of the window\n else if (calculatedLeft + comparingWidth - containerRectangle.width < OVERLAY_MARGIN) {\n this.container.style.left =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n calculatedLeft + (OVERLAY_MARGIN - calculatedLeft + (comparingWidth - containerRectangle.width)) + 'px';\n }\n\n // if overlay will open to bottom or at center\n // we're checking if it exceeds from the bottom edge of the window\n if (\n verticalDirection !== OverlayVerticalDirection.TO_TOP &&\n verticalDirection !== OverlayVerticalDirection.END_TO_TOP &&\n comparingHeight + OVERLAY_MARGIN + calculatedTop > winHeight\n ) {\n this.container.style.top =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n calculatedTop - (comparingHeight + OVERLAY_MARGIN + calculatedTop - winHeight) + 'px';\n }\n // else if the direction is selected as a one that goes to the top,\n // we need to check if it is exceeding from the top edge of the window\n else if (calculatedTop + comparingHeight - containerRectangle.height < OVERLAY_MARGIN) {\n this.container.style.top =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n calculatedTop + (OVERLAY_MARGIN - calculatedTop + (comparingHeight - containerRectangle.height)) + 'px';\n }\n\n // we need to delay the class toggle\n // to avoid the skipping of the transition comes from css\n // for a known js-css relation problem\n setTimeout(() => {\n this.render.addClass('mynah-overlay-open');\n\n if (closeOnOutsideClick) {\n window.addEventListener('blur', this.windowBlurHandler.bind(this));\n window.addEventListener('resize', this.windowBlurHandler.bind(this));\n }\n }, 10);\n }\n\n close = (): void => {\n this.render.removeClass('mynah-overlay-open');\n // In this timeout, we're waiting the close animation to be ended\n setTimeout(() => {\n this.render.remove();\n }, 250);\n if (this.onClose !== undefined) {\n this.onClose();\n }\n };\n\n private readonly windowBlurHandler = (): void => {\n this.close();\n window.removeEventListener('blur', this.windowBlurHandler.bind(this));\n window.removeEventListener('resize', this.windowBlurHandler.bind(this));\n };\n\n private readonly getCalculatedLeft = (\n horizontalDirection: OverlayHorizontalDirection,\n referenceElement?: Element | ExtendedHTMLElement,\n referencePoint?: { top?: number; left: number }\n ): number => {\n const referenceRectangle =\n referenceElement !== undefined\n ? referenceElement.getBoundingClientRect()\n : referencePoint !== undefined\n ? { left: referencePoint.left, width: 0 }\n : { left: 0, width: 0 };\n\n switch (horizontalDirection.toString()) {\n case OverlayHorizontalDirection.TO_RIGHT:\n return referenceRectangle.left + referenceRectangle.width + OVERLAY_MARGIN;\n case OverlayHorizontalDirection.START_TO_RIGHT:\n return referenceRectangle.left;\n case OverlayHorizontalDirection.TO_LEFT:\n return referenceRectangle.left - OVERLAY_MARGIN;\n case OverlayHorizontalDirection.END_TO_LEFT:\n return referenceRectangle.left + referenceRectangle.width;\n case OverlayHorizontalDirection.CENTER:\n return referenceRectangle.left + referenceRectangle.width / 2;\n default:\n return 0;\n }\n };\n\n private readonly getCalculatedTop = (\n verticalDirection: OverlayVerticalDirection,\n referenceElement?: Element | ExtendedHTMLElement,\n referencePoint?: { top: number; left?: number }\n ): number => {\n const referenceRectangle =\n referenceElement !== undefined\n ? referenceElement.getBoundingClientRect()\n : referencePoint !== undefined\n ? { top: referencePoint.top, height: 0 }\n : { top: 0, height: 0 };\n\n switch (verticalDirection.toString()) {\n case OverlayVerticalDirection.TO_BOTTOM:\n return referenceRectangle.top + referenceRectangle.height + OVERLAY_MARGIN;\n case OverlayVerticalDirection.START_TO_BOTTOM:\n return referenceRectangle.top;\n case OverlayVerticalDirection.TO_TOP:\n return referenceRectangle.top - OVERLAY_MARGIN;\n case OverlayVerticalDirection.END_TO_TOP:\n return referenceRectangle.top + referenceRectangle.height;\n case OverlayVerticalDirection.CENTER:\n return referenceRectangle.top + referenceRectangle.height / 2;\n default:\n return referenceRectangle.top;\n }\n };\n\n public updateContent = (children: Array<string | DomBuilderObject | HTMLElement | ExtendedHTMLElement>): void => {\n this.innerContainer.update({ children });\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ContextType, ContextTypeClassNames, ContextTypes } from '../static';\nimport { cancelEvent, DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nimport { Button } from './button';\nimport { Overlay, OverlayVerticalDirection } from './overlay/overlay';\nimport { ContextManager } from '../helper/context-manager';\nexport interface PrioritizationMenuButtonsProps {\n context: ContextType;\n referenceElement: Element | ExtendedHTMLElement;\n onMenuClose: () => void;\n}\nexport class PrioritizationMenuButtons {\n private menuOverlay!: Overlay;\n private readonly props: PrioritizationMenuButtonsProps;\n constructor (props: PrioritizationMenuButtonsProps) {\n this.props = props;\n }\n\n public createOverlay (): void {\n this.menuOverlay = new Overlay({\n referenceElement: this.props.referenceElement,\n verticalDirection: OverlayVerticalDirection.CENTER,\n onClose: this.props.onMenuClose,\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-prioritization-menu-buttons-container' ],\n children: [\n new Button({\n classNames: [ 'mynah-prioritise-button', ContextTypeClassNames[ContextTypes.MUST] ],\n onClick: (e: Event) => {\n cancelEvent(e);\n this.handlePrioritizationButtonClick.apply(this, [ ContextTypes.MUST ]);\n },\n label: DomBuilder.getInstance().build({\n type: 'span',\n innerHTML: `Must have&nbsp;<b>${this.props.context.context}</b>`,\n }),\n }).render,\n new Button({\n classNames: [ 'mynah-prioritise-button', ContextTypeClassNames[ContextTypes.SHOULD] ],\n onClick: (e: Event) => {\n cancelEvent(e);\n this.handlePrioritizationButtonClick.apply(this, [ ContextTypes.SHOULD ]);\n },\n label: DomBuilder.getInstance().build({\n type: 'span',\n innerHTML: `More with&nbsp;<b>${this.props.context.context}</b>`,\n }),\n }).render,\n new Button({\n classNames: [ 'mynah-prioritise-button', ContextTypeClassNames[ContextTypes.MUST_NOT] ],\n onClick: (e: Event) => {\n cancelEvent(e);\n this.handlePrioritizationButtonClick.apply(this, [ ContextTypes.MUST_NOT ]);\n },\n label: DomBuilder.getInstance().build({\n type: 'span',\n innerHTML: `Without&nbsp;<b>${this.props.context.context}</b>`,\n }),\n }).render,\n ],\n },\n ],\n });\n }\n\n private readonly handlePrioritizationButtonClick = (priority: ContextTypes): void => {\n this.menuOverlay.close();\n ContextManager.getInstance().addOrUpdateContext({ ...this.props.context, type: priority, visible: true });\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AutocompleteItem } from '../../static';\nimport { cancelEvent, DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { Button } from '../button';\n\nexport interface AutocompleteCardContentProps {\n searchQuery: string;\n content: AutocompleteItem;\n onAutocompleteClick: (autocompleteQuery: AutocompleteItem, index: number) => void;\n index: number;\n isHovered: boolean | false;\n}\nexport class AutocompleteCardContent {\n render: ExtendedHTMLElement;\n openSearch: any;\n searchQuery: string;\n\n constructor (props: AutocompleteCardContentProps) {\n this.searchQuery = props.searchQuery;\n const buttonClassNames = [ 'mynah-autocomplete-button' ];\n if (props.isHovered) {\n buttonClassNames.push('hover');\n }\n this.render = new Button({\n classNames: buttonClassNames,\n onClick: (e: Event) => {\n cancelEvent(e);\n props.onAutocompleteClick(props.content, props.index);\n },\n label: DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-autocomplete-button-label' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-autocomplete-title-wrapper' ],\n children: [\n {\n classNames: [ 'autocomplete' ],\n type: 'h3',\n innerHTML: this.formatSuggestion(props.content.suggestion),\n },\n ],\n },\n ],\n }),\n }).render;\n }\n\n private formatSuggestion (suggestion: string): string {\n const boldWords = this.searchQuery.split(' ').filter(word => word.trim().length > 0);\n\n boldWords.forEach(word => {\n suggestion = suggestion.replace(new RegExp('(' + word + ')', 'i'), makeBold('$1'));\n });\n\n function makeBold (word: string): string {\n return word.bold();\n }\n return suggestion;\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AutocompleteItem } from '../../static';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../overlay/overlay';\nimport { AutocompleteCardContent } from './autocomplete-card';\n\nexport interface AutocompleteContentProps {\n searchQuery: string;\n referenceElement: Element | ExtendedHTMLElement;\n autocompleteSuggestions: AutocompleteItem[];\n onAutocompleteClick: (autocompleteQuery: AutocompleteItem, index: number, count: number) => void;\n onClose?: () => void;\n}\n\nexport class AutocompleteContent {\n private readonly autocompleteItemsOverlay;\n public suggestions;\n private searchQuery: string;\n private currHover: number;\n private readonly props: AutocompleteContentProps;\n private isUsed: boolean;\n render!: ExtendedHTMLElement;\n constructor (props: AutocompleteContentProps) {\n this.props = props;\n this.isUsed = false;\n this.suggestions = props.autocompleteSuggestions;\n this.searchQuery = props.searchQuery;\n this.currHover = 0;\n\n this.autocompleteItemsOverlay = new Overlay({\n dimOutside: false,\n referenceElement: props.referenceElement,\n verticalDirection: OverlayVerticalDirection.TO_BOTTOM,\n horizontalDirection: OverlayHorizontalDirection.START_TO_RIGHT,\n onClose: props.onClose,\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-autocomplete-items-wrapper' ],\n children: this.autocompleteCards(this.props.autocompleteSuggestions, 0),\n },\n ],\n });\n }\n\n autocompleteCards = (autocompleteSuggestions: AutocompleteItem[], hovered: number): ExtendedHTMLElement[] =>\n autocompleteSuggestions.map(\n (record, index) =>\n new AutocompleteCardContent({\n searchQuery: this.searchQuery,\n content: record,\n onAutocompleteClick: this.handleAutocompleteClick.bind(this),\n isHovered: index + 1 === hovered,\n index: index + 1,\n }).render\n );\n\n private readonly handleAutocompleteClick = (autocompleteItem: AutocompleteItem, index: number): void => {\n this.autocompleteItemsOverlay.close();\n this.props.onAutocompleteClick(autocompleteItem, index, this.getSuggestionsCount());\n };\n\n public updateSuggestions = (autocompleteSuggestions: AutocompleteItem[], hoverQuery: number): void => {\n this.suggestions = autocompleteSuggestions;\n const cards = this.autocompleteCards(autocompleteSuggestions, hoverQuery);\n const cardWrapper = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-autocomplete-items-wrapper' ],\n children: cards,\n });\n this.autocompleteItemsOverlay.updateContent([ cardWrapper ]);\n cardWrapper.addClass('make-items-as-ghost');\n setTimeout(() => {\n cardWrapper.removeClass('make-items-as-ghost');\n }, 50);\n };\n\n public updateQuery = (searchQuery: string): void => {\n this.searchQuery = searchQuery;\n };\n\n public hover = (isUp: boolean): string => {\n if (isUp) {\n this.currHover = this.currHover === 0 ? this.suggestions.length : this.currHover - 1;\n } else {\n this.currHover = (this.currHover + 1) % (this.suggestions.length + 1);\n }\n\n this.updateSuggestions(this.suggestions, this.currHover);\n\n if (this.currHover === 0) {\n this.setIsUsed(false);\n return this.searchQuery;\n } else {\n this.setIsUsed(true);\n return this.suggestions[this.currHover - 1].suggestion;\n }\n };\n\n public setIsUsed = (val: boolean): void => {\n this.isUsed = val;\n };\n\n public getIsUsed = (): boolean => {\n return this.isUsed;\n };\n\n public getCurrentSelected = (): number => {\n return this.currHover;\n };\n\n public getSuggestionsCount = (): number => {\n return this.suggestions.length;\n };\n\n public close = (): void => {\n this.autocompleteItemsOverlay.close();\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { cancelEvent, DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { Icon, MynahIcons } from '../icon';\nimport { SyntaxHighlighter } from '../syntax-highlighter';\nimport { getLanguageFromFileName } from '../../helper/find-language';\nimport { SupportedCodingLanguagesExtensionToTypeMap } from '../../static';\n\nexport interface SearchApiHelpProps {\n code: string;\n fileName?: string;\n range?: {\n start: { row: string; column?: string };\n end?: { row: string; column?: string };\n };\n}\nexport class SearchApiHelp {\n props!: SearchApiHelpProps;\n render: ExtendedHTMLElement;\n private isCollapsed: boolean = true;\n private readonly onCodeDetailsClicked?: (\n code: string,\n fileName?: string,\n range?: {\n start: { row: string; column?: string };\n end?: { row: string; column?: string };\n }\n ) => void;\n\n constructor (\n onCodeDetailsClicked?: (\n code: string,\n fileName?: string,\n range?: {\n start: { row: string; column?: string };\n end?: { row: string; column?: string };\n }\n ) => void\n ) {\n if (onCodeDetailsClicked !== undefined) {\n this.onCodeDetailsClicked = onCodeDetailsClicked;\n }\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-search-api-help', 'hide', 'collapsed' ],\n children: [],\n });\n }\n\n public hide = (): void => {\n this.render.addClass('hide');\n };\n\n public show = (): void => {\n this.render.removeClass('hide');\n };\n\n public updateContent = (props: SearchApiHelpProps): void => {\n this.props = props;\n this.render.update({\n children: [\n DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-search-api-help-code-view-detail-row' ],\n children: [\n {\n type: 'h4',\n innerHTML: 'Target file:',\n },\n {\n type: 'b',\n innerHTML: props.fileName,\n },\n ],\n }),\n DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-search-api-help-code-view-detail-row' ],\n children: [\n {\n type: 'h4',\n innerHTML: 'Selected range:',\n },\n {\n type: 'span',\n innerHTML:\n props.range !== undefined\n ? `${props.range.end !== undefined ? 'From ' : ''}line <b>${\n props.range.start.row\n }</b>, column <b>${props.range.start.column ?? ''}</b> ${\n props.range.end !== undefined\n ? `to line <b>${props.range.end?.row}</b>, column <b>${\n props.range.end?.column ?? ''\n }</b>`\n : ''\n }`\n : '',\n },\n ],\n }),\n DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-search-api-help-code-view-wrapper' ],\n events: {\n click: e => {\n cancelEvent(e);\n // uncollapse only if it is collapsed, not collapse it back with code click to make it selectable\n if (this.isCollapsed) {\n this.isCollapsed = false;\n if (this.onCodeDetailsClicked !== undefined) {\n this.onCodeDetailsClicked(this.props.code, this.props.fileName, this.props.range);\n }\n this.render.removeClass('collapsed');\n }\n },\n },\n children: [\n new SyntaxHighlighter({\n codeStringWithMarkup: props.code,\n language:\n props.fileName !== undefined\n ? getLanguageFromFileName(props.fileName)\n : SupportedCodingLanguagesExtensionToTypeMap.js,\n keepHighlights: false,\n showLineNumbers: true,\n startingLineNumber: Number(props.range?.start.row ?? 1),\n }).render,\n ],\n }),\n DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-search-api-help-collapser' ],\n events: {\n click: e => {\n cancelEvent(e);\n this.isCollapsed = !this.isCollapsed;\n if (this.onCodeDetailsClicked !== undefined) {\n this.onCodeDetailsClicked(this.props.code, this.props.fileName, this.props.range);\n }\n this.render.toggleClass('collapsed');\n },\n },\n children: [\n {\n type: 'span',\n classNames: [ 'mynah-search-api-help-uncollapse-icon' ],\n children: [ new Icon({ icon: MynahIcons.DOWN_OPEN }).render ],\n },\n {\n type: 'span',\n classNames: [ 'mynah-search-api-help-collapse-icon' ],\n children: [ new Icon({ icon: MynahIcons.UP_OPEN }).render ],\n },\n ],\n }),\n ],\n });\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FeedbackPayload } from '../../static';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { FeedbackForm } from '../feedback-form/feedback-form';\n\nexport interface SearchCardHeaderProps {\n onFeedbackSet: (feedbackPayload: FeedbackPayload) => void;\n}\nexport class SearchCardHeader {\n private readonly feedbackForm: FeedbackForm;\n render: ExtendedHTMLElement;\n\n constructor (props: SearchCardHeaderProps) {\n this.feedbackForm = new FeedbackForm({ onFeedbackSet: props.onFeedbackSet });\n\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n persistent: true,\n classNames: [ 'mynah-search-block-header' ],\n children: [ this.feedbackForm.feedbackContainer ],\n });\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport {\n LiveSearchState,\n MynahEventNames,\n SearchPayload,\n SearchPayloadMatchPolicy,\n Suggestion,\n ContextSource,\n ContextTypes,\n SearchHistoryItem,\n FeedbackPayload,\n AutocompleteItem,\n SearchHistoryFilters\n} from '../../static';\nimport { Button } from '../button';\nimport { Icon, MynahIcons } from '../icon';\nimport { SearchContext } from './search-context';\nimport { SearchInput } from './search-input';\nimport { SearchApiHelp } from './search-api-help';\nimport { SearchLiveToggle } from './search-live-toggle';\nimport { SearchCardHeader } from './search-card-header';\nimport { ContextManager } from '../../helper/context-manager';\n\nexport interface SearchCardProps {\n onSearch: (\n searchPayload: SearchPayload,\n isFromAutocomplete: boolean,\n currAutocompleteSuggestionSelected?: number,\n autocompleteSuggestionsCount?: number\n ) => void;\n onHistoryChange?: (historySuggestions: Suggestion[], searchPayload: SearchPayload) => void;\n onLiveSearchToggle?: (value: LiveSearchState) => void;\n onFeedbackSet: (feedbackPayload: FeedbackPayload) => void;\n onHistoryOpen: (filterPayload: SearchHistoryFilters) => Promise<SearchHistoryItem[]>;\n onAutocompleteRequest: (input: string) => Promise<AutocompleteItem[]>;\n onCodeDetailsClicked?: (\n code: string,\n fileName?: string,\n range?: {\n start: { row: string; column?: string };\n end?: { row: string; column?: string };\n }\n ) => void;\n initContextList?: SearchPayloadMatchPolicy;\n initText?: string;\n liveSearch?: boolean;\n codeSelection?: {\n selectedCode: string;\n file?: {\n range: {\n start: { row: string; column: string };\n end: { row: string; column: string };\n };\n name: string;\n };\n };\n codeQuery?: {\n simpleNames: string[];\n usedFullyQualifiedNames: string[];\n };\n}\nexport class SearchCard {\n props: SearchCardProps;\n private historyProcess!: boolean;\n private readonly searchInput: SearchInput;\n private readonly searchAPIHelp: SearchApiHelp;\n private liveSearchToggle: SearchLiveToggle | undefined = undefined;\n private searchPayload: SearchPayload;\n private readonly foldUnfoldButton: Button;\n private readonly contextManagement: SearchContext;\n private readonly searchCardHeader: SearchCardHeader;\n private unfoldedByContextInsertion: boolean = false;\n private unfoldedByButton: boolean = false;\n render: ExtendedHTMLElement;\n constructor (props: SearchCardProps) {\n this.props = props;\n this.foldUnfoldButton = new Button({\n children: [ new Icon({ icon: MynahIcons.DOWN_OPEN }).render, new Icon({ icon: MynahIcons.UP_OPEN }).render ],\n onClick: () => {\n if (this.render.hasClass('mynah-search-block-unfold')) {\n this.unfoldedByButton = false;\n if (!this.unfoldedByContextInsertion) {\n this.render.removeClass('mynah-search-block-unfold');\n }\n } else {\n this.unfoldedByButton = true;\n this.render.addClass('mynah-search-block-unfold');\n }\n },\n classNames: [ 'mnynah-search-block-fold-unfold-button' ],\n });\n\n DomBuilder.getInstance().root.addEventListener(MynahEventNames.CONTEXT_VISIBILITY_CHANGE, () => {\n this.handleContextChange(ContextManager.getInstance().getContextMatchPolicy());\n });\n\n this.searchPayload = {\n query: props.initText ?? '',\n matchPolicy: props.initContextList ?? {\n must: [],\n should: [],\n mustNot: [],\n },\n codeSelection: props.codeSelection ?? {\n selectedCode: '',\n file: {\n range: {\n start: { row: '', column: '' },\n end: { row: '', column: '' },\n },\n name: '',\n },\n },\n codeQuery: props.codeQuery ?? {\n simpleNames: [],\n usedFullyQualifiedNames: [],\n },\n };\n this.contextManagement = new SearchContext({\n initContextList: props.initContextList,\n onContextInsertionEnabled: () => {\n this.unfoldedByContextInsertion = true;\n this.render.addClass('mynah-search-block-unfold');\n },\n onContextInsertionDisabled: () => {\n this.unfoldedByContextInsertion = false;\n if (!this.unfoldedByButton) {\n this.render.removeClass('mynah-search-block-unfold');\n }\n },\n });\n this.searchInput = new SearchInput({\n onSearch: this.handleSearchQueryChange.bind(this),\n onHistoryChange: this.handleHistoryChange,\n onHistoryOpen: props.onHistoryOpen,\n onAutocompleteRequest: props.onAutocompleteRequest,\n initText: props.initText,\n hideHistoryButton: false,\n searchAlwaysActive: props.codeSelection !== undefined && props.codeSelection.selectedCode !== '',\n });\n\n this.searchAPIHelp = new SearchApiHelp(props.onCodeDetailsClicked);\n if (props.codeSelection !== undefined && props.codeSelection.selectedCode !== '') {\n this.searchAPIHelp.updateContent({\n code: props.codeSelection.selectedCode,\n fileName: props.codeSelection.file?.name,\n range: props.codeSelection.file?.range,\n });\n this.searchAPIHelp.show();\n }\n\n if (props.liveSearch ?? false) {\n this.liveSearchToggle = new SearchLiveToggle({\n label: 'Live suggestions:',\n value: LiveSearchState.RESUME,\n onChange: props.onLiveSearchToggle,\n });\n }\n\n this.searchCardHeader = new SearchCardHeader({ onFeedbackSet: props.onFeedbackSet });\n\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n persistent: true,\n classNames: [ 'mynah-search-block' ],\n children: [\n this.searchCardHeader.render,\n ...((props.liveSearch ?? false) && this.liveSearchToggle !== undefined\n ? [ this.liveSearchToggle.render ]\n : []),\n this.searchAPIHelp.render,\n this.searchInput.render,\n this.contextManagement.render,\n this.foldUnfoldButton.render,\n ],\n });\n }\n\n public addFocusOnInput = (): void => {\n this.searchInput.addFocusOnInput();\n };\n\n private readonly performSearch = (\n isFromAutocomplete: boolean,\n currAutocompleteSuggestionSelected?: number,\n autocompleteSuggestionsCount?: number\n ): void => {\n this.props.onSearch(\n this.searchPayload,\n isFromAutocomplete,\n currAutocompleteSuggestionSelected,\n autocompleteSuggestionsCount\n );\n this.removeLiveSearchToggle();\n };\n\n private readonly handleSearchQueryChange = (\n searchQuery: string,\n isFromAutocomplete: boolean,\n currAutocompleteSuggestionSelected?: number,\n autocompleteSuggestionsCount?: number\n ): void => {\n this.searchPayload.query = searchQuery;\n this.performSearch(isFromAutocomplete, currAutocompleteSuggestionSelected, autocompleteSuggestionsCount);\n };\n\n private readonly handleContextChange = (matchPolicy: SearchPayloadMatchPolicy): void => {\n this.searchPayload.matchPolicy = matchPolicy;\n this.searchPayload.query = this.searchInput.getSearchText();\n if (\n !this.historyProcess &&\n (this.searchPayload.query.trim() !== '' ||\n (this.props.codeSelection !== undefined && this.props.codeSelection.selectedCode !== ''))\n ) {\n this.performSearch(false);\n }\n };\n\n private readonly handleHistoryChange = (historyItem: SearchHistoryItem): void => {\n if (this.props.onHistoryChange !== undefined) {\n this.removeLiveSearchToggle();\n this.historyProcess = true;\n ContextManager.getInstance().removeAll();\n const contextItems = historyItem.query.queryContext;\n Object.keys(contextItems).forEach((policyGroup: string) => {\n contextItems[policyGroup as keyof SearchPayloadMatchPolicy].forEach((contextKey: string) => {\n ContextManager.getInstance().addOrUpdateContext({\n context: contextKey,\n type: policyGroup as ContextTypes,\n visible: true,\n source: ContextSource.AUTO,\n });\n });\n });\n\n if (historyItem.query.codeSelection !== undefined && historyItem.query.codeSelection.selectedCode !== '') {\n this.searchAPIHelp.updateContent({\n code: historyItem.query.codeSelection.selectedCode,\n fileName: historyItem.query.codeSelection.file?.name,\n range: historyItem.query.codeSelection.file?.range,\n });\n this.searchAPIHelp.show();\n } else {\n this.searchAPIHelp.hide();\n }\n\n this.props.onHistoryChange(historyItem.suggestions, {\n query: historyItem.query.input,\n matchPolicy: historyItem.query.queryContext,\n codeSelection: historyItem.query.codeSelection,\n codeQuery: historyItem.query.codeQuery,\n });\n this.historyProcess = false;\n }\n };\n\n setSearchQuery = (value: string): void => {\n this.searchInput.setSearchText(value);\n };\n\n setContextItems = (contextItems: SearchPayloadMatchPolicy): void => {\n this.contextManagement.updateLocalContext(contextItems);\n };\n\n setWaitState = (waitState: boolean): void => {\n this.searchInput.setWaitState(waitState);\n };\n\n setFolded = (folded: boolean): void => {\n if (folded) {\n this.render.addClass('mynah-search-block-ready-to-fold');\n } else {\n this.render.removeClass('mynah-search-block-ready-to-fold');\n }\n };\n\n removeLiveSearchToggle = (): void => {\n if (this.props.liveSearch ?? false) {\n if (this.props.onLiveSearchToggle !== undefined) {\n this.props.onLiveSearchToggle(LiveSearchState.STOP);\n }\n this.liveSearchToggle?.render.remove();\n this.liveSearchToggle = undefined;\n }\n };\n\n onLiveSearchDataReceived = (): void => {\n this.liveSearchToggle?.flashToggle();\n };\n\n changeLiveSearchState = (state: LiveSearchState): void => {\n this.liveSearchToggle?.setToggleState(state);\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/* eslint-disable @typescript-eslint/no-dynamic-delete */\n/* eslint-disable @typescript-eslint/prefer-optional-chain */\n/* eslint-disable @typescript-eslint/strict-boolean-expressions */\nimport { ContextManager } from '../../helper/context-manager';\nimport { cancelEvent, DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport {\n KeyMap,\n MynahEventNames,\n SearchPayloadMatchPolicy,\n ContextSource,\n ContextType,\n ContextTypes\n} from '../../static';\nimport { ContextPill } from '../context-item';\nimport { Icon, MynahIcons } from '../icon';\nimport { Notification, NotificationType } from '../notification/notification';\n\ninterface RenderedContextType extends ContextType {\n render: HTMLElement | ExtendedHTMLElement;\n}\nexport interface SearchContextProps {\n initContextList?: SearchPayloadMatchPolicy;\n onContextInsertionEnabled?: () => void;\n onContextInsertionDisabled?: () => void;\n}\n\nexport class SearchContext {\n private readonly allowedCharCount = 100;\n private readonly contextCheckExpression = /^\\S+$/;\n private readonly isAcceptedKeyPress = (char: string): boolean => this.contextCheckExpression.test(char);\n private readonly acceptedNagivationKeys = Object.keys(KeyMap).map(\n (key: string) => (KeyMap as Record<string, string>)[key]\n );\n\n private renderedContextMap: Record<string, RenderedContextType> = {};\n private readonly onContextInsertionEnabled;\n private readonly onContextInsertionDisabled;\n\n constructor (props?: SearchContextProps) {\n this.onContextInsertionEnabled = props?.onContextInsertionEnabled;\n this.onContextInsertionDisabled = props?.onContextInsertionDisabled;\n if (props?.initContextList !== undefined) {\n this.updateLocalContext(props.initContextList);\n }\n\n DomBuilder.getInstance().root.addEventListener(\n MynahEventNames.CONTEXT_VISIBILITY_CHANGE as keyof HTMLElementEventMap,\n this.updateContextItems.bind(this) as EventListener\n );\n\n DomBuilder.getInstance().root.addEventListener(MynahEventNames.REMOVE_ALL_CONTEXT as keyof HTMLElementEventMap, () => {\n Object.keys(this.renderedContextMap).forEach(contextKey => {\n this.renderedContextMap[contextKey].render.remove();\n });\n this.renderedContextMap = {};\n });\n }\n\n updateLocalContext = (contextItems: SearchPayloadMatchPolicy): void => {\n Object.keys(contextItems).forEach((policyGroup: string) => {\n contextItems[policyGroup as keyof SearchPayloadMatchPolicy].forEach((contextKey: string) => {\n ContextManager.getInstance().addOrUpdateContext(\n {\n context: contextKey,\n type: policyGroup as ContextTypes,\n visible: true,\n source: ContextSource.AUTO,\n },\n false\n );\n this.updateContextItems({ detail: { context: contextKey } });\n });\n });\n };\n\n private readonly updateContextItems = (e: CustomEvent | { detail: { context: string } }): void => {\n const contextKey = e.detail.context;\n if (\n this.renderedContextMap[contextKey] &&\n (!ContextManager.getInstance().contextMap[contextKey] ||\n !ContextManager.getInstance().contextMap[contextKey].visible ||\n !ContextManager.getInstance().areContextItemsIdentical(\n ContextManager.getInstance().contextMap[contextKey],\n this.renderedContextMap[contextKey]\n ))\n ) {\n this.renderedContextMap[contextKey].render.remove();\n delete this.renderedContextMap[contextKey];\n }\n\n if (\n ContextManager.getInstance().contextMap[contextKey]?.visible &&\n !ContextManager.getInstance().areContextItemsIdentical(\n ContextManager.getInstance().contextMap[contextKey],\n this.renderedContextMap[contextKey]\n )\n ) {\n const contextRender = new ContextPill({\n context: ContextManager.getInstance().contextMap[contextKey],\n showRemoveButton: true,\n }).render;\n this.renderedContextMap[contextKey] = {\n ...ContextManager.getInstance().contextMap[contextKey],\n render: contextRender,\n };\n this.contextWrapper.insertChild('beforeend', contextRender);\n }\n };\n\n private readonly enableContextInsertion = (): void => {\n this.contextInsertionButton.addClass('context-insertion-activated');\n this.contextInsertionInput.focus();\n if (this.onContextInsertionEnabled !== undefined) {\n this.onContextInsertionEnabled();\n }\n };\n\n private readonly disableContextInsertion = (): void => {\n this.contextInsertionButton.removeClass('context-insertion-activated');\n this.contextInsertionInput.value = '';\n this.inputAutoWidth.update({\n innerHTML: '',\n });\n if (this.onContextInsertionDisabled !== undefined) {\n this.onContextInsertionDisabled();\n }\n };\n\n private readonly contextInsertionKeydownHandler = (e: KeyboardEvent): void => {\n if (this.acceptedNagivationKeys.includes(e.key) || this.isAcceptedKeyPress(e.key)) {\n if (e.key === KeyMap.ENTER) {\n cancelEvent(e);\n if (this.contextCheckExpression.test(this.contextInsertionInput.value)) {\n if (!this.renderedContextMap[this.contextInsertionInput.value]) {\n ContextManager.getInstance().addOrUpdateContext({\n context: this.contextInsertionInput.value,\n visible: true,\n source: ContextSource.USER,\n });\n } else {\n this.contextWrapper.insertChild(\n 'afterbegin',\n this.renderedContextMap[this.contextInsertionInput.value].render\n );\n }\n\n this.inputAutoWidth.update({\n innerHTML: '',\n });\n this.contextInsertionInput.value = '';\n } else {\n this.contextInsertionButton.removeClass('shake');\n setTimeout(() => {\n this.contextInsertionButton.addClass('shake');\n const notification = new Notification({\n content: 'You cannot add context items containing spaces.',\n type: NotificationType.ERROR,\n onNotificationClick: () => { },\n });\n notification.notify();\n }, 50);\n }\n } else if (e.key === KeyMap.ESCAPE) {\n cancelEvent(e);\n this.disableContextInsertion();\n } else {\n if (\n !this.acceptedNagivationKeys.includes(e.key) &&\n this.allowedCharCount - this.contextInsertionInput.value.length <= 0\n ) {\n cancelEvent(e);\n }\n }\n } else {\n cancelEvent(e);\n }\n };\n\n private readonly inputAutoWidth = DomBuilder.getInstance().build({\n type: 'span',\n });\n\n private contextInsertionInput = DomBuilder.getInstance().build({\n type: 'input',\n classNames: [ 'context-text-input' ],\n attributes: {\n maxlength: this.allowedCharCount.toString(),\n tabindex: '10',\n type: 'text',\n placeholder: 'Add context',\n },\n events: {\n focus: this.enableContextInsertion.bind(this),\n blur: this.disableContextInsertion.bind(this),\n keydown: this.contextInsertionKeydownHandler.bind(this),\n input: () => {\n this.inputAutoWidth.update({\n innerHTML: this.contextInsertionInput.value,\n });\n },\n paste: cancelEvent,\n },\n });\n\n private readonly contextInsertionButton = DomBuilder.getInstance().build({\n type: 'label',\n persistent: true,\n classNames: [ 'mynah-context-checkbox-label' ],\n attributes: { id: 'add-new-context' },\n events: { click: this.enableContextInsertion.bind(this) },\n children: [\n new Icon({ icon: MynahIcons.PLUS }).render,\n {\n type: 'span',\n classNames: [ 'add-new-context-label' ],\n children: [ 'Add context' ],\n },\n this.contextInsertionInput,\n this.inputAutoWidth,\n ],\n });\n\n private readonly contextWrapper = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-context-wrapper' ],\n children: [ this.contextInsertionButton ],\n });\n\n render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-search-block-advanced-control' ],\n children: [ this.contextWrapper ],\n events: {\n dblclick: (e) => {\n new Notification({\n title: 'Error occured',\n content: [\n { type: 'span', children: [ 'An error occured while getting the suggestions for your search.' ] },\n { type: 'span', children: [ 'This error is reported to the team automatically. We will take it into account shortly.' ] },\n ],\n type: NotificationType.ERROR,\n onNotificationClick: () => {\n //\n },\n duration: -1\n }).notify();\n }\n }\n });\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { getTimeDiff } from '../../helper/date-time';\nimport { cancelEvent, DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport {\n SearchPayloadMatchPolicy,\n ContextTypeClassNames,\n SearchHistoryItem\n} from '../../static';\nimport { Button } from '../button';\nimport { Icon, MynahIcons } from '../icon';\n\nexport interface HistoryCardContentProps {\n content: SearchHistoryItem;\n onHistoryItemClick: (historyItem: SearchHistoryItem) => void;\n}\nexport class HistoryCardContent {\n render: ExtendedHTMLElement;\n openSearch: any;\n\n private getSearchHitoryRecordTitle (historyItem: SearchHistoryItem): string {\n const titleParts = [];\n\n if (historyItem.query !== undefined && historyItem.query.input !== '') {\n titleParts.push(historyItem.query.input);\n }\n\n if (historyItem.query.codeSelection?.file !== undefined && historyItem.query.codeSelection.file.name !== '') {\n titleParts.push(\n `${historyItem.query.codeSelection.file.range.start.row}:${historyItem.query.codeSelection.file.range.start.column}`\n );\n titleParts.push(historyItem.query.codeSelection.file.name.split('/').pop());\n }\n\n return titleParts.join(' ');\n }\n\n constructor (props: HistoryCardContentProps) {\n let icon = [];\n\n switch (props.content.query.trigger) {\n case 'SearchBarInput':\n case 'SearchBarRefinement':\n icon = [\n new Icon({\n icon: MynahIcons.USER,\n }).render,\n ];\n break;\n case 'CodeSelection':\n icon = [\n new Icon({\n icon: MynahIcons.CODE_BLOCK,\n }).render,\n ];\n break;\n default:\n icon = [\n new Icon({\n icon: MynahIcons.LIGHT_BULB,\n }).render,\n ];\n break;\n }\n\n this.render = new Button({\n classNames: [ 'mynah-search-history-button' ],\n onClick: (e: Event) => {\n cancelEvent(e);\n props.onHistoryItemClick(props.content);\n },\n label: DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-search-history-button-label' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-search-history-trigger-icon' ],\n children: [ ...icon ],\n },\n {\n type: 'div',\n classNames: [ 'mynah-search-history-title-wrapper' ],\n children: [\n {\n type: 'h3',\n innerHTML: this.getSearchHitoryRecordTitle(props.content),\n },\n {\n type: 'span',\n innerHTML:\n props.content.recordDate !== undefined\n ? `${getTimeDiff(\n new Date().getTime() - props.content.recordDate\n ).toString()} ago`\n : '',\n },\n ],\n },\n {\n type: 'div',\n classNames: [ 'mynah-search-history-item-context-wrapper' ],\n children: Object.keys(props.content.query.queryContext).map((policyGroup: string) => {\n if (\n props.content.query.queryContext[policyGroup as keyof SearchPayloadMatchPolicy].length >\n 0\n ) {\n return DomBuilder.getInstance().build({\n type: 'span',\n classNames: [\n 'mynah-context-pill',\n ContextTypeClassNames[policyGroup as keyof SearchPayloadMatchPolicy],\n ],\n children: [\n {\n type: 'label',\n classNames: [ 'mynah-context-checkbox-label' ],\n children: [\n {\n type: 'span',\n innerHTML:\n props.content.query.queryContext[\n policyGroup as keyof SearchPayloadMatchPolicy\n ].length.toString(),\n },\n ],\n },\n ],\n });\n }\n return '';\n }),\n },\n ],\n }),\n }).render;\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ExtendedHTMLElement } from '../../helper/dom';\nimport { SearchHistoryItem } from '../../static';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../overlay/overlay';\nimport { HistoryCardContent } from './search-history-card';\n\nexport interface HistoryContentProps {\n referenceElement: Element | ExtendedHTMLElement;\n searchHistory: SearchHistoryItem[];\n onHistoryChange: (historyItem: SearchHistoryItem) => void;\n}\nexport class HistoryContent {\n private historyItemsOverlay!: Overlay;\n private readonly props: HistoryContentProps;\n render!: ExtendedHTMLElement;\n constructor (props: HistoryContentProps) {\n this.props = props;\n }\n\n public createOverlay (): void {\n this.historyItemsOverlay = new Overlay({\n referenceElement: this.props.referenceElement,\n verticalDirection: OverlayVerticalDirection.TO_BOTTOM,\n horizontalDirection: OverlayHorizontalDirection.END_TO_LEFT,\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-search-history-items-wrapper' ],\n children: this.searchHistoryCards(this.props.searchHistory),\n },\n ],\n });\n }\n\n searchHistoryCards = (historyItems: SearchHistoryItem[]): ExtendedHTMLElement[] =>\n historyItems.map(\n record =>\n new HistoryCardContent({\n content: record,\n onHistoryItemClick: this.handleHistoryChange.bind(this),\n }).render\n );\n\n private readonly handleHistoryChange = (historyItem: SearchHistoryItem): void => {\n this.historyItemsOverlay.close();\n this.props.onHistoryChange(historyItem);\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { cancelEvent, DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { AutocompleteItem, KeyMap, SearchHistoryFilters, SearchHistoryItem } from '../../static';\nimport { Button } from '../button';\nimport { Icon, MynahIcons } from '../icon';\nimport { HistoryContent } from './search-history-content';\nimport { Notification, NotificationType } from '../notification/notification';\nimport { AutocompleteContent } from './autocomplete-content';\nimport { I18N } from '../../translations/i18n';\n\nexport interface SearchInputProps {\n onSearch: (\n queryText: string,\n isFromAutocomplete: boolean,\n currAutocompleteSuggestionSelected?: number,\n autocompleteSuggestionsCount?: number\n ) => void;\n onHistoryOpen: (filterPayload: SearchHistoryFilters) => Promise<SearchHistoryItem[]>;\n onAutocompleteRequest: (input: string) => Promise<AutocompleteItem[]>;\n onHistoryChange: (historyItem: SearchHistoryItem) => void;\n initText?: string;\n searchAlwaysActive?: boolean;\n hideHistoryButton?: boolean;\n}\nexport class SearchInput {\n props: SearchInputProps;\n render: ExtendedHTMLElement;\n private searchTextInput: ExtendedHTMLElement;\n private readonly searchButton: ExtendedHTMLElement;\n private readonly searchHistoryButton: ExtendedHTMLElement;\n private readonly remainingIndicator: ExtendedHTMLElement;\n private autocompleteContent: AutocompleteContent | undefined;\n private readonly allowedCharCount: number = 1000;\n constructor (props: SearchInputProps) {\n this.props = props;\n\n const classNames = [ 'mynah-search-input' ];\n if (props.searchAlwaysActive ?? false) {\n classNames.push('search-always-active');\n }\n\n this.searchTextInput = DomBuilder.getInstance().build({\n type: 'input',\n classNames,\n attributes: {\n tabindex: '1',\n maxlength: '1000',\n type: 'text',\n placeholder:\n props.searchAlwaysActive !== undefined && props.searchAlwaysActive\n ? I18N.getInstance().texts.searchInputAPIHelpPlaceholder\n : I18N.getInstance().texts.searchInputMynahPlaceholder,\n value: props.initText ?? '',\n },\n events: {\n keyup: this.handleInputKeydown.bind(this),\n },\n });\n this.searchButton = new Button({\n classNames: [ 'mynah-icon-button', 'mynah-search-button' ],\n attributes: { tabindex: '5' },\n icon: DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-mutating-next-icon' ],\n children: [\n new Icon({ icon: MynahIcons.SEARCH }).render,\n { type: 'i', classNames: [ 'mynah-loading-spinner' ] },\n ],\n }),\n onClick: this.triggerSearch.bind(this),\n }).render;\n this.searchHistoryButton = new Button({\n classNames: [ 'mynah-icon-button' ],\n primary: false,\n attributes: { tabindex: '5' },\n icon: DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-search-history-icon' ],\n children: [\n new Icon({ icon: MynahIcons.SEARCH_HISTORY }).render,\n { type: 'i', classNames: [ 'mynah-history-icon' ] },\n ],\n }),\n onClick: this.triggerSearchHistory.bind(this),\n }).render;\n\n this.remainingIndicator = DomBuilder.getInstance().build({\n type: 'span',\n attributes: {\n 'remaining-chars': (props.initText !== undefined && props.initText.length > 0\n ? this.allowedCharCount - props.initText.length\n : this.allowedCharCount\n ).toString(),\n 'max-chars': this.allowedCharCount.toString(),\n },\n });\n\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-search-input-wrapper' ],\n children: [\n this.searchTextInput,\n this.remainingIndicator,\n ...(!(props.hideHistoryButton ?? false) ? [ this.searchHistoryButton ] : []),\n this.searchButton,\n ],\n });\n }\n\n public addFocusOnInput = (): void => {\n this.searchTextInput.focus();\n };\n\n private readonly handleInputKeydown = (e: KeyboardEvent): void => {\n if (e.key === KeyMap.ENTER) {\n cancelEvent(e);\n this.triggerSearch();\n } else if (e.key === KeyMap.ARROW_DOWN) {\n if (this.autocompleteContent !== undefined) {\n this.searchTextInput.value = this.autocompleteContent.hover(false);\n }\n } else if (e.key === KeyMap.ARROW_UP) {\n if (this.autocompleteContent !== undefined) {\n this.searchTextInput.value = this.autocompleteContent.hover(true);\n }\n } else if (\n e.key === KeyMap.DELETE ||\n e.key === KeyMap.BACKSPACE ||\n !Object.values<string>(KeyMap).includes(e.key)\n ) {\n this.getAutocompleteSuggestions(this.searchTextInput.value);\n }\n this.remainingIndicator.update({\n attributes: {\n 'remaining-chars': (this.allowedCharCount - this.searchTextInput.value.length).toString(),\n },\n });\n };\n\n triggerSearch = (): void => {\n if (this.props.searchAlwaysActive !== undefined || this.searchTextInput.value.trim() !== '') {\n let isAutocompleteUsed = false;\n let currAutocompleteSuggestionSelected;\n let autocompleteSuggestionsCount;\n if (this.autocompleteContent !== undefined) {\n isAutocompleteUsed = this.autocompleteContent.getIsUsed();\n currAutocompleteSuggestionSelected = this.autocompleteContent.getCurrentSelected();\n autocompleteSuggestionsCount = this.autocompleteContent.getSuggestionsCount();\n this.autocompleteContent?.close();\n }\n this.props.onSearch(\n this.searchTextInput.value,\n isAutocompleteUsed,\n currAutocompleteSuggestionSelected,\n autocompleteSuggestionsCount\n );\n }\n };\n\n triggerSearchHistory = (): void => {\n const filters = {\n isGlobal: false,\n languages: [],\n resultOffset: 0,\n resultLimit: 50,\n };\n this.searchHistoryButton.addClass('mynah-button-wait');\n this.props.onHistoryOpen(filters)\n .then((searchHistory: SearchHistoryItem[]) => {\n this.searchHistoryButton.removeClass('mynah-button-wait');\n const historyContent = new HistoryContent({\n referenceElement: this.searchHistoryButton,\n searchHistory,\n onHistoryChange: this.handleHistoryChange,\n });\n historyContent.createOverlay();\n })\n .catch((err: Error) => {\n console.warn(err);\n this.searchHistoryButton.removeClass('mynah-button-wait');\n const notification = new Notification({\n content: \"Couldn't retrieve history items\",\n type: NotificationType.WARNING,\n });\n\n notification.notify();\n });\n };\n\n getAutocompleteSuggestions = (input: string): void => {\n if (input.trim() === '') {\n this.autocompleteContent?.close();\n } else {\n this.props.onAutocompleteRequest(input)\n .then((autocompleteSuggestions: AutocompleteItem[]) => {\n if (this.autocompleteContent !== undefined) {\n if (autocompleteSuggestions.length === 0) {\n this.autocompleteContent?.close();\n } else {\n this.autocompleteContent.updateQuery(input);\n this.autocompleteContent.updateSuggestions(autocompleteSuggestions, 0);\n }\n } else {\n this.autocompleteContent = new AutocompleteContent({\n searchQuery: input,\n referenceElement: this.searchTextInput,\n autocompleteSuggestions,\n onAutocompleteClick: this.handleAutocompleteClick,\n onClose: () => {\n this.autocompleteContent = undefined;\n },\n });\n }\n })\n .catch((err: Error) => {\n console.warn(err);\n });\n }\n };\n\n private readonly handleHistoryChange = (historyItem: SearchHistoryItem): void => {\n this.searchTextInput.value = historyItem.query.input;\n this.remainingIndicator.update({\n attributes: {\n 'remaining-chars': (this.allowedCharCount - this.searchTextInput.value.length).toString(),\n },\n });\n this.props.onHistoryChange(historyItem);\n };\n\n private readonly handleAutocompleteClick = (\n autocompleteQuery: AutocompleteItem,\n index: number,\n count: number\n ): void => {\n this.searchTextInput.value = autocompleteQuery.suggestion;\n this.remainingIndicator.update({\n attributes: {\n 'remaining-chars': (this.allowedCharCount - this.searchTextInput.value.length).toString(),\n },\n });\n this.props.onSearch(autocompleteQuery.suggestion, true, index, count);\n };\n\n getSearchText = (): string => this.searchTextInput.value;\n\n setSearchText = (value: string): void => {\n this.searchTextInput.value = value;\n this.remainingIndicator.update({\n attributes: {\n 'remaining-chars': (this.allowedCharCount - this.searchTextInput.value.length).toString(),\n },\n });\n };\n\n public setWaitState = (waitState?: boolean): void => {\n if (waitState ?? false) {\n this.searchButton.addClass('mynah-button-wait');\n } else {\n this.searchButton.removeClass('mynah-button-wait');\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { LiveSearchState } from '../../static';\nimport { Icon, MynahIcons } from '../icon';\nimport { Toggle } from '../toggle';\n\nconst LiveSearchStateColors = {\n [LiveSearchState.PAUSE]: 'var(--mynah-color-status-warning)',\n [LiveSearchState.RESUME]: 'var(--mynah-color-status-success)',\n};\n\nexport interface SearchLiveToggleProps {\n label: string;\n value: LiveSearchState.RESUME | LiveSearchState.PAUSE;\n onChange?: (value: LiveSearchState.RESUME | LiveSearchState.PAUSE) => void;\n}\nexport class SearchLiveToggle {\n render: ExtendedHTMLElement;\n private readonly toggle: Toggle;\n constructor (props: SearchLiveToggleProps) {\n this.toggle = new Toggle({\n name: 'mynah-implicit-search',\n value: props.value,\n options: [\n {\n label: new Icon({ icon: MynahIcons.PLAY }).render,\n value: LiveSearchState.RESUME,\n color: LiveSearchStateColors[LiveSearchState.RESUME],\n },\n {\n label: new Icon({ icon: MynahIcons.PAUSE }).render,\n value: LiveSearchState.PAUSE,\n color: LiveSearchStateColors[LiveSearchState.PAUSE],\n },\n ],\n onChange: value => {\n if (props.onChange !== undefined) {\n props.onChange(value as LiveSearchState.RESUME | LiveSearchState.PAUSE);\n }\n },\n });\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-search-live-toggle-wrapper' ],\n children: [ { type: 'b', children: [ props.label ] }, this.toggle.render ],\n });\n }\n\n setToggleState = (state: LiveSearchState): void => {\n this.toggle.setValue(state);\n };\n\n flashToggle = (): void => {\n this.render.removeClass('flash-toggle');\n setTimeout(() => {\n this.render.addClass('flash-toggle');\n }, 100);\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport {\n OnCopiedToClipboardFunction,\n RelevancyVoteType,\n Suggestion,\n SupportedCodingLanguagesExtensionToTypeMap,\n} from '../../static';\nimport { SyntaxHighlighter } from '../syntax-highlighter';\nimport { findLanguageFromSuggestion } from '../../helper/find-language';\nimport { SuggestionCardRelevanceVote } from './suggestion-card-relevance-vote';\n\nexport interface SuggestionCardBodyProps {\n suggestion: Suggestion;\n onVoteChange: (suggestion: Suggestion, vote: RelevancyVoteType) => void;\n onCopiedToClipboard?: OnCopiedToClipboardFunction;\n}\nexport class SuggestionCardBody {\n render: ExtendedHTMLElement;\n\n constructor (props: SuggestionCardBodyProps) {\n const matchingLanguage =\n findLanguageFromSuggestion(props.suggestion) ?? SupportedCodingLanguagesExtensionToTypeMap.js;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-card-center' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-card-body' ],\n children: [\n ...(Array.from(\n DomBuilder.getInstance().build({\n type: 'div',\n innerHTML: props.suggestion.body,\n }).childNodes\n ).map(node => {\n const elementFromNode: HTMLElement = node as HTMLElement;\n if (\n elementFromNode.tagName?.toLowerCase() === 'pre' &&\n elementFromNode.querySelector('code') !== null\n ) {\n return new SyntaxHighlighter({\n codeStringWithMarkup: elementFromNode.querySelector('code')?.innerHTML ?? '',\n language: matchingLanguage,\n keepHighlights: true,\n showCopyOptions: true,\n onCopiedToClipboard: props.onCopiedToClipboard,\n }).render;\n }\n return node;\n }) as HTMLElement[]),\n ],\n },\n new SuggestionCardRelevanceVote({ suggestion: props.suggestion, onVoteChange: props.onVoteChange }).render,\n ],\n });\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ContextSource } from '../../static';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { ContextPill } from '../context-item';\nimport { ContextManager } from '../../helper/context-manager';\n\nexport interface SuggestionCardContextWrapperProps {\n contextList: string[];\n}\nexport class SuggestionCardContextWrapper {\n render: ExtendedHTMLElement;\n constructor (props: SuggestionCardContextWrapperProps) {\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-card-context-wrapper' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-card-tags' ],\n children: props.contextList.map((context: string) => {\n ContextManager.getInstance().addOrUpdateContext({\n ...ContextManager.getInstance().getContextObjectFromKey(context),\n availableInSuggestion: true,\n source: ContextSource.SUGGESTION,\n });\n return new ContextPill({\n context: ContextManager.getInstance().contextMap[context],\n }).render;\n }),\n },\n ],\n });\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { getTimeDiff } from '../../helper/date-time';\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { SuggestionMetaData } from '../../static';\nimport { Icon, MynahIcons } from '../icon';\n\nexport interface SuggestionCardHeaderProps {\n title: string;\n url: string;\n metaData?: SuggestionMetaData;\n onSuggestionTitleClick?: () => void;\n onSuggestionLinkClick?: () => void;\n onSuggestionLinkCopy?: () => void;\n}\nexport class SuggestionCardHeader {\n render: ExtendedHTMLElement;\n constructor (props: SuggestionCardHeaderProps) {\n const splittedUrl = props.url\n .replace(/^(http|https):\\/\\//, '')\n .split('/')\n .slice(0, 3);\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-card-header', ...((props.metaData != null) ? [ 'mynah-card-header-with-source-thumbnail' ] : []) ],\n children: [\n ...((props.metaData != null)\n ? [ {\n type: 'span',\n classNames: [ 'mynah-source-thumbnail', props.metaData.site ]\n } ]\n : []),\n {\n type: 'div',\n classNames: [ 'mynah-card-title-wrapper' ],\n events: {\n ...(props.onSuggestionTitleClick !== undefined && {\n click: (e: Event) => {\n // to prevent double click from the anchor element inside, we need to check if it is not the anchor element\n if (\n !(e.target as HTMLElement).classList.contains('mynah-card-url') &&\n props.onSuggestionTitleClick !== undefined\n ) {\n props.onSuggestionTitleClick();\n }\n },\n }),\n },\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-card-title' ],\n children: [ props.title, {\n type: 'div',\n classNames: [ 'mynah-card-expand-icon' ],\n children: [ new Icon({ icon: MynahIcons.EXTERNAL }).render ],\n } ],\n },\n {\n type: 'a',\n classNames: [ 'mynah-card-url' ],\n events: {\n ...(props.onSuggestionLinkClick !== undefined && {\n click: props.onSuggestionLinkClick,\n }),\n ...(props.onSuggestionLinkCopy !== undefined && { copy: props.onSuggestionLinkCopy }),\n },\n attributes: { href: props.url, target: '_blank' },\n innerHTML: `${splittedUrl.slice(0, splittedUrl.length - 1).join(' / ')} / <b>${splittedUrl[splittedUrl.length - 1]\n }</b>`,\n },\n ...((props.metaData != null) ? [ this.getSourceMetaBlock(props.metaData) ] : []),\n ],\n },\n ],\n });\n }\n\n private readonly getSourceMetaBlock = (metaData: SuggestionMetaData): DomBuilderObject => {\n const metaItems = [];\n if (metaData.isAccepted === true) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item', 'approved-answer' ],\n children: [\n new Icon({ icon: MynahIcons.OK }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ 'Approved answer' ]\n }\n ]\n });\n }\n\n if (metaData.lastActivityDate !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.CALENDAR }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ `${getTimeDiff((new Date()).getTime() - metaData.lastActivityDate, 2, ' and ')} ago` ]\n }\n ]\n });\n }\n\n if (metaData.answers !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.CHAT }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ `${metaData.answers.toString()} answers` ]\n }\n ]\n });\n }\n\n if (metaData.stars !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.STAR }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ `${metaData.stars.toString()} contributors` ]\n }\n ]\n });\n }\n\n if (metaData.forks !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.DOWN_OPEN }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ `${metaData.forks.toString()} forks` ]\n }\n ]\n });\n }\n\n if (metaData.upVotes !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.THUMBS_UP }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ `${metaData.upVotes.toString()} upvotes` ]\n }\n ]\n });\n }\n\n return {\n type: 'span',\n classNames: [ 'mynah-title-meta-block' ],\n children: metaItems\n };\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { RelevancyVoteType, Suggestion } from '../../static';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { Icon, MynahIcons } from '../icon';\n\nexport interface SuggestionCardRelevanceVoteProps {\n suggestion: Suggestion;\n onVoteChange: (suggestion: Suggestion, vote: RelevancyVoteType) => void;\n}\nexport class SuggestionCardRelevanceVote {\n render: ExtendedHTMLElement;\n private readonly onVoteChange: (suggestion: Suggestion, vote: RelevancyVoteType) => void;\n constructor (props: SuggestionCardRelevanceVoteProps) {\n this.onVoteChange = props.onVoteChange;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-card-votes-wrapper' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-vote-text' ],\n innerHTML: '<b>Is this relevant?</b>',\n },\n {\n type: 'div',\n classNames: [ 'mynah-card-vote' ],\n children: [\n {\n type: 'input',\n events: {\n change: (e: Event) => {\n this.handleVoteChange(RelevancyVoteType.UP, props.suggestion);\n },\n },\n attributes: {\n type: 'radio',\n id: `${props.suggestion.id}-vote-up`,\n name: `${props.suggestion.id}-vote`,\n value: 'up',\n },\n classNames: [ 'mynah-vote-radio', 'mynah-vote-up-radio' ],\n },\n {\n type: 'input',\n events: {\n change: (e: Event) => {\n this.handleVoteChange(RelevancyVoteType.DOWN, props.suggestion);\n },\n },\n attributes: {\n type: 'radio',\n id: `${props.suggestion.id}-vote-down`,\n name: `${props.suggestion.id}-vote`,\n value: 'down',\n },\n classNames: [ 'mynah-vote-radio', 'mynah-vote-down-radio' ],\n },\n {\n type: 'label',\n attributes: { for: `${props.suggestion.id}-vote-up` },\n classNames: [ 'mynah-vote-label', 'mynah-vote-up' ],\n children: [ new Icon({ icon: MynahIcons.THUMBS_UP }).render ],\n },\n {\n type: 'label',\n attributes: { for: `${props.suggestion.id}-vote-down` },\n classNames: [ 'mynah-vote-label', 'mynah-vote-down' ],\n children: [ new Icon({ icon: MynahIcons.THUMBS_DOWN }).render ],\n },\n {\n type: 'span',\n classNames: [ 'mynah-vote-indicator' ],\n },\n ],\n },\n ],\n });\n }\n\n private readonly handleVoteChange = (vote: RelevancyVoteType, suggestion: Suggestion): void => {\n this.onVoteChange(suggestion, vote);\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { EngagementType, OnCopiedToClipboardFunctionWithSuggestionId, RelevancyVoteType, Suggestion, SuggestionEngagement } from '../../static';\nimport { Icon, MynahIcons } from '../icon';\nimport { SuggestionCardBody } from './suggestion-card-body';\nimport { SuggestionCardContextWrapper } from './suggestion-card-context-wrapper';\nimport { SuggestionCardHeader } from './suggestion-card-header';\n\n/**\n * We'll not consider it as an engagement if the total spend time is lower than below constant and won't trigger the event\n */\nconst ENGAGEMENT_DURATION_LIMIT = 3000;\n\n/**\n * This 6(px) and 300(ms) are coming from a behavioral research and browser reaction to input devices to count the action as a mouse movement or a click event\n */\nconst ENGAGEMENT_MIN_SELECTION_DISTANCE = 6;\nconst ENGAGEMENT_MIN_CLICK_DURATION = 300;\n\nexport interface SuggestionCardProps {\n suggestion: Suggestion;\n onSuggestionOpen?: (suggestion: Suggestion) => void;\n onSuggestionLinkClick?: (suggestion: Suggestion) => void;\n onSuggestionLinkCopy?: (suggestion: Suggestion) => void;\n onSuggestionEngaged?: (engagementInfo: SuggestionEngagement) => void;\n onCopiedToClipboard?: OnCopiedToClipboardFunctionWithSuggestionId;\n onVoteChange: (suggestion: Suggestion, vote: RelevancyVoteType) => void;\n}\nexport class SuggestionCard {\n private engagementStartTime: number = -1;\n private totalMouseDistanceTraveled: { x: number; y: number } = { x: 0, y: 0 };\n private previousMousePosition!: { x: number; y: number };\n private mouseDownInfo!: { x: number; y: number; time: number };\n private readonly onSuggestionEngaged;\n private readonly suggestion: Suggestion;\n render: ExtendedHTMLElement;\n constructor (props: SuggestionCardProps) {\n this.suggestion = props.suggestion;\n this.onSuggestionEngaged = props.onSuggestionEngaged;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n attributes: {\n 'data-filter': props.suggestion.context.map(context => `${context}, `).join(''),\n },\n classNames: [ 'mynah-card' ],\n events:\n props.onSuggestionEngaged !== undefined\n ? {\n mouseenter: e => {\n if (this.engagementStartTime === -1) {\n this.engagementStartTime = new Date().getTime();\n this.previousMousePosition = { x: e.clientX, y: e.clientY };\n this.totalMouseDistanceTraveled = { x: 0, y: 0 };\n }\n },\n mousemove: e => {\n this.totalMouseDistanceTraveled = {\n x:\n this.totalMouseDistanceTraveled.x +\n Math.abs(e.clientX - this.previousMousePosition.x),\n y:\n this.totalMouseDistanceTraveled.y +\n Math.abs(e.clientY - this.previousMousePosition.y),\n };\n this.previousMousePosition = { x: e.clientX, y: e.clientY };\n },\n mousedown: e => {\n this.mouseDownInfo = { x: e.clientX, y: e.clientY, time: new Date().getTime() };\n },\n mouseup: e => {\n const mouseUpInfo = { x: e.clientX, y: e.clientY, time: new Date().getTime() };\n if (\n this.mouseDownInfo !== undefined && // in case of down is prevented defauly by some listener\n (Math.abs(this.mouseDownInfo.x - mouseUpInfo.x) > ENGAGEMENT_MIN_SELECTION_DISTANCE ||\n Math.abs(this.mouseDownInfo.y - mouseUpInfo.y) >\n ENGAGEMENT_MIN_SELECTION_DISTANCE) &&\n mouseUpInfo.time - this.mouseDownInfo.time > ENGAGEMENT_MIN_CLICK_DURATION\n ) {\n this.handleEngagement({\n x: Math.abs(this.mouseDownInfo.x - mouseUpInfo.x),\n y: Math.abs(this.mouseDownInfo.y - mouseUpInfo.y),\n selectedText: window?.getSelection()?.toString(),\n });\n } else {\n this.handleEngagement({ x: 0, y: 0 });\n }\n },\n mouseleave: () => {\n const engagementEndTime = new Date().getTime();\n if (engagementEndTime - this.engagementStartTime > ENGAGEMENT_DURATION_LIMIT) {\n this.handleEngagement();\n } else {\n this.resetEngagement();\n }\n },\n }\n : {},\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-suggestion-from-history-icon' ],\n children: [ new Icon({ icon: MynahIcons.SEARCH_HISTORY }).render ],\n },\n new SuggestionCardHeader({\n title: props.suggestion.title,\n url: props.suggestion.url,\n metaData: props.suggestion.metaData,\n onSuggestionTitleClick: () => {\n if (props.onSuggestionOpen !== undefined) {\n props.onSuggestionOpen(props.suggestion);\n }\n },\n onSuggestionLinkClick: () => {\n if (props.onSuggestionLinkClick !== undefined) {\n props.onSuggestionLinkClick(props.suggestion);\n }\n },\n onSuggestionLinkCopy: () => {\n if (props.onSuggestionLinkCopy !== undefined) {\n props.onSuggestionLinkCopy(props.suggestion);\n }\n },\n }).render,\n new SuggestionCardContextWrapper({ contextList: props.suggestion.context }).render,\n new SuggestionCardBody({\n suggestion: props.suggestion,\n onVoteChange: props.onVoteChange,\n onCopiedToClipboard: (type, selection) => {\n if (props.onCopiedToClipboard !== undefined) {\n props.onCopiedToClipboard(props.suggestion.url, type, selection);\n }\n },\n }).render,\n ],\n });\n }\n\n private readonly resetEngagement = (): void => {\n this.engagementStartTime = -1;\n this.totalMouseDistanceTraveled = { x: 0, y: 0 };\n this.previousMousePosition = { x: 0, y: 0 };\n this.mouseDownInfo = { x: 0, y: 0, time: -1 };\n };\n\n private readonly handleEngagement = (interactionDistanceTraveled?: {\n x: number;\n y: number;\n selectedText?: string;\n }): void => {\n if (this.engagementStartTime !== -1 && this.onSuggestionEngaged !== undefined) {\n this.onSuggestionEngaged({\n suggestion: this.suggestion,\n engagementDurationTillTrigger: new Date().getTime() - this.engagementStartTime,\n scrollDistanceToEngage:\n this.render.offsetTop - this.previousMousePosition.y > 0\n ? this.render.offsetTop - this.previousMousePosition.y\n : 0,\n engagementType:\n interactionDistanceTraveled !== undefined ? EngagementType.INTERACTION : EngagementType.TIME,\n totalMouseDistanceTraveled: this.totalMouseDistanceTraveled,\n selectionDistanceTraveled:\n Boolean(interactionDistanceTraveled?.x ?? 0) && Boolean(interactionDistanceTraveled?.y)\n ? interactionDistanceTraveled\n : undefined,\n });\n this.resetEngagement();\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { cancelEvent, DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nimport * as Prism from 'prismjs';\nimport 'prismjs/components/prism-typescript';\nimport 'prismjs/components/prism-python';\nimport 'prismjs/components/prism-java';\nimport 'prismjs/components/prism-javascript';\nimport 'prismjs/components/prism-json';\nimport 'prismjs/plugins/line-numbers/prism-line-numbers.js';\nimport {\n OnCopiedToClipboardFunction,\n SupportedCodingLanguagesExtensionToTypeMap,\n SupportedCodingLanguagesType,\n} from '../static';\nimport { Button } from './button';\nimport { Notification } from './notification/notification';\nimport { Icon, MynahIcons } from './icon';\n\nconst DEFAULT_LANG = SupportedCodingLanguagesExtensionToTypeMap.js;\n\n// they'll be used to replaced within the code, so making them unique is a must\nexport const highlighters = {\n start: {\n markup: '<span class=\"amzn-mynah-search-result-highlight\">',\n textReplacement: '__mynahhighlighterstart__',\n },\n end: {\n markup: '</span>',\n textReplacement: '__mynahhighlighterend__',\n },\n};\n\nexport interface SyntaxHighlighterProps {\n codeStringWithMarkup: string;\n language?: SupportedCodingLanguagesType;\n keepHighlights?: boolean;\n showLineNumbers?: boolean;\n startingLineNumber?: number;\n showCopyOptions?: boolean;\n onCopiedToClipboard?: OnCopiedToClipboardFunction;\n}\nexport class SyntaxHighlighter {\n private readonly code: ExtendedHTMLElement;\n private readonly onCopiedToClipboard?: OnCopiedToClipboardFunction;\n render: ExtendedHTMLElement;\n\n constructor (props: SyntaxHighlighterProps) {\n this.onCopiedToClipboard = props.onCopiedToClipboard;\n let codeMarkup = props.codeStringWithMarkup;\n // Replacing the markups with plain text replacement blocks\n if (props.keepHighlights === true) {\n codeMarkup = codeMarkup\n .replace(new RegExp(highlighters.start.markup, 'g'), highlighters.start.textReplacement)\n .replace(new RegExp(highlighters.end.markup, 'g'), highlighters.end.textReplacement);\n }\n // to get a clear plain text from html code string creating an element and getting innerText of it\n codeMarkup = DomBuilder.getInstance().build({ type: 'div', innerHTML: codeMarkup }).innerText;\n\n // Converting to prism styled markup\n let styledCode = Prism.highlight(\n `${codeMarkup}`,\n Prism.languages[props.language ?? DEFAULT_LANG],\n props.language ?? DEFAULT_LANG\n );\n\n // replacing back the plain text to markup for highlighting code\n if (props.keepHighlights === true) {\n styledCode = styledCode\n .replace(new RegExp(highlighters.start.textReplacement, 'g'), highlighters.start.markup)\n .replace(new RegExp(highlighters.end.textReplacement, 'g'), highlighters.end.markup);\n }\n\n this.code = DomBuilder.getInstance().build({\n type: 'code',\n innerHTML: styledCode,\n });\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-syntax-highlighter' ],\n children: [\n ...(props.showCopyOptions === true\n ? [\n {\n type: 'div',\n classNames: [ 'mynah-syntax-highlighter-copy-buttons' ],\n children: [\n new Button({\n icon: new Icon({ icon: MynahIcons.COPY }).render,\n attributes: { title: 'Copy whole block' },\n primary: false,\n onClick: e => {\n cancelEvent(e);\n this.copyToClipboard(\n this.code.innerText,\n 'Whole code block is copied to clipboard',\n 'block'\n );\n },\n }).render,\n new Button({\n icon: new Icon({ icon: MynahIcons.TEXT_SELECT }).render,\n attributes: { title: 'Copy selected text' },\n primary: false,\n onClick: e => {\n cancelEvent(e);\n const currentRange = window.getSelection() !== null ? window.getSelection()?.getRangeAt(0) ?? null : null;\n let textToSendClipboard: string | undefined;\n if (currentRange?.commonAncestorContainer?.isSameNode(this.code) ?? false) {\n textToSendClipboard = window.getSelection()?.toString();\n }\n this.copyToClipboard(\n textToSendClipboard ?? this.code.innerText,\n `${\n textToSendClipboard !== undefined\n ? 'Your selection'\n : 'Whole code block'\n } is copied to clipboard.`,\n textToSendClipboard !== undefined ? 'selection' : 'block'\n );\n },\n additionalEvents: { mousedown: cancelEvent },\n }).render,\n ],\n },\n ]\n : []),\n {\n type: 'pre',\n classNames: [\n `language-${props.language ?? DEFAULT_LANG}`,\n ...(props.showLineNumbers === true ? [ 'line-numbers' ] : []),\n ],\n children: [\n this.code,\n ...(props.showLineNumbers === true\n ? [\n {\n type: 'span',\n classNames: [ 'line-numbers-rows' ],\n children: styledCode.split(/\\n/).map((n: string, i: number) => ({\n type: 'span',\n innerHTML: String(i + (props.startingLineNumber ?? 1)),\n })),\n },\n ]\n : []),\n ],\n },\n ],\n });\n }\n\n private readonly copyToClipboard = (\n textToSendClipboard: string,\n notificationText?: string,\n type?: 'selection' | 'block'\n ): void => {\n navigator.clipboard\n .writeText(textToSendClipboard)\n .then(() => {\n if (this.onCopiedToClipboard !== undefined) {\n this.onCopiedToClipboard(type, textToSendClipboard);\n }\n if (notificationText !== undefined) {\n /* eslint-disable no-new */\n new Notification({\n content: notificationText,\n title: 'Copied to clipbard',\n duration: 2000,\n }).notify();\n }\n })\n .catch(e => {\n console.log(e);\n });\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/* eslint-disable @typescript-eslint/restrict-template-expressions */\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\n\nexport interface ToggleOption {\n label?: ExtendedHTMLElement | string | HTMLElement;\n color?: string;\n value: string;\n}\nexport interface ToggleProps {\n options: ToggleOption[];\n value?: string;\n name: string;\n disabled?: boolean;\n onChange?: (selectedValue: string) => void;\n}\nexport class Toggle {\n render: ExtendedHTMLElement;\n private readonly props: ToggleProps;\n private readonly relocateTransitioner: ExtendedHTMLElement;\n\n constructor (props: ToggleProps) {\n this.props = props;\n this.relocateTransitioner = DomBuilder.getInstance().build({\n type: 'span',\n classNames: [ 'mynah-toggle-indicator-transitioner' ],\n });\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-toggle-container' ],\n attributes: { disabled: props.disabled === true ? 'disabled' : '' },\n children: this.getChildren(props.value),\n });\n\n if (props.value !== undefined) {\n this.setRelocatePosition(props.value);\n }\n }\n\n private readonly getChildren = (value?: string): any[] => [\n ...this.props.options.map(option => {\n if (option.value === value && option.color !== undefined) {\n this.relocateTransitioner.style.backgroundColor = option.color;\n }\n return DomBuilder.getInstance().build({\n type: 'span',\n attributes: { key: `${this.props.name}-${option.value}` },\n children: [\n {\n type: 'input',\n classNames: [ 'mynah-toggle-option' ],\n attributes: {\n type: 'radio',\n id: `${this.props.name}-${option.value}`,\n name: this.props.name,\n ...(value === option.value ? { checked: 'checked' } : {}),\n },\n events: {\n change: () => {\n this.updateSelectionRender(option.value, option.color);\n },\n },\n },\n {\n type: 'label',\n classNames: [ 'mynah-toggle-option-label' ],\n attributes: {\n for: `${this.props.name}-${option.value}`,\n ...(option.color !== undefined ? { style: `background-color:${option.color}` } : {}),\n },\n children: [ option.label ?? '' ],\n },\n ],\n });\n }),\n this.relocateTransitioner,\n ];\n\n private readonly setRelocatePosition = (value: string, color?: string): void => {\n setTimeout(() => {\n const renderRect = this.render.getBoundingClientRect();\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions, @typescript-eslint/prefer-nullish-coalescing\n const rect = this.render\n .querySelector(`label[for=\"${this.props.name}-${value}\"]`)\n ?.getBoundingClientRect() ?? {\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n };\n\n this.relocateTransitioner.style.top = `${rect.top - renderRect.top}px`;\n this.relocateTransitioner.style.left = `${rect.left - renderRect.left}px`;\n this.relocateTransitioner.style.width = `${rect.width}px`;\n this.relocateTransitioner.style.height = `${rect.height}px`;\n if (color !== undefined) {\n this.relocateTransitioner.style.backgroundColor = color;\n }\n }, 5);\n };\n\n private readonly updateSelectionRender = (value: string, color?: string): void => {\n this.relocateTransitioner.removeClass('relocate');\n this.setRelocatePosition(value, color);\n\n setTimeout(() => {\n this.relocateTransitioner.addClass('relocate');\n if (this.props.onChange !== undefined) {\n this.props.onChange(value);\n }\n }, 200);\n };\n\n setValue = (value: string): void => {\n // Since the html elements are not interactable when there is no user action\n // such as a real physical input event, we need to redraw the elements\n this.render.update({ children: this.getChildren(value) });\n this.setRelocatePosition(value);\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { StateManager } from '../static';\nimport { DomBuilder } from './dom';\n\nconst configProcessors: Record<string, (sourceString: string) => any> = {\n 'query-text': (sourceString: string) => decodeURI(sourceString),\n context: (sourceString: string) => decodeURI(sourceString),\n loading: (sourceString: string) => sourceString === 'true',\n suggestions: (sourceString: string) => decodeURI(sourceString),\n 'code-selection': (sourceString: string) => decodeURI(sourceString),\n 'code-query': (sourceString: string) => decodeURI(sourceString),\n live: (sourceString: string) => sourceString === 'true',\n 'listen-payloads': (sourceString: string) => sourceString === 'true',\n language: (sourceString: string) => decodeURI(sourceString),\n};\nexport interface MynahConfigProps {\n stateManager: StateManager;\n}\nexport class MynahConfig {\n private config: Record<string, any> = {\n 'query-text': '',\n context: '',\n loading: 'false',\n suggestions: '',\n 'logo-url': '',\n 'code-selection': '',\n 'code-query': '',\n live: false,\n 'listen-payloads': false,\n language: 'en',\n };\n\n private readonly stateManager;\n\n constructor (props: MynahConfigProps) {\n const configElement = DomBuilder.getInstance().root.querySelector('mynah-config');\n this.stateManager = props.stateManager;\n if (configElement !== null) {\n Object.keys(this.config).forEach((configItem: string) => {\n if (Boolean(this.stateManager.getState()) && Boolean(this.stateManager.getState()[configItem])) {\n this.config[configItem] = this.stateManager.getState()[configItem];\n } else if (configElement.getAttribute(configItem) !== undefined) {\n this.config[configItem] = configProcessors[configItem] !== undefined\n ? configProcessors[configItem](\n configElement.getAttribute(configItem) ?? this.config[configItem]\n )\n : configElement.getAttribute(configItem) ?? this.config[configItem];\n }\n });\n }\n }\n\n getConfig = (configName: string): any => this.config[configName] ?? '';\n\n setConfig = (configName: string, configValue: string): void => {\n this.config[configName] = configValue;\n this.stateManager.setState({ ...this.config });\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from './dom';\nimport {\n ContextSource,\n ContextTypeClassNames,\n ContextTypes,\n ContextType,\n MynahEventNames,\n MynahPortalNames,\n SearchPayloadMatchPolicy\n} from '../static';\n\nexport interface ContextCheckboxProps {\n context: ContextType;\n}\nexport class ContextCheckbox {\n render: ExtendedHTMLElement[];\n constructor (props: ContextCheckboxProps) {\n this.render = [\n DomBuilder.getInstance().build({\n type: 'style',\n attributes: { type: 'text/css', 'style-of': props.context.context },\n innerHTML: `\n [id=\"${props.context.context}\"]:hover~.mynah-main > .mynah-cards-wrapper > .mynah-card:not([data-filter*=\"${props.context.context},\"]) {\n opacity: 0.15;\n }`,\n }),\n DomBuilder.getInstance().build({\n type: 'input',\n classNames: [\n 'mynah-context-checkbox',\n ContextTypeClassNames[props.context.type ?? ContextTypes.SHOULD],\n ],\n attributes: { type: 'checkbox', id: props.context.context },\n }),\n ];\n }\n}\n\nexport const ContextTypePriorityMap = Object.keys(ContextTypes);\nexport const EmptyContextObject = {\n context: '',\n visible: false,\n availableInSuggestion: false,\n type: ContextTypes.SHOULD,\n source: ContextSource.SUGGESTION,\n};\n\nexport class ContextManager {\n private static instance: ContextManager;\n contextMap: Record<string, ContextType> = {};\n private contextCheckboxes: Record<string, HTMLElement[]> = {};\n\n public static getInstance (): ContextManager {\n if (ContextManager.instance === undefined) {\n ContextManager.instance = new ContextManager();\n }\n\n return ContextManager.instance;\n }\n\n removeAll = (): void => {\n Object.keys(this.contextMap).forEach(contextKey => {\n delete this.contextMap[contextKey].visible;\n if (this.contextCheckboxes[contextKey] !== undefined) {\n this.contextCheckboxes[contextKey].forEach(elm => elm.remove());\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.contextCheckboxes[contextKey];\n }\n });\n DomBuilder.getInstance().root.dispatchEvent(new CustomEvent(MynahEventNames.REMOVE_ALL_CONTEXT, {}));\n };\n\n clear = (): void => {\n Object.keys(this.contextMap).forEach(contextKey => {\n if (this.contextMap[contextKey].visible ?? false) {\n this.contextMap[contextKey].availableInSuggestion = false;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.contextMap[contextKey];\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (this.contextCheckboxes[contextKey]) {\n this.contextCheckboxes[contextKey].forEach(elm => elm.remove());\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.contextCheckboxes[contextKey];\n }\n }\n });\n };\n\n areContextItemsIdentical = (context: ContextType, contextToCompare: ContextType): boolean =>\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n context &&\n contextToCompare &&\n context.context === contextToCompare.context &&\n context.type === contextToCompare.type &&\n context.visible === contextToCompare.visible;\n\n addOrUpdateContext = (context: ContextType, dispatchEvent: boolean = true): ContextType => {\n const contextKey = context.context;\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n const currentContext = this.contextMap[contextKey] ? this.contextMap[contextKey] : EmptyContextObject;\n const newContext = {\n ...currentContext,\n ...context,\n };\n if (!((newContext.visible ?? false) && !(currentContext.visible ?? false))) {\n // Source is only updated, if the new context is making the context visible.\n newContext.source = currentContext.source;\n }\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (!this.contextMap[contextKey] || !this.areContextItemsIdentical(this.contextMap[contextKey], newContext)) {\n this.contextMap[contextKey] = newContext;\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (this.contextCheckboxes[contextKey]) {\n this.contextCheckboxes[contextKey].forEach(elm => elm.remove());\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.contextCheckboxes[contextKey];\n }\n if (this.contextMap[contextKey].type === ContextTypes.SHOULD) {\n this.contextCheckboxes[contextKey] = new ContextCheckbox({\n context: this.contextMap[contextKey],\n }).render;\n DomBuilder.getInstance()\n .getPortal(MynahPortalNames.WRAPPER)\n .insertChild('afterbegin', this.contextCheckboxes[contextKey]);\n }\n\n if ((this.contextMap[contextKey].visible ?? false) && dispatchEvent) {\n DomBuilder.getInstance().root.dispatchEvent(\n new CustomEvent(MynahEventNames.CONTEXT_VISIBILITY_CHANGE, { detail: { context: contextKey } })\n );\n }\n }\n return newContext;\n };\n\n removeContext = (contextKey: string): void => {\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (this.contextMap[contextKey]) {\n if (this.contextMap[contextKey].availableInSuggestion ?? false) {\n this.contextMap[contextKey].visible = false;\n this.contextMap[contextKey].type = ContextTypes.SHOULD;\n } else {\n delete this.contextMap[contextKey].visible;\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (this.contextCheckboxes[contextKey]) {\n this.contextCheckboxes[contextKey].forEach(elm => elm.remove());\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.contextCheckboxes[contextKey];\n }\n }\n DomBuilder.getInstance().root.dispatchEvent(\n new CustomEvent(MynahEventNames.CONTEXT_VISIBILITY_CHANGE, { detail: { context: contextKey } })\n );\n }\n };\n\n getContextObjectFromKey = (contextKey: string): ContextType => {\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (this.contextMap[contextKey]) {\n return this.contextMap[contextKey];\n }\n return { ...EmptyContextObject, context: contextKey };\n };\n\n getContextMatchPolicy = (): SearchPayloadMatchPolicy => {\n return Object.keys(this.contextMap).reduce(\n (policySet: SearchPayloadMatchPolicy, currentKey: string) => {\n if ((this.contextMap[currentKey].visible ?? false) && currentKey.length > 0) {\n policySet[this.contextMap[currentKey].type as ContextTypes].push(currentKey);\n }\n return policySet;\n },\n {\n must: [],\n should: [],\n mustNot: [],\n }\n );\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const getTimeDiff = (differenceInMs: number, show?: {\n years?: boolean;\n months?: boolean;\n weeks?: boolean;\n days?: boolean;\n hours?: boolean;\n minutes?: boolean;\n} | 1 | 2 | 3 | 4 | 5 | 6, separator?: string): string => {\n // get total seconds for the difference\n let delta = Math.abs(differenceInMs) / 1000;\n\n // calculate (and subtract) whole years\n const years = Math.floor(delta / (86_400 * 30 * 12));\n delta -= years * (86_400 * 30 * 12);\n\n // calculate (and subtract) whole months\n const months = Math.floor(delta / (86_400 * 30));\n delta -= months * (86_400 * 30);\n\n // calculate (and subtract) whole weeks\n const weeks = Math.floor(delta / (86_400 * 7));\n delta -= weeks * (86_400 * 7);\n\n // calculate (and subtract) whole days\n const days = Math.floor(delta / 86_400);\n delta -= days * 86_400;\n\n // calculate (and subtract) whole hours\n const hours = Math.floor(delta / 3_600) % 24;\n delta -= hours * 3_600;\n\n // calculate (and subtract) whole minutes\n const minutes = Math.floor(delta / 60) % 60;\n delta -= minutes * 60;\n\n const combined = [];\n if (years !== 0 && (show === undefined || typeof show !== 'object' || show.years !== false)) {\n combined.push(`${years > 1 ? years : 'a'} year${years > 1 ? 's' : ''}`);\n }\n if (months !== 0 && (show === undefined || typeof show !== 'object' || show.months !== false)) {\n combined.push(`${months > 1 ? months : 'a'} month${months > 1 ? 's' : ''}`);\n }\n if (weeks !== 0 && (show === undefined || typeof show !== 'object' || show.weeks !== false)) {\n combined.push(`${weeks > 1 ? weeks : 'a'} week${weeks > 1 ? 's' : ''}`);\n }\n if (days !== 0 && (show === undefined || typeof show !== 'object' || show.days !== false)) {\n combined.push(`${days > 1 ? days : 'a'} day${days > 1 ? 's' : ''}`);\n }\n if (hours !== 0 && (show === undefined || typeof show !== 'object' || show.hours !== false)) {\n combined.push(`${hours > 1 ? hours : 'an'} hour${hours > 1 ? 's' : ''}`);\n }\n if (minutes !== 0 && (show === undefined || typeof show !== 'object' || show.minutes !== false)) {\n combined.push(`${minutes > 1 ? minutes : 'a'} minute${minutes > 1 ? 's' : ''}`);\n }\n\n if (years + months + weeks + days + hours + minutes === 0) {\n return 'a minute';\n }\n\n if (show !== undefined && typeof show === 'number') {\n combined.splice(show, combined.length);\n }\n return combined.join(separator ?? ' ');\n};\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/* eslint-disable @typescript-eslint/method-signature-style */\n/* eslint-disable @typescript-eslint/consistent-type-assertions */\n/* eslint-disable @typescript-eslint/prefer-optional-chain */\n/* eslint-disable @typescript-eslint/strict-boolean-expressions */\nexport const DS: typeof document.querySelectorAll = document.querySelectorAll.bind(document);\n\nexport interface DomBuilderObject {\n type: string;\n attributes?: Record<string, string> | undefined;\n classNames?: string[] | undefined;\n events?: Record<string, (event?: any) => any> | undefined;\n children?: Array<string | DomBuilderObject | HTMLElement | ExtendedHTMLElement> | undefined;\n innerHTML?: string | undefined;\n persistent?: boolean | undefined;\n}\n\nexport interface DomBuilderObjectFilled {\n attributes?: Record<string, string | undefined>;\n classNames?: string[];\n events?: Record<string, (event?: any) => any>;\n children?: Array<string | DomBuilderObject | HTMLElement | ExtendedHTMLElement>;\n innerHTML?: string | undefined;\n persistent?: boolean;\n}\n\nconst EmptyDomBuilderObject: DomBuilderObject = {\n type: 'div',\n attributes: {},\n classNames: [],\n events: {},\n children: [],\n innerHTML: undefined,\n persistent: false,\n};\n\nexport interface ExtendedHTMLElement extends HTMLInputElement {\n addClass(className: string): ExtendedHTMLElement;\n removeClass(className: string): ExtendedHTMLElement;\n toggleClass(className: string): ExtendedHTMLElement;\n hasClass(className: string): boolean;\n insertChild(\n position: 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend',\n child:\n | string\n | DomBuilderObject\n | HTMLElement\n | ExtendedHTMLElement\n | Array<string | DomBuilderObject | HTMLElement | ExtendedHTMLElement>\n ): ExtendedHTMLElement;\n clear(removePersistent?: boolean): ExtendedHTMLElement;\n builderObject: DomBuilderObject;\n update(builderObject: DomBuilderObjectFilled): ExtendedHTMLElement;\n}\n\nexport class DomBuilder {\n private static instance: DomBuilder;\n root: ExtendedHTMLElement;\n private portals: Record<string, ExtendedHTMLElement> = {};\n\n private constructor (rootSelector: string) {\n this.root = DS(rootSelector)[0] as ExtendedHTMLElement;\n this.extendDomFunctionality(this.root);\n }\n\n public static getInstance (rootSelector?: string): DomBuilder {\n if (!DomBuilder.instance) {\n DomBuilder.instance = new DomBuilder(rootSelector !== undefined ? rootSelector : 'body');\n }\n\n return DomBuilder.instance;\n }\n\n addClass = function (this: ExtendedHTMLElement, className: string): ExtendedHTMLElement {\n if (className !== '') {\n this.classList.add(className);\n // eslint-disable-next-line @typescript-eslint/prefer-includes\n if (this.builderObject.classNames?.indexOf(className) === -1) {\n this.builderObject.classNames = [ ...this.builderObject.classNames, className ];\n }\n }\n return this;\n };\n\n removeClass = function (this: ExtendedHTMLElement, className: string): ExtendedHTMLElement {\n this.classList.remove(className);\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (this.builderObject.classNames !== undefined && this.builderObject.classNames.includes(className)) {\n this.builderObject.classNames.splice(this.builderObject.classNames.indexOf(className), 1);\n }\n return this;\n };\n\n toggleClass = function (this: ExtendedHTMLElement, className: string): ExtendedHTMLElement {\n if (this.classList.contains(className)) {\n this.removeClass(className);\n } else {\n this.addClass(className);\n }\n return this;\n };\n\n hasClass = function (this: ExtendedHTMLElement, className: string): boolean {\n return this.classList.contains(className);\n };\n\n insertChild = function (\n this: ExtendedHTMLElement,\n position: 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend',\n child: string | HTMLElement | ExtendedHTMLElement | Array<string | HTMLElement | ExtendedHTMLElement>\n ): ExtendedHTMLElement {\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (child) {\n if (child instanceof Array) {\n child.forEach(childItem => {\n if (childItem instanceof Element) {\n this.insertAdjacentElement(position, childItem);\n } else if (typeof childItem === 'string') {\n this.insertAdjacentText(position, childItem);\n }\n });\n } else {\n if (child instanceof Element) {\n this.insertAdjacentElement(position, child);\n } else if (typeof child === 'string') {\n this.insertAdjacentText(position, child);\n }\n }\n }\n return this;\n };\n\n clearChildren = function (this: ExtendedHTMLElement, removePersistent: boolean): ExtendedHTMLElement {\n Array.from(this.children).forEach((child: ExtendedHTMLElement | Element) => {\n if (\n removePersistent ||\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n !(child as ExtendedHTMLElement).builderObject ||\n (child as ExtendedHTMLElement).builderObject.persistent !== true\n ) {\n child.remove();\n }\n });\n return this;\n };\n\n extendDomFunctionality = function (this: DomBuilder, domElement: HTMLElement): ExtendedHTMLElement {\n const extendedElement: ExtendedHTMLElement = domElement as ExtendedHTMLElement;\n extendedElement.addClass = this.addClass.bind(extendedElement);\n extendedElement.removeClass = this.removeClass.bind(extendedElement);\n extendedElement.toggleClass = this.toggleClass.bind(extendedElement);\n extendedElement.hasClass = this.hasClass.bind(extendedElement);\n extendedElement.insertChild = this.insertChild.bind(extendedElement);\n extendedElement.clear = this.clearChildren.bind(extendedElement);\n return extendedElement;\n };\n\n build = (domBuilderObject: DomBuilderObject): ExtendedHTMLElement => {\n const readyToBuildObject: DomBuilderObject = { ...EmptyDomBuilderObject, ...domBuilderObject };\n const buildedDom = document.createElement(readyToBuildObject.type);\n\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n buildedDom.classList.add(...(readyToBuildObject.classNames?.filter(className => className !== '') || []));\n\n Object.keys(readyToBuildObject.events ?? {}).forEach((eventName: string) =>\n buildedDom.addEventListener(\n eventName,\n readyToBuildObject.events ? readyToBuildObject.events[eventName] : cancelEvent\n )\n );\n\n Object.keys(readyToBuildObject.attributes ?? {}).forEach(attributeName =>\n buildedDom.setAttribute(\n attributeName,\n readyToBuildObject.attributes !== undefined ? readyToBuildObject.attributes[attributeName] : ''\n )\n );\n\n if (typeof readyToBuildObject.innerHTML === 'string') {\n buildedDom.innerHTML = readyToBuildObject.innerHTML;\n } else if (readyToBuildObject.children !== undefined && readyToBuildObject.children.length > 0) {\n this.insertChild.apply(buildedDom as ExtendedHTMLElement, [\n 'beforeend',\n [\n ...(readyToBuildObject.children as any[]).map(\n (child: string | ExtendedHTMLElement | HTMLElement | DomBuilderObject) => {\n if (typeof child === 'string' || child instanceof HTMLElement) {\n return child;\n }\n return this.build(child);\n }\n ),\n ],\n ]);\n }\n\n ;(buildedDom as ExtendedHTMLElement).builderObject = readyToBuildObject\n ;(buildedDom as ExtendedHTMLElement).update = (builderObject: DomBuilderObjectFilled): ExtendedHTMLElement => {\n return this.update(buildedDom as ExtendedHTMLElement, builderObject);\n };\n this.extendDomFunctionality(buildedDom);\n return buildedDom as ExtendedHTMLElement;\n };\n\n update = function (\n domToUpdate: ExtendedHTMLElement,\n domBuilderObject: DomBuilderObjectFilled\n ): ExtendedHTMLElement {\n if (domToUpdate.builderObject) {\n if (domBuilderObject.classNames !== undefined) {\n domToUpdate.classList.remove(...(domToUpdate.builderObject.classNames as string[]));\n domToUpdate.classList.add(...domBuilderObject.classNames.filter(className => className !== ''));\n }\n\n Object.keys(domBuilderObject.events ?? {}).forEach(eventName => {\n if (domToUpdate.builderObject.events !== undefined && domToUpdate.builderObject.events[eventName]) {\n domToUpdate.removeEventListener(eventName, domToUpdate.builderObject.events[eventName]);\n }\n if (domBuilderObject.events !== undefined && domBuilderObject.events[eventName] !== undefined) {\n domToUpdate.addEventListener(eventName, domBuilderObject.events[eventName]);\n }\n });\n\n Object.keys(domBuilderObject.attributes ?? {}).forEach(attributeName => {\n if (\n domBuilderObject.attributes !== undefined &&\n domBuilderObject.attributes[attributeName] === undefined\n ) {\n domToUpdate.removeAttribute(attributeName);\n } else if (domBuilderObject.attributes !== undefined) {\n domToUpdate.setAttribute(attributeName, domBuilderObject.attributes[attributeName] as string);\n }\n });\n\n if (typeof domBuilderObject.innerHTML === 'string') {\n domToUpdate.innerHTML = domBuilderObject.innerHTML;\n } else if (domBuilderObject.children !== undefined && domBuilderObject.children.length > 0) {\n domToUpdate.clear();\n domToUpdate.insertChild('beforeend', domBuilderObject.children);\n }\n\n domToUpdate.builderObject = { ...EmptyDomBuilderObject, ...domBuilderObject } as DomBuilderObject;\n } else {\n console.warn('element was not created with dom builder');\n }\n return domToUpdate;\n };\n\n createPortal = (\n portalName: string,\n builderObject: DomBuilderObject,\n position: 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend'\n ): ExtendedHTMLElement => {\n const portalDom = this.build(builderObject);\n this.root.insertChild(position || 'beforeend', portalDom);\n this.portals[portalName] = portalDom;\n return portalDom;\n };\n\n getPortal = (portalName: string): ExtendedHTMLElement => this.portals[portalName];\n removePortal = (portalName: string): void => this.portals[portalName].remove();\n}\n\nexport const cancelEvent = (event: Event): boolean => {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n return false;\n};\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Suggestion, SupportedCodingLanguages, SupportedCodingLanguagesExtensionToTypeMap } from '../static';\n\n/**\n * Finds the coding language if there is a match witnin the supported languages from context or body or from the title\n * @param suggestion SuggestionType\n * @returns string | undefined\n */\nexport const findLanguageFromSuggestion = (suggestion: Suggestion): string | undefined => {\n let res = suggestion.context.reduce((res: string | undefined, ctx: string): string | undefined => {\n if (res === undefined && SupportedCodingLanguages.includes(ctx)) {\n return ctx;\n }\n return res;\n }, undefined);\n\n if (res === undefined) {\n SupportedCodingLanguages.forEach(codingLang => {\n if (\n suggestion.title.match(new RegExp(codingLang, 'gi')) !== null ||\n suggestion.body.match(new RegExp(codingLang, 'gi')) !== null\n ) {\n res = codingLang;\n }\n });\n }\n\n if (res === undefined) {\n res = getLanguageFromFileName(suggestion.title);\n }\n return res;\n};\n\ntype SupportedFileExtension = keyof typeof SupportedCodingLanguagesExtensionToTypeMap;\n/**\n * Finds the coding language if there is a match within the supported languages from the given file name\n * @param fileName string\n * @returns string | undefined\n */\nexport const getLanguageFromFileName = (fileName: string): string | undefined => {\n const fileExtension: SupportedFileExtension = fileName.split('.').pop() as SupportedFileExtension;\n return SupportedCodingLanguagesExtensionToTypeMap[fileExtension] ?? undefined;\n};\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const generateUID = (): string => {\n const firstPart: number = (Math.random() * 46656) | 0;\n const secondPart: number = (Math.random() * 46656) | 0;\n return `000${firstPart.toString(36)}`.slice(-3) + `000${secondPart.toString(36)}`.slice(-3);\n};\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport interface ServiceConnector {\n liveSearchHandler?: (searchPayload?: SearchPayload, suggestions?: Suggestion[]) => void;\n liveSearchStateExternalChangeHandler?: (state: LiveSearchState) => void;\n uiReady: () => void;\n once: () => Promise<Suggestion[]>;\n requestSuggestions: (\n searchPayload: SearchPayload,\n isFromHistory?: boolean,\n isFromAutocomplete?: boolean\n ) => Promise<Suggestion[] | undefined>;\n updateVoteOfSuggestion: (suggestion: Suggestion, vote: RelevancyVoteType) => void;\n clickCodeDetails: (\n code: string,\n fileName?: string,\n range?: {\n start: { row: string; column?: string };\n end?: { row: string; column?: string };\n }\n ) => void;\n recordContextChange: (changeType: ContextChangeType, queryContext: ContextType) => void;\n triggerSuggestionEngagement: (engagement: SuggestionEngagement) => void;\n triggerSuggestionClipboardInteraction: (suggestionId: string, type?: string, text?: string) => void;\n triggerSuggestionEvent: (eventName: SuggestionEventName, suggestion: Suggestion) => void;\n sendFeedback: (feedbackPayload: FeedbackPayload) => void;\n requestHistoryRecords: (filterPayload: SearchHistoryFilters) => Promise<SearchHistoryItem[]>;\n requestAutocomplete: (input: string) => Promise<AutocompleteItem[]>;\n toggleLiveSearch?: (\n liveSearchState: LiveSearchState,\n onFeedReceived: (searchPayload?: SearchPayload, suggestions?: Suggestion[]) => void\n ) => void;\n clickAutocompleteSuggestionItem: (\n text: string,\n currSelected?: number,\n suggestionCount?: number\n ) => void;\n}\nexport interface StateManager {\n getState: () => Record<string, any>;\n setState: (state: Record<string, any>) => void;\n}\n\nexport const MynahEventNames = {\n CONTEXT_VISIBILITY_CHANGE: 'contextVisibilityChange',\n REMOVE_ALL_CONTEXT: 'removeAllContext',\n};\nexport const MynahPortalNames = {\n WRAPPER: 'wrapper',\n OVERLAY: 'overlay',\n FEEDBACK_FORM: 'feedbackForm',\n};\nexport interface SearchPayloadMatchPolicy {\n must: string[];\n should: string[];\n mustNot: string[];\n}\nexport interface SearchPayloadCodeSelection {\n selectedCode: string;\n file?: {\n range: {\n start: { row: string; column: string };\n end: { row: string; column: string };\n };\n name: string;\n };\n}\nexport interface SearchPayloadCodeQuery {\n simpleNames: string[];\n usedFullyQualifiedNames: string[];\n}\nexport interface SearchPayload {\n query: string;\n matchPolicy: SearchPayloadMatchPolicy;\n codeSelection: SearchPayloadCodeSelection;\n codeQuery?: SearchPayloadCodeQuery;\n}\nexport interface SuggestionMetaData {\n site: string;\n stars?: number; // repo stars\n forks?: number; // repo forks\n answers?: number; // total answer if it is a question\n isAccepted?: boolean; // is accepted or not if it is an answer\n upVotes?: number; // upVote count for question or answer\n lastActivityDate?: number; // creation or last update date for question or answer\n}\nexport interface Suggestion {\n id: string;\n title: string;\n url: string;\n body: string;\n context: string[];\n type?: string;\n metaData?: SuggestionMetaData;\n}\n\nexport enum KeyMap {\n ESCAPE = 'Escape',\n ENTER = 'Enter',\n BACKSPACE = 'Backspace',\n DELETE = 'Delete',\n ARROW_UP = 'ArrowUp',\n ARROW_DOWN = 'ArrowDown',\n ARROW_LEFT = 'ArrowLeft',\n ARROW_RIGHT = 'ArrowRight',\n PAGE_UP = 'PageUp',\n PAGED_OWN = 'PageDown',\n HOME = 'Home',\n END = 'End',\n META = 'Meta',\n TAB = 'Tab',\n SHIFT = 'Shift',\n CONTROL = 'Control',\n ALT = 'Alt',\n}\n\nexport enum LiveSearchState {\n PAUSE = 'pauseLiveSearch',\n RESUME = 'resumeLiveSearch',\n STOP = 'stopLiveSearch',\n}\n\nexport const SupportedCodingLanguages = [ 'typescript', 'javascript', 'java', 'json', 'python' ];\ntype ElementType<T extends readonly unknown[]> = T extends ReadonlyArray<infer ElementType> ? ElementType : never;\n\nexport type SupportedCodingLanguagesType = ElementType<typeof SupportedCodingLanguages>;\nexport const SupportedCodingLanguagesExtensionToTypeMap = {\n ts: 'typescript',\n js: 'javascript',\n py: 'python',\n java: 'java',\n json: 'json',\n};\n\nexport type OnCopiedToClipboardFunction = (type?: 'selection' | 'block', text?: string) => void;\nexport type OnCopiedToClipboardFunctionWithSuggestionId = (\n suggestionId: string,\n type?: 'selection' | 'block',\n text?: string\n) => void;\n\nexport interface SearchHistoryFilters {\n /**\n * Flag to define are we looking in global search-history or only in worplace\n *\n * @default - Search will be performed on workplace store\n */\n isGlobal: boolean;\n /**\n * Flag to define are we looking only for queries which were manually typed by the user,\n * or only for quries whic were generated by plugin itself, or it's not important\n *\n * @default - We won't filter records bases on type of input\n */\n isManualSearch?: boolean;\n /**\n * Array of language filters. If user chose some, the results would be filtered\n *\n * @default - We won't filter records bases on languages\n */\n languages: string[];\n /**\n * User text from search bar in search-history part of UI\n *\n * @default - We won't filter records bases on user input in search-history search bar\n */\n text?: string;\n /**\n * Allow us to skip n-first results\n *\n * @default - The starting offset will be 0\n */\n resultOffset: number;\n /**\n * Limit of how many results we want to get from store\n *\n * @default - The records count won't be limited\n */\n resultLimit?: number;\n}\n\nexport interface CodeQuery {\n simpleNames: string[];\n usedFullyQualifiedNames: string[];\n}\n\nexport enum ContextChangeType {\n 'ADD' = 'add',\n 'REMOVE' = 'remove',\n}\nexport enum SuggestionEventName {\n CLICK = 'click',\n OPEN = 'openSuggestion',\n COPY = 'copy',\n}\nexport enum RelevancyVoteType {\n UP = 'upvote',\n DOWN = 'downvote',\n}\n\n/**\n * 'interaction' will be set if there was a potential text selection or a click input was triggered by the user.\n * If this is a selection selectionDistanceTraveled object will also be filled\n * 'timespend' will be set basically if there is no interaction except mouse movements in a time spent longer than the ENGAGEMENT_DURATION_LIMIT\n * Don't forget that in 'timespend' case, user should leave the suggestion card at some point to count it as an interaction.\n * (They need to go back to the code or move to another card instead)\n */\nexport enum EngagementType {\n INTERACTION = 'interaction',\n TIME = 'timespend',\n}\nexport interface SuggestionEngagement {\n /**\n * Suggestion information\n */\n suggestion: Suggestion;\n\n /**\n * Engagement type\n */\n engagementType: EngagementType;\n /**\n * Total duration in ms till the engagement triggered.\n */\n engagementDurationTillTrigger: number;\n /**\n * This is a little bit more than what you might expect on a normal scroll position of the suggestion card.\n * This attribute gives the value for how much the users traveled their mouses and additionally how much they scrolled to focus on that suggestion\n */\n scrollDistanceToEngage: number;\n /**\n * Total mouse movement in x and y directions till the engagament triggered.\n * To avoid confusion: this is not the distance between start and end points, this is the total traveled distance.\n */\n totalMouseDistanceTraveled: { x: number; y: number };\n /**\n * If the engagementType is \"interaction\" and this object has a value, you can assume it as a text selection.\n * If the engagementType is \"interaction\" but this object is not defined, you can assume it as a click\n */\n selectionDistanceTraveled?: { x: number; y: number; selectedText?: string };\n}\n\nexport interface SearchHistoryItem {\n query: {\n input: string;\n queryContext: SearchPayloadMatchPolicy;\n queryId?: string;\n trigger: string;\n codeQuery: CodeQuery;\n codeSelection: SearchPayloadCodeSelection;\n };\n recordDate?: number;\n suggestions: Suggestion[];\n}\n\nexport enum ContextTypes {\n MUST = 'must',\n SHOULD = 'should',\n MUST_NOT = 'mustNot',\n}\nexport enum ContextSource {\n AUTO = 'auto',\n USER = 'user',\n SUGGESTION = 'suggestion',\n}\nexport enum ContextTypeClassNames {\n should = 'mynah-should-contain',\n must = 'mynah-must-contain',\n mustNot = 'mynah-must-not-contain',\n}\nexport interface ContextType {\n context: string;\n type?: ContextTypes;\n availableInSuggestion?: boolean;\n visible?: boolean;\n source: ContextSource;\n}\n\nexport type FeedbackStars = 1 | 2 | 3 | 4 | 5;\nexport interface FeedbackPayload {\n stars?: FeedbackStars;\n comment?: string;\n}\nexport interface AutocompleteItem {\n suggestion: string;\n highlight: string;\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nconst en = {\n searchInputAPIHelpPlaceholder: 'You can enrich your query here.',\n searchInputMynahPlaceholder: 'What can Mynah help you with?',\n};\n\nexport default en;\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { I18nResolver } from 'i18n-ts';\nimport en from './en';\n\nexport class I18N {\n private static instance: I18N;\n public texts;\n private constructor (localLanguage?: string) {\n const i18n = {\n en,\n default: en,\n };\n this.texts = new I18nResolver(i18n, localLanguage).translation;\n }\n\n public static getInstance (localLanguage?: string): I18N {\n if (I18N.instance === undefined) {\n I18N.instance = new I18N(localLanguage);\n }\n\n return I18N.instance;\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { MainContainer } from './components/main-container';\nimport { Notification, NotificationType } from './components/notification/notification';\nimport { SearchCard } from './components/search-block/search-card';\nimport { MynahConfig } from './helper/config';\nimport { ContextManager } from './helper/context-manager';\nimport { DomBuilder, ExtendedHTMLElement } from './helper/dom';\nimport {\n SuggestionEngagement,\n MynahPortalNames,\n Suggestion,\n SearchPayload,\n MynahEventNames,\n LiveSearchState,\n ContextChangeType,\n SuggestionEventName,\n RelevancyVoteType,\n FeedbackPayload,\n ServiceConnector,\n StateManager\n} from './static';\nimport { I18N } from './translations/i18n';\nimport './styles/styles.scss';\n\nexport {\n AutocompleteItem,\n SearchPayloadCodeSelection,\n FeedbackPayload,\n RelevancyVoteType,\n LiveSearchState,\n SearchPayload,\n Suggestion,\n ContextType,\n SearchHistoryItem,\n EngagementType,\n SuggestionEngagement,\n} from './static';\n\nexport interface MynahUIProps {\n serviceConnector: ServiceConnector;\n stateManager: StateManager;\n}\nexport class MynahUI {\n private readonly wrapper: ExtendedHTMLElement;\n private readonly searchCard: SearchCard;\n private readonly mainContainer: MainContainer;\n private readonly config: MynahConfig;\n private readonly connector: ServiceConnector;\n\n constructor (props: MynahUIProps) {\n DomBuilder.getInstance('body');\n ContextManager.getInstance();\n this.connector = props.serviceConnector;\n this.config = new MynahConfig({ stateManager: props.stateManager });\n\n I18N.getInstance(this.config.getConfig('language'));\n\n const isLiveSearchOn =\n this.config.getConfig('live') !== undefined &&\n this.config.getConfig('live') !== false &&\n this.config.getConfig('live') !== '';\n\n const listenPayloadChanges =\n this.config.getConfig('listen-payloads') !== undefined &&\n this.config.getConfig('listen-payloads') !== false &&\n this.config.getConfig('listen-payloads') !== '';\n\n if (isLiveSearchOn) {\n this.connector.liveSearchHandler = this.handleLiveSearch;\n this.connector.liveSearchStateExternalChangeHandler = this.handleLiveSearchExternalCommand;\n }\n\n if (listenPayloadChanges) {\n this.connector.liveSearchHandler = this.handlePayloadChange;\n }\n\n this.wrapper = DomBuilder.getInstance().createPortal(\n MynahPortalNames.WRAPPER,\n {\n type: 'div',\n attributes: { id: 'mynah-wrapper' },\n },\n 'afterbegin'\n );\n\n const codeQuery = (() => {\n try {\n return JSON.parse(this.config.getConfig('code-query'));\n } catch (err) {\n console.warn('Cannot parse code-query data from config.');\n }\n })();\n\n this.searchCard = new SearchCard({\n liveSearch: isLiveSearchOn,\n onHistoryOpen: this.connector.requestHistoryRecords,\n onAutocompleteRequest: this.connector.requestAutocomplete,\n onFeedbackSet: (feedbackPayload: FeedbackPayload) => {\n this.connector.sendFeedback(feedbackPayload);\n },\n onLiveSearchToggle: (value: LiveSearchState) => {\n if (this.connector.toggleLiveSearch != null) {\n this.connector.toggleLiveSearch(value, this.handleLiveSearch);\n }\n },\n onSearch: this.handleSearch,\n onHistoryChange: (suggestions: Suggestion[], payload: SearchPayload) => {\n if (suggestions !== undefined && suggestions.length > 0) {\n this.wrapper.addClass('mynah-showing-suggestions-from-history');\n this.mainContainer.updateCards(suggestions);\n\n void this.connector.requestSuggestions(payload, true).then(() => {\n // event sent\n });\n } else {\n this.wrapper.removeClass('mynah-showing-suggestions-from-history');\n this.mainContainer.updateCards([]);\n const notification = new Notification({\n title: \"Can't show suggestions\",\n content: 'It seems like there was no suggestion on this search.',\n type: NotificationType.WARNING,\n onNotificationClick: () => { },\n });\n notification.notify();\n }\n },\n onCodeDetailsClicked: this.connector.clickCodeDetails,\n codeSelection: (() => {\n try {\n return JSON.parse(this.config.getConfig('code-selection'));\n } catch (err) {\n console.warn('Cannot parse code-selection data from config.');\n }\n })(),\n codeQuery,\n initText: this.config.getConfig('query-text'),\n initContextList: (() => {\n try {\n return JSON.parse(this.config.getConfig('context'));\n } catch (err) {\n console.warn('Cannot parse context from config.');\n }\n })(),\n });\n this.mainContainer = new MainContainer({\n onVoteChange: (suggestion: Suggestion, vote: RelevancyVoteType) => {\n this.connector.updateVoteOfSuggestion(suggestion, vote);\n },\n onSuggestionOpen: (suggestion: Suggestion) => {\n this.connector.triggerSuggestionEvent(SuggestionEventName.CLICK, suggestion);\n },\n onSuggestionLinkClick: (suggestion: Suggestion) => {\n this.connector.triggerSuggestionEvent(SuggestionEventName.OPEN, suggestion);\n },\n onSuggestionLinkCopy: (suggestion: Suggestion) => {\n this.connector.triggerSuggestionEvent(SuggestionEventName.COPY, suggestion);\n },\n onSuggestionEngaged: (engagement: SuggestionEngagement) => {\n this.connector.triggerSuggestionEngagement(engagement);\n },\n onScroll: (e: Event) => this.searchCard.setFolded((e.target as HTMLElement).scrollTop > 0),\n onCopiedToClipboard: this.connector.triggerSuggestionClipboardInteraction,\n });\n\n this.wrapper\n .insertChild('beforeend', this.searchCard.render)\n .insertChild('beforeend', this.mainContainer.render);\n\n DomBuilder.getInstance().root.addEventListener(\n MynahEventNames.CONTEXT_VISIBILITY_CHANGE as keyof HTMLElementEventMap,\n this.recordContextChange.bind(this) as EventListener\n );\n\n if (\n (this.config.getConfig('query-text') !== undefined && this.config.getConfig('query-text') !== '') ||\n (codeQuery !== undefined && codeQuery.simpleNames.length !== 0)\n ) {\n const initSuggestions = this.config.getConfig('suggestions');\n if (initSuggestions !== undefined && initSuggestions !== '') {\n this.handleContentUpdate(JSON.parse(initSuggestions));\n } else {\n if (\n this.config.getConfig('loading') !== undefined &&\n this.config.getConfig('loading') !== '' &&\n this.config.getConfig('loading') !== 'true'\n ) {\n this.searchCard.setWaitState(true);\n this.mainContainer.clearCards();\n }\n this.connector\n .once()\n .then(this.handleContentUpdate)\n .catch((reason: Error) => {\n console.warn(reason);\n this.searchCard.setWaitState(false);\n this.mainContainer.updateCards([]);\n });\n }\n }\n this.connector.uiReady();\n this.searchCard.addFocusOnInput();\n }\n\n public updateSearchPayload = (searchPayload: SearchPayload): void => {\n\n };\n\n private readonly handleLiveSearchExternalCommand = (state: LiveSearchState): void => {\n switch (state) {\n case LiveSearchState.PAUSE:\n case LiveSearchState.RESUME:\n this.searchCard.changeLiveSearchState(state);\n break;\n case LiveSearchState.STOP:\n this.searchCard.removeLiveSearchToggle();\n break;\n }\n };\n\n private readonly handlePayloadChange = (searchPayload?: SearchPayload): void => {\n this.searchCard.setSearchQuery('');\n ContextManager.getInstance().removeAll();\n\n if (searchPayload !== undefined) {\n this.searchCard.setSearchQuery(searchPayload.query);\n this.searchCard.setContextItems(searchPayload?.matchPolicy);\n this.handleSearch(searchPayload, false);\n }\n };\n\n private readonly handleLiveSearch = (searchPayload?: SearchPayload, suggestions?: Suggestion[]): void => {\n this.searchCard.onLiveSearchDataReceived();\n if (suggestions !== undefined) {\n this.handleContentUpdate(suggestions);\n }\n\n this.searchCard.setSearchQuery('');\n ContextManager.getInstance().removeAll();\n\n if (searchPayload !== undefined) {\n this.searchCard.setSearchQuery(searchPayload.query);\n this.searchCard.setContextItems(searchPayload?.matchPolicy);\n }\n };\n\n private readonly handleContentUpdate = (suggestions: Suggestion[]): void => {\n ContextManager.getInstance().clear();\n this.mainContainer.updateCards(suggestions);\n this.config.setConfig('suggestions', JSON.stringify(suggestions));\n this.searchCard.setWaitState(false);\n };\n\n public handleSearch = (\n payload: SearchPayload,\n isFromAutocomplete: boolean,\n currAutocompleteSuggestionSelected?: number,\n autocompleteSuggestionsCount?: number\n ): void => {\n this.wrapper.removeClass('mynah-showing-suggestions-from-history');\n this.searchCard.setWaitState(true);\n this.mainContainer.clearCards();\n\n this.config.setConfig('query-text', payload.query);\n this.config.setConfig('context', JSON.stringify(payload.matchPolicy));\n this.config.setConfig('code-selection', JSON.stringify(payload.codeSelection));\n this.config.setConfig('code-query', JSON.stringify(payload.codeQuery));\n\n if (isFromAutocomplete) {\n this.connector.clickAutocompleteSuggestionItem(\n payload.query,\n currAutocompleteSuggestionSelected,\n autocompleteSuggestionsCount\n );\n }\n\n this.connector\n .requestSuggestions(payload, false, isFromAutocomplete)\n .then((suggestions?: Suggestion[]) => {\n if (suggestions !== undefined) {\n this.handleContentUpdate(suggestions);\n }\n })\n .catch((error: Error) => {\n this.searchCard.setWaitState(false);\n this.mainContainer.updateCards([]);\n console.warn(error);\n new Notification({\n content: error.message ?? 'An error occured',\n title: 'Something went wrong',\n duration: 5000,\n onNotificationClick: () => { },\n type: NotificationType.ERROR\n }).notify();\n });\n };\n\n private readonly recordContextChange = (e: CustomEvent | { detail: { context: string } }): void => {\n const context = ContextManager.getInstance().getContextObjectFromKey(e.detail.context);\n if (context.visible !== undefined && context.visible) {\n this.connector.recordContextChange(ContextChangeType.ADD, context);\n } else {\n this.connector.recordContextChange(ContextChangeType.REMOVE, context);\n }\n };\n}\n"],"sourceRoot":""}