performance.mark("js-parse-end:54888-c8201a1db0ea0346.js"); "use strict";(globalThis.webpackChunk_github_ui_github_ui=globalThis.webpackChunk_github_ui_github_ui||[]).push([["54888"],{11675(e,t,n){n.d(t,{hF:()=>G,xR:()=>O,s_:()=>D});var r=n(74848),o=n(73537),s=n(55890),a=n(52111),i=n(35205),l=n(19519),c=n(71637),u=n(21513),d=n(59134),m=n(96540),f=n(16522),p=n(73974),g=n(38621),h=n(40961);let y="```suggestion";function b({onChange:e,inputValue:t,sourceContentFromDiffLines:n,onInsertSuggestedChange:o,shouldInsertSuggestionOnRender:a,editorRef:i}){let l=`${y} ${n??""} \`\`\``,c=()=>{o(),i.current?.focus();let n=""===t?l:`${t} ${l}`;(0,h.flushSync)(()=>{e(n)});let r=document.activeElement;if(!r||!(r instanceof HTMLTextAreaElement))return;let s=n.length-3;r.selectionStart=s-1,r.selectionEnd=s-1};return(0,m.useEffect)(()=>{if(a){let e=window.setTimeout(()=>c());return()=>{window.clearTimeout(e)}}},[]),(0,r.jsx)(s.n.ToolbarButton,{icon:g.FileDiffIcon,"aria-label":"Add a suggestion",onClick:c})}function j(e){let t,n=(0,f.c)(2),{sourceContentFromDiffLines:o}=e;return n[0]!==o?(t=(0,r.jsx)(p.f.ToolbarButton,{telemetryId:"add_suggestion",icon:g.FileDiffIcon,"aria-label":"Add a suggestion",onClick:e=>{let t=`${y} ${o??""} \`\`\``,n=0===e.state.doc.length?t:` ${t}`;return e.dispatch({changes:[{from:e.state.doc.length,insert:n}],selection:{anchor:e.state.doc.length+n.length-3-1}}),!0}}),n[0]=o,n[1]=t):t=n[1],t}b.displayName="AddSuggestionButton",j.displayName="HybridAddSuggestionButton";var v=n(68747),x=n(85579),_=n(4978),S=n(94781);function C(e){let t,n,o=(0,f.c)(10),{onSave:s,validationResult:a,children:i,trailingIcon:l,disabled:c,size:u}=e,d=c||!a.isValid,m=l&&c?g.AlertFillIcon:null;o[0]!==i||o[1]!==s||o[2]!==u||o[3]!==d||o[4]!==m?(t=(0,r.jsx)(S.x,{variant:"primary",size:u,onClick:s,disabled:d,trailingVisual:m,children:i}),o[0]=i,o[1]=s,o[2]=u,o[3]=d,o[4]=m,o[5]=t):t=o[5];let p=t;return o[6]!==p||o[7]!==a.errorMessage||o[8]!==a.isValid?(n=a.isValid?p:(0,r.jsx)(_.A,{text:a.errorMessage,direction:"w","data-testid":"save-button-tooltip",children:p}),o[6]=p,o[7]=a.errorMessage,o[8]=a.isValid,o[9]=n):n=o[9],n}C.displayName="SaveButton";var w=n(94709),T=n(34164);let E=(0,m.createContext)(null);E.displayName="SlashCommandButtonContext";let I=e=>{let t,n,o,s,a,i,l,c,u,d,p,g,h,y,b,j,v=(0,f.c)(27),{children:x,subject:_,onInsertText:S,onSave:C}=e,I=(0,m.useRef)(null),$=(0,m.useRef)(null);v[0]===Symbol.for("react.memo_cache_sentinel")?(t={top:0,left:0},v[0]=t):t=v[0];let[A,B]=(0,m.useState)(t),{top:P,left:F}=A;v[1]===Symbol.for("react.memo_cache_sentinel")?(n=()=>{let e=I.current;if(!e)return;let t=e?.querySelector("textarea"),n={top:0,left:0};for(;t!==e;){if(null===t)return;n.top=n.top+t.offsetTop,n.left=n.left+t.offsetLeft,t=t.offsetParent instanceof HTMLElement?t.offsetParent:null}B(n)},o=[],v[1]=n,v[2]=o):(n=v[1],o=v[2]),(0,m.useEffect)(n,o),v[3]===Symbol.for("react.memo_cache_sentinel")?(s=()=>{let e=$.current;if(!e)return;I.current?.querySelector("textarea")&&e.reconnect?.();let t=()=>{e.querySelector(".js-slash-command-menu:not(.d-none)")||e.reconnect?.()},n=I.current?.querySelector("textarea");return n?.addEventListener("focus",t),()=>{n?.removeEventListener("focus",t)}},a=[],v[3]=s,v[4]=a):(s=v[3],a=v[4]),(0,m.useEffect)(s,a),v[5]===Symbol.for("react.memo_cache_sentinel")?(i=()=>{let e=$.current;if(!e)return;let t=I.current?.querySelector("textarea")||null,n=new MutationObserver(()=>{let n=I.current?.querySelector("textarea");n&&n!==t&&(t=n,e.querySelector(".js-slash-command-menu:not(.d-none)")||e.reconnect?.())});return I.current&&n.observe(I.current,{childList:!0,subtree:!0}),()=>{n.disconnect()}},l=[],v[5]=i,v[6]=l):(i=v[5],l=v[6]),(0,m.useEffect)(i,l),v[7]!==C?(u=()=>{if(!C)return;let e=$.current;if(e)return e.addEventListener("request-submit",C),()=>{e.removeEventListener("request-submit",C)}},c=[C],v[7]=C,v[8]=c,v[9]=u):(c=v[8],u=v[9]),(0,m.useEffect)(u,c),v[10]!==S?(d={onInsertText:S},v[10]=S,v[11]=d):d=v[11];let M=d,k=`${P}px`,R=`${F}px`;if(v[12]!==k||v[13]!==R?(p={"& .js-slash-command-menu":{mt:k,ml:R}},v[12]=k,v[13]=R,v[14]=p):p=v[14],v[15]===Symbol.for("react.memo_cache_sentinel")?(g=(0,T.$)("js-slash-command-surface","SlashCommandsProvider-module__slashCommandContainer__cOhBG"),v[15]=g):g=v[15],v[16]!==_){let e;e=`/${_.repository.nwo}/slash_apps?surface=${function(e){switch(e){case"issue_comment":return"issue_comment";case"issue":return"issue_body";case"pull_request":return"pull_request";case"commit":return"commit"}}(_.type)}`,_.id&&(e+=`&subject_gid=${_.id.id}`),h=e,v[16]=_,v[17]=h}else h=v[17];return v[18]!==x||v[19]!==M?(y=(0,r.jsx)(E,{value:M,children:x}),v[18]=x,v[19]=M,v[20]=y):y=v[20],v[21]!==h||v[22]!==y?(b=(0,r.jsx)("slash-command-expander",{ref:$,keys:"/","data-slash-command-url":h,children:y}),v[21]=h,v[22]=y,v[23]=b):b=v[23],v[24]!==p||v[25]!==b?(j=(0,r.jsx)(w.az,{ref:I,sx:p,className:g,children:b}),v[24]=p,v[25]=b,v[26]=j):j=v[26],j};I.displayName="SlashCommandsProvider";let $=()=>{let e,t=(0,f.c)(2),n=(0,m.use)(E);return t[0]!==n?(e=n?(0,r.jsx)(s.n.ToolbarButton,{icon:g.DiffIgnoredIcon,"aria-label":"Slash commands",onClick:()=>n.onInsertText("/")}):null,t[0]=n,t[1]=e):e=t[1],e};$.displayName="SlashCommandsButton";let A=//;var B=n(25344),P=n(19129),F=n(78597);function M(e){let t,n,r,o=(0,f.c)(5),s=(0,m.useRef)(void 0);return o[0]===Symbol.for("react.memo_cache_sentinel")?(t=()=>{s.current&&(s.current=void 0)},o[0]=t):t=o[0],o[1]!==e?(n=[e],o[1]=e,o[2]=n):n=o[2],(0,m.useEffect)(t,n),o[3]!==e?(r=()=>(s.current||(s.current=e()),s.current),o[3]=e,o[4]=r):r=o[4],r}async function k(e){try{let t=await (0,F.lS)(`/settings/replies${e?`?context=${e}`:""}`);return(await t.json()).map(e=>({name:e.title,content:e.body}))}catch{return[]}}async function R({subjectId:e,subjectType:t,subjectRepoId:n}){let r=e?`/${e}`:"",o="?mention_suggester=1&user_avatar=1";o=n?`${o}&repository_id=${n}`:o;let s=`/suggestions/${t}${r}${o}`,a=await (0,F.lS)(s,{method:"GET"});return await a.json()}async function q(e){try{return(await R(e)).map(e=>"login"in e?{description:e.name,identifier:e.login,avatarUrl:e.avatarUrl,participant:e.participant}:{description:e.description,identifier:e.name,avatarUrl:e.avatarUrl,participant:e.participant})}catch{return[]}}async function L({subjectId:e,subjectType:t,subjectRepoId:n}){let r=e?`/${e}`:"",o=await (0,F.lS)(`/suggestions/${t}${r}?issue_suggester=1&repository_id=${n}`,{method:"GET"});return await o.json()}async function U(e){try{let t=await L(e),n=t.icons;return t.suggestions.map(e=>({id:e.number.toString(),titleText:e.title,titleHtml:e.title,iconHtml:n[e.type]}))}catch{return[]}}let N={mentions:"loading",references:"loading",savedReplies:[]},V=[],O=s.n.ActionButton,H="comment_box_last_view_mode",D=()=>{let e=(0,i.A)("localStorage");return(0,o.G7)("markdown_experience_hybrid_editor")?e.getItem(H)??"hybrid":"edit"},z=(0,i.A)("localStorage"),G=({ref:e,"aria-describedby":t,"data-testid":n,label:i,labelledBy:p,showLabel:g,disabled:h=!1,subject:y,viewMode:_,onChangeViewMode:S,value:w,placeholder:T,onChange:E,onSave:F,onCancel:R,validationResult:L,saveButtonText:O="Save",saveButtonTrailingIcon:G=!0,actions:K,footerButtons:W,toolbarButtons:X,contentIsStale:Y,fileUploadsEnabled:J=!0,minHeightLines:Q,maxHeightLines:Z,className:ee,onPrimaryAction:et,buttonSize:en,suggestedChangesConfig:er,markdownErrorMessage:eo,infoBanner:es,teamHovercardsEnabled:ea,setIsFileUploading:ei,markdownSuggestionsFetchMethod:el="lazy",lineNumber:ec,filePath:eu,startLineNumber:ed,onInputFocus:em,generatingText:ef})=>{let ep,eg=(ep=y)?"project"===ep.type?{subjectId:ep.id?.databaseId?.toString(),subjectType:ep.type}:{subjectId:ep.id?.databaseId?.toString()??ep.id?.id,subjectRepoId:ep.repository.databaseId,subjectType:"issue_comment"===ep.type?"issue":ep.type}:{},eh=y?.type==="project"?y?.id?.databaseId.toString():void 0,[ey,eb]=(0,m.useState)("eager"===el),{mentions:ej,references:ev,emojis:ex,savedReplies:e_}=function(e,t){let n,r,o,s,a=(0,f.c)(12);a[0]!==e?(n=void 0===e?{}:e,a[0]=e,a[1]=n):n=a[1];let i=n,l=(0,P.A)(),c=function(e){let t,n=(0,f.c)(4),{subjectId:r,subjectType:o,subjectRepoId:s}=e;return n[0]!==r||n[1]!==s||n[2]!==o?(t=()=>o&&("project"===o||s)?q({subjectId:r,subjectType:o,subjectRepoId:s}):Promise.resolve([]),n[0]=r,n[1]=s,n[2]=o,n[3]=t):t=n[3],M(t)}(i),u=function(e){let t,n=(0,f.c)(4),{subjectId:r,subjectType:o,subjectRepoId:s}=e;return n[0]!==r||n[1]!==s||n[2]!==o?(t=async()=>o&&s?U({subjectId:r,subjectType:o,subjectRepoId:s}):Promise.resolve([]),n[0]=r,n[1]=s,n[2]=o,n[3]=t):t=n[3],M(t)}(i),d=function(e){let t,n=(0,f.c)(2),{subjectType:r}=e;return n[0]!==r?(t=()=>k("issue"===r||"pull_request"===r?r:void 0),n[0]=r,n[1]=t):t=n[1],M(t)}(i),[p,g]=(0,m.useState)(N);a[2]!==c||a[3]!==u||a[4]!==d||a[5]!==l||a[6]!==t?(r=()=>{let e=async()=>{let[e,t,n]=await Promise.all([c(),u(),d()]);l()&&(e.length||t.length||n.length)&&g({mentions:e,references:t,savedReplies:n})};t&&e()},o=[c,u,d,l,t],a[2]=c,a[3]=u,a[4]=d,a[5]=l,a[6]=t,a[7]=r,a[8]=o):(r=a[7],o=a[8]),(0,m.useEffect)(r,o);let h=(0,B.P)(t),y=h.isPending?"loading":h.data??V;return a[9]!==p||a[10]!==y?(s={...p,emojis:y},a[9]=p,a[10]=y,a[11]=s):s=a[11],s}(eg,ey),eS=(0,x.y)({...eg,path:eu,lineNumber:ec,startCommitOid:y?.type==="project"?"":y?.comparison?.startCommitOid,startLineNumber:ed,endCommitOid:y?.type==="project"?"":y?.comparison?.endCommitOid,baseCommitOid:y?.type==="project"?"":y?.comparison?.startCommitOid,subject:y?.type==="project"?void 0:y?.pullRequestNumber}),eC=(0,v.fU)(eg.subjectRepoId?.toString(),eh),{isBrowser:ew}=(0,l.V)(),eT=(0,m.useMemo)(()=>ew?D():"edit",[ew]),[eE,eI]=(0,m.useState)(_??eT),[e$,eA]=(0,m.useState)(!1),eB=(0,m.useRef)(null);(0,u.T)(e??null,eB);let eP=(0,m.useRef)(null),eF=void 0!==y&&"repository"in y&&void 0!==y.repository,eM=eF&&y.repository.slashCommandsEnabled,[ek,eR]=(0,m.useState)(er?.shouldInsertSuggestedChange??!1);(0,m.useEffect)(()=>(eA(Y??!1),()=>{eA(!1)}),[Y]);let eq=(0,m.useMemo)(()=>e$?a.l:()=>{F?.(),eI(eT)},[F,e$,eT]);(0,m.useEffect)(()=>{eI(eT)},[eg.subjectRepoId,eg.subjectId,eT]),(0,m.useEffect)(()=>{_&&eI(_)},[_]);let eL=(0,m.useCallback)(e=>{eI(e),(0,o.G7)("markdown_experience_hybrid_editor")&&z.setItem(H,"preview"===e?"edit":e),S?.(e)},[S]),eU=(0,m.useCallback)(e=>{eB.current?.focus();try{document.execCommand("insertText",!1,e)}catch{}},[eB]),eN=(0,m.useCallback)(()=>{"lazy"!==el||ey||eb(!0),em?.()},[ey,el,em]);e$&&null!==eP.current&&window.scrollY>173&&eP.current.scrollIntoView();let eV=(0,m.useMemo)(()=>A.test(w),[w]);(0,m.useEffect)(()=>{ei&&ei(eV)},[eV,ei]);let eO=(0,m.useMemo)(()=>e=>((0,m.isValidElement)(e)&&"object"==typeof e&&"symbol"==typeof e.type&&"Symbol(react.fragment)"===String(e.type)?m.Children.toArray(e.props.children):m.Children.toArray(e)).map((e,t)=>(0,m.isValidElement)(e)?(0,m.cloneElement)(e,{key:t,disabled:h||eV}):e),[h,eV]),eH=(0,c.z)(!1),eD=(0,r.jsxs)(r.Fragment,{children:[e$&&(0,r.jsx)(d.A,{ref:eP,variant:"danger",className:"CommentBox-module__staleContentWarning__GVqdr",children:"The content you are editing has changed. Please copy your edits and exit the editor."}),(0,r.jsxs)(s.n,{"aria-describedby":t,labelledBy:p,disabled:h,value:w,placeholder:void 0!==T?T:"Leave a comment",emojiSuggestions:ex,emojiTone:eH.settings.emojiTone,mentionSuggestions:ej,referenceSuggestions:ev,viewMode:eE,onChangeViewMode:eL,onChange:E,onInputFocus:eN,onRenderPreview:eS,onUploadFile:J?eC:void 0,acceptedFileTypes:J?(0,v.jw)(eF):void 0,onPrimaryAction:()=>{eq(),et?.()},ref:eB,pasteUrlsAsPlainText:eH.settings.pasteUrlsAsPlainText,savedReplies:e_,monospace:eH.settings.useMonospaceFont,minHeightLines:Q,maxHeightLines:Z,className:ee,teamHovercardsEnabled:ea,onSavedRepliesOpen:eN,banner:eo?(0,r.jsx)(s.n.ErrorBanner,{children:eo}):es,generatingText:ef,hybridEditorProps:er?.showSuggestChangesButton||X?{customToolbarButtons:(0,r.jsxs)(r.Fragment,{children:[X,er?.showSuggestChangesButton&&(0,r.jsx)(j,{sourceContentFromDiffLines:er?.sourceContentFromDiffLines})]})}:void 0,children:[(0,r.jsx)(s.n.Label,{visuallyHidden:!g,children:i??"Markdown Editor"}),(0,r.jsxs)(s.n.Actions,{children:[eO(K),R&&(0,r.jsx)(s.n.ActionButton,{variant:"default",size:en,onClick:R,value:"Cancel",children:"Cancel"}),eq&&L&&(0,r.jsx)(C,{onSave:eq,validationResult:L,trailingIcon:G,disabled:h||eV,size:en,children:O})]}),(0,r.jsxs)(s.n.Toolbar,{children:[er?.showSuggestChangesButton&&(0,r.jsx)(b,{shouldInsertSuggestionOnRender:ek,inputValue:w,onChange:E,sourceContentFromDiffLines:er?.sourceContentFromDiffLines,editorRef:eB,onInsertSuggestedChange:()=>{er?.onInsertSuggestedChange(),eR(!1)}}),X,(0,r.jsx)(s.n.DefaultToolbarButtons,{}),(0,r.jsx)($,{})]}),W&&(0,r.jsx)(s.n.Footer,{children:W})]})]});return(0,r.jsx)("div",{"data-testid":n,className:"CommentBox-module__commentBoxContainer__fVeTk",children:eM?(0,r.jsx)(I,{subject:y,onInsertText:eU,onSave:eq,children:eD}):eD})};G.displayName="CommentBox",G.displayName="CommentBox"},94781(e,t,n){n.d(t,{x:()=>r});let r=n(55890).n.ActionButton},25344(e,t,n){n.d(t,{P:()=>a});var r=n(16522),o=n(40604),s=n(97286);function a(e){let t,n,o=(0,r.c)(3);return o[0]===Symbol.for("react.memo_cache_sentinel")?(t=["autocomplete-emojis-for-editor"],o[0]=t):t=o[0],o[1]!==e?(n={queryKey:t,enabled:e,queryFn:i,staleTime:1/0},o[1]=e,o[2]=n):n=o[2],(0,s.I)(n)}async function i(){return Object.entries(await (0,o.X)({queryDeps:{pathname:"/autocomplete/emojis_for_editor"}})).map(l)}function l(e){let[t,n]=e,[r,o]=n;return{name:t,character:o,url:r}}},71637(e,t,n){n.d(t,{z:()=>u});var r=n(30681),o=n(78597),s=n(96540);let a={emojiTone:0,pasteUrlsAsPlainText:!1,useMonospaceFont:!1},i=new Map,l="/settings/appearance/viewer-settings";async function c(){try{let e=await (0,o.Sr)(l);if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.json(),n=function(e){if(!e||"object"!=typeof e)return null;let t="number"==typeof e.emojiTone?e.emojiTone:a.emojiTone,n="boolean"==typeof e.pasteUrlsAsPlainText?e.pasteUrlsAsPlainText:a.pasteUrlsAsPlainText,r="boolean"==typeof e.useMonospaceFont?e.useMonospaceFont:a.useMonospaceFont;return void 0!==e.emojiTone||void 0!==e.pasteUrlsAsPlainText||void 0!==e.useMonospaceFont?{emojiTone:t,pasteUrlsAsPlainText:n,useMonospaceFont:r}:null}(t);if(!n)throw Error("Invalid response payload");return n}catch(e){throw e}}function u(e=!1){let[t,n]=(0,r.Mj)("user.preferences.viewer-settings",null),[o,d]=(0,s.useState)(!0),[m,f]=(0,s.useState)(!1),p=(0,s.useRef)(!1);e&&(i.clear(),p.current=!1);let g=(0,s.useCallback)(async()=>{let e=i.get(l);try{e||(e=c(),i.set(l,e));let t=await e;n(t),f(!1)}catch{f(!0)}finally{d(!1)}},[n]);return(0,s.useEffect)(()=>{p.current?d(!1):(p.current=!0,g())},[g]),{settings:t||a,loading:o,error:m&&!t}}}}]); //# sourceMappingURL=54888-c8201a1db0ea0346-388f900b29bd96e9.js.map